Skip to content

Commit

Permalink
logger: call strftime before replacing buffer local variables
Browse files Browse the repository at this point in the history
  • Loading branch information
flashcode committed Sep 23, 2017
1 parent 1206a7b commit f105c6f
Show file tree
Hide file tree
Showing 2 changed files with 51 additions and 44 deletions.
7 changes: 7 additions & 0 deletions ChangeLog.adoc
Expand Up @@ -15,6 +15,13 @@ https://weechat.org/files/releasenotes/ReleaseNotes-devel.html[release notes]
(file _ReleaseNotes.adoc_ in sources). (file _ReleaseNotes.adoc_ in sources).




[[v1.9.1]]
== Version 1.9.1 (under dev)

Bug fixes::

* logger: call strftime before replacing buffer local variables

[[v1.9]] [[v1.9]]
== Version 1.9 (2017-06-25) == Version 1.9 (2017-06-25)


Expand Down
88 changes: 44 additions & 44 deletions src/plugins/logger/logger.c
Expand Up @@ -295,71 +295,71 @@ logger_get_mask_for_buffer (struct t_gui_buffer *buffer)
char * char *
logger_get_mask_expanded (struct t_gui_buffer *buffer, const char *mask) logger_get_mask_expanded (struct t_gui_buffer *buffer, const char *mask)
{ {
char *mask2, *mask_decoded, *mask_decoded2, *mask_decoded3, *mask_decoded4; char *mask2, *mask3, *mask4, *mask5, *mask6, *mask7;
char *mask_decoded5;
const char *dir_separator; const char *dir_separator;
int length; int length;
time_t seconds; time_t seconds;
struct tm *date_tmp; struct tm *date_tmp;


mask2 = NULL; mask2 = NULL;
mask_decoded = NULL; mask3 = NULL;
mask_decoded2 = NULL; mask4 = NULL;
mask_decoded3 = NULL; mask5 = NULL;
mask_decoded4 = NULL; mask6 = NULL;
mask_decoded5 = NULL; mask7 = NULL;


dir_separator = weechat_info_get ("dir_separator", ""); dir_separator = weechat_info_get ("dir_separator", "");
if (!dir_separator) if (!dir_separator)
return NULL; return NULL;


/* replace date/time specifiers in mask */
length = strlen (mask) + 256 + 1;
mask2 = malloc (length);
if (!mask2)
goto end;
seconds = time (NULL);
date_tmp = localtime (&seconds);
mask2[0] = '\0';
if (strftime (mask2, length - 1, mask, date_tmp) == 0)
mask2[0] = '\0';

/* /*
* we first replace directory separator (commonly '/') by \01 because * we first replace directory separator (commonly '/') by \01 because
* buffer mask can contain this char, and will be replaced by replacement * buffer mask can contain this char, and will be replaced by replacement
* char ('_' by default) * char ('_' by default)
*/ */
mask2 = weechat_string_replace (mask, dir_separator, "\01"); mask3 = weechat_string_replace (mask2, dir_separator, "\01");
if (!mask2) if (!mask3)
goto end; goto end;


mask_decoded = weechat_buffer_string_replace_local_var (buffer, mask2); mask4 = weechat_buffer_string_replace_local_var (buffer, mask3);
if (!mask_decoded) if (!mask4)
goto end; goto end;


mask_decoded2 = weechat_string_replace (mask_decoded, mask5 = weechat_string_replace (mask4,
dir_separator, dir_separator,
weechat_config_string (logger_config_file_replacement_char)); weechat_config_string (logger_config_file_replacement_char));
if (!mask_decoded2) if (!mask5)
goto end; goto end;


#ifdef __CYGWIN__ #ifdef __CYGWIN__
mask_decoded3 = weechat_string_replace (mask_decoded2, "\\", mask6 = weechat_string_replace (mask5, "\\",
weechat_config_string (logger_config_file_replacement_char)); weechat_config_string (logger_config_file_replacement_char));
#else #else
mask_decoded3 = strdup (mask_decoded2); mask6 = strdup (mask5);
#endif /* __CYGWIN__ */ #endif /* __CYGWIN__ */
if (!mask_decoded3) if (!mask6)
goto end; goto end;


/* restore directory separator */ /* restore directory separator */
mask_decoded4 = weechat_string_replace (mask_decoded3, mask7 = weechat_string_replace (mask6,
"\01", dir_separator); "\01", dir_separator);
if (!mask_decoded4) if (!mask7)
goto end;

/* replace date/time specifiers in mask */
length = strlen (mask_decoded4) + 256 + 1;
mask_decoded5 = malloc (length);
if (!mask_decoded5)
goto end; goto end;
seconds = time (NULL);
date_tmp = localtime (&seconds);
mask_decoded5[0] = '\0';
strftime (mask_decoded5, length - 1, mask_decoded4, date_tmp);


/* convert to lower case? */ /* convert to lower case? */
if (weechat_config_boolean (logger_config_file_name_lower_case)) if (weechat_config_boolean (logger_config_file_name_lower_case))
weechat_string_tolower (mask_decoded5); weechat_string_tolower (mask7);


if (weechat_logger_plugin->debug) if (weechat_logger_plugin->debug)
{ {
Expand All @@ -368,22 +368,22 @@ logger_get_mask_expanded (struct t_gui_buffer *buffer, const char *mask)
"decoded mask = \"%s\"", "decoded mask = \"%s\"",
LOGGER_PLUGIN_NAME, LOGGER_PLUGIN_NAME,
weechat_buffer_get_string (buffer, "name"), weechat_buffer_get_string (buffer, "name"),
mask, mask_decoded5); mask, mask7);
} }


end: end:
if (mask2) if (mask2)
free (mask2); free (mask2);
if (mask_decoded) if (mask3)
free (mask_decoded); free (mask3);
if (mask_decoded2) if (mask4)
free (mask_decoded2); free (mask4);
if (mask_decoded3) if (mask5)
free (mask_decoded3); free (mask5);
if (mask_decoded4) if (mask6)
free (mask_decoded4); free (mask6);


return mask_decoded5; return mask7;
} }


/* /*
Expand Down

0 comments on commit f105c6f

Please sign in to comment.