Cleanup patch from Tito.
[oweals/busybox.git] / debianutils / mktemp.c
index bc47d0af0fe922598c6805074fa8d7705a2c1fc9..9fdf79bfa1220127d5dc8be38647b3ae11dbd965 100644 (file)
 
 extern int mktemp_main(int argc, char **argv)
 {
-       if (argc != 2 && (argc != 3 || strcmp(argv[1], "-q")))
-               show_usage();
-       if(mkstemp(argv[argc-1]) < 0)
-               return EXIT_FAILURE;
+       unsigned char dir_flag = 0;
+       int opt;
+
+       while ((opt = getopt(argc, argv, "qd")) != -1) {
+               if (opt == 'd') {
+                       dir_flag = 1;
+               }
+               else if (opt != 'q') {
+                       bb_show_usage();
+               }
+       }
+
+       if (optind + 1 != argc) {
+               bb_show_usage();
+       }
+
+       if (dir_flag) {
+               if (mkdtemp(argv[argc-1]) == NULL) {
+                       return EXIT_FAILURE;
+               }
+       } else {
+               if (mkstemp(argv[argc-1]) < 0) {
+                       return EXIT_FAILURE;
+               }
+       }
+
        (void) puts(argv[argc-1]);
+
        return EXIT_SUCCESS;
 }