예제 #1
0
파일: cfg.c 프로젝트: los-t/cliht
ERROR_CODE cfg_init_from_cli(int argc, char **argv, Configuration *cfg) {
	char *equals_char = NULL;
	size_t arglen = 0;
	int i = 0;
	
	/* Clear the configuration first */
	cfg_free(cfg);

	assert(argc > 1);

	for(i = 1; i < argc; i++) {
		if (arg_is(argv[i], OPT_HELP)) {
			return ERR_CFG_HELPREQUEST;
		}

		equals_char = strchr(argv[i], '=');

		if (arg_is(argv[i], OPT_OUTPATH)) {
			if ( equals_char ) {
				/* option is '--opt=value' or '-o=value' */
				set_value(&cfg->lpath, ++equals_char);
			} else if (arg_is_short(argv[i], OPT_OUTPATH) &&
			           arglen > strlen(OPT_OUTPATH.sname)) {
				/* option is '-ovalue' */
				set_value(&cfg->lpath, argv[i] + strlen(OPT_OUTPATH.sname));
			} else {
				/* option is '-o value' or '--opt value' */
				i++;

				if (i == argc)
					return ERR_CFG_NOARGS;

				set_value(&cfg->lpath, argv[i]);
			}
		} else {
			/* We have a URI */
			set_value(&cfg->url, argv[i]);
		}
	}

	if (!cfg->lpath)
		set_value(&cfg->lpath, DFLT_OUTPUTPATH);

	return ERR_NONE;
}
예제 #2
0
파일: net.c 프로젝트: aragaer/wine
int wmain(int argc, const WCHAR* argv[])
{
    static const WCHAR helpW[]={'h','e','l','p',0};
    static const WCHAR shelpW[]={'/','h','e','l','p',0};
    static const WCHAR startW[]={'s','t','a','r','t',0};
    static const WCHAR stopW[]={'s','t','o','p',0};
    static const WCHAR useW[]={'u','s','e',0};

    if (argc < 2)
    {
        output_string(STRING_USAGE);
        return 1;
    }

    if(arg_is(argv[1], helpW))
    {
        if(argc > 3)
        {
            output_string(STRING_USAGE);
            return 1;
        }
        if(argc == 2)
            output_string(STRING_USAGE);
        else if(arg_is(argv[2], startW))
            output_string(STRING_START_USAGE);
        else if(arg_is(argv[2], stopW))
            output_string(STRING_STOP_USAGE);
        else
            output_string(STRING_USAGE);
    }
    else if(arg_is(argv[1], startW))
    {
        if(argc > 3)
        {
            output_string(STRING_START_USAGE);
            return 1;
        }
        if (argc == 2)
        {
            if (!net_enum_services())
                return 1;
        }
        else if(arg_is(argv[2], shelpW))
            output_string(STRING_START_USAGE);
        else if(!net_service(NET_START, argv[2]))
            return 1;
    }
    else if(arg_is(argv[1], stopW))
    {
        if(argc != 3)
        {
            output_string(STRING_STOP_USAGE);
            return 1;
        }
        if(arg_is(argv[2], shelpW))
            output_string(STRING_STOP_USAGE);
        else if(!net_service(NET_STOP, argv[2]))
            return 1;
    }
    else if(arg_is(argv[1], useW))
    {
        if(!net_use(argc, argv)) return 1;
    }
    else
        output_string(STRING_USAGE);

    return 0;
}