projects
/
pspp
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
"margin-left" -> "margin-start" && "margin-right" -> "margin-end"
[pspp]
/
src
/
data
/
pc+-file-reader.c
diff --git
a/src/data/pc+-file-reader.c
b/src/data/pc+-file-reader.c
index 0aa4587d38ca3ebe81fe2b3edd10f1edd2272be1..4d08f27465407bff935163af10525bea0237e653 100644
(file)
--- a/
src/data/pc+-file-reader.c
+++ b/
src/data/pc+-file-reader.c
@@
-1,5
+1,5
@@
/* PSPP - a program for statistical analysis.
/* PSPP - a program for statistical analysis.
- Copyright (C) 1997-2000, 2006-2007, 2009-201
4
Free Software Foundation, Inc.
+ Copyright (C) 1997-2000, 2006-2007, 2009-201
5
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
@@
-209,7
+209,7
@@
pcp_open (struct file_handle *fh)
goto error;
/* Open file. */
goto error;
/* Open file. */
- r->file = fn_open (fh
_get_file_name (fh)
, "rb");
+ r->file = fn_open (fh, "rb");
if (r->file == NULL)
{
msg (ME, _("Error opening `%s' for reading as an SPSS/PC+ "
if (r->file == NULL)
{
msg (ME, _("Error opening `%s' for reading as an SPSS/PC+ "
@@
-478,7
+478,7
@@
pcp_close (struct any_reader *r_)
if (r->file)
{
if (r->file)
{
- if (fn_close (
fh_get_file_name (r->fh)
, r->file) == EOF)
+ if (fn_close (
r->fh
, r->file) == EOF)
{
msg (ME, _("Error closing system file `%s': %s."),
fh_get_file_name (r->fh), strerror (errno));
{
msg (ME, _("Error closing system file `%s': %s."),
fh_get_file_name (r->fh), strerror (errno));
@@
-505,18
+505,20
@@
pcp_file_casereader_destroy (struct casereader *reader UNUSED, void *r_)
pcp_close (&r->any_reader);
}
pcp_close (&r->any_reader);
}
-/*
Returns true if FILE is an SPSS/PC+ system file,
-
false otherwise
. */
+/*
Detects whether FILE is an SPSS/PC+ system file. Returns 1 if so, 0 if
+
not, and a negative errno value if there is an error reading FILE
. */
static int
pcp_detect (FILE *file)
{
static const char signature[4] = "SPSS";
char buf[sizeof signature];
static int
pcp_detect (FILE *file)
{
static const char signature[4] = "SPSS";
char buf[sizeof signature];
- if (fseek (file, 0x104, SEEK_SET)
- || (fread (buf, sizeof buf, 1, file) != 1 && !feof (file)))
+ if (fseek (file, 0x104, SEEK_SET))
return -errno;
return -errno;
+ if (fread (buf, sizeof buf, 1, file) != 1)
+ return ferror (file) ? -errno : 0;
+
return !memcmp (buf, signature, sizeof buf);
}
\f
return !memcmp (buf, signature, sizeof buf);
}
\f