static int addEnv(void *pObj, void *pUData, const char *pKey, int iKeyLen) { IEnv *pEnv = (IEnv *)pUData; ls_strpair_t *pPair = (ls_strpair_t *)pObj; pEnv->add(ls_str_cstr(&pPair->key), ls_str_len(&pPair->key), ls_str_cstr(&pPair->val), ls_str_len(&pPair->val)); return 0; }
//return 0 for correctly parsing static int testparam_parseList(ls_objarray_t *pList, param_st *pConfig) { int count = ls_objarray_getsize(pList); assert(count > 0); unsigned long maxParamNum = 0; ls_str_t *p = (ls_str_t *)ls_objarray_getobj(pList, 0); if (ls_str_len(p) != 6 || strncmp("param", ls_str_cstr(p), 5) != 0) return -2; //Comment: case param2, maxParamNum is 2, the line should be param2 [21 [22]], //in this way, count is 3, or 2 or 1 maxParamNum = (unsigned long)strtol(ls_str_cstr(p) + 5, NULL, 10); if (maxParamNum > 5) maxParamNum = 0; long val; int i; for (i = 1; i < count && i < maxParamNum + 1; ++i) { p = (ls_str_t *)ls_objarray_getobj(pList, i); val = strtol(ls_str_cstr(p), NULL, 10); int *pParam; switch (maxParamNum) { case 1: pParam = &pConfig->param1; break; case 2: pParam = &pConfig->param21 + (i - 1); break; case 3: pParam = &pConfig->param31 + (i - 1); break; case 4: pParam = &pConfig->param41 + (i - 1); break; case 5: pParam = &pConfig->param51 + (i - 1); break; } *pParam = val; } return 0; }
ls_str_t *ls_str_copy(ls_str_t *dest, const ls_str_t *src) { assert(dest && src); return ls_str(dest, ls_str_cstr(src), ls_str_len(src)); }
ls_str_t *ls_str_xcopy(ls_str_t *dest, const ls_str_t *src, ls_xpool_t *pool) { assert(dest && src); return ls_str_x(dest, ls_str_cstr(src), ls_str_len(src), pool); }