]> git.ipfire.org Git - thirdparty/binutils-gdb.git/blame - libiberty/choose-temp.c
* gas/sh/err-le.s, gas/sh/err-be.s: New tests.
[thirdparty/binutils-gdb.git] / libiberty / choose-temp.c
CommitLineData
252b5132
RH
1/* Utility to pick a temporary filename prefix.
2 Copyright (C) 1996, 1997, 1998 Free Software Foundation, Inc.
3
4This file is part of the libiberty library.
5Libiberty is free software; you can redistribute it and/or
6modify it under the terms of the GNU Library General Public
7License as published by the Free Software Foundation; either
8version 2 of the License, or (at your option) any later version.
9
10Libiberty is distributed in the hope that it will be useful,
11but WITHOUT ANY WARRANTY; without even the implied warranty of
12MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13Library General Public License for more details.
14
15You should have received a copy of the GNU Library General Public
16License along with libiberty; see the file COPYING.LIB. If not,
17write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
18Boston, MA 02111-1307, USA. */
19
252b5132
RH
20#ifdef HAVE_CONFIG_H
21#include "config.h"
22#endif
23
24#include <stdio.h> /* May get P_tmpdir. */
252b5132
RH
25#ifdef HAVE_STDLIB_H
26#include <stdlib.h>
27#endif
35ca97ea
RH
28#ifdef HAVE_STRING_H
29#include <string.h>
30#endif
252b5132
RH
31
32#include "libiberty.h"
1dffcc66 33extern char *choose_tmpdir PARAMS ((void));
252b5132
RH
34
35/* Name of temporary file.
36 mktemp requires 6 trailing X's. */
37#define TEMP_FILE "ccXXXXXX"
1dffcc66 38#define TEMP_FILE_LEN (sizeof(TEMP_FILE) - 1)
252b5132
RH
39
40/* Return a prefix for temporary file names or NULL if unable to find one.
41 The current directory is chosen if all else fails so the program is
42 exited if a temporary directory can't be found (mktemp fails).
43 The buffer for the result is obtained with xmalloc.
44
45 This function is provided for backwards compatability only. It use
46 is not recommended. */
47
48char *
49choose_temp_base ()
50{
1dffcc66 51 const char *base = choose_tmpdir ();
252b5132
RH
52 char *temp_filename;
53 int len;
252b5132
RH
54
55 len = strlen (base);
1dffcc66 56 temp_filename = xmalloc (len + TEMP_FILE_LEN + 1);
252b5132 57 strcpy (temp_filename, base);
252b5132
RH
58 strcpy (temp_filename + len, TEMP_FILE);
59
60 mktemp (temp_filename);
61 if (strlen (temp_filename) == 0)
62 abort ();
63 return temp_filename;
64}