s3-lib: Rely on uint64_t in conv_str_size()
authorAndrew Bartlett <abartlet@samba.org>
Sat, 30 Apr 2011 02:52:11 +0000 (12:52 +1000)
committerAndrew Bartlett <abartlet@samba.org>
Sat, 30 Apr 2011 03:58:35 +0000 (05:58 +0200)
Autobuild-User: Andrew Bartlett <abartlet@samba.org>
Autobuild-Date: Sat Apr 30 05:58:35 CEST 2011 on sn-devel-104

source3/include/proto.h
source3/lib/util_str.c

index 170b9ad5e6a6f9cfbb66d69b102ed8e74591eba4..fe981f1d54e1f31d07b166c7201fe1662966f4e4 100644 (file)
@@ -1007,7 +1007,7 @@ char *ipstr_list_make(char **ipstr_list,
 int ipstr_list_parse(const char *ipstr_list, struct ip_service **ip_list);
 void ipstr_list_free(char* ipstr_list);
 uint64_t STR_TO_SMB_BIG_UINT(const char *nptr, const char **entptr);
-SMB_OFF_T conv_str_size(const char * str);
+uint64_t conv_str_size(const char * str);
 bool add_string_to_array(TALLOC_CTX *mem_ctx,
                         const char *str, const char ***strings,
                         int *num);
index 07a058925dd07426780d639f9e8cb1fd6e29b7f8..b15dd7907ba38221bb08b97d79362279d43c7bd5 100644 (file)
@@ -1206,25 +1206,17 @@ uint64_t STR_TO_SMB_BIG_UINT(const char *nptr, const char **entptr)
  *
  *  Returns 0 if the string can't be converted.
  */
-SMB_OFF_T conv_str_size(const char * str)
+uint64_t conv_str_size(const char * str)
 {
-       SMB_OFF_T lval_orig;
-        SMB_OFF_T lval;
+       uint64_t lval_orig;
+        uint64_t lval;
        char * end;
 
         if (str == NULL || *str == '\0') {
                 return 0;
         }
 
-#ifdef HAVE_STRTOULL
-       if (sizeof(SMB_OFF_T) == 8) {
-               lval = strtoull(str, &end, 10 /* base */);
-       } else {
-               lval = strtoul(str, &end, 10 /* base */);
-       }
-#else
-       lval = strtoul(str, &end, 10 /* base */);
-#endif
+       lval = strtoull(str, &end, 10 /* base */);
 
         if (end == NULL || end == str) {
                 return 0;
@@ -1237,32 +1229,23 @@ SMB_OFF_T conv_str_size(const char * str)
        lval_orig = lval;
 
        if (strwicmp(end, "K") == 0) {
-               lval *= (SMB_OFF_T)1024;
+               lval *= 1024ULL;
        } else if (strwicmp(end, "M") == 0) {
-               lval *= ((SMB_OFF_T)1024 * (SMB_OFF_T)1024);
+               lval *= (1024ULL * 1024ULL);
        } else if (strwicmp(end, "G") == 0) {
-               lval *= ((SMB_OFF_T)1024 * (SMB_OFF_T)1024 *
-                        (SMB_OFF_T)1024);
+               lval *= (1024ULL * 1024ULL *
+                        1024ULL);
        } else if (strwicmp(end, "T") == 0) {
-               lval *= ((SMB_OFF_T)1024 * (SMB_OFF_T)1024 *
-                        (SMB_OFF_T)1024 * (SMB_OFF_T)1024);
+               lval *= (1024ULL * 1024ULL *
+                        1024ULL * 1024ULL);
        } 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);
+               lval *= (1024ULL * 1024ULL *
+                        1024ULL * 1024ULL *
+                        1024ULL);
        } 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;
 }