Change many %g format specifiers to %.*g with precision DBL_DIG + 1.
[pspp] / src / language / utilities / set.q
index dcf7a327be79e2681bbfbe841affb0a02b370592..50ddd9443ed8dc92d956068e8d3d3f07b2e09fc1 100644 (file)
@@ -1,5 +1,5 @@
 /* PSPP - a program for statistical analysis.
-   Copyright (C) 1997-9, 2000, 2006, 2009, 2010, 2011 Free Software Foundation, Inc.
+   Copyright (C) 1997-9, 2000, 2006, 2009, 2010, 2011, 2012, 2013, 2014 Free Software Foundation, Inc.
 
    This program is free software: you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
@@ -16,6 +16,7 @@
 
 #include <config.h>
 
+#include <float.h>
 #include <stdio.h>
 #include <errno.h>
 #include <stdlib.h>
@@ -108,6 +109,7 @@ int tgetnum (const char *);
      scripttab=string;
      seed=custom;
      tnumbers=custom;
+     tvars=custom;
      tb1=string;
      tbfonts=string;
      undefined=undef:warn/nowarn;
@@ -357,6 +359,35 @@ stc_custom_tnumbers (struct lexer *lexer,
 }
 
 
+static int
+stc_custom_tvars (struct lexer *lexer,
+                  struct dataset *ds UNUSED,
+                  struct cmd_set *cmd UNUSED, void *aux UNUSED)
+{
+  lex_match (lexer, T_EQUALS);
+
+  if (lex_match_id (lexer, "NAMES"))
+    {
+      settings_set_var_style (SETTINGS_VAR_STYLE_NAMES);
+    }
+  else if (lex_match_id (lexer, "LABELS"))
+    {
+      settings_set_var_style (SETTINGS_VAR_STYLE_LABELS);
+    }
+  else if (lex_match_id (lexer, "BOTH"))
+    {
+      settings_set_var_style (SETTINGS_VAR_STYLE_BOTH);
+    }
+  else
+    {
+      lex_error_expecting (lexer, "NAMES", "LABELS", "BOTH", NULL_SENTINEL);
+      return 0;
+    }
+
+  return 1;
+}
+
+
 /* Parses the EPOCH subcommand, which controls the epoch used for
    parsing 2-digit years. */
 static int
@@ -594,7 +625,7 @@ show_blanks (const struct dataset *ds UNUSED)
 {
   return (settings_get_blanks () == SYSMIS
           ? xstrdup ("SYSMIS")
-          : xasprintf ("%g", settings_get_blanks ()));
+          : xasprintf ("%.*g", DBL_DIG + 1, settings_get_blanks ()));
 }
 
 static void
@@ -678,6 +709,14 @@ show_format (const struct dataset *ds UNUSED)
   return xstrdup (fmt_to_string (settings_get_format (), str));
 }
 
+static char *
+show_journal (const struct dataset *ds UNUSED)
+{
+  return (journal_is_enabled ()
+          ? xasprintf ("\"%s\"", journal_get_file_name ())
+          : xstrdup ("disabled"));
+}
+
 static char *
 show_length (const struct dataset *ds UNUSED)
 {
@@ -834,6 +873,13 @@ show_width (const struct dataset *ds UNUSED)
   return xasprintf ("%d", settings_get_viewwidth ());
 }
 
+static char *
+show_workspace (const struct dataset *ds UNUSED)
+{
+  size_t ws = settings_get_workspace () / 1024L;
+  return xasprintf ("%zu", ws);
+}
+
 static char *
 show_current_directory (const struct dataset *ds UNUSED)
 {
@@ -905,6 +951,7 @@ const struct show_sbc show_table[] =
     {"ENVIRONMENT", show_system},
     {"ERRORS", show_errors},
     {"FORMAT", show_format},
+    {"JOURNAL", show_journal},
     {"LENGTH", show_length},
     {"LOCALE", show_locale},
     {"MESSAGES", show_messages},
@@ -924,6 +971,7 @@ const struct show_sbc show_table[] =
     {"WIB", show_wib},
     {"WRB", show_wrb},
     {"WIDTH", show_width},
+    {"WORKSPACE", show_workspace},
   };
 
 static void