15 #define PARSE_DELIM ":,"
17 int parse_quota_types(const char *in_str, unsigned int *qtype_bits,
20 char *buf, *token, *next, *tmp;
21 unsigned int qtype = *qtype_bits;
28 buf = malloc(len + 1);
33 for (token = buf, next = strtok_r(buf, PARSE_DELIM, &tmp);
34 token && *token; token = next) {
42 if (!strcmp(p, "usr") || !strcmp(p, "usrquota")) {
44 qtype &= ~QUOTA_USR_BIT;
46 qtype |= QUOTA_USR_BIT;
47 } else if (!strcmp(p, "grp") || !strcmp(p, "grpquota")) {
49 qtype &= ~QUOTA_GRP_BIT;
51 qtype |= QUOTA_GRP_BIT;
52 } else if (!strcmp(p, "prj") || !strcmp(p, "prjquota")) {
54 qtype &= ~QUOTA_PRJ_BIT;
56 qtype |= QUOTA_PRJ_BIT;
59 *err_token = malloc(strlen(token) + 1);
61 strcpy(*err_token, token);
67 printf("word: %s\n", token);
69 next = strtok_r(NULL, PARSE_DELIM, &tmp);
78 int main(int argc, char **argv)
80 unsigned int qtype_bits = 0;
84 ret = parse_quota_types(argv[1], &qtype_bits, &err_token);
85 printf("parse_quota_types returns %d, %d\n", ret, qtype_bits);
87 printf("err_token is %s\n", err_token);