qse/samples/cmn/env01.c

136 lines
3.6 KiB
C

#include <qse/cmn/env.h>
#include <qse/cmn/mem.h>
#include <qse/cmn/str.h>
#include <qse/si/sio.h>
#define R(f) \
do { \
qse_printf (QSE_T("== %s ==\n"), QSE_T(#f)); \
if (f() == -1) return -1; \
} while (0)
static void dump (qse_env_t* env)
{
const qse_env_char_t* envstr;
qse_env_char_t** envarr;
envstr = qse_env_getstr (env);
#if (defined(QSE_ENV_CHAR_IS_WCHAR) && defined(QSE_CHAR_IS_WCHAR)) || \
(defined(QSE_ENV_CHAR_IS_MCHAR) && defined(QSE_CHAR_IS_MCHAR))
while (*envstr != QSE_T('\0'))
{
qse_printf (QSE_T("%p [%s]\n"), envstr, envstr);
envstr += qse_strlen(envstr) + 1;
}
#elif defined(QSE_ENV_CHAR_IS_WCHAR)
while (*envstr != QSE_WT('\0'))
{
qse_printf (QSE_T("%p [%S]\n"), envstr, envstr);
envstr += qse_wcslen(envstr) + 1;
}
#else
while (*envstr != QSE_MT('\0'))
{
qse_printf (QSE_T("%p [%S]\n"), envstr, envstr);
envstr += qse_mbslen(envstr) + 1;
}
#endif
qse_printf (QSE_T("-------------\n"));
envarr = qse_env_getarr (env);
while (*envarr)
{
#if (defined(QSE_ENV_CHAR_IS_WCHAR) && defined(QSE_CHAR_IS_WCHAR)) || \
(defined(QSE_ENV_CHAR_IS_MCHAR) && defined(QSE_CHAR_IS_MCHAR))
qse_printf (QSE_T("%p [%s]\n"), *envarr, *envarr);
#else
qse_printf (QSE_T("%p [%S]\n"), *envarr, *envarr);
#endif
envarr++;
}
}
static int test1 (void)
{
qse_env_t* env;
env = qse_env_open (QSE_MMGR_GETDFL(), 0, 0);
qse_env_clear (env);
qse_env_insert (env, QSE_T("alice"), QSE_T("wonderland"));
qse_env_insert (env, QSE_T("cool"), QSE_T("mint"));
qse_env_insert (env, QSE_T("smurf"), QSE_T("happy song"));
qse_env_insert (env, QSE_T("donkey"), QSE_T("mule"));
qse_env_insert (env, QSE_T("lily"), QSE_T("rose"));
qse_env_clear (env);
qse_env_insert (env, QSE_T("alice"), QSE_T("wonderland"));
qse_env_insert (env, QSE_T("cool"), QSE_T("mint"));
qse_env_insert (env, QSE_T("smurf"), QSE_T("happy song"));
qse_env_insert (env, QSE_T("donkey"), QSE_T("mule"));
qse_env_insert (env, QSE_T("lily"), QSE_T("rose"));
qse_env_delete (env, QSE_T("cool"));
qse_env_insert (env, QSE_T("spider"), QSE_T("man"));
dump (env);
qse_env_close (env);
return 0;
}
static int test2 (void)
{
qse_env_t* env;
env = qse_env_open (QSE_MMGR_GETDFL(), 0, 1);
qse_printf (QSE_T("DELETING HOME => %s\n"),
(qse_env_delete (env, QSE_T("HOME")) == 0?
QSE_T("SUCCESS"): QSE_T("FAILURE"))
);
qse_printf (QSE_T("DELETING wolf => %s\n"),
(qse_env_delete (env, QSE_T("wolf")) == 0?
QSE_T("SUCCESS"): QSE_T("FAILURE"))
);
dump (env);
qse_env_close (env);
return 0;
}
static int test3 (void)
{
qse_env_t* env;
env = qse_env_open (QSE_MMGR_GETDFL(), 0, 0);
qse_printf (QSE_T("appending to PATH => %d\n"), qse_env_append (env, QSE_T("xxx"))); /* this should fail as there's no item in the environment */
qse_printf (QSE_T("inserting PATH => %d\n"), qse_env_insert (env, QSE_T("PATH"), QSE_NULL));
qse_printf (QSE_T("appending to PATH => %d\n"), qse_env_append (env, QSE_T(":/usr/xxx/bin:/tmp/bin:/var/lib/qse/bin/sbin/test/bin")));
qse_printf (QSE_T("appending to PATH => %d\n"), qse_env_append (env, QSE_T("")));
qse_printf (QSE_T("inserting HOME => %d\n"), qse_env_insertmbs (env, QSE_MT("HOME"), QSE_NULL));
qse_printf (QSE_T("inserting USER => %d\n"), qse_env_insertwcs (env, QSE_WT("USER"), QSE_NULL));
qse_printf (QSE_T("inserting WHAT => %d\n"), qse_env_insert (env, QSE_T("WHAT"), QSE_NULL));
qse_printf (QSE_T("inserting an empty string => %d\n"), qse_env_insert (env, QSE_T(""), QSE_NULL));
dump (env);
qse_env_close (env);
return 0;
}
int main ()
{
qse_open_stdsios();
R (test1);
R (test2);
R (test3);
qse_close_stdsios();
return 0;
}