mirror of
https://github.com/NikitaIvanovV/ctpv.git
synced 2024-11-24 13:53:07 +01:00
Set $fifo variable when ctpv is started
This commit is contained in:
parent
ea3a852acc
commit
6717a5f62e
2
clear.sh
2
clear.sh
@ -1,3 +1,3 @@
|
||||
setup_fifo "$1" 1
|
||||
setup_fifo 1
|
||||
|
||||
printf '{"action": "remove", "identifier": "preview"}\n' > "$fifo"
|
||||
|
2
end.sh
2
end.sh
@ -1,4 +1,4 @@
|
||||
setup_fifo "$1" 1
|
||||
setup_fifo 1
|
||||
|
||||
# tell ctpv server to exit
|
||||
printf '\0' > "$fifo"
|
||||
|
12
helpers.sh
12
helpers.sh
@ -1,3 +1,7 @@
|
||||
echo_err() {
|
||||
echo "$@" >&2
|
||||
}
|
||||
|
||||
fifo_open() {
|
||||
# https://unix.stackexchange.com/a/522940/183147
|
||||
dd oflag=nonblock conv=notrunc,nocreat count=0 of="$1" \
|
||||
@ -5,8 +9,12 @@ fifo_open() {
|
||||
}
|
||||
|
||||
setup_fifo() {
|
||||
fifo="$(printf '/tmp/ctpvfifo.%s' "${1:-$id}")"
|
||||
exit_code="${2:-127}"
|
||||
if [ -z "$fifo" ]; then
|
||||
echo_err '$fifo is empty!'
|
||||
exit 1
|
||||
fi
|
||||
|
||||
exit_code="${1:-127}"
|
||||
[ -e "$fifo" ] || exit "$exit_code"
|
||||
fifo_open "$fifo" || exit "$exit_code"
|
||||
}
|
||||
|
@ -4,6 +4,7 @@
|
||||
#include "utils.h"
|
||||
#include "error.h"
|
||||
#include "shell.h"
|
||||
#include "server.h"
|
||||
#include "preview.h"
|
||||
|
||||
#define FAILED_PREVIEW_EC NOTEXIST_EC
|
||||
@ -157,6 +158,9 @@ static int run(Preview *p, int *exitcode)
|
||||
|
||||
int run_preview(const char *ext, const char *mimetype, PreviewArgs *pa)
|
||||
{
|
||||
if (pa->id || (pa->id = getenv("id")))
|
||||
ERRCHK_RET_OK(server_set_fifo_var(pa->id));
|
||||
|
||||
SET_PENV("ctpv", pa->ctpv);
|
||||
SET_PENV("f", pa->f);
|
||||
SET_PENV("w", pa->w);
|
||||
|
24
server.c
24
server.c
@ -11,6 +11,8 @@
|
||||
#include "shell.h"
|
||||
#include "gen/server.h"
|
||||
|
||||
#define FIFO_FILENAME_SIZE 256
|
||||
|
||||
static pid_t ueberzug_pid;
|
||||
|
||||
static void kill_ueberzug(void)
|
||||
@ -99,6 +101,11 @@ static int check_ueberzug(int *exitcode)
|
||||
return spawn(args, NULL, exitcode, NULL, NULL);
|
||||
}
|
||||
|
||||
static void get_fifo_name(char *buf, size_t len, const char *id_s)
|
||||
{
|
||||
snprintf(buf, len-1, "/tmp/ctpvfifo.%s", id_s);
|
||||
}
|
||||
|
||||
int server_listen(char const *id_s)
|
||||
{
|
||||
int ret = OK;
|
||||
@ -111,8 +118,8 @@ int server_listen(char const *id_s)
|
||||
goto exit;
|
||||
}
|
||||
|
||||
char fifo[256];
|
||||
snprintf(fifo, LEN(fifo)-1, "/tmp/ctpvfifo.%s", id_s);
|
||||
char fifo[FIFO_FILENAME_SIZE];
|
||||
get_fifo_name(fifo, LEN(fifo), id_s);
|
||||
|
||||
ERRCHK_GOTO(mkfifo(fifo, 0600) == -1 && errno != EEXIST, ret, exit,
|
||||
FUNCFAILED("mkfifo"), ERRNOS);
|
||||
@ -148,12 +155,25 @@ cleanup:
|
||||
return ret;
|
||||
}
|
||||
|
||||
int server_set_fifo_var(const char *id_s)
|
||||
{
|
||||
char fifo[FIFO_FILENAME_SIZE];
|
||||
get_fifo_name(fifo, LEN(fifo), id_s);
|
||||
ERRCHK_RET(setenv("fifo", fifo, 1) != 0, FUNCFAILED("setenv"), ERRNOS);
|
||||
|
||||
return OK;
|
||||
}
|
||||
|
||||
int server_clear(const char *id_s)
|
||||
{
|
||||
ERRCHK_RET_OK(server_set_fifo_var(id_s));
|
||||
|
||||
return run_script(scr_clear_sh, LEN(scr_clear_sh)-1, (char *)id_s);
|
||||
}
|
||||
|
||||
int server_end(const char *id_s)
|
||||
{
|
||||
ERRCHK_RET_OK(server_set_fifo_var(id_s));
|
||||
|
||||
return run_script(scr_end_sh, LEN(scr_end_sh)-1, (char *)id_s);
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user