Commit 47b91469 by Jakub Jelinek Committed by Jakub Jelinek

re PR fortran/45308 ([F2003] DATE_AND_TIME does _not_ blank-pad strings)

	PR fortran/45308
	* intrinsics/date_and_time.c (date_and_time): Pass __{zone,time,date}_len
	instead of {ZONE,TIME,DATE}_LEN as second argument to fstrcpy.  Drop
	asserts.  Adjust comment to the F2003 wording from the F95 wording.

	* gfortran.dg/pr45308.f03: New test.

From-SVN: r163312
parent 35d3d688
2010-08-17 Jakub Jelinek <jakub@redhat.com>
PR fortran/45308
* gfortran.dg/pr45308.f03: New test.
2010-08-17 Uros Bizjak <ubizjak@gmail.com> 2010-08-17 Uros Bizjak <ubizjak@gmail.com>
PR target/45296 PR target/45296
......
! PR fortran/45308
! { dg-do run }
character(len=36) :: date, time
date = 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa'
time = 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa'
call date_and_time (date, time)
if (index (date, 'a') /= 0 .or. index (time, 'a') /= 0) &
call abort
end
2010-08-17 Jakub Jelinek <jakub@redhat.com>
PR fortran/45308
* intrinsics/date_and_time.c (date_and_time): Pass __{zone,time,date}_len
instead of {ZONE,TIME,DATE}_LEN as second argument to fstrcpy. Drop
asserts. Adjust comment to the F2003 wording from the F95 wording.
2010-08-14 Jerry DeLisle <jvdelisle@gcc.gnu.org> 2010-08-14 Jerry DeLisle <jvdelisle@gcc.gnu.org>
PR libfortran/44931 PR libfortran/44931
......
...@@ -93,29 +93,25 @@ gmtime_r (const time_t * timep, struct tm * result) ...@@ -93,29 +93,25 @@ gmtime_r (const time_t * timep, struct tm * result)
Arguments: Arguments:
DATE (optional) shall be scalar and of type default character, and DATE (optional) shall be scalar and of type default character.
shall be of length at least 8 in order to contain the complete It is an INTENT(OUT) argument. It is assigned a value of the
value. It is an INTENT(OUT) argument. Its leftmost 8 characters form CCYYMMDD, where CC is the century, YY the year within the
are assigned a value of the form CCYYMMDD, where CC is the century, century, MM the month within the year, and DD the day within the
YY the year within the century, MM the month within the year, and month. If there is no date available, they are assigned blanks.
DD the day within the month. If there is no date available, they
are assigned blanks. TIME (optional) shall be scalar and of type default character.
It is an INTENT(OUT) argument. It is assigned a value of the
TIME (optional) shall be scalar and of type default character, and form hhmmss.sss, where hh is the hour of the day, mm is the
shall be of length at least 10 in order to contain the complete minutes of the hour, and ss.sss is the seconds and milliseconds
value. It is an INTENT(OUT) argument. Its leftmost 10 characters of the minute. If there is no clock available, they are assigned
are assigned a value of the form hhmmss.sss, where hh is the hour blanks.
of the day, mm is the minutes of the hour, and ss.sss is the
seconds and milliseconds of the minute. If there is no clock ZONE (optional) shall be scalar and of type default character.
available, they are assigned blanks. It is an INTENT(OUT) argument. It is assigned a value of the
form [+-]hhmm, where hh and mm are the time difference with
ZONE (optional) shall be scalar and of type default character, and respect to Coordinated Universal Time (UTC) in hours and parts
shall be of length at least 5 in order to contain the complete of an hour expressed in minutes, respectively. If there is no
value. It is an INTENT(OUT) argument. Its leftmost 5 characters clock available, they are assigned blanks.
are assigned a value of the form [+-]hhmm, where hh and mm are the
time difference with respect to Coordinated Universal Time (UTC) in
hours and parts of an hour expressed in minutes, respectively. If
there is no clock available, they are assigned blanks.
VALUES (optional) shall be of type default integer and of rank VALUES (optional) shall be of type default integer and of rank
one. It is an INTENT(OUT) argument. Its size shall be at least one. It is an INTENT(OUT) argument. Its size shall be at least
...@@ -311,22 +307,13 @@ date_and_time (char *__date, char *__time, char *__zone, ...@@ -311,22 +307,13 @@ date_and_time (char *__date, char *__time, char *__zone,
} }
if (__zone) if (__zone)
{ fstrcpy (__zone, __zone_len, zone, ZONE_LEN);
assert (__zone_len >= ZONE_LEN);
fstrcpy (__zone, ZONE_LEN, zone, ZONE_LEN);
}
if (__time) if (__time)
{ fstrcpy (__time, __time_len, timec, TIME_LEN);
assert (__time_len >= TIME_LEN);
fstrcpy (__time, TIME_LEN, timec, TIME_LEN);
}
if (__date) if (__date)
{ fstrcpy (__date, __date_len, date, DATE_LEN);
assert (__date_len >= DATE_LEN);
fstrcpy (__date, DATE_LEN, date, DATE_LEN);
}
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment