Example #1
0
void udev_config_init(void) {
    const char* env;

    strcpy(udev_root, UDEV_ROOT);
    strcpy(udev_config_filename, UDEV_CONFIG_FILE);
    strcpy(udev_rules_dir, UDEV_RULES_DIR);
    udev_log_priority = LOG_ERR;
    udev_run = 1;

    /* disable RUN key execution */
    env = getenv("UDEV_RUN");

    if (env && !string_is_true(env)) {
        udev_run = 0;
    }

    env = getenv("UDEV_CONFIG_FILE");

    if (env) {
        strlcpy(udev_config_filename, env, sizeof(udev_config_filename));
        remove_trailing_chars(udev_config_filename, '/');
    }

    parse_config_file();

    env = getenv("UDEV_ROOT");

    if (env) {
        strlcpy(udev_root, env, sizeof(udev_root));
        remove_trailing_chars(udev_root, '/');
    }

    env = getenv("UDEV_LOG");

    if (env) {
        udev_log_priority = log_priority(env);
    }

    dbg("UDEV_CONFIG_FILE='%s'", udev_config_filename);
    dbg("udev_root='%s'", udev_root);
    dbg("udev_rules='%s'", udev_rules_dir);
    dbg("udev_log=%d", udev_log_priority);
}
Example #2
0
/**
 * teamdctl_alloc:
 *
 * Allocates library context and does initial setup.
 *
 * Returns: new libteam library context
 **/
TEAMDCTL_EXPORT
struct teamdctl *teamdctl_alloc(void)
{
	struct teamdctl *tdc;
	const char *env;

	tdc = myzalloc(sizeof(*tdc));
	if (!tdc)
		return NULL;

	tdc->log_fn = log_stderr;
	tdc->log_priority = LOG_ERR;
	/* environment overwrites config */
	env = getenv("TEAMDCTL_LOG");
	if (env != NULL)
		teamdctl_set_log_priority(tdc, log_priority(env));

	dbg(tdc, "teamdctl %p created.", tdc);
	dbg(tdc, "log_priority=%d", tdc->log_priority);
	return tdc;
}
Example #3
0
void log_message (int priority, const char *format, ...)
{
	va_list args;
	static int udev_log = -1;

	if (udev_log == -1) {
		const char *value;

		value = getenv("UDEV_LOG");
		if (value)
			udev_log = log_priority(value);
		else
			udev_log = LOG_ERR;
	}

	if (priority > udev_log)
		return;

	va_start(args, format);
	vsyslog(priority, format, args);
	va_end(args);
}
Example #4
0
int optimsoc_log_new(struct optimsoc_log_ctx **ctx)
{
    const char *env;
    struct optimsoc_log_ctx *c;

    c = calloc(1, sizeof(struct optimsoc_log_ctx));
    if (!c)
        return -ENOMEM;

    c->log_fn = log_stderr;
    c->log_priority = LOG_ERR;

    /* environment overwrites config */
    env = getenv("OPTIMSOC_LOG");
    if (env != NULL) {
        c->log_priority = log_priority(env);
    }

    *ctx = c;
    dbg(c, "log_priority=%d\n", c->log_priority);

    return 0;
}
Example #5
0
static int parse_config_file(void) {
    char line[LINE_SIZE];
    char* bufline;
    char* linepos;
    char* variable;
    char* value;
    char* buf;
    size_t bufsize;
    size_t cur;
    size_t count;
    int lineno;
    int retval = 0;

    if (file_map(udev_config_filename, &buf, &bufsize) != 0) {
        err("can't open '%s' as config file: %s", udev_config_filename, strerror(errno));
        return -ENODEV;
    }

    /* loop through the whole file */
    lineno = 0;
    cur = 0;

    while (cur < bufsize) {
        count = buf_get_line(buf, bufsize, cur);
        bufline = &buf[cur];
        cur += count + 1;
        lineno++;

        if (count >= sizeof(line)) {
            err("line too long, conf line skipped %s, line %d", udev_config_filename, lineno);
            continue;
        }

        /* eat the whitespace */
        while ((count > 0) && isspace(bufline[0])) {
            bufline++;
            count--;
        }

        if (count == 0) {
            continue;
        }

        /* see if this is a comment */
        if (bufline[0] == COMMENT_CHARACTER) {
            continue;
        }

        memcpy(line, bufline, count);
        line[count] = '\0';

        linepos = line;
        retval = get_key(&linepos, &variable, &value);

        if (retval != 0) {
            err("error parsing %s, line %d:%d", udev_config_filename, lineno, (int)(linepos - line));
            continue;
        }

        if (strcasecmp(variable, "udev_root") == 0) {
            strlcpy(udev_root, value, sizeof(udev_root));
            remove_trailing_chars(udev_root, '/');
            continue;
        }

        if (strcasecmp(variable, "udev_rules") == 0) {
            strlcpy(udev_rules_dir, value, sizeof(udev_rules_dir));
            remove_trailing_chars(udev_rules_dir, '/');
            continue;
        }

        if (strcasecmp(variable, "udev_log") == 0) {
            udev_log_priority = log_priority(value);
            continue;
        }
    }

    file_unmap(buf, bufsize);
    return retval;
}