--- a/libpurple/plugins/filectl.c Fri Feb 15 01:19:26 2019 -0500 +++ b/libpurple/plugins/filectl.c Thu Feb 21 23:13:34 2019 -0500 @@ -40,12 +40,12 @@ run_commands() { GStatBuf finfo; - char filename[MAXPATHLEN]; + gchar *filename; char buffer[1024]; char *command, *arg1, *arg2; FILE *file; - snprintf(filename, MAXPATHLEN, "%s" G_DIR_SEPARATOR_S "control", purple_user_dir()); + filename = g_build_filename(purple_config_dir(), "control", NULL); file = g_fopen(filename, "r+"); while (fgets(buffer, sizeof(buffer), file)) { @@ -110,9 +110,10 @@ fclose(file); - if (g_stat(filename, &finfo) != 0) - return; - mtime = finfo.st_mtime; + if (g_stat(filename, &finfo) == 0) + mtime = finfo.st_mtime; + + g_free(filename); } /** @@ -123,12 +124,14 @@ { /* most of this was taken from Bash v2.04 by the FSF */ GStatBuf finfo; - char filename[MAXPATHLEN]; + gchar *filename; - snprintf(filename, MAXPATHLEN, "%s" G_DIR_SEPARATOR_S "control", purple_user_dir()); + filename = g_build_filename(purple_config_dir(), "control", NULL); if ((g_stat(filename, &finfo) == 0) && (finfo.st_size > 0)) run_commands(); + + g_free(filename); } /** @@ -139,9 +142,9 @@ { /* most of this was taken from Bash v2.04 by the FSF */ GStatBuf finfo; - char filename[MAXPATHLEN]; + gchar *filename; - snprintf(filename, MAXPATHLEN, "%s" G_DIR_SEPARATOR_S "control", purple_user_dir()); + filename = g_build_filename(purple_config_dir(), "control", NULL); if ((g_stat(filename, &finfo) == 0) && (finfo.st_size > 0)) { @@ -151,6 +154,8 @@ } } + g_free(filename); + return TRUE; }