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
d30fe1c5
Commit
d30fe1c5
authored
Apr 16, 2011
by
Janne Blomqvist
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Replace sprintf with snprintf
From-SVN: r172590
parent
9c575e20
Expand all
Show whitespace changes
Inline
Side-by-side
Showing
12 changed files
with
134 additions
and
118 deletions
+134
-118
libgfortran/ChangeLog
+30
-1
libgfortran/intrinsics/date_and_time.c
+0
-13
libgfortran/io/format.c
+5
-4
libgfortran/io/list_read.c
+61
-46
libgfortran/io/open.c
+9
-10
libgfortran/io/transfer.c
+4
-2
libgfortran/io/unix.c
+4
-2
libgfortran/io/write.c
+8
-8
libgfortran/io/write_float.def
+1
-22
libgfortran/libgfortran.h
+4
-0
libgfortran/runtime/backtrace.c
+2
-6
libgfortran/runtime/main.c
+6
-4
No files found.
libgfortran/ChangeLog
View file @
d30fe1c5
2011-04-16 Janne Blomqvist <jb@gcc.gnu.org>
* intrinsics/date_and_time.c (date_and_time): Remove sprintf CPP
branch.
* io/format.c (format_error): Use snprintf instead of sprintf.
* io/list_read.c: Move snprintf fallback macro to libgfortran.h.
(convert_integer): Use snprintf instead of sprintf.
(parse_repeat): Likewise.
(read_logical): Likewise.
(read_integer): Likewise.
(read_character): Likewise.
(parse_real): Likewise.
(read_complex): Likewise.
(read_real): Likewise.
(check_type): Likewise.
(nml_parse_qualifier): Add string length argument, use snprintf
instead of sprintf.
(nml_get_obj_data): Use snprintf instead of sprintf.
* io/open.c (new_unit): Remove sprintf CPP branch, use snprintf
instead of sprintf.
* io/transfer.c (require_type): Use snprintf instead of sprintf.
* io/unix.c (tempfile): Likewise.
* io/write.c (nml_write_obj): Likewise.
* io/write_float.def (output_float): Remove sprintf CPP branch,
use snprintf instead of sprintf.
* libgfortran.h: Add fallback snprintf macro from io/list_read.c.
* runtime/backtrace.c (show_backtrace): Remove sprintf CPP branch.
* runtime/main.c (store_exe_path): Use snprintf instead of
sprintf.
2011-04-15 Jerry DeLisle <jvdelisle@gcc.gnu.org>
PR libgfortran/48589
...
...
@@ -20,7 +50,6 @@
* intrinsics/system_clock.c: Use weakrefs only when needed and
supported.
>>>>>>> .r172501
2011-04-12 Janne Blomqvist <jb@gcc.gnu.org>
* configure.ac: Use AC_TYPE_* to make sure we have (u)intptr_t,
...
...
libgfortran/intrinsics/date_and_time.c
View file @
d30fe1c5
...
...
@@ -168,7 +168,6 @@ date_and_time (char *__date, char *__time, char *__zone,
values
[
5
]
=
local_time
.
tm_min
;
values
[
6
]
=
local_time
.
tm_sec
;
#if HAVE_SNPRINTF
if
(
__date
)
snprintf
(
date
,
DATE_LEN
+
1
,
"%04d%02d%02d"
,
values
[
0
],
values
[
1
],
values
[
2
]);
...
...
@@ -179,18 +178,6 @@ date_and_time (char *__date, char *__time, char *__zone,
if
(
__zone
)
snprintf
(
zone
,
ZONE_LEN
+
1
,
"%+03d%02d"
,
values
[
3
]
/
60
,
abs
(
values
[
3
]
%
60
));
#else
if
(
__date
)
sprintf
(
date
,
"%04d%02d%02d"
,
values
[
0
],
values
[
1
],
values
[
2
]);
if
(
__time
)
sprintf
(
timec
,
"%02d%02d%02d.%03d"
,
values
[
4
],
values
[
5
],
values
[
6
],
values
[
7
]);
if
(
__zone
)
sprintf
(
zone
,
"%+03d%02d"
,
values
[
3
]
/
60
,
abs
(
values
[
3
]
%
60
));
#endif
}
else
{
...
...
libgfortran/io/format.c
View file @
d30fe1c5
/* Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
/* Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
, 2011
Free Software Foundation, Inc.
Contributed by Andy Vaught
F2003 I/O support contributed by Jerry DeLisle
...
...
@@ -1127,16 +1127,17 @@ void
format_error
(
st_parameter_dt
*
dtp
,
const
fnode
*
f
,
const
char
*
message
)
{
int
width
,
i
,
j
,
offset
;
char
*
p
,
buffer
[
300
];
#define BUFLEN 300
char
*
p
,
buffer
[
BUFLEN
];
format_data
*
fmt
=
dtp
->
u
.
p
.
fmt
;
if
(
f
!=
NULL
)
fmt
->
format_string
=
f
->
source
;
if
(
message
==
unexpected_element
)
s
printf
(
buffer
,
message
,
fmt
->
error_element
);
s
nprintf
(
buffer
,
BUFLEN
,
message
,
fmt
->
error_element
);
else
s
printf
(
buffer
,
"%s
\n
"
,
message
);
s
nprintf
(
buffer
,
BUFLEN
,
"%s
\n
"
,
message
);
j
=
fmt
->
format_string
-
dtp
->
format
;
...
...
libgfortran/io/list_read.c
View file @
d30fe1c5
This diff is collapsed.
Click to expand it.
libgfortran/io/open.c
View file @
d30fe1c5
/* Copyright (C) 2002, 2003, 2004, 2005, 2007, 2008, 2009, 2010
/* Copyright (C) 2002, 2003, 2004, 2005, 2007, 2008, 2009, 2010
, 2011
Free Software Foundation, Inc.
Contributed by Andy Vaught
F2003 I/O support contributed by Jerry DeLisle
...
...
@@ -467,12 +467,8 @@ new_unit (st_parameter_open *opp, gfc_unit *u, unit_flags * flags)
break
;
opp
->
file
=
tmpname
;
#ifdef HAVE_SNPRINTF
opp
->
file_len
=
snprintf
(
opp
->
file
,
sizeof
(
tmpname
),
"fort.%d"
,
(
int
)
opp
->
common
.
unit
);
#else
opp
->
file_len
=
sprintf
(
opp
->
file
,
"fort.%d"
,
(
int
)
opp
->
common
.
unit
);
#endif
break
;
default:
...
...
@@ -504,26 +500,29 @@ new_unit (st_parameter_open *opp, gfc_unit *u, unit_flags * flags)
if
(
s
==
NULL
)
{
char
*
path
,
*
msg
;
size_t
msglen
;
path
=
(
char
*
)
gfc_alloca
(
opp
->
file_len
+
1
);
msg
=
(
char
*
)
gfc_alloca
(
opp
->
file_len
+
51
);
msglen
=
opp
->
file_len
+
51
;
msg
=
(
char
*
)
gfc_alloca
(
msglen
);
unpack_filename
(
path
,
opp
->
file
,
opp
->
file_len
);
switch
(
errno
)
{
case
ENOENT
:
s
printf
(
msg
,
"File '%s' does not exist"
,
path
);
s
nprintf
(
msg
,
msglen
,
"File '%s' does not exist"
,
path
);
break
;
case
EEXIST
:
s
printf
(
msg
,
"File '%s' already exists"
,
path
);
s
nprintf
(
msg
,
msglen
,
"File '%s' already exists"
,
path
);
break
;
case
EACCES
:
sprintf
(
msg
,
"Permission denied trying to open file '%s'"
,
path
);
snprintf
(
msg
,
msglen
,
"Permission denied trying to open file '%s'"
,
path
);
break
;
case
EISDIR
:
s
printf
(
msg
,
"'%s' is a directory"
,
path
);
s
nprintf
(
msg
,
msglen
,
"'%s' is a directory"
,
path
);
break
;
default:
...
...
libgfortran/io/transfer.c
View file @
d30fe1c5
...
...
@@ -1047,13 +1047,15 @@ write_constant_string (st_parameter_dt *dtp, const fnode *f)
static
int
require_type
(
st_parameter_dt
*
dtp
,
bt
expected
,
bt
actual
,
const
fnode
*
f
)
{
char
buffer
[
100
];
#define BUFLEN 100
char
buffer
[
BUFLEN
];
if
(
actual
==
expected
)
return
0
;
/* Adjust item_count before emitting error message. */
sprintf
(
buffer
,
"Expected %s for item %d in formatted transfer, got %s"
,
snprintf
(
buffer
,
BUFLEN
,
"Expected %s for item %d in formatted transfer, got %s"
,
type_name
(
expected
),
dtp
->
u
.
p
.
item_count
-
1
,
type_name
(
actual
));
format_error
(
dtp
,
f
,
buffer
);
...
...
libgfortran/io/unix.c
View file @
d30fe1c5
...
...
@@ -1068,7 +1068,8 @@ tempfile (st_parameter_open *opp)
template
=
get_mem
(
tempdirlen
+
23
);
#ifdef HAVE_MKSTEMP
sprintf
(
template
,
"%s%sgfortrantmpXXXXXX"
,
tempdir
,
slash
);
snprintf
(
template
,
tempdirlen
+
23
,
"%s%sgfortrantmpXXXXXX"
,
tempdir
,
slash
);
fd
=
mkstemp
(
template
);
...
...
@@ -1078,7 +1079,8 @@ tempfile (st_parameter_open *opp)
slashlen
=
strlen
(
slash
);
do
{
sprintf
(
template
,
"%s%sgfortrantmpaaaXXXXXX"
,
tempdir
,
slash
);
snprintf
(
template
,
tempdirlen
+
23
,
"%s%sgfortrantmpaaaXXXXXX"
,
tempdir
,
slash
);
if
(
count
>
0
)
{
int
c
=
count
;
...
...
libgfortran/io/write.c
View file @
d30fe1c5
/* Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
/* Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
, 2011
Free Software Foundation, Inc.
Contributed by Andy Vaught
Namelist output contributed by Paul Thomas
...
...
@@ -1689,6 +1689,7 @@ nml_write_obj (st_parameter_dt *dtp, namelist_info * obj, index_type offset,
char
cup
;
char
*
obj_name
;
char
*
ext_name
;
size_t
ext_name_len
;
char
rep_buff
[
NML_DIGITS
];
namelist_info
*
cmp
;
namelist_info
*
retval
=
obj
->
next
;
...
...
@@ -1797,7 +1798,7 @@ nml_write_obj (st_parameter_dt *dtp, namelist_info * obj, index_type offset,
{
if
(
rep_ctr
>
1
)
{
s
printf
(
rep_buff
,
" %d*"
,
rep_ctr
);
s
nprintf
(
rep_buff
,
NML_DIGITS
,
" %d*"
,
rep_ctr
);
write_character
(
dtp
,
rep_buff
,
1
,
strlen
(
rep_buff
));
dtp
->
u
.
p
.
no_leading_blank
=
1
;
}
...
...
@@ -1851,11 +1852,9 @@ nml_write_obj (st_parameter_dt *dtp, namelist_info * obj, index_type offset,
base_name_len
=
base_name
?
strlen
(
base_name
)
:
0
;
base_var_name_len
=
base
?
strlen
(
base
->
var_name
)
:
0
;
ext_name
=
(
char
*
)
get_mem
(
base_name_len
+
base_var_name_len
+
strlen
(
obj
->
var_name
)
+
obj
->
var_rank
*
NML_DIGITS
+
1
);
ext_name_len
=
base_name_len
+
base_var_name_len
+
strlen
(
obj
->
var_name
)
+
obj
->
var_rank
*
NML_DIGITS
+
1
;
ext_name
=
(
char
*
)
get_mem
(
ext_name_len
);
memcpy
(
ext_name
,
base_name
,
base_name_len
);
clen
=
strlen
(
obj
->
var_name
+
base_var_name_len
);
...
...
@@ -1872,7 +1871,8 @@ nml_write_obj (st_parameter_dt *dtp, namelist_info * obj, index_type offset,
ext_name
[
tot_len
]
=
'('
;
tot_len
++
;
}
sprintf
(
ext_name
+
tot_len
,
"%d"
,
(
int
)
obj
->
ls
[
dim_i
].
idx
);
snprintf
(
ext_name
+
tot_len
,
ext_name_len
-
tot_len
,
"%d"
,
(
int
)
obj
->
ls
[
dim_i
].
idx
);
tot_len
+=
strlen
(
ext_name
+
tot_len
);
ext_name
[
tot_len
]
=
((
int
)
dim_i
==
obj
->
var_rank
-
1
)
?
')'
:
','
;
tot_len
++
;
...
...
libgfortran/io/write_float.def
View file @
d30fe1c5
...
...
@@ -524,11 +524,7 @@ output_float (st_parameter_dt *dtp, const fnode *f, char *buffer, size_t size,
*(out4++) = expchar;
edigits--;
}
#if HAVE_SNPRINTF
snprintf (buffer, size, "%+0*d", edigits, e);
#else
sprintf (buffer, "%+0*d", edigits, e);
#endif
memcpy4 (out4, buffer, edigits);
}
...
...
@@ -616,11 +612,7 @@ output_float (st_parameter_dt *dtp, const fnode *f, char *buffer, size_t size,
*(out++) = expchar;
edigits--;
}
#if HAVE_SNPRINTF
snprintf (buffer, size, "%+0*d", edigits, e);
#else
sprintf (buffer, "%+0*d", edigits, e);
#endif
memcpy (out, buffer, edigits);
}
...
...
@@ -940,7 +932,7 @@ OUTPUT_FLOAT_FMT_G(16)
/* Define a macro to build code for write_float. */
/* Note: Before output_float is called, sprintf is used to print to buffer the
/* Note: Before output_float is called, s
n
printf is used to print to buffer the
number in the format +D.DDDDe+ddd. For an N digit exponent, this gives us
(MIN_FIELD_WIDTH-5)-N digits after the decimal point, plus another one
before the decimal point.
...
...
@@ -961,8 +953,6 @@ OUTPUT_FLOAT_FMT_G(16)
equal to the precision. The exponent always contains at least two
digits; if the value is zero, the exponent is 00. */
#ifdef HAVE_SNPRINTF
#define DTOA \
snprintf (buffer, size, "%+-#" STR(MIN_FIELD_WIDTH) ".*" \
"e", ndigits - 1, tmp);
...
...
@@ -971,17 +961,6 @@ snprintf (buffer, size, "%+-#" STR(MIN_FIELD_WIDTH) ".*" \
snprintf (buffer, size, "%+-#" STR(MIN_FIELD_WIDTH) ".*" \
"Le", ndigits - 1, tmp);
#else
#define DTOA \
sprintf (buffer, "%+-#" STR(MIN_FIELD_WIDTH) ".*" \
"e", ndigits - 1, tmp);
#define DTOAL \
sprintf (buffer, "%+-#" STR(MIN_FIELD_WIDTH) ".*" \
"Le", ndigits - 1, tmp);
#endif
#if defined(GFC_REAL_16_IS_FLOAT128)
#define DTOAQ \
...
...
libgfortran/libgfortran.h
View file @
d30fe1c5
...
...
@@ -119,6 +119,10 @@ extern int __mingw_snprintf (char *, size_t, const char *, ...)
__attribute__
((
format
(
gnu_printf
,
3
,
4
)));
#undef snprintf
#define snprintf __mingw_snprintf
/* Fallback to sprintf if target does not have snprintf. */
#elif !defined(HAVE_SNPRINTF)
#undef snprintf
#define snprintf(str, size, ...) sprintf (str, __VA_ARGS__)
#endif
...
...
libgfortran/runtime/backtrace.c
View file @
d30fe1c5
/* Copyright (C) 2006, 2007, 2009 Free Software Foundation, Inc.
/* Copyright (C) 2006, 2007, 2009
, 2011
Free Software Foundation, Inc.
Contributed by François-Xavier Coudert
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
...
...
@@ -290,11 +290,7 @@ fallback:
st_printf
(
"
\n
Backtrace for this error:
\n
"
);
arg
[
0
]
=
(
char
*
)
"pstack"
;
#ifdef HAVE_SNPRINTF
snprintf
(
buf
,
sizeof
(
buf
),
"%d"
,
(
int
)
getppid
());
#else
sprintf
(
buf
,
"%d"
,
(
int
)
getppid
());
#endif
arg
[
1
]
=
buf
;
arg
[
2
]
=
NULL
;
execvp
(
arg
[
0
],
arg
);
...
...
libgfortran/runtime/main.c
View file @
d30fe1c5
/* Copyright (C) 2002-2003, 2005, 2007, 2009 Free Software Foundation, Inc.
/* Copyright (C) 2002-2003, 2005, 2007, 2009, 2011
Free Software Foundation, Inc.
Contributed by Andy Vaught and Paul Brook <paul@nowt.org>
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
...
...
@@ -107,8 +108,9 @@ store_exe_path (const char * argv0)
#endif
/* exe_path will be cwd + "/" + argv[0] + "\0" */
path
=
malloc
(
strlen
(
cwd
)
+
1
+
strlen
(
argv0
)
+
1
);
sprintf
(
path
,
"%s%c%s"
,
cwd
,
DIR_SEPARATOR
,
argv0
);
size_t
pathlen
=
strlen
(
cwd
)
+
1
+
strlen
(
argv0
)
+
1
;
path
=
malloc
(
pathlen
);
snprintf
(
path
,
pathlen
,
"%s%c%s"
,
cwd
,
DIR_SEPARATOR
,
argv0
);
exe_path
=
path
;
please_free_exe_path_when_done
=
1
;
}
...
...
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