Use g_get_user_config_dir

Instead of opencoding rely on glib which handles XDG_CONFIG_HOME and
such. This also prevents xdg_config from leaking.
This commit is contained in:
Guido Günther 2021-04-26 17:57:50 +02:00 committed by Martijn Braam
parent a3c8b280f2
commit 5bceb2e931
No known key found for this signature in database
GPG Key ID: C4280ACB000B060F
2 changed files with 3 additions and 25 deletions

View File

@ -3,7 +3,6 @@
#include "ini.h"
#include "config.h"
#include "matrix.h"
#include <wordexp.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
@ -21,18 +20,8 @@ static bool
find_config(char *conffile)
{
char buf[512];
char *xdg_config_home;
wordexp_t exp_result;
FILE *fp;
// Resolve XDG stuff
if ((xdg_config_home = getenv("XDG_CONFIG_HOME")) == NULL) {
xdg_config_home = "~/.config";
}
wordexp(xdg_config_home, &exp_result, 0);
xdg_config_home = strdup(exp_result.we_wordv[0]);
wordfree(&exp_result);
if (access("/proc/device-tree/compatible", F_OK) != -1) {
// Reads to compatible string of the current device tree, looks like:
// pine64,pinephone-1.2\0allwinner,sun50i-a64\0
@ -48,7 +37,7 @@ find_config(char *conffile)
}
// Check for a config file in XDG_CONFIG_HOME
sprintf(conffile, "%s/megapixels/config/%s.ini", xdg_config_home,
sprintf(conffile, "%s/megapixels/config/%s.ini", g_get_user_config_dir (),
buf);
if (access(conffile, F_OK) != -1) {
printf("Found config file at %s\n", conffile);

View File

@ -8,7 +8,6 @@
#include <tiffio.h>
#include <assert.h>
#include <math.h>
#include <wordexp.h>
#include <gtk/gtk.h>
#define TIFFTAG_FORWARDMATRIX1 50964
@ -60,19 +59,9 @@ register_custom_tiff_tags(TIFF *tif)
static bool
find_processor(char *script)
{
char *xdg_config_home;
char filename[] = "postprocess.sh";
wordexp_t exp_result;
// Resolve XDG stuff
if ((xdg_config_home = getenv("XDG_CONFIG_HOME")) == NULL) {
xdg_config_home = "~/.config";
}
wordexp(xdg_config_home, &exp_result, 0);
xdg_config_home = strdup(exp_result.we_wordv[0]);
wordfree(&exp_result);
// Check postprocess.h in the current working directory
// Check postprocess.sh in the current working directory
sprintf(script, "%s", filename);
if (access(script, F_OK) != -1) {
sprintf(script, "./%s", filename);
@ -81,7 +70,7 @@ find_processor(char *script)
}
// Check for a script in XDG_CONFIG_HOME
sprintf(script, "%s/megapixels/%s", xdg_config_home, filename);
sprintf(script, "%s/megapixels/%s", g_get_user_config_dir (), filename);
if (access(script, F_OK) != -1) {
printf("Found postprocessor script at %s\n", script);
return true;