Okay, I take a different approach and try to workaround this problem in function "make_server_name":
diff --git a/src/lib/sockio-c.c b/src/lib/sockio-c.c index 30e0eba5..a168129f 100644 --- a/src/lib/sockio-c.c +++ b/src/lib/sockio-c.c @@ -857,9 +857,21 @@ int make_server_name(char *name,char * base) { + /* Try to fit the contents of 'name' into char[14], + which is Sock::addr::u_addr::sa_data. + Normally 'base' is "/tmp/.x", so that leaves room + for 6 chars to put 'spad_server_number'/'SPADNUM', + which is the PID of sman. So use hexadecimal when + the PID is over 10^6. + */ char *num; + int pid; if (spad_server_number != -1) { - sprintf(name, "%s%d", base, spad_server_number); + if (spad_server_number < 1000000){ + sprintf(name, "%s%d", base, spad_server_number); + } else { + sprintf(name, "%s%x", base, spad_server_number); + } return 0; } num = getenv("SPADNUM"); @@ -869,7 +881,12 @@ make_server_name(char *name,char * base) */ return -1; } - sprintf(name, "%s%s", base, num); + pid = atoi(num); + if (pid < 1000000) { + sprintf(name, "%s%s", base, num); + } else { + sprintf(name, "%s%x", base, pid); + } return 0; } On 8/19/20 4:15 PM, oldk1331 wrote: > On 8/10/20 11:38 AM, oldk1331 wrote: >> Ok, I'll try to test sockaddr_un on mingw32 >> and mingw64 then. > > I tested in mingw64 on windows, apparently > we use winsock2.h and there's no direct > support for sockaddr_un. > > Let me explore other options. > > - Qian > -- You received this message because you are subscribed to the Google Groups "FriCAS - computer algebra system" group. To unsubscribe from this group and stop receiving emails from it, send an email to fricas-devel+unsubscr...@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/fricas-devel/82f035d2-7280-dbaa-abe2-07dbe0d625a5%40gmail.com.
diff --git a/src/lib/sockio-c.c b/src/lib/sockio-c.c index 30e0eba5..a168129f 100644 --- a/src/lib/sockio-c.c +++ b/src/lib/sockio-c.c @@ -857,9 +857,21 @@ close_socket(fricas_socket socket_num, char *name) int make_server_name(char *name,char * base) { + /* Try to fit the contents of 'name' into char[14], + which is Sock::addr::u_addr::sa_data. + Normally 'base' is "/tmp/.x", so that leaves room + for 6 chars to put 'spad_server_number'/'SPADNUM', + which is the PID of sman. So use hexadecimal when + the PID is over 10^6. + */ char *num; + int pid; if (spad_server_number != -1) { - sprintf(name, "%s%d", base, spad_server_number); + if (spad_server_number < 1000000){ + sprintf(name, "%s%d", base, spad_server_number); + } else { + sprintf(name, "%s%x", base, spad_server_number); + } return 0; } num = getenv("SPADNUM"); @@ -869,7 +881,12 @@ make_server_name(char *name,char * base) */ return -1; } - sprintf(name, "%s%s", base, num); + pid = atoi(num); + if (pid < 1000000) { + sprintf(name, "%s%s", base, num); + } else { + sprintf(name, "%s%x", base, pid); + } return 0; }