Annotation of 43BSDReno/lib/libc/gen/tmpnam.3, revision 1.1

1.1     ! root        1: .\" Copyright (c) 1988 The Regents of the University of California.
        !             2: .\" All rights reserved.
        !             3: .\"
        !             4: .\" Redistribution and use in source and binary forms are permitted provided
        !             5: .\" that: (1) source distributions retain this entire copyright notice and
        !             6: .\" comment, and (2) distributions including binaries display the following
        !             7: .\" acknowledgement:  ``This product includes software developed by the
        !             8: .\" University of California, Berkeley and its contributors'' in the
        !             9: .\" documentation or other materials provided with the distribution and in
        !            10: .\" all advertising materials mentioning features or use of this software.
        !            11: .\" Neither the name of the University nor the names of its contributors may
        !            12: .\" be used to endorse or promote products derived from this software without
        !            13: .\" specific prior written permission.
        !            14: .\" THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED
        !            15: .\" WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
        !            16: .\" MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
        !            17: .\"
        !            18: .\"    @(#)tmpnam.3    5.10 (Berkeley) 6/22/90
        !            19: .\"
        !            20: .TH TMPFILE 3 "June 22, 1990"
        !            21: .UC 7
        !            22: .SH NAME
        !            23: tempnam, tmpfile, tmpnam \- temporary file routines
        !            24: .SH SYNOPSIS
        !            25: .nf
        !            26: .ft B
        !            27: #include <stdio.h>
        !            28: 
        !            29: FILE *
        !            30: tmpfile(void);
        !            31: 
        !            32: char *
        !            33: tmpnam(char *str);
        !            34: 
        !            35: char *
        !            36: tempnam(const char *tmpdir, const char *prefix);
        !            37: .ft R
        !            38: .fi
        !            39: .SH DESCRIPTION
        !            40: .I Tmpfile
        !            41: opens a file using a file name generated by the routine
        !            42: .IR tmpnam (3),
        !            43: and returns a pointer to the stream associated with the file.
        !            44: The created file is unlinked before
        !            45: .I tmpfile
        !            46: returns, causing the contents of the file to be deleted automatically
        !            47: when the last reference to it is closed.
        !            48: The file is opened with the access value ``w+''.
        !            49: If
        !            50: .I tmpnam
        !            51: returns NULL, or if
        !            52: .I tmpfile
        !            53: is unable to open the file, a NULL pointer is returned.
        !            54: .PP
        !            55: .I Tmpnam
        !            56: returns a pointer to a file name, in the directory ``/usr/tmp'', which
        !            57: did not reference an existing file at some indeterminate point in the
        !            58: past.
        !            59: If the argument
        !            60: .I s
        !            61: is non-NULL, this file name is copied to the buffer it references.
        !            62: Otherwise, memory to contain this file name is allocated by
        !            63: .IR tmpnam .
        !            64: In either case,
        !            65: .I tmpnam
        !            66: returns a pointer to the file name; in the latter case, the return
        !            67: value may be used as a subsequent argument to
        !            68: .IR free (3).
        !            69: .PP
        !            70: In the current implementation, the memory buffer referenced by
        !            71: .I s
        !            72: must be at least 16 bytes long.
        !            73: .PP
        !            74: .I Tempnam
        !            75: is similar to
        !            76: .I tmpnam,
        !            77: but provides the ability to specify the directory which will
        !            78: contain the temporary file and the file name prefix.
        !            79: .PP
        !            80: The environmental variable ``TMPDIR'' (if set), the argument
        !            81: .I dir
        !            82: (if non-NULL), the directory ``/usr/tmp'' and the directory ``/tmp''
        !            83: are tried, in the listed order, as directories in which to store the
        !            84: temporary file.
        !            85: .I Tempnam
        !            86: allocates memory in which to store the file name; the returned pointer
        !            87: may be used as a subsequent argument to
        !            88: .IR free (3).
        !            89: The argument
        !            90: .IR prefix ,
        !            91: if non-NULL, is used to specify a file name prefix, which will be the
        !            92: first part of the created file name.
        !            93: .PP
        !            94: .I Tmpnam
        !            95: and
        !            96: .I tempname
        !            97: return a NULL pointer if unable to allocate memory or find a file
        !            98: which may be created.
        !            99: .PP
        !           100: The manifest constants ``TMP_MAX'', ``P_tmpdir'' and ``L_tmpnam'',
        !           101: documented for the routines
        !           102: .I tmpnam
        !           103: and
        !           104: .I tempnam
        !           105: in other systems, are not available in this implementation.
        !           106: If the source code requires them, simply use:
        !           107: .sp
        !           108: .RS
        !           109: #define        TMP_MAX         308915776
        !           110: .br
        !           111: #define        P_tmpdir                "/usr/tmp"
        !           112: .br
        !           113: #define        L_tmpnam                1024
        !           114: .RE
        !           115: .PP
        !           116: .SH BUGS
        !           117: These interfaces are provided for System V compatibility only.
        !           118: The
        !           119: .IR mkstemp (3)
        !           120: interface is strongly preferred.
        !           121: .PP
        !           122: There are three important problems with these interfaces (as well as
        !           123: with the historic
        !           124: .IR mktemp (3)
        !           125: interface).
        !           126: First, there is an obvious race between file name selection and file
        !           127: creation.
        !           128: Second, most implementations provide only a limited number (usually
        !           129: 26) of possible temporary file names before file names will start being
        !           130: recycled.
        !           131: Third, the System V implementations of these functions (and
        !           132: .IR mktemp )
        !           133: use the
        !           134: .IR access (2)
        !           135: system call to determine whether or not the temporary file may be created.
        !           136: This has obvious ramifications for setuid or setgid programs, complicating
        !           137: the portable use of these interfaces in such programs.
        !           138: .PP
        !           139: The
        !           140: .IR mkstemp (3)
        !           141: interface has none of these problems;
        !           142: the
        !           143: .IR mktemp(3)
        !           144: implementation in this system suffers only from the race condition described
        !           145: above.
        !           146: .PP
        !           147: The
        !           148: .I tmpfile
        !           149: interface should not be used if there is any possibility that the user
        !           150: does not wish the temporary file to be publicly readable or writable.
        !           151: .PP
        !           152: .SH SEE ALSO
        !           153: fopen(3), mkstemp(3), mktemp(3)

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.