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
6a0f6e77
Commit
6a0f6e77
authored
Jan 27, 2011
by
Janne Blomqvist
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
PR 47432 Use ttyname_r() if available
From-SVN: r169337
parent
5f02b9db
Hide whitespace changes
Inline
Side-by-side
Showing
8 changed files
with
72 additions
and
32 deletions
+72
-32
libgfortran/ChangeLog
+13
-0
libgfortran/config.h.in
+3
-0
libgfortran/configure
+1
-1
libgfortran/configure.ac
+1
-1
libgfortran/io/inquire.c
+8
-7
libgfortran/io/intrinsics.c
+15
-12
libgfortran/io/unix.c
+21
-10
libgfortran/io/unix.h
+10
-1
No files found.
libgfortran/ChangeLog
View file @
6a0f6e77
2011-01-27 Janne Blomqvist <jb@gcc.gnu.org>
PR libfortran/47432
* config.h.in: Regenerated.
* configure: Regenerated.
* configure.ac: Add check for ttyname_r.
* io/unix.h: Add TTY_NAME_MAX, change stream_ttyname prototype.
* io/unix.c (stream_ttyname): Use ttyname_r if available, conform
to new prototype.
* io/inquire.c (inquire_via_unit): Use changed stream_ttyname.
* io/intrinsics.c (ttynam_sub): Likewise.
(ttynam): Likewise.
2011-01-27 Janne Blomqvist <jb@gcc.gnu.org>
PR libfortran/47491
* configure.ac: Call AC_USE_SYSTEM_EXTENSIONS to enable common
extensions.
...
...
libgfortran/config.h.in
View file @
6a0f6e77
...
...
@@ -807,6 +807,9 @@
/* Define to 1 if you have the `ttyname' function. */
#undef HAVE_TTYNAME
/* Define to 1 if you have the `ttyname_r' function. */
#undef HAVE_TTYNAME_R
/* Define to 1 if the system has the type `uintptr_t'. */
#undef HAVE_UINTPTR_T
...
...
libgfortran/configure
View file @
6a0f6e77
...
...
@@ -16367,7 +16367,7 @@ _ACEOF
fi
done
for
ac_func
in
localtime_r gmtime_r strerror_r getpwuid_r
for
ac_func
in
localtime_r gmtime_r strerror_r getpwuid_r
ttyname_r
do
:
as_ac_var
=
`
$as_echo
"ac_cv_func_
$ac_func
"
|
$as_tr_sh
`
ac_fn_c_check_func
"
$LINENO
"
"
$ac_func
"
"
$as_ac_var
"
...
...
libgfortran/configure.ac
View file @
6a0f6e77
...
...
@@ -251,7 +251,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(wait setmode execvp pipe dup2 close fdopen strcasestr getrlimit)
AC_CHECK_FUNCS(gettimeofday stat fstat lstat getpwuid vsnprintf dup getcwd)
AC_CHECK_FUNCS(localtime_r gmtime_r strerror_r getpwuid_r)
AC_CHECK_FUNCS(localtime_r gmtime_r strerror_r getpwuid_r
ttyname_r
)
# Check for glibc backtrace functions
AC_CHECK_FUNCS(backtrace backtrace_symbols)
...
...
libgfortran/io/inquire.c
View file @
6a0f6e77
/* Copyright (C) 2002, 2003, 2005, 2007, 2009, 2010
/* Copyright (C) 2002, 2003, 2005, 2007, 2009, 2010
, 2011
Free Software Foundation, Inc.
Contributed by Andy Vaught
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 modify
it under the terms of the GNU General Public License as published by
...
...
@@ -68,16 +68,17 @@ inquire_via_unit (st_parameter_inquire *iqp, gfc_unit * u)
if
((
cf
&
IOPARM_INQUIRE_HAS_NAME
)
!=
0
&&
u
!=
NULL
&&
u
->
flags
.
status
!=
STATUS_SCRATCH
)
{
#if
def HAVE_TTYNAME
#if
defined(HAVE_TTYNAME_R) || defined(HAVE_TTYNAME)
if
(
u
->
unit_number
==
options
.
stdin_unit
||
u
->
unit_number
==
options
.
stdout_unit
||
u
->
unit_number
==
options
.
stderr_unit
)
{
char
*
tmp
=
stream_ttyname
(
u
->
s
);
if
(
tmp
!=
NULL
)
int
err
=
stream_ttyname
(
u
->
s
,
iqp
->
name
,
iqp
->
name_len
);
if
(
err
==
0
)
{
int
tmplen
=
strlen
(
tmp
);
fstrcpy
(
iqp
->
name
,
iqp
->
name_len
,
tmp
,
tmplen
);
gfc_charlen_type
tmplen
=
strlen
(
iqp
->
name
);
if
(
iqp
->
name_len
>
tmplen
)
memset
(
&
iqp
->
name
[
tmplen
],
' '
,
iqp
->
name_len
-
tmplen
);
}
else
/* If ttyname does not work, go with the default. */
fstrcpy
(
iqp
->
name
,
iqp
->
name_len
,
u
->
file
,
u
->
file_len
);
...
...
libgfortran/io/intrinsics.c
View file @
6a0f6e77
/* Implementation of the FGET, FGETC, FPUT, FPUTC, FLUSH
FTELL, TTYNAM and ISATTY intrinsics.
Copyright (C) 2005, 2007, 2009, 2010 Free Software Foundation, Inc.
Copyright (C) 2005, 2007, 2009, 2010, 2011 Free Software
Foundation, Inc.
This file is part of the GNU Fortran runtime library (libgfortran).
...
...
@@ -351,22 +352,23 @@ void
ttynam_sub
(
int
*
unit
,
char
*
name
,
gfc_charlen_type
name_len
)
{
gfc_unit
*
u
;
char
*
n
;
int
i
;
int
nle
n
;
int
err
=
1
;
memset
(
name
,
' '
,
name_len
);
u
=
find_unit
(
*
unit
);
if
(
u
!=
NULL
)
{
n
=
stream_ttyname
(
u
->
s
);
if
(
n
!=
NULL
)
err
=
stream_ttyname
(
u
->
s
,
name
,
name_len
);
if
(
err
==
0
)
{
i
=
0
;
while
(
*
n
&&
i
<
name_len
)
name
[
i
++
]
=
*
(
n
++
);
nlen
=
strlen
(
name
);
memset
(
&
name
[
nlen
],
' '
,
name_len
-
nlen
);
}
unlock_unit
(
u
);
}
if
(
err
!=
0
)
memset
(
name
,
' '
,
name_len
);
}
...
...
@@ -381,14 +383,15 @@ ttynam (char ** name, gfc_charlen_type * name_len, int unit)
u
=
find_unit
(
unit
);
if
(
u
!=
NULL
)
{
*
name
=
stream_ttyname
(
u
->
s
);
if
(
*
name
!=
NULL
)
*
name
=
get_mem
(
TTY_NAME_MAX
);
int
err
=
stream_ttyname
(
u
->
s
,
*
name
,
TTY_NAME_MAX
);
if
(
err
==
0
)
{
*
name_len
=
strlen
(
*
name
);
*
name
=
strdup
(
*
name
);
unlock_unit
(
u
);
return
;
}
free
(
*
name
);
unlock_unit
(
u
);
}
...
...
libgfortran/io/unix.c
View file @
6a0f6e77
...
...
@@ -1811,18 +1811,29 @@ stream_isatty (stream *s)
return
isatty
(((
unix_stream
*
)
s
)
->
fd
);
}
char
*
#ifdef HAVE_TTYNAME
stream_ttyname
(
stream
*
s
)
{
return
ttyname
(((
unix_stream
*
)
s
)
->
fd
);
}
int
stream_ttyname
(
stream
*
s
__attribute__
((
unused
)),
char
*
buf
__attribute__
((
unused
)),
size_t
buflen
__attribute__
((
unused
)))
{
#ifdef HAVE_TTYNAME_R
return
ttyname_r
(((
unix_stream
*
)
s
)
->
fd
,
buf
,
buflen
);
#elif defined HAVE_TTYNAME
char
*
p
;
size_t
plen
;
p
=
ttyname
(((
unix_stream
*
)
s
)
->
fd
);
if
(
!
p
)
return
errno
;
plen
=
strlen
(
p
);
if
(
buflen
<
plen
)
plen
=
buflen
;
memcpy
(
buf
,
p
,
plen
);
return
0
;
#else
stream_ttyname
(
stream
*
s
__attribute__
((
unused
)))
{
return
NULL
;
}
return
ENOSYS
;
#endif
}
...
...
libgfortran/io/unix.h
View file @
6a0f6e77
...
...
@@ -170,7 +170,16 @@ internal_proto(flush_if_preconnected);
extern
int
stream_isatty
(
stream
*
);
internal_proto
(
stream_isatty
);
extern
char
*
stream_ttyname
(
stream
*
);
#ifndef TTY_NAME_MAX
#ifdef _POSIX_TTY_NAME_MAX
#define TTY_NAME_MAX _POSIX_TTY_NAME_MAX
#else
/* sysconf(_SC_TTY_NAME_MAX) = 32 which should be enough. */
#define TTY_NAME_MAX 32
#endif
#endif
extern
int
stream_ttyname
(
stream
*
,
char
*
,
size_t
);
internal_proto
(
stream_ttyname
);
extern
int
unpack_filename
(
char
*
,
const
char
*
,
int
);
...
...
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