X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=utilities%2Fpspp-output.c;h=d918496e8d44b0449bb094dd7018fbb1ee67f6bc;hb=899e97f2730db331e3bce41c29f09d5f31164463;hp=59c915dd443935e6eda189dfd6b6c12f76460adc;hpb=d18d7a08733079d840b50cd52500703dd9dff4be;p=pspp diff --git a/utilities/pspp-output.c b/utilities/pspp-output.c index 59c915dd44..d918496e8d 100644 --- a/utilities/pspp-output.c +++ b/utilities/pspp-output.c @@ -16,6 +16,7 @@ #include +#include #include #include #include @@ -29,6 +30,7 @@ #include "libpspp/string-set.h" #include "output/driver.h" #include "output/group-item.h" +#include "output/image-item.h" #include "output/page-setup-item.h" #include "output/pivot-table.h" #include "output/spv/light-binary-parser.h" @@ -83,6 +85,7 @@ static struct pivot_table_look *table_look; static size_t n_warnings; static void usage (void); +static void developer_usage (void); static void parse_options (int argc, char **argv); static void @@ -92,10 +95,14 @@ dump_item (const struct spv_item *item) { const char *x = item->xml_member; const char *b = item->bin_member; + + /* The strings below are not marked for translation because they are only + useful to developers. */ char *s = (x && b - ? xasprintf (_("%s and %s:"), x, b) + ? xasprintf ("%s and %s:", x, b) : xasprintf ("%s:", x ? x : b)); - text_item_submit (text_item_create_nocopy (TEXT_ITEM_TITLE, s)); + text_item_submit (text_item_create_nocopy (TEXT_ITEM_TITLE, s, + xstrdup ("Member Names"))); } switch (spv_item_get_type (item)) @@ -117,7 +124,9 @@ dump_item (const struct spv_item *item) case SPV_ITEM_MODEL: break; - case SPV_ITEM_OBJECT: + case SPV_ITEM_IMAGE: + image_item_submit (image_item_create (cairo_surface_reference ( + spv_item_get_image (item)))); break; case SPV_ITEM_TREE: @@ -144,9 +153,7 @@ print_item_directory (const struct spv_item *item) if (type == SPV_ITEM_TABLE) { const struct pivot_table *table = spv_item_get_table (item); - char *title = pivot_value_to_string (table->title, - SETTINGS_VALUE_SHOW_DEFAULT, - SETTINGS_VALUE_SHOW_DEFAULT); + char *title = pivot_value_to_string (table->title, table); if (!label || strcmp (title, label)) printf (" title \"%s\"", title); free (title); @@ -162,14 +169,19 @@ print_item_directory (const struct spv_item *item) if (!spv_item_is_visible (item)) printf (" (hidden)"); - if (show_member_names && (item->xml_member || item->bin_member)) + + if (show_member_names) { - if (item->xml_member && item->bin_member) - printf (" in %s and %s", item->xml_member, item->bin_member); - else if (item->xml_member) - printf (" in %s", item->xml_member); - else if (item->bin_member) - printf (" in %s", item->bin_member); + const char *members[] = { + item->xml_member, + item->bin_member, + item->png_member, + }; + size_t n = 0; + + for (size_t i = 0; i < sizeof members / sizeof *members; i++) + if (members[i]) + printf (" %s %s", n++ == 0 ? "in" : "and", members[i]); } putchar ('\n'); } @@ -268,7 +280,8 @@ dump_heading_transition (const struct spv_item *old, group_close_item_submit (group_close_item_create ()); for (size_t i = common; i < new_path.n; i++) group_open_item_submit (group_open_item_create ( - new_path.nodes[i]->command_id)); + new_path.nodes[i]->command_id, + new_path.nodes[i]->label)); free_path (&old_path); free_path (&new_path); @@ -500,6 +513,9 @@ run_dump_legacy_data (int argc UNUSED, char **argv) if (err) error (1, 0, "%s", err); + if (raw && isatty (STDOUT_FILENO)) + error (1, 0, "not writing binary data to tty"); + struct spv_item **items; size_t n_items; spv_select (spv, criteria, n_criteria, &items, &n_items); @@ -976,6 +992,7 @@ parse_options (int argc, char *argv[]) OPT_SORT, OPT_RAW, OPT_TABLE_LOOK, + OPT_HELP_DEVELOPER, }; static const struct option long_options[] = { @@ -1003,6 +1020,7 @@ parse_options (int argc, char *argv[]) { "raw", no_argument, NULL, OPT_RAW }, { "help", no_argument, NULL, 'h' }, + { "help-developer", no_argument, NULL, OPT_HELP_DEVELOPER }, { "version", no_argument, NULL, 'v' }, { NULL, 0, NULL, 0 }, @@ -1089,6 +1107,10 @@ parse_options (int argc, char *argv[]) usage (); exit (EXIT_SUCCESS); + case OPT_HELP_DEVELOPER: + developer_usage (); + exit (EXIT_SUCCESS); + default: exit (EXIT_FAILURE); } @@ -1142,7 +1164,32 @@ The following options override \"convert\" behavior:\n\ --table-look=FILE override tables' style with TableLook from FILE\n\ Other options:\n\ --help display this help and exit\n\ + --help-developer display help for developer commands and exit\n\ --version output version information and exit\n", program_name, program_name, ds_cstr (&s)); ds_destroy (&s); } + +static void +developer_usage (void) +{ + printf ("\ +The following developer commands are available:\n\ + dump FILE Dump pivot table structure\n\ + [--raw | --sort] dump-light-table FILE Dump light tables\n\ + [--raw] dump-legacy-data FILE Dump legacy table data\n\ + dump-legacy-table FILE [XPATH]... Dump legacy table XML\n\ + dump-structure FILE [XPATH]... Dump structure XML\n\ + is-legacy FILE Exit with status 0 if any legacy table selected\n\ +\n\ +Additional input selection options:\n\ + --members=MEMBER... include only objects with these Zip member names\n\ + --errors include only objects that cannot be loaded\n\ +\n\ +Additional options for \"dir\" command:\n\ + --member-names show Zip member names with objects\n\ +\n\ +Other options:\n\ + --raw print raw binary data instead of a parsed version\n\ + --sort sort borders and areas for shorter \"diff\" output\n"); +}