1 // SPDX-License-Identifier: GPL-2.0+
3 * Copyright (c) 2009 FUJITSU LIMITED
4 * Author: Li Zefan <lizf@cn.fujitsu.com>
7 #define _POSIX_C_SOURCE 200809L
14 #include <sys/types.h>
17 /* NCHARS = 10 + 26 + 26 = 62 */
20 #define MAX_LEN2 (62 * 62)
21 #define MAX_LEN3 (62 * 62 * 62)
22 #define MAX_NAMES (MAX_LEN1 + MAX_LEN2 + MAX_LEN3)
24 /* valid characters for a directory name */
25 char chars[] = "0123456789qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM";
27 /* to store the generated directory name */
34 if (mkdirat(parent_fd, name, S_IRWXU)) {
41 * create_1 - create length-1 directory names
42 * @n: how name names to be created
49 for (i = 0; i < NCHARS; i++) {
58 * create_2 - generate length-2 directory names
59 * @n: how many names to be created
66 for (i = 0; i < NCHARS; i++) {
68 for (j = 0; j < NCHARS; j++) {
78 * create_3 - generate length-3 directory names
79 * @n: how many names to be created
86 for (i = 0; i < NCHARS; i++) {
88 for (j = 0; j < NCHARS; j++) {
90 for (k = 0; k < NCHARS; k++) {
102 fprintf(stderr, "Usage: create_short_dirs nr_dirs parent_dir\n");
106 * Create short-name directoriess
107 * @argv[1]: director number
108 * @argv[2]: the parent directory
110 int main(int argc, char *argv[])
117 names = atoi(argv[1]);
118 if (names > MAX_NAMES || names <= 0) {
123 parent_fd = open(argv[2], O_RDONLY);
124 if (parent_fd == -1) {
125 perror("open parent dir failed");
130 if (names <= MAX_LEN1)
135 if (names <= MAX_LEN2)