X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Fsysfile-info.c;h=08d5484f70e0d285fd4b8317f7ec2379ca09bd35;hb=4de79b34b329d1da6cdeb145993d3efd911e2967;hp=5a91fc39b4e8d05b3bb9f3780dc5e84e11f014dd;hpb=205ac3afa4c2b19c85819d8695abf3975bb11807;p=pspp diff --git a/src/sysfile-info.c b/src/sysfile-info.c index 5a91fc39b4..08d5484f70 100644 --- a/src/sysfile-info.c +++ b/src/sysfile-info.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 "error.h" @@ -24,18 +24,22 @@ #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" #include "var.h" +#include "gettext.h" +#define _(msgid) gettext (msgid) + /* Constants for DISPLAY utility. */ enum { @@ -48,7 +52,7 @@ enum AS_VECTOR }; -int describe_variable (struct variable *v, struct tab_table *t, int r, int as); +static int describe_variable (struct variable *v, struct tab_table *t, int r, int as); /* Sets the widths of all the columns and heights of all the rows in table T for driver D. */ @@ -73,21 +77,22 @@ 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 ("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); @@ -102,15 +107,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:")); @@ -121,11 +126,12 @@ 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); nr = 1 + 2 * dict_get_var_cnt (d); + t = tab_create (4, nr, 1); tab_dim (t, sysfile_info_dim); tab_headers (t, 0, 0, 1, 0); @@ -136,7 +142,7 @@ cmd_sysfile_info (void) for (r = 1, i = 0; i < dict_get_var_cnt (d); i++) { struct variable *v = dict_get_var (d, i); - int nvl = val_labs_count (v->val_labs); + const int nvl = val_labs_count (v->val_labs); if (r + 10 + nvl > nr) { @@ -147,10 +153,11 @@ cmd_sysfile_info (void) r = describe_variable (v, t, r, AS_DICTIONARY); } + tab_box (t, TAL_1, TAL_1, -1, -1, 0, 0, 3, r); - tab_vline (t, TAL_1, 0, 0, r); tab_vline (t, TAL_1, 1, 0, r); tab_vline (t, TAL_1, 3, 0, r); + tab_resize (t, -1, r); tab_flags (t, SOMF_NO_TITLE); tab_submit (t); @@ -258,7 +265,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); @@ -423,7 +430,7 @@ display_variables (struct variable **vl, int n, int as) /* Puts a description of variable V into table T starting at row R. The variable will be described in the format AS. Returns the next row available for use in the table. */ -int +static int describe_variable (struct variable *v, struct tab_table *t, int r, int as) { /* Put the name, var label, and position into the first row. */ @@ -567,7 +574,7 @@ compare_vectors_by_name (const void *a_, const void *b_) struct vector *a = *pa; struct vector *b = *pb; - return strcmp (a->name, b->name); + return strcasecmp (a->name, b->name); } /* Display a list of vectors. If SORTED is nonzero then they are @@ -606,3 +613,14 @@ display_vectors (int sorted) free (vl); } + + + + + + + + + + +