On Thu, Feb 25, 2010 at 10:27 PM, Doug Barton <do...@freebsd.org> wrote:
> On Thu, 25 Feb 2010, Garrett Cooper wrote:
>
>> So what I did was I wrote up a patch to be *I know... here it comes*
>> more like GNU coreutils' copy of mktemp.
>
> What's the motivation for this?

Less typing and quirks because every other command line and
programmatic implementation I've run across (Linux, perl, python) uses
a similar paradigm with these sets of APIs. Example:

gcoo...@orangebox ~/Downloads/susv4/susv4 $ uname -or
2.6.31-gentoo-r6 GNU/Linux
gcoo...@orangebox ~/Downloads/susv4/susv4 $ mktemp
/tmp/tmp.5pmHxn3UfQ
gcoo...@orangebox ~/Downloads/susv4/susv4 $ mktemp -d
/tmp/tmp.Q0PZbsf9BG

Compared with:

[gcoo...@optimus ~]$ mktemp
usage: mktemp [-d] [-q] [-t prefix] [-u] template ...
       mktemp [-d] [-q] [-u] -t prefix
[gcoo...@optimus ~]$ mktemp -d
usage: mktemp [-d] [-q] [-t prefix] [-u] template ...
       mktemp [-d] [-q] [-u] -t prefix
[gcoo...@optimus ~]$ mktemp -d tmp.XXXXXXXXXX
tmp.cvZo2ABNRv
[gcoo...@optimus ~]$ mktemp tmp.XXXXXXXXXX
tmp.KFnF5zomVn

> I'm a little confused about why we'd want to change this when the -t option 
> already exists.

Because 1) -t requires that you spell out the entire path in a more
terse way, 2) tacks on more information in a more counter intuitive
manner, and 3) can only be used once per mktemp(3) call. Example:

[gcoo...@optimus ~]$ mktemp -t tmp
/tmp/tmp.vAi6eCpD
[gcoo...@optimus ~]$ mktemp -t tmp -d
/tmp/tmp.0f3Z9L5R
[gcoo...@optimus ~]$ mktemp -t tmp -t notsotmp -d
/tmp/notsotmp.MTYHIGFs
[gcoo...@optimus ~]$ mktemp -t foo.XXXXXX
/tmp/foo.XXXXXX.rGssqAZk
[gcoo...@optimus ~]$ mktemp -t /something/foo.XXXXXX
mktemp: mkstemp failed on /tmp//something/foo.XXXXXX.J3CGs9dK: No such
file or directory

> Also, does POSIX say anything about what the default should be?

Nope. No mention of mktemp(1) in either v3 or v4 of the POSIX 1003.1 specs.

FWIW, the major advantages that BSD has on the coreutil's mktemp is
that it's half the size of coreutil's mktemp; plus, you only need to
call mktemp(1) once for multiple files. I have no intent on changing
that behavior because I think it's cool and more innovative than the
dumbed down single invocation mktemp(1) setup with coreutil's mktemp.

Thanks,
-Garrett
_______________________________________________
freebsd-hackers@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-hackers
To unsubscribe, send any mail to "freebsd-hackers-unsubscr...@freebsd.org"

Reply via email to