1997-08-22 06:57:35 +08:00
|
|
|
/* Utility to pick a temporary filename prefix.
|
2020-01-01 19:51:42 +08:00
|
|
|
Copyright (C) 1996-2020 Free Software Foundation, Inc.
|
1997-08-22 06:57:35 +08:00
|
|
|
|
|
|
|
This file is part of the libiberty library.
|
|
|
|
Libiberty is free software; you can redistribute it and/or
|
|
|
|
modify it under the terms of the GNU Library General Public
|
|
|
|
License as published by the Free Software Foundation; either
|
|
|
|
version 2 of the License, or (at your option) any later version.
|
|
|
|
|
|
|
|
Libiberty is distributed in the hope that it will be useful,
|
|
|
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
|
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
|
|
Library General Public License for more details.
|
|
|
|
|
|
|
|
You should have received a copy of the GNU Library General Public
|
|
|
|
License along with libiberty; see the file COPYING.LIB. If not,
|
2005-05-10 23:33:18 +08:00
|
|
|
write to the Free Software Foundation, Inc., 51 Franklin Street - Fifth Floor,
|
|
|
|
Boston, MA 02110-1301, USA. */
|
1997-08-22 06:57:35 +08:00
|
|
|
|
1998-12-14 15:01:03 +08:00
|
|
|
#ifdef HAVE_CONFIG_H
|
1998-01-18 05:23:29 +08:00
|
|
|
#include "config.h"
|
|
|
|
#endif
|
|
|
|
|
1998-12-14 15:01:03 +08:00
|
|
|
#include <stdio.h> /* May get P_tmpdir. */
|
2009-09-23 00:34:12 +08:00
|
|
|
#include <sys/types.h>
|
|
|
|
#ifdef HAVE_UNISTD_H
|
|
|
|
#include <unistd.h>
|
|
|
|
#endif
|
1998-12-22 14:57:17 +08:00
|
|
|
#ifdef HAVE_STDLIB_H
|
|
|
|
#include <stdlib.h>
|
|
|
|
#endif
|
1999-07-15 01:29:38 +08:00
|
|
|
#ifdef HAVE_STRING_H
|
|
|
|
#include <string.h>
|
|
|
|
#endif
|
1997-08-22 06:57:35 +08:00
|
|
|
|
1998-11-27 18:28:57 +08:00
|
|
|
#include "libiberty.h"
|
1997-08-22 06:57:35 +08:00
|
|
|
|
|
|
|
/* Name of temporary file.
|
|
|
|
mktemp requires 6 trailing X's. */
|
|
|
|
#define TEMP_FILE "ccXXXXXX"
|
2001-03-21 15:29:37 +08:00
|
|
|
#define TEMP_FILE_LEN (sizeof(TEMP_FILE) - 1)
|
1997-08-22 06:57:35 +08:00
|
|
|
|
Makefile.in (TEXIFILES): Add fnmatch.txh.
* Makefile.in (TEXIFILES): Add fnmatch.txh.
(maint-undoc): New.
maint-tool: Add "undoc" tool.
* alloca.c, argv.c, asprintf.c, choose-temp.c, concat.c,
fdmatch.c, ffs.c, getruntime.c, insque.c, lbasename.c,
make-temp-file.c, mkstemps.c, pexecute.c, random.c, spaces.c,
strerror.s, strsignal.c, strtol.c, vasprintf.c: Add or update
documentation.
* fnmatch.txh: New.
* functions.texi: Regenerate.
From-SVN: r46274
2001-10-16 10:50:13 +08:00
|
|
|
/*
|
1998-09-05 19:09:09 +08:00
|
|
|
|
argv.c, [...]: Improve manual formatting.
* argv.c, asprintf.c, choose-temp.c, concat.c, cplus-dem.c,
ffs.c, fnmatch.txh, getruntime.c, make-temp-file.c,
mkstemps.c, pexecute.c, random.c, strsitnal.c, vasprintf.c:
Improve manual formatting.
* functions.texi: Regenerate.
From-SVN: r46323
2001-10-18 05:15:41 +08:00
|
|
|
@deftypefn Extension char* choose_temp_base (void)
|
Makefile.in (TEXIFILES): Add fnmatch.txh.
* Makefile.in (TEXIFILES): Add fnmatch.txh.
(maint-undoc): New.
maint-tool: Add "undoc" tool.
* alloca.c, argv.c, asprintf.c, choose-temp.c, concat.c,
fdmatch.c, ffs.c, getruntime.c, insque.c, lbasename.c,
make-temp-file.c, mkstemps.c, pexecute.c, random.c, spaces.c,
strerror.s, strsignal.c, strtol.c, vasprintf.c: Add or update
documentation.
* fnmatch.txh: New.
* functions.texi: Regenerate.
From-SVN: r46274
2001-10-16 10:50:13 +08:00
|
|
|
|
|
|
|
Return a prefix for temporary file names or @code{NULL} if unable to
|
|
|
|
find one. The current directory is chosen if all else fails so the
|
|
|
|
program is exited if a temporary directory can't be found (@code{mktemp}
|
|
|
|
fails). The buffer for the result is obtained with @code{xmalloc}.
|
|
|
|
|
2007-02-01 04:05:50 +08:00
|
|
|
This function is provided for backwards compatibility only. Its use is
|
Makefile.in (TEXIFILES): Add fnmatch.txh.
* Makefile.in (TEXIFILES): Add fnmatch.txh.
(maint-undoc): New.
maint-tool: Add "undoc" tool.
* alloca.c, argv.c, asprintf.c, choose-temp.c, concat.c,
fdmatch.c, ffs.c, getruntime.c, insque.c, lbasename.c,
make-temp-file.c, mkstemps.c, pexecute.c, random.c, spaces.c,
strerror.s, strsignal.c, strtol.c, vasprintf.c: Add or update
documentation.
* fnmatch.txh: New.
* functions.texi: Regenerate.
From-SVN: r46274
2001-10-16 10:50:13 +08:00
|
|
|
not recommended.
|
|
|
|
|
|
|
|
@end deftypefn
|
|
|
|
|
|
|
|
*/
|
1997-08-22 06:57:35 +08:00
|
|
|
|
|
|
|
char *
|
demangle.h: Remove uses of PARAMS.
include/
2005-03-26 Gabriel Dos Reis <gdr@integrable-solutions.net>
* demangle.h: Remove uses of PARAMS.
* libiberty.h (ANSI_PROTOTYPES): Remove guard since
ANSI_PROTOTYPES is always assumed.
Remove uses of PARAMS throughout.
libiberty/
2005-03-26 Gabriel Dos Reis <gdr@integrable-solutions.net>
Convert libiberty to use ISO C prototype style 2/n.
* cp-demangle.h: Remove uses of PARAMS.
* cp-demangle.c: Likewise.
(d_dump, cplus_demangle_fill_name,
cplus_demangle_fill_extended_operator,
cplus_demangle_fill_ctor,
cplus_demangle_fill_dtor, d_make_empty, d_make_comp,
d_make_name,
d_make_builtin_type, d_make_operator,
d_make_extended_operator,
d_make_ctor, d_make_dtor, d_make_template_param, d_make_sub,
cplus_demangle_mangled_name, has_return_type,
is_ctor_dtor_or_conversion, d_encoding, d_name, d_nested_name,
d_prefix, d_unqualified_name, d_source_name, d_number,
d_identifier, d_operator_name, d_special_name, d_call_offset,
d_ctor_dtor_name, cplus_demangle_type, d_cv_qualifiers,
d_function_type, d_bare_function_type, d_class_enum_type,
d_array_type, d_pointer_to_member_type, d_template_param,
d_template_args, d_template_arg, d_expression, d_expr_primary,
d_local_name, d_discriminator, d_add_substitution,
d_substitution, d_print_resize, d_print_append_char,
d_print_append_buffer, d_print_error, cplus_demangle_print,
d_print_comp, d_print_java_identifier, d_print_mod_list,
d_print_mod, d_print_function_type, d_print_array_type,
d_print_expr_op, d_print_cast, cplus_demangle_init_info,
d_demangle, __cxa_demangle, cplus_demangle_v3,
java_demangle_v3,
is_ctor_or_dtor, is_gnu_v3_mangled_ctor,
is_gnu_v3_mangled_dtor,
print_usage, main):
2005-03-26 Gabriel Dos Reis <gdr@integrable-solutions.net>
Convert libiberty to ISO C prototype style 1/n.
* _doprnt.c: Remove conditional #include <varargs.h> on
ANSI_PROTOTYPES as the latter is always assumed.
(_doprnt, checkit, main): Use ISO C prototype.
* alloca.c (find_stack_direction, C_alloca): Use ISO C
prototype.
* argv.c: Remove conditional #includes on ANSI_PROTOTYPES.
(dupargv, freeargv, buildargv, main): Use ISO C prototype.
* atexit.c (atexit): Likewise
* asprintf.c: Remove conditional include on ANSI_PROTOTYPES.
(asprintf): Use ISO C prototype.
* basename.c (basename): Likewise
* bcmp.c (bcmp): Likewise.
* bcopy.c (bcopy): Likewise.
* bzero.c (bzero): Likewise.
* bsearch.c (bsearch): Likewise. Improve const-correctness.
* choose-temp.c (choose_temp_base): Likewise.
* calloc.c: Remove conditional #include on ANSI_PROTOTYPES.
(calloc): Use ISO C prototype.
* clock.c (clock): Likewise.
* concat.c: Remove conditional #include on ANSI_PROTOTYPES.
(vconcat_length, vconcat_copy, concat_length, concat_copy,
concat_copy2, concat, reconcat, main): Use ISO C prototype.
* copysign.c (copysign): Likewise.
From-SVN: r97085
2005-03-27 03:24:33 +08:00
|
|
|
choose_temp_base (void)
|
1997-08-22 06:57:35 +08:00
|
|
|
{
|
2001-03-21 15:29:37 +08:00
|
|
|
const char *base = choose_tmpdir ();
|
1997-08-22 06:57:35 +08:00
|
|
|
char *temp_filename;
|
|
|
|
int len;
|
|
|
|
|
|
|
|
len = strlen (base);
|
2005-05-25 04:48:25 +08:00
|
|
|
temp_filename = XNEWVEC (char, len + TEMP_FILE_LEN + 1);
|
1997-08-22 06:57:35 +08:00
|
|
|
strcpy (temp_filename, base);
|
|
|
|
strcpy (temp_filename + len, TEMP_FILE);
|
|
|
|
|
2007-01-12 08:37:48 +08:00
|
|
|
if (mktemp (temp_filename) == 0)
|
1997-08-22 06:57:35 +08:00
|
|
|
abort ();
|
|
|
|
return temp_filename;
|
|
|
|
}
|