Browse Source

Add support to unix sockets in snac_init().

default 8 months ago
parent
commit
8a6c6134ef
1 changed files with 20 additions and 8 deletions
  1. 20 8
      utils.c

+ 20 - 8
utils.c

@@ -131,21 +131,33 @@ int snac_init(const char *basedir)
     xs *layout = xs_number_new(disk_layout);
     srv_config = xs_dict_set(srv_config, "layout", layout);
 
-    printf("Network address [%s]: ", xs_dict_get(srv_config, "address")); fflush(stdout);
+    int is_unix_socket = 0;
+
+    printf("Network address or full path to unix socket [%s]: ", xs_dict_get(srv_config, "address")); fflush(stdout);
     {
         xs *i = xs_strip_i(xs_readline(stdin));
-        if (*i)
+        if (*i) {
             srv_config = xs_dict_set(srv_config, "address", i);
+
+            if (*i == '/')
+                is_unix_socket = 1;
+        }
     }
 
-    printf("Network port [%d]: ", (int)xs_number_get(xs_dict_get(srv_config, "port"))); fflush(stdout);
-    {
-        xs *i = xs_strip_i(xs_readline(stdin));
-        if (*i) {
-            xs *n = xs_number_new(atoi(i));
-            srv_config = xs_dict_set(srv_config, "port", n);
+    if (!is_unix_socket) {
+        printf("Network port [%d]: ", (int)xs_number_get(xs_dict_get(srv_config, "port"))); fflush(stdout);
+        {
+            xs *i = xs_strip_i(xs_readline(stdin));
+            if (*i) {
+                xs *n = xs_number_new(atoi(i));
+                srv_config = xs_dict_set(srv_config, "port", n);
+            }
         }
     }
+    else {
+        xs *n = xs_number_new(0);
+        srv_config = xs_dict_set(srv_config, "port", n);
+    }
 
     printf("Host name: "); fflush(stdout);
     {