| /* vi: set sw=4 ts=4: */ |
| /* |
| * Mini mktemp implementation for busybox |
| * |
| * |
| * Copyright (C) 2000 by Daniel Jacobowitz |
| * Written by Daniel Jacobowitz <dan@debian.org> |
| * |
| * Licensed under the GPL v2 or later, see the file LICENSE in this tarball. |
| */ |
| |
| #include "busybox.h" |
| #include <stdio.h> |
| #include <errno.h> |
| #include <string.h> |
| #include <unistd.h> |
| #include <stdlib.h> |
| |
| int mktemp_main(int argc, char **argv) |
| { |
| unsigned long flags = getopt32(argc, argv, "dqt"); |
| char *chp; |
| |
| if (optind + 1 != argc) |
| bb_show_usage(); |
| |
| chp = argv[optind]; |
| |
| if (flags & 4) { |
| char *dir = getenv("TMPDIR"); |
| if (dir && *dir != '\0') |
| chp = concat_path_file(dir, chp); |
| else |
| chp = concat_path_file("/tmp/", chp); |
| } |
| |
| if (flags & 1) { |
| if (mkdtemp(chp) == NULL) |
| return EXIT_FAILURE; |
| } else { |
| if (mkstemp(chp) < 0) |
| return EXIT_FAILURE; |
| } |
| |
| puts(chp); |
| |
| return EXIT_SUCCESS; |
| } |