GNU Octave  3.8.0
A high-level interpreted language, primarily intended for numerical computations, mostly compatible with Matlab
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
tempnam.c
Go to the documentation of this file.
1 /* Copyright (C) 1991, 1993 Free Software Foundation, Inc.
2 This file is part of the GNU C Library.
3 
4 The GNU C Library is free software; you can redistribute it and/or
5 modify it under the terms of the GNU Library General Public License as
6 published by the Free Software Foundation; either version 2 of the
7 License, or (at your option) any later version.
8 
9 The GNU C Library is distributed in the hope that it will be useful,
10 but WITHOUT ANY WARRANTY; without even the implied warranty of
11 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12 Library General Public License for more details.
13 
14 You should have received a copy of the GNU Library General Public
15 License along with the GNU C Library; see the file COPYING.LIB. If
16 not, write to the Free Software Foundation, Inc., 51 Franklin Street,
17 Fifth Floor, Boston, MA 02110-1301, USA. */
18 
19 #ifdef HAVE_CONFIG_H
20 #include <config.h>
21 #endif
22 
23 #ifndef HAVE_TEMPNAM
24 
25 #include <stddef.h>
26 #include <stdio.h>
27 #include <stdlib.h>
28 #include <string.h>
29 
30 extern char *__stdio_gen_tempname (const char *dir, const char *pfx,
31  int dir_search, size_t *lenptr,
32  FILE **streamptr);
33 
34 /* Generate a unique temporary filename using up to five characters of PFX
35  if it is not NULL. The directory to put this file in is searched for
36  as follows: First the environment variable "TMPDIR" is checked.
37  If it contains the name of a writable directory, that directory is used.
38  If not and if DIR is not NULL, that value is checked. If that fails,
39  P_tmpdir is tried and finally "/tmp". The storage for the filename
40  is allocated by `malloc'. */
41 char *
42 tempnam (const char *dir, const char *pfx)
43 {
44  size_t len;
45  register char *s;
46  register char *t = __stdio_gen_tempname (dir, pfx, 1, &len, (FILE **) NULL);
47 
48  if (t == NULL)
49  return NULL;
50 
51  s = (char *) malloc (len);
52  if (s == NULL)
53  return NULL;
54 
55  (void) memcpy (s, t, len);
56  return s;
57 }
58 
59 #endif