From: <ro...@us...> - 2006-06-11 17:23:57
|
Revision: 16255 Author: roast Date: 2006-06-11 10:23:51 -0700 (Sun, 11 Jun 2006) ViewCVS: http://svn.sourceforge.net/gaim/?rev=16255&view=rev Log Message: ----------- logging timestamps are corrected Modified Paths: -------------- branches/soc-2006-file-loggers/src/log.c Modified: branches/soc-2006-file-loggers/src/log.c =================================================================== --- branches/soc-2006-file-loggers/src/log.c 2006-06-11 06:05:09 UTC (rev 16254) +++ branches/soc-2006-file-loggers/src/log.c 2006-06-11 17:23:51 UTC (rev 16255) @@ -738,12 +738,16 @@ GaimLog *log; GaimLogCommonLoggerData *data; struct tm tm; + const char *thetimestamp = (const char *)g_strrstr(filename, "_"); + #if defined (HAVE_TM_GMTOFF) && defined (HAVE_STRUCT_TM_TM_ZONE) long tz_off; const char *rest; - time_t stamp = gaim_str_to_time(gaim_unescape_filename(filename), FALSE, &tm, &tz_off, &rest); + time_t stamp = gaim_str_to_time(gaim_unescape_filename(thetimestamp), FALSE, &tm, &tz_off, &rest); char *end; + thetimestamp = (thetimestamp != NULL) ? thetimestamp + sizeof(gchar) : filename; + /* As zero is a valid offset, GAIM_NO_TZ_OFF means no offset was * provided. See util.h. Yes, it's kinda ugly. */ if (tz_off != GAIM_NO_TZ_OFF) @@ -761,8 +765,10 @@ g_free(tmp); } #else - time_t stamp = gaim_str_to_time(filename, FALSE, &tm, NULL, NULL); + thetimestamp = (thetimestamp != NULL) ? thetimestamp + sizeof(gchar) : filename; + time_t stamp = gaim_str_to_time(thetimestamp, FALSE, &tm, NULL, NULL); + log = gaim_log_new(type, name, account, NULL, stamp, &tm); #endif @@ -968,12 +974,11 @@ const char *from, time_t time, const char *message) { char *msg_fixed; - const char *date = gaim_utf8_strftime("%F %T%z", localtime(&log->time)); + const char *date = gaim_utf8_strftime("%F %T%z", localtime(&time)); GaimPlugin *plugin = gaim_find_prpl(gaim_account_get_protocol_id(log->account)); GaimLogCommonLoggerData *data = log->logger_data; gsize written = 0; - GaimLogType original_type = log->type; /* This log is new. We could use the loggers 'new' function, but * creating a new file there would result in empty files in the case @@ -981,6 +986,7 @@ */ if (!log->logger_data) { const char *prpl = GAIM_PLUGIN_PROTOCOL_INFO(plugin)->list_icon(log->account, NULL); + gaim_log_common_writer(log, ".chatlog"); data = log->logger_data; @@ -988,6 +994,10 @@ // if file doesn't exist, die if (!data->file) return 0; + // because gaim_utf8_strftime returns a pointer to static data, + // and was called in gaim_log_common_writer + date = gaim_utf8_strftime("%F %T%z", localtime(&time)); + fprintf(data->file, "<?xml version=\"1.0\" encoding=\"UTF-8\" ?>\n"); if (log->type == GAIM_LOG_SYSTEM) @@ -996,7 +1006,7 @@ else written += fprintf(data->file, "<chat service=\"%s\" account=\"%s\" version=\"0.3.1-04\">\n", prpl, gaim_account_get_username(log->account)); - written += fprintf(data->file, "\t<event time=\"%s\" type=\"logStart\" \/>\n", date); + written += fprintf(data->file, "\t<event time=\"%s\" type=\"logStart\" />\n", date); } /* if we can't write to the file, give up before we hurt ourselves */ @@ -1028,11 +1038,12 @@ written += fprintf(data->file, "\t<message time=\"%s\" sender=\"%s\">%s</message>\n", date, from, msg_fixed); } - // TODO: haven't written end of file and seeked back - g_free(msg_fixed); fflush(data->file); + // TODO: haven't written end of file and seeked back + // TODO: this is to keep a valid XML document out of the user space buffer + return written; } @@ -1041,8 +1052,8 @@ GaimLogCommonLoggerData *data = log->logger_data; if (data) { if (data->file) { - const char *date = gaim_utf8_strftime("%F %T%z", localtime(&log->time)); - fprintf(data->file, "\t<event time=\"%s\" type=\"logEnd\" \/>\n", date); + const char *date = gaim_utf8_strftime("%F %T%z", localtime(NULL)); + fprintf(data->file, "\t<event time=\"%s\" type=\"logEnd\" />\n", date); fprintf(data->file, "</conversation>\n"); fclose(data->file); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |