#include "data/casewriter.h"
#include "data/dictionary.h"
#include "data/file-handle-def.h"
-#include "data/file-name.h"
#include "data/format.h"
#include "data/make-file.h"
#include "data/missing-values.h"
struct pfm_var
{
int width; /* 0=numeric, otherwise string var width. */
- int fv; /* Starting case index. */
+ int case_index; /* Index in case. */
};
static const struct casewriter_class por_file_casewriter_class;
const struct variable *dv = dict_get_var (dict, i);
struct pfm_var *pv = &w->vars[i];
pv->width = MIN (var_get_width (dv), MAX_POR_WIDTH);
- pv->fv = var_get_case_index (dv);
+ pv->case_index = var_get_case_index (dv);
}
w->digits = opts.digits;
mode = 0444;
if (opts.create_writeable)
mode |= 0222;
- w->rf = replace_file_start (fh_get_file_name (fh), "w", mode,
- &w->file, NULL);
+ w->rf = replace_file_start (fh, "w", mode,
+ &w->file);
if (w->rf == NULL)
{
msg (ME, _("Error opening `%s' for writing as a portable file: %s."),
static void
write_version_data (struct pfm_writer *w)
{
- char date_str[9];
- char time_str[7];
time_t t;
struct tm tm;
struct tm *tmp;
else
tmp = localtime (&t);
- sprintf (date_str, "%04d%02d%02d",
- tmp->tm_year + 1900, tmp->tm_mon + 1, tmp->tm_mday);
- sprintf (time_str, "%02d%02d%02d", tmp->tm_hour, tmp->tm_min, tmp->tm_sec);
+ char *date_str = xasprintf ("%04d%02d%02d", tmp->tm_year + 1900,
+ tmp->tm_mon + 1, tmp->tm_mday);
+ char *time_str = xasprintf ("%02d%02d%02d",
+ tmp->tm_hour, tmp->tm_min, tmp->tm_sec);
buf_write (w, "A", 1);
write_string (w, date_str);
write_string (w, time_str);
+ free (date_str);
+ free (time_str);
/* Product identification. */
buf_write (w, "1", 1);
{
width = MIN (width, MAX_POR_WIDTH);
write_int (w, width);
- buf_write (w, value_str (v, width), width);
+ buf_write (w, v->s, width);
}
}
short_names_assign (dict);
- if (dict_get_weight (dict) != NULL)
+ if (dict_get_weight (dict) != NULL)
{
buf_write (w, "6", 1);
write_string (w, var_get_short_name (dict_get_weight (dict), 0));
}
-
+
buf_write (w, "4", 1);
write_int (w, dict_get_var_cnt (dict));
struct pfm_var *v = &w->vars[i];
if (v->width == 0)
- write_float (w, case_num_idx (c, v->fv));
+ write_float (w, case_num_idx (c, v->case_index));
else
{
write_int (w, v->width);
- buf_write (w, case_str_idx (c, v->fv), v->width);
+ buf_write (w, case_str_idx (c, v->case_index), v->width);
}
}
}
value -= chunk;
/* Append the chunk, in base 30, to trigs[]. */
- for (trigs_left = CHUNK_SIZE; chunk > 0 && trigs_left > 0; )
+ for (trigs_left = CHUNK_SIZE; chunk > 0 && trigs_left > 0;)
{
trigs[trig_cnt + --trigs_left] = chunk % 30;
chunk /= 30;