libustcomm: change char * to const char * where relevant
[ust.git] / libustcomm / ustcomm.c
index 2bd86eb728442c2713f74cd24a30766706d731c8..fd5e360e343a7e495330115d060396bdf4179365 100644 (file)
@@ -478,6 +478,38 @@ int ustcomm_connect_app(pid_t pid, struct ustcomm_connection *conn)
        return ustcomm_connect_path(path, conn, pid);
 }
 
+static int ensure_dir_exists(const char *dir)
+{
+       struct stat st;
+       int result;
+
+       if(!strcmp(dir, ""))
+               return -1;
+
+       result = stat(dir, &st);
+       if(result == -1 && errno != ENOENT) {
+               return -1;
+       }
+       else if(result == -1) {
+               /* ENOENT */
+               char buf[200];
+               int result;
+
+               result = snprintf(buf, sizeof(buf), "mkdir -p \"%s\"", dir);
+               if(result >= sizeof(buf)) {
+                       ERR("snprintf buffer overflow");
+                       return -1;
+               }
+               result = system(buf);
+               if(result != 0) {
+                       ERR("executing command %s", buf);
+                       return -1;
+               }
+       }
+
+       return 0;
+}
+
 /* Called by an application to initialize its server so daemons can
  * connect to it.
  */
@@ -493,6 +525,12 @@ int ustcomm_init_app(pid_t pid, struct ustcomm_app *handle)
                return -1;
        }
 
+       result = ensure_dir_exists(SOCK_DIR);
+       if(result == -1) {
+               ERR("Unable to create socket directory %s", SOCK_DIR);
+               return -1;
+       }
+
        handle->server.listen_fd = init_named_socket(name, &(handle->server.socketpath));
        if(handle->server.listen_fd < 0) {
                ERR("Error initializing named socket (%s). Check that directory exists and that it is writable.", name);
@@ -522,6 +560,15 @@ int ustcomm_init_ustd(struct ustcomm_ustd *handle, const char *sock_path)
                asprintf(&name, "%s", sock_path);
        }
        else {
+               int result;
+
+               /* Only check if socket dir exists if we are using the default directory */
+               result = ensure_dir_exists(SOCK_DIR);
+               if(result == -1) {
+                       ERR("Unable to create socket directory %s", SOCK_DIR);
+                       return -1;
+               }
+
                asprintf(&name, "%s/%s", SOCK_DIR, "ustd");
        }
 
@@ -565,7 +612,7 @@ void ustcomm_fini_app(struct ustcomm_app *handle)
        }
 }
 
-static char *find_tok(char *str)
+static const char *find_tok(const char *str)
 {
        while(*str == ' ') {
                str++;
@@ -577,7 +624,7 @@ static char *find_tok(char *str)
        return str;
 }
 
-static char *find_sep(char *str)
+static const char *find_sep(const char *str)
 {
        while(*str != ' ') {
                str++;
@@ -589,11 +636,11 @@ static char *find_sep(char *str)
        return str;
 }
 
-int nth_token_is(char *str, char *token, int tok_no)
+int nth_token_is(const char *str, const char *token, int tok_no)
 {
        int i;
-       char *start;
-       char *end;
+       const char *start;
+       const char *end;
 
        for(i=0; i<=tok_no; i++) {
                str = find_tok(str);
@@ -618,12 +665,12 @@ int nth_token_is(char *str, char *token, int tok_no)
        return 1;
 }
 
-char *nth_token(char *str, int tok_no)
+char *nth_token(const char *str, int tok_no)
 {
        static char *retval = NULL;
        int i;
-       char *start;
-       char *end;
+       const char *start;
+       const char *end;
 
        for(i=0; i<=tok_no; i++) {
                str = find_tok(str);
This page took 0.024034 seconds and 4 git commands to generate.