summaryrefslogtreecommitdiff
path: root/pkgs/tmux-lift/unlift.c
diff options
context:
space:
mode:
Diffstat (limited to 'pkgs/tmux-lift/unlift.c')
-rw-r--r--pkgs/tmux-lift/unlift.c41
1 files changed, 41 insertions, 0 deletions
diff --git a/pkgs/tmux-lift/unlift.c b/pkgs/tmux-lift/unlift.c
new file mode 100644
index 0000000..d8d3a72
--- /dev/null
+++ b/pkgs/tmux-lift/unlift.c
@@ -0,0 +1,41 @@
+#include <errno.h>
+#include <stdio.h>
+#include <string.h>
+#include <stdlib.h>
+#include <signal.h>
+#include <unistd.h>
+#include <sys/types.h>
+
+
+#include "lift.h"
+
+
+int main
+(
+ int argc,
+ const char* argv[]
+)
+{
+ char* formatted_pid = getenv( LIFT_PID_ENV );
+ if( formatted_pid == NULL )
+ {
+ fprintf( stderr, "%s: variable " LIFT_PID_ENV " is not set\n", argv[ 0 ] );
+ return EXIT_FAILURE;
+ }
+
+ char* formatted_end;
+ long pid = strtol( formatted_pid, &formatted_end, 10 );
+ if( *formatted_pid == '\0' || *formatted_end != '\0' )
+ {
+ fprintf( stderr, "%s: invalid value for " LIFT_PID_ENV ": %s\n", argv[ 0 ], formatted_pid );
+ return EXIT_FAILURE;
+ }
+
+ if( kill( (pid_t)pid, SIGTERM ) < 0 )
+ {
+ fprintf( stderr, "kill(%ld): %s\n", pid, strerror( errno ) );
+ return EXIT_FAILURE;
+ }
+
+ return EXIT_SUCCESS;
+}