20 if (ch >=
'0' && ch <=
'9')
22 else if (ch >=
'a' && ch <=
'f')
24 else if (ch >=
'A' && ch <=
'F')
32 if ((ch >=
'A' && ch <=
'Z') || (ch >=
'a' && ch <=
'z') ||
33 (ch >=
'0' && ch <=
'9') || strchr(
"-._~", ch))
41 sprintf(dst+1,
"%02X", (
unsigned char ) ch);
63 else if (*path ==
'%' && *len >= 3)
67 if (d1 >= 0 && d2 >= 0)
100 size_t i, szp = 0, sz = 1;
101 for(i = 0;
name[i]; i++)
102 sz += strlen(
name[i]) + 3 + strlen(value[i]) * 3;
105 for(i = 0;
name[i]; i++)
109 (*path)[szp++] =
'&';
110 ilen = strlen(
name[i]);
111 memcpy(*path+szp,
name[i], ilen);
113 (*path)[szp++] =
'=';
116 szp += strlen(*path + szp);
131 while ((cp = strchr(cp,
'&')))
135 while (*cp && *cp !=
'=' && *cp !=
'&')
138 if (*cp <= ' ' || *cp >= 127)
144 *val = (
char **)
odr_malloc(o, no *
sizeof(
char*));
146 for (no = 0; *path; no++)
153 for (cp = path; *cp && *cp !=
'=' && *cp !=
'&'; cp++)
163 for (cp = path; *cp && *cp !=
'&'; cp++)
165 (*val)[no] = ret = (
char *)
odr_malloc(o, cp - path + 1);
166 while (*path && *path !=
'&')
Header for YAZ iconv interface.
char * odr_strdupn(ODR o, const char *str, size_t n)
char * odr_strdup(ODR o, const char *str)
void * odr_malloc(ODR o, size_t size)
void yaz_encode_uri_component(char *dst, const char *uri)
encodes URI component
static unsigned char decode_uri_char(const char *path, size_t *len)
static int hex_digit(int ch)
int yaz_uri_to_array(const char *path, ODR o, char ***name, char ***val)
void yaz_decode_uri_component(char *dst, const char *uri, size_t len)
decodes URI component
static void encode_uri_char(char *dst, char ch)
void yaz_array_to_uri(char **path, ODR o, char **name, char **value)
Header for YAZ iconv interface.