More clean up
[yaffs2.git] / yaffs_nameval.c
index e521622c97dee0da2ce0bc35410f3c66f13632d3..767f9e0daef58562ff8d9cd0c075ad6ee4a33cb3 100644 (file)
@@ -37,20 +37,21 @@ static int nval_find(const char *xb, int xb_size, const YCHAR *name,
 
        memcpy(&size, xb, sizeof(int));
        while (size > 0 && (size < xb_size) && (pos + size < xb_size)) {
-               if (!strncmp((YCHAR *) (xb + pos + sizeof(int)), name, size)) {
+               if (!strncmp((YCHAR *) (xb + pos + sizeof(int)),
+                               name, size)) {
                        if (exist_size)
                                *exist_size = size;
                        return pos;
                }
                pos += size;
-               if (pos < xb_size - sizeof(int))
+               if (pos < xb_size - (int)sizeof(int))
                        memcpy(&size, xb + pos, sizeof(int));
                else
                        size = 0;
        }
        if (exist_size)
                *exist_size = 0;
-       return -1;
+       return -ENODATA;
 }
 
 static int nval_used(const char *xb, int xb_size)
@@ -61,7 +62,7 @@ static int nval_used(const char *xb, int xb_size)
        memcpy(&size, xb + pos, sizeof(int));
        while (size > 0 && (size < xb_size) && (pos + size < xb_size)) {
                pos += size;
-               if (pos < xb_size - sizeof(int))
+               if (pos < xb_size - (int)sizeof(int))
                        memcpy(&size, xb + pos, sizeof(int));
                else
                        size = 0;
@@ -74,16 +75,15 @@ int nval_del(char *xb, int xb_size, const YCHAR *name)
        int pos = nval_find(xb, xb_size, name, NULL);
        int size;
 
-       if (pos >= 0 && pos < xb_size) {
-               /* Find size, shift rest over this record,
-                * then zero out the rest of buffer */
-               memcpy(&size, xb + pos, sizeof(int));
-               memcpy(xb + pos, xb + pos + size, xb_size - (pos + size));
-               memset(xb + (xb_size - size), 0, size);
-               return 0;
-       } else {
+       if (pos < 0 || pos >= xb_size)
                return -ENODATA;
-       }
+
+       /* Find size, shift rest over this record,
+        * then zero out the rest of buffer */
+       memcpy(&size, xb + pos, sizeof(int));
+       memcpy(xb + pos, xb + pos + size, xb_size - (pos + size));
+       memset(xb + (xb_size - size), 0, size);
+       return 0;
 }
 
 int nval_set(char *xb, int xb_size, const YCHAR *name, const char *buf,
@@ -147,6 +147,12 @@ int nval_get(const char *xb, int xb_size, const YCHAR * name, char *buf,
                pos++;
                size--;
 
+               /* If bsize is zero then this is a size query.
+                * Return the size, but don't copy.
+                */
+               if (!bsize)
+                       return size;
+
                if (size <= bsize) {
                        memcpy(buf, xb + pos, size);
                        return size;
@@ -167,7 +173,7 @@ int nval_list(const char *xb, int xb_size, char *buf, int bsize)
        int filled = 0;
 
        memcpy(&size, xb + pos, sizeof(int));
-       while (size > sizeof(int) &&
+       while (size > (int)sizeof(int) &&
                size <= xb_size &&
                (pos + size) < xb_size &&
                !filled) {
@@ -188,7 +194,7 @@ int nval_list(const char *xb, int xb_size, char *buf, int bsize)
                        filled = 1;
                }
                pos += size;
-               if (pos < xb_size - sizeof(int))
+               if (pos < xb_size - (int)sizeof(int))
                        memcpy(&size, xb + pos, sizeof(int));
                else
                        size = 0;