X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Fsysfile-info.c;h=f66ef654632291dd1b9b4489269802a9eb0eaf6f;hb=180d764e86e0f3b2fd0e2bb613d790adcd5aceb0;hp=dd33d574f437dbe6f9b3b9ba05c62756ce838554;hpb=3a7fba81ceae5b049d0f7d671e9e3c3c43bbf703;p=pspp diff --git a/src/sysfile-info.c b/src/sysfile-info.c index dd33d574f4..f66ef65463 100644 --- a/src/sysfile-info.c +++ b/src/sysfile-info.c @@ -18,19 +18,20 @@ 02111-1307, USA. */ #include -#include +#include "error.h" #include #include #include "algorithm.h" #include "alloc.h" #include "command.h" +#include "dictionary.h" #include "error.h" #include "file-handle.h" #include "hash.h" #include "lexer.h" #include "misc.h" #include "output.h" -#include "sfm.h" +#include "sfm-read.h" #include "som.h" #include "tab.h" #include "value-labels.h" @@ -73,29 +74,27 @@ cmd_sysfile_info (void) struct file_handle *h; struct dictionary *d; struct tab_table *t; - struct sfm_read_info inf; + struct sfm_reader *reader; + struct sfm_read_info info; int r, nr; int i; - lex_match_id ("SYSFILE"); - lex_match_id ("INFO"); - lex_match_id ("FILE"); lex_match ('='); - h = fh_parse_file_handle (); + h = fh_parse (); if (!h) return CMD_FAILURE; - d = sfm_read_dictionary (h, &inf); - fh_close_handle (h); - if (!d) + reader = sfm_open_reader (h, &d, &info); + if (!reader) return CMD_FAILURE; + sfm_close_reader (reader); t = tab_create (2, 9, 0); tab_vline (t, TAL_1 | TAL_SPACING, 1, 0, 8); tab_text (t, 0, 0, TAB_LEFT, _("File:")); - tab_text (t, 1, 0, TAB_LEFT, fh_handle_filename (h)); + tab_text (t, 1, 0, TAB_LEFT, handle_get_filename (h)); tab_text (t, 0, 1, TAB_LEFT, _("Label:")); { const char *label = dict_get_label (d); @@ -105,15 +104,15 @@ cmd_sysfile_info (void) } tab_text (t, 0, 2, TAB_LEFT, _("Created:")); tab_text (t, 1, 2, TAB_LEFT | TAT_PRINTF, "%s %s by %s", - inf.creation_date, inf.creation_time, inf.product); + info.creation_date, info.creation_time, info.product); tab_text (t, 0, 3, TAB_LEFT, _("Endian:")); - tab_text (t, 1, 3, TAB_LEFT, inf.bigendian ? _("Big.") : _("Little.")); + tab_text (t, 1, 3, TAB_LEFT, info.big_endian ? _("Big.") : _("Little.")); tab_text (t, 0, 4, TAB_LEFT, _("Variables:")); tab_text (t, 1, 4, TAB_LEFT | TAT_PRINTF, "%d", dict_get_var_cnt (d)); tab_text (t, 0, 5, TAB_LEFT, _("Cases:")); tab_text (t, 1, 5, TAB_LEFT | TAT_PRINTF, - inf.ncases == -1 ? _("Unknown") : "%d", inf.ncases); + info.case_cnt == -1 ? _("Unknown") : "%d", info.case_cnt); tab_text (t, 0, 6, TAB_LEFT, _("Type:")); tab_text (t, 1, 6, TAB_LEFT, _("System File.")); tab_text (t, 0, 7, TAB_LEFT, _("Weight:")); @@ -124,7 +123,7 @@ cmd_sysfile_info (void) } tab_text (t, 0, 8, TAB_LEFT, _("Mode:")); tab_text (t, 1, 8, TAB_LEFT | TAT_PRINTF, - _("Compression %s."), inf.compressed ? _("on") : _("off")); + _("Compression %s."), info.compressed ? _("on") : _("off")); tab_dim (t, tab_natural_dimensions); tab_submit (t); @@ -180,8 +179,6 @@ cmd_display (void) int n; struct variable **vl; - lex_match_id ("DISPLAY"); - if (lex_match_id ("MACROS")) display_macros (); else if (lex_match_id ("DOCUMENTS")) @@ -247,7 +244,7 @@ cmd_display (void) { int i, m; for (i = 0, m = n; i < n; i++) - if (vl[i]->name[0] != '#') + if (dict_class_from_id (vl[i]->name) != DC_SCRATCH) { vl[i] = NULL; m--; @@ -263,7 +260,7 @@ cmd_display (void) } if (sorted) - sort (vl, n, sizeof *vl, compare_variables, NULL); + sort (vl, n, sizeof *vl, compare_var_names, NULL); display_variables (vl, n, as); @@ -368,11 +365,9 @@ display_variables (struct variable **vl, int n, int as) nr = n + 5; tab_hline (t, TAL_2, 0, nc - 1, 1); tab_text (t, 0, 0, TAB_LEFT | TAT_TITLE, _("Variable")); + pc = (as == AS_INDEX ? 1 : 3); if (as != AS_NAMES) - { - pc = (as == AS_INDEX ? 1 : 3); - tab_text (t, pc, 0, TAB_LEFT | TAT_TITLE, _("Position")); - } + tab_text (t, pc, 0, TAB_LEFT | TAT_TITLE, _("Position")); if (as == AS_DICTIONARY || as == AS_VARIABLES) tab_joint_text (t, 1, 0, 2, 0, TAB_LEFT | TAT_TITLE, _("Description")); else if (as == AS_LABELS)