aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--debianutils/mktemp.c29
1 files changed, 26 insertions, 3 deletions
diff --git a/debianutils/mktemp.c b/debianutils/mktemp.c
index 9d8de2174..ecc985fb2 100644
--- a/debianutils/mktemp.c
+++ b/debianutils/mktemp.c
@@ -31,10 +31,33 @@
31 31
32extern int mktemp_main(int argc, char **argv) 32extern int mktemp_main(int argc, char **argv)
33{ 33{
34 if (argc != 2 && (argc != 3 || strcmp(argv[1], "-q"))) 34 unsigned char dir_flag = 0;
35 int opt;
36
37 while ((opt = getopt(argc, argv, "qd")) != -1) {
38 if (opt == 'd') {
39 dir_flag = 1;
40 }
41 else if (opt != 'q') {
42 bb_show_usage();
43 }
44 }
45
46 if (optind + 1 != argc) {
35 bb_show_usage(); 47 bb_show_usage();
36 if(mkstemp(argv[argc-1]) < 0) 48 }
37 return EXIT_FAILURE; 49
50 if (dir_flag) {
51 if (mkdtemp(argv[argc-1]) == NULL) {
52 return EXIT_FAILURE;
53 }
54 } else {
55 if (mkstemp(argv[argc-1]) < 0) {
56 return EXIT_FAILURE;
57 }
58 }
59
38 (void) puts(argv[argc-1]); 60 (void) puts(argv[argc-1]);
61
39 return EXIT_SUCCESS; 62 return EXIT_SUCCESS;
40} 63}