diff options
Diffstat (limited to 'libchill/abstime.c')
-rw-r--r-- | libchill/abstime.c | 139 |
1 files changed, 0 insertions, 139 deletions
diff --git a/libchill/abstime.c b/libchill/abstime.c deleted file mode 100644 index bf3d6149110..00000000000 --- a/libchill/abstime.c +++ /dev/null @@ -1,139 +0,0 @@ -/* 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, 59 Temple Place - Suite 330, -Boston, MA 02111-1307, USA. */ - -/* As a special exception, if you link this library with other files, - some of which are compiled with GCC, to produce an executable, - this library does not by itself cause the resulting executable - to be covered by the GNU General Public License. - This exception does not however invalidate any other reasons why - the executable file might be covered by the GNU General Public License. */ - -#include <time.h> -#include "rtltypes.h" - -EXCEPTION (rangefail); - -#define SECOND_VALID 1 -#define MINUTE_VALID 2 -#define HOUR_VALID 4 -#define DAY_VALID 8 -#define MONTH_VALID 16 -#define YEAR_VALID 32 - -extern void __cause_ex1 (char *ex, char *file, int lineno); - -#define CAUSE_RANGEFAIL __cause_ex1 ("rangefail", filename, lineno) - -/* - * function _abstime - * - * parameters: - * mask - mask of valid values - * year - * month - * day - * hour - * minute - * second - * - * returns: - * unsigned long - * - * exceptions: - * rangefail - * - * abstract: - * perform the ABSTIME builtin call - * - */ - -unsigned long -_abstime (mask, year, month, day, hour, minute, second, - filename, lineno) - int mask, year, month, day, hour, minute, second; - char *filename; - int lineno; -{ - struct tm *time_str; - time_t result, current_time; - - /* first of all get current time */ - if ((current_time = time (0)) == (time_t)-1) - /* FIXME: what excpetion ?? */ - CAUSE_RANGEFAIL; - - /* if we just have to determine the current time, we are ready. - This is shown by mask == 0. */ - if (mask == 0) - return (unsigned long)current_time; - - /* convert current time to struct tm */ - time_str = localtime (¤t_time); - - if (mask & YEAR_VALID) - { - if (year < 1900) - CAUSE_RANGEFAIL; - time_str->tm_year = year - 1900; - } - - if (mask & MONTH_VALID) - { - if (month < 1 || month > 12) - CAUSE_RANGEFAIL; - time_str->tm_mon = month - 1; - } - - if (mask & DAY_VALID) - { - if (day < 1 || day > 31) - CAUSE_RANGEFAIL; - time_str->tm_mday = day; - } - - if (mask & HOUR_VALID) - { - if (hour < 0 || hour > 23) - CAUSE_RANGEFAIL; - time_str->tm_hour = hour; - } - - if (mask & MINUTE_VALID) - { - if (minute < 0 || minute > 59) - CAUSE_RANGEFAIL; - time_str->tm_min = minute; - } - - if (mask & SECOND_VALID) - { - if (second < 0 || second > 59) - CAUSE_RANGEFAIL; - time_str->tm_sec = second; - } - - /* do it */ - time_str->tm_isdst = -1; - if ((result = mktime (time_str)) == (time_t)-1) - CAUSE_RANGEFAIL; - - return (unsigned long)result; -} |