diff options
Diffstat (limited to 'mdk-stage1/slang/sltime.c')
| -rw-r--r-- | mdk-stage1/slang/sltime.c | 310 | 
1 files changed, 0 insertions, 310 deletions
diff --git a/mdk-stage1/slang/sltime.c b/mdk-stage1/slang/sltime.c deleted file mode 100644 index 14fc6ec16..000000000 --- a/mdk-stage1/slang/sltime.c +++ /dev/null @@ -1,310 +0,0 @@ -/* time related system calls */ -/* Copyright (c) 1992, 1999, 2001 John E. Davis - * This file is part of the S-Lang library. - * - * You may distribute under the terms of either the GNU General Public - * License or the Perl Artistic License. - */ - -#include "slinclud.h" - -#include <sys/types.h> -#include <time.h> - -#if defined(__BORLANDC__) -# include <dos.h> -#endif -#if defined(__GO32__) || defined(__WATCOMC__) -# include <dos.h> -# include <bios.h> -#endif - -#include <errno.h> - -#include "slang.h" -#include "_slang.h" - -#ifdef __WIN32__ -#include <windows.h> -/* Sleep is defined badly in MSVC... */ -# ifdef _MSC_VER -#  define sleep(n) _sleep((n)*1000) -# else -#  ifdef sleep -#   undef sleep -#  endif -#  define sleep(x) if(x)Sleep((x)*1000) -# endif -#endif - - -#if defined(IBMPC_SYSTEM) -/* For other system (Unix and VMS), _SLusleep is in sldisply.c */ -int _SLusleep (unsigned long s) -{ -   sleep (s/1000000L); -   s = s % 1000000L; - -# if defined(__WIN32__) -   Sleep (s/1000); -#else -# if defined(__IBMC__) -   DosSleep(s/1000); -# else -#  if defined(_MSC_VER) -   _sleep (s/1000); -#  endif -# endif -#endif -   return 0; -} -#endif - -#if defined(__IBMC__) && !defined(_AIX) -/* sleep is not a standard function in VA3. */ -unsigned int sleep (unsigned int seconds) -{ -   DosSleep(1000L * ((long)seconds)); -   return 0; -} -#endif - -static char *ctime_cmd (unsigned long *tt) -{ -   char *t; - -   t = ctime ((time_t *) tt); -   t[24] = 0;  /* knock off \n */ -   return (t); -} - -static void sleep_cmd (void) -{ -   unsigned int secs; -#if SLANG_HAS_FLOAT -   unsigned long usecs; -   double x; - -   if (-1 == SLang_pop_double (&x, NULL, NULL)) -     return; - -   if (x < 0.0)  -     x = 0.0; -   secs = (unsigned int) x; -   sleep (secs); -   x -= (double) secs; -   usecs = (unsigned long) (1e6 * x); -   if (usecs > 0) _SLusleep (usecs); -#else -   if (-1 == SLang_pop_uinteger (&secs)) -     return; -   if (secs != 0) sleep (secs); -#endif -} - -static unsigned long _time_cmd (void) -{ -   return (unsigned long) time (NULL); -} - -#if defined(__GO32__) -static char *djgpp_current_time (void) /*{{{*/ -{ -   union REGS rg; -   unsigned int year; -   unsigned char month, day, weekday, hour, minute, sec; -   char days[] = "SunMonTueWedThuFriSat"; -   char months[] = "JanFebMarAprMayJunJulAugSepOctNovDec"; -   static char the_date[26]; - -   rg.h.ah = 0x2A; -#ifndef __WATCOMC__ -   int86(0x21, &rg, &rg); -   year = rg.x.cx & 0xFFFF; -#else -   int386(0x21, &rg, &rg); -   year = rg.x.ecx & 0xFFFF; -#endif - -   month = 3 * (rg.h.dh - 1); -   day = rg.h.dl; -   weekday = 3 * rg.h.al; - -   rg.h.ah = 0x2C; - -#ifndef __WATCOMC__ -   int86(0x21, &rg, &rg); -#else -   int386(0x21, &rg, &rg); -#endif - -   hour = rg.h.ch; -   minute = rg.h.cl; -   sec = rg.h.dh; - -   /* we want this form: Thu Apr 14 15:43:39 1994\n  */ -   sprintf(the_date, "%.3s %.3s%3d %02d:%02d:%02d %d\n", -	   days + weekday, months + month, -	   day, hour, minute, sec, year); -   return the_date; -} - -/*}}}*/ - -#endif - -char *SLcurrent_time_string (void) /*{{{*/ -{ -   char *the_time; -#ifndef __GO32__ -   time_t myclock; - -   myclock = time((time_t *) 0); -   the_time = (char *) ctime(&myclock); -#else -   the_time = djgpp_current_time (); -#endif -   /* returns the form Sun Sep 16 01:03:52 1985\n\0 */ -   the_time[24] = '\0'; -   return(the_time); -} - -/*}}}*/ - -static int push_tm_struct (struct tm *tms) -{ -   char *field_names [9]; -   unsigned char field_types[9]; -   VOID_STAR field_values [9]; -   int int_values [9]; -   unsigned int i; - -   if (tms == NULL) -     return SLang_push_null (); - -   field_names [0] = "tm_sec"; int_values [0] = tms->tm_sec; -   field_names [1] = "tm_min"; int_values [1] = tms->tm_min; -   field_names [2] = "tm_hour"; int_values [2] = tms->tm_hour; -   field_names [3] = "tm_mday"; int_values [3] = tms->tm_mday; -   field_names [4] = "tm_mon"; int_values [4] = tms->tm_mon; -   field_names [5] = "tm_year"; int_values [5] = tms->tm_year; -   field_names [6] = "tm_wday"; int_values [6] = tms->tm_wday; -   field_names [7] = "tm_yday"; int_values [7] = tms->tm_yday; -   field_names [8] = "tm_isdst"; int_values [8] = tms->tm_isdst; - -   for (i = 0; i < 9; i++) -     { -	field_types [i] = SLANG_INT_TYPE; -	field_values [i] = (VOID_STAR) (int_values + i); -     } - -   return SLstruct_create_struct (9, field_names, field_types, field_values); -} - - -static void localtime_cmd (long *t) -{ -   time_t tt = (time_t) *t; -   (void) push_tm_struct (localtime (&tt)); -} -    -static void gmtime_cmd (long *t) -{ -#ifdef HAVE_GMTIME -   time_t tt = (time_t) *t; -   (void) push_tm_struct (gmtime (&tt)); -#else -   localtime_cmd (t); -#endif -} - -#ifdef HAVE_TIMES - -# ifdef HAVE_SYS_TIMES_H -#  include <sys/times.h> -# endif - -#include <limits.h> - -#ifdef CLK_TCK -# define SECS_PER_TICK (1.0/(double)CLK_TCK) -#else  -# ifdef CLOCKS_PER_SEC -#  define SECS_PER_TICK (1.0/(double)CLOCKS_PER_SEC) -# else -#  define SECS_PER_TICK (1.0/60.0) -# endif -#endif - -static void times_cmd (void) -{ -   double dvals[4]; -   struct tms t; -   VOID_STAR field_values[4]; -   char *field_names[4]; -   unsigned int i; -   unsigned char field_types[4]; -    -   (void) times (&t); - -   field_names[0] = "tms_utime";   dvals[0] = (double)t.tms_utime;  -   field_names[1] = "tms_stime";   dvals[1] = (double)t.tms_stime;  -   field_names[2] = "tms_cutime";  dvals[2] = (double)t.tms_cutime; -   field_names[3] = "tms_cstime";  dvals[3] = (double)t.tms_cstime; - -   for (i = 0; i < 4; i++) -     { -	dvals[i] *= SECS_PER_TICK; -	field_values[i] = (VOID_STAR) &dvals[i]; -	field_types[i] = SLANG_DOUBLE_TYPE; -     } -   (void) SLstruct_create_struct (4, field_names, field_types, field_values); -} - -static struct tms Tic_TMS; - -static void tic_cmd (void) -{ -   (void) times (&Tic_TMS); -} - -static double toc_cmd (void) -{ -   struct tms t; -   double d; - -   (void) times (&t); -   d = ((t.tms_utime - Tic_TMS.tms_utime) -	+ (t.tms_stime - Tic_TMS.tms_stime)) * SECS_PER_TICK; -   Tic_TMS = t; -   return d; -} - -#endif				       /* HAVE_TIMES */ - - -static SLang_Intrin_Fun_Type Time_Funs_Table [] = -{ -   MAKE_INTRINSIC_1("ctime", ctime_cmd, SLANG_STRING_TYPE, SLANG_ULONG_TYPE), -   MAKE_INTRINSIC_0("sleep", sleep_cmd, SLANG_VOID_TYPE), -   MAKE_INTRINSIC_0("_time", _time_cmd, SLANG_ULONG_TYPE), -   MAKE_INTRINSIC_0("time", SLcurrent_time_string, SLANG_STRING_TYPE), -   MAKE_INTRINSIC_1("localtime", localtime_cmd, SLANG_VOID_TYPE, SLANG_LONG_TYPE), -   MAKE_INTRINSIC_1("gmtime", gmtime_cmd, SLANG_VOID_TYPE, SLANG_LONG_TYPE), - -#ifdef HAVE_TIMES -   MAKE_INTRINSIC_0("times", times_cmd, SLANG_VOID_TYPE), -   MAKE_INTRINSIC_0("tic", tic_cmd, SLANG_VOID_TYPE), -   MAKE_INTRINSIC_0("toc", toc_cmd, SLANG_DOUBLE_TYPE), -#endif -   SLANG_END_INTRIN_FUN_TABLE -}; - -int _SLang_init_sltime (void) -{ -#ifdef HAVE_TIMES -   (void) tic_cmd (); -#endif -   return SLadd_intrin_fun_table (Time_Funs_Table, NULL); -} -  | 
