Example #1
0
il_opts il_opt_parse(int argc, char **argv)
{
    il_opts opts;
    memset(&opts, 0, sizeof(il_opts));
    for (int i = 1; i < argc; i++) {\
        if (argv[i][0] != '-') {
            il_string s = il_string_new(argv[i]);
            IL_APPEND(opts.args, s);
            continue;
        }
        il_opt opt;
        char *dot, *start = argv[i] + 1, *equals = strchr(start, '='),  *namestart = start, *nameend = argv[i] + strlen(argv[i]);
        il_string modname = {NULL, 0};
        il_string name    = {NULL, 0};
        il_string arg     = {NULL, 0};
        if (((dot = strchr(start, '.'))) && (!equals || dot < equals)) {
            modname = il_string_bin(start, dot - start);
            namestart = dot+1;
        }
        if (equals) {
            arg = il_string_new(equals+1);
            nameend = equals;
        }
        name = il_string_bin(namestart, nameend - namestart);
        opt = (il_opt){name, arg};
        do_opt(&opts, modname, opt);
    }
    return opts;
}
Example #2
0
int il_string_catchars(il_string *self, const char *chars)
{
    il_string *str = il_string_new(chars, strlen(chars)+1);
    int res = il_string_cat(self, str);
    il_string_unref(str);
    return res;
}
Example #3
0
il_modopts *il_opts_lookup(il_opts *self, char *name)
{
    for (unsigned i = 0; i < self->opts.length; i++) {
        if (il_string_cmp(il_string_new(name), self->opts.data[i].modname)) {
            return &self->opts.data[i];
        }
    }
    return NULL;
}