summaryrefslogtreecommitdiff
path: root/libchill/inttime.c
diff options
context:
space:
mode:
authorlaw <law@138bc75d-0d04-0410-961f-82ee72b054a4>1998-09-05 01:11:54 +0000
committerlaw <law@138bc75d-0d04-0410-961f-82ee72b054a4>1998-09-05 01:11:54 +0000
commitffcbbbab99149ea7d8e800326458b70b54438076 (patch)
treee2a997b294961a00f5d259edefbef93b8501c089 /libchill/inttime.c
parentff8e09bdcb33f98c7094eec337fb5e93da360a0d (diff)
downloadgcc-ffcbbbab99149ea7d8e800326458b70b54438076.tar.gz
* Chill runtime moved into toplevel libchill.
* Makefile.in Revamped due to move. Add multilib support. * configure.in: Similarly. Use autoconf. * powerset.h: Do not depend on BITS_PER_UNIT. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@22238 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'libchill/inttime.c')
-rw-r--r--libchill/inttime.c85
1 files changed, 85 insertions, 0 deletions
diff --git a/libchill/inttime.c b/libchill/inttime.c
new file mode 100644
index 00000000000..b82c5ec8ff3
--- /dev/null
+++ b/libchill/inttime.c
@@ -0,0 +1,85 @@
+/* Implement timing-related runtime actions for CHILL.
+ Copyright (C) 1992,1993 Free Software Foundation, Inc.
+ Author: Wilfried Moser
+
+This file is part of GNU CC.
+
+GNU CC is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2, or (at your option)
+any later version.
+
+GNU CC is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with GNU CC; see the file COPYING. If not, write to
+the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
+
+#include <time.h>
+
+typedef struct
+{
+ void *p;
+ unsigned long len;
+} Descr;
+
+typedef Descr **Toutlist;
+
+#define ASSIGN_VALUE(OUT,VAL) \
+do \
+{ \
+ if (OUT) \
+ switch (OUT->len) \
+ { \
+ case 1: \
+ *(char *)((OUT)->p) = VAL; \
+ break; \
+ case 2: \
+ *(short *)((OUT)->p) = VAL; \
+ break; \
+ case 4: \
+ *(int *)((OUT)->p) = VAL; \
+ break; \
+ } \
+} while (0)
+
+
+/*
+ * function _inttime
+ *
+ * parameters:
+ * t time_t
+ * list the pointers to the results
+ *
+ * returns:
+ * void
+ *
+ * exceptions:
+ * none
+ *
+ * abstract:
+ * perform the INTTIME builtin call
+ *
+ */
+
+void
+_inttime (timer, outlist)
+ time_t timer;
+ Toutlist outlist;
+{
+ struct tm *time_str;
+
+ /* get struct tm from time_t */
+ time_str = localtime (&timer);
+
+ /* assign the values */
+ ASSIGN_VALUE (outlist[0], time_str->tm_year + 1900);
+ ASSIGN_VALUE (outlist[1], time_str->tm_mon + 1);
+ ASSIGN_VALUE (outlist[2], time_str->tm_mday);
+ ASSIGN_VALUE (outlist[3], time_str->tm_hour);
+ ASSIGN_VALUE (outlist[4], time_str->tm_min);
+ ASSIGN_VALUE (outlist[5], time_str->tm_sec);
+}