On Sat, Jun 5, 2010 at 9:25 AM, Jim Meyering <[email protected]> wrote:
> Sebastien Andre wrote: > ... > > I see two reasons why the addition of a --fifo option is better than > using > > existing tools: > > > > * Creating a temporary directory to finally create a pipe just > because > > it is safe this way is kind of a trick. For the clarity of scripts, it > would > > be better having mktemp to ensure the uniqueness of a fifo, even if it's > > created in / > > "because it is safe" is often a good reason to learn and use a new idiom. > When you first encounter such an idiom, it does indeed look like a "trick". > > Well, after all an idiom might just be a "popular trick" > > * mktemp is not only a tool to create unique files, it's also a name > > generator. The example given in the manual works for one or two fifos, > but > > if the number of fifos is unknown there is no choice but implementing > > something to generate names, which is another potential source of bugs. > > Any code addition is an opportunity to introduce bugs ;-) > > What if someone wants a uniquely-named symlink? > New option? ... or a shared memory object? Add another? > Wouldn't it be better to use the tried and true (safe) idiom > that will work with all versions of mktemp? Then > your script will work also on systems that use the > version of mktemp that predated the one in coreutils. > Thank you for broadening the question. You made me realize that what I really want is to use the tempnam(3) function in shell scripts. But having a tempnam command in a shell script would be unsafe unless something is created atomically when invoked. If mktemp(1) is not the right place for this, how about adding a -t/--template option to the mkfifo(1) ? Wanting to get a unique name in a given directory according to a template doesn't sound too specific to me, maybe some other people need it?
