int *full,
int *full, int *canon,
static int httpd__meta_build_path(struct Con *con, Httpd_req_data *req,                                  Conf_parse *conf, Conf_token *token,                                  int *full,                                  unsigned int *lim, Vstr_ref **ret_ref){  unsigned int depth = token->depth_num;  ASSERT(ret_ref && !*ret_ref);    if (token->type != CONF_TOKEN_TYPE_SLIST)    return (TRUE);  while (conf_token_list_num(token, depth))  {    int clist = FALSE;        CONF_SC_PARSE_DEPTH_TOKEN_RET(conf, token, depth, TRUE);    CONF_SC_TOGGLE_CLIST_VAR(clist);    if (0) { }    else if (full && (OPT_SERV_SYM_EQ("skip-virtual-hosts") ||                      OPT_SERV_SYM_EQ("skip-vhosts")))      OPT_SERV_X_TOGGLE(*full);    else if (full && OPT_SERV_SYM_EQ("skip-document-root"))      OPT_SERV_X_TOGGLE(req->skip_document_root);    else if (OPT_SERV_SYM_EQ("limit"))    {      CONF_SC_PARSE_TOP_TOKEN_RET(conf, token, FALSE);      vstr_ref_del(*ret_ref); *ret_ref = NULL;      if (token->type >= CONF_TOKEN_TYPE_USER_BEG)      {        unsigned int type = token->type - CONF_TOKEN_TYPE_USER_BEG;        unsigned int nxt = 0;        Vstr_ref *ref = conf_token_get_user_value(conf, token, &nxt);            switch (type)        {          case HTTPD_POLICY_REQ_PATH_BEG:          case HTTPD_POLICY_REQ_PATH_END:          case HTTPD_POLICY_REQ_PATH_EQ:          case HTTPD_POLICY_REQ_NAME_BEG:          case HTTPD_POLICY_REQ_NAME_END:          case HTTPD_POLICY_REQ_NAME_EQ:                      case HTTPD_POLICY_REQ_BWEN_BEG:          case HTTPD_POLICY_REQ_BWEN_END:          case HTTPD_POLICY_REQ_BWEN_EQ:                      case HTTPD_POLICY_REQ_BWES_BEG:          case HTTPD_POLICY_REQ_BWES_END:          case HTTPD_POLICY_REQ_BWES_EQ:                      case HTTPD_POLICY_REQ_EXTN_BEG:          case HTTPD_POLICY_REQ_EXTN_END:          case HTTPD_POLICY_REQ_EXTN_EQ:                      case HTTPD_POLICY_REQ_EXTS_BEG:          case HTTPD_POLICY_REQ_EXTS_END:          case HTTPD_POLICY_REQ_EXTS_EQ:            *lim = httpd_policy_path_req2lim(type);            break;          default:            vstr_ref_del(ref);            return (FALSE);        }        *ret_ref = ref;        if (nxt && !conf_parse_num_token(conf, token, nxt))          return (FALSE);      }        else if (OPT_SERV_SYM_EQ("<none>") || OPT_SERV_SYM_EQ("none"))        *lim = HTTPD_POLICY_PATH_LIM_NONE;      else if (OPT_SERV_SYM_EQ("<path>") || OPT_SERV_SYM_EQ("path"))        *lim = HTTPD_POLICY_PATH_LIM_PATH_FULL;      else if (OPT_SERV_SYM_EQ("<basename>") || OPT_SERV_SYM_EQ("basename"))        *lim = HTTPD_POLICY_PATH_LIM_NAME_FULL;      else if (OPT_SERV_SYM_EQ("<extension>") || OPT_SERV_SYM_EQ("extension"))        *lim = HTTPD_POLICY_PATH_LIM_EXTN_FULL;      else if (OPT_SERV_SYM_EQ("<extensions>") || OPT_SERV_SYM_EQ("extensions"))        *lim = HTTPD_POLICY_PATH_LIM_EXTS_FULL;      else if (OPT_SERV_SYM_EQ("<basename-without-extension>") ||               OPT_SERV_SYM_EQ("basename-without-extension"))        *lim = HTTPD_POLICY_PATH_LIM_BWEN_FULL;      else if (OPT_SERV_SYM_EQ("<basename-without-extensions>") ||               OPT_SERV_SYM_EQ("basename-without-extensions"))        *lim = HTTPD_POLICY_PATH_LIM_BWES_FULL;      else      {        unsigned int type = HTTPD_POLICY_REQ_PATH_BEG;                if (0) { }        else if (OPT_SERV_SYM_EQ("<path>-beg") || OPT_SERV_SYM_EQ("path-beg"))          type = HTTPD_POLICY_REQ_PATH_BEG;        else if (OPT_SERV_SYM_EQ("<path>-end") || OPT_SERV_SYM_EQ("path-end"))          type = HTTPD_POLICY_REQ_PATH_END;        else if (OPT_SERV_SYM_EQ("<path>-eq") || OPT_SERV_SYM_EQ("path-eq") ||                 OPT_SERV_SYM_EQ("<path>==") || OPT_SERV_SYM_EQ("path=="))          type = HTTPD_POLICY_REQ_PATH_EQ;        else if (OPT_SERV_SYM_EQ("<basename>-beg") ||                 OPT_SERV_SYM_EQ("basename-beg") ||                 OPT_SERV_SYM_EQ("<basename>==") ||                 OPT_SERV_SYM_EQ("basename=="))          type = HTTPD_POLICY_REQ_NAME_BEG;        else if (OPT_SERV_SYM_EQ("<basename>-end") ||                 OPT_SERV_SYM_EQ("basename-end"))          type = HTTPD_POLICY_REQ_NAME_END;        else if (OPT_SERV_SYM_EQ("<basename>-eq") ||                 OPT_SERV_SYM_EQ("basename-eq") ||                 OPT_SERV_SYM_EQ("<basename>==") ||                 OPT_SERV_SYM_EQ("basename=="))          type = HTTPD_POLICY_REQ_NAME_EQ;        else if (OPT_SERV_SYM_EQ("<extension>-beg") ||                 OPT_SERV_SYM_EQ("extension-beg"))          type = HTTPD_POLICY_REQ_EXTN_BEG;        else if (OPT_SERV_SYM_EQ("<extension>-end") ||                 OPT_SERV_SYM_EQ("extension-end"))          type = HTTPD_POLICY_REQ_EXTN_END;        else if (OPT_SERV_SYM_EQ("<extension>-eq") || OPT_SERV_SYM_EQ("extension-eq") ||                 OPT_SERV_SYM_EQ("<extension>==") || OPT_SERV_SYM_EQ("extension=="))          type = HTTPD_POLICY_REQ_EXTN_EQ;        else if (OPT_SERV_SYM_EQ("<extensions>-beg") || OPT_SERV_SYM_EQ("extensions-beg"))          type = HTTPD_POLICY_REQ_EXTS_BEG;        else if (OPT_SERV_SYM_EQ("<extensions>-end") || OPT_SERV_SYM_EQ("extensions-end"))          type = HTTPD_POLICY_REQ_EXTS_END;        else if (OPT_SERV_SYM_EQ("<extensions>-eq") || OPT_SERV_SYM_EQ("extensions-eq") ||                 OPT_SERV_SYM_EQ("<extensions>==") || OPT_SERV_SYM_EQ("extensions=="))          type = HTTPD_POLICY_REQ_EXTS_EQ;        else if (OPT_SERV_SYM_EQ("<basename-without-extension>-beg") ||                 OPT_SERV_SYM_EQ("basename-without-extension-beg"))          type = HTTPD_POLICY_REQ_BWEN_BEG;        else if (OPT_SERV_SYM_EQ("<basename-without-extension>-end") ||                 OPT_SERV_SYM_EQ("basename-without-extension-end"))          type = HTTPD_POLICY_REQ_BWEN_END;        else if (OPT_SERV_SYM_EQ("<basename-without-extension>-eq") ||                 OPT_SERV_SYM_EQ("basename-without-extension-eq") ||                 OPT_SERV_SYM_EQ("<basename-without-extension>==") ||                 OPT_SERV_SYM_EQ("basename-without-extension=="))          type = HTTPD_POLICY_REQ_BWEN_EQ;        else if (OPT_SERV_SYM_EQ("<basename-without-extensions>-beg") ||                 OPT_SERV_SYM_EQ("basename-without-extensions-beg"))          type = HTTPD_POLICY_REQ_BWES_BEG;        else if (OPT_SERV_SYM_EQ("<basename-without-extensions>-end") ||                 OPT_SERV_SYM_EQ("basename-without-extensions-end"))          type = HTTPD_POLICY_REQ_BWES_END;        else if (OPT_SERV_SYM_EQ("<basename-without-extensions>-eq") ||                 OPT_SERV_SYM_EQ("basename-without-extensions-eq") ||                 OPT_SERV_SYM_EQ("<basename-without-extensions>==") ||                 OPT_SERV_SYM_EQ("basename-without-extensions=="))          type = HTTPD_POLICY_REQ_BWES_EQ;        else          return (FALSE);                if (!httpd_policy_path_make(con, req, conf, token, type, ret_ref))           return (FALSE);                *lim = httpd_policy_path_req2lim(type);      }    }    else      return (FALSE);  }    CONF_SC_PARSE_DEPTH_TOKEN_RET(conf, token, depth - 1, FALSE);  return (TRUE);}