diff --git a/pkgs/misc/drivers/spacenavd/configure-cfgfile-path.patch b/pkgs/misc/drivers/spacenavd/configure-cfgfile-path.patch new file mode 100644 index 00000000000..268282e96ea --- /dev/null +++ b/pkgs/misc/drivers/spacenavd/configure-cfgfile-path.patch @@ -0,0 +1,63 @@ +diff --git a/src/spnavd.c b/src/spnavd.c +index 2d4eca6..a5227ed 100644 +--- a/src/spnavd.c ++++ b/src/spnavd.c +@@ -27,6 +27,8 @@ along with this program. If not, see . + #include + #include + #include ++#include ++#include + #include "spnavd.h" + #include "logger.h" + #include "dev.h" +@@ -47,13 +49,39 @@ static void handle_events(fd_set *rset); + static void sig_handler(int s); + static char *fix_path(char *str); + +-static char *cfgfile = DEF_CFGFILE; ++static char* config_path; ++char* cfg_path() ++{ ++ char* buf; ++ if((buf = getenv("XDG_CONFIG_HOME"))) { ++ if(config_path == NULL) { ++ config_path = malloc(strlen(buf) + strlen("/spnavrc") + 1); ++ if ( config_path != NULL) { ++ sprintf(config_path, "%s/spnavrc", buf); ++ } ++ }; ++ return config_path; ++ } else { ++ if (!(buf = getenv("HOME"))) { ++ struct passwd *pw = getpwuid(getuid()); ++ buf = pw->pw_dir; ++ } ++ config_path = malloc(strlen(buf) + strlen("/.config/spnavrc") + 1); ++ if ( config_path != NULL) { ++ sprintf(config_path, "%s/.config/spnavrc", buf); ++ } ++ return config_path; ++ } ++} ++ ++static char *cfgfile = NULL; + static char *logfile = DEF_LOGFILE; + static char *pidpath = NULL; + + int main(int argc, char **argv) + { + int i, pid, ret, become_daemon = 1; ++ cfgfile = cfg_path(); + + for(i=1; i: config file path (default: " DEF_CFGFILE ")\n"); ++ printf(" -c : config file path (default: %s)\n", cfg_path()); + printf(" -l |syslog: log file path or log to syslog (default: " DEF_LOGFILE ")\n"); + printf(" -v: verbose output\n"); + printf(" -V,-version: print version number and exit\n"); diff --git a/pkgs/misc/drivers/spacenavd/default.nix b/pkgs/misc/drivers/spacenavd/default.nix index feb00c8b399..5cc1b460133 100644 --- a/pkgs/misc/drivers/spacenavd/default.nix +++ b/pkgs/misc/drivers/spacenavd/default.nix @@ -23,6 +23,9 @@ stdenv.mkDerivation rec { # Changes the pidfile path from /run/spnavd.pid to $XDG_RUNTIME_DIR/spnavd.pid # to allow for a user service ./configure-pidfile-path.patch + # Changes the config file path from /etc/spnavrc to $XDG_CONFIG_HOME/spnavrc or $HOME/.config/spnavrc + # to allow for a user service + ./configure-cfgfile-path.patch ]; buildInputs = [ libX11 ]