Magellan Linux

Diff of /trunk/mkinitrd-magellan/busybox/debianutils/mktemp.c

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 532 by niro, Sat Sep 1 22:45:15 2007 UTC revision 816 by niro, Fri Apr 24 18:33:46 2009 UTC
# Line 9  Line 9 
9   * Licensed under the GPL v2 or later, see the file LICENSE in this tarball.   * Licensed under the GPL v2 or later, see the file LICENSE in this tarball.
10   */   */
11    
12  #include "busybox.h"  /* Coreutils 6.12 man page says:
13  #include <stdio.h>   *        mktemp [OPTION]... [TEMPLATE]
14  #include <errno.h>   * Create a temporary file or directory, safely, and print its name. If
15  #include <string.h>   * TEMPLATE is not specified, use tmp.XXXXXXXXXX.
16  #include <unistd.h>   * -d, --directory
17  #include <stdlib.h>   *        create a directory, not a file
18     * -q, --quiet
19     *        suppress diagnostics about file/dir-creation failure
20     * -u, --dry-run
21     *        do not create anything; merely print a name (unsafe)
22     * --tmpdir[=DIR]
23     *        interpret TEMPLATE relative to DIR. If DIR is not specified,
24     *        use  $TMPDIR if set, else /tmp.  With this option, TEMPLATE must
25     *        not be an absolute name. Unlike with -t, TEMPLATE may contain
26     *        slashes, but even here, mktemp still creates only the final com-
27     *        ponent.
28     * -p DIR use DIR as a prefix; implies -t [deprecated]
29     * -t     interpret TEMPLATE as a single file name component, relative  to
30     *        a  directory:  $TMPDIR, if set; else the directory specified via
31     *        -p; else /tmp [deprecated]
32     */
33    
34    
35  int mktemp_main(int argc, char **argv)  #include "libbb.h"
36    
37    int mktemp_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE;
38    int mktemp_main(int argc UNUSED_PARAM, char **argv)
39  {  {
40   unsigned long flags = getopt32(argc, argv, "dqt");   const char *path;
41   char *chp;   char *chp;
42     unsigned opt;
43    
44   if (optind + 1 != argc)   opt_complementary = "?1"; /* 1 argument max */
45   bb_show_usage();   opt = getopt32(argv, "dqtp:", &path);
46     chp = argv[optind] ? argv[optind] : xstrdup("tmp.XXXXXX");
  chp = argv[optind];  
47    
48   if (flags & 4) {   if (opt & (4|8)) { /* -t and/or -p */
49   char *dir = getenv("TMPDIR");   const char *dir = getenv("TMPDIR");
50   if (dir && *dir != '\0')   if (dir && *dir != '\0')
51   chp = concat_path_file(dir, chp);   path = dir;
52   else   else if (!(opt & 8)) /* no -p */
53   chp = concat_path_file("/tmp/", chp);   path = "/tmp/";
54     /* else path comes from -p DIR */
55     chp = concat_path_file(path, chp);
56   }   }
57    
58   if (flags & 1) {   if (opt & 1) { /* -d */
59   if (mkdtemp(chp) == NULL)   if (mkdtemp(chp) == NULL)
60   return EXIT_FAILURE;   return EXIT_FAILURE;
61   } else {   } else {

Legend:
Removed from v.532  
changed lines
  Added in v.816