X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Fdata%2Fpor-file-writer.c;h=672add4101cff3520bcd008ea0395a3805a41183;hb=424aa0c4f6d8ff6dc123e4452f37af7e6cd2d5d3;hp=778b8e402f3a303157ee597380872caa87cfb000;hpb=912f3dd1f6cf864162234ee28ee599f5b543b290;p=pspp diff --git a/src/data/por-file-writer.c b/src/data/por-file-writer.c index 778b8e402f..672add4101 100644 --- a/src/data/por-file-writer.c +++ b/src/data/por-file-writer.c @@ -32,7 +32,6 @@ #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" @@ -153,8 +152,8 @@ pfm_open_writer (struct file_handle *fh, struct dictionary *dict, 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."), @@ -262,8 +261,6 @@ write_header (struct pfm_writer *w) 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; @@ -277,12 +274,15 @@ write_version_data (struct pfm_writer *w) 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); @@ -316,7 +316,7 @@ write_value (struct pfm_writer *w, const union value *v, int width) { width = MIN (width, MAX_POR_WIDTH); write_int (w, width); - buf_write (w, value_str (v, width), width); + buf_write (w, v->s, width); } } @@ -328,12 +328,12 @@ write_variables (struct pfm_writer *w, struct dictionary *dict) 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)); @@ -812,7 +812,7 @@ format_trig_double (long double value, int base_10_precision, char output[]) 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;