/* Generated with C2C (Cedar To C)*/ /* Copyright (C) 1992 by Xerox Corporation. All rights reserved. */ /* time: February 21, 1992 9:45:14 pm PST */ /* C2C version: October 16, 1990 (native) */ /* ref-counting: off */ /* file: HostTimeUnixImpl, module: HostTimeUnixImpl */ /* switches: bcfhklnouw */ #include <cedar/InstallationSupport.h> #include <cedar/CedarExtra.h> static char versionStamp[] = "@(#)mob←version [2194834731,3409745707] HostTimeUnixImpl"; typedef unsigned word, *ptr; typedef unsigned char byte, *bPt; typedef unsigned short half, *hPt; typedef struct {word f0, f1;} W2; typedef struct {word f0, f1, f2, f3;} W4; typedef W4 *W4Pt; typedef W2 *W2Pt; typedef word (*fPt)(); typedef struct {word f0, f1, f2;} W3; typedef W3 *W3Pt; #define SOURCE(p, l) /* source p, l */ #define BCK(idx, lim) ( ((unsigned) idx) >= ((unsigned) lim) ? (XR←RaiseBoundsFault()) : (idx) ) static float fc7 = 1.0e-6; #define SGNCK(i) ((int) (word) (i) < 0 ? XR←RaiseArithmeticFault(): i ) static float fc12 = 1000000.0; static void NoName←Q540(); static void HostTimeUnixImpl←P0(); static void HostTimeFromExtendedGMT←P60(); static void ExtendedGMTFromHostTime←P120(); static void GetTime←P180(); static word TimeToMicroseconds←P240(); static void MicrosecondsToTime←P300(); static word TimeToSeconds←P360(); static void SecondsToTime←P420(); static void GetZoneAndDST←P480(); static struct {unsigned f; char r[16];} string1 = {851984, "\257\300\202\322\205\053\300\313\074\227\053\100\164\000\000"}; static struct {unsigned f; char r[16];} string2 = {851984, "\257\300\246\205\220\035\300\344\000\142\023\100\150\000\000"}; static struct {unsigned f; char r[16];} string3 = {851984, "\257\300\211\056\077\074\300\127\047\310\242\100\150\000\000"}; static struct {unsigned f; char r[16];} string4 = {851984, "\257\300\273\264\166\314\300\142\321\237\137\100\150\000\000"}; static struct { word f0[4]; word f4; word f5; word f6; word f7; word f8; word f9; word f10; word f11; word f12; word f13; word f14; word f15; word f16; word f17; word f18; word f19; word f20; word f21[4]; } globalframe = { {0}, (word) GetZoneAndDST←P480, 0, (word) SecondsToTime←P420, 0, (word) TimeToSeconds←P360, 0, (word) MicrosecondsToTime←P300, 0, (word) TimeToMicroseconds←P240, 0, (word) GetTime←P180, 0, (word) ExtendedGMTFromHostTime←P120, 0, (word) HostTimeFromExtendedGMT←P60, 0, (word) HostTimeUnixImpl←P0, {0} }; static void NoName←Q540() { register ptr gf←c043 = (ptr) &globalframe; word var←c5916; (void) XR←DeclareGlobalFrame((word) "HostTimeUnixImpl", &globalframe, (word) XR←GetTypeIndexS((word) (&string1)), (word) ( ( (bPt) gf←c043)+80)/* var←c5596 */ ); var←c5916 = (word) XR←ImportInterface((word) "Real", (word) XR←GetTypeIndexS((word) (&string2)), 11); (* (( (ptr) gf←c043)+23)/* var←c5788 */ ) = var←c5916; (void) XR←ImportProcS(var←c5916, 67371521); (void) XR←ImportProcS(var←c5916, 67372033); var←c5916 = (word) XR←ImportInterface((word) "UnixSysCalls", (word) XR←GetTypeIndexS((word) (&string3)), 77); (* (( (ptr) gf←c043)+22)/* var←c5660 */ ) = var←c5916; (void) XR←ImportProcS(var←c5916, 67640066); var←c5916 = (word) XR←ExportInterface((word) "HostTime", (word) XR←GetTypeIndexS((word) (&string4)), 8); (* (( (ptr) gf←c043)+24)/* var←c5948 */ ) = var←c5916; (void) XR←ExportProcS(var←c5916, (word) (( (bPt) gf←c043)+64)/* var←c5532 */ , 135266305); (void) XR←ExportProcS(var←c5916, (word) (( (bPt) gf←c043)+72)/* var←c5564 */ , 268960001); (void) XR←ExportProcS(var←c5916, (word) (( (bPt) gf←c043)+56)/* var←c5500 */ , 268435968); (void) XR←ExportProcS(var←c5916, (word) (( (bPt) gf←c043)+48)/* var←c5468 */ , 68158209); (void) XR←ExportProcS(var←c5916, (word) (( (bPt) gf←c043)+40)/* var←c5436 */ , 268698625); (void) XR←ExportProcS(var←c5916, (word) (( (bPt) gf←c043)+32)/* var←c5404 */ , 68158721); (void) XR←ExportProcS(var←c5916, (word) (( (bPt) gf←c043)+24)/* var←c5372 */ , 268699137); (void) XR←ExportProcS(var←c5916, (word) (( (bPt) gf←c043)+16)/* var←c5340 */ , 201328384); } static void HostTimeUnixImpl←P0(formal←c015, formal←c014) word formal←c015; word formal←c014; { /* HostTimeUnixImpl: */ } static void HostTimeFromExtendedGMT←P60(formal←c018, egmt←v2996) word formal←c018; W2 egmt←v2996; { W4 time←v3040; /* HostTimeFromExtendedGMT: */ SOURCE(514, 163) SOURCE(514, 163) time←v3040.f0 = 0; time←v3040.f1 = 0; time←v3040.f2 = 0; time←v3040.f3 = 0; SOURCE(611, 45) time←v3040.f0 = (egmt←v2996.f0 - 63158400); SOURCE(658, 19) time←v3040.f1 = egmt←v2996.f1; /* removed tail goto */ (* (W4Pt) formal←c018 ) = time←v3040; return; } static void ExtendedGMTFromHostTime←P120(formal←c021, time←v3100) word formal←c021; W4 time←v3100; { W2 egmt←v3144; /* ExtendedGMTFromHostTime: */ SOURCE(683, 145) SOURCE(765, 42) egmt←v3144.f0 = (time←v3100.f0 + 63158400); SOURCE(809, 19) { word idx5; egmt←v3144.f1 = ( idx5 = (word) time←v3100.f1, BCK(idx5, 1000000) ); }; /* removed tail goto */ (* (W2Pt) formal←c021 ) = egmt←v3144; return; } static void GetTime←P180(formal←c025) word formal←c025; { register ptr gf←c5980 = (ptr) &globalframe; W4 time←v3204; W2 timeVal←v3708; /* GetTime: */ SOURCE(834, 208) SOURCE(834, 208) time←v3204.f0 = 0; time←v3204.f1 = 0; time←v3204.f2 = 0; time←v3204.f3 = 0; SOURCE(906, 35) timeVal←v3708.f0 = 0; timeVal←v3708.f1 = 0; SOURCE(943, 54) { word var←c5692; word pd6; pd6 = (* (( (ptr) (* (( (ptr) gf←c5980)+22)/* var←c5660 */ ))+31) ); var←c5692 = (word) ( *( (fPt) ((* (ptr) pd6 ))))((word) &timeVal←v3708, 0, pd6); }; SOURCE(999, 20) time←v3204.f0 = timeVal←v3708.f0; SOURCE(1021, 21) time←v3204.f1 = timeVal←v3708.f1; /* removed tail goto */ (* (W4Pt) formal←c025 ) = time←v3204; return; } static word TimeToMicroseconds←P240(time←v3264) W4 time←v3264; { word var←c3308; /* TimeToMicroseconds: */ SOURCE(1048, 116) SOURCE(1112, 52) return((time←v3264.f1 + (time←v3264.f0 * 1000000))); } static void MicrosecondsToTime←P300(formal←c030, usecs←v3368) word formal←c030; word usecs←v3368; { W4 time←v3412; /* MicrosecondsToTime: */ SOURCE(1170, 120) SOURCE(1170, 120) time←v3412.f0 = 0; time←v3412.f1 = 0; time←v3412.f2 = 0; time←v3412.f3 = 0; SOURCE(1241, 49) time←v3412.f0 = (usecs←v3368 / 1000000); time←v3412.f1 = (usecs←v3368 % 1000000); time←v3412.f2 = 0; time←v3412.f3 = 0; /* removed tail goto */ (* (W4Pt) formal←c030 ) = time←v3412; return; } static word TimeToSeconds←P360(time←v3472) W4 time←v3472; { word var←c3516; /* TimeToSeconds: */ SOURCE(1296, 90) SOURCE(1355, 31) { word x8; float tf9; return(( tf9 = (float)(unsigned)time←v3472.f0 + ((float)(unsigned)time←v3472.f1 * ( x8 = (* (ptr) &fc7 ), *(float*)&x8 )), *(word*)&tf9 )); }; } static void SecondsToTime←P420(formal←c038, secs←v3576) word formal←c038; word secs←v3576; { register ptr gf←c6012 = (ptr) &globalframe; W4 var←c3620; /* SecondsToTime: */ SOURCE(1392, 137) SOURCE(1451, 78) { W4 var←c5852; { W4 var←c5756; { word pd10; word idx11; pd10 = (* (( (ptr) (* (( (ptr) gf←c6012)+23)/* var←c5788 */ ))+8) ); var←c5756.f0 = ( idx11 = (word) ( *( (fPt) ((* (ptr) pd10 ))))(secs←v3576, pd10), SGNCK(idx11) ); }; { word var←c5820; { word x13; word x14; word pd15; pd15 = (* (( (ptr) (* (( (ptr) gf←c6012)+23)/* var←c5788 */ ))+8) ); *(float*)&var←c5820 = ( x13 = (* (ptr) &fc12 ), *(float*)&x13 ) * (( x14 = secs←v3576, *(float*)&x14 ) - (float)(int)(word) ( *( (fPt) ((* (ptr) pd15 ))))(secs←v3576, pd15)); }; { word pd16; word idx17; pd16 = (* (( (ptr) (* (( (ptr) gf←c6012)+23)/* var←c5788 */ ))+6) ); var←c5756.f1 = ( idx17 = (word) ( *( (fPt) ((* (ptr) pd16 ))))(var←c5820, pd16), SGNCK(idx17) ); }; }; var←c5756.f2 = 0; var←c5756.f3 = 0; var←c5852 = var←c5756; }; var←c3620 = var←c5852; /* removed tail goto */ }; (* (W4Pt) formal←c038 ) = var←c3620; return; } static void GetZoneAndDST←P480(formal←c042) word formal←c042; { register ptr gf←c6044 = (ptr) &globalframe; W3 tp←v3680; W2 unixTimeZone←v3752; /* GetZoneAndDST: */ SOURCE(1535, 336) SOURCE(1644, 60) SOURCE(1645, 59) { word var←c5884; word pd18; pd18 = (* (( (ptr) (* (( (ptr) gf←c6044)+22)/* var←c5660 */ ))+31) ); var←c5884 = (word) ( *( (fPt) ((* (ptr) pd18 ))))(0, (word) &unixTimeZone←v3752, pd18); }; SOURCE(1707, 34) { word idx19; tp←v3680.f0 = ( idx19 = (word) (unixTimeZone←v3752.f0 + 720), BCK(idx19, 1442) ); }; SOURCE(1743, 128) if (( (int)unixTimeZone←v3752.f1 != (int)0)) { SOURCE(1778, 16) tp←v3680.f1 = 98; SOURCE(1796, 15) tp←v3680.f2 = 305; } else { SOURCE(1822, 17) tp←v3680.f1 = 366; SOURCE(1858, 13) tp←v3680.f2 = 1; }; /* removed tail goto */ (* (W3Pt) formal←c042 ) = tp←v3680; return; } /* file: HostTimeUnixImpl, module: HostTimeUnixImpl, compiled at: February 21, 1992 9:45:14 pm PST */ extern void XR←install←HostTimeUnixImpl() { NoName←Q540(); } extern void XR←run←HostTimeUnixImpl() { XR←Start(&globalframe); }