X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Fdfm-read.c;h=a739b5c32f1bd66d5cb531c1edf9a71738fd220d;hb=1e06be73a426544652cdd7d73f001c962bac1a34;hp=4bc59caf92bcc9e6a690da30f8b0086f3a3a3a0a;hpb=d807ad29cc0d3caa4f0e04ee4b75c70a225cfeaf;p=pspp diff --git a/src/dfm-read.c b/src/dfm-read.c index 4bc59caf92..a739b5c32f 100644 --- a/src/dfm-read.c +++ b/src/dfm-read.c @@ -14,8 +14,8 @@ You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software - Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA - 02111-1307, USA. */ + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA + 02110-1301, USA. */ #include #include "dfm-read.h" @@ -27,12 +27,16 @@ #include "command.h" #include "error.h" #include "file-handle.h" +#include "file-handle-def.h" #include "filename.h" -#include "getline.h" +#include "getl.h" #include "lexer.h" #include "str.h" #include "vfm.h" +#include "gettext.h" +#define _(msgid) gettext (msgid) + #include "debug-print.h" /* Flags for DFM readers. */ @@ -81,8 +85,9 @@ dfm_close_reader (struct dfm_reader *r) if (!still_open) { /* Skip any remaining data on the inline file. */ - while ((r->flags & DFM_EOF) == 0) - read_record (r); + if (r->flags & DFM_SAW_BEGIN_DATA) + while ((r->flags & DFM_EOF) == 0) + read_record (r); inline_file = NULL; } } @@ -131,7 +136,7 @@ dfm_open_reader (struct file_handle *fh) r->fh = fh; if (fh != NULL) { - r->where.filename = handle_get_filename (fh); + r->where.filename = fh_get_filename (fh); r->where.line_number = 0; } r->file.file = NULL; @@ -141,7 +146,7 @@ dfm_open_reader (struct file_handle *fh) if (fh != NULL) { - r->file.filename = xstrdup (handle_get_filename (r->fh)); + r->file.filename = xstrdup (fh_get_filename (r->fh)); r->file.mode = "rb"; r->file.file = NULL; r->file.sequence_no = NULL; @@ -152,7 +157,7 @@ dfm_open_reader (struct file_handle *fh) { msg (ME, _("Could not open \"%s\" for reading " "as a data file: %s."), - handle_get_filename (r->fh), strerror (errno)); + fh_get_filename (r->fh), strerror (errno)); err_cond_fail (); fh_close (fh,"data file", "rs"); free (r); @@ -236,7 +241,7 @@ static int read_file_record (struct dfm_reader *r) { assert (r->fh != NULL); - if (handle_get_mode (r->fh) == MODE_TEXT) + if (fh_get_mode (r->fh) == MODE_TEXT) { ds_clear (&r->line); if (!ds_gets (&r->line, r->file.file)) @@ -244,15 +249,15 @@ read_file_record (struct dfm_reader *r) if (ferror (r->file.file)) { msg (ME, _("Error reading file %s: %s."), - handle_get_name (r->fh), strerror (errno)); + fh_get_name (r->fh), strerror (errno)); err_cond_fail (); } return 0; } } - else if (handle_get_mode (r->fh) == MODE_BINARY) + else if (fh_get_mode (r->fh) == MODE_BINARY) { - size_t record_width = handle_get_record_width (r->fh); + size_t record_width = fh_get_record_width (r->fh); size_t amt; if (ds_length (&r->line) < record_width) @@ -264,10 +269,10 @@ read_file_record (struct dfm_reader *r) { if (ferror (r->file.file)) msg (ME, _("Error reading file %s: %s."), - handle_get_name (r->fh), strerror (errno)); + fh_get_name (r->fh), strerror (errno)); else if (amt != 0) msg (ME, _("%s: Partial record at end of file."), - handle_get_name (r->fh)); + fh_get_name (r->fh)); else return 0; @@ -310,7 +315,7 @@ dfm_eof (struct dfm_reader *r) { if (r->fh != NULL) msg (SE, _("Attempt to read beyond end-of-file on file %s."), - handle_get_name (r->fh)); + fh_get_name (r->fh)); else msg (SE, _("Attempt to read beyond END DATA.")); err_cond_fail (); @@ -355,14 +360,14 @@ dfm_expand_tabs (struct dfm_reader *r) r->flags |= DFM_TABS_EXPANDED; if (r->fh != NULL - && (handle_get_mode (r->fh) == MODE_BINARY - || handle_get_tab_width (r->fh) == 0 + && (fh_get_mode (r->fh) == MODE_BINARY + || fh_get_tab_width (r->fh) == 0 || memchr (ds_c_str (&r->line), '\t', ds_length (&r->line)) == NULL)) return; /* Expand tabs from r->line into r->scratch, and figure out new value for r->pos. */ - tab_width = r->fh != NULL ? handle_get_tab_width (r->fh) : 8; + tab_width = r->fh != NULL ? fh_get_tab_width (r->fh) : 8; ds_clear (&r->scratch); new_pos = 0; for (ofs = 0; ofs < ds_length (&r->line); ofs++)