Eliminated global variable current_dataset.
[pspp-builds.git] / src / language / dictionary / value-labels.c
index a9d3d8751799d5fc6bc1d4ea0e2184ae28858982..c39bebd4caed1c65283887896b21df00ab9ea96c 100644 (file)
 #include <stdio.h>
 #include <stdlib.h>
 
-#include <procedure.h>
+#include <data/procedure.h>
 #include <data/value-labels.h>
 #include <data/variable.h>
 #include <language/command.h>
 #include <language/lexer/lexer.h>
+#include <language/lexer/variable-parser.h>
 #include <libpspp/alloc.h>
 #include <libpspp/hash.h>
 #include <libpspp/message.h>
@@ -37,7 +38,7 @@
 \f
 /* Declarations. */
 
-static int do_value_labels (int);
+static int do_value_labels (const struct dictionary *dict, int);
 static int verify_val_labs (struct variable **vars, size_t var_cnt);
 static void erase_labels (struct variable **vars, size_t var_cnt);
 static int get_label (struct variable **vars, size_t var_cnt);
@@ -45,21 +46,21 @@ static int get_label (struct variable **vars, size_t var_cnt);
 /* Stubs. */
 
 int
-cmd_value_labels (void)
+cmd_value_labels (struct dataset *ds)
 {
-  return do_value_labels (1);
+  return do_value_labels (dataset_dict (ds), 1);
 }
 
 int
-cmd_add_value_labels (void)
+cmd_add_value_labels (struct dataset *ds)
 {
-  return do_value_labels (0);
+  return do_value_labels (dataset_dict (ds), 0);
 }
 \f
 /* Do it. */
 
 static int
-do_value_labels (int erase)
+do_value_labels (const struct dictionary *dict, int erase)
 {
   struct variable **vars; /* Variable list. */
   size_t var_cnt;         /* Number of variables. */
@@ -69,7 +70,7 @@ do_value_labels (int erase)
   
   while (token != '.')
     {
-      parse_err = !parse_variables (default_dict, &vars, &var_cnt, 
+      parse_err = !parse_variables (dict, &vars, &var_cnt, 
                                    PV_SAME_TYPE) ;
       if (var_cnt < 1)
        {
@@ -157,7 +158,7 @@ get_label (struct variable **vars, size_t var_cnt)
               lex_error (_("expecting string"));
              return 0;
            }
-         buf_copy_str_rpad (value.s, MAX_SHORT_STRING, ds_c_str (&tokstr));
+         buf_copy_str_rpad (value.s, MAX_SHORT_STRING, ds_cstr (&tokstr));
        }
       else
        {
@@ -180,7 +181,7 @@ get_label (struct variable **vars, size_t var_cnt)
          msg (SW, _("Truncating value label to 60 characters."));
          ds_truncate (&tokstr, 60);
        }
-      label = ds_c_str (&tokstr);
+      label = ds_cstr (&tokstr);
 
       for (i = 0; i < var_cnt; i++)
         val_labs_replace (vars[i]->val_labs, value, label);