Пример #1
0
int fs_init(int argc, char **argv)
{
    char buf[PATH_MAX];
    int  len;
    char *ptr;
    sf_list_def_t def;

    if (fs.isinited) {
        sf_log(SF_LOG_WARN, "fs_init: filesystem already initialized.");
        return SF_OK;
    }

    sf_memzero(&def, sizeof(def));
    def.size = sizeof(struct directory);
    def.free = directory_close;
    sf_list_init(&fs.directories, &def);

#ifdef __WIN32__
    if (argv[0][1] == ':') {
#else
    if (argv[0][0] == '/') {
#endif
        strncpy(buf, argv[0], PATH_MAX);
    } else {
        len = PATH_MAX;
        getcwd(buf, len);
        len = strlen(buf);
        buf[len++] = seperator;
        buf[len] = '\0';
        strncat(buf, argv[0], PATH_MAX - len);
    }
    ptr = strrchr(buf, seperator);
    assert(ptr != NULL);
    *ptr = '\0';

    if (fs_cd(buf) != SF_OK) {
        sf_list_destroy(&fs.directories);
        return SF_ERR;
    }

    fs.isinited = 1;
    return SF_OK;
}

void fs_term(void)
{
    sf_list_destroy(&fs.directories);
}
Пример #2
0
int ui_toolbox_init(struct ui_toolbox *tb, int w, int h,
                    uint8_t r, uint8_t g, uint8_t b, uint8_t a) {
    sf_list_def_t def;

    ui_init((struct ui *) tb, w, h);
    tb->background_color[0] = r;
    tb->background_color[1] = g;
    tb->background_color[2] = b;
    tb->background_color[3] = a;

    sf_memzero(&def, sizeof(def));
    def.size = sizeof(struct ui *);
    if (sf_list_init(&tb->buttons, &def) != SF_OK) {
        return -1;
    }

    UI_CALLBACK(tb, render, ui_toolbox_on_render);
    UI_CALLBACK(tb, press, ui_toolbox_on_press);
    UI_CALLBACK(tb, resize, ui_toolbox_on_resize);
    UI_CALLBACK(tb, destroy, ui_toolbox_on_destroy);

    return 0;
}