We're abusing the current ASCII driver by telling it to allocate a
[pspp-builds.git] / src / data-in.c
index dc2e707d8723217f6780fee14c3f8ac3e0cefed7..3931067daabe0f002dc9365c8873af2a72c13b89 100644 (file)
    02111-1307, USA. */
 
 #include <config.h>
-#include <assert.h>
+#include "data-in.h"
+#include "error.h"
 #include <math.h>
 #include <ctype.h>
 #include <stdarg.h>
 #include <stddef.h>
 #include <stdio.h>
 #include <stdlib.h>
-#include "data-in.h"
 #include "error.h"
 #include "getline.h"
 #include "julcal/julcal.h"
 #include "str.h"
 #include "var.h"
 \f
-#undef DEBUGGING
-/*#define DEBUGGING 1 */
 #include "debug-print.h"
 
 \f
 /* Specialized error routine. */
 
 static void dls_error (const struct data_in *, const char *format, ...)
-     __attribute__ ((format (printf, 2, 3)));
+     PRINTF_FORMAT (2, 3);
 
 static void
 dls_error (const struct data_in *i, const char *format, ...)
@@ -142,16 +140,18 @@ parse_numeric (struct data_in *i)
       if (*i->s == '-' || *i->s == '+')
        i->s++;
     }
+  else
+    sign = 1;
   
   if (type != FMT_DOT)
     {
-      decimal = set_decimal;
-      grouping = set_grouping;
+      decimal = get_decimal();
+      grouping = get_grouping();
     }
   else
     {
-      decimal = set_grouping;
-      grouping = set_decimal;
+      decimal = get_grouping();
+      grouping = get_decimal();
     }
 
   i->v->f = SYSMIS;
@@ -288,6 +288,7 @@ parse_N (struct data_in *i)
 {
   const unsigned char *cp;
 
+  i->v->f = 0;
   for (cp = i->s; cp < i->e; cp++)
     {
       if (!isdigit (*cp))
@@ -382,9 +383,10 @@ parse_Z (struct data_in *i)
 
     if (!warned)
       {
-       msg (MW, _("Quality of zoned decimal (Z) input format code is "
-                  "suspect.  Check your results three times, report bugs "
-                  "to author."));
+       msg (MW, 
+            _("Quality of zoned decimal (Z) input format code is "
+              "suspect.  Check your results three times. Report bugs "
+               "to %s."),PACKAGE_BUGREPORT);
        warned = 1;
       }
   }
@@ -1489,7 +1491,7 @@ default_result (struct data_in *i)
   if (fmt->cat & FCAT_STRING)
     memset (i->v->s, ' ', i->format.w);
   else
-    i->v->f = set_blanks;
+    i->v->f = get_blanks();
 }
 
 int
@@ -1527,7 +1529,7 @@ data_in (struct data_in *i)
 
          if (++cp == i->e)
            {
-             i->v->f = set_blanks;
+             i->v->f = get_blanks();
              return 1;
            }
        }