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;
}
예제 #2
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;
}
예제 #3
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));
}
예제 #4
0
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);
}