void saveCWDInPreferences()
{
    const char * keys[] = {"use", "previous"};
    char ** values = getPrefAttributesValues("//general/body/startup", keys, sizeof(keys) / sizeof(const char *));

    if (values)
    {
        if (values[0] && stricmp(values[0], "previous") == 0)
        {
            int err;
            char * cwd = scigetcwd(&err);

            if (!err && cwd && values[1] && strcmp(cwd, values[1]))
            {
                const char * kv[] = {"previous", cwd};
                setPrefAttributesValues("//general/body/startup", kv, sizeof(kv) / sizeof(const char *));
            }

            if (cwd)
            {
                FREE(cwd);
            }
        }
        if (values[0])
        {
            FREE(values[0]);
        }
        if (values[1])
        {
            FREE(values[1]);
        }
        FREE(values);
    }
}
Beispiel #2
0
/* ==================================================================== */
int getProxyValues(char **proxyHost, long *proxyPort, char **proxyUserPwd)
{
    const char * attrs[] = {"enabled", "host", "port", "user", "password"};
    const unsigned int N = sizeof(attrs) / sizeof(char*);
    char ** values = getPrefAttributesValues("//web/body/proxy", attrs, N);

    if (!values)
    {
        return 0;
    }

    if (stricmp(values[0]/*enabled*/, "true") == 0)
    {
        const unsigned int ulen = (const unsigned int)strlen(values[3]);
        const unsigned int plen = (const unsigned int)strlen(values[4]);

        *proxyHost = values[1]; //host;
        *proxyPort = strtol(values[2], NULL, 10); //port;
        FREE(values[2]);

        if (plen == 0)
        {
            *proxyUserPwd = values[3]; //user
        }
        else
        {
            *proxyUserPwd = (char *)MALLOC((ulen + 1 + plen + 1) * sizeof(char *));
            sprintf(*proxyUserPwd, "%s:%s", values[3]/*user*/, values[4]/*password*/);
            (*proxyUserPwd)[ulen + 1 + plen] = '\0';
            FREE(values[3]);
        }

        FREE(values[4]);
        FREE(values[0]);
        FREE(values);
    }
    else
    {
        freeArrayOfString(values, N);
        return 0;
    }

    return 1;
}