예제 #1
0
파일: ps.c 프로젝트: DeforaOS/utils
/* main */
int main(int argc, char * argv[])
{
	Prefs prefs;
	int o;
	char * p;

	memset(&prefs, 0, sizeof(prefs));
	prefs.pid = -1;
	while((o = getopt(argc, argv, "g:p:u:")) != -1)
		switch(o)
		{
			case 'g':
				prefs.group = optarg;
				break;
			case 'p':
				prefs.pid = strtol(optarg, &p, 0);
				if(optarg[0] == '\0' || *p != '\0'
						|| prefs.pid < 0)
					return _usage();
				break;
			case 'u':
				prefs.username = optarg;
				break;
			default:
				return _usage();
		}
	if(optind != argc)
		return _usage();
	return (_ps(&prefs) == 0) ? 0 : 2;
}
예제 #2
0
void _ps(const char * b, const char * e, char * buf, int i)
{
    if (b == e) {
        if (i == 0) {
            std::cout << "[]\n";
        } else {
            buf[i] = 0;
            std::cout << buf << '\n';
        }
        return;
    }

    buf[i] = *b;
    _ps(b + 1, e, buf, i + 1);

    _ps(b + 1, e, buf, i);
}
예제 #3
0
void print_powerset(const char * str)
{
    if (!str || !*str) {
        std::cout << "[]\n";
        return;
    }

    size_t len = strlen(str);
    char * buf = new char[len+1];
    _ps(str, str + len, buf, 0);
    delete[] buf;
}