X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Flanguage%2Fdictionary%2Fmodify-variables.c;h=3bbf844f565ef465acada22596541f1fd6c21eed;hb=9685c5889f0eef90258880bf1202cf5678f3a3b7;hp=6ead73dc318e01c848b09a739596ab92036f8f45;hpb=2322678e8fddbbf158b01b2720db2636404bba3b;p=pspp diff --git a/src/language/dictionary/modify-variables.c b/src/language/dictionary/modify-variables.c index 6ead73dc31..3bbf844f56 100644 --- a/src/language/dictionary/modify-variables.c +++ b/src/language/dictionary/modify-variables.c @@ -18,21 +18,25 @@ 02110-1301, USA. */ #include + #include -#include "message.h" -#include "array.h" -#include "alloc.h" -#include "bit-vector.h" -#include "command.h" -#include "compiler.h" -#include "dictionary.h" -#include "message.h" -#include "hash.h" -#include "lexer.h" -#include "misc.h" -#include "str.h" -#include "variable.h" -#include "procedure.h" + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include #include "gettext.h" #define _(msgid) gettext (msgid) @@ -69,7 +73,7 @@ struct var_modification size_t rename_cnt; }; -static int rearrange_dict (struct dictionary *d, +static bool rearrange_dict (struct dictionary *d, const struct var_modification *vm); /* Performs MODIFY VARS command. */ @@ -88,12 +92,9 @@ cmd_modify_vars (void) size_t i; - if (temporary != 0) - { - msg (SE, _("MODIFY VARS may not be used after TEMPORARY. " - "Temporary transformations will be made permanent.")); - cancel_temporary (); - } + if (proc_make_temporary_transformations_permanent (current_dataset)) + msg (SE, _("MODIFY VARS may not be used after TEMPORARY. " + "Temporary transformations will be made permanent.")); vm.reorder_vars = NULL; vm.reorder_cnt = 0; @@ -141,7 +142,7 @@ cmd_modify_vars (void) "of variables.")); goto done; } - dict_get_vars (default_dict, &v, &nv, 1u << DC_SYSTEM); + dict_get_vars (dataset_dict (current_dataset), &v, &nv, 1u << DC_SYSTEM); } else { @@ -151,7 +152,7 @@ cmd_modify_vars (void) free (v); goto done; } - if (!parse_variables (default_dict, &v, &nv, + if (!parse_variables (dataset_dict (current_dataset), &v, &nv, PV_APPEND | PV_NO_DUPLICATE)) { free (v); @@ -193,7 +194,7 @@ cmd_modify_vars (void) msg (SE, _("`(' expected on RENAME subcommand.")); goto done; } - if (!parse_variables (default_dict, &vm.rename_vars, &vm.rename_cnt, + if (!parse_variables (dataset_dict (current_dataset), &vm.rename_vars, &vm.rename_cnt, PV_APPEND | PV_NO_DUPLICATE)) goto done; if (!lex_match ('=')) @@ -238,7 +239,7 @@ cmd_modify_vars (void) already_encountered |= 4; lex_match ('='); - if (!parse_variables (default_dict, &keep_vars, &keep_cnt, PV_NONE)) + if (!parse_variables (dataset_dict (current_dataset), &keep_vars, &keep_cnt, PV_NONE)) goto done; /* Transform the list of variables to keep into a list of @@ -247,7 +248,7 @@ cmd_modify_vars (void) sort (keep_vars, keep_cnt, sizeof *keep_vars, compare_variables_given_ordering, &forward_positional_ordering); - dict_get_vars (default_dict, &all_vars, &all_cnt, 0); + dict_get_vars (dataset_dict (current_dataset), &all_vars, &all_cnt, 0); assert (all_cnt >= keep_cnt); drop_cnt = all_cnt - keep_cnt; @@ -259,7 +260,7 @@ cmd_modify_vars (void) compare_variables_given_ordering, &forward_positional_ordering) != drop_cnt) - assert (0); + NOT_REACHED (); free (keep_vars); free (all_vars); @@ -282,14 +283,14 @@ cmd_modify_vars (void) already_encountered |= 4; lex_match ('='); - if (!parse_variables (default_dict, &drop_vars, &drop_cnt, PV_NONE)) + if (!parse_variables (dataset_dict (current_dataset), &drop_vars, &drop_cnt, PV_NONE)) goto done; vm.drop_vars = drop_vars; vm.drop_cnt = drop_cnt; } else if (lex_match_id ("MAP")) { - struct dictionary *temp = dict_clone (default_dict); + struct dictionary *temp = dict_clone (dataset_dict (current_dataset)); int success = rearrange_dict (temp, &vm); if (success) { @@ -319,11 +320,11 @@ cmd_modify_vars (void) if (already_encountered & (1 | 4)) { /* Read the data. */ - if (!procedure (NULL, NULL)) + if (!procedure (current_dataset,NULL, NULL)) goto done; } - if (!rearrange_dict (default_dict, &vm)) + if (!rearrange_dict (dataset_dict (current_dataset), &vm)) goto done; ret_code = CMD_SUCCESS; @@ -420,7 +421,7 @@ validate_var_modification (const struct dictionary *d, keep_vars, compare_variables_given_ordering, &forward_positional_ordering) != keep_cnt) - assert (0); + NOT_REACHED (); /* Copy variables into var_renaming array. */ var_renaming = xnmalloc (keep_cnt, sizeof *var_renaming); @@ -465,11 +466,11 @@ validate_var_modification (const struct dictionary *d, } /* Reoders, removes, and renames variables in dictionary D - according to VM. Returns nonzero if successful, zero if there + according to VM. Returns true if successful, false if there would have been duplicate variable names if the modifications had been carried out. In the latter case, the dictionary is not modified. */ -static int +static bool rearrange_dict (struct dictionary *d, const struct var_modification *vm) { char **rename_old_names; @@ -483,7 +484,7 @@ rearrange_dict (struct dictionary *d, const struct var_modification *vm) /* Check whether the modifications will cause duplicate names. */ if (!validate_var_modification (d, vm)) - return 0; + return false; /* Record the old names of variables to rename. After variables are deleted, we can't depend on the variables to @@ -514,7 +515,7 @@ rearrange_dict (struct dictionary *d, const struct var_modification *vm) /* Do renaming. */ if (dict_rename_vars (d, rename_vars, rename_new_names, rename_cnt, NULL) == 0) - assert (0); + NOT_REACHED (); /* Clean up. */ for (i = 0; i < vm->rename_cnt; i++) @@ -523,5 +524,5 @@ rearrange_dict (struct dictionary *d, const struct var_modification *vm) free (rename_vars); free (rename_new_names); - return 1; + return true; }