1 #include <stdio.h> 2 #include <unistd.h> 3 #include <stdlib.h> 4 #include <sys/stat.h> 5 #include <sys/types.h> 6 #include <fcntl.h> 7 #include "version.h" 8 #include "mknod.h" 9 10 int mknod_main (int argc, char **argv) { 11 int major=0, minor=0, dev=S_IFREG; 12 13 if (argc==3) { 14 if (strcmp(argv[2],"p")) return(mknod_argerror()); 15 } else { 16 if (argc==5) { 17 major=atoi(argv[3]); 18 minor=atoi(argv[4]); 19 } else { 20 return(mknod_argerror()); 21 } 22 } 23 24 switch (argv[2][0]) { 25 case 'p': 26 dev=S_IFIFO; 27 break; 28 case 'b': 29 dev=S_IFBLK; 30 break; 31 case 'u': 32 case 'c': 33 dev=S_IFCHR; 34 break; 35 default: 36 return(mknod_argerror()); 37 break; 38 } 39 40 if (mknod(argv[1], 0666 | dev, (major<<8)+minor)<0) { 41 write(STDERR_FILENO, "mknod: ", 7); 42 perror(argv[1]); 43 } 44 return(0); 45 } 46 47 int mknod_argerror(void) { 48 write(STDERR_FILENO, "mknod: insuffcient arguments\n", 29); 49 return(-1); 50 } |