Magellan Linux

Diff of /trunk/mkinitrd-magellan/klibc/usr/utils/mknod.c

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 814 by niro, Sat Sep 1 22:45:15 2007 UTC revision 815 by niro, Fri Apr 24 18:32:46 2009 UTC
# Line 1  Line 1 
1  #include <stdio.h>  #include <stdio.h>
2  #include <stdlib.h>  #include <stdlib.h>
3    #include <string.h>
4  #include <sys/stat.h>  #include <sys/stat.h>
5    
6  char *progname;  char *progname;
7    
8  static __noreturn usage(void)  static __noreturn usage(void)
9  {  {
10   fprintf(stderr, "Usage: %s name {b|c|p} major minor\n", progname);   fprintf(stderr, "Usage: %s [-m mode] name {b|c|p} major minor\n",
11     progname);
12   exit(1);   exit(1);
13  }  }
14    
15  int main(int argc, char *argv[])  int main(int argc, char *argv[])
16  {  {
17   char *name, *type, typec, *endp;   char *name, *type, typec, *endp;
18   unsigned int major, minor;   unsigned int major_num, minor_num;
19   mode_t mode;   mode_t mode, mode_set = 0;
20   dev_t dev;   dev_t dev;
21    
22   progname = *argv++;   progname = *argv++;
23    
24     if (argv[0][0] == '-' && argv[0][1] == 'm' && !argv[0][2]) {
25     mode_set = strtoul(argv[1], &endp, 8);
26     argv += 2;
27     }
28    
29   name = *argv++;   name = *argv++;
30   if (!name)   if (!name)
31   usage();   usage();
# Line 49  int main(int argc, char *argv[]) Line 56  int main(int argc, char *argv[])
56   if (!argv[0] || !argv[1])   if (!argv[0] || !argv[1])
57   usage();   usage();
58    
59   major = strtol(*argv++, &endp, 0);   major_num = strtol(*argv++, &endp, 0);
60   if (*endp != '\0')   if (*endp != '\0')
61   usage();   usage();
62   minor = strtol(*argv++, &endp, 0);   minor_num = strtol(*argv++, &endp, 0);
63   if (*endp != '\0')   if (*endp != '\0')
64   usage();   usage();
65   dev = makedev(major, minor);   dev = makedev(major_num, minor_num);
66   }   }
67    
68   if (*argv)   if (*argv)
# Line 66  int main(int argc, char *argv[]) Line 73  int main(int argc, char *argv[])
73   exit(1);   exit(1);
74   }   }
75    
76     if (mode_set && chmod(name, mode_set)) {
77     perror("chmod");
78     exit(1);
79     }
80    
81   exit(0);   exit(0);
82  }  }

Legend:
Removed from v.814  
changed lines
  Added in v.815