diff --git a/externs.h b/externs.h index 3d7716c6..f25cc281 100644 --- a/externs.h +++ b/externs.h @@ -482,7 +482,7 @@ extern void print_timeval (); #define MT_USERANDOM 0x0004 #define MT_TEMPLATE 0x0008 -extern char *sh_mktmpname PARAMS((char *, int)); +extern char *sh_mktmpfifo PARAMS((char *, int)); extern int sh_mktmpfd PARAMS((char *, int, char **)); /* extern FILE *sh_mktmpfp PARAMS((char *, int, char **)); */ extern char *sh_mktmpdir PARAMS((char *, int)); diff --git a/lib/sh/tmpfile.c b/lib/sh/tmpfile.c index ef8b067b..e179d8ef 100644 --- a/lib/sh/tmpfile.c +++ b/lib/sh/tmpfile.c @@ -131,7 +131,7 @@ sh_seedrand () #endif } -char * +static char * sh_mktmpname (nameroot, flags) char *nameroot; int flags; @@ -309,3 +309,22 @@ sh_mktmpdir (nameroot, flags) return (filename); #endif /* !USE_MKDTEMP */ } + +#ifndef HAVE_DEV_FD +char * +sh_mktmpfifo (nameroot, flags) + char *nameroot; + int flags; +{ + char *tname; + + tname = sh_mktmpname (nameroot, flags); + if (mkfifo (tname, 0600) < 0) + { + free (tname); + return ((char *)NULL); + } + + return (tname); +} +#endif diff --git a/subst.c b/subst.c index 6132316a..47008eb3 100644 --- a/subst.c +++ b/subst.c @@ -5609,14 +5609,12 @@ make_named_pipe () { char *tname; - tname = sh_mktmpname ("sh-np", MT_USERANDOM|MT_USETMPDIR); - if (mkfifo (tname, 0600) < 0) + tname = sh_mktmpfifo ("sh-np", MT_USERANDOM|MT_USETMPDIR); + if (tname) { - free (tname); - return ((char *)NULL); + add_fifo_list (tname); } - add_fifo_list (tname); return (tname); }