tThe configuration file is now read in (up to the header), rewound, and then written out again. The previous approach (using ftruncate) was getting confused by the Windows \n -> \r\n conversion. - vaccinewars - be a doctor and try to vaccinate the world
(HTM) git clone git://src.adamsgaard.dk/vaccinewars
(DIR) Log
(DIR) Files
(DIR) Refs
(DIR) README
(DIR) LICENSE
---
(DIR) commit bf1956fb9811da51db35f13b89f643347538b9c8
(DIR) parent 86756a22b3d292d6b4c4c33d3f3e17c01ed8353d
(HTM) Author: Ben Webb <ben@salilab.org>
Date: Sat, 2 Mar 2002 18:57:13 +0000
The configuration file is now read in (up to the header), rewound, and then
written out again. The previous approach (using ftruncate) was getting
confused by the Windows \n -> \r\n conversion.
Diffstat:
M src/gui_client/optdialog.c | 31 +++++++++++++++++--------------
1 file changed, 17 insertions(+), 14 deletions(-)
---
(DIR) diff --git a/src/gui_client/optdialog.c b/src/gui_client/optdialog.c
t@@ -462,17 +462,19 @@ static void list_row_unselect(GtkCList *clist, gint row, gint column,
}
}
-static gboolean ReadFileToString(FILE *fp, gchar *str)
+static void ReadFileToString(FILE *fp, gchar *str)
{
- int len, mpos, numread;
+ int len, mpos;
gchar *match, ch;
+ GString *file;
+ file = g_string_new("");
len = strlen(str);
match = g_new(gchar, len);
- mpos = numread = 0;
+ mpos = 0;
- while ((ch = fgetc(fp)) != EOF && mpos < len) {
- numread++;
+ while (mpos < len && (ch = fgetc(fp)) != EOF) {
+ g_string_append_c(file, ch);
match[mpos++] = ch;
if (ch != str[mpos - 1]) {
int start;
t@@ -492,13 +494,15 @@ static gboolean ReadFileToString(FILE *fp, gchar *str)
}
g_free(match);
- if (mpos == len) {
- fseek(fp, numread, SEEK_SET);
- ftruncate(fileno(fp), numread);
- return TRUE;
- } else {
- return FALSE;
- }
+
+ rewind(fp);
+ ftruncate(fileno(fp), 0);
+ fprintf(fp, file->str);
+
+ if (mpos < len)
+ fprintf(fp, str);
+
+ g_string_free(file, TRUE);
}
static void UpdateLocalConfig(void)
t@@ -527,8 +531,7 @@ static void UpdateLocalConfig(void)
return;
}
- if (!ReadFileToString(fp, header))
- fprintf(fp, header);
+ ReadFileToString(fp, header);
WriteConfigFile(fp);
fclose(fp);