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;
 }
 

Reply via email to