X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;ds=sidebyside;f=src%2Fdata%2Fpor-file-writer.c;h=39c763113aad1343d448ab06566857b9d0edcaec;hb=3c70826f9e59d2008305ed8305554a532851f6d9;hp=22656f19b3cb9699eab3cc91ec559bcb5a835ff3;hpb=6d53d2b45f5385271dd21e8df1b5ac23d20be9fb;p=pspp
diff --git a/src/data/por-file-writer.c b/src/data/por-file-writer.c
index 22656f19b3..39c763113a 100644
--- a/src/data/por-file-writer.c
+++ b/src/data/por-file-writer.c
@@ -1,5 +1,5 @@
/* PSPP - a program for statistical analysis.
- Copyright (C) 1997-9, 2000, 2006, 2009 Free Software Foundation, Inc.
+ Copyright (C) 1997-9, 2000, 2006, 2009, 2010, 2011, 2012 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@@ -15,7 +15,8 @@
along with this program. If not, see . */
#include
-#include "por-file-writer.h"
+
+#include "data/por-file-writer.h"
#include
#include
@@ -26,26 +27,25 @@
#include
#include
-#include
-#include
-#include
-#include
-#include
-#include
-#include
-#include
-#include
-#include
-#include
-#include
-
-#include
-#include
-#include
-#include
-
-#include "minmax.h"
-#include "xalloc.h"
+#include "data/case.h"
+#include "data/casewriter-provider.h"
+#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"
+#include "data/short-names.h"
+#include "data/value-labels.h"
+#include "data/variable.h"
+#include "libpspp/message.h"
+#include "libpspp/misc.h"
+#include "libpspp/str.h"
+#include "libpspp/version.h"
+
+#include "gl/minmax.h"
+#include "gl/xalloc.h"
#include "gettext.h"
#define _(msgid) gettext (msgid)
@@ -150,14 +150,14 @@ pfm_open_writer (struct file_handle *fh, struct dictionary *dict,
goto error;
/* Create file. */
- mode = S_IRUSR | S_IRGRP | S_IROTH;
+ mode = 0444;
if (opts.create_writeable)
- mode |= S_IWUSR | S_IWGRP | S_IWOTH;
+ mode |= 0222;
w->rf = replace_file_start (fh_get_file_name (fh), "w", mode,
&w->file, NULL);
if (w->rf == NULL)
{
- msg (ME, _("Error opening \"%s\" for writing as a portable file: %s."),
+ msg (ME, _("Error opening `%s' for writing as a portable file: %s."),
fh_get_file_name (fh), strerror (errno));
goto error;
}
@@ -404,6 +404,7 @@ write_value_labels (struct pfm_writer *w, const struct dictionary *dict)
const struct val_labs *val_labs = var_get_value_labels (v);
size_t n_labels = val_labs_count (val_labs);
const struct val_lab **labels;
+ int j;
if (n_labels == 0)
continue;
@@ -415,11 +416,11 @@ write_value_labels (struct pfm_writer *w, const struct dictionary *dict)
n_labels = val_labs_count (val_labs);
labels = val_labs_sorted (val_labs);
- for (i = 0; i < n_labels; i++)
+ for (j = 0; j < n_labels; j++)
{
- const struct val_lab *vl = labels[i];
+ const struct val_lab *vl = labels[j];
write_value (w, val_lab_get_value (vl), var_get_width (v));
- write_string (w, val_lab_get_label (vl));
+ write_string (w, val_lab_get_escaped_label (vl));
}
free (labels);
}
@@ -436,10 +437,7 @@ write_documents (struct pfm_writer *w, const struct dictionary *dict)
buf_write (w, "E", 1);
write_int (w, line_cnt);
for (i = 0; i < line_cnt; i++)
- {
- dict_get_document_line (dict, i, &line);
- write_string (w, ds_cstr (&line));
- }
+ write_string (w, dict_get_document_line (dict, i));
ds_destroy (&line);
}
@@ -502,7 +500,7 @@ close_writer (struct pfm_writer *w)
ok = false;
if (!ok)
- msg (ME, _("An I/O error occurred writing portable file \"%s\"."),
+ msg (ME, _("An I/O error occurred writing portable file `%s'."),
fh_get_file_name (w->fh));
if (ok ? !replace_file_commit (w->rf) : !replace_file_abort (w->rf))