]> git.ipfire.org Git - thirdparty/curl.git/commitdiff
metalink: simplify the hex parsing function
authorDaniel Stenberg <daniel@haxx.se>
Tue, 1 Nov 2016 23:08:36 +0000 (00:08 +0100)
committerDaniel Stenberg <daniel@haxx.se>
Tue, 1 Nov 2016 23:31:49 +0000 (00:31 +0100)
... and now it avoids using the libcurl toupper() function

src/tool_metalink.c

index 985e7c323595bb3028e8c8e18677df3df0b2c2c7..f4173562f98e301ea12681a3dbe2f90f3ef01d0e 100644 (file)
@@ -24,6 +24,7 @@
 #ifdef USE_METALINK
 
 #include <sys/stat.h>
+#include <stdlib.h>
 
 #ifdef HAVE_FCNTL_H
 #  include <fcntl.h>
@@ -92,8 +93,6 @@ struct win32_crypto_hash {
 #  error "Can't compile METALINK support without a crypto library."
 #endif
 
-#include "strcase.h"
-
 #define ENABLE_CURLX_PRINTF
 /* use our own printf() functions */
 #include "curlx.h"
@@ -563,18 +562,13 @@ int Curl_digest_final(digest_context *context, unsigned char *result)
 
 static unsigned char hex_to_uint(const char *s)
 {
-  int v[2];
-  int i;
-  for(i = 0; i < 2; ++i) {
-    v[i] = Curl_raw_toupper(s[i]);
-    if('0' <= v[i] && v[i] <= '9') {
-      v[i] -= '0';
-    }
-    else if('A' <= v[i] && v[i] <= 'Z') {
-      v[i] -= 'A'-10;
-    }
-  }
-  return (unsigned char)((v[0] << 4) | v[1]);
+  char buf[3];
+  unsigned long val;
+  buf[0] = s[0];
+  buf[1] = s[1];
+  buf[2] = 0;
+  val = strtoul(buf, NULL, 16);
+  return (unsigned char)(val&0xff);
 }
 
 /*