/* Generated by Nim Compiler v0.16.0 */ /* (c) 2017 Andreas Rumpf */ /* The generated code is subject to the original license. */ /* Compiled for: Linux, amd64, gcc */ /* Command for C compiler: gcc -c -w -O3 -fno-strict-aliasing -I/afs/athena.mit.edu/software/nim-lang_v0.16.0/nim-0.16.0/lib -o tools/nimsuggest/nimcache/stdlib_os.o tools/nimsuggest/nimcache/stdlib_os.c */ #define NIM_INTBITS 64 #include "nimbase.h" #include #include #include #include #include #include #include #include #include #include #undef linux typedef struct TY_sM4lkSb7zS6F7OVMvW9cffQ TY_sM4lkSb7zS6F7OVMvW9cffQ; typedef struct NimStringDesc NimStringDesc; typedef struct TGenericSeq TGenericSeq; typedef struct TNimType TNimType; typedef struct TNimNode TNimNode; typedef struct TY_UV3llMMYFckfui8YMBuUZA TY_UV3llMMYFckfui8YMBuUZA; typedef struct Oserror_3XwRQvmzCEOC4QnT706q1g Oserror_3XwRQvmzCEOC4QnT706q1g; typedef struct Systemerror_Fjf9b9b2IlzRO2tspHxG3tgg Systemerror_Fjf9b9b2IlzRO2tspHxG3tgg; typedef struct Exception Exception; typedef struct TNimObject TNimObject; typedef struct TY_7q7q3E6Oj24ZNVJb9aonhAg TY_7q7q3E6Oj24ZNVJb9aonhAg; typedef struct Indexerror_b0IIwghFQBADkB2c86kXQA Indexerror_b0IIwghFQBADkB2c86kXQA; typedef struct Ioerror_9czoZw3pzPyrBmb5zTHY1OQ Ioerror_9czoZw3pzPyrBmb5zTHY1OQ; typedef struct TSafePoint TSafePoint; struct TGenericSeq { NI len; NI reserved; }; struct NimStringDesc { TGenericSeq Sup; NIM_CHAR data[SEQ_DECL_SIZE]; }; typedef NU8 Tnimkind_jIBKr1ejBgsfM33Kxw4j7A; typedef NU8 Tnimtypeflag_v8QUszD1sWlSIWZz7mC4bQ_Set; typedef N_NIMCALL_PTR(void, TY_ojoeKfW4VYIm36I9cpDTQIg) (void* p0, NI op0); typedef N_NIMCALL_PTR(void*, TY_WSm2xU5ARYv9aAR4l0z9c9auQ) (void* p0); struct TNimType { NI size; Tnimkind_jIBKr1ejBgsfM33Kxw4j7A kind; Tnimtypeflag_v8QUszD1sWlSIWZz7mC4bQ_Set flags; TNimType* base; TNimNode* node; void* finalizer; TY_ojoeKfW4VYIm36I9cpDTQIg marker; TY_WSm2xU5ARYv9aAR4l0z9c9auQ deepcopy; }; typedef NU8 Tnimnodekind_unfNsxrcATrufDZmpBq4HQ; struct TNimNode { Tnimnodekind_unfNsxrcATrufDZmpBq4HQ kind; NI offset; TNimType* typ; NCSTRING name; NI len; TNimNode** sons; }; typedef N_NIMCALL_PTR(void, TY_T4eqaYlFJYZUv9aG9b1TV0bQ) (void); struct TY_UV3llMMYFckfui8YMBuUZA { NimStringDesc* Field0; NimStringDesc* Field1; }; struct TNimObject { TNimType* m_type; }; struct Exception { TNimObject Sup; Exception* parent; NCSTRING name; NimStringDesc* message; NimStringDesc* trace; }; struct Systemerror_Fjf9b9b2IlzRO2tspHxG3tgg { Exception Sup; }; struct Oserror_3XwRQvmzCEOC4QnT706q1g { Systemerror_Fjf9b9b2IlzRO2tspHxG3tgg Sup; NI32 errorcode; }; struct TY_7q7q3E6Oj24ZNVJb9aonhAg { NimStringDesc* Field0; NimStringDesc* Field1; NimStringDesc* Field2; }; struct Indexerror_b0IIwghFQBADkB2c86kXQA { Exception Sup; }; struct Ioerror_9czoZw3pzPyrBmb5zTHY1OQ { Systemerror_Fjf9b9b2IlzRO2tspHxG3tgg Sup; }; typedef NU8 Pathcomponent_9c1SIU9cO1wHcl09b703A9cDrg; typedef NimStringDesc* TY_nHXaesL0DJZHyVS07ARPRA[1]; typedef struct { N_NIMCALL_PTR(NIM_BOOL, ClPrc) (Exception* e0, void* ClEnv); void* ClEnv; } TY_KeeAOYBd84Ofsw6Y7LizaQ; struct TSafePoint { TSafePoint* prev; NI status; jmp_buf context; NIM_BOOL hasRaiseAction; TY_KeeAOYBd84Ofsw6Y7LizaQ raiseAction; }; typedef NIM_CHAR TY_dTlC27m9c9aWd5dvuePYanug[256]; typedef NU8 Filemode_fVUBHvW79bXUw1j55Oo9avSQ; struct TY_sM4lkSb7zS6F7OVMvW9cffQ { TGenericSeq Sup; NimStringDesc* data[SEQ_DECL_SIZE]; }; N_NIMCALL(void, nimGCvisit)(void* d0, NI op0); static N_NIMCALL(void, Marker_TY_sM4lkSb7zS6F7OVMvW9cffQ)(void* p, NI op); static N_NIMCALL(void, T_yu6cxgKBBXbNsTkT9cyMd4g_2)(void); N_NIMCALL(void, nimRegisterGlobalMarker)(TY_T4eqaYlFJYZUv9aG9b1TV0bQ markerproc0); N_NIMCALL(NimStringDesc*, copyString)(NimStringDesc* src0); N_NIMCALL(void, nossplitPath)(NimStringDesc* path0, TY_UV3llMMYFckfui8YMBuUZA* Result); N_NIMCALL(NimStringDesc*, copyStrLast)(NimStringDesc* s0, NI start_WPWyPKk58Cr5a6XFFviMjg, NI last0); N_NIMCALL(NimStringDesc*, copyStrLast)(NimStringDesc* s0, NI first0, NI last0); N_NIMCALL(NimStringDesc*, copyStr)(NimStringDesc* s0, NI start0); N_NIMCALL(NimStringDesc*, copyStr)(NimStringDesc* s0, NI first0); N_NIMCALL(NI, searchextpos_AlmWoA52oxWnFTorxtz9caA)(NimStringDesc* s0); static N_INLINE(void, appendString)(NimStringDesc* dest0, NimStringDesc* src0); static N_INLINE(void, copymem_E1xtACub5WcDa3vbrIXbwgsystem)(void* dest0, void* source0, NI size0); N_NIMCALL(NimStringDesc*, normext_g9aFI0nT0uI8DMfFxBPaZZg)(NimStringDesc* ext0); static N_INLINE(void, appendChar)(NimStringDesc* dest0, NIM_CHAR c0); N_NIMCALL(NimStringDesc*, rawNewString)(NI space0); N_NOINLINE(void, raiseoserror_K9a7YBjj81Bse0N0Fg7MFIA)(NI32 errorcode0, NimStringDesc* additionalinfo0); N_NIMCALL(void*, newObj)(TNimType* typ0, NI size0); N_NIMCALL(NimStringDesc*, oserrormsg_9cO757MdTrYxfurMy5qIoAg)(NI32 errorcode0); N_NIMCALL(NimStringDesc*, cstrToNimstr)(NCSTRING str0); N_NIMCALL(void, raiseException)(Exception* e0, NCSTRING ename0); N_NIMCALL(NI32, oslasterror_pMOMIZAQaKFp1XoL58mjVg)(void); N_NIMCALL(void, nossplitFile)(NimStringDesc* path0, TY_7q7q3E6Oj24ZNVJb9aonhAg* Result); N_NIMCALL(NimStringDesc*, nosgetAppFilename)(void); N_NIMCALL(NimStringDesc*, getapplaux_Cd6LaCdd4j2y8pff6G0r9aw)(NimStringDesc* procpath0); N_NIMCALL(NimStringDesc*, mnewString)(NI len0); N_NIMCALL(NimStringDesc*, mnewString)(NI len0); N_NIMCALL(NimStringDesc*, setLengthStr)(NimStringDesc* s0, NI newlen0); N_NIMCALL(NimStringDesc*, getapplheuristic_Mvl1mQZZxpEWtJIYJ85UWw)(void); N_NIMCALL(NimStringDesc*, paramstr_eYicl3uwirn1ppNz7OCowg)(NI i0); N_NIMCALL(NimStringDesc*, getenv_8zNgT9bxx7m9cTt2TeVdTdIw)(NimStringDesc* key0); N_NIMCALL(NI, findenvvar_cmJJ3H7KloA4DztTvzWyCw)(NimStringDesc* key0); N_NIMCALL(void, getenvvarsc_xlXgIeBHBOL9cl4MJcFJ8xA)(void); N_NIMCALL(void*, newSeq)(TNimType* typ0, NI len0); static N_INLINE(NIM_BOOL, HEX3DHEX3D_9ccNWqrTIE9bcAqE2Q0ro7zgos)(NCSTRING x0, NCSTRING y0); N_NIMCALL(TGenericSeq*, incrSeqV2)(TGenericSeq* seq0, NI elemsize0); N_NIMCALL(NIM_BOOL, nsuStartsWith)(NimStringDesc* s0, NimStringDesc* prefix0); N_NIMCALL(NI, nsuFindChar)(NimStringDesc* s0, NIM_CHAR sub0, NI start0); N_NIMCALL(NimStringDesc*, nosjoinPath)(NimStringDesc* head0, NimStringDesc* tail0); N_NIMCALL(NIM_BOOL, nosexistsFile)(NimStringDesc* filename0); N_NIMCALL(NI, parentdirpos_DqTO9byr8jfMuX9cD2FnlVFQ)(NimStringDesc* path0); N_NIMCALL(NIM_BOOL, existsorcreatedir_V86QyZrcGMPX0W9bv1Q53ww)(NimStringDesc* dir0); N_NIMCALL(NIM_BOOL, rawcreatedir_V86QyZrcGMPX0W9bv1Q53ww_2)(NimStringDesc* dir0); N_NIMCALL(NimStringDesc*, nimIntToStr)(NI x0); N_NIMCALL(NIM_BOOL, nosexistsDir)(NimStringDesc* dir0); N_NIMCALL(NI, cmp_xEnKsp9cfvO7Do9cTYXo8eJw)(NimStringDesc* x0, NimStringDesc* y0); N_NIMCALL(NI, nsuCmpIgnoreCase)(NimStringDesc* a0, NimStringDesc* b0); N_NOINLINE(void, raiseassert_PpfSiTIeNpMAb9a5o6SglJw_2)(NimStringDesc* msg0); N_NIMCALL(NimStringDesc*, nosaddFileExt)(NimStringDesc* filename0, NimStringDesc* ext0); N_NIMCALL(NimStringDesc*, HEX2F_BsTQv9c9anbxt9bKmR0aN1elQ)(NimStringDesc* head0, NimStringDesc* tail0); N_NIMCALL(NimStringDesc*, expandtilde_bY3FvgrWj5mj9cB3I89cRWxg)(NimStringDesc* path0); N_NIMCALL(NimStringDesc*, nosgetHomeDir)(void); N_NIMCALL(NIM_BOOL, checksymlink_KkZgXPy74tXi49bh8QSie8g)(NimStringDesc* path0); N_NIMCALL(NIM_BOOL, nosisAbsolute)(NimStringDesc* path0); N_NIMCALL(NimStringDesc*, nosparentDir)(NimStringDesc* path0); static N_INLINE(void, pushSafePoint)(TSafePoint* s0); static N_INLINE(NIM_BOOL, eqStrings)(NimStringDesc* a0, NimStringDesc* b0); static N_INLINE(NIM_BOOL, equalmem_fmeFeLBvgmAHG9bC8ETS9bYQropes)(void* a0, void* b0, NI size0); static N_INLINE(NIM_BOOL, direxists_wf0Ae3eLXw0lSNEFJMV3ognimblecmd)(NimStringDesc* dir0); N_NIMCALL(void, nosremoveFile)(NimStringDesc* file0); N_NIMCALL(void, nosremoveDir)(NimStringDesc* dir0); N_NIMCALL(Pathcomponent_9c1SIU9cO1wHcl09b703A9cDrg, getsymlinkfilekind_WoXOp8qmMec1P4MyA3LBKg)(NimStringDesc* path0); static N_INLINE(void, popSafePoint)(void); N_NIMCALL(void, reraiseException)(void); N_NIMCALL(void, rawremovedir_P9aOuM3pg25yKqgBUm7qKng)(NimStringDesc* dir0); N_NIMCALL(NIM_BOOL, open_sEp0GH2306oGo9bqBpj5oTQ)(FILE** f0, NimStringDesc* filename0, Filemode_fVUBHvW79bXUw1j55Oo9avSQ mode0, NI bufsize0); N_NIMCALL(void, close_BWnr8V7RERYno9bIdPmw8Hw_2)(FILE* f0); N_NOCONV(void*, alloc_sVm4rDImKK2ZDdylByayiA_2)(NI size0); N_NIMCALL(NI, readbuffer_1qjbrvfnPD4PaIieHVDvhw_2)(FILE* f0, void* buffer0, NI len0); N_NIMCALL(NI, writebuffer_1qjbrvfnPD4PaIieHVDvhw)(FILE* f0, void* buffer0, NI len0); N_NOCONV(void, dealloc_RCjNtRnHdRYntrcE7YtwWw)(void* p0); N_NIMCALL(void, flushfile_BWnr8V7RERYno9bIdPmw8Hw)(FILE* f0); NIM_BOOL envcomputed_LLyFo9bsdu1ZXMDvAe8DhrQ; TY_sM4lkSb7zS6F7OVMvW9cffQ* environment_mlhK49b6YMgc9cgrcYkKq9a3g; extern TNimType NTI_77mFvmsOLKik79ci2hXkHEg; TNimType NTI_sM4lkSb7zS6F7OVMvW9cffQ; extern NCSTRING* environ; extern int cmdCount; extern NCSTRING* cmdLine; extern TNimType NTI_Qx9aKy4vZ9bVz9bnG9brQcRHGA; extern TNimType NTI_3XwRQvmzCEOC4QnT706q1g; extern TNimType NTI_z58cIdR0vOibqJ0QwYvB3Q; extern TNimType NTI_b0IIwghFQBADkB2c86kXQA; extern TNimType NTI_HX2M9cQhE3jaovp9aYJDdslA; extern TNimType NTI_9czoZw3pzPyrBmb5zTHY1OQ; extern TSafePoint* exchandler_rqLlY5bs9atDw2OXYqJEn5g; STRING_LITERAL(T_yu6cxgKBBXbNsTkT9cyMd4g_3, "", 0); STRING_LITERAL(T_yu6cxgKBBXbNsTkT9cyMd4g_4, "\012Additional info: ", 18); STRING_LITERAL(T_yu6cxgKBBXbNsTkT9cyMd4g_5, "unknown OS error", 16); STRING_LITERAL(T_yu6cxgKBBXbNsTkT9cyMd4g_6, "/proc/self/exe", 14); STRING_LITERAL(T_yu6cxgKBBXbNsTkT9cyMd4g_7, "invalid index", 13); STRING_LITERAL(T_yu6cxgKBBXbNsTkT9cyMd4g_8, "PATH", 4); STRING_LITERAL(T_yu6cxgKBBXbNsTkT9cyMd4g_9, "Failed to create the directory", 30); STRING_LITERAL(T_yu6cxgKBBXbNsTkT9cyMd4g_10, "HOME", 4); STRING_LITERAL(T_yu6cxgKBBXbNsTkT9cyMd4g_11, "/", 1); STRING_LITERAL(T_yu6cxgKBBXbNsTkT9cyMd4g_12, "\012 0 <= bufsize ", 16); NIM_CONST TY_nHXaesL0DJZHyVS07ARPRA Exeexts_ONrgkgAZ9bh6KVTWl4XeOSw = {((NimStringDesc*) &T_yu6cxgKBBXbNsTkT9cyMd4g_3)} ; STRING_LITERAL(T_yu6cxgKBBXbNsTkT9cyMd4g_13, "/.config/", 9); STRING_LITERAL(T_yu6cxgKBBXbNsTkT9cyMd4g_15, ".", 1); STRING_LITERAL(T_yu6cxgKBBXbNsTkT9cyMd4g_16, "..", 2); static N_NIMCALL(void, Marker_TY_sM4lkSb7zS6F7OVMvW9cffQ)(void* p, NI op) { TY_sM4lkSb7zS6F7OVMvW9cffQ* a; NI LOC1; a = (TY_sM4lkSb7zS6F7OVMvW9cffQ*)p; LOC1 = (NI)0; for (LOC1 = 0; LOC1 < a->Sup.len; LOC1++) { nimGCvisit((void*)a->data[LOC1], op); } } static N_NIMCALL(void, T_yu6cxgKBBXbNsTkT9cyMd4g_2)(void) { nimGCvisit((void*)environment_mlhK49b6YMgc9cgrcYkKq9a3g, 0); } N_NIMCALL(void, nossplitPath)(NimStringDesc* path0, TY_UV3llMMYFckfui8YMBuUZA* Result) { NI seppos0; seppos0 = ((NI) -1); { NI i_PU9a9a9b9ayxLUu9czuig0ggZVg; NI HEX3Atmp_qi0JGA3QNuBuU7hHq9aaCAg; NI res_mg8ARupfA5R2j58N4jwiiA; i_PU9a9a9b9ayxLUu9czuig0ggZVg = (NI)0; HEX3Atmp_qi0JGA3QNuBuU7hHq9aaCAg = (NI)0; HEX3Atmp_qi0JGA3QNuBuU7hHq9aaCAg = (NI)((path0 ? path0->Sup.len : 0) - ((NI) 1)); res_mg8ARupfA5R2j58N4jwiiA = HEX3Atmp_qi0JGA3QNuBuU7hHq9aaCAg; { while (1) { if (!(((NI) 0) <= res_mg8ARupfA5R2j58N4jwiiA)) goto LA3; i_PU9a9a9b9ayxLUu9czuig0ggZVg = res_mg8ARupfA5R2j58N4jwiiA; { if (!(((NU8)(path0->data[i_PU9a9a9b9ayxLUu9czuig0ggZVg])) == ((NU8)(47)) || ((NU8)(path0->data[i_PU9a9a9b9ayxLUu9czuig0ggZVg])) == ((NU8)(47)))) goto LA6; seppos0 = i_PU9a9a9b9ayxLUu9czuig0ggZVg; goto LA1; } LA6: ; res_mg8ARupfA5R2j58N4jwiiA -= ((NI) 1); } LA3: ; } } LA1: ; { if (!(((NI) 0) <= seppos0)) goto LA10; (*Result).Field0 = copyStrLast(path0, ((NI) 0), (NI)(seppos0 - ((NI) 1))); (*Result).Field1 = copyStr(path0, (NI)(seppos0 + ((NI) 1))); } goto LA8; LA10: ; { (*Result).Field0 = copyString(((NimStringDesc*) &T_yu6cxgKBBXbNsTkT9cyMd4g_3)); (*Result).Field1 = copyString(path0); } LA8: ; } N_NIMCALL(NimStringDesc*, nosextractFilename)(NimStringDesc* path0) { NimStringDesc* result0; result0 = (NimStringDesc*)0; { NIM_BOOL LOC3; LOC3 = (NIM_BOOL)0; LOC3 = ((path0 ? path0->Sup.len : 0) == ((NI) 0)); if (LOC3) goto LA4; LOC3 = (((NU8)(path0->data[(NI)((path0 ? path0->Sup.len : 0) - ((NI) 1))])) == ((NU8)(47)) || ((NU8)(path0->data[(NI)((path0 ? path0->Sup.len : 0) - ((NI) 1))])) == ((NU8)(47))); LA4: ; if (!LOC3) goto LA5; result0 = copyString(((NimStringDesc*) &T_yu6cxgKBBXbNsTkT9cyMd4g_3)); } goto LA1; LA5: ; { TY_UV3llMMYFckfui8YMBuUZA LOC8; memset((void*)(&LOC8), 0, sizeof(LOC8)); nossplitPath(path0, (&LOC8)); result0 = copyString(LOC8.Field1); } LA1: ; return result0; } N_NIMCALL(NI, searchextpos_AlmWoA52oxWnFTorxtz9caA)(NimStringDesc* s0) { NI result0; result0 = (NI)0; result0 = ((NI) -1); { NI i_XQE9aiUWOFdx4JhYiIhgMdQ; NI HEX3Atmp_wwRFqz9cAap5nYm4hxa9a9cyQ; NI res_c104hbjlw03oZVhljBpoGA; i_XQE9aiUWOFdx4JhYiIhgMdQ = (NI)0; HEX3Atmp_wwRFqz9cAap5nYm4hxa9a9cyQ = (NI)0; HEX3Atmp_wwRFqz9cAap5nYm4hxa9a9cyQ = (NI)((s0 ? s0->Sup.len : 0) - ((NI) 1)); res_c104hbjlw03oZVhljBpoGA = HEX3Atmp_wwRFqz9cAap5nYm4hxa9a9cyQ; { while (1) { if (!(((NI) 1) <= res_c104hbjlw03oZVhljBpoGA)) goto LA3; i_XQE9aiUWOFdx4JhYiIhgMdQ = res_c104hbjlw03oZVhljBpoGA; { if (!((NU8)(s0->data[i_XQE9aiUWOFdx4JhYiIhgMdQ]) == (NU8)(46))) goto LA6; result0 = i_XQE9aiUWOFdx4JhYiIhgMdQ; goto LA1; } goto LA4; LA6: ; { if (!(((NU8)(s0->data[i_XQE9aiUWOFdx4JhYiIhgMdQ])) == ((NU8)(47)) || ((NU8)(s0->data[i_XQE9aiUWOFdx4JhYiIhgMdQ])) == ((NU8)(47)))) goto LA9; goto LA1; } goto LA4; LA9: ; LA4: ; res_c104hbjlw03oZVhljBpoGA -= ((NI) 1); } LA3: ; } } LA1: ; return result0; } static N_INLINE(void, copymem_E1xtACub5WcDa3vbrIXbwgsystem)(void* dest0, void* source0, NI size0) { void* LOC1; LOC1 = (void*)0; LOC1 = memcpy(dest0, source0, ((size_t) (size0))); } static N_INLINE(void, appendString)(NimStringDesc* dest0, NimStringDesc* src0) { copymem_E1xtACub5WcDa3vbrIXbwgsystem(((void*) ((&(*dest0).data[((*dest0).Sup.len)- 0]))), ((void*) ((*src0).data)), ((NI) ((NI)((*src0).Sup.len + ((NI) 1))))); (*dest0).Sup.len += (*src0).Sup.len; } static N_INLINE(void, appendChar)(NimStringDesc* dest0, NIM_CHAR c0) { (*dest0).data[((*dest0).Sup.len)- 0] = c0; (*dest0).data[((NI)((*dest0).Sup.len + ((NI) 1)))- 0] = 0; (*dest0).Sup.len += ((NI) 1); } N_NIMCALL(NimStringDesc*, normext_g9aFI0nT0uI8DMfFxBPaZZg)(NimStringDesc* ext0) { NimStringDesc* result0; result0 = (NimStringDesc*)0; { NIM_BOOL LOC3; LOC3 = (NIM_BOOL)0; LOC3 = ((ext0) && (ext0)->Sup.len == 0); if (LOC3) goto LA4; LOC3 = ((NU8)(ext0->data[((NI) 0)]) == (NU8)(46)); LA4: ; if (!LOC3) goto LA5; result0 = copyString(ext0); } goto LA1; LA5: ; { NimStringDesc* LOC8; LOC8 = (NimStringDesc*)0; LOC8 = rawNewString(ext0->Sup.len + 1); appendChar(LOC8, 46); appendString(LOC8, ext0); result0 = LOC8; } LA1: ; return result0; } N_NIMCALL(NimStringDesc*, noschangeFileExt)(NimStringDesc* filename0, NimStringDesc* ext0) { NimStringDesc* result0; NI extpos0; result0 = (NimStringDesc*)0; extpos0 = searchextpos_AlmWoA52oxWnFTorxtz9caA(filename0); { NimStringDesc* LOC5; NimStringDesc* LOC6; if (!(extpos0 < ((NI) 0))) goto LA3; LOC5 = (NimStringDesc*)0; LOC6 = (NimStringDesc*)0; LOC6 = normext_g9aFI0nT0uI8DMfFxBPaZZg(ext0); LOC5 = rawNewString(filename0->Sup.len + LOC6->Sup.len + 0); appendString(LOC5, filename0); appendString(LOC5, LOC6); result0 = LOC5; } goto LA1; LA3: ; { NimStringDesc* LOC8; NimStringDesc* LOC9; NimStringDesc* LOC10; LOC8 = (NimStringDesc*)0; LOC9 = (NimStringDesc*)0; LOC9 = copyStrLast(filename0, ((NI) 0), (NI)(extpos0 - ((NI) 1))); LOC10 = (NimStringDesc*)0; LOC10 = normext_g9aFI0nT0uI8DMfFxBPaZZg(ext0); LOC8 = rawNewString(LOC9->Sup.len + LOC10->Sup.len + 0); appendString(LOC8, LOC9); appendString(LOC8, LOC10); result0 = LOC8; } LA1: ; return result0; } N_NIMCALL(NimStringDesc*, oserrormsg_9cO757MdTrYxfurMy5qIoAg)(NI32 errorcode0) { NimStringDesc* result0; result0 = (NimStringDesc*)0; result0 = copyString(((NimStringDesc*) &T_yu6cxgKBBXbNsTkT9cyMd4g_3)); { NCSTRING LOC5; if (!!((errorcode0 == ((NI32) 0)))) goto LA3; LOC5 = (NCSTRING)0; LOC5 = strerror(errorcode0); result0 = cstrToNimstr(LOC5); } LA3: ; return result0; } N_NOINLINE(void, raiseoserror_K9a7YBjj81Bse0N0Fg7MFIA)(NI32 errorcode0, NimStringDesc* additionalinfo0) { Oserror_3XwRQvmzCEOC4QnT706q1g* e0; e0 = (Oserror_3XwRQvmzCEOC4QnT706q1g*)0; e0 = (Oserror_3XwRQvmzCEOC4QnT706q1g*) newObj((&NTI_Qx9aKy4vZ9bVz9bnG9brQcRHGA), sizeof(Oserror_3XwRQvmzCEOC4QnT706q1g)); (*e0).Sup.Sup.Sup.m_type = (&NTI_3XwRQvmzCEOC4QnT706q1g); (*e0).errorcode = errorcode0; { if (!((additionalinfo0 ? additionalinfo0->Sup.len : 0) == ((NI) 0))) goto LA3; (*e0).Sup.Sup.message = oserrormsg_9cO757MdTrYxfurMy5qIoAg(errorcode0); } goto LA1; LA3: ; { NimStringDesc* LOC6; NimStringDesc* LOC7; LOC6 = (NimStringDesc*)0; LOC7 = (NimStringDesc*)0; LOC7 = oserrormsg_9cO757MdTrYxfurMy5qIoAg(errorcode0); LOC6 = rawNewString(LOC7->Sup.len + additionalinfo0->Sup.len + 18); appendString(LOC6, LOC7); appendString(LOC6, ((NimStringDesc*) &T_yu6cxgKBBXbNsTkT9cyMd4g_4)); appendString(LOC6, additionalinfo0); (*e0).Sup.Sup.message = LOC6; } LA1: ; { if (!(((*e0).Sup.Sup.message) && ((*e0).Sup.Sup.message)->Sup.len == 0)) goto LA10; (*e0).Sup.Sup.message = copyString(((NimStringDesc*) &T_yu6cxgKBBXbNsTkT9cyMd4g_5)); } LA10: ; raiseException((Exception*)e0, "OSError"); } N_NIMCALL(NI32, oslasterror_pMOMIZAQaKFp1XoL58mjVg)(void) { NI32 result0; result0 = (NI32)0; result0 = errno; return result0; } N_NIMCALL(NimStringDesc*, nosexpandFilename)(NimStringDesc* filename0) { NimStringDesc* result0; NCSTRING r0; result0 = (NimStringDesc*)0; r0 = realpath(filename0->data, NIM_NIL); { NI32 LOC5; if (!(r0 == 0)) goto LA3; LOC5 = (NI32)0; LOC5 = oslasterror_pMOMIZAQaKFp1XoL58mjVg(); raiseoserror_K9a7YBjj81Bse0N0Fg7MFIA(LOC5, ((NimStringDesc*) &T_yu6cxgKBBXbNsTkT9cyMd4g_3)); } goto LA1; LA3: ; { result0 = cstrToNimstr(r0); free(((void*) (r0))); } LA1: ; return result0; } N_NIMCALL(void, nossplitFile)(NimStringDesc* path0, TY_7q7q3E6Oj24ZNVJb9aonhAg* Result) { { NIM_BOOL LOC3; LOC3 = (NIM_BOOL)0; LOC3 = ((path0 ? path0->Sup.len : 0) == ((NI) 0)); if (LOC3) goto LA4; LOC3 = (((NU8)(path0->data[(NI)((path0 ? path0->Sup.len : 0) - ((NI) 1))])) == ((NU8)(47)) || ((NU8)(path0->data[(NI)((path0 ? path0->Sup.len : 0) - ((NI) 1))])) == ((NU8)(47))); LA4: ; if (!LOC3) goto LA5; (*Result).Field0 = copyString(path0); (*Result).Field1 = copyString(((NimStringDesc*) &T_yu6cxgKBBXbNsTkT9cyMd4g_3)); (*Result).Field2 = copyString(((NimStringDesc*) &T_yu6cxgKBBXbNsTkT9cyMd4g_3)); } goto LA1; LA5: ; { NI seppos0; NI dotpos0; seppos0 = ((NI) -1); dotpos0 = (path0 ? path0->Sup.len : 0); { NI i_RvAXC8pcRrjQVcLzMy7Fhw; NI HEX3Atmp_yDPmQODHSEiGYJLOLrehCg; NI res_FD5o2nBImp9bjBTg5egPNBA; i_RvAXC8pcRrjQVcLzMy7Fhw = (NI)0; HEX3Atmp_yDPmQODHSEiGYJLOLrehCg = (NI)0; HEX3Atmp_yDPmQODHSEiGYJLOLrehCg = (NI)((path0 ? path0->Sup.len : 0) - ((NI) 1)); res_FD5o2nBImp9bjBTg5egPNBA = HEX3Atmp_yDPmQODHSEiGYJLOLrehCg; { while (1) { if (!(((NI) 0) <= res_FD5o2nBImp9bjBTg5egPNBA)) goto LA10; i_RvAXC8pcRrjQVcLzMy7Fhw = res_FD5o2nBImp9bjBTg5egPNBA; { if (!((NU8)(path0->data[i_RvAXC8pcRrjQVcLzMy7Fhw]) == (NU8)(46))) goto LA13; { NIM_BOOL LOC17; NIM_BOOL LOC18; LOC17 = (NIM_BOOL)0; LOC18 = (NIM_BOOL)0; LOC18 = (dotpos0 == (path0 ? path0->Sup.len : 0)); if (!(LOC18)) goto LA19; LOC18 = (((NI) 0) < i_RvAXC8pcRrjQVcLzMy7Fhw); LA19: ; LOC17 = LOC18; if (!(LOC17)) goto LA20; LOC17 = !((((NU8)(path0->data[(NI)(i_RvAXC8pcRrjQVcLzMy7Fhw - ((NI) 1))])) == ((NU8)(47)) || ((NU8)(path0->data[(NI)(i_RvAXC8pcRrjQVcLzMy7Fhw - ((NI) 1))])) == ((NU8)(47)))); LA20: ; if (!LOC17) goto LA21; dotpos0 = i_RvAXC8pcRrjQVcLzMy7Fhw; } LA21: ; } goto LA11; LA13: ; { if (!(((NU8)(path0->data[i_RvAXC8pcRrjQVcLzMy7Fhw])) == ((NU8)(47)) || ((NU8)(path0->data[i_RvAXC8pcRrjQVcLzMy7Fhw])) == ((NU8)(47)))) goto LA24; seppos0 = i_RvAXC8pcRrjQVcLzMy7Fhw; goto LA8; } goto LA11; LA24: ; LA11: ; res_FD5o2nBImp9bjBTg5egPNBA -= ((NI) 1); } LA10: ; } } LA8: ; (*Result).Field0 = copyStrLast(path0, ((NI) 0), (NI)(seppos0 - ((NI) 1))); (*Result).Field1 = copyStrLast(path0, (NI)(seppos0 + ((NI) 1)), (NI)(dotpos0 - ((NI) 1))); (*Result).Field2 = copyStr(path0, dotpos0); } LA1: ; } N_NIMCALL(NimStringDesc*, getapplaux_Cd6LaCdd4j2y8pff6G0r9aw)(NimStringDesc* procpath0) { NimStringDesc* result0; NI len0; result0 = (NimStringDesc*)0; result0 = mnewString(((NI) 256)); len0 = readlink(procpath0->data, result0->data, ((NI) 256)); { if (!(((NI) 256) < len0)) goto LA3; result0 = mnewString(((NI) ((NI)(len0 + ((NI) 1))))); len0 = readlink(procpath0->data, result0->data, len0); } LA3: ; result0 = setLengthStr(result0, ((NI) (len0))); return result0; } N_NIMCALL(NimStringDesc*, paramstr_eYicl3uwirn1ppNz7OCowg)(NI i0) { NimStringDesc* result0; Indexerror_b0IIwghFQBADkB2c86kXQA* e_9c9avxASFO8rHZknrsDnVzEA; { result0 = (NimStringDesc*)0; { NIM_BOOL LOC3; LOC3 = (NIM_BOOL)0; LOC3 = (i0 < ((NI) (cmdCount))); if (!(LOC3)) goto LA4; LOC3 = (((NI) 0) <= i0); LA4: ; if (!LOC3) goto LA5; result0 = cstrToNimstr(cmdLine[(i0)- 0]); goto BeforeRet; } LA5: ; e_9c9avxASFO8rHZknrsDnVzEA = (Indexerror_b0IIwghFQBADkB2c86kXQA*)0; e_9c9avxASFO8rHZknrsDnVzEA = (Indexerror_b0IIwghFQBADkB2c86kXQA*) newObj((&NTI_z58cIdR0vOibqJ0QwYvB3Q), sizeof(Indexerror_b0IIwghFQBADkB2c86kXQA)); (*e_9c9avxASFO8rHZknrsDnVzEA).Sup.Sup.m_type = (&NTI_b0IIwghFQBADkB2c86kXQA); (*e_9c9avxASFO8rHZknrsDnVzEA).Sup.message = copyString(((NimStringDesc*) &T_yu6cxgKBBXbNsTkT9cyMd4g_7)); raiseException((Exception*)e_9c9avxASFO8rHZknrsDnVzEA, "IndexError"); }BeforeRet: ; return result0; } static N_INLINE(NIM_BOOL, HEX3DHEX3D_9ccNWqrTIE9bcAqE2Q0ro7zgos)(NCSTRING x0, NCSTRING y0) { NIM_BOOL result0; result0 = (NIM_BOOL)0; { if (!(((void*) (x0)) == ((void*) (y0)))) goto LA3; result0 = NIM_TRUE; } goto LA1; LA3: ; { NIM_BOOL LOC6; LOC6 = (NIM_BOOL)0; LOC6 = (x0 == 0); if (LOC6) goto LA7; LOC6 = (y0 == 0); LA7: ; if (!LOC6) goto LA8; result0 = NIM_FALSE; } goto LA1; LA8: ; { int LOC11; LOC11 = (int)0; LOC11 = strcmp(x0, y0); result0 = (LOC11 == ((NI32) 0)); } LA1: ; return result0; } N_NIMCALL(void, getenvvarsc_xlXgIeBHBOL9cl4MJcFJ8xA)(void) { { NI i0; if (!!(envcomputed_LLyFo9bsdu1ZXMDvAe8DhrQ)) goto LA3; environment_mlhK49b6YMgc9cgrcYkKq9a3g = (TY_sM4lkSb7zS6F7OVMvW9cffQ*) newSeq((&NTI_sM4lkSb7zS6F7OVMvW9cffQ), 0); i0 = ((NI) 0); { while (1) { NimStringDesc* LOC12; { NIM_BOOL LOC9; LOC9 = (NIM_BOOL)0; LOC9 = HEX3DHEX3D_9ccNWqrTIE9bcAqE2Q0ro7zgos(environ[(i0)- 0], NIM_NIL); if (!LOC9) goto LA10; goto LA5; } LA10: ; LOC12 = (NimStringDesc*)0; LOC12 = cstrToNimstr(environ[(i0)- 0]); environment_mlhK49b6YMgc9cgrcYkKq9a3g = (TY_sM4lkSb7zS6F7OVMvW9cffQ*) incrSeqV2(&(environment_mlhK49b6YMgc9cgrcYkKq9a3g)->Sup, sizeof(NimStringDesc*)); environment_mlhK49b6YMgc9cgrcYkKq9a3g->data[environment_mlhK49b6YMgc9cgrcYkKq9a3g->Sup.len] = copyString(LOC12); ++environment_mlhK49b6YMgc9cgrcYkKq9a3g->Sup.len; i0 += ((NI) 1); } } LA5: ; envcomputed_LLyFo9bsdu1ZXMDvAe8DhrQ = NIM_TRUE; } LA3: ; } N_NIMCALL(NI, findenvvar_cmJJ3H7KloA4DztTvzWyCw)(NimStringDesc* key0) { NI result0; NimStringDesc* temp0; NimStringDesc* LOC1; { result0 = (NI)0; getenvvarsc_xlXgIeBHBOL9cl4MJcFJ8xA(); LOC1 = (NimStringDesc*)0; LOC1 = rawNewString(key0->Sup.len + 1); appendString(LOC1, key0); appendChar(LOC1, 61); temp0 = LOC1; { NI i_QFpQyCBMTAf3RQiHRTCtRA; NI HEX3Atmp_8z2i61QBqrTxJYp9bXCSF9aA; NI res_9cO4Qfuzy9c4z8ih7joizeqg; i_QFpQyCBMTAf3RQiHRTCtRA = (NI)0; HEX3Atmp_8z2i61QBqrTxJYp9bXCSF9aA = (NI)0; HEX3Atmp_8z2i61QBqrTxJYp9bXCSF9aA = (environment_mlhK49b6YMgc9cgrcYkKq9a3g ? (environment_mlhK49b6YMgc9cgrcYkKq9a3g->Sup.len-1) : -1); res_9cO4Qfuzy9c4z8ih7joizeqg = ((NI) 0); { while (1) { if (!(res_9cO4Qfuzy9c4z8ih7joizeqg <= HEX3Atmp_8z2i61QBqrTxJYp9bXCSF9aA)) goto LA4; i_QFpQyCBMTAf3RQiHRTCtRA = res_9cO4Qfuzy9c4z8ih7joizeqg; { NIM_BOOL LOC7; LOC7 = (NIM_BOOL)0; LOC7 = nsuStartsWith(environment_mlhK49b6YMgc9cgrcYkKq9a3g->data[i_QFpQyCBMTAf3RQiHRTCtRA], temp0); if (!LOC7) goto LA8; result0 = i_QFpQyCBMTAf3RQiHRTCtRA; goto BeforeRet; } LA8: ; res_9cO4Qfuzy9c4z8ih7joizeqg += ((NI) 1); } LA4: ; } } result0 = ((NI) -1); goto BeforeRet; }BeforeRet: ; return result0; } N_NIMCALL(NimStringDesc*, getenv_8zNgT9bxx7m9cTt2TeVdTdIw)(NimStringDesc* key0) { NimStringDesc* result0; NI i0; { result0 = (NimStringDesc*)0; i0 = findenvvar_cmJJ3H7KloA4DztTvzWyCw(key0); { NI LOC5; if (!(((NI) 0) <= i0)) goto LA3; LOC5 = (NI)0; LOC5 = nsuFindChar(environment_mlhK49b6YMgc9cgrcYkKq9a3g->data[i0], 61, ((NI) 0)); result0 = copyStr(environment_mlhK49b6YMgc9cgrcYkKq9a3g->data[i0], (NI)(LOC5 + ((NI) 1))); goto BeforeRet; } goto LA1; LA3: ; { NCSTRING env0; env0 = getenv(key0->data); { NIM_BOOL LOC9; LOC9 = (NIM_BOOL)0; LOC9 = HEX3DHEX3D_9ccNWqrTIE9bcAqE2Q0ro7zgos(env0, NIM_NIL); if (!LOC9) goto LA10; result0 = copyString(((NimStringDesc*) &T_yu6cxgKBBXbNsTkT9cyMd4g_3)); goto BeforeRet; } LA10: ; result0 = cstrToNimstr(env0); } LA1: ; }BeforeRet: ; return result0; } N_NIMCALL(NimStringDesc*, nosjoinPath)(NimStringDesc* head0, NimStringDesc* tail0) { NimStringDesc* result0; result0 = (NimStringDesc*)0; { if (!((head0 ? head0->Sup.len : 0) == ((NI) 0))) goto LA3; result0 = copyString(tail0); } goto LA1; LA3: ; { if (!(((NU8)(head0->data[(NI)((head0 ? head0->Sup.len : 0) - ((NI) 1))])) == ((NU8)(47)) || ((NU8)(head0->data[(NI)((head0 ? head0->Sup.len : 0) - ((NI) 1))])) == ((NU8)(47)))) goto LA6; { NimStringDesc* LOC12; NimStringDesc* LOC13; if (!(((NU8)(tail0->data[((NI) 0)])) == ((NU8)(47)) || ((NU8)(tail0->data[((NI) 0)])) == ((NU8)(47)))) goto LA10; LOC12 = (NimStringDesc*)0; LOC13 = (NimStringDesc*)0; LOC13 = copyStr(tail0, ((NI) 1)); LOC12 = rawNewString(head0->Sup.len + LOC13->Sup.len + 0); appendString(LOC12, head0); appendString(LOC12, LOC13); result0 = LOC12; } goto LA8; LA10: ; { NimStringDesc* LOC15; LOC15 = (NimStringDesc*)0; LOC15 = rawNewString(head0->Sup.len + tail0->Sup.len + 0); appendString(LOC15, head0); appendString(LOC15, tail0); result0 = LOC15; } LA8: ; } goto LA1; LA6: ; { { NimStringDesc* LOC21; if (!(((NU8)(tail0->data[((NI) 0)])) == ((NU8)(47)) || ((NU8)(tail0->data[((NI) 0)])) == ((NU8)(47)))) goto LA19; LOC21 = (NimStringDesc*)0; LOC21 = rawNewString(head0->Sup.len + tail0->Sup.len + 0); appendString(LOC21, head0); appendString(LOC21, tail0); result0 = LOC21; } goto LA17; LA19: ; { NimStringDesc* LOC23; LOC23 = (NimStringDesc*)0; LOC23 = rawNewString(head0->Sup.len + tail0->Sup.len + 1); appendString(LOC23, head0); appendChar(LOC23, 47); appendString(LOC23, tail0); result0 = LOC23; } LA17: ; } LA1: ; return result0; } N_NIMCALL(NIM_BOOL, nosexistsFile)(NimStringDesc* filename0) { NIM_BOOL result0; struct stat res0; NIM_BOOL LOC1; int LOC2; { result0 = (NIM_BOOL)0; memset((void*)(&res0), 0, sizeof(res0)); LOC1 = (NIM_BOOL)0; LOC2 = (int)0; LOC2 = stat(filename0->data, (&res0)); LOC1 = (((NI32) 0) <= LOC2); if (!(LOC1)) goto LA3; LOC1 = S_ISREG(res0.st_mode); LA3: ; result0 = LOC1; goto BeforeRet; }BeforeRet: ; return result0; } N_NIMCALL(NimStringDesc*, getapplheuristic_Mvl1mQZZxpEWtJIYJ85UWw)(void) { NimStringDesc* result0; { result0 = (NimStringDesc*)0; result0 = paramstr_eYicl3uwirn1ppNz7OCowg(((NI) 0)); { NIM_BOOL LOC3; LOC3 = (NIM_BOOL)0; LOC3 = (((NI) 0) < (result0 ? result0->Sup.len : 0)); if (!(LOC3)) goto LA4; LOC3 = !(((NU8)(result0->data[((NI) 0)]) == (NU8)(47))); LA4: ; if (!LOC3) goto LA5; { NimStringDesc* p_EjpoDc4yoV2bOBVA9a87NEw; NimStringDesc* HEX3Atmp_FJT9c9bnJ3EGi20yEwysG8Fg; NI last_rIwWmKQAopGwgYFIIwiuxQ; NI splits_jlkozoKbhldeNcp3VkacDw; p_EjpoDc4yoV2bOBVA9a87NEw = (NimStringDesc*)0; HEX3Atmp_FJT9c9bnJ3EGi20yEwysG8Fg = (NimStringDesc*)0; HEX3Atmp_FJT9c9bnJ3EGi20yEwysG8Fg = getenv_8zNgT9bxx7m9cTt2TeVdTdIw(((NimStringDesc*) &T_yu6cxgKBBXbNsTkT9cyMd4g_8)); last_rIwWmKQAopGwgYFIIwiuxQ = ((NI) 0); splits_jlkozoKbhldeNcp3VkacDw = ((NI) -1); { if (!(((NI) 0) < (HEX3Atmp_FJT9c9bnJ3EGi20yEwysG8Fg ? HEX3Atmp_FJT9c9bnJ3EGi20yEwysG8Fg->Sup.len : 0))) goto LA10; { while (1) { NI first_sK2zaikjbX9bS49c1Xg2Xh7Q; NimStringDesc* x0; if (!(last_rIwWmKQAopGwgYFIIwiuxQ <= (HEX3Atmp_FJT9c9bnJ3EGi20yEwysG8Fg ? HEX3Atmp_FJT9c9bnJ3EGi20yEwysG8Fg->Sup.len : 0))) goto LA13; first_sK2zaikjbX9bS49c1Xg2Xh7Q = last_rIwWmKQAopGwgYFIIwiuxQ; { while (1) { NIM_BOOL LOC16; LOC16 = (NIM_BOOL)0; LOC16 = (last_rIwWmKQAopGwgYFIIwiuxQ < (HEX3Atmp_FJT9c9bnJ3EGi20yEwysG8Fg ? HEX3Atmp_FJT9c9bnJ3EGi20yEwysG8Fg->Sup.len : 0)); if (!(LOC16)) goto LA17; LOC16 = !((((NU8)(HEX3Atmp_FJT9c9bnJ3EGi20yEwysG8Fg->data[last_rIwWmKQAopGwgYFIIwiuxQ])) == ((NU8)(58)))); LA17: ; if (!LOC16) goto LA15; last_rIwWmKQAopGwgYFIIwiuxQ += ((NI) 1); } LA15: ; } { if (!(splits_jlkozoKbhldeNcp3VkacDw == ((NI) 0))) goto LA20; last_rIwWmKQAopGwgYFIIwiuxQ = (HEX3Atmp_FJT9c9bnJ3EGi20yEwysG8Fg ? HEX3Atmp_FJT9c9bnJ3EGi20yEwysG8Fg->Sup.len : 0); } LA20: ; p_EjpoDc4yoV2bOBVA9a87NEw = copyStrLast(HEX3Atmp_FJT9c9bnJ3EGi20yEwysG8Fg, first_sK2zaikjbX9bS49c1Xg2Xh7Q, (NI)(last_rIwWmKQAopGwgYFIIwiuxQ - ((NI) 1))); x0 = nosjoinPath(p_EjpoDc4yoV2bOBVA9a87NEw, result0); { NIM_BOOL LOC24; LOC24 = (NIM_BOOL)0; LOC24 = nosexistsFile(x0); if (!LOC24) goto LA25; result0 = copyString(x0); goto BeforeRet; } LA25: ; { if (!(splits_jlkozoKbhldeNcp3VkacDw == ((NI) 0))) goto LA29; goto LA12; } LA29: ; splits_jlkozoKbhldeNcp3VkacDw -= ((NI) 1); last_rIwWmKQAopGwgYFIIwiuxQ += ((NI) 1); } LA13: ; } LA12: ; } LA10: ; } } LA5: ; }BeforeRet: ; return result0; } N_NIMCALL(NimStringDesc*, nosgetAppFilename)(void) { NimStringDesc* result0; result0 = (NimStringDesc*)0; result0 = getapplaux_Cd6LaCdd4j2y8pff6G0r9aw(((NimStringDesc*) &T_yu6cxgKBBXbNsTkT9cyMd4g_6)); { if (!((result0 ? result0->Sup.len : 0) == ((NI) 0))) goto LA3; result0 = getapplheuristic_Mvl1mQZZxpEWtJIYJ85UWw(); } LA3: ; return result0; } N_NIMCALL(NimStringDesc*, nosgetAppDir)(void) { NimStringDesc* result0; NimStringDesc* LOC1; TY_7q7q3E6Oj24ZNVJb9aonhAg LOC2; result0 = (NimStringDesc*)0; LOC1 = (NimStringDesc*)0; LOC1 = nosgetAppFilename(); memset((void*)(&LOC2), 0, sizeof(LOC2)); nossplitFile(LOC1, (&LOC2)); result0 = copyString(LOC2.Field0); return result0; } N_NIMCALL(NI, parentdirpos_DqTO9byr8jfMuX9cD2FnlVFQ)(NimStringDesc* path0) { NI result0; NI q0; { result0 = (NI)0; q0 = ((NI) 1); { NIM_BOOL LOC3; LOC3 = (NIM_BOOL)0; LOC3 = (((NI) 1) <= (path0 ? path0->Sup.len : 0)); if (!(LOC3)) goto LA4; LOC3 = (((NU8)(path0->data[(NI)((path0 ? path0->Sup.len : 0) - ((NI) 1))])) == ((NU8)(47)) || ((NU8)(path0->data[(NI)((path0 ? path0->Sup.len : 0) - ((NI) 1))])) == ((NU8)(47))); LA4: ; if (!LOC3) goto LA5; q0 = ((NI) 2); } LA5: ; { NI i_WxgcWd2Exz8KkJdIEhEwag; NI HEX3Atmp_svAarcCWD8m2rrDIUxDWRQ; NI res_ZbndgrJU9c18Iu9c5JbbaFxA; i_WxgcWd2Exz8KkJdIEhEwag = (NI)0; HEX3Atmp_svAarcCWD8m2rrDIUxDWRQ = (NI)0; HEX3Atmp_svAarcCWD8m2rrDIUxDWRQ = (NI)((path0 ? path0->Sup.len : 0) - q0); res_ZbndgrJU9c18Iu9c5JbbaFxA = HEX3Atmp_svAarcCWD8m2rrDIUxDWRQ; { while (1) { if (!(((NI) 0) <= res_ZbndgrJU9c18Iu9c5JbbaFxA)) goto LA9; i_WxgcWd2Exz8KkJdIEhEwag = res_ZbndgrJU9c18Iu9c5JbbaFxA; { if (!(((NU8)(path0->data[i_WxgcWd2Exz8KkJdIEhEwag])) == ((NU8)(47)) || ((NU8)(path0->data[i_WxgcWd2Exz8KkJdIEhEwag])) == ((NU8)(47)))) goto LA12; result0 = i_WxgcWd2Exz8KkJdIEhEwag; goto BeforeRet; } LA12: ; res_ZbndgrJU9c18Iu9c5JbbaFxA -= ((NI) 1); } LA9: ; } } result0 = ((NI) -1); }BeforeRet: ; return result0; } N_NIMCALL(NimStringDesc*, nosparentDir)(NimStringDesc* path0) { NimStringDesc* result0; NI seppos0; result0 = (NimStringDesc*)0; seppos0 = parentdirpos_DqTO9byr8jfMuX9cD2FnlVFQ(path0); { if (!(((NI) 0) <= seppos0)) goto LA3; result0 = copyStrLast(path0, ((NI) 0), (NI)(seppos0 - ((NI) 1))); } goto LA1; LA3: ; { result0 = copyString(((NimStringDesc*) &T_yu6cxgKBBXbNsTkT9cyMd4g_3)); } LA1: ; return result0; } N_NIMCALL(NimStringDesc*, HEX2F_BsTQv9c9anbxt9bKmR0aN1elQ)(NimStringDesc* head0, NimStringDesc* tail0) { NimStringDesc* result0; { result0 = (NimStringDesc*)0; result0 = nosjoinPath(head0, tail0); goto BeforeRet; }BeforeRet: ; return result0; } N_NIMCALL(NIM_BOOL, rawcreatedir_V86QyZrcGMPX0W9bv1Q53ww_2)(NimStringDesc* dir0) { NIM_BOOL result0; int res0; result0 = (NIM_BOOL)0; res0 = mkdir(dir0->data, ((mode_t) 511)); { if (!(res0 == ((NI32) 0))) goto LA3; result0 = NIM_TRUE; } goto LA1; LA3: ; { if (!(errno == EEXIST)) goto LA6; result0 = NIM_FALSE; } goto LA1; LA6: ; { NimStringDesc* LOC9; NI32 LOC10; LOC9 = (NimStringDesc*)0; LOC9 = nimIntToStr(((NI) (res0))); printf("%s\012", LOC9? (LOC9)->data:"nil"); fflush(stdout); LOC10 = (NI32)0; LOC10 = oslasterror_pMOMIZAQaKFp1XoL58mjVg(); raiseoserror_K9a7YBjj81Bse0N0Fg7MFIA(LOC10, ((NimStringDesc*) &T_yu6cxgKBBXbNsTkT9cyMd4g_3)); } LA1: ; return result0; } N_NIMCALL(NIM_BOOL, nosexistsDir)(NimStringDesc* dir0) { NIM_BOOL result0; struct stat res0; NIM_BOOL LOC1; int LOC2; { result0 = (NIM_BOOL)0; memset((void*)(&res0), 0, sizeof(res0)); LOC1 = (NIM_BOOL)0; LOC2 = (int)0; LOC2 = stat(dir0->data, (&res0)); LOC1 = (((NI32) 0) <= LOC2); if (!(LOC1)) goto LA3; LOC1 = S_ISDIR(res0.st_mode); LA3: ; result0 = LOC1; goto BeforeRet; }BeforeRet: ; return result0; } N_NIMCALL(NIM_BOOL, existsorcreatedir_V86QyZrcGMPX0W9bv1Q53ww)(NimStringDesc* dir0) { NIM_BOOL result0; NIM_BOOL LOC1; result0 = (NIM_BOOL)0; LOC1 = (NIM_BOOL)0; LOC1 = rawcreatedir_V86QyZrcGMPX0W9bv1Q53ww_2(dir0); result0 = !(LOC1); { if (!result0) goto LA4; { NIM_BOOL LOC8; Ioerror_9czoZw3pzPyrBmb5zTHY1OQ* e_4he5nelRQAcl1XtPfaowrQ; LOC8 = (NIM_BOOL)0; LOC8 = nosexistsDir(dir0); if (!!(LOC8)) goto LA9; e_4he5nelRQAcl1XtPfaowrQ = (Ioerror_9czoZw3pzPyrBmb5zTHY1OQ*)0; e_4he5nelRQAcl1XtPfaowrQ = (Ioerror_9czoZw3pzPyrBmb5zTHY1OQ*) newObj((&NTI_HX2M9cQhE3jaovp9aYJDdslA), sizeof(Ioerror_9czoZw3pzPyrBmb5zTHY1OQ)); (*e_4he5nelRQAcl1XtPfaowrQ).Sup.Sup.Sup.m_type = (&NTI_9czoZw3pzPyrBmb5zTHY1OQ); (*e_4he5nelRQAcl1XtPfaowrQ).Sup.Sup.message = copyString(((NimStringDesc*) &T_yu6cxgKBBXbNsTkT9cyMd4g_9)); raiseException((Exception*)e_4he5nelRQAcl1XtPfaowrQ, "IOError"); } LA9: ; } LA4: ; return result0; } N_NIMCALL(void, noscreateDir)(NimStringDesc* dir0) { NIM_BOOL omitnext0; omitnext0 = NIM_FALSE; { NI i_Qc01IR3dOH3flfNCE6VLpw; NI HEX3Atmp_ywziRWYrreLWHtJ4hoirLA; NI res_9bWCBWZ3aqeaop9bwMLK1Y7A; i_Qc01IR3dOH3flfNCE6VLpw = (NI)0; HEX3Atmp_ywziRWYrreLWHtJ4hoirLA = (NI)0; HEX3Atmp_ywziRWYrreLWHtJ4hoirLA = (NI)((dir0 ? dir0->Sup.len : 0) - ((NI) 1)); res_9bWCBWZ3aqeaop9bwMLK1Y7A = ((NI) 1); { while (1) { if (!(res_9bWCBWZ3aqeaop9bwMLK1Y7A <= HEX3Atmp_ywziRWYrreLWHtJ4hoirLA)) goto LA3; i_Qc01IR3dOH3flfNCE6VLpw = res_9bWCBWZ3aqeaop9bwMLK1Y7A; { if (!(((NU8)(dir0->data[i_Qc01IR3dOH3flfNCE6VLpw])) == ((NU8)(47)) || ((NU8)(dir0->data[i_Qc01IR3dOH3flfNCE6VLpw])) == ((NU8)(47)))) goto LA6; { if (!omitnext0) goto LA10; omitnext0 = NIM_FALSE; } goto LA8; LA10: ; { NimStringDesc* LOC13; NIM_BOOL LOC14; LOC13 = (NimStringDesc*)0; LOC13 = copyStrLast(dir0, ((NI) 0), (NI)(i_Qc01IR3dOH3flfNCE6VLpw - ((NI) 1))); LOC14 = (NIM_BOOL)0; LOC14 = existsorcreatedir_V86QyZrcGMPX0W9bv1Q53ww(LOC13); } LA8: ; } LA6: ; res_9bWCBWZ3aqeaop9bwMLK1Y7A += ((NI) 1); } LA3: ; } } { NIM_BOOL LOC17; NIM_BOOL LOC18; NIM_BOOL LOC23; LOC17 = (NIM_BOOL)0; LOC18 = (NIM_BOOL)0; LOC18 = (((NI) 0) < (dir0 ? dir0->Sup.len : 0)); if (!(LOC18)) goto LA19; LOC18 = !(omitnext0); LA19: ; LOC17 = LOC18; if (!(LOC17)) goto LA20; LOC17 = !((((NU8)(dir0->data[(NI)((dir0 ? dir0->Sup.len : 0) - ((NI) 1))])) == ((NU8)(47)) || ((NU8)(dir0->data[(NI)((dir0 ? dir0->Sup.len : 0) - ((NI) 1))])) == ((NU8)(47)))); LA20: ; if (!LOC17) goto LA21; LOC23 = (NIM_BOOL)0; LOC23 = existsorcreatedir_V86QyZrcGMPX0W9bv1Q53ww(dir0); } LA21: ; } N_NIMCALL(NimStringDesc*, nosjoinPathOpenArray)(NimStringDesc** parts0, NI parts0Len0) { NimStringDesc* result0; result0 = (NimStringDesc*)0; result0 = copyString(parts0[((NI) 0)]); { NI i_uRpZpRasd2AS4VVcmkOdEQ; NI HEX3Atmp_SDwb5ajFd20DU9b0F06Tbwg; NI res_PQctTd1UoEHQ9cP9bv9cBWHpQ; i_uRpZpRasd2AS4VVcmkOdEQ = (NI)0; HEX3Atmp_SDwb5ajFd20DU9b0F06Tbwg = (NI)0; HEX3Atmp_SDwb5ajFd20DU9b0F06Tbwg = (parts0Len0-1); res_PQctTd1UoEHQ9cP9bv9cBWHpQ = ((NI) 1); { while (1) { if (!(res_PQctTd1UoEHQ9cP9bv9cBWHpQ <= HEX3Atmp_SDwb5ajFd20DU9b0F06Tbwg)) goto LA3; i_uRpZpRasd2AS4VVcmkOdEQ = res_PQctTd1UoEHQ9cP9bv9cBWHpQ; result0 = nosjoinPath(result0, parts0[i_uRpZpRasd2AS4VVcmkOdEQ]); res_PQctTd1UoEHQ9cP9bv9cBWHpQ += ((NI) 1); } LA3: ; } } return result0; } N_NIMCALL(NimStringDesc*, nosaddFileExt)(NimStringDesc* filename0, NimStringDesc* ext0) { NimStringDesc* result0; NI extpos0; result0 = (NimStringDesc*)0; extpos0 = searchextpos_AlmWoA52oxWnFTorxtz9caA(filename0); { NimStringDesc* LOC5; NimStringDesc* LOC6; if (!(extpos0 < ((NI) 0))) goto LA3; LOC5 = (NimStringDesc*)0; LOC6 = (NimStringDesc*)0; LOC6 = normext_g9aFI0nT0uI8DMfFxBPaZZg(ext0); LOC5 = rawNewString(filename0->Sup.len + LOC6->Sup.len + 0); appendString(LOC5, filename0); appendString(LOC5, LOC6); result0 = LOC5; } goto LA1; LA3: ; { result0 = copyString(filename0); } LA1: ; return result0; } N_NIMCALL(NIM_BOOL, nosisAbsolute)(NimStringDesc* path0) { NIM_BOOL result0; result0 = (NIM_BOOL)0; result0 = ((NU8)(path0->data[((NI) 0)]) == (NU8)(47)); return result0; } N_NIMCALL(NI, paramcount_T74rCHY8RMV0X07YnKmggw)(void) { NI result0; result0 = (NI)0; result0 = ((NI) ((NI32)(cmdCount - ((NI32) 1)))); return result0; } N_NIMCALL(NimStringDesc*, nosgetHomeDir)(void) { NimStringDesc* result0; NimStringDesc* LOC1; NimStringDesc* LOC2; { result0 = (NimStringDesc*)0; LOC1 = (NimStringDesc*)0; LOC2 = (NimStringDesc*)0; LOC2 = getenv_8zNgT9bxx7m9cTt2TeVdTdIw(((NimStringDesc*) &T_yu6cxgKBBXbNsTkT9cyMd4g_10)); LOC1 = rawNewString(LOC2->Sup.len + 1); appendString(LOC1, LOC2); appendString(LOC1, ((NimStringDesc*) &T_yu6cxgKBBXbNsTkT9cyMd4g_11)); result0 = LOC1; goto BeforeRet; }BeforeRet: ; return result0; } N_NIMCALL(NimStringDesc*, nosunixToNativePath)(NimStringDesc* path0, NimStringDesc* drive0) { NimStringDesc* result0; result0 = (NimStringDesc*)0; result0 = copyString(path0); return result0; } N_NIMCALL(Pathcomponent_9c1SIU9cO1wHcl09b703A9cDrg, getsymlinkfilekind_WoXOp8qmMec1P4MyA3LBKg)(NimStringDesc* path0) { Pathcomponent_9c1SIU9cO1wHcl09b703A9cDrg result0; struct stat s0; result0 = (Pathcomponent_9c1SIU9cO1wHcl09b703A9cDrg)0; memset((void*)(&s0), 0, sizeof(s0)); { int LOC3; NI32 LOC6; LOC3 = (int)0; LOC3 = stat(path0->data, (&s0)); if (!(LOC3 < ((NI32) 0))) goto LA4; LOC6 = (NI32)0; LOC6 = oslasterror_pMOMIZAQaKFp1XoL58mjVg(); raiseoserror_K9a7YBjj81Bse0N0Fg7MFIA(LOC6, ((NimStringDesc*) &T_yu6cxgKBBXbNsTkT9cyMd4g_3)); } LA4: ; { NIM_BOOL LOC9; LOC9 = (NIM_BOOL)0; LOC9 = S_ISDIR(s0.st_mode); if (!LOC9) goto LA10; result0 = ((Pathcomponent_9c1SIU9cO1wHcl09b703A9cDrg) 3); } goto LA7; LA10: ; { result0 = ((Pathcomponent_9c1SIU9cO1wHcl09b703A9cDrg) 1); } LA7: ; return result0; } N_NIMCALL(NI, noscmpPaths)(NimStringDesc* patha0, NimStringDesc* pathb0) { NI result0; result0 = (NI)0; { if (!NIM_TRUE) goto LA3; result0 = cmp_xEnKsp9cfvO7Do9cTYXo8eJw(patha0, pathb0); } goto LA1; LA3: ; { result0 = nsuCmpIgnoreCase(patha0, pathb0); } LA1: ; return result0; } N_NIMCALL(void, putenv_Ewmee2rKQBhOdwD9bJ4Lh8A)(NimStringDesc* key0, NimStringDesc* val0) { NI indx0; indx0 = findenvvar_cmJJ3H7KloA4DztTvzWyCw(key0); { NimStringDesc* LOC5; if (!(((NI) 0) <= indx0)) goto LA3; LOC5 = (NimStringDesc*)0; LOC5 = rawNewString(key0->Sup.len + val0->Sup.len + 1); appendString(LOC5, key0); appendChar(LOC5, 61); appendString(LOC5, val0); environment_mlhK49b6YMgc9cgrcYkKq9a3g->data[indx0] = LOC5; } goto LA1; LA3: ; { NimStringDesc* LOC7; LOC7 = (NimStringDesc*)0; LOC7 = rawNewString(key0->Sup.len + val0->Sup.len + 1); appendString(LOC7, key0); appendChar(LOC7, 61); appendString(LOC7, val0); environment_mlhK49b6YMgc9cgrcYkKq9a3g = (TY_sM4lkSb7zS6F7OVMvW9cffQ*) incrSeqV2(&(environment_mlhK49b6YMgc9cgrcYkKq9a3g)->Sup, sizeof(NimStringDesc*)); environment_mlhK49b6YMgc9cgrcYkKq9a3g->data[environment_mlhK49b6YMgc9cgrcYkKq9a3g->Sup.len] = copyString(LOC7); ++environment_mlhK49b6YMgc9cgrcYkKq9a3g->Sup.len; indx0 = (environment_mlhK49b6YMgc9cgrcYkKq9a3g ? (environment_mlhK49b6YMgc9cgrcYkKq9a3g->Sup.len-1) : -1); } LA1: ; { int LOC10; NI32 LOC13; LOC10 = (int)0; LOC10 = putenv(environment_mlhK49b6YMgc9cgrcYkKq9a3g->data[indx0]->data); if (!!((LOC10 == ((NI32) 0)))) goto LA11; LOC13 = (NI32)0; LOC13 = oslasterror_pMOMIZAQaKFp1XoL58mjVg(); raiseoserror_K9a7YBjj81Bse0N0Fg7MFIA(LOC13, ((NimStringDesc*) &T_yu6cxgKBBXbNsTkT9cyMd4g_3)); } LA11: ; } N_NIMCALL(NimStringDesc*, nosgetCurrentDir)(void) { NimStringDesc* result0; NI bufsize0; result0 = (NimStringDesc*)0; bufsize0 = ((NI) 1024); result0 = mnewString(((NI) (bufsize0))); { while (1) { { NCSTRING LOC5; NIM_BOOL LOC6; int LOC9; LOC5 = (NCSTRING)0; LOC5 = getcwd(result0->data, bufsize0); LOC6 = (NIM_BOOL)0; LOC6 = HEX3DHEX3D_9ccNWqrTIE9bcAqE2Q0ro7zgos(LOC5, NIM_NIL); if (!!(LOC6)) goto LA7; LOC9 = (int)0; LOC9 = strlen(result0->data); result0 = setLengthStr(result0, ((NI) (LOC9))); goto LA1; } goto LA3; LA7: ; { NI32 err0; err0 = oslasterror_pMOMIZAQaKFp1XoL58mjVg(); { if (!(err0 == ERANGE)) goto LA13; bufsize0 = (NI)((NU64)(bufsize0) << (NU64)(((NI) 1))); { if (!!((((NI) 0) <= bufsize0))) goto LA17; raiseassert_PpfSiTIeNpMAb9a5o6SglJw_2(((NimStringDesc*) &T_yu6cxgKBBXbNsTkT9cyMd4g_12)); } LA17: ; result0 = mnewString(((NI) (bufsize0))); } goto LA11; LA13: ; { NI32 LOC20; LOC20 = (NI32)0; LOC20 = oslasterror_pMOMIZAQaKFp1XoL58mjVg(); raiseoserror_K9a7YBjj81Bse0N0Fg7MFIA(LOC20, ((NimStringDesc*) &T_yu6cxgKBBXbNsTkT9cyMd4g_3)); } LA11: ; } LA3: ; } } LA1: ; return result0; } N_NIMCALL(NimStringDesc*, expandtilde_bY3FvgrWj5mj9cB3I89cRWxg)(NimStringDesc* path0) { NimStringDesc* result0; result0 = (NimStringDesc*)0; { NIM_BOOL LOC3; NIM_BOOL LOC4; NIM_BOOL LOC7; NimStringDesc* LOC11; NimStringDesc* LOC12; LOC3 = (NIM_BOOL)0; LOC4 = (NIM_BOOL)0; LOC4 = (((NI) 1) < (path0 ? path0->Sup.len : 0)); if (!(LOC4)) goto LA5; LOC4 = ((NU8)(path0->data[((NI) 0)]) == (NU8)(126)); LA5: ; LOC3 = LOC4; if (!(LOC3)) goto LA6; LOC7 = (NIM_BOOL)0; LOC7 = ((NU8)(path0->data[((NI) 1)]) == (NU8)(47)); if (LOC7) goto LA8; LOC7 = ((NU8)(path0->data[((NI) 1)]) == (NU8)(92)); LA8: ; LOC3 = LOC7; LA6: ; if (!LOC3) goto LA9; LOC11 = (NimStringDesc*)0; LOC11 = nosgetHomeDir(); LOC12 = (NimStringDesc*)0; LOC12 = copyStr(path0, ((NI) 2)); result0 = HEX2F_BsTQv9c9anbxt9bKmR0aN1elQ(LOC11, LOC12); } goto LA1; LA9: ; { result0 = copyString(path0); } LA1: ; return result0; } N_NIMCALL(NIM_BOOL, checksymlink_KkZgXPy74tXi49bh8QSie8g)(NimStringDesc* path0) { NIM_BOOL result0; struct stat rawinfo0; result0 = (NIM_BOOL)0; memset((void*)(&rawinfo0), 0, sizeof(rawinfo0)); { int LOC3; LOC3 = (int)0; LOC3 = lstat(path0->data, (&rawinfo0)); if (!(LOC3 < ((NI32) 0))) goto LA4; result0 = NIM_FALSE; } goto LA1; LA4: ; { result0 = S_ISLNK(rawinfo0.st_mode); } LA1: ; return result0; } N_NIMCALL(NimStringDesc*, findexe_y1iHkrUPbBhlf2IDS9bh3EQ)(NimStringDesc* exe0, NIM_BOOL followsymlinks0, TY_nHXaesL0DJZHyVS07ARPRA extensions0) { NimStringDesc* result0; NimStringDesc* path0; { result0 = (NimStringDesc*)0; { NimStringDesc* ext_OPvsxUJH2BMqmTeWesXT9cQ; NI i_ZiZQ0BrOOFRx4PwT9ahXHww; ext_OPvsxUJH2BMqmTeWesXT9cQ = (NimStringDesc*)0; i_ZiZQ0BrOOFRx4PwT9ahXHww = ((NI) 0); { if (!(((NI) (i_ZiZQ0BrOOFRx4PwT9ahXHww)) <= ((NI) 0))) goto LA4; { while (1) { ext_OPvsxUJH2BMqmTeWesXT9cQ = extensions0[(i_ZiZQ0BrOOFRx4PwT9ahXHww)- 0]; result0 = nosaddFileExt(exe0, ext_OPvsxUJH2BMqmTeWesXT9cQ); { NIM_BOOL LOC10; LOC10 = (NIM_BOOL)0; LOC10 = nosexistsFile(result0); if (!LOC10) goto LA11; goto BeforeRet; } LA11: ; { if (!(((NI) 0) <= ((NI) (i_ZiZQ0BrOOFRx4PwT9ahXHww)))) goto LA15; goto LA6; } LA15: ; i_ZiZQ0BrOOFRx4PwT9ahXHww += ((NI) 1); } } LA6: ; } LA4: ; } path0 = getenv_8zNgT9bxx7m9cTt2TeVdTdIw(((NimStringDesc*) &T_yu6cxgKBBXbNsTkT9cyMd4g_8)); { NimStringDesc* candidate_UCy6ZV9aetVL3IB59cKQ4cGg; NI last_3fEEWoI2EjAM6VEbXEXPpw; NI splits_CKAYEyOxVf7nwPkm8GYNOw; candidate_UCy6ZV9aetVL3IB59cKQ4cGg = (NimStringDesc*)0; last_3fEEWoI2EjAM6VEbXEXPpw = ((NI) 0); splits_CKAYEyOxVf7nwPkm8GYNOw = ((NI) -1); { if (!(((NI) 0) < (path0 ? path0->Sup.len : 0))) goto LA20; { while (1) { NI first_qu3LctVkQb4nzpkeLTYj3w; NimStringDesc* x_Hlylti1YCPff0zaqS9c7zjg; NimStringDesc* LOC32; if (!(last_3fEEWoI2EjAM6VEbXEXPpw <= (path0 ? path0->Sup.len : 0))) goto LA23; first_qu3LctVkQb4nzpkeLTYj3w = last_3fEEWoI2EjAM6VEbXEXPpw; { while (1) { NIM_BOOL LOC26; LOC26 = (NIM_BOOL)0; LOC26 = (last_3fEEWoI2EjAM6VEbXEXPpw < (path0 ? path0->Sup.len : 0)); if (!(LOC26)) goto LA27; LOC26 = !(((NU8)(path0->data[last_3fEEWoI2EjAM6VEbXEXPpw]) == (NU8)(58))); LA27: ; if (!LOC26) goto LA25; last_3fEEWoI2EjAM6VEbXEXPpw += ((NI) 1); } LA25: ; } { if (!(splits_CKAYEyOxVf7nwPkm8GYNOw == ((NI) 0))) goto LA30; last_3fEEWoI2EjAM6VEbXEXPpw = (path0 ? path0->Sup.len : 0); } LA30: ; candidate_UCy6ZV9aetVL3IB59cKQ4cGg = copyStrLast(path0, first_qu3LctVkQb4nzpkeLTYj3w, (NI)(last_3fEEWoI2EjAM6VEbXEXPpw - ((NI) 1))); LOC32 = (NimStringDesc*)0; LOC32 = expandtilde_bY3FvgrWj5mj9cB3I89cRWxg(candidate_UCy6ZV9aetVL3IB59cKQ4cGg); x_Hlylti1YCPff0zaqS9c7zjg = HEX2F_BsTQv9c9anbxt9bKmR0aN1elQ(LOC32, exe0); { NimStringDesc* ext_OPvsxUJH2BMqmTeWesXT9cQ_2; NI i_ZiZQ0BrOOFRx4PwT9ahXHww_2; ext_OPvsxUJH2BMqmTeWesXT9cQ_2 = (NimStringDesc*)0; i_ZiZQ0BrOOFRx4PwT9ahXHww_2 = ((NI) 0); { if (!(((NI) (i_ZiZQ0BrOOFRx4PwT9ahXHww_2)) <= ((NI) 0))) goto LA36; { while (1) { NimStringDesc* x0; ext_OPvsxUJH2BMqmTeWesXT9cQ_2 = extensions0[(i_ZiZQ0BrOOFRx4PwT9ahXHww_2)- 0]; x0 = nosaddFileExt(x_Hlylti1YCPff0zaqS9c7zjg, ext_OPvsxUJH2BMqmTeWesXT9cQ_2); { NIM_BOOL LOC42; LOC42 = (NIM_BOOL)0; LOC42 = nosexistsFile(x0); if (!LOC42) goto LA43; { while (1) { if (!followsymlinks0) goto LA46; { NIM_BOOL LOC49; NimStringDesc* r0; NI len0; LOC49 = (NIM_BOOL)0; LOC49 = checksymlink_KkZgXPy74tXi49bh8QSie8g(x0); if (!LOC49) goto LA50; r0 = mnewString(((NI) 256)); len0 = readlink(x0->data, r0->data, ((NI) 256)); { NI32 LOC56; if (!(len0 < ((NI) 0))) goto LA54; LOC56 = (NI32)0; LOC56 = oslasterror_pMOMIZAQaKFp1XoL58mjVg(); raiseoserror_K9a7YBjj81Bse0N0Fg7MFIA(LOC56, ((NimStringDesc*) &T_yu6cxgKBBXbNsTkT9cyMd4g_3)); } LA54: ; { if (!(((NI) 256) < len0)) goto LA59; r0 = mnewString(((NI) ((NI)(len0 + ((NI) 1))))); len0 = readlink(x0->data, r0->data, len0); } LA59: ; r0 = setLengthStr(r0, ((NI) (len0))); { NIM_BOOL LOC63; LOC63 = (NIM_BOOL)0; LOC63 = nosisAbsolute(r0); if (!LOC63) goto LA64; x0 = copyString(r0); } goto LA61; LA64: ; { NimStringDesc* LOC67; LOC67 = (NimStringDesc*)0; LOC67 = nosparentDir(x0); x0 = HEX2F_BsTQv9c9anbxt9bKmR0aN1elQ(LOC67, r0); } LA61: ; } goto LA47; LA50: ; { goto LA45; } LA47: ; } LA46: ; } LA45: ; result0 = copyString(x0); goto BeforeRet; } LA43: ; { if (!(((NI) 0) <= ((NI) (i_ZiZQ0BrOOFRx4PwT9ahXHww_2)))) goto LA71; goto LA38; } LA71: ; i_ZiZQ0BrOOFRx4PwT9ahXHww_2 += ((NI) 1); } } LA38: ; } LA36: ; } { if (!(splits_CKAYEyOxVf7nwPkm8GYNOw == ((NI) 0))) goto LA75; goto LA22; } LA75: ; splits_CKAYEyOxVf7nwPkm8GYNOw -= ((NI) 1); last_3fEEWoI2EjAM6VEbXEXPpw += ((NI) 1); } LA23: ; } LA22: ; } LA20: ; } result0 = copyString(((NimStringDesc*) &T_yu6cxgKBBXbNsTkT9cyMd4g_3)); }BeforeRet: ; return result0; } N_NIMCALL(NimStringDesc*, nosgetConfigDir)(void) { NimStringDesc* result0; NimStringDesc* LOC1; NimStringDesc* LOC2; { result0 = (NimStringDesc*)0; LOC1 = (NimStringDesc*)0; LOC2 = (NimStringDesc*)0; LOC2 = getenv_8zNgT9bxx7m9cTt2TeVdTdIw(((NimStringDesc*) &T_yu6cxgKBBXbNsTkT9cyMd4g_10)); LOC1 = rawNewString(LOC2->Sup.len + 9); appendString(LOC1, LOC2); appendString(LOC1, ((NimStringDesc*) &T_yu6cxgKBBXbNsTkT9cyMd4g_13)); result0 = LOC1; goto BeforeRet; }BeforeRet: ; return result0; } N_NIMCALL(NIM_BOOL, nosisRootDir)(NimStringDesc* path0) { NIM_BOOL result0; NI LOC1; result0 = (NIM_BOOL)0; LOC1 = (NI)0; LOC1 = parentdirpos_DqTO9byr8jfMuX9cD2FnlVFQ(path0); result0 = (LOC1 < ((NI) 0)); return result0; } N_NIMCALL(NIM_BOOL, existsenv_ahpnHkfRE9cLlJNaRpEL7Vw)(NimStringDesc* key0) { NIM_BOOL result0; { result0 = (NIM_BOOL)0; { NCSTRING LOC3; NIM_BOOL LOC4; LOC3 = (NCSTRING)0; LOC3 = getenv(key0->data); LOC4 = (NIM_BOOL)0; LOC4 = HEX3DHEX3D_9ccNWqrTIE9bcAqE2Q0ro7zgos(LOC3, NIM_NIL); if (!!(LOC4)) goto LA5; result0 = NIM_TRUE; goto BeforeRet; } goto LA1; LA5: ; { NI LOC8; LOC8 = (NI)0; LOC8 = findenvvar_cmJJ3H7KloA4DztTvzWyCw(key0); result0 = (((NI) 0) <= LOC8); goto BeforeRet; } LA1: ; }BeforeRet: ; return result0; } static N_INLINE(void, pushSafePoint)(TSafePoint* s0) { (*s0).hasRaiseAction = NIM_FALSE; (*s0).prev = exchandler_rqLlY5bs9atDw2OXYqJEn5g; exchandler_rqLlY5bs9atDw2OXYqJEn5g = s0; } static N_INLINE(NIM_BOOL, equalmem_fmeFeLBvgmAHG9bC8ETS9bYQropes)(void* a0, void* b0, NI size0) { NIM_BOOL result0; int LOC1; result0 = (NIM_BOOL)0; LOC1 = (int)0; LOC1 = memcmp(a0, b0, ((size_t) (size0))); result0 = (LOC1 == ((NI32) 0)); return result0; } static N_INLINE(NIM_BOOL, eqStrings)(NimStringDesc* a0, NimStringDesc* b0) { NIM_BOOL result0; NIM_BOOL LOC11; { result0 = (NIM_BOOL)0; { if (!(a0 == b0)) goto LA3; result0 = NIM_TRUE; goto BeforeRet; } LA3: ; { NIM_BOOL LOC7; LOC7 = (NIM_BOOL)0; LOC7 = (a0 == NIM_NIL); if (LOC7) goto LA8; LOC7 = (b0 == NIM_NIL); LA8: ; if (!LOC7) goto LA9; result0 = NIM_FALSE; goto BeforeRet; } LA9: ; LOC11 = (NIM_BOOL)0; LOC11 = ((*a0).Sup.len == (*b0).Sup.len); if (!(LOC11)) goto LA12; LOC11 = equalmem_fmeFeLBvgmAHG9bC8ETS9bYQropes(((void*) ((*a0).data)), ((void*) ((*b0).data)), ((NI) ((*a0).Sup.len))); LA12: ; result0 = LOC11; goto BeforeRet; }BeforeRet: ; return result0; } static N_INLINE(NIM_BOOL, direxists_wf0Ae3eLXw0lSNEFJMV3ognimblecmd)(NimStringDesc* dir0) { NIM_BOOL result0; result0 = (NIM_BOOL)0; result0 = nosexistsDir(dir0); return result0; } N_NIMCALL(void, nosremoveFile)(NimStringDesc* file0) { { NIM_BOOL LOC3; int LOC4; NI32 LOC8; NCSTRING LOC9; NimStringDesc* LOC10; LOC3 = (NIM_BOOL)0; LOC4 = (int)0; LOC4 = remove(file0->data); LOC3 = !((LOC4 == ((NI32) 0))); if (!(LOC3)) goto LA5; LOC3 = !((errno == ENOENT)); LA5: ; if (!LOC3) goto LA6; LOC8 = (NI32)0; LOC8 = oslasterror_pMOMIZAQaKFp1XoL58mjVg(); LOC9 = (NCSTRING)0; LOC9 = strerror(errno); LOC10 = (NimStringDesc*)0; LOC10 = cstrToNimstr(LOC9); raiseoserror_K9a7YBjj81Bse0N0Fg7MFIA(LOC8, LOC10); } LA6: ; } static N_INLINE(void, popSafePoint)(void) { exchandler_rqLlY5bs9atDw2OXYqJEn5g = (*exchandler_rqLlY5bs9atDw2OXYqJEn5g).prev; } N_NIMCALL(void, rawremovedir_P9aOuM3pg25yKqgBUm7qKng)(NimStringDesc* dir0) { { NIM_BOOL LOC3; int LOC4; NI32 LOC8; LOC3 = (NIM_BOOL)0; LOC4 = (int)0; LOC4 = rmdir(dir0->data); LOC3 = !((LOC4 == ((NI32) 0))); if (!(LOC3)) goto LA5; LOC3 = !((errno == ENOENT)); LA5: ; if (!LOC3) goto LA6; LOC8 = (NI32)0; LOC8 = oslasterror_pMOMIZAQaKFp1XoL58mjVg(); raiseoserror_K9a7YBjj81Bse0N0Fg7MFIA(LOC8, ((NimStringDesc*) &T_yu6cxgKBBXbNsTkT9cyMd4g_3)); } LA6: ; } N_NIMCALL(void, nosremoveDir)(NimStringDesc* dir0) { { Pathcomponent_9c1SIU9cO1wHcl09b703A9cDrg kind_CgYWYOGBi9cm9cxet9aP24amQ; NimStringDesc* path_PjxD5WVfFUdiLYTKKL9acYg; DIR* d_Snew50d2sxhgjxplaladWA; kind_CgYWYOGBi9cm9cxet9aP24amQ = (Pathcomponent_9c1SIU9cO1wHcl09b703A9cDrg)0; path_PjxD5WVfFUdiLYTKKL9acYg = (NimStringDesc*)0; d_Snew50d2sxhgjxplaladWA = opendir(dir0->data); { TSafePoint T_yu6cxgKBBXbNsTkT9cyMd4g_14; if (!!((d_Snew50d2sxhgjxplaladWA == NIM_NIL))) goto LA4; pushSafePoint(&T_yu6cxgKBBXbNsTkT9cyMd4g_14); T_yu6cxgKBBXbNsTkT9cyMd4g_14.status = setjmp(T_yu6cxgKBBXbNsTkT9cyMd4g_14.context); if (T_yu6cxgKBBXbNsTkT9cyMd4g_14.status == 0) { { while (1) { { struct dirent* x_aQYTEBuHrMi9cGfwwrddjfg; NimStringDesc* volatile y_nqt04gTLPSvk7lCmOg2cqg; x_aQYTEBuHrMi9cGfwwrddjfg = readdir(d_Snew50d2sxhgjxplaladWA); { if (!(x_aQYTEBuHrMi9cGfwwrddjfg == NIM_NIL)) goto LA12; goto LA7; } LA12: ; y_nqt04gTLPSvk7lCmOg2cqg = cstrToNimstr(((NCSTRING) ((*x_aQYTEBuHrMi9cGfwwrddjfg).d_name))); { NIM_BOOL LOC16; struct stat s_9bKnK2sM9am7zFpvRgFLncWA; Pathcomponent_9c1SIU9cO1wHcl09b703A9cDrg volatile k_3L6up3asmYrsS0W9b26IJmg; LOC16 = (NIM_BOOL)0; LOC16 = !(eqStrings(y_nqt04gTLPSvk7lCmOg2cqg, ((NimStringDesc*) &T_yu6cxgKBBXbNsTkT9cyMd4g_15))); if (!(LOC16)) goto LA17; LOC16 = !(eqStrings(y_nqt04gTLPSvk7lCmOg2cqg, ((NimStringDesc*) &T_yu6cxgKBBXbNsTkT9cyMd4g_16))); LA17: ; if (!LOC16) goto LA18; memset((void*)(&s_9bKnK2sM9am7zFpvRgFLncWA), 0, sizeof(s_9bKnK2sM9am7zFpvRgFLncWA)); { if (!NIM_TRUE) goto LA22; y_nqt04gTLPSvk7lCmOg2cqg = HEX2F_BsTQv9c9anbxt9bKmR0aN1elQ(dir0, y_nqt04gTLPSvk7lCmOg2cqg); } LA22: ; k_3L6up3asmYrsS0W9b26IJmg = ((Pathcomponent_9c1SIU9cO1wHcl09b703A9cDrg) 0); { if (!!(((*x_aQYTEBuHrMi9cGfwwrddjfg).d_type == ((NI8) 0)))) goto LA26; { if (!((*x_aQYTEBuHrMi9cGfwwrddjfg).d_type == ((NI8) 4))) goto LA30; k_3L6up3asmYrsS0W9b26IJmg = ((Pathcomponent_9c1SIU9cO1wHcl09b703A9cDrg) 2); } LA30: ; { if (!((*x_aQYTEBuHrMi9cGfwwrddjfg).d_type == ((NI8) 10))) goto LA34; { NIM_BOOL LOC38; LOC38 = (NIM_BOOL)0; LOC38 = direxists_wf0Ae3eLXw0lSNEFJMV3ognimblecmd(y_nqt04gTLPSvk7lCmOg2cqg); if (!LOC38) goto LA39; k_3L6up3asmYrsS0W9b26IJmg = ((Pathcomponent_9c1SIU9cO1wHcl09b703A9cDrg) 3); } goto LA36; LA39: ; { k_3L6up3asmYrsS0W9b26IJmg = ((Pathcomponent_9c1SIU9cO1wHcl09b703A9cDrg) 1); } LA36: ; } LA34: ; kind_CgYWYOGBi9cm9cxet9aP24amQ = k_3L6up3asmYrsS0W9b26IJmg; path_PjxD5WVfFUdiLYTKKL9acYg = y_nqt04gTLPSvk7lCmOg2cqg; switch (kind_CgYWYOGBi9cm9cxet9aP24amQ) { case ((Pathcomponent_9c1SIU9cO1wHcl09b703A9cDrg) 0): case ((Pathcomponent_9c1SIU9cO1wHcl09b703A9cDrg) 1): case ((Pathcomponent_9c1SIU9cO1wHcl09b703A9cDrg) 3): { nosremoveFile(path_PjxD5WVfFUdiLYTKKL9acYg); } break; case ((Pathcomponent_9c1SIU9cO1wHcl09b703A9cDrg) 2): { nosremoveDir(path_PjxD5WVfFUdiLYTKKL9acYg); } break; } goto LA9; } LA26: ; { int LOC46; LOC46 = (int)0; LOC46 = lstat(y_nqt04gTLPSvk7lCmOg2cqg->data, (&s_9bKnK2sM9am7zFpvRgFLncWA)); if (!(LOC46 < ((NI32) 0))) goto LA47; goto LA7; } LA47: ; { NIM_BOOL LOC51; LOC51 = (NIM_BOOL)0; LOC51 = S_ISDIR(s_9bKnK2sM9am7zFpvRgFLncWA.st_mode); if (!LOC51) goto LA52; k_3L6up3asmYrsS0W9b26IJmg = ((Pathcomponent_9c1SIU9cO1wHcl09b703A9cDrg) 2); } goto LA49; LA52: ; { NIM_BOOL LOC55; LOC55 = (NIM_BOOL)0; LOC55 = S_ISLNK(s_9bKnK2sM9am7zFpvRgFLncWA.st_mode); if (!LOC55) goto LA56; k_3L6up3asmYrsS0W9b26IJmg = getsymlinkfilekind_WoXOp8qmMec1P4MyA3LBKg(y_nqt04gTLPSvk7lCmOg2cqg); } goto LA49; LA56: ; LA49: ; kind_CgYWYOGBi9cm9cxet9aP24amQ = k_3L6up3asmYrsS0W9b26IJmg; path_PjxD5WVfFUdiLYTKKL9acYg = y_nqt04gTLPSvk7lCmOg2cqg; switch (kind_CgYWYOGBi9cm9cxet9aP24amQ) { case ((Pathcomponent_9c1SIU9cO1wHcl09b703A9cDrg) 0): case ((Pathcomponent_9c1SIU9cO1wHcl09b703A9cDrg) 1): case ((Pathcomponent_9c1SIU9cO1wHcl09b703A9cDrg) 3): { nosremoveFile(path_PjxD5WVfFUdiLYTKKL9acYg); } break; case ((Pathcomponent_9c1SIU9cO1wHcl09b703A9cDrg) 2): { nosremoveDir(path_PjxD5WVfFUdiLYTKKL9acYg); } break; } } LA18: ; } LA9: ; } } LA7: ; popSafePoint(); } else { popSafePoint(); } { int LOC62; LOC62 = (int)0; LOC62 = closedir(d_Snew50d2sxhgjxplaladWA); } if (T_yu6cxgKBBXbNsTkT9cyMd4g_14.status != 0) reraiseException(); } LA4: ; } rawremovedir_P9aOuM3pg25yKqgBUm7qKng(dir0); } N_NIMCALL(void, nosmoveFile)(NimStringDesc* source0, NimStringDesc* dest0) { { int LOC3; NI32 LOC6; NCSTRING LOC7; NimStringDesc* LOC8; LOC3 = (int)0; LOC3 = rename(source0->data, dest0->data); if (!!((LOC3 == ((NI32) 0)))) goto LA4; LOC6 = (NI32)0; LOC6 = oslasterror_pMOMIZAQaKFp1XoL58mjVg(); LOC7 = (NCSTRING)0; LOC7 = strerror(errno); LOC8 = (NimStringDesc*)0; LOC8 = cstrToNimstr(LOC7); raiseoserror_K9a7YBjj81Bse0N0Fg7MFIA(LOC6, LOC8); } LA4: ; } N_NIMCALL(void, noscopyFile)(NimStringDesc* source0, NimStringDesc* dest0) { FILE* d0; FILE* s0; void* buf0; d0 = (FILE*)0; s0 = (FILE*)0; { NIM_BOOL LOC3; NI32 LOC6; LOC3 = (NIM_BOOL)0; LOC3 = open_sEp0GH2306oGo9bqBpj5oTQ(&s0, source0, ((Filemode_fVUBHvW79bXUw1j55Oo9avSQ) 0), ((NI) -1)); if (!!(LOC3)) goto LA4; LOC6 = (NI32)0; LOC6 = oslasterror_pMOMIZAQaKFp1XoL58mjVg(); raiseoserror_K9a7YBjj81Bse0N0Fg7MFIA(LOC6, ((NimStringDesc*) &T_yu6cxgKBBXbNsTkT9cyMd4g_3)); } LA4: ; { NIM_BOOL LOC9; NI32 LOC12; LOC9 = (NIM_BOOL)0; LOC9 = open_sEp0GH2306oGo9bqBpj5oTQ(&d0, dest0, ((Filemode_fVUBHvW79bXUw1j55Oo9avSQ) 1), ((NI) -1)); if (!!(LOC9)) goto LA10; close_BWnr8V7RERYno9bIdPmw8Hw_2(s0); LOC12 = (NI32)0; LOC12 = oslasterror_pMOMIZAQaKFp1XoL58mjVg(); raiseoserror_K9a7YBjj81Bse0N0Fg7MFIA(LOC12, ((NimStringDesc*) &T_yu6cxgKBBXbNsTkT9cyMd4g_3)); } LA10: ; buf0 = alloc_sVm4rDImKK2ZDdylByayiA_2(((NI) 8000)); { while (1) { NI bytesread0; bytesread0 = readbuffer_1qjbrvfnPD4PaIieHVDvhw_2(s0, buf0, ((NI) 8000)); { NI byteswritten0; if (!(((NI) 0) < bytesread0)) goto LA17; byteswritten0 = writebuffer_1qjbrvfnPD4PaIieHVDvhw(d0, buf0, ((NI) (bytesread0))); { NI32 LOC23; if (!!((bytesread0 == byteswritten0))) goto LA21; dealloc_RCjNtRnHdRYntrcE7YtwWw(buf0); close_BWnr8V7RERYno9bIdPmw8Hw_2(s0); close_BWnr8V7RERYno9bIdPmw8Hw_2(d0); LOC23 = (NI32)0; LOC23 = oslasterror_pMOMIZAQaKFp1XoL58mjVg(); raiseoserror_K9a7YBjj81Bse0N0Fg7MFIA(LOC23, ((NimStringDesc*) &T_yu6cxgKBBXbNsTkT9cyMd4g_3)); } LA21: ; } LA17: ; { if (!!((bytesread0 == ((NI) 8000)))) goto LA26; goto LA13; } LA26: ; } } LA13: ; dealloc_RCjNtRnHdRYntrcE7YtwWw(buf0); close_BWnr8V7RERYno9bIdPmw8Hw_2(s0); flushfile_BWnr8V7RERYno9bIdPmw8Hw(d0); close_BWnr8V7RERYno9bIdPmw8Hw_2(d0); } N_NIMCALL(time_t, nosgetLastModificationTime)(NimStringDesc* file0) { time_t result0; struct stat res0; { result0 = (time_t)0; memset((void*)(&res0), 0, sizeof(res0)); { int LOC3; NI32 LOC6; LOC3 = (int)0; LOC3 = stat(file0->data, (&res0)); if (!(LOC3 < ((NI32) 0))) goto LA4; LOC6 = (NI32)0; LOC6 = oslasterror_pMOMIZAQaKFp1XoL58mjVg(); raiseoserror_K9a7YBjj81Bse0N0Fg7MFIA(LOC6, ((NimStringDesc*) &T_yu6cxgKBBXbNsTkT9cyMd4g_3)); } LA4: ; result0 = res0.st_mtime; goto BeforeRet; }BeforeRet: ; return result0; } NIM_EXTERNC N_NOINLINE(void, stdlib_osInit000)(void) { nimRegisterGlobalMarker(T_yu6cxgKBBXbNsTkT9cyMd4g_2); } NIM_EXTERNC N_NOINLINE(void, stdlib_osDatInit000)(void) { NTI_sM4lkSb7zS6F7OVMvW9cffQ.size = sizeof(TY_sM4lkSb7zS6F7OVMvW9cffQ*); NTI_sM4lkSb7zS6F7OVMvW9cffQ.kind = 24; NTI_sM4lkSb7zS6F7OVMvW9cffQ.base = (&NTI_77mFvmsOLKik79ci2hXkHEg); NTI_sM4lkSb7zS6F7OVMvW9cffQ.flags = 2; NTI_sM4lkSb7zS6F7OVMvW9cffQ.marker = Marker_TY_sM4lkSb7zS6F7OVMvW9cffQ; }