in src/generic/url.c [199:258]
int parseUrlFormat(Tcl_Interp * interp, Tcl_Obj * list)
{
int objc = -1;
Tcl_Obj **objv = NULL;
int i = -1;
int res = 0;
TCLCONST char *accepted[20];
enum urlElement e;
/* --------------------------------------------------------------------------
* minimal
* ----------------------------------------------------------------------- */
if (list == NULL) {
LOG_MSG(interp, WRITE_LOG | SET_RESULT,
__FILE__, __LINE__,
"web::cmdurl -urlformat", WEBLOG_ERROR,
"cannot access list", NULL);
return 0;
}
for (e = SCHEME; e <= QUERYSTRING; e++)
accepted[e] = &(urlElementOpts[e][1]);
accepted[e] = NULL;
/* --------------------------------------------------------------------------
* convert list to array of objs
* ----------------------------------------------------------------------- */
if (Tcl_ListObjGetElements(interp, list, &objc, &objv) == TCL_ERROR) {
LOG_MSG(interp, WRITE_LOG | SET_RESULT,
__FILE__, __LINE__,
"web::cmdurl -urlformat", WEBLOG_ERROR,
"cannot convert \"", Tcl_GetString(list), "\" to list", NULL);
return 0;
}
/* empty list */
if (objc == 0) {
Tcl_SetResult(interp, "no url elements specified", TCL_STATIC);
return 0;
}
/* --------------------------------------------------------------------------
* now see what we got
* ----------------------------------------------------------------------- */
for (i = 0; i < objc; i++) {
int idx = 0;
if (Tcl_GetIndexFromObj(interp,
objv[i],
accepted,
"url element", 0, &idx) == TCL_ERROR)
return 0;
else {
res |= urlElementFlags[idx];
}
}
return res;
}