- if (strcmp(group, "root") == 0)
- return 0;
- errno = 0;
- getgrnam_r(group, &grbuf, buf, buflen, &gr);
- if (gr == NULL) {
+ if (strcmp(group, "root") == 0)
+ return 0;
+ gid = strtoul(group, &endptr, 10);
+ if (endptr[0] == '\0')
+ return gid;
+
+ errno = 0;
+ getgrnam_r(group, &grbuf, buf, buflen, &gr);
+ if (gr != NULL)
+ return gr->gr_gid;