evolution r35614 - trunk/e-util
- From: mcrha svn gnome org
- To: svn-commits-list gnome org
- Subject: evolution r35614 - trunk/e-util
- Date: Mon, 9 Jun 2008 09:36:56 +0000 (UTC)
Author: mcrha
Date: Mon Jun 9 09:36:56 2008
New Revision: 35614
URL: http://svn.gnome.org/viewvc/evolution?rev=35614&view=rev
Log:
2008-06-09 Milan Crha <mcrha redhat com>
** Fix for bug #509595
* e-logger.c: (e_logger_get_logs): Do not crash if file does not
exists. Also be able to read lines more than 249 characters long.
Modified:
trunk/e-util/ChangeLog
trunk/e-util/e-logger.c
Modified: trunk/e-util/e-logger.c
==============================================================================
--- trunk/e-util/e-logger.c (original)
+++ trunk/e-util/e-logger.c Mon Jun 9 09:36:56 2008
@@ -240,7 +240,6 @@
{
FILE *fp;
gchar buf[250];
- gboolean error = FALSE;
g_return_if_fail (E_LOGGER (logger));
g_return_if_fail (func != NULL);
@@ -248,17 +247,42 @@
/* Flush everything before we get the logs */
fflush (logger->priv->fp);
fp = g_fopen (logger->priv->logfile, "r");
- while (!error || feof(fp)) {
+
+ if (!fp) {
+ fprintf (stderr, "Cannot open log file '%s' for reading! No flush yet?\n", logger->priv->logfile ? logger->priv->logfile : "[null]");
+ return;
+ }
+
+ while (!feof (fp)) {
gchar *tmp;
- tmp = fgets (buf, 250, fp);
+ size_t len;
+
+ tmp = fgets (buf, sizeof (buf), fp);
if (!tmp)
break;
-#if 0
- if (strlen(tmp) == 249) {
- /* FIXME: There may be more */
- }
-#endif
- func (tmp, data);
+
+ len = strlen (tmp);
+ if (len > 0 && tmp [len - 1] != '\n' && !feof (fp)) {
+ /* there are more characters on a row than 249, so read them all */
+ GString *str = g_string_sized_new (1024);
+
+ g_string_append (str, tmp);
+
+ while (!feof (fp) && len > 0 && tmp [len - 1] != '\n') {
+ tmp = fgets (buf, sizeof (buf), fp);
+ if (!tmp)
+ break;
+
+ len = strlen (tmp);
+ g_string_append (str, tmp);
+ }
+
+ func (str->str, data);
+
+ g_string_free (str, TRUE);
+ } else
+ func (tmp, data);
}
- fclose(fp);
+
+ fclose (fp);
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]