mktemp: be more compatible: bare "mktemp" creates tempfile in /tmp, not cwd
authorDenys Vlasenko <vda.linux@googlemail.com>
Fri, 18 Jun 2010 01:16:27 +0000 (03:16 +0200)
committerDenys Vlasenko <vda.linux@googlemail.com>
Fri, 18 Jun 2010 01:16:27 +0000 (03:16 +0200)
function                                             old     new   delta
mktemp_main                                          171     152     -19

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
debianutils/mktemp.c

index 0dcb1e8267c6a3b1b874a025678afb55715907cc..c4021147636ec6b6658fd034f2fbf45f6d123d95 100644 (file)
@@ -39,23 +39,20 @@ int mktemp_main(int argc UNUSED_PARAM, char **argv)
 {
        const char *path;
        char *chp;
-       unsigned opt;
+       unsigned opts;
 
+       path = getenv("TMPDIR");
+       if (!path || path[0] == '\0')
+               path = "/tmp";
+
+       /* -q and -t are ignored */
        opt_complementary = "?1"; /* 1 argument max */
-       opt = getopt32(argv, "dqtp:", &path);
-       chp = argv[optind] ? argv[optind] : xstrdup("tmp.XXXXXX");
+       opts = getopt32(argv, "dqtp:", &path);
 
-       if (opt & (4|8)) { /* -t and/or -p */
-               const char *dir = getenv("TMPDIR");
-               if (dir && *dir != '\0')
-                       path = dir;
-               else if (!(opt & 8)) /* no -p */
-                       path = "/tmp/";
-               /* else path comes from -p DIR */
-               chp = concat_path_file(path, chp);
-       }
+       chp = argv[optind] ? argv[optind] : xstrdup("tmp.XXXXXX");
+       chp = concat_path_file(path, chp);
 
-       if (opt & 1) { /* -d */
+       if (opts & 1) { /* -d */
                if (mkdtemp(chp) == NULL)
                        return EXIT_FAILURE;
        } else {