projects
/
pspp-builds.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
format: Increase abstraction of fmt_number_style.
[pspp-builds.git]
/
src
/
data
/
por-file-reader.c
diff --git
a/src/data/por-file-reader.c
b/src/data/por-file-reader.c
index cd8b213e8d74062bffd5b6e344a1d29047b7f9a9..bee1008ee36b939ba7c719e0be5e66fb32b37ec1 100644
(file)
--- a/
src/data/por-file-reader.c
+++ b/
src/data/por-file-reader.c
@@
-1,5
+1,5
@@
/* PSPP - a program for statistical analysis.
/* 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, 2011
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
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,14
+37,14
@@
#include <data/value-labels.h>
#include <data/variable.h>
#include <libpspp/compiler.h>
#include <data/value-labels.h>
#include <data/variable.h>
#include <libpspp/compiler.h>
-#include <libpspp/hash.h>
#include <libpspp/message.h>
#include <libpspp/misc.h>
#include <libpspp/pool.h>
#include <libpspp/str.h>
#include <libpspp/message.h>
#include <libpspp/misc.h>
#include <libpspp/pool.h>
#include <libpspp/str.h>
-#include "minmax.h"
-#include "xalloc.h"
+#include "gl/intprops.h"
+#include "gl/minmax.h"
+#include "gl/xalloc.h"
#include "gettext.h"
#define _(msgid) gettext (msgid)
#include "gettext.h"
#define _(msgid) gettext (msgid)
@@
-96,16
+96,18
@@
error (struct pfm_reader *r, const char *msg, ...)
va_list args;
ds_init_empty (&text);
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%l
l
x: "),
+ 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);
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.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);
m.text = ds_cstr (&text);
msg_emit (&m);
@@
-125,16
+127,18
@@
warning (struct pfm_reader *r, const char *msg, ...)
va_list args;
ds_init_empty (&text);
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%l
l
x: "),
+ 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);
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.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);
m.text = ds_cstr (&text);
msg_emit (&m);
@@
-153,7
+157,7
@@
close_reader (struct pfm_reader *r)
{
if (fn_close (fh_get_file_name (r->fh), r->file) == EOF)
{
{
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;
}
fh_get_file_name (r->fh), strerror (errno));
r->ok = false;
}
@@
-272,7
+276,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)
{
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;
"as a portable file: %s."),
fh_get_file_name (r->fh), strerror (errno));
goto error;
@@
-687,17
+691,15
@@
read_variables (struct pfm_reader *r, struct dictionary *dict)
v = dict_create_var (dict, name, width);
if (v == NULL)
{
v = dict_create_var (dict, name, width);
if (v == NULL)
{
- int i;
- for (i = 1;
i < 100000
; i++)
+
unsigned long
int i;
+ for (i = 1; ; i++)
{
{
- char try_name[
VAR_NAME_LEN
+ 1];
- sprintf (try_name, "%
.*s_%d", VAR_NAME_LEN - 6
, name, i);
+ char try_name[
8 + 1 + INT_STRLEN_BOUND (i)
+ 1];
+ sprintf (try_name, "%
s_%lu"
, name, i);
v = dict_create_var (dict, try_name, width);
if (v != NULL)
break;
}
v = dict_create_var (dict, try_name, width);
if (v != NULL)
break;
}
- if (v == NULL)
- error (r, _("Duplicate variable name %s in position %d."), name, i);
warning (r, _("Duplicate variable name %s in position %d renamed "
"to %s."), name, i, var_get_name (v));
}
warning (r, _("Duplicate variable name %s in position %d renamed "
"to %s."), name, i, var_get_name (v));
}
@@
-882,17
+884,30
@@
pfm_detect (FILE *file)
{
unsigned char header[464];
char trans[256];
{
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;
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;
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);
}
memset (trans, 0, 256);