X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Fpfm-write.c;h=e229072ea5578678e0bfe51c3ac2042e7872c2e5;hb=b996647adb40b2b51f888c8e755d5f5f2c15cb37;hp=e2bf68f595bb48cdb457e748d2e89cbe6781259e;hpb=2bfc3a138f308ffb38634a92b23bdc7b62592324;p=pspp diff --git a/src/pfm-write.c b/src/pfm-write.c index e2bf68f595..e229072ea5 100644 --- a/src/pfm-write.c +++ b/src/pfm-write.c @@ -18,6 +18,7 @@ 02111-1307, USA. */ #include +#include "pfm.h" #include #include #include @@ -32,7 +33,6 @@ #include "gmp.h" #include "hash.h" #include "magic.h" -#include "pfm.h" #include "str.h" #include "value-labels.h" #include "var.h" @@ -70,22 +70,23 @@ pfm_write_dictionary (struct file_handle *handle, struct dictionary *dict) { msg (ME, _("Cannot write file %s as portable file: already opened " "for %s."), - fh_handle_name (handle), handle->class->name); + handle_get_name (handle), handle->class->name); return 0; } msg (VM (1), _("%s: Opening portable-file handle %s for writing."), - fh_handle_filename (handle), fh_handle_name (handle)); + handle_get_filename (handle), handle_get_name (handle)); /* Open the physical disk file. */ handle->class = &pfm_w_class; handle->ext = ext = xmalloc (sizeof (struct pfm_fhuser_ext)); - ext->file = fopen (handle->norm_fn, "wb"); + ext->file = fopen (handle_get_filename (handle), "wb"); ext->lc = 0; if (ext->file == NULL) { msg (ME, _("An error occurred while opening \"%s\" for writing " - "as a portable file: %s."), handle->fn, strerror (errno)); + "as a portable file: %s."), + handle_get_filename (handle), strerror (errno)); err_cond_fail (); free (ext); return 0; @@ -94,10 +95,10 @@ pfm_write_dictionary (struct file_handle *handle, struct dictionary *dict) { int i; - ext->nvars = dict->nvar; - ext->vars = xmalloc (sizeof *ext->vars * dict->nvar); - for (i = 0; i < dict->nvar; i++) - ext->vars[i] = dict->var[i]->width; + ext->nvars = dict_get_var_cnt (dict); + ext->vars = xmalloc (sizeof *ext->vars * ext->nvars); + for (i = 0; i < ext->nvars; i++) + ext->vars[i] = dict_get_var (dict, i)->width; } /* Write the file header. */ @@ -136,8 +137,9 @@ lossage: /* Write NBYTES starting at BUF to the portable file represented by H. Break lines properly every 80 characters. */ static int -bufwrite (struct file_handle *h, const void *buf, size_t nbytes) +bufwrite (struct file_handle *h, const void *buf_, size_t nbytes) { + const char *buf = buf_; struct pfm_fhuser_ext *ext = h->ext; assert (buf != NULL); @@ -153,7 +155,7 @@ bufwrite (struct file_handle *h, const void *buf, size_t nbytes) goto lossage; nbytes -= n; - *((char **) &buf) += n; + buf += n; ext->lc = 0; } @@ -165,7 +167,8 @@ bufwrite (struct file_handle *h, const void *buf, size_t nbytes) lossage: abort (); - msg (ME, _("%s: Writing portable file: %s."), h->fn, strerror (errno)); + msg (ME, _("%s: Writing portable file: %s."), + handle_get_filename (h), strerror (errno)); return 0; } @@ -385,11 +388,11 @@ write_variables (struct file_handle *h, struct dictionary *dict) { int i; - if (!bufwrite (h, "4", 1) || !write_int (h, dict->nvar) + if (!bufwrite (h, "4", 1) || !write_int (h, dict_get_var_cnt (dict)) || !write_int (h, 161)) return 0; - for (i = 0; i < dict->nvar; i++) + for (i = 0; i < dict_get_var_cnt (dict); i++) { static const char *miss_types[MISSING_COUNT] = { @@ -399,7 +402,7 @@ write_variables (struct file_handle *h, struct dictionary *dict) const char *m; int j; - struct variable *v = dict->var[i]; + struct variable *v = dict_get_var (dict, i); if (!bufwrite (h, "7", 1) || !write_int (h, v->width) || !write_string (h, v->name) @@ -424,10 +427,10 @@ write_value_labels (struct file_handle *h, struct dictionary *dict) { int i; - for (i = 0; i < dict->nvar; i++) + for (i = 0; i < dict_get_var_cnt (dict); i++) { struct val_labs_iterator *j; - struct variable *v = dict->var[i]; + struct variable *v = dict_get_var (dict, i); struct val_lab *vl; if (!val_labs_count (v->val_labs)) @@ -472,7 +475,7 @@ pfm_write_case (struct file_handle *h, const union value *elem) } else { - if (!write_int (h, width) || !bufwrite (h, elem->c, width)) + if (!write_int (h, width) || !bufwrite (h, elem[i].c, width)) return 0; } } @@ -498,7 +501,8 @@ pfm_close (struct file_handle *h) } if (EOF == fclose (ext->file)) - msg (ME, _("%s: Closing portable file: %s."), h->fn, strerror (errno)); + msg (ME, _("%s: Closing portable file: %s."), + handle_get_filename (h), strerror (errno)); free (ext->vars); free (ext);