X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Fdata%2Fpor-file-reader.c;h=823361b09593aacc7eb33dae402f1fb31e798bdf;hb=refs%2Ftags%2Ffc11-i386-build22;hp=668a8429d5839d9f8fb810009ef50d24d25eb169;hpb=707848060e414fe93458834446dd7cdbf800667f;p=pspp-builds.git diff --git a/src/data/por-file-reader.c b/src/data/por-file-reader.c index 668a8429..823361b0 100644 --- a/src/data/por-file-reader.c +++ b/src/data/por-file-reader.c @@ -1,5 +1,5 @@ /* PSPP - a program for statistical analysis. - Copyright (C) 1997-9, 2000, 2006 Free Software Foundation, Inc. + Copyright (C) 1997-9, 2000, 2006, 2009 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 @@ -33,6 +33,7 @@ #include #include #include +#include #include #include #include @@ -46,6 +47,7 @@ #include "gettext.h" #define _(msgid) gettext (msgid) +#define N_(msgid) (msgid) /* portable_to_local[PORTABLE] translates the given portable character into the local character set. */ @@ -77,7 +79,7 @@ struct pfm_reader bool ok; /* Set false on I/O error. */ }; -static struct casereader_class por_file_casereader_class; +static const struct casereader_class por_file_casereader_class; static void error (struct pfm_reader *r, const char *msg,...) @@ -261,7 +263,9 @@ pfm_open_reader (struct file_handle *fh, struct dictionary **dict, goto error; /* Lock file. */ - r->lock = fh_lock (fh, FH_REF_FILE, "portable file", FH_ACC_READ, false); + /* TRANSLATORS: this fragment will be interpolated into + messages in fh_lock() that identify types of files. */ + r->lock = fh_lock (fh, FH_REF_FILE, N_("portable file"), FH_ACC_READ, false); if (r->lock == NULL) goto error; @@ -505,8 +509,9 @@ read_header (struct pfm_reader *r) static void read_version_data (struct pfm_reader *r, struct pfm_read_info *info) { - static char empty_string[] = ""; - char *date, *time, *product, *author, *subproduct; + static const char empty_string[] = ""; + char *date, *time; + const char *product, *author, *subproduct; int i; /* Read file. */ @@ -666,8 +671,8 @@ read_variables (struct pfm_reader *r, struct dictionary *dict) int i; for (i = 1; i < 100000; i++) { - char try_name[LONG_NAME_LEN + 1]; - sprintf (try_name, "%.*s_%d", LONG_NAME_LEN - 6, name, i); + char try_name[VAR_NAME_LEN + 1]; + sprintf (try_name, "%.*s_%d", VAR_NAME_LEN - 6, name, i); v = dict_create_var (dict, try_name, width); if (v != NULL) break; @@ -689,12 +694,12 @@ read_variables (struct pfm_reader *r, struct dictionary *dict) { double x = read_float (r); double y = read_float (r); - mv_add_num_range (&miss, x, y); + mv_add_range (&miss, x, y); } else if (match (r, 'A')) - mv_add_num_range (&miss, read_float (r), HIGHEST); + mv_add_range (&miss, read_float (r), HIGHEST); else if (match (r, '9')) - mv_add_num_range (&miss, LOWEST, read_float (r)); + mv_add_range (&miss, LOWEST, read_float (r)); /* Single missing values. */ while (match (r, '8')) @@ -862,17 +867,30 @@ pfm_detect (FILE *file) { unsigned char header[464]; char trans[256]; - int cooked_cnt, raw_cnt; + int cooked_cnt, raw_cnt, line_len; int i; cooked_cnt = raw_cnt = 0; + line_len = 0; while (cooked_cnt < sizeof header) { int c = getc (file); if (c == EOF || raw_cnt++ > 512) return false; - else if (c != '\n' && c != '\r') - header[cooked_cnt++] = c; + else if (c == '\n') + { + while (line_len < 80 && cooked_cnt < sizeof header) + { + header[cooked_cnt++] = ' '; + line_len++; + } + line_len = 0; + } + else if (c != '\r') + { + header[cooked_cnt++] = c; + line_len++; + } } memset (trans, 0, 256); @@ -890,7 +908,7 @@ pfm_detect (FILE *file) return true; } -static struct casereader_class por_file_casereader_class = +static const struct casereader_class por_file_casereader_class = { por_file_casereader_read, por_file_casereader_destroy,