Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
02111-1307, USA. */
-/* AIX requires this to be the first thing in the file. */
-#include <config.h>
-#if __GNUC__
-#define alloca __builtin_alloca
-#else
-#if HAVE_ALLOCA_H
-#include <alloca.h>
-#else
-#ifdef _AIX
-#pragma alloca
-#else
-#ifndef alloca /* predefined by HP cc +Olibcalls */
-char *alloca ();
-#endif
-#endif
-#endif
-#endif
+/* FIXME: seems like a lot of code duplication with data-list.c. */
+#include <config.h>
#include <assert.h>
#include <stdlib.h>
#include "alloc.h"
int options; /* PRT_* bitmapped field. */
struct prt_out_spec *spec; /* Output specifications. */
int max_width; /* Maximum line width including null. */
-#if !PAGED_STACK
char *line; /* Buffer for sticking lines in. */
-#endif
};
/* PRT_PRINT or PRT_WRITE. */
static int nrec;
static int internal_cmd_print (int flags);
-static int print_trns_proc (struct trns_header *, struct ccase *);
-static void print_trns_free (struct trns_header *);
+static trns_proc_func print_trns_proc;
+static trns_free_func print_trns_free;
static int parse_specs (void);
static void dump_table (void);
static void append_var_spec (struct prt_out_spec *spec);
prt.handle = NULL;
prt.options = f;
prt.spec = NULL;
-#if !PAGED_STACK
prt.line = NULL;
-#endif
next = NULL;
nrec = 0;
static int
parse_variable_argument (void)
{
- if (!parse_variables (NULL, &fx.v, &fx.nv, PV_DUPLICATE))
+ if (!parse_variables (default_dict, &fx.v, &fx.nv, PV_DUPLICATE))
return 0;
if (token == T_NUM)
static struct fmt_list *
fixed_parse_fortran (void)
{
- struct fmt_list *head;
+ struct fmt_list *head = NULL;
struct fmt_list *fl = NULL;
lex_get (); /* skip opening parenthesis */
}
/* PORTME: The number of characters in a line terminator. */
-#if __MSDOS__
+#ifdef __MSDOS__
#define LINE_END_WIDTH 2 /* \r\n */
#else
#define LINE_END_WIDTH 1 /* \n */
#endif
/* Calculates the maximum possible line width and allocates a buffer
- big enough to contain it, if necessary (otherwise sets max_width).
- (The action taken depends on compiler & OS as detected by pref.h.) */
+ big enough to contain it */
static void
alloc_line (void)
{
pot_w = i->fc + 1;
break;
case PRT_ERROR:
+ default:
assert (0);
- break;
}
if (pot_w > w)
w = pot_w;
}
prt.max_width = w + LINE_END_WIDTH + 1;
-#if !PAGED_STACK
prt.line = xmalloc (prt.max_width);
-#endif
}
\f
/* Transformation. */
/* Performs the transformation inside print_trns T on case C. */
static int
-print_trns_proc (struct trns_header * trns, struct ccase * c)
+print_trns_proc (struct trns_header * trns, struct ccase * c,
+ int case_num UNUSED)
{
/* Transformation. */
struct print_trns *t = (struct print_trns *) trns;
struct prt_out_spec *i;
/* Line buffer. */
-#if PAGED_STACK
-#if __GNUC__ && !__STRICT_ANSI__
- char buf[t->max_width];
-#else /* !__GNUC__ */
- char *buf = alloca (t->max_width);
-#endif /* !__GNUC__ */
-#else /* !PAGED_STACK */
char *buf = t->line;
-#endif /* !PAGED_STACK */
/* Length of the line in buf. */
int len = 0;
|| t->handle->mode != FH_MD_BINARY)
{
/* PORTME: Line ends. */
-#if __MSDOS__
+#ifdef __MSDOS__
buf[len++] = '\r';
#endif
buf[len++] = '\n';
break;
case PRT_VAR:
- if (i->u.v.v->type == NUMERIC)
- data_out (&buf[i->fc], &i->u.v.f, &c->data[i->u.v.v->fv]);
- else
- {
- union value t;
- t.c = c->data[i->u.v.v->fv].s;
- data_out (&buf[i->fc], &i->u.v.f, &t);
- }
+ data_out (&buf[i->fc], &i->u.v.f, &c->data[i->u.v.v->fv]);
len = i->fc + i->u.v.f.w;
break;
n = i->next;
free (i);
}
-#if !PAGED_STACK
free (((struct print_trns *) t)->line);
-#endif
}
\f
/* PRINT SPACE. */
}
print_space_trns;
-static int print_space_trns_proc (struct trns_header *, struct ccase *);
-static void print_space_trns_free (struct trns_header *);
+static trns_proc_func print_space_trns_proc;
+static trns_free_func print_space_trns_free;
int
cmd_print_space (void)
}
static int
-print_space_trns_proc (struct trns_header * trns, struct ccase * c)
+print_space_trns_proc (struct trns_header * trns, struct ccase * c,
+ int case_num UNUSED)
{
struct print_space_trns *t = (struct print_space_trns *) trns;
int n;
{
union value v;
- expr_evaluate (t->e, c, &v);
+ expr_evaluate (t->e, c, case_num, &v);
n = v.f;
if (n < 0)
{
char buf[LINE_END_WIDTH];
/* PORTME: Line ends. */
-#if __MSDOS__
+#ifdef __MSDOS__
buf[0] = '\r';
buf[1] = '\n';
#else