s3: Slightly simplify logic in conv_str_size
authorVolker Lendecke <vl@samba.org>
Sun, 28 Mar 2010 11:16:58 +0000 (13:16 +0200)
committerVolker Lendecke <vl@samba.org>
Sun, 28 Mar 2010 13:25:15 +0000 (15:25 +0200)
source3/lib/util_str.c

index 22167d7ff2dc5a5cecdfc6c3d3effb4572b860d0..32476829070c29252a9ab1b9f1cd700defa3556b 100644 (file)
@@ -2003,6 +2003,7 @@ uint64_t STR_TO_SMB_BIG_UINT(const char *nptr, const char **entptr)
  */
 SMB_OFF_T conv_str_size(const char * str)
 {
+       SMB_OFF_T lval_orig;
         SMB_OFF_T lval;
        char * end;
 
@@ -2024,35 +2025,38 @@ SMB_OFF_T conv_str_size(const char * str)
                 return 0;
         }
 
-        if (*end) {
-               SMB_OFF_T lval_orig = lval;
-
-                if (strwicmp(end, "K") == 0) {
-                        lval *= (SMB_OFF_T)1024;
-                } else if (strwicmp(end, "M") == 0) {
-                        lval *= ((SMB_OFF_T)1024 * (SMB_OFF_T)1024);
-                } else if (strwicmp(end, "G") == 0) {
-                        lval *= ((SMB_OFF_T)1024 * (SMB_OFF_T)1024 *
-                               (SMB_OFF_T)1024);
-                } else if (strwicmp(end, "T") == 0) {
-                        lval *= ((SMB_OFF_T)1024 * (SMB_OFF_T)1024 *
-                               (SMB_OFF_T)1024 * (SMB_OFF_T)1024);
-                } else if (strwicmp(end, "P") == 0) {
-                        lval *= ((SMB_OFF_T)1024 * (SMB_OFF_T)1024 *
-                               (SMB_OFF_T)1024 * (SMB_OFF_T)1024 *
-                               (SMB_OFF_T)1024);
-                } else {
-                        return 0;
-                }
-
-               /* Primitive attempt to detect wrapping on platforms with
-                * 4-byte SMB_OFF_T. It's better to let the caller handle
-                * a failure than some random number.
-                */
-               if (lval_orig <= lval) {
-                       return 0;
-               }
-        }
+        if (*end == '\0') {
+               return lval;
+       }
+
+       lval_orig = lval;
+
+       if (strwicmp(end, "K") == 0) {
+               lval *= (SMB_OFF_T)1024;
+       } else if (strwicmp(end, "M") == 0) {
+               lval *= ((SMB_OFF_T)1024 * (SMB_OFF_T)1024);
+       } else if (strwicmp(end, "G") == 0) {
+               lval *= ((SMB_OFF_T)1024 * (SMB_OFF_T)1024 *
+                        (SMB_OFF_T)1024);
+       } else if (strwicmp(end, "T") == 0) {
+               lval *= ((SMB_OFF_T)1024 * (SMB_OFF_T)1024 *
+                        (SMB_OFF_T)1024 * (SMB_OFF_T)1024);
+       } else if (strwicmp(end, "P") == 0) {
+               lval *= ((SMB_OFF_T)1024 * (SMB_OFF_T)1024 *
+                        (SMB_OFF_T)1024 * (SMB_OFF_T)1024 *
+                        (SMB_OFF_T)1024);
+       } else {
+               return 0;
+       }
+
+       /*
+        * Primitive attempt to detect wrapping on platforms with
+        * 4-byte SMB_OFF_T. It's better to let the caller handle a
+        * failure than some random number.
+        */
+       if (lval_orig <= lval) {
+               return 0;
+       }
 
        return lval;
 }