mknod: remove stdio
authorAlan Cox <alan@linux.intel.com>
Thu, 21 May 2015 22:36:10 +0000 (23:36 +0100)
committerAlan Cox <alan@linux.intel.com>
Thu, 21 May 2015 22:36:10 +0000 (23:36 +0100)
Applications/util/mknod.c

index bacdd3c..1b486a0 100644 (file)
@@ -1,12 +1,18 @@
 #include <stdio.h>
+#include <string.h>
 #include <stdlib.h>
 #include <sys/stat.h>
 
-static long parse_number(const char* p, int base)
+static void writes(const char *p)
 {
-       char* end;
+       write(2, p, strlen(p));
+}
+
+static long parse_number(const char *p, int base)
+{
+       char *end;
        unsigned long result;
-       
+
        errno = 0;
        result = strtoul(p, &end, base);
        if (errno || *end)
@@ -16,38 +22,38 @@ static long parse_number(const char* p, int base)
 
 int do_mknod(char *path, char *modes, char *devs)
 {
-    int mode;
-    int dev;
+       int mode;
+       int dev;
 
        mode = parse_number(modes, 8);
-    if (mode < 0) {
-        printf("mknod: bad mode\n");
-        return (-1);
-    }
-    
-    if (!S_ISFIFO(mode) && !S_ISDEV(mode)) {
-        printf("mknod: mode is not device/fifo\n");
-        return (-1);
-    }
+       if (mode < 0) {
+               writes("mknod: bad mode\n");
+               return 1;
+       }
+
+       if (!S_ISFIFO(mode) && !S_ISDEV(mode)) {
+               writes("mknod: mode is not device/fifo\n");
+               return 1;
+       }
 
        dev = parse_number(devs, 10);
        if (dev < 0) {
-        printf("mknod: bad device\n");
-        return (-1);
-    }
-
-    if (mknod(path, mode, dev) != 0) {
-        perror("mknod");
-        return (-1);
-    }
-    return(0);
+               writes("mknod: bad device\n");
+               return 1;
+       }
+
+       if (mknod(path, mode, dev) != 0) {
+               perror("mknod");
+               return 1;
+       }
+       return (0);
 }
 
 int main(int argc, char *argv[])
 {
-    if (argc != 4) {
-        printf("usage: mknod path modes devs\n");
-        return 1;
-    }
-    return do_mknod(argv[1], argv[2], argv[3]);
+       if (argc != 4) {
+               writes("usage: mknod path modes devs\n");
+               return 1;
+       }
+       return do_mknod(argv[1], argv[2], argv[3]);
 }