about summary refs log tree commit diff stats
diff options
context:
space:
mode:
authorMichael Vetter <jubalh@iodoru.org>2020-06-12 16:12:21 +0200
committerMichael Vetter <jubalh@iodoru.org>2020-06-12 16:12:21 +0200
commit74e061165a808883c5b17ff356bde60fa335cbda (patch)
treef0cb35ac30ee9fb90a00ba0e93ec4e84326979bc
parentf1141932fc45fa4bcc87984241b524381c0ab2b3 (diff)
downloadprofani-tty-74e061165a808883c5b17ff356bde60fa335cbda.tar.gz
Define POSIX macro to have strdup
https://github.com/profanity-im/profanity/commit/98c38dc6d6d29333c63f80327774f094610d8602
sets C99 as standard.

strdup() is not part of C99.

For now set `-D_POSIX_C_SOURCE=200809L` macro to have strdup() in C99.
Using `gnu99` instead would be another option.

We should take more care to use glib functions whenever possible.

Regards https://github.com/profanity-im/profanity/issues/1357
-rw-r--r--configure.ac2
-rw-r--r--src/config/files.c14
-rw-r--r--src/config/files.h8
-rw-r--r--src/config/preferences.c6
-rw-r--r--src/config/theme.c9
-rw-r--r--src/log.c4
-rw-r--r--src/ui/inputwin.c4
-rw-r--r--src/ui/tray.c6
8 files changed, 28 insertions, 25 deletions
diff --git a/configure.ac b/configure.ac
index 63424981..648837b0 100644
--- a/configure.ac
+++ b/configure.ac
@@ -354,7 +354,7 @@ AC_CHECK_HEADERS([ncursesw/ncurses.h], [], [])
 AC_CHECK_HEADERS([ncurses.h], [], [])
 
 ### Default parameters
-AM_CFLAGS="-Wall -Wno-deprecated-declarations -std=c99"
+AM_CFLAGS="-Wall -Wno-deprecated-declarations -std=c99 -D_POSIX_C_SOURCE=200809L"
 AS_IF([test "x$PACKAGE_STATUS" = xdevelopment],
     [AM_CFLAGS="$AM_CFLAGS -Wunused -Werror"])
 AS_IF([test "x$PLATFORM" = xosx],
diff --git a/src/config/files.c b/src/config/files.c
index ff612d64..da2b66bb 100644
--- a/src/config/files.c
+++ b/src/config/files.c
@@ -91,7 +91,7 @@ files_create_directories(void)
     g_free(xdg_data);
 }
 
-char*
+gchar*
 files_get_inputrc_file(void)
 {
     gchar *xdg_config = _files_get_xdg_config_home();
@@ -101,7 +101,7 @@ files_get_inputrc_file(void)
     g_string_append(inputrc_file, "/profanity/inputrc");
 
     if (g_file_test(inputrc_file->str, G_FILE_TEST_IS_REGULAR)) {
-        char *result = strdup(inputrc_file->str);
+        gchar *result = g_strdup(inputrc_file->str);
         g_string_free(inputrc_file, TRUE);
 
         return result;
@@ -131,7 +131,7 @@ files_get_log_file(char *log_file)
 
     g_string_append(logfile, ".log");
 
-    char *result = strdup(logfile->str);
+    char *result = g_strdup(logfile->str);
 
     free(xdg_data);
     g_string_free(logfile, TRUE);
@@ -139,28 +139,28 @@ files_get_log_file(char *log_file)
     return result;
 }
 
-char*
+gchar*
 files_get_config_path(char *config_base)
 {
     gchar *xdg_config = _files_get_xdg_config_home();
     GString *file_str = g_string_new(xdg_config);
     g_string_append(file_str, "/profanity/");
     g_string_append(file_str, config_base);
-    char *result = strdup(file_str->str);
+    gchar *result = g_strdup(file_str->str);
     g_free(xdg_config);
     g_string_free(file_str, TRUE);
 
     return result;
 }
 
-char*
+gchar*
 files_get_data_path(char *data_base)
 {
     gchar *xdg_data = _files_get_xdg_data_home();
     GString *file_str = g_string_new(xdg_data);
     g_string_append(file_str, "/profanity/");
     g_string_append(file_str, data_base);
-    char *result = strdup(file_str->str);
+    gchar *result = g_strdup(file_str->str);
     g_free(xdg_data);
     g_string_free(file_str, TRUE);
 
diff --git a/src/config/files.h b/src/config/files.h
index 0abd7f6f..c87c4501 100644
--- a/src/config/files.h
+++ b/src/config/files.h
@@ -60,10 +60,10 @@
 
 void files_create_directories(void);
 
-char* files_get_config_path(char *config_base);
-char* files_get_data_path(char *data_base);
+gchar* files_get_config_path(char *config_base);
+gchar* files_get_data_path(char *data_base);
 
-char* files_get_log_file(char *log_file);
-char* files_get_inputrc_file(void);
+gchar* files_get_log_file(char *log_file);
+gchar* files_get_inputrc_file(void);
 
 #endif
diff --git a/src/config/preferences.c b/src/config/preferences.c
index 10e406b2..d1c1d900 100644
--- a/src/config/preferences.c
+++ b/src/config/preferences.c
@@ -67,7 +67,7 @@
 
 #define INPBLOCK_DEFAULT 1000
 
-static char *prefs_loc;
+static gchar *prefs_loc;
 static GKeyFile *prefs;
 gint log_maxsize = 0;
 
@@ -209,7 +209,7 @@ prefs_load(char *config_file)
     if (config_file == NULL) {
         prefs_loc = files_get_config_path(FILE_PROFRC);
     } else {
-        prefs_loc = strdup(config_file);
+        prefs_loc = g_strdup(config_file);
     }
 
     if (g_file_test(prefs_loc, G_FILE_TEST_EXISTS)) {
@@ -236,7 +236,7 @@ prefs_close(void)
     g_key_file_free(prefs);
     prefs = NULL;
 
-    free(prefs_loc);
+    g_free(prefs_loc);
     prefs_loc = NULL;
 }
 
diff --git a/src/config/theme.c b/src/config/theme.c
index 48fbd95b..e9726593 100644
--- a/src/config/theme.c
+++ b/src/config/theme.c
@@ -230,10 +230,11 @@ GSList*
 theme_list(void)
 {
     GSList *result = NULL;
-    char *themes_dir = files_get_config_path(DIR_THEMES);
+    gchar *themes_dir = files_get_config_path(DIR_THEMES);
 
     _theme_list_dir(themes_dir, &result);
-    free(themes_dir);
+    g_free(themes_dir);
+
 #ifdef THEMES_PATH
     _theme_list_dir(THEMES_PATH, &result);
 #endif
@@ -532,11 +533,11 @@ static GString*
 _theme_find(const char *const theme_name)
 {
     GString *path = NULL;
-    char *themes_dir = files_get_config_path(DIR_THEMES);
+    gchar *themes_dir = files_get_config_path(DIR_THEMES);
 
     if (themes_dir) {
         path = g_string_new(themes_dir);
-        free(themes_dir);
+        g_free(themes_dir);
         g_string_append(path, "/");
         g_string_append(path, theme_name);
         if (!g_file_test(path->str, G_FILE_TEST_EXISTS)) {
diff --git a/src/log.c b/src/log.c
index 3ca80750..30baef0f 100644
--- a/src/log.c
+++ b/src/log.c
@@ -149,13 +149,13 @@ log_init(log_level_t filter, char *log_file)
     level_filter = filter;
     tz = g_time_zone_new_local();
 
-    char *lf;
+    gchar *lf;
     lf = files_get_log_file(log_file);
 
     logp = fopen(lf, "a");
     g_chmod(lf, S_IRUSR | S_IWUSR);
     mainlogfile = g_string_new(lf);
-    free(lf);
+    g_free(lf);
 }
 
 void
diff --git a/src/ui/inputwin.c b/src/ui/inputwin.c
index f3383986..6a1a6f48 100644
--- a/src/ui/inputwin.c
+++ b/src/ui/inputwin.c
@@ -503,10 +503,10 @@ _inp_rl_startup_hook(void)
     rl_variable_bind("disable-completion", "on");
 
     // check for and load ~/.config/profanity/inputrc
-    char *inputrc = files_get_inputrc_file();
+    gchar *inputrc = files_get_inputrc_file();
     if (inputrc) {
         rl_read_init_file(inputrc);
-        free(inputrc);
+        g_free(inputrc);
     }
 
     return 0;
diff --git a/src/ui/tray.c b/src/ui/tray.c
index d327fc1c..6d79b379 100644
--- a/src/ui/tray.c
+++ b/src/ui/tray.c
@@ -79,13 +79,15 @@ _get_icons(void)
 
 #endif /* ICONS_PATH */
 
-    char *icons_dir_s = files_get_config_path(DIR_ICONS);
+    gchar *icons_dir_s = files_get_config_path(DIR_ICONS);
     icons_dir = g_string_new(icons_dir_s);
-    free(icons_dir_s);
+    g_free(icons_dir_s);
     GError *err = NULL;
+
     if (!g_file_test(icons_dir->str, G_FILE_TEST_IS_DIR)) {
         return;
     }
+
     GDir *dir = g_dir_open(icons_dir->str, 0, &err);
     if (dir) {
         GString *name = g_string_new(g_dir_read_name(dir));