X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Fdata%2Ffile-handle-def.c;h=9c853e5e983d7968bf427e0a01765680c1cec0e0;hb=bdf3609794a1f7bea432415f7466b85a069f8b0c;hp=e4447a080b10dab9990c358f9b72315a8e9fc82b;hpb=a80c189b888ffb920bdc31f7472d8c75f1ebe823;p=pspp diff --git a/src/data/file-handle-def.c b/src/data/file-handle-def.c index e4447a080b..9c853e5e98 100644 --- a/src/data/file-handle-def.c +++ b/src/data/file-handle-def.c @@ -1,5 +1,5 @@ /* PSPP - a program for statistical analysis. - Copyright (C) 1997-9, 2000, 2006, 2009, 2010, 2011, 2012 Free Software Foundation, Inc. + Copyright (C) 1997-9, 2000, 2006, 2009, 2010, 2011, 2012, 2013 Free Software Foundation, Inc. This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -51,6 +51,7 @@ struct file_handle /* FH_REF_FILE only. */ char *file_name; /* File name as provided by user. */ enum fh_mode mode; /* File mode. */ + enum fh_line_ends line_ends; /* Line ends for text files. */ /* FH_REF_FILE and FH_REF_INLINE only. */ size_t record_width; /* Length of fixed-format records. */ @@ -176,8 +177,8 @@ fh_from_id (const char *id) struct file_handle *handle; HMAP_FOR_EACH_WITH_HASH (handle, struct file_handle, name_node, - hash_case_string (id, 0), &named_handles) - if (!strcasecmp (id, handle->id)) + utf8_hash_case_string (id, 0), &named_handles) + if (!utf8_strcasecmp (id, handle->id)) { return fh_ref (handle); } @@ -206,7 +207,7 @@ create_handle (const char *id, char *handle_name, enum fh_referent referent, if (id != NULL) { hmap_insert (&named_handles, &handle->name_node, - hash_case_string (handle->id, 0)); + utf8_hash_case_string (handle->id, 0)); } return handle; @@ -236,6 +237,7 @@ fh_create_file (const char *id, const char *file_name, handle = create_handle (id, handle_name, FH_REF_FILE, properties->encoding); handle->file_name = xstrdup (file_name); handle->mode = properties->mode; + handle->line_ends = properties->line_ends; handle->record_width = properties->record_width; handle->tab_width = properties->tab_width; return handle; @@ -263,8 +265,14 @@ fh_create_dataset (struct dataset *ds) const struct fh_properties * fh_default_properties (void) { +#if defined _WIN32 || defined __WIN32__ +#define DEFAULT_LINE_ENDS FH_END_CRLF +#else +#define DEFAULT_LINE_ENDS FH_END_LF +#endif + static const struct fh_properties default_properties - = {FH_MODE_TEXT, 1024, 4, (char *) "Auto"}; + = {FH_MODE_TEXT, DEFAULT_LINE_ENDS, 1024, 4, (char *) "Auto"}; return &default_properties; } @@ -314,6 +322,15 @@ fh_get_mode (const struct file_handle *handle) return handle->mode; } +/* Returns the line ends of HANDLE, which must be a handle associated with a + file. */ +enum fh_line_ends +fh_get_line_ends (const struct file_handle *handle) +{ + assert (handle->referent == FH_REF_FILE); + return handle->line_ends; +} + /* Returns the width of a logical record on HANDLE. */ size_t fh_get_record_width (const struct file_handle *handle)