コード例 #1
0
ファイル: install-printf.c プロジェクト: Werkov/systemd
static int specifier_name(char specifier, void *data, void *userdata, char **ret) {
        const UnitFileInstallInfo *i = userdata;
        char *ans;

        assert(i);

        if (unit_name_is_valid(i->name, UNIT_NAME_TEMPLATE) && i->default_instance)
                return unit_name_replace_instance(i->name, i->default_instance, ret);

        ans = strdup(i->name);
        if (!ans)
                return -ENOMEM;
        *ret = ans;
        return 0;
}
コード例 #2
0
ファイル: getty-generator.c プロジェクト: RoadRunnr/systemd
static int add_serial_getty(const char *tty) {
        char *n;
        int r;

        assert(tty);

        log_debug("Automatically adding serial getty for /dev/%s.", tty);

        n = unit_name_replace_instance("[email protected]", tty);
        if (!n)
                return log_oom();

        r = add_symlink("[email protected]", n);
        free(n);

        return r;
}
コード例 #3
0
ファイル: analyze-verify.c プロジェクト: KarlHerler/systemd
static int prepare_filename(const char *filename, char **ret) {
        int r;
        const char *name;
        _cleanup_free_ char *abspath = NULL;
        _cleanup_free_ char *dir = NULL;
        _cleanup_free_ char *with_instance = NULL;
        char *c;

        assert(filename);
        assert(ret);

        r = path_make_absolute_cwd(filename, &abspath);
        if (r < 0)
                return r;

        name = basename(abspath);
        if (!unit_name_is_valid(name, UNIT_NAME_ANY))
                return -EINVAL;

        if (unit_name_is_valid(name, UNIT_NAME_TEMPLATE)) {
                r = unit_name_replace_instance(name, "i", &with_instance);
                if (r < 0)
                        return r;
        }

        dir = dirname_malloc(abspath);
        if (!dir)
                return -ENOMEM;

        if (with_instance)
                c = path_join(NULL, dir, with_instance);
        else
                c = path_join(NULL, dir, name);
        if (!c)
                return -ENOMEM;

        *ret = c;
        return 0;
}
コード例 #4
0
ファイル: test-unit-name.c プロジェクト: michich/systemd
static void test_u_n_r_i_one(const char *pattern, const char *repl, const char *expected, int ret) {
        _cleanup_free_ char *t = NULL;
        assert_se(unit_name_replace_instance(pattern, repl, &t) == ret);
        puts(strna(t));
        assert_se(streq_ptr(t, expected));
}