gnunet-svn
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[libmicrohttpd] branch master updated (dc1973a7 -> d17b6cb7)


From: gnunet
Subject: [libmicrohttpd] branch master updated (dc1973a7 -> d17b6cb7)
Date: Mon, 05 Jun 2023 19:21:14 +0200

This is an automated email from the git hooks/post-receive script.

karlson2k pushed a change to branch master
in repository libmicrohttpd.

    from dc1973a7 -typos
     new 3a3208c0 mhd_str: hex to value optimisation
     new d17b6cb7 MHD_base64_to_bin_n(): improved readbility

The 2 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 src/microhttpd/mhd_str.c | 378 +++++++++++++++++++++++++++++++++++++++++++++--
 1 file changed, 368 insertions(+), 10 deletions(-)

diff --git a/src/microhttpd/mhd_str.c b/src/microhttpd/mhd_str.c
index 22ae36a9..ff482020 100644
--- a/src/microhttpd/mhd_str.c
+++ b/src/microhttpd/mhd_str.c
@@ -1,6 +1,6 @@
 /*
   This file is part of libmicrohttpd
-  Copyright (C) 2015-2022 Karlson2k (Evgeny Grin)
+  Copyright (C) 2015-2023 Karlson2k (Evgeny Grin)
 
   This library is free software; you can redistribute it and/or
   modify it under the terms of the GNU Lesser General Public
@@ -211,6 +211,308 @@ todigitvalue (char c)
 _MHD_static_inline int
 toxdigitvalue (char c)
 {
+#if ! defined(MHD_FAVOR_SMALL_CODE)
+  switch ((unsigned char) c)
+  {
+#if 0 /* Disabled to give the compiler a hint about low probability */
+  case 0x00U:    /* NUL */
+  case 0x01U:    /* SOH */
+  case 0x02U:    /* STX */
+  case 0x03U:    /* ETX */
+  case 0x04U:    /* EOT */
+  case 0x05U:    /* ENQ */
+  case 0x06U:    /* ACK */
+  case 0x07U:    /* BEL */
+  case 0x08U:    /* BS */
+  case 0x09U:    /* HT */
+  case 0x0AU:    /* LF */
+  case 0x0BU:    /* VT */
+  case 0x0CU:    /* FF */
+  case 0x0DU:    /* CR */
+  case 0x0EU:    /* SO */
+  case 0x0FU:    /* SI */
+  case 0x10U:    /* DLE */
+  case 0x11U:    /* DC1 */
+  case 0x12U:    /* DC2 */
+  case 0x13U:    /* DC3 */
+  case 0x14U:    /* DC4 */
+  case 0x15U:    /* NAK */
+  case 0x16U:    /* SYN */
+  case 0x17U:    /* ETB */
+  case 0x18U:    /* CAN */
+  case 0x19U:    /* EM */
+  case 0x1AU:    /* SUB */
+  case 0x1BU:    /* ESC */
+  case 0x1CU:    /* FS */
+  case 0x1DU:    /* GS */
+  case 0x1EU:    /* RS */
+  case 0x1FU:    /* US */
+  case 0x20U:    /* ' ' */
+  case 0x21U:    /* '!' */
+  case 0x22U:    /* '"' */
+  case 0x23U:    /* '#' */
+  case 0x24U:    /* '$' */
+  case 0x25U:    /* '%' */
+  case 0x26U:    /* '&' */
+  case 0x27U:    /* '\'' */
+  case 0x28U:    /* '(' */
+  case 0x29U:    /* ')' */
+  case 0x2AU:    /* '*' */
+  case 0x2BU:    /* '+' */
+  case 0x2CU:    /* ',' */
+  case 0x2DU:    /* '-' */
+  case 0x2EU:    /* '.' */
+  case 0x2FU:    /* '/' */
+    return -1;
+#endif
+  case 0x30U: /* '0' */
+    return 0;
+  case 0x31U: /* '1' */
+    return 1;
+  case 0x32U: /* '2' */
+    return 2;
+  case 0x33U: /* '3' */
+    return 3;
+  case 0x34U: /* '4' */
+    return 4;
+  case 0x35U: /* '5' */
+    return 5;
+  case 0x36U: /* '6' */
+    return 6;
+  case 0x37U: /* '7' */
+    return 7;
+  case 0x38U: /* '8' */
+    return 8;
+  case 0x39U: /* '9' */
+    return 9;
+#if 0         /* Disabled to give the compiler a hint about low probability */
+  case 0x3AU: /* ':' */
+  case 0x3BU: /* ';' */
+  case 0x3CU: /* '<' */
+  case 0x3DU: /* '=' */
+  case 0x3EU: /* '>' */
+  case 0x3FU: /* '?' */
+  case 0x40U: /* '@' */
+    return -1;
+#endif
+  case 0x41U: /* 'A' */
+    return 0xAU;
+  case 0x42U: /* 'B' */
+    return 0xBU;
+  case 0x43U: /* 'C' */
+    return 0xCU;
+  case 0x44U: /* 'D' */
+    return 0xDU;
+  case 0x45U: /* 'E' */
+    return 0xEU;
+  case 0x46U: /* 'F' */
+    return 0xFU;
+#if 0         /* Disabled to give the compiler a hint about low probability */
+  case 0x47U: /* 'G' */
+  case 0x48U: /* 'H' */
+  case 0x49U: /* 'I' */
+  case 0x4AU: /* 'J' */
+  case 0x4BU: /* 'K' */
+  case 0x4CU: /* 'L' */
+  case 0x4DU: /* 'M' */
+  case 0x4EU: /* 'N' */
+  case 0x4FU: /* 'O' */
+  case 0x50U: /* 'P' */
+  case 0x51U: /* 'Q' */
+  case 0x52U: /* 'R' */
+  case 0x53U: /* 'S' */
+  case 0x54U: /* 'T' */
+  case 0x55U: /* 'U' */
+  case 0x56U: /* 'V' */
+  case 0x57U: /* 'W' */
+  case 0x58U: /* 'X' */
+  case 0x59U: /* 'Y' */
+  case 0x5AU: /* 'Z' */
+  case 0x5BU: /* '[' */
+  case 0x5CU: /* '\' */
+  case 0x5DU: /* ']' */
+  case 0x5EU: /* '^' */
+  case 0x5FU: /* '_' */
+  case 0x60U: /* '`' */
+    return -1;
+#endif
+  case 0x61U: /* 'a' */
+    return 0xAU;
+  case 0x62U: /* 'b' */
+    return 0xBU;
+  case 0x63U: /* 'c' */
+    return 0xCU;
+  case 0x64U: /* 'd' */
+    return 0xDU;
+  case 0x65U: /* 'e' */
+    return 0xEU;
+  case 0x66U: /* 'f' */
+    return 0xFU;
+#if 0         /* Disabled to give the compiler a hint about low probability */
+  case 0x67U: /* 'g' */
+  case 0x68U: /* 'h' */
+  case 0x69U: /* 'i' */
+  case 0x6AU: /* 'j' */
+  case 0x6BU: /* 'k' */
+  case 0x6CU: /* 'l' */
+  case 0x6DU: /* 'm' */
+  case 0x6EU: /* 'n' */
+  case 0x6FU: /* 'o' */
+  case 0x70U: /* 'p' */
+  case 0x71U: /* 'q' */
+  case 0x72U: /* 'r' */
+  case 0x73U: /* 's' */
+  case 0x74U: /* 't' */
+  case 0x75U: /* 'u' */
+  case 0x76U: /* 'v' */
+  case 0x77U: /* 'w' */
+  case 0x78U: /* 'x' */
+  case 0x79U: /* 'y' */
+  case 0x7AU: /* 'z' */
+  case 0x7BU: /* '{' */
+  case 0x7CU: /* '|' */
+  case 0x7DU: /* '}' */
+  case 0x7EU: /* '~' */
+  case 0x7FU: /* DEL */
+  case 0x80U: /* EXT */
+  case 0x81U: /* EXT */
+  case 0x82U: /* EXT */
+  case 0x83U: /* EXT */
+  case 0x84U: /* EXT */
+  case 0x85U: /* EXT */
+  case 0x86U: /* EXT */
+  case 0x87U: /* EXT */
+  case 0x88U: /* EXT */
+  case 0x89U: /* EXT */
+  case 0x8AU: /* EXT */
+  case 0x8BU: /* EXT */
+  case 0x8CU: /* EXT */
+  case 0x8DU: /* EXT */
+  case 0x8EU: /* EXT */
+  case 0x8FU: /* EXT */
+  case 0x90U: /* EXT */
+  case 0x91U: /* EXT */
+  case 0x92U: /* EXT */
+  case 0x93U: /* EXT */
+  case 0x94U: /* EXT */
+  case 0x95U: /* EXT */
+  case 0x96U: /* EXT */
+  case 0x97U: /* EXT */
+  case 0x98U: /* EXT */
+  case 0x99U: /* EXT */
+  case 0x9AU: /* EXT */
+  case 0x9BU: /* EXT */
+  case 0x9CU: /* EXT */
+  case 0x9DU: /* EXT */
+  case 0x9EU: /* EXT */
+  case 0x9FU: /* EXT */
+  case 0xA0U: /* EXT */
+  case 0xA1U: /* EXT */
+  case 0xA2U: /* EXT */
+  case 0xA3U: /* EXT */
+  case 0xA4U: /* EXT */
+  case 0xA5U: /* EXT */
+  case 0xA6U: /* EXT */
+  case 0xA7U: /* EXT */
+  case 0xA8U: /* EXT */
+  case 0xA9U: /* EXT */
+  case 0xAAU: /* EXT */
+  case 0xABU: /* EXT */
+  case 0xACU: /* EXT */
+  case 0xADU: /* EXT */
+  case 0xAEU: /* EXT */
+  case 0xAFU: /* EXT */
+  case 0xB0U: /* EXT */
+  case 0xB1U: /* EXT */
+  case 0xB2U: /* EXT */
+  case 0xB3U: /* EXT */
+  case 0xB4U: /* EXT */
+  case 0xB5U: /* EXT */
+  case 0xB6U: /* EXT */
+  case 0xB7U: /* EXT */
+  case 0xB8U: /* EXT */
+  case 0xB9U: /* EXT */
+  case 0xBAU: /* EXT */
+  case 0xBBU: /* EXT */
+  case 0xBCU: /* EXT */
+  case 0xBDU: /* EXT */
+  case 0xBEU: /* EXT */
+  case 0xBFU: /* EXT */
+  case 0xC0U: /* EXT */
+  case 0xC1U: /* EXT */
+  case 0xC2U: /* EXT */
+  case 0xC3U: /* EXT */
+  case 0xC4U: /* EXT */
+  case 0xC5U: /* EXT */
+  case 0xC6U: /* EXT */
+  case 0xC7U: /* EXT */
+  case 0xC8U: /* EXT */
+  case 0xC9U: /* EXT */
+  case 0xCAU: /* EXT */
+  case 0xCBU: /* EXT */
+  case 0xCCU: /* EXT */
+  case 0xCDU: /* EXT */
+  case 0xCEU: /* EXT */
+  case 0xCFU: /* EXT */
+  case 0xD0U: /* EXT */
+  case 0xD1U: /* EXT */
+  case 0xD2U: /* EXT */
+  case 0xD3U: /* EXT */
+  case 0xD4U: /* EXT */
+  case 0xD5U: /* EXT */
+  case 0xD6U: /* EXT */
+  case 0xD7U: /* EXT */
+  case 0xD8U: /* EXT */
+  case 0xD9U: /* EXT */
+  case 0xDAU: /* EXT */
+  case 0xDBU: /* EXT */
+  case 0xDCU: /* EXT */
+  case 0xDDU: /* EXT */
+  case 0xDEU: /* EXT */
+  case 0xDFU: /* EXT */
+  case 0xE0U: /* EXT */
+  case 0xE1U: /* EXT */
+  case 0xE2U: /* EXT */
+  case 0xE3U: /* EXT */
+  case 0xE4U: /* EXT */
+  case 0xE5U: /* EXT */
+  case 0xE6U: /* EXT */
+  case 0xE7U: /* EXT */
+  case 0xE8U: /* EXT */
+  case 0xE9U: /* EXT */
+  case 0xEAU: /* EXT */
+  case 0xEBU: /* EXT */
+  case 0xECU: /* EXT */
+  case 0xEDU: /* EXT */
+  case 0xEEU: /* EXT */
+  case 0xEFU: /* EXT */
+  case 0xF0U: /* EXT */
+  case 0xF1U: /* EXT */
+  case 0xF2U: /* EXT */
+  case 0xF3U: /* EXT */
+  case 0xF4U: /* EXT */
+  case 0xF5U: /* EXT */
+  case 0xF6U: /* EXT */
+  case 0xF7U: /* EXT */
+  case 0xF8U: /* EXT */
+  case 0xF9U: /* EXT */
+  case 0xFAU: /* EXT */
+  case 0xFBU: /* EXT */
+  case 0xFCU: /* EXT */
+  case 0xFDU: /* EXT */
+  case 0xFEU: /* EXT */
+  case 0xFFU: /* EXT */
+    return -1;
+  default:
+    mhd_assert (0);
+    break;  /* Should be unreachable */
+#else
+  default:
+    break;
+#endif
+  }
+  return -1;
+#else  /* MHD_FAVOR_SMALL_CODE */
   if (isasciidigit (c))
     return (unsigned char) (c - '0');
   if ( (c >= 'A') && (c <= 'F') )
@@ -219,6 +521,7 @@ toxdigitvalue (char c)
     return (unsigned char) (c - 'a' + 10);
 
   return -1;
+#endif /* MHD_FAVOR_SMALL_CODE */
 }
 
 
@@ -1909,15 +2212,70 @@ MHD_base64_to_bin_n (const char *base64,
 #endif /* MHD_FAVOR_SMALL_CODE */
   static const map_type map[] = {
     /* -1 = invalid char, -2 = padding
-     0,  1,  2,  3,  4,  5,  6,  7,  8,  9,  A,  B,  C,  D,  E,  F */
-    -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,  /* 00..0F 
*/
-    -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,  /* 10..1F 
*/
-    -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 62, -1, -1, -1, 63,  /* 20..2F 
*/
-    52, 53, 54, 55, 56, 57, 58, 59, 60, 61, -1, -1, -1, -2, -1, -1,  /* 30..3F 
*/
-    -1,  0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 14,  /* 40..4F 
*/
-    15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, -1, -1, -1, -1, -1,  /* 50..5F 
*/
-    -1, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40,  /* 60..6F 
*/
-    41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, -1, -1, -1, -1, -1   /* 70..7F 
*/
+    0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
+    NUL,  SOH,  STX,  ETX,  EOT,  ENQ,  ACK,  BEL,  */
+    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+    /*
+    0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F,
+    BS,   HT,   LF,   VT,   FF,   CR,   SO,   SI,   */
+    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+    /*
+    0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17,
+    DLE,  DC1,  DC2,  DC3,  DC4,  NAK,  SYN,  ETB,  */
+    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+    /*
+    0x18, 0x19, 0x1A, 0x1B, 0x1C, 0x1D, 0x1E, 0x1F,
+    CAN,  EM,   SUB,  ESC,  FS,   GS,   RS,   US,   */
+    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+    /*
+    0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27,
+    ' ',  '!',  '"',  '#',  '$',  '%',  '&',  '\'', */
+    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+    /*
+    0x28, 0x29, 0x2A, 0x2B, 0x2C, 0x2D, 0x2E, 0x2F,
+    '(',  ')',  '*',  '+',  ',',  '-',  '.',  '/',  */
+    -1,   -1,   -1,   62,   -1,   -1,   -1,   63,
+    /*
+    0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
+    '0',  '1',  '2',  '3',  '4',  '5',  '6',  '7',  */
+    52,   53,   54,   55,   56,   57,   58,   59,
+    /*
+    0x38, 0x39, 0x3A, 0x3B, 0x3C, 0x3D, 0x3E, 0x3F,
+    '8',  '9',  ':',  ';',  '<',  '=',  '>',  '?',  */
+    60,   61,   -1,   -1,   -1,   -2,   -1,   -1,
+    /*
+    0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47,
+    '@',  'A',  'B',  'C',  'D',  'E',  'F',  'G',  */
+    -1,    0,    1,    2,    3,    4,    5,    6,
+    /*
+    0x48, 0x49, 0x4A, 0x4B, 0x4C, 0x4D, 0x4E, 0x4F,
+    'H',  'I',  'J',  'K',  'L',  'M',  'N',  'O',  */
+    7,     8,    9,   10,   11,   12,   13,   14,
+    /*
+    0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57,
+    'P',  'Q',  'R',  'S',  'T',  'U',  'V',  'W',  */
+    15,   16,   17,   18,   19,   20,   21,   22,
+    /*
+     0x58, 0x59, 0x5A, 0x5B, 0x5C, 0x5D, 0x5E, 0x5F,
+    'X',  'Y',  'Z',  '[',  '\',  ']',  '^',  '_',  */
+    23,   24,   25,   -1,   -1,   -1,   -1,   -1,
+    /*
+    0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67,
+    '`',  'a',  'b',  'c',  'd',  'e',  'f',  'g',  */
+    -1,   26,   27,   28,   29,   30,   31,   32,
+    /*
+    0x68, 0x69, 0x6A, 0x6B, 0x6C, 0x6D, 0x6E, 0x6F,
+    'h',  'i',  'j',  'k',  'l',  'm',  'n',  'o',  */
+    33,   34,   35,   36,   37,   38,   39,   40,
+    /*
+    0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77,
+    'p',  'q',  'r',  's',  't',  'u',  'v',  'w',  */
+    41,   42,   43,   44,   45,   46,   47,   48,
+    /*
+    0x78, 0x79, 0x7A, 0x7B, 0x7C, 0x7D, 0x7E, 0x7F,
+    'x',  'y',  'z',  '{',  '|',  '}',  '~',  DEL,  */
+    49,   50,   51,   -1,   -1,   -1,   -1,   -1
+
 #ifndef MHD_FAVOR_SMALL_CODE
     ,
     -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,  /* 80..8F 
*/

-- 
To stop receiving notification emails like this one, please contact
gnunet@gnunet.org.



reply via email to

[Prev in Thread] Current Thread [Next in Thread]