Subversion Repositories Kolibri OS

Rev

Go to most recent revision | Blame | Last modification | View Log | Download | RSS feed

  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <sys/stat.h>
  4. #include <sys/types.h>
  5. #include <fcntl.h>
  6. #include <errno.h>
  7. #include <string.h>
  8.  
  9. int main(int argc, char *argv[])
  10. {
  11.     unsigned begin, end;
  12.     int pat_min, pat_max;
  13.     char *path;
  14.     if (argc == 6) {
  15.         path = argv[1];
  16.         sscanf(argv[2], "%u", &begin);
  17.         sscanf(argv[3], "%u", &end);
  18.         sscanf(argv[4], "%i", &pat_min);
  19.         sscanf(argv[5], "%i", &pat_max);
  20.     } else {
  21.         fprintf(stderr, "mkdirrange <directory> <num_begin> <num_end> <pat_min> <pat_max>\n"
  22.                         "pat_min + pat_max <= 244\n");
  23.         exit(1);
  24.     }
  25.  
  26.     int dirfd = open(path, O_DIRECTORY);
  27.     if (dirfd == -1) {
  28.         fprintf(stderr, "Can't open %s: %s\n", path, strerror(errno));
  29.         exit(1);
  30.     }
  31.     char dirname[256];
  32.     memset(dirname, 'x', 256);
  33.  
  34.     for(unsigned current = begin; current < end; current++) {
  35.         int length = sprintf(dirname, "d%10.10u_", current);
  36.         dirname[length] = 'x';
  37.         length += pat_min + (current % pat_max);
  38.         dirname[length] = '\0';
  39.         if(mkdirat(dirfd, dirname, 0755)) {
  40.             fprintf(stderr, "Can't mkdir %s: %s\n", dirname, strerror(errno));
  41.             exit(1);
  42.         } else {
  43.             dirname[length] = 'x';
  44.         }
  45.     }
  46.  
  47.     return 0;
  48. }
  49.