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
15fb94ae
Commit
15fb94ae
authored
Jan 25, 2011
by
Janne Blomqvist
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
PR 47375 getlog thread safety
From-SVN: r169243
parent
f822b8ea
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
40 additions
and
12 deletions
+40
-12
libgfortran/ChangeLog
+8
-0
libgfortran/config.h.in
+3
-0
libgfortran/configure
+1
-1
libgfortran/configure.ac
+1
-1
libgfortran/intrinsics/getlog.c
+27
-10
No files found.
libgfortran/ChangeLog
View file @
15fb94ae
2011-01-25 Janne Blomqvist <jb@gcc.gnu.org>
PR libfortran/47375
* config.h.in: Regenerated.
* configure: Regenerated.
* configure.ac: Add check for getpwuid_r.
* intrinsics/getlog.c (getlog): Use getpwuid_r() if available.
2011-01-22 Janne Blomqvist <jb@gcc.gnu.org>
2011-01-22 Janne Blomqvist <jb@gcc.gnu.org>
PR libfortran/46267
PR libfortran/46267
...
...
libgfortran/config.h.in
View file @
15fb94ae
...
@@ -462,6 +462,9 @@
...
@@ -462,6 +462,9 @@
/* Define to 1 if you have the `getpwuid' function. */
/* Define to 1 if you have the `getpwuid' function. */
#undef HAVE_GETPWUID
#undef HAVE_GETPWUID
/* Define to 1 if you have the `getpwuid_r' function. */
#undef HAVE_GETPWUID_R
/* Define to 1 if you have the `getrlimit' function. */
/* Define to 1 if you have the `getrlimit' function. */
#undef HAVE_GETRLIMIT
#undef HAVE_GETRLIMIT
...
...
libgfortran/configure
View file @
15fb94ae
...
@@ -15636,7 +15636,7 @@ _ACEOF
...
@@ -15636,7 +15636,7 @@ _ACEOF
fi
fi
done
done
for
ac_func
in
localtime_r gmtime_r strerror_r
for
ac_func
in
localtime_r gmtime_r strerror_r
getpwuid_r
do
:
do
:
as_ac_var
=
`
$as_echo
"ac_cv_func_
$ac_func
"
|
$as_tr_sh
`
as_ac_var
=
`
$as_echo
"ac_cv_func_
$ac_func
"
|
$as_tr_sh
`
ac_fn_c_check_func
"
$LINENO
"
"
$ac_func
"
"
$as_ac_var
"
ac_fn_c_check_func
"
$LINENO
"
"
$ac_func
"
"
$as_ac_var
"
...
...
libgfortran/configure.ac
View file @
15fb94ae
...
@@ -249,7 +249,7 @@ AC_CHECK_FUNCS(chdir strerror getlogin gethostname kill link symlink perror)
...
@@ -249,7 +249,7 @@ AC_CHECK_FUNCS(chdir strerror getlogin gethostname kill link symlink perror)
AC_CHECK_FUNCS(sleep time ttyname signal alarm ctime clock access fork execl)
AC_CHECK_FUNCS(sleep time ttyname signal alarm ctime clock access fork execl)
AC_CHECK_FUNCS(wait setmode execvp pipe dup2 close fdopen strcasestr getrlimit)
AC_CHECK_FUNCS(wait setmode execvp pipe dup2 close fdopen strcasestr getrlimit)
AC_CHECK_FUNCS(gettimeofday stat fstat lstat getpwuid vsnprintf dup getcwd)
AC_CHECK_FUNCS(gettimeofday stat fstat lstat getpwuid vsnprintf dup getcwd)
AC_CHECK_FUNCS(localtime_r gmtime_r strerror_r)
AC_CHECK_FUNCS(localtime_r gmtime_r strerror_r
getpwuid_r
)
# Check for glibc backtrace functions
# Check for glibc backtrace functions
AC_CHECK_FUNCS(backtrace backtrace_symbols)
AC_CHECK_FUNCS(backtrace backtrace_symbols)
...
...
libgfortran/intrinsics/getlog.c
View file @
15fb94ae
/* Implementation of the GETLOG g77 intrinsic.
/* Implementation of the GETLOG g77 intrinsic.
Copyright (C) 2005, 2007, 2009 Free Software Foundation, Inc.
Copyright (C) 2005, 2007, 2009
, 2011
Free Software Foundation, Inc.
Contributed by François-Xavier Coudert <coudert@clipper.ens.fr>
Contributed by François-Xavier Coudert <coudert@clipper.ens.fr>
This file is part of the GNU Fortran
95
runtime library (libgfortran).
This file is part of the GNU Fortran runtime library (libgfortran).
Libgfortran is free software; you can redistribute it and/or
Libgfortran is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public
modify it under the terms of the GNU General Public
...
@@ -75,7 +75,22 @@ PREFIX(getlog) (char * login, gfc_charlen_type login_len)
...
@@ -75,7 +75,22 @@ PREFIX(getlog) (char * login, gfc_charlen_type login_len)
memset
(
login
,
' '
,
login_len
);
/* Blank the string. */
memset
(
login
,
' '
,
login_len
);
/* Blank the string. */
#if defined(HAVE_GETPWUID) && defined(HAVE_GETEUID)
#if defined(HAVE_GETPWUID_R) && defined(HAVE_GETEUID)
struct
passwd
pwd
;
struct
passwd
*
result
;
char
*
buf
;
int
err
;
/* To be pedantic, buflen should be determined by
sysconf(_SC_GETPW_R_SIZE_MAX), which is 1024 on some tested
targets; we do something simple in case the target doesn't
support sysconf. */
static
const
size_t
buflen
=
1024
;
buf
=
get_mem
(
buflen
);
err
=
getpwuid_r
(
geteuid
(),
&
pwd
,
buf
,
buflen
,
&
result
);
if
(
err
!=
0
||
result
==
NULL
)
goto
cleanup
;
p
=
pwd
.
pw_name
;
#elif defined(HAVE_GETPWUID) && defined(HAVE_GETEUID)
{
{
struct
passwd
*
pw
=
getpwuid
(
geteuid
());
struct
passwd
*
pw
=
getpwuid
(
geteuid
());
if
(
pw
)
if
(
pw
)
...
@@ -83,20 +98,22 @@ PREFIX(getlog) (char * login, gfc_charlen_type login_len)
...
@@ -83,20 +98,22 @@ PREFIX(getlog) (char * login, gfc_charlen_type login_len)
else
else
return
;
return
;
}
}
#else
#elif HAVE_GETLOGIN
# ifdef HAVE_GETLOGIN
p
=
getlogin
();
p
=
getlogin
();
# else
# else
return
;
return
;
# endif
#endif
#endif
if
(
p
==
NULL
)
if
(
p
==
NULL
)
return
;
goto
cleanup
;
p_len
=
strlen
(
p
);
p_len
=
strlen
(
p
);
if
(
login_len
<
p_len
)
if
(
login_len
<
p_len
)
memcpy
(
login
,
p
,
login_len
);
p_len
=
login_len
;
else
memcpy
(
login
,
p
,
p_len
);
memcpy
(
login
,
p
,
p_len
);
cleanup:
#ifdef HAVE_GETPWUID_R
free
(
buf
);
#endif
}
}
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