summaryrefslogtreecommitdiff
path: root/src/fruits/cmv
diff options
context:
space:
mode:
authorAndrew Opalach <andrew@akon.city> 2025-11-22 14:22:11 -0500
committerAndrew Opalach <andrew@akon.city> 2025-11-22 14:22:11 -0500
commit0d6d13425015d78606232874498327cabcb0e4e2 (patch)
tree34682f9e9602117dac6db5f7de8c67d1207135c4 /src/fruits/cmv
parentd4ea79a8622b6bf03555f186aeb1f5fa9283721f (diff)
downloadcamu-0d6d13425015d78606232874498327cabcb0e4e2.tar.gz
camu-0d6d13425015d78606232874498327cabcb0e4e2.tar.bz2
camu-0d6d13425015d78606232874498327cabcb0e4e2.zip
Fixes and cleanup around synced gapless
Signed-off-by: Andrew Opalach <andrew@akon.city>
Diffstat (limited to 'src/fruits/cmv')
-rw-r--r--src/fruits/cmv/cmv.c34
1 files changed, 22 insertions, 12 deletions
diff --git a/src/fruits/cmv/cmv.c b/src/fruits/cmv/cmv.c
index 1fce028..fe0fbd6 100644
--- a/src/fruits/cmv/cmv.c
+++ b/src/fruits/cmv/cmv.c
@@ -16,7 +16,9 @@
#include "../common.h"
#if !defined CAMU_SINK_ONLY && !defined NAUNET_ON_WINDOWS
-static str CMV_UNIX_PATH = al_str_c("/tmp/cmv_sock");
+// https://unix.stackexchange.com/a/16884
+#define PID_MAX_STR 7 // 0x400000 (2^22).
+static str CMV_UNIX_PATH = al_str_c("/tmp/cmv_sock_");
#endif
struct cmv {
@@ -66,7 +68,7 @@ static bool parse_exe_name_params(str *exe_name, str *addr, struct lia_prefs *pr
index = al_str_find(&sub, '-');
if (index == AL_STR_NO_POS) goto def;
- *addr = al_str_substr(&sub, 0, index);
+ al_str_clone(addr, &al_str_substr(&sub, 0, index));
for (;;) {
sub = al_str_substr(&sub, index + 1, sub.length);
@@ -118,12 +120,10 @@ s32 window_system_main(u32 argc, str *argv, void *extra)
camu_ff_common_init();
#endif
- str home = al_str_null();
char *home_env = getenv("HOME");
if (home_env) {
- al_str_from(&home, home_env);
str color_palette;
- al_str_clone(&color_palette, &home);
+ al_str_from(&color_palette, home_env);
al_str_cat(&color_palette, &al_str_c("/.config/colors.json"));
camu_color_palette_init(&color_palette);
al_str_free(&color_palette);
@@ -145,16 +145,22 @@ s32 window_system_main(u32 argc, str *argv, void *extra)
#ifndef CAMU_SINK_ONLY
if (local) {
#ifdef NAUNET_ON_WINDOWS
- type = NNWT_SOCKET_TCP; addr = CAMU_LOCALHOST;
+ type = NNWT_SOCKET_TCP;;
+ al_str_clone(&addr, &CAMU_LOCALHOST);
#else
- type = NNWT_SOCKET_UNIX; addr = CMV_UNIX_PATH;
+ type = NNWT_SOCKET_UNIX;
+ al_str_clone(&addr, &CMV_UNIX_PATH);
+ char pid_str[PID_MAX_STR];
+ al_snprintf(pid_str, PID_MAX_STR, "%x", getpid());
+ al_str_cat(&addr, &al_str_cs(pid_str));
#endif
} else {
type = CAMU_TEST_TYPE;
- addr = CAMU_TEST_ADDR;
+ al_str_clone(&addr, &CAMU_TEST_ADDR);
}
#else
- type = NNWT_SOCKET_TCP; addr = CAMU_TEST_ADDR;
+ type = NNWT_SOCKET_TCP;
+ al_str_clone(&addr, &CAMU_TEST_ADDR);
#endif
} else {
type = NNWT_SOCKET_TCP;
@@ -189,6 +195,8 @@ s32 window_system_main(u32 argc, str *argv, void *extra)
return EXIT_FAILURE;
}
+ al_str_free(&addr);
+
#ifndef CAMU_SINK_ONLY
if (local) {
for (u32 i = 1; i < argc; i++) {
@@ -214,7 +222,6 @@ s32 window_system_main(u32 argc, str *argv, void *extra)
camu_server_free(&c.server);
#endif
nn_event_loop_destroy(&c.loop);
- al_str_free(&home);
return EXIT_SUCCESS;
}
@@ -238,7 +245,10 @@ s32 wmain(s32 argc, wchar_t **argv)
s32 main(s32 argc, char *argv[])
#endif
{
- if (!nn_common_init("cmv_main")) return EXIT_FAILURE;
+ if (!nn_common_init("cmv_main")) {
+ return EXIT_FAILURE;
+ }
+
if (!stl_global_init(false)) {
nn_common_close();
return EXIT_FAILURE;
@@ -252,7 +262,7 @@ s32 main(s32 argc, char *argv[])
for (s32 i = 0; i < argc; i++) {
str arg;
#ifdef NAUNET_ON_WINDOWS
- if (!al_str_from_wstr(&arg, &al_wstr_cr(argv[i]))) {
+ if (!al_str_from_wstr(&arg, &al_wstr_cr(argv[i]))) { // This is so broken.
log_error("Failed to convert argument #%i from a wide string.", i);
continue;
}