Change usbg_get_gadget_strs() and usbg_get_gadget_attrs()
to return usbg_error instead of NULL pointer.

Signed-off-by: Krzysztof Opasiak <k.opas...@samsung.com>
---
 include/usbg/usbg.h |   10 ++++------
 src/usbg.c          |   43 ++++++++++++++++++++++---------------------
 2 files changed, 26 insertions(+), 27 deletions(-)

diff --git a/include/usbg/usbg.h b/include/usbg/usbg.h
index 3ad98b6..6855833 100644
--- a/include/usbg/usbg.h
+++ b/include/usbg/usbg.h
@@ -291,10 +291,9 @@ extern int usbg_set_gadget_attrs(usbg_gadget *g,
  * @brief Get the USB gadget strings
  * @param g Pointer to gadget
  * @param g_attrs Structure to be filled
- * @retur Pointer to filled structure or NULL if error occurred.
+ * @return 0 on success usbg_error if error occurred
  */
-extern usbg_gadget_attrs *usbg_get_gadget_attrs(usbg_gadget *g,
-               usbg_gadget_attrs *g_attrs);
+extern int usbg_get_gadget_attrs(usbg_gadget *g, usbg_gadget_attrs *g_attrs);
 
 /**
  * @brief Get gadget name length
@@ -386,10 +385,9 @@ extern int usbg_set_gadget_device_bcd_usb(usbg_gadget *g, 
uint16_t bcdUSB);
  * @param g Pointer to gadget
  * @param lang Language of strings
  * @param g_sttrs Structure to be filled
- * @retur Pointer to filled structure or NULL if error occurred or
- * if no strings for given language.
+ * @return 0 on success usbg_error if error occurred
  */
-extern usbg_gadget_strs *usbg_get_gadget_strs(usbg_gadget *g, int lang,
+extern int usbg_get_gadget_strs(usbg_gadget *g, int lang,
                usbg_gadget_strs *g_strs);
 
 /**
diff --git a/src/usbg.c b/src/usbg.c
index f9f5ec8..2d67bd6 100644
--- a/src/usbg.c
+++ b/src/usbg.c
@@ -617,9 +617,10 @@ out:
        return ret;
 }
 
-static usbg_gadget_strs *usbg_parse_strings(char *path, char *name, int lang,
+static int usbg_parse_gadget_strs(char *path, char *name, int lang,
                usbg_gadget_strs *g_strs)
 {
+       int ret;
        DIR *dir;
        char spath[USBG_MAX_PATH_LENGTH];
 
@@ -629,14 +630,23 @@ static usbg_gadget_strs *usbg_parse_strings(char *path, 
char *name, int lang,
        dir = opendir(spath);
        if (dir) {
                closedir(dir);
-               usbg_read_string(spath, "", "serialnumber", g_strs->str_ser);
-               usbg_read_string(spath, "", "manufacturer", g_strs->str_mnf);
-               usbg_read_string(spath, "", "product", g_strs->str_prd);
+               ret = usbg_read_string(spath, "", "serialnumber", 
g_strs->str_ser);
+               if (ret != USBG_SUCCESS)
+                       goto out;
+
+               ret = usbg_read_string(spath, "", "manufacturer", 
g_strs->str_mnf);
+               if (ret != USBG_SUCCESS)
+                       goto out;
+
+               ret = usbg_read_string(spath, "", "product", g_strs->str_prd);
+               if (ret != USBG_SUCCESS)
+                       goto out;
        } else {
-               g_strs = NULL;
+               ret = usbg_translate_error(errno);
        }
 
-       return g_strs;
+out:
+       return ret;
 }
 
 static inline int usbg_parse_gadget(char *path, char *name, usbg_state *parent,
@@ -928,15 +938,10 @@ int usbg_create_gadget(usbg_state *s, char *name,
        return ret;
 }
 
-usbg_gadget_attrs *usbg_get_gadget_attrs(usbg_gadget *g,
-               usbg_gadget_attrs *g_attrs)
+int usbg_get_gadget_attrs(usbg_gadget *g, usbg_gadget_attrs *g_attrs)
 {
-       if (g && g_attrs)
-               usbg_parse_gadget_attrs(g->path, g->name, g_attrs);
-       else
-               g_attrs = NULL;
-
-       return g_attrs;
+       return g && g_attrs ? usbg_parse_gadget_attrs(g->path, g->name, g_attrs)
+                       : USBG_ERROR_INVALID_PARAM;
 }
 
 size_t usbg_get_gadget_name_len(usbg_gadget *g)
@@ -1066,15 +1071,11 @@ int usbg_set_gadget_device_bcd_usb(usbg_gadget *g, 
uint16_t bcdUSB)
                        : USBG_ERROR_INVALID_PARAM;
 }
 
-usbg_gadget_strs *usbg_get_gadget_strs(usbg_gadget *g, int lang,
+int usbg_get_gadget_strs(usbg_gadget *g, int lang,
                usbg_gadget_strs *g_strs)
 {
-       if (g && g_strs)
-               g_strs = usbg_parse_strings(g->path, g->name, lang, g_strs);
-       else
-               g_strs = NULL;
-
-       return g_strs;
+       return g && g_strs ? usbg_parse_gadget_strs(g->path, g->name, lang,
+                       g_strs) : USBG_ERROR_INVALID_PARAM;
 }
 
 static int usbg_check_dir(char *path)
-- 
1.7.9.5

--
To unsubscribe from this list: send the line "unsubscribe linux-usb" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to