X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;ds=sidebyside;f=src%2Flanguage%2Fdictionary%2Fsys-file-info.c;h=68efb8ee7b6c6bbb6bb29fa81a5e8e1274e22ef3;hb=939dd9ec5ada7d7a91560d4c1e416709d923dcf3;hp=80fa903b066ca704f05d5e1572c2b42270707760;hpb=1aef11b9589a534333bbecd528efe1022a4bb9bb;p=pspp diff --git a/src/language/dictionary/sys-file-info.c b/src/language/dictionary/sys-file-info.c index 80fa903b06..68efb8ee7b 100644 --- a/src/language/dictionary/sys-file-info.c +++ b/src/language/dictionary/sys-file-info.c @@ -43,8 +43,7 @@ #include "libpspp/pool.h" #include "libpspp/string-array.h" #include "output/pivot-table.h" -#include "output/text-item.h" -#include "output/table-item.h" +#include "output/output-item.h" #include "gl/count-one-bits.h" #include "gl/localcharset.h" @@ -89,6 +88,8 @@ static void report_encodings (const struct file_handle *, struct pool *, char **titles, bool *ids, char **strings, size_t n_strings); +static char *get_documents_as_string (const struct dictionary *); + static void add_row (struct pivot_table *table, const char *attribute, struct pivot_value *value) @@ -101,7 +102,7 @@ add_row (struct pivot_table *table, const char *attribute, /* SYSFILE INFO utility. */ int -cmd_sysfile_info (struct lexer *lexer, struct dataset *ds UNUSED) +cmd_sysfile_info (struct lexer *lexer, struct dataset *ds) { struct any_reader *any_reader; struct file_handle *h; @@ -239,6 +240,10 @@ cmd_sysfile_info (struct lexer *lexer, struct dataset *ds UNUSED) add_row (table, N_("Encoding"), pivot_value_new_user_text (dict_get_encoding (d), -1)); + if (dict_get_document_line_cnt (d) > 0) + add_row (table, N_("Documents"), + pivot_value_new_user_text_nocopy (get_documents_as_string (d))); + pivot_table_submit (table); size_t n_vars = dict_get_var_cnt (d); @@ -398,6 +403,20 @@ display_macros (void) msg (SW, _("Macros not supported.")); } +static char * +get_documents_as_string (const struct dictionary *dict) +{ + const struct string_array *documents = dict_get_documents (dict); + struct string s = DS_EMPTY_INITIALIZER; + for (size_t i = 0; i < documents->n; i++) + { + if (i) + ds_put_byte (&s, '\n'); + ds_put_cstr (&s, documents->strings[i]); + } + return ds_steal_cstr (&s); +} + static void display_documents (const struct dictionary *dict) { @@ -406,20 +425,12 @@ display_documents (const struct dictionary *dict) table, PIVOT_AXIS_COLUMN, N_("Documents"), N_("Document")); d->hide_all_labels = true; - const struct string_array *documents = dict_get_documents (dict); - if (!documents->n) + if (!dict_get_documents (dict)->n) pivot_table_put1 (table, 0, pivot_value_new_text (N_("(none)"))); else { - struct string s = DS_EMPTY_INITIALIZER; - for (size_t i = 0; i < documents->n; i++) - { - if (i) - ds_put_byte (&s, '\n'); - ds_put_cstr (&s, documents->strings[i]); - } - pivot_table_put1 (table, 0, - pivot_value_new_user_text_nocopy (ds_steal_cstr (&s))); + char *docs = get_documents_as_string (dict); + pivot_table_put1 (table, 0, pivot_value_new_user_text_nocopy (docs)); } pivot_table_submit (table); @@ -694,7 +705,7 @@ display_attributes (const struct attrset *dict_attrset, var_get_attributes (vars[i]), flags); if (pivot_table_is_empty (table)) - pivot_table_destroy (table); + pivot_table_unref (table); else pivot_table_submit (table); } @@ -990,7 +1001,7 @@ report_encodings (const struct file_handle *h, struct pool *pool, /* Table of valid encodings. */ struct pivot_table *table = pivot_table_create__ ( pivot_value_new_text_format (N_("Usable encodings for %s."), - fh_get_name (h))); + fh_get_name (h)), "Usable Encodings"); table->caption = pivot_value_new_text_format ( N_("Encodings that can successfully read %s (by specifying the encoding " "name on the GET command's ENCODING subcommand). Encodings that " @@ -1028,7 +1039,8 @@ report_encodings (const struct file_handle *h, struct pool *pool, /* Table of alternative interpretations. */ table = pivot_table_create__ ( pivot_value_new_text_format (N_("%s Encoded Text Strings"), - fh_get_name (h))); + fh_get_name (h)), + "Alternate Encoded Text Strings"); table->caption = pivot_value_new_text ( N_("Text strings in the file dictionary that the previously listed " "encodings interpret differently, along with the interpretations."));