.\" {PTM/WK/1999-11-22}
.\"	$OpenBSD: mktemp.1,v 1.5 1997/06/17 15:34:27 millert Exp $
.\"
.\" Copyright (c) 1989, 1991, 1993
.\"	The Regents of the University of California.  All rights reserved.
.\"
.\" Redistribution and use in source and binary forms, with or without
.\" modification, are permitted provided that the following conditions
.\" are met:
.\" 1. Redistributions of source code must retain the above copyright
.\"    notice, this list of conditions and the following disclaimer.
.\" 2. Redistributions in binary form must reproduce the above copyright
.\"    notice, this list of conditions and the following disclaimer in the
.\"    documentation and/or other materials provided with the distribution.
.\" 3. All advertising materials mentioning features or use of this software
.\"    must display the following acknowledgement:
.\"	This product includes software developed by the University of
.\"	California, Berkeley and its contributors.
.\" 4. Neither the name of the University nor the names of its contributors
.\"    may be used to endorse or promote products derived from this software
.\"    without specific prior written permission.
.\"
.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
.\" ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
.\" SUCH DAMAGE.
.\"
.Dd November, 20, 1996
.Dt MKTEMP 1
.Os
.Sh NAZWA
.Nm mktemp
.Nd twórz unikalną nazwę pliku tymczasowego
.Sh SKŁADNIA
.Nm mktemp
.Op Fl d
.Op Fl q
.Op Fl u
.Ar wzorzec
.Sh OPIS
Narzędzie
.Nm mktemp
pobiera zadany wzorzec nazwy i zastępuje jego część by stworzyć
nazwę pliku. Wynikowa nazwa jest unikalna i nadaje się do używania jako
nazwa pliku.
Wzorzec może być
.\" ---- Nie jest prawdą dla Linuksa, ale w libc z OpenBSD
.\" dowolna nazwa pliku z pewną liczbą
dowolną nazwą pliku z dodanymi do niej dokładnie sześcioma znakami
.\" ----
.Ql X ,
na przykład
.\" .Pa /tmp/temp.XXXX .
.Pa /tmp/temp.XXXXXX .
Końcowe
.Ql X
zastępowane są przez numer bieżącego procesu i/lub unikalną kombinację liter.

Liczba unikalnych nazw plików, jakie może zwrócić
.Nm
.\" ---- Nie jest prawdą dla Linuksa, ale dla libc z OpenBSD
.\" może zwrócić zależy od liczby dodanych
.\" .Ql X ów;
.\" sześć
.\" .Ql X ów
.\" da przetestowanie około 26 ** 6 kombinacji.
daje około 26 ** 6 kombinacji.
.\" ----
.Pp
Jeśli
.Nm
może pomyślnie utworzyć unikalną nazwę pliku, to tworzony jest plik
z prawami 0600 (chyba że podano flagę
.Fl u )
zaś nazwa pliku wyświetlana jest na standardowym wyjściu.
.Sh OPCJE
.Bl -tag -width indent
Dostępne są następujące opcje:
.It Fl d
Utwórz katalog zamiast pliku.
.It Fl q
Ciche zakończenie działania w przypadku błędu. Przydatne, gdy skrypt nie
chce by komunikat o błędzie trafił na standardowe wyjście błędów.
.It Fl u
Działaj w trybie
.Dq unsafe
(ryzykownym).
Plik tymczasowy będzie skasowany (unlinked) przed zakończeniem pracy
.Nm mktemp .
Jest to nieco lepsze niż
.Fn mktemp 3 ,
ale nadal wprowadza `race condition' [tłum: ``wyścig'' procesów
pomiędzy uzyskiwaniem unikalnych nazw i nadawaniem ich plikom].
Nie zaleca się używania tej opcji.
.Sh ZWRACANE WARTOŚCI
Narzędzie
.Nm
kończy pracę z wartością 0 w przypadku powodzenia, zaś 1 przy błędzie.
.Sh PRZYKŁADY
Poniższy fragment w 
.Xr sh 1
ilustruje proste zastosowanie
.Nm mktemp ,
gdzie skrypt winien zakończyć pracę jeśli nie może utworzyć bezpiecznego
pliku tymczasowego.
.Bd -literal -offset indent
TMPFILE=`mktemp /tmp/$0.XXXXXX` || exit 1
echo "program output" >> $TMPFILE
.Ed
.Pp
W tym przypadku chcemy, by skrypt sam obsługiwał błąd.
.Bd -literal -offset indent
TMPFILE=`mktemp -q /tmp/$0.XXXXXX`
if [ $? -ne 0 ]; then
	echo "$0: Can't create temp file, exiting..."
	exit 1
fi
.Ed
.Pp
Zauważ, że można też zamiast sprawdzania $? sprawdzać,
czy $TMPFILE ma długość zerową. Pozwala to na wykonanie
sprawdzenia w dalszej części skryptu (gdyż $? zostanie
nadpisane przez następne polecenie  powłoki).
.Sh ZOBACZ TAKŻE
.Xr mkstemp 3 ,
.Xr mktemp 3 .
.Sh HISTORIA
Narzędzie
.Nm
pojawiło się w
.Bx Open .
