#include "M3Runtime.h" typedef struct { int tc; char* str; int len; } TXT; PRIVATE TXT txt1 = { 3, "HOME", 5}; PRIVATE TXT txt2 = { 3, "/udir/", 7}; PRIVATE TXT txt3 = { 3, ".", 2}; PRIVATE TXT txt4 = { 3, ":", 2}; PRIVATE TXT txt5 = { 3, "/", 2}; #define t9 ADDRESS typedef int t4; #define TC9 TC_ADDRESS IMPORT TYPE TC_ADDRESS; IMPORT char VS_ADDRESS__30f7308738738b44; #line 48 ".ROOT/.boots/corelib/Interfaces/M3toC.i3" #define t10 ADDRESS typedef unsigned char t11; #define t83 void typedef struct { #line 37 ".ROOT/.boots/corelib/Interfaces/Text.i3" char* elts; int size[1]; } t79; #line 48 ".ROOT/.boots/corelib/Interfaces/M3toC.i3" #define t8 t79 typedef struct { t9 elts[256]; } t12; #line 48 #define TC10 TC_M3toC__Argv IMPORT TYPE TC_M3toC__Argv; #line 48 IMPORT char VS_M3toC__Argv__01eb9fa23b3b0c10; #line 17 ".ROOT/.boots/corelib/Interfaces/Ctypes.i3" #define t13 ADDRESS typedef double t51; #line 17 #define TC13 TC_Ctypes__DoubleStar IMPORT TYPE TC_Ctypes__DoubleStar; #line 17 IMPORT char VS_Ctypes__DoubleStar__09a97cc036088f62; #line 33 #define t15 ADDRESS typedef float t17; #line 33 #define TC15 TC_Ctypes__FloatStar IMPORT TYPE TC_Ctypes__FloatStar; #line 33 IMPORT char VS_Ctypes__FloatStar__6c7e0b722780a93f; #define t29 ADDRESS #define TC29 TC_REFANY IMPORT TYPE TC_REFANY; IMPORT char VS_REFANY__4b8748e831fc107a; #line 120 ".ROOT/.boots/corelib/Interfaces/CoreOS.i3" #define t32 ADDRESS typedef struct { #line 111 t4 _sc_onstack; t4 _sc_mask; t4 _sc_sp; t4 _sc_pc; t4 _sc_ps; } t33; PRIVATE void t32_PrintProc (); PRIVATE typecell t32_TC; PRIVATE typecell t32_TC_init = {0, 0, 0, 0, 0, (PROC)NIL, 20, 0, NIL, 0, 0, (PROC)NIL, (PROC)NIL, t32_PrintProc, #line 120 "", 467594205, 652907876}; PRIVATE TYPE TC32 = &t32_TC; #line 63 ".ROOT/.boots/corelib/Interfaces/Ctypes.i3" #define t40 ADDRESS typedef short t57; typedef unsigned char t26; #line 116 ".ROOT/.boots/corelib/Interfaces/Wr.i3" #define t27 t79 typedef struct { t26 elts[4096]; } t58; #line 63 ".ROOT/.boots/corelib/Interfaces/Ctypes.i3" #define TC40 TC_Ctypes__String4096 IMPORT TYPE TC_Ctypes__String4096; #line 63 IMPORT char VS_Ctypes__String4096__8d2ce04b3a64ff9f; #line 62 #define t41 ADDRESS typedef short t59; #line 62 typedef struct { t26 elts[1024]; } t60; #define TC41 TC_Ctypes__String1024 IMPORT TYPE TC_Ctypes__String1024; #line 62 IMPORT char VS_Ctypes__String1024__85fe08042cc88853; #line 61 #define t42 ADDRESS typedef struct { t26 elts[256]; } t61; #line 61 #define TC42 TC_Ctypes__String256 IMPORT TYPE TC_Ctypes__String256; #line 61 IMPORT char VS_Ctypes__String256__e84eeb8129c76f43; #line 60 #define t43 ADDRESS typedef signed_char t62; #line 60 typedef struct { t26 elts[64]; } t63; #define TC43 TC_Ctypes__String64 IMPORT TYPE TC_Ctypes__String64; #line 60 IMPORT char VS_Ctypes__String64__e232939e2f4ff601; #line 59 #define t44 ADDRESS typedef signed_char t64; #line 59 typedef struct { t26 elts[16]; } t65; #define TC44 TC_Ctypes__String16 IMPORT TYPE TC_Ctypes__String16; #line 59 IMPORT char VS_Ctypes__String16__46fccbf225a113eb; #line 58 #define t45 ADDRESS typedef signed_char t66; #line 58 typedef struct { t26 elts[4]; } t67; #define TC45 TC_Ctypes__String4 IMPORT TYPE TC_Ctypes__String4; #line 58 IMPORT char VS_Ctypes__String4__1ecbc452350ba764; #line 52 #define t46 ADDRESS typedef unsigned short t38; #line 52 #define TC46 TC_Ctypes__UnsignedShortStar IMPORT TYPE TC_Ctypes__UnsignedShortStar; #line 52 IMPORT char VS_Ctypes__UnsignedShortStar__ba7321c22f5477f7; #line 50 #define t47 ADDRESS #define t48 ADDRESS typedef short t39; #line 49 #define TC48 TC_Ctypes__ShortStar IMPORT TYPE TC_Ctypes__ShortStar; #line 49 IMPORT char VS_Ctypes__ShortStar__ceeffab3338d5be6; #define TC47 TC_Ctypes__ShortStarStar IMPORT TYPE TC_Ctypes__ShortStarStar; #line 50 IMPORT char VS_Ctypes__ShortStarStar__1827fd6f22a4a56a; #line 46 #define t49 ADDRESS #define TC49 TC_Ctypes__IntStar IMPORT TYPE TC_Ctypes__IntStar; #line 46 IMPORT char VS_Ctypes__IntStar__e39a77b6392d7c83; #line 44 #define t50 ADDRESS #define TC50 TC_Ctypes__IntStarStar IMPORT TYPE TC_Ctypes__IntStarStar; #line 44 IMPORT char VS_Ctypes__IntStarStar__a46afe5b32b9d475; #line 26 #define t52 ADDRESS #define TC52 TC_Ctypes__UnsignedCharStar IMPORT TYPE TC_Ctypes__UnsignedCharStar; #line 26 IMPORT char VS_Ctypes__UnsignedCharStar__5ba21f95225c580b; #define t53 ADDRESS #define TC53 TC_Ctypes__UnsignedCharStarStar IMPORT TYPE TC_Ctypes__UnsignedCharStarStar; #line 27 IMPORT char VS_Ctypes__UnsignedCharStarStar__64970e213b9e555a; #line 24 #define t54 ADDRESS #define t55 ADDRESS #define TC55 TC_Ctypes__CharStarStar IMPORT TYPE TC_Ctypes__CharStarStar; #line 23 IMPORT char VS_Ctypes__CharStarStar__5cd33554337263a0; #define TC54 TC_Ctypes__CharStarStarStar IMPORT TYPE TC_Ctypes__CharStarStarStar; #line 24 IMPORT char VS_Ctypes__CharStarStarStar__a792f1ad3925ee76; #define t85 ADDRESS #define TC85 TC_NULL IMPORT TYPE TC_NULL; IMPORT char VS_NULL__fb50c7d53bec30dc; #define t30 ADDRESS typedef struct { TYPE self; int private; } t30_methods; #define t30_msize (sizeof (t30_methods)) typedef struct { ADDRESS methods; } t30_fields; #define t30_size (sizeof (t30_fields)) #define TC30 TC_ROOT IMPORT TYPE TC_ROOT; IMPORT char VS_ROOT__349f58f628be0ac6; #define t30_MapProc TC_ROOT->mapProc #define t1 ADDRESS #define TC1 TC_Rd__T IMPORT TYPE TC_Rd__T; #line 83 ".ROOT/.boots/corelib/Interfaces/Rd.i3" IMPORT char VS_Rd__T__2555b70b3f7780b1; #define t1_MapProc TC_Rd__T->mapProc #define t2 ADDRESS #define TC2 TC_TEXT IMPORT TYPE TC_TEXT; IMPORT char VS_TEXT__b7a92447326386f5; #define t2_MapProc TC_TEXT->mapProc typedef t1 (*t3)(); typedef unsigned char t7; #line 46 "./Filename.i3" typedef t7 (*t5)(); #line 124 "Filename.m3" typedef t2 (*t6)(); #line 43 ".ROOT/.boots/corelib/Interfaces/M3toC.i3" typedef t13 (*t14)(); #line 40 typedef t15 (*t16)(); #line 37 typedef t17 (*t18)(); #line 34 typedef t4 (*t19)(); #line 31 typedef t9 (*t20)(); #line 17 ".ROOT/.boots/corelib/Interfaces/Cstdlib.i3" typedef t83 (*t21)(); #line 90 ".ROOT/.boots/corelib/Interfaces/Wr.i3" #define t22 ADDRESS #define TC22 TC_Wr__T IMPORT TYPE TC_Wr__T; #line 90 IMPORT char VS_Wr__T__2555b70b3f7780b1; #define t22_MapProc TC_Wr__T->mapProc typedef t22 (*t23)(); typedef int t24; #line 155 typedef t24 (*t25)(); #line 91 typedef unsigned char t28; #line 122 ".ROOT/.boots/corelib/Interfaces/CoreOS.i3" typedef struct { t21 _sv_handler; t4 _sv_mask; t4 _sv_flags; } t31; #line 82 typedef struct { t4 _tv_sec; t4 _tv_usec; } t36; typedef struct { t36 _it_interval; t36 _it_value; } t34; #line 86 typedef struct { t4 _tz_minuteswest; t4 _tz_dsttime; } t35; #line 33 typedef struct { t39 _st_dev; t4 _st_ino; t38 _st_mode; t39 _st_nlink; t39 _st_uid; t39 _st_gid; t39 _st_rdev; t4 _st_size; #line 33 t4 _st_atime; t4 _st_spare1; t4 _st_mtime; t4 _st_spare2; t4 _st_ctime; t4 _st_spare3; t4 _st_blksize; t4 _st_blocks; t4 _st_spare41; #line 33 t4 _st_spare42; } t37; #line 19 ".ROOT/.boots/corelib/Interfaces/Ctypes.i3" typedef signed_char t56; #line 92 ".ROOT/.boots/corelib/Interfaces/Rd.i3" typedef t26 (*t68)(); #line 84 typedef unsigned char t69; #line 15 ".ROOT/.boots/corelib/Interfaces/Thread.i3" #define t70 ADDRESS #define TC70 TC_Thread__T IMPORT TYPE TC_Thread__T; #line 15 IMPORT char VS_Thread__T__2555b70b3f7780b1; #define t70_MapProc TC_Thread__T->mapProc typedef t29 (*t71)(); #define t72 ADDRESS #define TC72 TC_Thread__Condition IMPORT TYPE TC_Thread__Condition; #line 21 IMPORT char VS_Thread__Condition__26d5968239e08f4e; #define t72_MapProc TC_Thread__Condition->mapProc #define t73 ADDRESS #define TC73 TC_MUTEX IMPORT TYPE TC_MUTEX; IMPORT char VS_MUTEX__1f9d4e89391ab815; #define t73_MapProc TC_MUTEX->mapProc typedef t70 (*t74)(); #line 23 #define t75 ADDRESS #line 23 typedef struct { t71 _apply; } t75_methods; #define t75_msize (sizeof (t75_methods)) typedef struct { #line 23 int filler; } t75_fields; #define t75_size (sizeof (t75_fields)) #define TC75 TC_Thread__Closure IMPORT TYPE TC_Thread__Closure; #line 23 IMPORT char VS_Thread__Closure__7fb5c6232c5a658a; #define t75_MapProc TC_Thread__Closure->mapProc typedef t72 (*t76)(); typedef t73 (*t77)(); #line 28 #define t78 ADDRESS #line 28 typedef struct { int filler; } t78_methods; #define t78_msize (sizeof (t78_methods)) typedef struct { #line 28 t24 _stackSize; } t78_fields; #define t78_size (sizeof (t78_fields)) #define TC78 TC_Thread__SizedClosure IMPORT TYPE TC_Thread__SizedClosure; #line 28 IMPORT char VS_Thread__SizedClosure__8a46717d2eae7b07; #define t78_MapProc TC_Thread__SizedClosure->mapProc typedef signed_char t80; #line 67 ".ROOT/.boots/corelib/Interfaces/Text.i3" typedef t80 (*t81)(); typedef CLOSURE t82; #define t84 ADDRESS typedef struct { TYPE self; int private; } t84_methods; #define t84_msize (sizeof (t84_methods)) typedef struct { ADDRESS methods; } t84_fields; #define t84_size (sizeof (t84_fields)) #define TC84 TC_UNTRACED_ROOT IMPORT TYPE TC_UNTRACED_ROOT; IMPORT char VS_UNTRACED_ROOT__3e0964513fd6da20; #line 7 "Filename.m3" IMPORT INITLINK* M3toC__init; IMPORT INITLINK* Cstdlib__init; IMPORT INITLINK* FileStream__init; IMPORT INITLINK* CoreOS__init; #line 7 IMPORT INITLINK* Rd__init; IMPORT INITLINK* Text__init; IMPORT INITLINK* Filename__init; IMPORT t9 _M3toC__TtoS (); IMPORT char VS_M3toC__TtoS__f9cd287822393639; #line 7 IMPORT t2 _M3toC__StoT (); IMPORT char VS_M3toC__StoT__101c3d9d28a7443d; IMPORT TYPE TC_Ctypes__const_char_star; IMPORT char VS_Ctypes__const_char_star__81d35d212987031d; #line 7 IMPORT TYPE TC_Ctypes__char_star; IMPORT char VS_Ctypes__char_star__90cf39683847e5e8; IMPORT t9 getenv (); IMPORT char VSgetenv__da778c4f29c59d5d; #line 7 IMPORT t1 _FileStream__OpenRead (); IMPORT char VS_FileStream__OpenRead__ba61beaf3cb581b3; IMPORT char VS_CoreOS__R_OK__78a8e1dd27173038; #line 7 IMPORT t4 access (); IMPORT char VSaccess__4d8653d33b17bd14; IMPORT EXCEPTION_NAME _Thread__Alerted; IMPORT char VS_Thread__Alerted__fc88feb43485af46; #line 7 IMPORT EXCEPTION_NAME _Rd__EndOfFile; IMPORT char VS_Rd__EndOfFile__f4a9d2f63b7e105d; IMPORT EXCEPTION_NAME _Rd__Failure; #line 7 IMPORT char VS_Rd__Failure__e4a829e331222b6d; IMPORT EXCEPTION_NAME _Rd__Error; IMPORT char VS_Rd__Error__5ca07bfe2ba90cfc; #line 7 IMPORT TYPE TC_Text__T; IMPORT char VS_Text__T__fc4b369f3ab271fd; IMPORT t2 _Text__Cat (); IMPORT char VS_Text__Cat__67b157bc3c80150f; #line 7 IMPORT t26 _Text__GetChar (); IMPORT char VS_Text__GetChar__0f4bd6e72493f4ff; IMPORT t24 _Text__Length (); IMPORT char VS_Text__Length__661a58173d76f41c; #line 7 IMPORT t7 _Text__Empty (); IMPORT char VS_Text__Empty__f8aa6446353b9de8; IMPORT t2 _Text__Sub (); IMPORT char VS_Text__Sub__ba151c702fe1a06f; #line 7 IMPORT t4 _Text__FindChar (); IMPORT char VS_Text__FindChar__e1f24fdd3abfb03c; IMPORT t4 _Text__FindCharR (); IMPORT char VS_Text__FindCharR__d752d4c536319500; #line 7 EXPORT t7 _Filename__FileIsReadable (); EXPORT char VS_Filename__FileIsReadable__9b3bd1213f26bd28 = '\0'; EXPORT t2 _Filename__Root (); #line 7 EXPORT char VS_Filename__Root__0c33b6a221714336 = '\0'; EXPORT t2 _Filename__Extension (); EXPORT char VS_Filename__Extension__521e0dac2145a6cb = '\0'; #line 7 EXPORT t2 _Filename__Head (); EXPORT char VS_Filename__Head__6759a26b35a837fb = '\0'; EXPORT t2 _Filename__Tail (); EXPORT char VS_Filename__Tail__68761432306e5528 = '\0'; #line 7 EXPORT t2 _Filename__DefaultExtension (); EXPORT char VS_Filename__DefaultExtension__23eaa67e30648333 = '\0'; EXPORT t2 _Filename__ExpandTilde (); #line 7 EXPORT char VS_Filename__ExpandTilde__ab20b5b0261f1093 = '\0'; EXPORT t2 _Filename__SearchPath (); EXPORT char VS_Filename__SearchPath__f960e69a200e2452 = '\0'; #line 7 EXPORT t1 _Filename__RdFromPath (); EXPORT char VS_Filename__RdFromPath__ffa34ce03eaf39d4 = '\0'; #line 12 "Filename.m3" EXPORT t7 _Filename__FileIsReadable (_filename) t2 _filename; { t9 z3; t4 z2; t7 z1; #line 12 "Filename.m3" { auto t7 __result; { ZERO1B (& __result); CHECKSTACKOVERFLOW; z3 = _M3toC__TtoS (_filename); z2 = access (z3, 4 ); z1 = (z2 == 0 ); __result = z1; return __result; } } }; #line 17 "Filename.m3" EXPORT t2 _Filename__Root (_filename) t2 _filename; { t4 z4; t4 z2; t7 z1; t7 z0; t4 z6; t2 z3; #line 17 "Filename.m3" { auto t2 __result; { ZERO1 (& __result); CHECKSTACKOVERFLOW; { t4 with; z4 = _Text__FindCharR (_filename, '.' , 2147483647 ); with = z4; { auto t4 _dotpos; { _dotpos = with; z2 = - 1 ; z1 = (_dotpos == z2); z0 = 1; if (! z1) { z6 = _dotpos + 1 ; z4 = _Text__FindChar (_filename, '/' , z6); #line 21 z2 = - 1 ; z1 = (z4 != z2); z0 = z1; }; if (z0) { __result = _filename; return __result; }; z4 = _dotpos; if (z4 < 0) RANGEFAULT; z3 = _Text__Sub (_filename, 0 , z4); __result = z3; return __result; } } }; } } #line 24 }; #line 27 "Filename.m3" EXPORT t2 _Filename__Extension (_filename) t2 _filename; { t4 z4; t4 z2; t7 z1; t7 z0; t4 z6; t24 z5; t4 z3; t2 z7; #line 27 "Filename.m3" { auto t2 __result; { ZERO1 (& __result); CHECKSTACKOVERFLOW; { t4 with; z4 = _Text__FindCharR (_filename, '.' , 2147483647 ); with = z4; { auto t4 _dotpos; { _dotpos = with; z2 = - 1 ; z1 = (_dotpos == z2); z0 = 1; if (! z1) { z6 = _dotpos + 1 ; z4 = _Text__FindChar (_filename, '/' , z6); #line 31 z2 = - 1 ; z1 = (z4 != z2); z0 = z1; }; if (z0) { __result = 0; return __result; }; z4 = _dotpos + 1 ; z2 = z4; if (z2 < 0) RANGEFAULT; z5 = _Text__Length (_filename); z6 = _dotpos + 1 ; z3 = z5 - z6; z4 = z3; #line 34 if (z4 < 0) RANGEFAULT; z7 = _Text__Sub (_filename, z2, z4); __result = z7; return __result; } } }; } } #line 34 }; #line 39 "Filename.m3" EXPORT t2 _Filename__Head (_filename) t2 _filename; { t4 z4; t4 z2; t7 z1; t2 z3; #line 39 "Filename.m3" { auto t2 __result; { ZERO1 (& __result); CHECKSTACKOVERFLOW; { t4 with; z4 = _Text__FindCharR (_filename, '/' , 2147483647 ); with = z4; { auto t4 _slashpos; { _slashpos = with; z2 = - 1 ; z1 = (_slashpos == z2); if (z1) { __result = _filename; return __result; }; z4 = _slashpos; if (z4 < 0) RANGEFAULT; z3 = _Text__Sub (_filename, 0 , z4); __result = z3; return __result; } } }; } } #line 46 }; #line 50 "Filename.m3" EXPORT t2 _Filename__Tail (_filename) t2 _filename; { t4 z4; t4 z2; t7 z1; t24 z5; t4 z6; t4 z3; t2 z7; #line 50 "Filename.m3" { auto t2 __result; { ZERO1 (& __result); CHECKSTACKOVERFLOW; { t4 with; z4 = _Text__FindCharR (_filename, '/' , 2147483647 ); with = z4; { auto t4 _slashpos; { _slashpos = with; z2 = - 1 ; z1 = (_slashpos == z2); if (z1) { __result = _filename; return __result; }; z4 = _slashpos + 1 ; z2 = z4; if (z2 < 0) RANGEFAULT; z5 = _Text__Length (_filename); z6 = _slashpos + 1 ; z3 = z5 - z6; z4 = z3; #line 57 if (z4 < 0) RANGEFAULT; z7 = _Text__Sub (_filename, z2, z4); __result = z7; return __result; } } }; } } #line 57 }; #line 74 "Filename.m3" EXPORT t2 _Filename__DefaultExtension (_filename, _ext) t2 _filename; t2 _ext; { t26 z3; t7 z1; t24 z5; t2 z4; t4 z6; t4 z2; t7 z0; t4 z7; t2 z8; #line 74 "Filename.m3" { auto t7 _force; auto t4 _dotpos; auto t2 __result; { ZERO1B (& _force); #line 74 ZERO1 (& __result); CHECKSTACKOVERFLOW; z3 = _Text__GetChar (_ext, 0 ); z1 = (z3 == '*' ); _force = z1; if (_force) { z5 = _Text__Length (_ext); z4 = _Text__Sub (_ext, 1 , z5); _ext = z4; goto if_5_end; }; if_5_end: /**/; z6 = _Text__FindCharR (_filename, '.' , 2147483647 ); _dotpos = z6; z2 = - 1 ; z1 = (_dotpos == z2); z0 = 1; if (! z1) { z6 = _dotpos + 1 ; z7 = _Text__FindChar (_filename, '/' , z6); #line 85 z2 = - 1 ; z1 = (z7 != z2); z0 = z1; }; if (z0) { _force = 1 ; z5 = _Text__Length (_filename); _dotpos = z5; goto if_6_end; }; if_6_end: /**/; z1 = ! _force; if (z1) { __result = _filename; return __result; }; z6 = _dotpos; if (z6 < 0) RANGEFAULT; z4 = _Text__Sub (_filename, 0 , z6); z8 = _Text__Cat (z4, _ext); __result = z8; return __result; #line 91 } } }; #line 103 "Filename.m3" EXPORT t2 _Filename__ExpandTilde (_filename) t2 _filename; { t24 z2; t7 z3; t7 z0; t26 z4; t9 z5; t9 z6; t2 z1; t24 z7; t2 z8; #line 103 "Filename.m3" { auto t4 _len; auto t2 _home; auto t2 __result; { ZERO1 (& _home); #line 103 ZERO1 (& __result); CHECKSTACKOVERFLOW; z2 = _Text__Length (_filename); _len = z2; z3 = (_len == 0 ); z0 = 1; if (! z3) { z4 = _Text__GetChar (_filename, 0 ); z3 = (z4 != '~' ); z0 = z3; }; if (z0) { __result = _filename; return __result; }; z3 = (_len == 1 ); z0 = 1; if (! z3) { z4 = _Text__GetChar (_filename, 1 ); z3 = (z4 == '/' ); z0 = z3; }; if (z0) { z5 = _M3toC__TtoS (((ADDRESS)(& txt1.str))); z6 = getenv (z5); z1 = _M3toC__StoT (z6); _home = z1; z2 = _Text__Length (_home); z3 = (z2 == 0 ); if (z3) { __result = _filename; return __result; }; z7 = _Text__Length (_filename); z8 = _Text__Sub (_filename, 1 , z7); z1 = (ADDRESS) _Text__Cat (_home, z8); __result = z1; return __result; }; #line 118 z7 = _Text__Length (_filename); z8 = _Text__Sub (_filename, 1 , z7); z1 = (ADDRESS) _Text__Cat (((ADDRESS)(& txt2.str)), z8); #line 120 __result = z1; return __result; } } }; #line 124 "Filename.m3" EXPORT t2 _Filename__SearchPath (_path, _filename, _pred) t2 _path; t2 _filename; t5 _pred; { t7 z2; t2 z3; t26 z4; t7 z1; t4 z5; t4 z6; t4 z7; t2 z8; t24 z9; #line 124 "Filename.m3" { HANDLER hproc_0; PUSH_RAISES (hproc_0, raises_1, proc_0); { auto t4 _start; auto t4 _finish; auto t2 _dirname; auto t2 _tempname; #line 124 auto t2 __result; { ZERO1 (& _dirname); ZERO1 (& _tempname); #line 124 ZERO1 (& __result); CHECKSTACKOVERFLOW; z2 = _Text__Empty (_filename); if (z2) { __result = 0; CUT_TO_NEXT_HANDLER (hproc_0); return __result; }; z2 = _Text__Empty (_path); if (z2) { _path = ((ADDRESS)(& txt3.str)); goto if_12_end; }; if_12_end: /**/; z3 = _Filename__ExpandTilde (_filename); _filename = z3; z4 = _Text__GetChar (_filename, 0 ); z1 = (z4 == '/' ); if (z1) { { t5 proc = _pred; if (!IS_CLOSURE(proc)) { z2 = proc (_filename); } else { z2 = ((t5) CLOSURE_PROC(proc)) (CLOSURE_FRAME(proc), _filename); #line 138 }; }; if (z2) { __result = _filename; CUT_TO_NEXT_HANDLER (hproc_0); return __result; }; __result = 0; CUT_TO_NEXT_HANDLER (hproc_0); return __result; }; _start = 0 ; { t2 with; z3 = (ADDRESS) _Text__Cat (_path, ((ADDRESS)(& txt4.str))); with = z3; { auto t2 _path; { ZERO1 (& _path); #line 144 _path = with; loop_0:; z5 = _Text__FindChar (_path, ':' , _start); _finish = z5; z5 = - 1 ; z1 = (_finish == z5); if (z1) { __result = 0; CUT_TO_NEXT_HANDLER (hproc_0); return __result; }; z5 = _start; if (z5 < 0) RANGEFAULT; z6 = _finish - _start; z7 = z6; if (z7 < 0) RANGEFAULT; z3 = _Text__Sub (_path, z5, z7); #line 149 z8 = _Filename__ExpandTilde (z3); _dirname = z8; z2 = _Text__Empty (_dirname); if (z2) { _dirname = ((ADDRESS)(& txt3.str)); goto if_16_end; }; if_16_end: /**/; z9 = _Text__Length (_dirname); z5 = z9 - 1 ; z6 = z5; if (z6 < 0) RANGEFAULT; z4 = _Text__GetChar (_dirname, z6); #line 152 z1 = (z4 == '/' ); if (z1) { z3 = _Text__Cat (_dirname, _filename); _tempname = z3; goto if_17_end; }; z3 = (ADDRESS) _Text__Cat (_dirname, ((ADDRESS)(& txt5.str))); z8 = (ADDRESS) _Text__Cat (z3, _filename); _tempname = z8; if_17_end: /**/; { t5 proc = _pred; if (!IS_CLOSURE(proc)) { z2 = proc (_tempname); } else { z2 = ((t5) CLOSURE_PROC(proc)) (CLOSURE_FRAME(proc), _tempname); #line 156 }; }; if (z2) { __result = _tempname; CUT_TO_NEXT_HANDLER (hproc_0); return __result; }; z5 = _finish + 1 ; _start = z5; goto loop_0; } } }; } } proc_0: CUT_TO_NEXT_HANDLER (hproc_0); if (hproc_0.exception != 0) RAISE_FOR_SURE (hproc_0.exception); #line 158 }; }; #line 162 "Filename.m3" EXPORT t1 _Filename__RdFromPath (_path, _filename) t2 _path; t2 _filename; { t2 z4; t7 z2; t1 z3; #line 162 "Filename.m3" { HANDLER hproc_0; PUSH_RAISES (hproc_0, raises_1, proc_0); { auto t1 __result; { ZERO1 (& __result); CHECKSTACKOVERFLOW; { t2 with; z4 = _Filename__SearchPath (_path, _filename, _Filename__FileIsReadable); with = z4; { auto t2 _pathname; #line 166 { ZERO1 (& _pathname); _pathname = with; z2 = (_pathname == 0); if (z2) { __result = 0; CUT_TO_NEXT_HANDLER (hproc_0); return __result; }; z3 = _FileStream__OpenRead (_pathname); __result = z3; CUT_TO_NEXT_HANDLER (hproc_0); return __result; } } }; } } proc_0: CUT_TO_NEXT_HANDLER (hproc_0); #line 170 if (hproc_0.exception != 0) RAISE_FOR_SURE (hproc_0.exception); }; }; PRIVATE int init_done = -1; #line 170 "Filename.m3" PRIVATE void Filename__initProc (g) int g; { #line 170 "Filename.m3" if (init_done >= g) return; init_done = g; INITIALIZE (& Filename__init); INITIALIZE (& M3toC__init); INITIALIZE (& Cstdlib__init); #line 170 INITIALIZE (& FileStream__init); INITIALIZE (& CoreOS__init); INITIALIZE (& Rd__init); INITIALIZE (& Text__init); return; #line 170 }; #line 170 "Filename.m3" PRIVATE void t32_PrintProc (ref) t33* ref; { CHECKSTACKOVERFLOW; fprintf (stderr, "%s {", TC32->brand); fprintf (stderr, "^ = { "); #line 170 fprintf (stderr, "sc_onstack = %d", (*ref)._sc_onstack); fprintf (stderr, "sc_mask = %d", (*ref)._sc_mask); fprintf (stderr, "sc_sp = %d", (*ref)._sc_sp); #line 170 fprintf (stderr, "sc_pc = %d", (*ref)._sc_pc); fprintf (stderr, "sc_ps = %d", (*ref)._sc_ps); fprintf (stderr, "}"); fprintf (stderr, "}\n"); #line 170 }; PRIVATE INITLINK me_0 ={(INITLINK*)NIL, 0, Filename__initProc}; static char* VSimports[] = { &VS_M3toC__TtoS__f9cd287822393639, &VS_M3toC__StoT__101c3d9d28a7443d, &VS_M3toC__Argv__01eb9fa23b3b0c10, &VS_Ctypes__const_char_star__81d35d212987031d, &VS_Ctypes__char_star__90cf39683847e5e8, &VS_FileStream__OpenRead__ba61beaf3cb581b3, &VS_Ctypes__char_star__90cf39683847e5e8, &VS_CoreOS__R_OK__78a8e1dd27173038, &VS_Thread__Alerted__fc88feb43485af46, &VS_Rd__T__2555b70b3f7780b1, &VS_Rd__EndOfFile__f4a9d2f63b7e105d, &VS_Rd__Failure__e4a829e331222b6d, &VS_Rd__Error__5ca07bfe2ba90cfc, &VS_Text__T__fc4b369f3ab271fd, &VS_Text__Cat__67b157bc3c80150f, &VS_Text__GetChar__0f4bd6e72493f4ff, &VS_Text__Length__661a58173d76f41c, &VS_Text__Empty__f8aa6446353b9de8, &VS_Text__Sub__ba151c702fe1a06f, &VS_Text__FindChar__e1f24fdd3abfb03c, &VS_Text__FindCharR__d752d4c536319500, NIL }; void Filename__MLink (phase) int phase; { switch (phase) { case 0: { me_0.link = Filename__init; Filename__init = & me_0; t32_TC = t32_TC_init; REGISTERTYPE (TC32); break; }; case 1: { break; }; case 2: { break; }; }; };