--- Makefile | 1 + mktemp.1 | 20 ++++++++++++++++++++ mktemp.c | 49 +++++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 70 insertions(+) create mode 100644 mktemp.1 create mode 100644 mktemp.c diff --git a/Makefile b/Makefile index 326cae8..2a72a1c 100644 --- a/Makefile +++ b/Makefile _AT_@ -57,6 +57,7 @@ SRC = \ mkdir.c \ mkfifo.c \ mknod.c \ + mktemp.c \ mv.c \ nice.c \ nl.c \ diff --git a/mktemp.1 b/mktemp.1 new file mode 100644 index 0000000..65c2ff5 --- /dev/null +++ b/mktemp.1 _AT_@ -0,0 +1,20 @@ + .TH MKTEMP 1 sbase\-VERSION +.SH NAME +mktemp \- make temporary filename +.SH SYNOPSIS +.B mktemp +.RB [ \-d ] +.RB [ template ] +.SH DESCRIPTION +.B mktemp +takes the given filename template and overwrites a portion of it +to create a unique filename. The template may be any filename with at least +six `Xs' appended to it. If no template is specified a default of +`tmp.XXXXXXXXXX' is used and the tmpdir is currently fixed to `/tmp'. +.SH OPTIONS +.TP +.B \-d +Make a directory instead of a file +.SH SEE ALSO +.IR mkdtemp (3), +.IR mkstemp (3) diff --git a/mktemp.c b/mktemp.c new file mode 100644 index 0000000..0989931 --- /dev/null +++ b/mktemp.c _AT_@ -0,0 +1,49 @@ +/* See LICENSE file for copyright and license details. */ +#include <limits.h> +#include <stdio.h> +#include <stdlib.h> +#include <string.h> +#include <unistd.h> +#include "util.h" + +static void +usage(void) +{ + eprintf("usage: %s [-d] [template]\n", argv0); +} + +static int dflag = 0; + +int +main(int argc, char *argv[]) +{ + char *template = "tmp.XXXXXXXXXX"; + char *tmpdir = "/tmp"; + char tmppath[PATH_MAX]; + int fd; + + ARGBEGIN { + case 'd': + dflag = 1; + break; + default: + usage(); + } ARGEND; + + if (argc > 1) + usage(); + else if (argc == 1) + template = argv[0]; + + snprintf(tmppath, sizeof(tmppath), "%s/%s", tmpdir, template); + if (dflag) { + if (!mkdtemp(tmppath)) + eprintf("mkdtemp %s:", tmppath); + } else { + if ((fd = mkstemp(tmppath)) < 0) + eprintf("mkstemp %s:", tmppath); + close(fd); + } + puts(tmppath); + return EXIT_SUCCESS; +} -- 1.8.3.4 --1yeeQ81UyVL57Vl7--Received on Mon Sep 17 2001 - 00:00:00 CEST
This archive was generated by hypermail 2.3.0 : Tue Nov 12 2013 - 13:12:07 CET