Description: eliminate PATH_MAX usage
Origin: backport, https://github.com/merces/pev/commit/4f38c0922e1d4c84b95935e69bd37d523b98b926
Last-Update: 2021-10-14

--- a/src/config.c
+++ b/src/config.c
@@ -33,6 +33,10 @@
 	files in the program, then also delete it here.
 */
 
+#ifdef __GNU
+#define __GNU_SOURCE
+#endif
+
 #include "config.h"
 #include <libpe/utils.h>
 #include <libpe/error.h>
@@ -103,23 +107,25 @@
 }
 
 int pev_load_config(pev_config_t * const config) {
-	char buff[PATH_MAX];
+	char *buff;
 
 	int ret = pe_utils_is_file_readable(DEFAULT_CONFIG_FILENAME);
-	if (ret == LIBPE_E_OK) {
-		ret = _load_config_and_parse(config, DEFAULT_CONFIG_FILENAME, _load_config_cb);
-		if (ret < 0)
-			return ret;
-	}
+	if (ret == LIBPE_E_OK)
+		if ( ! _load_config_and_parse(config, DEFAULT_CONFIG_FILENAME, _load_config_cb) )
+			return -1;
+
+	if ( asprintf(&buff, "%s/" DEFAULT_CONFIG_PATH, pe_utils_get_homedir()) < 0 )
+		return -1;
 
-	snprintf(buff, sizeof(buff), "%s/%s", pe_utils_get_homedir(), DEFAULT_CONFIG_PATH);
 	ret = pe_utils_is_file_readable(buff);
+	if (ret == LIBPE_E_OK)
+		if ( ! _load_config_and_parse(config, buff, _load_config_cb) )
+		{
+			free( buff );
+			return -1;
+		}
 
-	if (ret == LIBPE_E_OK) {
-		ret = _load_config_and_parse(config, buff, _load_config_cb);
-		if (ret < 0)
-			return ret;
-	}
+	free( buff );
 
 	//
 	// Default values
