libusbgx: Move mkdir functions
authorStanislaw Wadas <s.wadas@samsung.com>
Wed, 6 Nov 2013 10:25:03 +0000 (11:25 +0100)
committerKrzysztof Opasiak <k.opasiak@samsung.com>
Tue, 22 Dec 2015 19:33:56 +0000 (20:33 +0100)
Call mkdir() function after successful memory allocation
and gadget function creation.

Signed-off-by: Stanislaw Wadas <s.wadas@samsung.com>
[Port from libusbg and update description]
Signed-off-by: Krzysztof Opasiak <k.opasiak@samsung.com>
src/usbg.c

index bbc5db5..a0be6f3 100644 (file)
@@ -497,12 +497,6 @@ struct gadget *usbg_create_gadget(struct state *s, char *name,
 
        sprintf(gpath, "%s/%s", s->path, name);
 
-       ret = mkdir(gpath, S_IRWXU|S_IRWXG|S_IRWXO);
-       if (ret < 0) {
-               ERRORNO("%s\n", gpath);
-               return NULL;
-       }
-
        g = malloc(sizeof(struct gadget));
        if (!g) {
                ERRORNO("allocating gadget\n");
@@ -520,6 +514,12 @@ struct gadget *usbg_create_gadget(struct state *s, char *name,
        usbg_write_hex16(s->path, name, "idVendor", vendor);
        usbg_write_hex16(s->path, name, "idProduct", product);
 
+       ret = mkdir(gpath, S_IRWXU|S_IRWXG|S_IRWXO);
+       if (ret < 0) {
+               ERRORNO("%s\n", gpath);
+               return NULL;
+       }
+
        /* Insert in string order */
        if (TAILQ_EMPTY(&s->gadgets) ||
            (strcmp(name, TAILQ_FIRST(&s->gadgets)->name) < 0))
@@ -633,12 +633,6 @@ struct function *usbg_create_function(struct gadget *g, enum function_type type,
 
        sprintf(fpath, "%s/%s/functions/%s", g->path, g->name, name);
 
-       ret = mkdir(fpath, S_IRWXU|S_IRWXG|S_IRWXO);
-       if (ret < 0) {
-               ERRORNO("%s\n", fpath);
-               return NULL;
-       }
-
        f = malloc(sizeof(struct function));
        if (!f) {
                ERRORNO("allocating function\n");
@@ -651,6 +645,12 @@ struct function *usbg_create_function(struct gadget *g, enum function_type type,
 
        usbg_parse_function_attrs(f);
 
+       ret = mkdir(fpath, S_IRWXU|S_IRWXG|S_IRWXO);
+       if (ret < 0) {
+               ERRORNO("%s\n", fpath);
+               return NULL;
+       }
+
        /* Insert in string order */
        if (TAILQ_EMPTY(&g->functions) ||
            (strcmp(name, TAILQ_FIRST(&g->functions)->name) < 0))
@@ -687,12 +687,6 @@ struct config *usbg_create_config(struct gadget *g, char *name)
 
        sprintf(cpath, "%s/%s/configs/%s", g->path, g->name, name);
 
-       ret = mkdir(cpath, S_IRWXU|S_IRWXG|S_IRWXO);
-       if (ret < 0) {
-               ERRORNO("%s\n", cpath);
-               return NULL;
-       }
-
        c = malloc(sizeof(struct config));
        if (!c) {
                ERRORNO("allocating configuration\n");
@@ -703,6 +697,12 @@ struct config *usbg_create_config(struct gadget *g, char *name)
        strcpy(c->name, name);
        sprintf(c->path, "%s/%s/%s/%s", g->path, g->name, "configs", name);
 
+       ret = mkdir(cpath, S_IRWXU|S_IRWXG|S_IRWXO);
+       if (ret < 0) {
+               ERRORNO("%s\n", cpath);
+               return NULL;
+       }
+
        /* Insert in string order */
        if (TAILQ_EMPTY(&g->configs) ||
            (strcmp(name, TAILQ_FIRST(&g->configs)->name) < 0))