X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Fdata%2Fpor-file-reader.c;h=adf177bee71c7db83104a6789ee1b0f5053a0cba;hb=7d34380bb2fddca820a6f414564738cc2f70afc9;hp=cd8b213e8d74062bffd5b6e344a1d29047b7f9a9;hpb=8830c95bb9e8d72621787866141a27fc22e8c786;p=pspp diff --git a/src/data/por-file-reader.c b/src/data/por-file-reader.c index cd8b213e8d..adf177bee7 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, 2009 Free Software Foundation, Inc. + Copyright (C) 1997-9, 2000, 2006, 2009, 2010 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 @@ -37,7 +37,6 @@ #include #include #include -#include #include #include #include @@ -96,16 +95,18 @@ error (struct pfm_reader *r, const char *msg, ...) va_list args; ds_init_empty (&text); - ds_put_format (&text, _("portable file %s corrupt at offset 0x%lx: "), - fh_get_file_name (r->fh), ftell (r->file)); + ds_put_format (&text, _("portable file %s corrupt at offset 0x%llx: "), + fh_get_file_name (r->fh), (long long int) ftello (r->file)); va_start (args, msg); ds_put_vformat (&text, msg, args); va_end (args); - m.category = MSG_GENERAL; - m.severity = MSG_ERROR; + m.category = MSG_C_GENERAL; + m.severity = MSG_S_ERROR; m.where.file_name = NULL; m.where.line_number = 0; + m.where.first_column = 0; + m.where.last_column = 0; m.text = ds_cstr (&text); msg_emit (&m); @@ -125,16 +126,18 @@ warning (struct pfm_reader *r, const char *msg, ...) va_list args; ds_init_empty (&text); - ds_put_format (&text, _("reading portable file %s at offset 0x%lx: "), - fh_get_file_name (r->fh), ftell (r->file)); + ds_put_format (&text, _("reading portable file %s at offset 0x%llx: "), + fh_get_file_name (r->fh), (long long int) ftello (r->file)); va_start (args, msg); ds_put_vformat (&text, msg, args); va_end (args); - m.category = MSG_GENERAL; - m.severity = MSG_WARNING; + m.category = MSG_C_GENERAL; + m.severity = MSG_S_WARNING; m.where.file_name = NULL; m.where.line_number = 0; + m.where.first_column = 0; + m.where.last_column = 0; m.text = ds_cstr (&text); msg_emit (&m); @@ -153,7 +156,7 @@ close_reader (struct pfm_reader *r) { if (fn_close (fh_get_file_name (r->fh), r->file) == EOF) { - msg (ME, _("Error closing portable file \"%s\": %s."), + msg (ME, _("Error closing portable file `%s': %s."), fh_get_file_name (r->fh), strerror (errno)); r->ok = false; } @@ -272,7 +275,7 @@ pfm_open_reader (struct file_handle *fh, struct dictionary **dict, r->file = fn_open (fh_get_file_name (r->fh), "rb"); if (r->file == NULL) { - msg (ME, _("An error occurred while opening \"%s\" for reading " + msg (ME, _("An error occurred while opening `%s' for reading " "as a portable file: %s."), fh_get_file_name (r->fh), strerror (errno)); goto error; @@ -882,17 +885,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);