X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Flanguage%2Fdata-io%2Fdata-parser.c;h=2f24b8a23886877be6dbde22f680b209b9d4108f;hb=75ac1e869e551495c403cf94a3a24dd0dfee98ef;hp=b3c4b54cbbad0f3a3c55193fd1b2beb535bbb78d;hpb=7a09f7e0127967c4f04a51f1b9cf91040c515c34;p=pspp diff --git a/src/language/data-io/data-parser.c b/src/language/data-io/data-parser.c index b3c4b54cbb..2f24b8a238 100644 --- a/src/language/data-io/data-parser.c +++ b/src/language/data-io/data-parser.c @@ -42,7 +42,7 @@ /* Data parser for textual data like that read by DATA LIST. */ struct data_parser { - const struct dictionary *dict; /*Dictionary of destination */ + struct dictionary *dict; /* Dictionary of destination */ enum data_parser_type type; /* Type of data to parse. */ int skip_records; /* Records to skip before first real data. */ @@ -80,7 +80,7 @@ static void set_any_sep (struct data_parser *parser); /* Creates and returns a new data parser. */ struct data_parser * -data_parser_create (const struct dictionary *dict) +data_parser_create (struct dictionary *dict) { struct data_parser *parser = xmalloc (sizeof *parser); @@ -90,7 +90,7 @@ data_parser_create (const struct dictionary *dict) parser->fields = NULL; parser->field_cnt = 0; parser->field_allocated = 0; - parser->dict = dict; + parser->dict = dict_ref (dict); parser->span = true; parser->empty_line_has_field = false; @@ -115,6 +115,7 @@ data_parser_destroy (struct data_parser *parser) { size_t i; + dict_unref (parser->dict); for (i = 0; i < parser->field_cnt; i++) free (parser->fields[i].name); free (parser->fields); @@ -671,7 +672,7 @@ dump_fixed_table (const struct data_parser *parser, parser->records_per_case), parser->records_per_case, fh_get_name (fh)); struct pivot_table *table = pivot_table_create__ ( - pivot_value_new_user_text (title, -1)); + pivot_value_new_user_text (title, -1), "Fixed Data Records"); free (title); pivot_dimension_create ( @@ -694,7 +695,7 @@ dump_fixed_table (const struct data_parser *parser, int first_column = f->first_column; int last_column = f->first_column + f->format.w - 1; - char *columns = xasprintf ("%3d-%3d", first_column, last_column); + char *columns = xasprintf ("%d-%d", first_column, last_column); pivot_table_put2 (table, 1, variable_idx, pivot_value_new_user_text (columns, -1)); free (columns); @@ -717,7 +718,8 @@ dump_delimited_table (const struct data_parser *parser, { struct pivot_table *table = pivot_table_create__ ( pivot_value_new_text_format (N_("Reading free-form data from %s."), - fh_get_name (fh))); + fh_get_name (fh)), + "Free-Form Data Records"); pivot_dimension_create ( table, PIVOT_AXIS_COLUMN, N_("Attributes"), N_("Format")); @@ -820,9 +822,9 @@ data_parser_casereader_destroy (struct casereader *reader, void *r_) struct data_parser_casereader *r = r_; if (dfm_reader_error (r->reader)) casereader_force_error (reader); - data_parser_destroy (r->parser); dfm_close_reader (r->reader); caseproto_unref (r->proto); + data_parser_destroy (r->parser); free (r); }