Initial revision
This commit is contained in:
56
parsetag.c
Normal file
56
parsetag.c
Normal file
@@ -0,0 +1,56 @@
|
||||
#include "myctype.h"
|
||||
#include "indep.h"
|
||||
#include "Str.h"
|
||||
#include "parsetag.h"
|
||||
|
||||
char *
|
||||
tag_get_value(struct parsed_tagarg *t, char *arg)
|
||||
{
|
||||
for (; t; t = t->next) {
|
||||
if (!strcasecmp(t->arg, arg))
|
||||
return t->value;
|
||||
}
|
||||
return NULL;
|
||||
}
|
||||
|
||||
int
|
||||
tag_exists(struct parsed_tagarg *t, char *arg)
|
||||
{
|
||||
for (; t; t = t->next) {
|
||||
if (!strcasecmp(t->arg, arg))
|
||||
return 1;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
struct parsed_tagarg *
|
||||
cgistr2tagarg(char *cgistr)
|
||||
{
|
||||
Str tag;
|
||||
Str value;
|
||||
struct parsed_tagarg *t0, *t;
|
||||
|
||||
t = t0 = NULL;
|
||||
do {
|
||||
t = New(struct parsed_tagarg);
|
||||
t->next = t0;
|
||||
t0 = t;
|
||||
tag = Strnew();
|
||||
while (*cgistr && *cgistr != '=' && *cgistr != '&')
|
||||
Strcat_char(tag, *cgistr++);
|
||||
t->arg = form_unquote(tag)->ptr;
|
||||
t->value = NULL;
|
||||
if (*cgistr == '\0')
|
||||
return t;
|
||||
else if (*cgistr == '=') {
|
||||
cgistr++;
|
||||
value = Strnew();
|
||||
while (*cgistr && *cgistr != '&')
|
||||
Strcat_char(value, *cgistr++);
|
||||
t->value = form_unquote(value)->ptr;
|
||||
}
|
||||
else if (*cgistr == '&')
|
||||
cgistr++;
|
||||
} while (*cgistr);
|
||||
return t;
|
||||
}
|
Reference in New Issue
Block a user