]> git.ipfire.org Git - thirdparty/gcc.git/blame - libgfortran/intrinsics/ctime.c
Licensing changes to GPLv3 resp. GPLv3 with GCC Runtime Exception.
[thirdparty/gcc.git] / libgfortran / intrinsics / ctime.c
CommitLineData
35059811 1/* Implementation of the CTIME and FDATE g77 intrinsics.
748086b7 2 Copyright (C) 2005, 2007, 2009 Free Software Foundation, Inc.
35059811
FXC
3 Contributed by François-Xavier Coudert <coudert@clipper.ens.fr>
4
5This file is part of the GNU Fortran 95 runtime library (libgfortran).
6
7Libgfortran is free software; you can redistribute it and/or
8modify it under the terms of the GNU General Public
9License as published by the Free Software Foundation; either
748086b7 10version 3 of the License, or (at your option) any later version.
35059811
FXC
11
12Libgfortran is distributed in the hope that it will be useful,
13but WITHOUT ANY WARRANTY; without even the implied warranty of
14MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15GNU General Public License for more details.
16
748086b7
JJ
17Under Section 7 of GPL version 3, you are granted additional
18permissions described in the GCC Runtime Library Exception, version
193.1, as published by the Free Software Foundation.
20
21You should have received a copy of the GNU General Public License and
22a copy of the GCC Runtime Library Exception along with this program;
23see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
24<http://www.gnu.org/licenses/>. */
35059811 25
35059811
FXC
26#include "libgfortran.h"
27
28#ifdef TIME_WITH_SYS_TIME
29# include <sys/time.h>
30# include <time.h>
31#else
32# if HAVE_SYS_TIME_H
33# include <sys/time.h>
34# else
35# ifdef HAVE_TIME_H
36# include <time.h>
37# endif
38# endif
39#endif
40
41#include <string.h>
42
43
44extern void fdate (char **, gfc_charlen_type *);
45export_proto(fdate);
46
47void
48fdate (char ** date, gfc_charlen_type * date_len)
49{
50#if defined(HAVE_TIME) && defined(HAVE_CTIME)
51 int i;
52 time_t now = time(NULL);
53 *date = ctime (&now);
54 if (*date != NULL)
55 {
56 *date = strdup (*date);
57 *date_len = strlen (*date);
58
59 i = 0;
60 while ((*date)[i])
61 {
62 if ((*date)[i] == '\n')
63 (*date)[i] = ' ';
64 i++;
65 }
66 return;
67 }
68#endif
69
70 *date = NULL;
71 *date_len = 0;
72}
73
74
75extern void fdate_sub (char *, gfc_charlen_type);
76export_proto(fdate_sub);
77
78void
79fdate_sub (char * date, gfc_charlen_type date_len)
80{
81#if defined(HAVE_TIME) && defined(HAVE_CTIME)
82 int i;
83 char *d;
84 time_t now = time(NULL);
85#endif
86
87 memset (date, ' ', date_len);
88#if defined(HAVE_TIME) && defined(HAVE_CTIME)
89 d = ctime (&now);
90 if (d != NULL)
91 {
92 i = 0;
93 while (*d && *d != '\n' && i < date_len)
94 date[i++] = *(d++);
95 }
96#endif
97}
98
99
100
101extern void PREFIX(ctime) (char **, gfc_charlen_type *, GFC_INTEGER_8);
102export_proto_np(PREFIX(ctime));
103
104void
105PREFIX(ctime) (char ** date, gfc_charlen_type * date_len, GFC_INTEGER_8 t)
106{
107#if defined(HAVE_CTIME)
108 time_t now = t;
109 int i;
110 *date = ctime (&now);
111 if (*date != NULL)
112 {
113 *date = strdup (*date);
114 *date_len = strlen (*date);
115
116 i = 0;
117 while ((*date)[i])
118 {
119 if ((*date)[i] == '\n')
120 (*date)[i] = ' ';
121 i++;
122 }
123 return;
124 }
125#endif
126
127 *date = NULL;
128 *date_len = 0;
129}
130
131
132extern void ctime_sub (GFC_INTEGER_8 *, char *, gfc_charlen_type);
133export_proto(ctime_sub);
134
135void
136ctime_sub (GFC_INTEGER_8 * t, char * date, gfc_charlen_type date_len)
137{
138#if defined(HAVE_CTIME)
139 int i;
140 char *d;
141 time_t now = *t;
142#endif
143
144 memset (date, ' ', date_len);
145#if defined(HAVE_CTIME)
146 d = ctime (&now);
147 if (d != NULL)
148 {
149 i = 0;
150 while (*d && *d != '\n' && i < date_len)
151 date[i++] = *(d++);
152 }
153#endif
154}