1 // SPDX-License-Identifier: GPL-2.0
3 * Copyright (c) 2000-2001 Silicon Graphics, Inc.
20 void mkf(int idx, int p);
23 main(int argc, char **argv)
37 if (strcmp(*argv, "-c") == 0) {
41 if (asize > 64 || asize < 1) {
42 fprintf(stderr, "bad alpha size %s\n", *argv);
45 } else if (strcmp(*argv, "-d") == 0) {
47 } else if (strcmp(*argv, "-l") == 0) {
52 fprintf(stderr, "bad name length %s\n", *argv);
55 } else if (strcmp(*argv, "-p") == 0) {
60 fprintf(stderr, "bad process count %s\n",
64 } else if (strcmp(*argv, "-n") == 0) {
66 } else if (strcmp(*argv, "-v") == 0) {
68 } else if (strcmp(*argv, "-h") == 0) {
71 fprintf(stderr,"unknown switch \"%s\"\n", *argv);
79 fprintf(stderr,"permname: usage %s [-c alpha size] [-l name length] "
80 "[-p proc count] [-n] [-v] [-d] [-h]\n", argv0);
81 fprintf(stderr," -n : don't actually perform action\n");
82 fprintf(stderr," -v : be verbose\n");
83 fprintf(stderr," -d : create directories, not files\n");
89 "alphabet size must be multiple of process count\n");
92 asplit = asize / nproc;
93 alpha = malloc(asize + 1);
94 buf = malloc(len + 1);
95 for (a = 0, tot = 1; a < len; a++)
97 if (vflag) fprintf(stderr,"[%d] ",pid);
99 "alpha size = %d, name length = %d, total files = %lld, nproc=%d\n",
100 asize, len, tot, nproc);
102 for (a = 0; a < asize; a++) {
106 alpha[a] = 'A' + a - 26;
108 alpha[a] = '0' + a - 52;
114 for (a = 0; a < nproc; a++) {
129 if (errno==ECHILD) break;
145 last = (idx == len - 1);
148 for (i = p * asplit; i < (p + 1) * asplit; i++) {
152 if (vflag) printf("[%d] mkdir %s\n", pid, buf);
154 if (mkdir(buf, 0777)<0) {
160 if (vflag) printf("[%d] touch %s\n", pid, buf);
162 int f=creat(buf, 0666);
175 for (i = 0; i < asize; i++) {