#include #include #include #include #include #include #include #include "util.h" static void usage(void) { eprintf("usage: mknod [-m mode] name type major minor\n"); } int main(int argc, char **argv) { mode_t type, mode = 0644; mode_t types['u'+1]; dev_t dev; types['u'] = types['c'] = S_IFCHR; types['b'] = S_IFBLK; ARGBEGIN { case 'm': mode = estrtol(EARGF(usage()), 8); break; default: usage(); } ARGEND; if(argc != 4) usage(); if(strlen(argv[1]) != 1 || !strchr("ucb", argv[1][0])) eprintf("mknod: '%s': invalid type\n", argv[1]); type = types[(unsigned)argv[1][0]]; dev = makedev(estrtol(argv[2], 0), estrtol(argv[3], 0)); if(mknod(argv[0], type|mode, dev) == -1) eprintf("mknod: '%s':", argv[0]); return 0; }