Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
R
riscv-gcc-1
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
lvzhengyang
riscv-gcc-1
Commits
ed24b9f2
Commit
ed24b9f2
authored
Apr 15, 1996
by
Doug Evans
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Initial revision
From-SVN: r11787
parent
f47c02fa
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
227 additions
and
0 deletions
+227
-0
gcc/choose-temp.c
+139
-0
gcc/gansidecl.h
+88
-0
No files found.
gcc/choose-temp.c
0 → 100644
View file @
ed24b9f2
/* Utility to pick a temporary directory.
Copyright (C) 1996 Free Software Foundation, Inc.
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, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA. */
/* This file exports one function: choose_temp_base. */
#ifndef _WIN32
#include <sys/file.h>
/* May get R_OK, etc. on some systems. */
#endif
#ifndef R_OK
#define R_OK 4
#define W_OK 2
#define X_OK 1
#endif
#ifdef IN_GCC
#include "config.h"
#include "gansidecl.h"
extern
char
*
xmalloc
();
#else
#include "ansidecl.h"
#include "libiberty.h"
#if defined (__MSDOS__) || defined (_WIN32)
#define DIR_SEPARATOR '\\'
#endif
#endif
#ifndef DIR_SEPARATOR
#define DIR_SEPARATOR '/'
#endif
/* On MSDOS, write temp files in current dir
because there's no place else we can expect to use. */
/* ??? Although the current directory is tried as a last resort,
this is left in so that on MSDOS it is prefered to /tmp on the
off chance that someone requires this, since that was the previous
behaviour. */
#ifdef __MSDOS__
#ifndef P_tmpdir
#define P_tmpdir "."
#endif
#endif
/* Name of temporary file.
mktemp requires 6 trailing X's. */
#define TEMP_FILE "ccXXXXXX"
/* Subroutine of choose_temp_base.
If BASE is non-NULL, returh it.
Otherwise it checks if DIR is a usable directory.
If success, DIR is returned.
Otherwise NULL is returned. */
static
char
*
try
(
dir
,
base
)
char
*
dir
,
*
base
;
{
if
(
base
!=
0
)
return
base
;
if
(
dir
!=
0
&&
access
(
dir
,
R_OK
|
W_OK
)
==
0
)
return
dir
;
return
0
;
}
/* Return a prefix for temporary file names or 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 (mktemp fails).
The buffer for the result is obtained with xmalloc. */
char
*
choose_temp_base
()
{
char
*
base
=
0
;
char
*
temp_filename
;
int
len
;
char
usrtmp
[
sizeof
(
"/usr/tmp"
)],
tmp
[
sizeof
(
"/tmp"
)];
#ifndef MPW
base
=
try
(
getenv
(
"TMPDIR"
),
base
);
base
=
try
(
getenv
(
"TMP"
),
base
);
base
=
try
(
getenv
(
"TEMP"
),
base
);
#ifdef P_tmpdir
base
=
try
(
P_tmpdir
,
base
);
#endif
/* Try /usr/tmp, then /tmp. */
sprintf
(
usrtmp
,
"%cusr%ctmp"
,
DIR_SEPARATOR
,
DIR_SEPARATOR
);
base
=
try
(
usrtmp
,
base
);
sprintf
(
tmp
,
"%ctmp"
,
DIR_SEPARATOR
);
base
=
try
(
tmp
,
base
);
/* If all else fails, use the current directory! */
if
(
base
==
0
)
base
=
"."
;
#else
/* MPW */
base
=
":"
;
#endif
len
=
strlen
(
base
);
if
(
len
==
0
)
abort
();
temp_filename
=
xmalloc
(
len
+
1
/*DIR_SEPARATOR*/
+
strlen
(
TEMP_FILE
)
+
1
);
strcpy
(
temp_filename
,
base
);
#ifndef MPW
if
(
temp_filename
[
len
-
1
]
!=
'/'
&&
temp_filename
[
len
-
1
]
!=
DIR_SEPARATOR
)
temp_filename
[
len
++
]
=
DIR_SEPARATOR
;
#else
/* MPW */
if
(
temp_filename
[
len
-
1
]
!=
':'
)
temp_filename
[
len
++
]
=
':'
;
#endif
/* MPW */
strcpy
(
temp_filename
+
len
,
TEMP_FILE
);
mktemp
(
temp_filename
);
if
(
strlen
(
temp_filename
)
==
0
)
abort
();
return
temp_filename
;
}
gcc/gansidecl.h
0 → 100644
View file @
ed24b9f2
/* ANSI and traditional C compatability macros.
Copyright (C) 1996 Free Software Foundation, Inc.
This file is part of GNU CC.
GNU CC is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2, or (at your option)
any later version.
GNU CC 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 General Public License for more details.
You should have received a copy of the GNU General Public License
along with GNU CC; see the file COPYING. If not, write to
the Free Software Foundation, 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA. */
/* This file mimics some of the support provided by include/ansidecl.h
in binutils and gdb releases.
??? Over time the two should be merged into one. */
#ifndef ANSIDECL_H
#define ANSIDECL_H
/* Add prototype support. */
#ifndef PROTO
#if defined (USE_PROTOTYPES) ? USE_PROTOTYPES : defined (__STDC__)
#define PROTO(ARGS) ARGS
#else
#define PROTO(ARGS) ()
#endif
#endif
#ifndef VPROTO
#ifdef __STDC__
#define PVPROTO(ARGS) ARGS
#define VPROTO(ARGS) ARGS
#define VA_START(va_list,var) va_start(va_list,var)
#else
#define PVPROTO(ARGS) ()
#define VPROTO(ARGS) (va_alist) va_dcl
#define VA_START(va_list,var) va_start(va_list)
#endif
#endif
#ifndef STDIO_PROTO
#ifdef BUFSIZ
#define STDIO_PROTO(ARGS) PROTO(ARGS)
#else
#define STDIO_PROTO(ARGS) ()
#endif
#endif
/* Define a generic NULL if one hasn't already been defined. */
#ifndef NULL
#define NULL 0
#endif
#ifndef GENERIC_PTR
#if defined (USE_PROTOTYPES) ? USE_PROTOTYPES : defined (__STDC__)
#define GENERIC_PTR void *
#else
#define GENERIC_PTR char *
#endif
#endif
#ifndef NULL_PTR
#define NULL_PTR ((GENERIC_PTR)0)
#endif
#ifdef __STDC__
#define PTR void *
#else
#define PTR char *
#ifndef const
#define const
#endif
#endif
/* ! __STDC__ */
#endif
/* ANSIDECL_H */
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment