Lines Matching +full:4 +full:- +full:line

1 /*-
2 * SPDX-License-Identifier: BSD-3-Clause
4 * Copyright (c) 1998 Dag-Erling Smørgrav
48 fprintf(stderr, "usage: chkgrp [-q] [groupfile]\n"); in usage()
61 const char *cp, *f[4], *gfn, *p; in main()
62 char *line; in main() local
65 while ((opt = getopt(argc, argv, "q")) != -1) { in main()
75 argc -= optind; in main()
89 /* check line by line */ in main()
91 if ((line = fgetln(gf, &len)) == NULL) in main()
93 if (len > 0 && line[len - 1] != '\n') { in main()
94 warnx("%s: line %d: no newline character", gfn, n); in main()
97 while (len && isspace(line[len-1])) in main()
98 len--; in main()
101 for (p = line; p < line + len; p++) in main()
107 * Hack: special case for + line in main()
109 if (strncmp(line, "+:::", len) == 0 || in main()
110 strncmp(line, "+:*::", len) == 0) in main()
114 * A correct group entry has four colon-separated fields, in main()
118 for (i = k = 0; k < 4; k++) { in main()
119 for (f[k] = line + i; i < len && line[i] != ':'; i++) in main()
121 if (k < 3 && line[i] != ':') in main()
123 line[i++] = 0; in main()
126 if (k < 4) { in main()
127 warnx("%s: line %d: missing field(s)", gfn, n); in main()
128 while (k < 4) in main()
135 *cp != '-' && (cp > f[0] || *cp != '+')) { in main()
136 warnx("%s: line %d: '%c' invalid character", in main()
144 *cp != '-' && *cp != ',') { in main()
145 warnx("%s: line %d: '%c' invalid character", in main()
153 warnx("%s: line %d: too many fields", gfn, n); in main()
158 for (k = 0; k < 4; k++) { in main()
160 warnx("%s: line %d: field %d contains whitespace", in main()
168 warnx("%s: line %d: group id is not numeric", gfn, n); in main()
176 warnx("%s: line %d: strtoul failed", gfn, n); in main()
178 warnx("%s: line %d: group id is too large (%ju > %ju)", in main()
186 err(EX_IOERR, "%s: line %d", gfn, n); in main()