commit - ef04b55160759b22db67f14c703a4343c4741e8b
commit + 579e21b35a0ad4cf3540ed474c994ace0e97a286
blob - 5af32b78c6b1a896154993dab383ded90d3f6ee4
blob + 1258abbf91161ba655231f964d5e501b4c7c4e67
--- uri.c
+++ uri.c
*
*/
-/* XXX: these macros will expand multiple times their argument */
+static inline int
+unreserved(int p)
+{
+ return isalnum(p)
+ || p == '-'
+ || p == '.'
+ || p == '_'
+ || p == '~';
+}
-#define UNRESERVED(p) \
- (isalnum(p) \
- || p == '-' \
- || p == '.' \
- || p == '_' \
- || p == '~')
-
-#define SUB_DELIMITERS(p) \
- (p == '!' \
- || p == '$' \
- || p == '&' \
- || p == '\'' \
- || p == '(' \
- || p == ')' \
- || p == '*' \
- || p == '+' \
- || p == ',' \
- || p == ';' \
- || p == '=')
+static inline int
+sub_delimiters(int p)
+{
+ return p == '!'
+ || p == '$'
+ || p == '&'
+ || p == '\''
+ || p == '('
+ || p == ')'
+ || p == '*'
+ || p == '+'
+ || p == ','
+ || p == ';'
+ || p == '=';
+}
static int
parse_pct_encoded(struct parser *p)
{
p->parsed->host = p->uri;
- while (UNRESERVED(*p->uri)
- || SUB_DELIMITERS(*p->uri)
+ while (unreserved(*p->uri)
+ || sub_delimiters(*p->uri)
|| parse_pct_encoded(p))
p->uri++;
if (*p->uri == '\0')
return 1;
- while (UNRESERVED(*p->uri)
- || SUB_DELIMITERS(*p->uri)
+ while (unreserved(*p->uri)
+ || sub_delimiters(*p->uri)
|| *p->uri == '/'
|| *p->uri == '?'
|| parse_pct_encoded(p)
return 1;
}
- while (UNRESERVED(*p->uri)
- || SUB_DELIMITERS(*p->uri)
+ while (unreserved(*p->uri)
+ || sub_delimiters(*p->uri)
|| *p->uri == '/'
|| parse_pct_encoded(p)
|| valid_multibyte_utf8(p))