1
0
mirror of https://github.com/moparisthebest/wget synced 2024-07-03 16:38:41 -04:00

[svn] Renamed wget.h XDIGIT-related macros to (hopefully) clearer names.

This commit is contained in:
hniksic 2003-09-19 07:08:37 -07:00
parent 7c802e58d3
commit 7b5fb50cb1
12 changed files with 79 additions and 77 deletions

View File

@ -1,3 +1,8 @@
2003-09-19 Hrvoje Niksic <hniksic@xemacs.org>
* wget.h (BOUNDED_TO_ALLOCA): Evaluate PLACE only once.
(ARRAY_SIZE): Renamed to countof. All callers updated.
2003-09-19 Hrvoje Niksic <hniksic@xemacs.org> 2003-09-19 Hrvoje Niksic <hniksic@xemacs.org>
* main.c (main): New option --strict-comments. * main.c (main): New option --strict-comments.

View File

@ -748,7 +748,7 @@ check_domain_match (const char *cookie_domain, const char *host)
static char *known_toplevel_domains[] = { static char *known_toplevel_domains[] = {
".com", ".edu", ".net", ".org", ".gov", ".mil", ".int" ".com", ".edu", ".net", ".org", ".gov", ".mil", ".int"
}; };
for (i = 0; i < ARRAY_SIZE (known_toplevel_domains); i++) for (i = 0; i < countof (known_toplevel_domains); i++)
if (match_tail (cookie_domain, known_toplevel_domains[i], 1)) if (match_tail (cookie_domain, known_toplevel_domains[i], 1))
{ {
known_toplevel = 1; known_toplevel = 1;
@ -1060,7 +1060,7 @@ cookie_jar_generate_cookie_header (struct cookie_jar *jar, const char *host,
{ {
struct cookie *chain_default_store[20]; struct cookie *chain_default_store[20];
struct cookie **all_chains = chain_default_store; struct cookie **all_chains = chain_default_store;
int chain_store_size = ARRAY_SIZE (chain_default_store); int chain_store_size = countof (chain_default_store);
int chain_count; int chain_count;
struct cookie *cookie; struct cookie *cookie;
@ -1488,7 +1488,7 @@ test_cookies (void)
}; };
int i; int i;
for (i = 0; i < ARRAY_SIZE (tests_succ); i++) for (i = 0; i < countof (tests_succ); i++)
{ {
int ind; int ind;
char *data = tests_succ[i].data; char *data = tests_succ[i].data;
@ -1518,7 +1518,7 @@ test_cookies (void)
printf ("Unmatched number of results: %s\n", data); printf ("Unmatched number of results: %s\n", data);
} }
for (i = 0; i < ARRAY_SIZE (tests_fail); i++) for (i = 0; i < countof (tests_fail); i++)
{ {
struct cookie *c; struct cookie *c;
char *data = tests_fail[i]; char *data = tests_fail[i];

View File

@ -195,12 +195,12 @@ ftp_login (struct rbuf *rbuf, const char *acc, const char *pass)
}; };
int i; int i;
for (i = 0; i < ARRAY_SIZE (skey_head); i++) for (i = 0; i < countof (skey_head); i++)
{ {
if (strncasecmp (skey_head[i], respline, strlen (skey_head[i])) == 0) if (strncasecmp (skey_head[i], respline, strlen (skey_head[i])) == 0)
break; break;
} }
if (i < ARRAY_SIZE (skey_head)) if (i < countof (skey_head))
{ {
const char *cp; const char *cp;
int skey_sequence = 0; int skey_sequence = 0;

View File

@ -205,7 +205,7 @@ prime_size (int size, int *prime_offset)
}; };
int i = *prime_offset; int i = *prime_offset;
for (; i < ARRAY_SIZE (primes); i++) for (; i < countof (primes); i++)
if (primes[i] >= size) if (primes[i] >= size)
{ {
/* Set the offset to the next prime. That is safe because, /* Set the offset to the next prime. That is safe because,

View File

@ -181,7 +181,7 @@ init_interesting (void)
{ {
int i, ind = 0; int i, ind = 0;
int size = ARRAY_SIZE (known_tags); int size = countof (known_tags);
interesting_tags = (const char **)xmalloc ((size + 1) * sizeof (char *)); interesting_tags = (const char **)xmalloc ((size + 1) * sizeof (char *));
for (i = 0; i < size; i++) for (i = 0; i < size; i++)
@ -241,14 +241,14 @@ init_interesting (void)
unique, and to include the attributes from additional_attributes. */ unique, and to include the attributes from additional_attributes. */
{ {
int i, ind; int i, ind;
const char **att = xmalloc ((ARRAY_SIZE (additional_attributes) + 1) const char **att = xmalloc ((countof (additional_attributes) + 1)
* sizeof (char *)); * sizeof (char *));
/* First copy the "additional" attributes. */ /* First copy the "additional" attributes. */
for (i = 0; i < ARRAY_SIZE (additional_attributes); i++) for (i = 0; i < countof (additional_attributes); i++)
att[i] = additional_attributes[i]; att[i] = additional_attributes[i];
ind = i; ind = i;
att[ind] = NULL; att[ind] = NULL;
for (i = 0; i < ARRAY_SIZE (tag_url_attributes); i++) for (i = 0; i < countof (tag_url_attributes); i++)
{ {
int j, seen = 0; int j, seen = 0;
const char *look_for = tag_url_attributes[i].attr_name; const char *look_for = tag_url_attributes[i].attr_name;
@ -277,7 +277,7 @@ find_tag (const char *tag_name)
/* This is linear search; if the number of tags grow, we can switch /* This is linear search; if the number of tags grow, we can switch
to binary search. */ to binary search. */
for (i = 0; i < ARRAY_SIZE (known_tags); i++) for (i = 0; i < countof (known_tags); i++)
{ {
int cmp = strcasecmp (known_tags[i].name, tag_name); int cmp = strcasecmp (known_tags[i].name, tag_name);
/* known_tags are sorted alphabetically, so we can /* known_tags are sorted alphabetically, so we can
@ -421,7 +421,7 @@ static void
tag_find_urls (int tagid, struct taginfo *tag, struct map_context *ctx) tag_find_urls (int tagid, struct taginfo *tag, struct map_context *ctx)
{ {
int i, attrind, first = -1; int i, attrind, first = -1;
int size = ARRAY_SIZE (tag_url_attributes); int size = countof (tag_url_attributes);
for (i = 0; i < size; i++) for (i = 0; i < size; i++)
if (tag_url_attributes[i].tagid == tagid) if (tag_url_attributes[i].tagid == tagid)

View File

@ -2211,7 +2211,7 @@ http_atotm (const char *time_string)
GNU strptime does not have this problem because it recognizes GNU strptime does not have this problem because it recognizes
both international and local dates. */ both international and local dates. */
for (i = 0; i < ARRAY_SIZE (time_formats); i++) for (i = 0; i < countof (time_formats); i++)
if (check_end (strptime (time_string, time_formats[i], &t))) if (check_end (strptime (time_string, time_formats[i], &t)))
return mktime_from_utc (&t); return mktime_from_utc (&t);
@ -2341,8 +2341,8 @@ dump_hash (unsigned char *buf, const unsigned char *hash)
for (i = 0; i < MD5_HASHLEN; i++, hash++) for (i = 0; i < MD5_HASHLEN; i++, hash++)
{ {
*buf++ = XDIGIT_TO_xchar (*hash >> 4); *buf++ = XNUM_TO_digit (*hash >> 4);
*buf++ = XDIGIT_TO_xchar (*hash & 0xf); *buf++ = XNUM_TO_digit (*hash & 0xf);
} }
*buf = '\0'; *buf = '\0';
} }
@ -2373,7 +2373,7 @@ digest_authentication_encode (const char *au, const char *user,
int i; int i;
au += skip_lws (au); au += skip_lws (au);
for (i = 0; i < ARRAY_SIZE (options); i++) for (i = 0; i < countof (options); i++)
{ {
int skip = extract_header_attr (au, options[i].name, int skip = extract_header_attr (au, options[i].name,
options[i].variable); options[i].variable);
@ -2390,7 +2390,7 @@ digest_authentication_encode (const char *au, const char *user,
break; break;
} }
} }
if (i == ARRAY_SIZE (options)) if (i == countof (options))
{ {
while (*au && *au != '=') while (*au && *au != '=')
au++; au++;

View File

@ -224,7 +224,7 @@ static struct {
static int static int
comind (const char *com) comind (const char *com)
{ {
int lo = 0, hi = ARRAY_SIZE (commands) - 1; int lo = 0, hi = countof (commands) - 1;
while (lo <= hi) while (lo <= hi)
{ {

View File

@ -100,7 +100,7 @@ valid_progress_implementation_p (const char *name)
char *colon = strchr (name, ':'); char *colon = strchr (name, ':');
int namelen = colon ? colon - name : strlen (name); int namelen = colon ? colon - name : strlen (name);
for (i = 0; i < ARRAY_SIZE (implementations); i++, pi++) for (i = 0; i < countof (implementations); i++, pi++)
if (!strncmp (pi->name, name, namelen)) if (!strncmp (pi->name, name, namelen))
return 1; return 1;
return 0; return 0;
@ -121,7 +121,7 @@ set_progress_implementation (const char *name)
colon = strchr (name, ':'); colon = strchr (name, ':');
namelen = colon ? colon - name : strlen (name); namelen = colon ? colon - name : strlen (name);
for (i = 0; i < ARRAY_SIZE (implementations); i++, pi++) for (i = 0; i < countof (implementations); i++, pi++)
if (!strncmp (pi->name, name, namelen)) if (!strncmp (pi->name, name, namelen))
{ {
current_impl = pi; current_impl = pi;

View File

@ -417,17 +417,16 @@ free_specs (struct robot_specs *specs)
that number is not a numerical representation of '/', decode C and that number is not a numerical representation of '/', decode C and
advance the pointer. */ advance the pointer. */
#define DECODE_MAYBE(c, ptr) do { \ #define DECODE_MAYBE(c, ptr) do { \
if (c == '%' && ISXDIGIT (ptr[1]) && ISXDIGIT (ptr[2])) \ if (c == '%' && ISXDIGIT (ptr[1]) && ISXDIGIT (ptr[2])) \
{ \ { \
char decoded \ char decoded = X2DIGITS_TO_NUM (ptr[1], ptr[2]); \
= (XCHAR_TO_XDIGIT (ptr[1]) << 4) + XCHAR_TO_XDIGIT (ptr[2]); \ if (decoded != '/') \
if (decoded != '/') \ { \
{ \ c = decoded; \
c = decoded; \ ptr += 2; \
ptr += 2; \ } \
} \ } \
} \
} while (0) } while (0)
/* The inner matching engine: return non-zero if RECORD_PATH matches /* The inner matching engine: return non-zero if RECORD_PATH matches

View File

@ -170,10 +170,9 @@ url_unescape (char *s)
else else
{ {
/* Do nothing if '%' is not followed by two hex digits. */ /* Do nothing if '%' is not followed by two hex digits. */
if (!*(h + 1) || !*(h + 2) if (!h[1] || !h[2] || !(ISXDIGIT (h[1]) && ISXDIGIT (h[2])))
|| !(ISXDIGIT (*(h + 1)) && ISXDIGIT (*(h + 2))))
goto copychar; goto copychar;
*t = (XCHAR_TO_XDIGIT (*(h + 1)) << 4) + XCHAR_TO_XDIGIT (*(h + 2)); *t = X2DIGITS_TO_NUM (h[1], h[2]);
h += 2; h += 2;
} }
} }
@ -214,8 +213,8 @@ url_escape_1 (const char *s, unsigned char mask, int allow_passthrough)
{ {
unsigned char c = *p1++; unsigned char c = *p1++;
*p2++ = '%'; *p2++ = '%';
*p2++ = XDIGIT_TO_XCHAR (c >> 4); *p2++ = XNUM_TO_digit (c >> 4);
*p2++ = XDIGIT_TO_XCHAR (c & 0xf); *p2++ = XNUM_TO_digit (c & 0xf);
} }
else else
*p2++ = *p1++; *p2++ = *p1++;
@ -258,9 +257,7 @@ decide_copy_method (const char *p)
/* %xx sequence: decode it, unless it would decode to an /* %xx sequence: decode it, unless it would decode to an
unsafe or a reserved char; in that case, leave it as unsafe or a reserved char; in that case, leave it as
is. */ is. */
char preempt = (XCHAR_TO_XDIGIT (*(p + 1)) << 4) + char preempt = X2DIGITS_TO_NUM (*(p + 1), *(p + 2));
XCHAR_TO_XDIGIT (*(p + 2));
if (URL_UNSAFE_CHAR (preempt) || URL_RESERVED_CHAR (preempt)) if (URL_UNSAFE_CHAR (preempt) || URL_RESERVED_CHAR (preempt))
return CM_PASSTHROUGH; return CM_PASSTHROUGH;
else else
@ -403,13 +400,12 @@ reencode_escapes (const char *s)
{ {
unsigned char c = *p1++; unsigned char c = *p1++;
*p2++ = '%'; *p2++ = '%';
*p2++ = XDIGIT_TO_XCHAR (c >> 4); *p2++ = XNUM_TO_DIGIT (c >> 4);
*p2++ = XDIGIT_TO_XCHAR (c & 0xf); *p2++ = XNUM_TO_DIGIT (c & 0xf);
} }
break; break;
case CM_DECODE: case CM_DECODE:
*p2++ = ((XCHAR_TO_XDIGIT (*(p1 + 1)) << 4) *p2++ = X2DIGITS_TO_NUM (p1[1], p1[2]);
+ (XCHAR_TO_XDIGIT (*(p1 + 2))));
p1 += 3; /* skip %xx */ p1 += 3; /* skip %xx */
break; break;
case CM_PASSTHROUGH: case CM_PASSTHROUGH:
@ -1043,7 +1039,7 @@ url_parse (const char *url, int *error)
const char * const char *
url_error (int error_code) url_error (int error_code)
{ {
assert (error_code >= 0 && error_code < ARRAY_SIZE (parse_errors)); assert (error_code >= 0 && error_code < countof (parse_errors));
return parse_errors[error_code]; return parse_errors[error_code];
} }
@ -1602,8 +1598,8 @@ append_uri_pathel (const char *b, const char *e, struct growable *dest)
{ {
unsigned char ch = *p; unsigned char ch = *p;
*q++ = '%'; *q++ = '%';
*q++ = XDIGIT_TO_XCHAR (ch >> 4); *q++ = XNUM_TO_DIGIT (ch >> 4);
*q++ = XDIGIT_TO_XCHAR (ch & 0xf); *q++ = XNUM_TO_DIGIT (ch & 0xf);
} }
} }
assert (q - TAIL (dest) == outlen); assert (q - TAIL (dest) == outlen);
@ -2868,7 +2864,7 @@ test_path_simplify (void)
}; };
int i; int i;
for (i = 0; i < ARRAY_SIZE (tests); i++) for (i = 0; i < countof (tests); i++)
{ {
char *test = tests[i].test; char *test = tests[i].test;
char *expected_result = tests[i].result; char *expected_result = tests[i].result;
@ -2878,7 +2874,7 @@ test_path_simplify (void)
/* Now run all the tests with a leading slash before the test case, /* Now run all the tests with a leading slash before the test case,
to prove that the slash is being preserved. */ to prove that the slash is being preserved. */
for (i = 0; i < ARRAY_SIZE (tests); i++) for (i = 0; i < countof (tests); i++)
{ {
char *test, *expected_result; char *test, *expected_result;
int expected_change = tests[i].should_modify; int expected_change = tests[i].should_modify;

View File

@ -241,7 +241,7 @@ static void
register_ptr (void *ptr, const char *file, int line) register_ptr (void *ptr, const char *file, int line)
{ {
int i; int i;
for (i = 0; i < ARRAY_SIZE (malloc_debug); i++) for (i = 0; i < countof (malloc_debug); i++)
if (malloc_debug[i].ptr == NULL) if (malloc_debug[i].ptr == NULL)
{ {
malloc_debug[i].ptr = ptr; malloc_debug[i].ptr = ptr;
@ -259,7 +259,7 @@ static void
unregister_ptr (void *ptr) unregister_ptr (void *ptr)
{ {
int i; int i;
for (i = 0; i < ARRAY_SIZE (malloc_debug); i++) for (i = 0; i < countof (malloc_debug); i++)
if (malloc_debug[i].ptr == ptr) if (malloc_debug[i].ptr == ptr)
{ {
malloc_debug[i].ptr = NULL; malloc_debug[i].ptr = NULL;
@ -279,7 +279,7 @@ print_malloc_debug_stats (void)
int i; int i;
printf ("\nMalloc: %d\nFree: %d\nBalance: %d\n\n", printf ("\nMalloc: %d\nFree: %d\nBalance: %d\n\n",
malloc_count, free_count, malloc_count - free_count); malloc_count, free_count, malloc_count - free_count);
for (i = 0; i < ARRAY_SIZE (malloc_debug); i++) for (i = 0; i < countof (malloc_debug); i++)
if (malloc_debug[i].ptr != NULL) if (malloc_debug[i].ptr != NULL)
printf ("0x%08ld: %s:%d\n", (long)malloc_debug[i].ptr, printf ("0x%08ld: %s:%d\n", (long)malloc_debug[i].ptr,
malloc_debug[i].file, malloc_debug[i].line); malloc_debug[i].file, malloc_debug[i].line);
@ -1903,8 +1903,8 @@ debug_test_md5 (char *buf)
cnt = 16; cnt = 16;
while (cnt--) while (cnt--)
{ {
*p2++ = XDIGIT_TO_xchar (*p1 >> 4); *p2++ = XNUM_TO_digit (*p1 >> 4);
*p2++ = XDIGIT_TO_xchar (*p1 & 0xf); *p2++ = XNUM_TO_digit (*p1 & 0xf);
++p1; ++p1;
} }
*p2 = '\0'; *p2 = '\0';

View File

@ -157,21 +157,23 @@ char *xstrdup_debug PARAMS ((const char *, const char *, int));
/* The smaller value of the two. */ /* The smaller value of the two. */
#define MINVAL(x, y) ((x) < (y) ? (x) : (y)) #define MINVAL(x, y) ((x) < (y) ? (x) : (y))
/* Convert the ASCII character that represents a hexadecimal digit to /* Convert an ASCII hex digit to the corresponding number between 0
the number in range [0, 16) that corresponds to the digit. X and 15. X should be a hexadecimal digit that satisfies isxdigit;
should be between '0' and '9', or between 'A' and 'F', or between otherwise, the result is undefined. */
'a' and 'f'. If X is not a hexadecimal digit character, the result #define XDIGIT_TO_NUM(x) ((x) < 'A' ? (x) - '0' : TOUPPER (x) - 'A' + 10)
is undefined. */
#define XCHAR_TO_XDIGIT(x) \
(((x) >= '0' && (x) <= '9') ? ((x) - '0') : (TOUPPER(x) - 'A' + 10))
/* The reverse of the above: convert a digit number in the [0, 16) /* Convert a sequence of ASCII hex digits X and Y to a number betewen
range to an ASCII character. The A-F characters are in upper 0 and 255. Uses XDIGIT_TO_NUM for conversion of individual
digits. */
#define X2DIGITS_TO_NUM(h1, h2) ((XDIGIT_TO_NUM (h1) << 4) + XDIGIT_TO_NUM (h2))
/* The reverse of the above: convert a number in the [0, 16) range to
its ASCII representation in hex. The A-F characters are in upper
case. */ case. */
#define XDIGIT_TO_XCHAR(x) ("0123456789ABCDEF"[x]) #define XNUM_TO_DIGIT(x) ("0123456789ABCDEF"[x])
/* Like XDIGIT_TO_XCHAR, but generates lower-case characters. */ /* Like XNUM_TO_DIGIT, but generates lower-case characters. */
#define XDIGIT_TO_xchar(x) ("0123456789abcdef"[x]) #define XNUM_TO_digit(x) ("0123456789abcdef"[x])
/* Returns the number of elements in an array with fixed /* Returns the number of elements in an array with fixed
initialization. For example: initialization. For example:
@ -192,17 +194,16 @@ char *xstrdup_debug PARAMS ((const char *, const char *, int));
} */ } */
#define countof(array) (sizeof (array) / sizeof (*(array))) #define countof(array) (sizeof (array) / sizeof (*(array)))
#define ARRAY_SIZE(array) countof (array)
/* Copy the data delimited with BEG and END to alloca-allocated /* Copy the data delimited with BEG and END to alloca-allocated
storage, and zero-terminate it. BEG and END are evaluated only storage, and zero-terminate it. Arguments are evaluated only once,
once, in that order. */ in the order BEG, END, PLACE. */
#define BOUNDED_TO_ALLOCA(beg, end, place) do { \ #define BOUNDED_TO_ALLOCA(beg, end, place) do { \
const char *DTA_beg = (beg); \ const char *BTA_beg = (beg); \
int DTA_len = (end) - DTA_beg; \ int BTA_len = (end) - BTA_beg; \
place = alloca (DTA_len + 1); \ char **BTA_dest = &(place); \
memcpy (place, DTA_beg, DTA_len); \ *BTA_dest = alloca (BTA_len + 1); \
place[DTA_len] = '\0'; \ memcpy (*BTA_dest, BTA_beg, BTA_len); \
(*BTA_dest)[BTA_len] = '\0'; \
} while (0) } while (0)
/* Return non-zero if string bounded between BEG and END is equal to /* Return non-zero if string bounded between BEG and END is equal to
@ -306,8 +307,9 @@ enum
ADDED_HTML_EXTENSION = 0x0020 /* added ".html" extension due to -E */ ADDED_HTML_EXTENSION = 0x0020 /* added ".html" extension due to -E */
}; };
/* Universal error type -- used almost everywhere. /* Universal error type -- used almost everywhere. Error reporting of
This is, of course, utter crock. */ this detail is not generally used or needed and should be
simplified. */
typedef enum typedef enum
{ {
NOCONERROR, HOSTERR, CONSOCKERR, CONERROR, CONSSLERR, NOCONERROR, HOSTERR, CONSOCKERR, CONERROR, CONSSLERR,