Example #1
0
static void test_log_level(void)
{
    check_level("CRITICAL", LOG_LEVEL_CRIT);
    check_level("Error", LOG_LEVEL_ERR);
    check_level("warning", LOG_LEVEL_WARNING);
    check_level("notice", LOG_LEVEL_NOTICE);
    check_level("info", LOG_LEVEL_INFO);
    check_level("verbose", LOG_LEVEL_VERBOSE);
    check_level("debug", LOG_LEVEL_DEBUG);

    // LogLevelFromString should accept half typed strings:
    assert_int_equal(LogLevelFromString("CRIT"), LOG_LEVEL_CRIT);
    assert_int_equal(LogLevelFromString("ERR"), LOG_LEVEL_ERR);
    assert_int_equal(LogLevelFromString("warn"), LOG_LEVEL_WARNING);
    assert_int_equal(LogLevelFromString("I"), LOG_LEVEL_INFO);
    assert_int_equal(LogLevelFromString("i"), LOG_LEVEL_INFO);
    assert_int_equal(LogLevelFromString("information"), LOG_LEVEL_INFO);
    assert_int_equal(LogLevelFromString("v"), LOG_LEVEL_VERBOSE);

    //LogLevelFromString should return NOTHING in case of error:
    assert_int_equal(LogLevelFromString(""), LOG_LEVEL_NOTHING);
    assert_int_equal(LogLevelFromString("IX"), LOG_LEVEL_NOTHING);
    assert_int_equal(LogLevelFromString("Infotmation"), LOG_LEVEL_NOTHING);
}
Example #2
0
static int _ConfFileCallback(
    const char* path,
    unsigned int line,
    char** fields,
    size_t nfields,
    void* data,
    char* err,
    size_t errSize)
{
    Options* options = (Options*)data;
    const char* name;
    const char* value;

    if (nfields != 2)
    {
        Snprintf(err, errSize, "%s(%u): expected 2 fields", path, line);
        return -1;
    }

    name = fields[0];
    value = fields[1];

    if (strcmp(name, "port") == 0)
    {
        return StrToUShort(value, &options->port);
    }
    else if (strcmp(name, "noauth") == 0)
    {
        return StrToBool(value, &options->noauth);
    }
    else if (strcmp(name, "nodaemonize") == 0)
    {
        return StrToBool(value, &options->nodaemonize);
    }
    else if (strcmp(name, "dump") == 0)
    {
        return StrToBool(value, &options->dump);
    }
    else if (strcmp(name, "sockfile") == 0)
    {
        Strlcpy(options->sockfileBuf, value, sizeof(options->sockfileBuf));
        options->sockfile = options->sockfileBuf;
        return 0;
    }
    else if (strcmp(name, "loglevel") == 0)
    {
        return LogLevelFromString(value, &__logLevel);
    }
#if defined(ENABLE_SOCKTRACE)
    else if (strcmp(name, "logsockio") == 0)
    {
        return StrToBool(value, &__sockLog);
    }
#endif
    else if (strcmp(name, "logtostdout") == 0)
    {
        unsigned char flag;

        if (StrToBool(value, &flag) != 0)
            return -1;

        if (flag)
            LogSetStream(stdout);

        return 0;
    }

    Snprintf(err, errSize, "%s(%u): unknown option", path, line);
    return -1;
}
Example #3
0
static void _GetOptions(Options* options, int* argc, char** argv)
{
    GetOptState gos = GETOPTSTATE_INITIALIZER;
    int opt;

    while ((opt = GetOpt(&gos, *argc, argv, "hfp:u:isg:o:a:l:SkDPR")) != -1)
    {
        switch (opt)
        {
            case 'h':
            {
                PrintHelp(arg0);
                exit(0);
            }
            case 'p':
            {
                if (StrToUShort(gos.optarg, &options->port) != 0)
                    Err("invalid arg: -%c %s", opt, gos.optarg);

                break;
            }
            case 'u':
            {
                options->sockfile = gos.optarg;
                break;
            }
            case 'f':
            {
                options->nodaemonize = 1;
                break;
            }
#if defined(ENABLE_PIDFILE)
            case 's':
            {
                options->stop = 1;
                break;
            }
#endif /* defined(ENABLE_PIDFILE) */
            case 'P':
            {
                options->paths = 1;
                break;
            }
            case 'R':
            {
                options->roles = 1;
                break;
            }
#if defined(ENABLE_LOGGING)
            case 'l':
            {
                if (LogLevelFromString(gos.optarg, &__logLevel) != 0)
                    Err("invalid arg: -%c %s", opt, gos.optarg);

                break;
            }
            case 'S':
            {
                LogSetStream(stdout);
                break;
            }
#endif /* defined(ENABLE_LOGGING) */
#if defined(ENABLE_ROLES)
            case 'g':
            {
                if (RoleAddUser(PHIT_ROLE_GUEST, gos.optarg) != 0)
                    Err("invalid username: -%c %s", opt, gos.optarg);

                break;
            }
            case 'o':
            {
                if (RoleAddUser(PHIT_ROLE_OPERATOR, gos.optarg) != 0)
                    Err("invalid username: -%c %s", opt, gos.optarg);

                break;
            }
            case 'a':
            {
                if (RoleAddUser(PHIT_ROLE_ADMIN, gos.optarg) != 0)
                    Err("invalid username: -%c %s", opt, gos.optarg);

                break;
            }
#endif /* defined(ENABLE_ROLES) */
#if defined(ENABLE_SOCKTRACE)
            case 'k':
            {
                __sockLog = 1;
                break;
            }
#endif /* defined(ENABLE_SOCKTRACE) */
            case 'i':
            {
                options->noauth = 1;
                break;
            }
#if defined(ENABLE_DEBUG)
            case 'D':
            {
                options->dump = 1;
                break;
            }
#endif /* defined(ENABLE_DEBUG) */
            case ':':
            {
                Err("missing option argument: -%c", gos.optopt);
            }
            case '?':
            {
                Err("unknown option: -%c", gos.optopt);
            }
            default:
            {
                Err("unknown option: -%c", opt);
            }
        }
    }

    *argc = gos.optind;
}