libspnav: init at 0.2.3
This commit is contained in:
parent
1c24ff1f1f
commit
373c6ad893
|
@ -0,0 +1,47 @@
|
|||
diff --git a/spnav.c b/spnav.c
|
||||
index f9e10f8..27149f7 100644
|
||||
--- a/spnav.c
|
||||
+++ b/spnav.c
|
||||
@@ -36,7 +36,7 @@ OF SUCH DAMAGE.
|
||||
#include <sys/select.h>
|
||||
#include "spnav.h"
|
||||
|
||||
-#define SPNAV_SOCK_PATH "/var/run/spnav.sock"
|
||||
+#define DEFAULT_SPNAV_SOCK_PATH "/run/spnav.sock"
|
||||
|
||||
#ifdef USE_X11
|
||||
#include <X11/Xlib.h>
|
||||
@@ -70,6 +70,24 @@ static struct event_node *ev_queue, *ev_queue_tail;
|
||||
/* AF_UNIX socket used for alternative communication with daemon */
|
||||
static int sock = -1;
|
||||
|
||||
+static char *spath = NULL;
|
||||
+
|
||||
+static char *socket_path()
|
||||
+{
|
||||
+ char *xdg_runtime_dir;
|
||||
+ if((xdg_runtime_dir = getenv("XDG_RUNTIME_DIR"))) {
|
||||
+ if ( spath == NULL ) {
|
||||
+ spath = malloc(strlen(xdg_runtime_dir) + strlen("/spnav.sock") + 1);
|
||||
+ if ( spath != NULL ) {
|
||||
+ sprintf(spath, sizeof(spath), "%s/spnav.sock", xdg_runtime_dir);
|
||||
+ }
|
||||
+ }
|
||||
+ if(access(spath, F_OK)){
|
||||
+ return spath;
|
||||
+ }
|
||||
+ }
|
||||
+ return DEFAULT_SPNAV_SOCK_PATH;
|
||||
+}
|
||||
|
||||
int spnav_open(void)
|
||||
{
|
||||
@@ -92,7 +110,7 @@ int spnav_open(void)
|
||||
|
||||
memset(&addr, 0, sizeof addr);
|
||||
addr.sun_family = AF_UNIX;
|
||||
- strncpy(addr.sun_path, SPNAV_SOCK_PATH, sizeof(addr.sun_path));
|
||||
+ strncpy(addr.sun_path, socket_path(), sizeof(addr.sun_path));
|
||||
|
||||
|
||||
if(connect(s, (struct sockaddr*)&addr, sizeof addr) == -1) {
|
36
pkgs/development/libraries/libspnav/default.nix
Normal file
36
pkgs/development/libraries/libspnav/default.nix
Normal file
|
@ -0,0 +1,36 @@
|
|||
{ stdenv, lib, fetchFromGitHub, libX11}:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
version = "0.2.3";
|
||||
pname = "libspnav";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "FreeSpacenav";
|
||||
repo = "libspnav";
|
||||
rev = "${pname}-${version}";
|
||||
sha256 = "098h1jhlj87axpza5zgy58prp0zn94wyrbch6x0s7q4mzh7dc8ba";
|
||||
};
|
||||
|
||||
buildInputs = [ libX11 ];
|
||||
|
||||
patches = [
|
||||
# Changes the socket path from /run/spnav.sock to $XDG_RUNTIME_DIR/spnav.sock
|
||||
# to allow for a user service
|
||||
./configure-socket-path.patch
|
||||
];
|
||||
|
||||
configureFlags = [ "--disable-debug"];
|
||||
|
||||
preInstall = ''
|
||||
mkdir -p $out/{lib,include}
|
||||
'';
|
||||
|
||||
meta = with lib; {
|
||||
homepage = "http://spacenav.sourceforge.net/";
|
||||
description = "Device driver and SDK for 3Dconnexion 3D input devices";
|
||||
longDescription = "A free, compatible alternative, to the proprietary 3Dconnexion device driver and SDK, for their 3D input devices (called 'space navigator', 'space pilot', 'space traveller', etc)";
|
||||
license = licenses.bsd3;
|
||||
platforms = platforms.unix;
|
||||
maintainers = with maintainers; [ sohalt ];
|
||||
};
|
||||
}
|
|
@ -15061,6 +15061,8 @@ in
|
|||
|
||||
libspectre = callPackage ../development/libraries/libspectre { };
|
||||
|
||||
libspnav = callPackage ../development/libraries/libspnav { };
|
||||
|
||||
libgsf = callPackage ../development/libraries/libgsf { };
|
||||
|
||||
# GNU libc provides libiconv so systems with glibc don't need to build
|
||||
|
|
Loading…
Reference in a new issue