summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBradford Hovinen <hovinen@ximian.com>2001-06-18 16:44:33 +0000
committerBradford Hovinen (Gdict maintainer) <hovinen@src.gnome.org>2001-06-18 16:44:33 +0000
commitc7af228de9fddb4923fc42dcb60262ab55b28339 (patch)
tree6d8a693035d1f649031ed8cf3b1d1f1f58b7afa1
parent057372f928bd6fde16ff973befbb119471fb6b5b (diff)
downloadgnome-control-center-GCONF_BRANCH2.tar.gz
Use read () rather than fread () to make sure to catch end-of-file.GCONF_BRANCH2
2001-06-18 Bradford Hovinen <hovinen@ximian.com> * capplets/new-*/main.c (do_set_xml): Use read () rather than fread () to make sure to catch end-of-file. Gracefully handle no-data case.
-rw-r--r--ChangeLog6
-rw-r--r--capplets/background/main.c43
-rw-r--r--capplets/keyboard/main.c43
-rw-r--r--capplets/mouse/main.c42
-rw-r--r--capplets/screensaver/main.c43
-rw-r--r--capplets/sound/main.c41
-rw-r--r--capplets/ui-properties/main.c41
7 files changed, 163 insertions, 96 deletions
diff --git a/ChangeLog b/ChangeLog
index b3d84ee39..ac7496ed0 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2001-06-18 Bradford Hovinen <hovinen@ximian.com>
+
+ * capplets/new-*/main.c (do_set_xml): Use read () rather than
+ fread () to make sure to catch end-of-file. Gracefully handle
+ no-data case.
+
2001-06-07 Christian Rose <menthos@menthos.com>
* capplets/desktop-links/Appearances.directory,
diff --git a/capplets/background/main.c b/capplets/background/main.c
index 232a52fce..028113ac0 100644
--- a/capplets/background/main.c
+++ b/capplets/background/main.c
@@ -157,28 +157,41 @@ do_set_xml (gboolean apply_settings)
int len = 0;
int bytes_read = 0;
- while (!feof (stdin)) {
- if (!len) buffer = g_new (char, 16385);
- else buffer = g_renew (char, buffer, len + 16385);
- bytes_read = fread (buffer + len, 1, 16384, stdin);
+ fflush (stdin);
+
+ do {
+ if (!len) buffer = g_new (char, 4097);
+ else buffer = g_renew (char, buffer, len + 4097);
+ bytes_read = read (fileno (stdin), buffer + len, 4096);
buffer[len + bytes_read] = '\0';
- len += 16384;
- }
+ len += 4096;
+ } while (bytes_read == 4096);
+
+ if (len >= 4096 && len > 0) {
+ doc = xmlParseMemory (buffer, len - 4096 + bytes_read);
+ g_free (buffer);
- if (len > 0 && bytes_read + len - 16384 > 0) {
- doc = xmlParseMemory (buffer, strlen (buffer));
- prefs = preferences_read_xml (doc);
+ if (doc != NULL) {
+ prefs = preferences_read_xml (doc);
- if (prefs) {
- preferences_save (prefs);
+ if (prefs != NULL) {
+ preferences_save (prefs);
- if (apply_settings)
- preferences_apply_now (prefs);
- return;
+ if (apply_settings)
+ preferences_apply_now (prefs);
+
+ return;
+ }
+ else if (prefs != NULL) {
+ return;
+ }
+
+ xmlFreeDoc (doc);
}
+ } else {
+ g_critical ("No data to apply");
}
- g_warning ("Error while reading the background config file");
return;
}
diff --git a/capplets/keyboard/main.c b/capplets/keyboard/main.c
index 7c4b240f9..a486b7e34 100644
--- a/capplets/keyboard/main.c
+++ b/capplets/keyboard/main.c
@@ -146,28 +146,41 @@ do_set_xml (gboolean apply_settings)
int len = 0;
int bytes_read = 0;
- while (!feof (stdin)) {
- if (!len) buffer = g_new (char, 16385);
- else buffer = g_renew (char, buffer, len + 16385);
- bytes_read = fread (buffer + len, 1, 16384, stdin);
+ fflush (stdin);
+
+ do {
+ if (!len) buffer = g_new (char, 4097);
+ else buffer = g_renew (char, buffer, len + 4097);
+ bytes_read = read (fileno (stdin), buffer + len, 4096);
buffer[len + bytes_read] = '\0';
- len += 16384;
- }
+ len += 4096;
+ } while (bytes_read == 4096);
+
+ if (len >= 4096 && len > 0) {
+ doc = xmlParseMemory (buffer, len - 4096 + bytes_read);
+ g_free (buffer);
- if (len > 0 && bytes_read + len - 16384 > 0) {
- doc = xmlParseMemory (buffer, strlen (buffer));
- prefs = preferences_read_xml (doc);
+ if (doc != NULL) {
+ prefs = preferences_read_xml (doc);
- if (prefs) {
- preferences_save (prefs);
+ if (prefs != NULL) {
+ preferences_save (prefs);
- if (apply_settings)
- preferences_apply_now (prefs);
- return;
+ if (apply_settings)
+ preferences_apply_now (prefs);
+
+ return;
+ }
+ else if (prefs != NULL) {
+ return;
+ }
+
+ xmlFreeDoc (doc);
}
+ } else {
+ g_critical ("No data to apply");
}
- g_warning ("Error while reading the keyboard config file");
return;
}
diff --git a/capplets/mouse/main.c b/capplets/mouse/main.c
index bc184f18a..d716bd1b3 100644
--- a/capplets/mouse/main.c
+++ b/capplets/mouse/main.c
@@ -146,29 +146,37 @@ do_set_xml (gboolean apply_settings)
int len = 0;
int bytes_read = 0;
- while (!feof (stdin)) {
- if (!len) buffer = g_new (char, 16385);
- else buffer = g_renew (char, buffer, len + 16385);
- bytes_read = fread (buffer + len, 1, 16384, stdin);
+ fflush (stdin);
+
+ do {
+ if (!len) buffer = g_new (char, 4097);
+ else buffer = g_renew (char, buffer, len + 4097);
+ bytes_read = read (fileno (stdin), buffer + len, 4096);
buffer[len + bytes_read] = '\0';
- len += 16384;
- }
+ len += 4096;
+ } while (bytes_read == 4096);
- if (len > 0 && bytes_read + len - 16384 > 0) {
- doc = xmlParseMemory (buffer, strlen (buffer));
- prefs = preferences_read_xml (doc);
+ if (len >= 4096 && len > 0) {
+ doc = xmlParseMemory (buffer, len - 4096 + bytes_read);
+ g_free (buffer);
- if (prefs && apply_settings) {
- preferences_save (prefs);
- return;
- }
- else if (prefs) {
- return;
+ if (doc != NULL) {
+ prefs = preferences_read_xml (doc);
+
+ if (prefs && apply_settings) {
+ preferences_save (prefs);
+ return;
+ }
+ else if (prefs != NULL) {
+ return;
+ }
+
+ xmlFreeDoc (doc);
}
+ } else {
+ g_critical ("No data to apply");
}
- g_warning ("Error while reading the keyboard config file");
-
return;
}
diff --git a/capplets/screensaver/main.c b/capplets/screensaver/main.c
index 6c2d40213..046fcfa92 100644
--- a/capplets/screensaver/main.c
+++ b/capplets/screensaver/main.c
@@ -264,30 +264,39 @@ do_set_xml (gboolean apply_settings)
xmlDocPtr doc;
char *buffer = NULL;
int len = 0;
- int bytes_read;
+ int bytes_read = 0;
- while (!feof (stdin)) {
- if (!len) buffer = g_new (char, 16385);
- else buffer = g_renew (char, buffer, len + 16385);
- bytes_read = fread (buffer + len, 1, 16384, stdin);
+ fflush (stdin);
+
+ do {
+ if (!len) buffer = g_new (char, 4097);
+ else buffer = g_renew (char, buffer, len + 4097);
+ bytes_read = read (fileno (stdin), buffer + len, 4096);
buffer[len + bytes_read] = '\0';
- len += 16384;
- }
+ len += 4096;
+ } while (bytes_read == 4096);
- if (len > 0 && bytes_read + len - 16384 > 0) {
- doc = xmlParseMemory (buffer, strlen (buffer));
- prefs = preferences_read_xml (doc);
+ if (len >= 4096 && len > 0) {
+ doc = xmlParseMemory (buffer, len - 4096 + bytes_read);
+ g_free (buffer);
- if (prefs && apply_settings) {
- preferences_save (prefs);
- return;
- }
- else if (prefs) {
- return;
+ if (doc != NULL) {
+ prefs = preferences_read_xml (doc);
+
+ if (prefs && apply_settings) {
+ preferences_save (prefs);
+ return;
+ }
+ else if (prefs != NULL) {
+ return;
+ }
+
+ xmlFreeDoc (doc);
}
+ } else {
+ g_critical ("No data to apply");
}
- g_warning ("Error while reading the screensaver config file");
return;
}
diff --git a/capplets/sound/main.c b/capplets/sound/main.c
index c2ebdb977..4f261c7c9 100644
--- a/capplets/sound/main.c
+++ b/capplets/sound/main.c
@@ -145,28 +145,37 @@ do_set_xml (gboolean apply_settings)
int len = 0;
int bytes_read = 0;
- while (!feof (stdin)) {
- if (!len) buffer = g_new (char, 16385);
- else buffer = g_renew (char, buffer, len + 16385);
- bytes_read = fread (buffer + len, 1, 16384, stdin);
+ fflush (stdin);
+
+ do {
+ if (!len) buffer = g_new (char, 4097);
+ else buffer = g_renew (char, buffer, len + 4097);
+ bytes_read = read (fileno (stdin), buffer + len, 4096);
buffer[len + bytes_read] = '\0';
- len += 16384;
- }
+ len += 4096;
+ } while (bytes_read == 4096);
- if (len > 0 && bytes_read + len - 16384 > 0) {
- doc = xmlParseMemory (buffer, strlen (buffer));
- prefs = preferences_read_xml (doc);
+ if (len >= 4096 && len > 0) {
+ doc = xmlParseMemory (buffer, len - 4096 + bytes_read);
+ g_free (buffer);
- if (prefs && apply_settings) {
- preferences_save (prefs);
- return;
- }
- else if (prefs) {
- return;
+ if (doc != NULL) {
+ prefs = preferences_read_xml (doc);
+
+ if (prefs && apply_settings) {
+ preferences_save (prefs);
+ return;
+ }
+ else if (prefs != NULL) {
+ return;
+ }
+
+ xmlFreeDoc (doc);
}
+ } else {
+ g_critical ("No data to apply");
}
- g_warning ("Error while reading the sound config file");
return;
}
diff --git a/capplets/ui-properties/main.c b/capplets/ui-properties/main.c
index 2a93f4f6c..a89677862 100644
--- a/capplets/ui-properties/main.c
+++ b/capplets/ui-properties/main.c
@@ -138,28 +138,37 @@ do_set_xml (gboolean apply_settings)
int len = 0;
int bytes_read = 0;
- while (!feof (stdin)) {
- if (!len) buffer = g_new (char, 16385);
- else buffer = g_renew (char, buffer, len + 16385);
- bytes_read = fread (buffer + len, 1, 16384, stdin);
+ fflush (stdin);
+
+ do {
+ if (!len) buffer = g_new (char, 4097);
+ else buffer = g_renew (char, buffer, len + 4097);
+ bytes_read = read (fileno (stdin), buffer + len, 4096);
buffer[len + bytes_read] = '\0';
- len += 16384;
- }
+ len += 4096;
+ } while (bytes_read == 4096);
- if (len > 0 && bytes_read + len - 16384 > 0) {
- doc = xmlParseMemory (buffer, strlen (buffer));
- prefs = preferences_read_xml (doc);
+ if (len >= 4096 && len > 0) {
+ doc = xmlParseMemory (buffer, len - 4096 + bytes_read);
+ g_free (buffer);
- if (prefs && apply_settings) {
- preferences_save (prefs);
- return;
- }
- else if (prefs) {
- return;
+ if (doc != NULL) {
+ prefs = preferences_read_xml (doc);
+
+ if (prefs && apply_settings) {
+ preferences_save (prefs);
+ return;
+ }
+ else if (prefs != NULL) {
+ return;
+ }
+
+ xmlFreeDoc (doc);
}
+ } else {
+ g_critical ("No data to apply");
}
- g_warning ("Error while reading the ui config file");
return;
}