1 /* Generated by Nim Compiler v1.6.2 */
2 #define NIM_INTBITS 32
3 
4 #include "nimbase.h"
5 #include <string.h>
6 #include <unistd.h>
7 #include <errno.h>
8 #include <sys/stat.h>
9 #include <sys/types.h>
10 #include <time.h>
11 #include <stdlib.h>
12 #include <sys/types.h>
13                                       #include <sys/sysctl.h>
14 #include <sys/wait.h>
15 #include <dirent.h>
16 #include <setjmp.h>
17 #include <stdio.h>
18 #undef LANGUAGE_C
19 #undef MIPSEB
20 #undef MIPSEL
21 #undef PPC
22 #undef R3000
23 #undef R4000
24 #undef i386
25 #undef linux
26 #undef mips
27 #undef near
28 #undef far
29 #undef powerpc
30 #undef unix
31 #define nimfr_(x, y)
32 #define nimln_(x, y)
33 typedef struct tySequence__sM4lkSb7zS6F7OVMvW9cffQ tySequence__sM4lkSb7zS6F7OVMvW9cffQ;
34 typedef struct TGenericSeq TGenericSeq;
35 typedef struct NimStringDesc NimStringDesc;
36 typedef struct TNimType TNimType;
37 typedef struct TNimNode TNimNode;
38 typedef struct tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g;
39 typedef struct tyObject_CellSeq__Axo1XVm9aaQueTOldv8le5w tyObject_CellSeq__Axo1XVm9aaQueTOldv8le5w;
40 typedef struct tyObject_GcHeap__1TRH1TZMaVZTnLNcIHuNFQ tyObject_GcHeap__1TRH1TZMaVZTnLNcIHuNFQ;
41 typedef struct tyObject_GcStack__7fytPA5bBsob6See21YMRA tyObject_GcStack__7fytPA5bBsob6See21YMRA;
42 typedef struct tyObject_MemRegion__x81NhDv59b8ercDZ9bi85jyg tyObject_MemRegion__x81NhDv59b8ercDZ9bi85jyg;
43 typedef struct tyObject_SmallChunk__tXn60W2f8h3jgAYdEmy5NQ tyObject_SmallChunk__tXn60W2f8h3jgAYdEmy5NQ;
44 typedef struct tyObject_BigChunk__Rv9c70Uhp2TytkX7eH78qEg tyObject_BigChunk__Rv9c70Uhp2TytkX7eH78qEg;
45 typedef struct tyObject_LLChunk__XsENErzHIZV9bhvyJx56wGw tyObject_LLChunk__XsENErzHIZV9bhvyJx56wGw;
46 typedef struct tyObject_IntSet__EZObFrE3NC9bIb3YMkY9crZA tyObject_IntSet__EZObFrE3NC9bIb3YMkY9crZA;
47 typedef struct tyObject_Trunk__W0r8S0Y3UGke6T9bIUWnnuw tyObject_Trunk__W0r8S0Y3UGke6T9bIUWnnuw;
48 typedef struct tyObject_AvlNode__IaqjtwKhxLEpvDS9bct9blEw tyObject_AvlNode__IaqjtwKhxLEpvDS9bct9blEw;
49 typedef struct tyObject_HeapLinks__PDV1HBZ8CQSQJC9aOBFNRSg tyObject_HeapLinks__PDV1HBZ8CQSQJC9aOBFNRSg;
50 typedef struct tyTuple__ujsjpB2O9cjj3uDHsXbnSzg tyTuple__ujsjpB2O9cjj3uDHsXbnSzg;
51 typedef struct tyObject_GcStat__0RwLoVBHZPfUAcLczmfQAg tyObject_GcStat__0RwLoVBHZPfUAcLczmfQAg;
52 typedef struct tyObject_CellSet__jG87P0AI9aZtss9ccTYBIISQ tyObject_CellSet__jG87P0AI9aZtss9ccTYBIISQ;
53 typedef struct tyObject_PageDesc__fublkgIY4LG3mT51LU2WHg tyObject_PageDesc__fublkgIY4LG3mT51LU2WHg;
54 typedef struct tyObject_IndexDefect__n6tGEPHKkh7E1AP9bj30WrQ tyObject_IndexDefect__n6tGEPHKkh7E1AP9bj30WrQ;
55 typedef struct tyObject_Defect__LbeSGvgPzGzXnW9caIkJqMA tyObject_Defect__LbeSGvgPzGzXnW9caIkJqMA;
56 typedef struct Exception Exception;
57 typedef struct RootObj RootObj;
58 typedef struct tySequence__uB9b75OUPRENsBAu4AnoePA tySequence__uB9b75OUPRENsBAu4AnoePA;
59 typedef struct tyTuple__UV3llMMYFckfui8YMBuUZA tyTuple__UV3llMMYFckfui8YMBuUZA;
60 typedef struct tyTuple__7q7q3E6Oj24ZNVJb9aonhAg tyTuple__7q7q3E6Oj24ZNVJb9aonhAg;
61 typedef struct tyObject_ValueError__yoNlBGx0D2tRizIdhQuENw tyObject_ValueError__yoNlBGx0D2tRizIdhQuENw;
62 typedef struct tyObject_CatchableError__qrLSDoe2oBoAqNtJ9badtnA tyObject_CatchableError__qrLSDoe2oBoAqNtJ9badtnA;
63 typedef struct tyObject_OSError__BeJgrOdDsczOwEWOZbRfKA tyObject_OSError__BeJgrOdDsczOwEWOZbRfKA;
64 typedef struct tyObject_PathIter__tllF14xUpDWpqG9ci5sg9bMg tyObject_PathIter__tllF14xUpDWpqG9ci5sg9bMg;
65 typedef struct tyTuple__1v9bKyksXWMsm0vNwmZ4EuQ tyTuple__1v9bKyksXWMsm0vNwmZ4EuQ;
66 typedef struct tyObject_IOError__iLZrPn9anoh9ad1MmO0RczFw tyObject_IOError__iLZrPn9anoh9ad1MmO0RczFw;
67 typedef struct TSafePoint TSafePoint;
68 typedef struct tyObject_Time__3y2ZpqsTJLqdZvpC9a0rU2Q tyObject_Time__3y2ZpqsTJLqdZvpC9a0rU2Q;
69 typedef struct tyTuple__HFn8JzZZeLZ9aKrFg4S9a7HA tyTuple__HFn8JzZZeLZ9aKrFg4S9a7HA;
70 typedef struct tyObject_StackTraceEntry__oLyohQ7O2XOvGnflOss8EA tyObject_StackTraceEntry__oLyohQ7O2XOvGnflOss8EA;
71 struct TGenericSeq {
72 NI len;
73 NI reserved;
74 };
75 struct NimStringDesc {
76   TGenericSeq Sup;
77 NIM_CHAR data[SEQ_DECL_SIZE];
78 };
79 typedef NU8 tyEnum_TNimKind__jIBKr1ejBgsfM33Kxw4j7A;
80 typedef NU8 tySet_tyEnum_TNimTypeFlag__v8QUszD1sWlSIWZz7mC4bQ;
81 typedef N_NIMCALL_PTR(void, tyProc__ojoeKfW4VYIm36I9cpDTQIg) (void* p, NI op);
82 typedef N_NIMCALL_PTR(void*, tyProc__WSm2xU5ARYv9aAR4l0z9c9auQ) (void* p);
83 struct TNimType {
84 NI size;
85 NI align;
86 tyEnum_TNimKind__jIBKr1ejBgsfM33Kxw4j7A kind;
87 tySet_tyEnum_TNimTypeFlag__v8QUszD1sWlSIWZz7mC4bQ flags;
88 TNimType* base;
89 TNimNode* node;
90 void* finalizer;
91 tyProc__ojoeKfW4VYIm36I9cpDTQIg marker;
92 tyProc__WSm2xU5ARYv9aAR4l0z9c9auQ deepcopy;
93 };
94 typedef NU8 tyEnum_TNimNodeKind__unfNsxrcATrufDZmpBq4HQ;
95 struct TNimNode {
96 tyEnum_TNimNodeKind__unfNsxrcATrufDZmpBq4HQ kind;
97 NI offset;
98 TNimType* typ;
99 NCSTRING name;
100 NI len;
101 TNimNode** sons;
102 };
103 struct tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g {
104 NI refcount;
105 TNimType* typ;
106 };
107 struct tyObject_GcStack__7fytPA5bBsob6See21YMRA {
108 void* bottom;
109 };
110 struct tyObject_CellSeq__Axo1XVm9aaQueTOldv8le5w {
111 NI len;
112 NI cap;
113 tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g** d;
114 };
115 typedef tyObject_SmallChunk__tXn60W2f8h3jgAYdEmy5NQ* tyArray__SPr7N6UKfuF549bNPiUvSRw[256];
116 typedef NU32 tyArray__BHbOSqU1t9b3Gt7K2c6fQig[24];
117 typedef tyObject_BigChunk__Rv9c70Uhp2TytkX7eH78qEg* tyArray__N1u1nqOgmuJN9cSZrnMHgOQ[32];
118 typedef tyArray__N1u1nqOgmuJN9cSZrnMHgOQ tyArray__B6durA4ZCi1xjJvRtyYxMg[24];
119 typedef tyObject_Trunk__W0r8S0Y3UGke6T9bIUWnnuw* tyArray__lh2A89ahMmYg9bCmpVaplLbA[256];
120 struct tyObject_IntSet__EZObFrE3NC9bIb3YMkY9crZA {
121 tyArray__lh2A89ahMmYg9bCmpVaplLbA data;
122 };
123 typedef tyObject_AvlNode__IaqjtwKhxLEpvDS9bct9blEw* tyArray__0aOLqZchNi8nWtMTi8ND8w[2];
124 struct tyObject_AvlNode__IaqjtwKhxLEpvDS9bct9blEw {
125 tyArray__0aOLqZchNi8nWtMTi8ND8w link;
126 NI key;
127 NI upperBound;
128 NI level;
129 };
130 struct tyTuple__ujsjpB2O9cjj3uDHsXbnSzg {
131 tyObject_BigChunk__Rv9c70Uhp2TytkX7eH78qEg* Field0;
132 NI Field1;
133 };
134 typedef tyTuple__ujsjpB2O9cjj3uDHsXbnSzg tyArray__LzOv2eCDGiceMKQstCLmhw[30];
135 struct tyObject_HeapLinks__PDV1HBZ8CQSQJC9aOBFNRSg {
136 NI len;
137 tyArray__LzOv2eCDGiceMKQstCLmhw chunks;
138 tyObject_HeapLinks__PDV1HBZ8CQSQJC9aOBFNRSg* next;
139 };
140 struct tyObject_MemRegion__x81NhDv59b8ercDZ9bi85jyg {
141 NI minLargeObj;
142 NI maxLargeObj;
143 tyArray__SPr7N6UKfuF549bNPiUvSRw freeSmallChunks;
144 NU32 flBitmap;
145 tyArray__BHbOSqU1t9b3Gt7K2c6fQig slBitmap;
146 tyArray__B6durA4ZCi1xjJvRtyYxMg matrix;
147 tyObject_LLChunk__XsENErzHIZV9bhvyJx56wGw* llmem;
148 NI currMem;
149 NI maxMem;
150 NI freeMem;
151 NI occ;
152 NI lastSize;
153 tyObject_IntSet__EZObFrE3NC9bIb3YMkY9crZA chunkStarts;
154 tyObject_AvlNode__IaqjtwKhxLEpvDS9bct9blEw* root;
155 tyObject_AvlNode__IaqjtwKhxLEpvDS9bct9blEw* deleted;
156 tyObject_AvlNode__IaqjtwKhxLEpvDS9bct9blEw* last;
157 tyObject_AvlNode__IaqjtwKhxLEpvDS9bct9blEw* freeAvlNodes;
158 NIM_BOOL locked;
159 NIM_BOOL blockChunkSizeIncrease;
160 NI nextChunkSize;
161 tyObject_AvlNode__IaqjtwKhxLEpvDS9bct9blEw bottomData;
162 tyObject_HeapLinks__PDV1HBZ8CQSQJC9aOBFNRSg heapLinks;
163 };
164 struct tyObject_GcStat__0RwLoVBHZPfUAcLczmfQAg {
165 NI stackScans;
166 NI cycleCollections;
167 NI maxThreshold;
168 NI maxStackSize;
169 NI maxStackCells;
170 NI cycleTableSize;
171 NI64 maxPause;
172 };
173 struct tyObject_CellSet__jG87P0AI9aZtss9ccTYBIISQ {
174 NI counter;
175 NI max;
176 tyObject_PageDesc__fublkgIY4LG3mT51LU2WHg* head;
177 tyObject_PageDesc__fublkgIY4LG3mT51LU2WHg** data;
178 };
179 struct tyObject_GcHeap__1TRH1TZMaVZTnLNcIHuNFQ {
180 tyObject_GcStack__7fytPA5bBsob6See21YMRA stack;
181 NI cycleThreshold;
182 NI zctThreshold;
183 tyObject_CellSeq__Axo1XVm9aaQueTOldv8le5w zct;
184 tyObject_CellSeq__Axo1XVm9aaQueTOldv8le5w decStack;
185 tyObject_CellSeq__Axo1XVm9aaQueTOldv8le5w tempStack;
186 NI recGcLock;
187 tyObject_MemRegion__x81NhDv59b8ercDZ9bi85jyg region;
188 tyObject_GcStat__0RwLoVBHZPfUAcLczmfQAg stat;
189 tyObject_CellSet__jG87P0AI9aZtss9ccTYBIISQ marked;
190 tyObject_CellSeq__Axo1XVm9aaQueTOldv8le5w additionalRoots;
191 NI gcThreadId;
192 };
193 struct RootObj {
194 TNimType* m_type;
195 };
196 struct Exception {
197   RootObj Sup;
198 Exception* parent;
199 NCSTRING name;
200 NimStringDesc* message;
201 tySequence__uB9b75OUPRENsBAu4AnoePA* trace;
202 Exception* up;
203 };
204 struct tyObject_Defect__LbeSGvgPzGzXnW9caIkJqMA {
205   Exception Sup;
206 };
207 struct tyObject_IndexDefect__n6tGEPHKkh7E1AP9bj30WrQ {
208   tyObject_Defect__LbeSGvgPzGzXnW9caIkJqMA Sup;
209 };
210 typedef NU8 tySet_tyChar__nmiMWKVIe46vacnhAFrQvw[32];
211 struct tyTuple__UV3llMMYFckfui8YMBuUZA {
212 NimStringDesc* Field0;
213 NimStringDesc* Field1;
214 };
215 struct tyTuple__7q7q3E6Oj24ZNVJb9aonhAg {
216 NimStringDesc* Field0;
217 NimStringDesc* Field1;
218 NimStringDesc* Field2;
219 };
220 struct tyObject_CatchableError__qrLSDoe2oBoAqNtJ9badtnA {
221   Exception Sup;
222 };
223 struct tyObject_ValueError__yoNlBGx0D2tRizIdhQuENw {
224   tyObject_CatchableError__qrLSDoe2oBoAqNtJ9badtnA Sup;
225 };
226 struct tyObject_OSError__BeJgrOdDsczOwEWOZbRfKA {
227   tyObject_CatchableError__qrLSDoe2oBoAqNtJ9badtnA Sup;
228 NI32 errorCode;
229 };
230 struct tyObject_PathIter__tllF14xUpDWpqG9ci5sg9bMg {
231 NI i;
232 NI prev;
233 NIM_BOOL notFirst;
234 };
235 struct tyTuple__1v9bKyksXWMsm0vNwmZ4EuQ {
236 NI Field0;
237 NI Field1;
238 };
239 typedef int tyArray__VR9bNthWayFgb5M9avIR8bkA[4];
240 typedef NU8 tyEnum_PathComponent__9c1SIU9cO1wHcl09b703A9cDrg;
241 struct tyObject_IOError__iLZrPn9anoh9ad1MmO0RczFw {
242   tyObject_CatchableError__qrLSDoe2oBoAqNtJ9badtnA Sup;
243 };
244 typedef NimStringDesc* tyArray__nHXaesL0DJZHyVS07ARPRA[1];
245 struct TSafePoint {
246 TSafePoint* prev;
247 NI status;
248 jmp_buf context;
249 };
250 typedef NIM_CHAR tyArray__dTlC27m9c9aWd5dvuePYanug[256];
251 typedef NU8 tySet_tyEnum_CopyFlag__pdzel23GjJ9cPFw8c5ldeRA;
252 typedef NU8 tyEnum_CopyFlag__pdzel23GjJ9cPFw8c5ldeRA;
253 typedef NU8 tyEnum_FileMode__ZJfK20XeZ9bv2j1pZjw9aswg;
254 struct tyObject_Time__3y2ZpqsTJLqdZvpC9a0rU2Q {
255 NI64 seconds;
256 NI nanosecond;
257 };
258 typedef NU16 tySet_tyEnum_FilePermission__uTVeDpjCH6aWw9c74YkAskA;
259 typedef NU8 tyEnum_FilePermission__uTVeDpjCH6aWw9c74YkAskA;
260 struct tyTuple__HFn8JzZZeLZ9aKrFg4S9a7HA {
261 NimStringDesc* Field0;
262 tySet_tyEnum_FilePermission__uTVeDpjCH6aWw9c74YkAskA Field1;
263 };
264 struct tyObject_StackTraceEntry__oLyohQ7O2XOvGnflOss8EA {
265 NCSTRING procname;
266 NI line;
267 NCSTRING filename;
268 };
269 struct tySequence__sM4lkSb7zS6F7OVMvW9cffQ {
270   TGenericSeq Sup;
271   NimStringDesc* data[SEQ_DECL_SIZE];
272 };
273 struct tySequence__uB9b75OUPRENsBAu4AnoePA {
274   TGenericSeq Sup;
275   tyObject_StackTraceEntry__oLyohQ7O2XOvGnflOss8EA data[SEQ_DECL_SIZE];
276 };
277 N_LIB_PRIVATE N_NIMCALL(NimStringDesc*, setLengthStr)(NimStringDesc* s, NI newLen);
278 N_LIB_PRIVATE N_NIMCALL(NimStringDesc*, addChar)(NimStringDesc* s, NIM_CHAR c);
279 N_LIB_PRIVATE N_NIMCALL(TGenericSeq*, incrSeqV3)(TGenericSeq* s, TNimType* typ);
280 N_LIB_PRIVATE N_NIMCALL(NimStringDesc*, copyStringRC1)(NimStringDesc* src);
281 static N_INLINE(void, nimGCunrefNoCycle)(void* p);
282 static N_INLINE(void, decRef__system_5315)(tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g* c);
283 static N_INLINE(NI, minuspercent___system_716)(NI x, NI y);
284 static N_INLINE(NIM_BOOL, ltpercent___system_1005)(NI x, NI y);
285 static N_INLINE(void, rtlAddZCT__system_5313)(tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g* c);
286 N_LIB_PRIVATE N_NOINLINE(void, addZCT__system_5264)(tyObject_CellSeq__Axo1XVm9aaQueTOldv8le5w* s, tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g* c);
287 static N_INLINE(tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g*, usrToCell__system_5270)(void* usr);
288 N_LIB_PRIVATE N_NIMCALL(NimStringDesc*, cstrToNimstr)(NCSTRING str);
289 N_LIB_PRIVATE N_NOINLINE(void*, newObj)(TNimType* typ, NI size);
290 static N_INLINE(void, appendString)(NimStringDesc* dest, NimStringDesc* src);
291 static N_INLINE(void, copyMem__system_1727)(void* dest, void* source, NI size);
292 static N_INLINE(void, nimCopyMem)(void* dest, void* source, NI size);
293 N_LIB_PRIVATE N_NIMCALL(NimStringDesc*, dollar___systemZdollars_3)(NI x);
294 N_LIB_PRIVATE N_NIMCALL(NimStringDesc*, rawNewString)(NI space);
295 static N_INLINE(void, asgnRef)(void** dest, void* src);
296 static N_INLINE(void, incRef__system_5308)(tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g* c);
297 static N_INLINE(NI, pluspercent___system_696)(NI x, NI y);
298 N_LIB_PRIVATE N_NIMCALL(void, raiseExceptionEx)(Exception* e, NCSTRING ename, NCSTRING procname, NCSTRING filename, NI line);
299 N_LIB_PRIVATE N_NIMCALL(NimStringDesc*, nospquoteShellPosix)(NimStringDesc* s);
300 N_LIB_PRIVATE N_NIMCALL(NimStringDesc*, copyString)(NimStringDesc* src);
301 N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, allCharsInSet__pureZstrutils_1341)(NimStringDesc* s, tySet_tyChar__nmiMWKVIe46vacnhAFrQvw theSet);
302 N_LIB_PRIVATE N_NIMCALL(NimStringDesc*, nsuReplaceStr)(NimStringDesc* s, NimStringDesc* sub, NimStringDesc* by);
303 N_LIB_PRIVATE N_NIMCALL(NimStringDesc*, resizeString)(NimStringDesc* dest, NI addlen);
304 N_LIB_PRIVATE N_NIMCALL(NimStringDesc*, nospquoteShell)(NimStringDesc* s);
305 N_NIMCALL(NimStringDesc*, rawNewString)(NI cap);
306 N_LIB_PRIVATE N_NIMCALL(void, joinPathImpl__pureZos_82)(NimStringDesc** result, NI* state, NimStringDesc* tail);
307 static N_INLINE(NIM_CHAR, X5BX5D___system_7328)(NimStringDesc* s, NI i);
308 static N_INLINE(NIM_CHAR*, X5BX5D___system_7361)(NimStringDesc** s, NI i);
309 N_LIB_PRIVATE N_NIMCALL(void, normalizePathEnd__pureZos_51)(NimStringDesc** path, NIM_BOOL trailingSep);
310 N_LIB_PRIVATE N_NIMCALL(void, unsureAsgnRef)(void** dest, void* src);
311 N_LIB_PRIVATE N_NIMCALL(void, addNormalizePath__pureZpathnorm_71)(NimStringDesc* x, NimStringDesc** result, NI* state, NIM_CHAR dirSep);
312 N_LIB_PRIVATE N_NIMCALL(NimStringDesc*, normalizePathEnd__pureZos_71)(NimStringDesc* path, NIM_BOOL trailingSep);
313 N_LIB_PRIVATE N_NIMCALL(NimStringDesc*, nosextractFilename)(NimStringDesc* path);
314 N_LIB_PRIVATE N_NIMCALL(void, nossplitPath)(NimStringDesc* path, tyTuple__UV3llMMYFckfui8YMBuUZA* Result);
315 N_LIB_PRIVATE N_NIMCALL(NimStringDesc*, substr__system_7743)(NimStringDesc* s, NI first, NI last);
316 N_LIB_PRIVATE N_NIMCALL(NimStringDesc*, substr__system_7755)(NimStringDesc* s, NI first);
317 static N_INLINE(void, nimZeroMem)(void* p, NI size);
318 static N_INLINE(void, nimSetMem__systemZmemory_7)(void* a, int v, NI size);
319 N_LIB_PRIVATE N_NIMCALL(NimStringDesc*, normalizePath__pureZpathnorm_127)(NimStringDesc* path, NIM_CHAR dirSep);
320 N_LIB_PRIVATE N_NIMCALL(NI, cmp__system_1549)(NimStringDesc* x, NimStringDesc* y);
321 N_LIB_PRIVATE N_NIMCALL(NI, nsuCmpIgnoreCase)(NimStringDesc* a, NimStringDesc* b);
322 N_LIB_PRIVATE N_NIMCALL(NimStringDesc*, nosrelativePath)(NimStringDesc* path, NimStringDesc* base, NIM_CHAR sep);
323 static N_INLINE(NIM_BOOL, eqStrings)(NimStringDesc* a, NimStringDesc* b);
324 static N_INLINE(NIM_BOOL, equalMem__system_1735)(void* a, void* b, NI size);
325 static N_INLINE(int, nimCmpMem)(void* a, void* b, NI size);
326 static N_INLINE(void, normalizePathAux__pureZos_31)(NimStringDesc** path);
327 N_LIB_PRIVATE N_NIMCALL(void, nosnormalizePath)(NimStringDesc** path);
328 N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, nosisAbsolute)(NimStringDesc* path);
329 N_LIB_PRIVATE N_NIMCALL(NimStringDesc*, absolutePathInternal__pureZos_49)(NimStringDesc* path);
330 N_LIB_PRIVATE N_NIMCALL(NimStringDesc*, absolutePath__pureZos_742)(NimStringDesc* path, NimStringDesc* root);
331 N_LIB_PRIVATE N_NIMCALL(NimStringDesc*, nosjoinPath)(NimStringDesc* head, NimStringDesc* tail);
332 N_LIB_PRIVATE N_NIMCALL(NimStringDesc*, nosgetCurrentDir)(void);
333 N_NIMCALL(NimStringDesc*, mnewString)(NI len);
334 static N_INLINE(NIM_BOOL, eqeq___system_7723)(NCSTRING x, NCSTRING y);
335 static N_INLINE(NCSTRING, nimToCStringConv)(NimStringDesc* s);
336 N_LIB_PRIVATE N_NIMCALL(NI32, osLastError__pureZos_408)(void);
337 N_LIB_PRIVATE N_NIMCALL(void, failedAssertImpl__systemZassertions_56)(NimStringDesc* msg);
338 N_LIB_PRIVATE N_NOINLINE(void, raiseOSError__pureZos_405)(NI32 errorCode, NimStringDesc* additionalInfo);
339 N_LIB_PRIVATE N_NOINLINE(tyObject_OSError__BeJgrOdDsczOwEWOZbRfKA*, newOSError__pureZos_379)(NI32 errorCode, NimStringDesc* additionalInfo);
340 N_LIB_PRIVATE N_NIMCALL(NimStringDesc*, osErrorMsg__pureZos_358)(NI32 errorCode);
341 N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, hasNext__pureZpathnorm_6)(tyObject_PathIter__tllF14xUpDWpqG9ci5sg9bMg it, NimStringDesc* x);
342 N_LIB_PRIVATE N_NIMCALL(tyTuple__1v9bKyksXWMsm0vNwmZ4EuQ, next__pureZpathnorm_10)(tyObject_PathIter__tllF14xUpDWpqG9ci5sg9bMg* it, NimStringDesc* x);
343 N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, nsuStartsWith)(NimStringDesc* s, NimStringDesc* prefix);
344 N_LIB_PRIVATE N_NIMCALL(NI, parentDirPos__pureZos_195)(NimStringDesc* path);
345 N_LIB_PRIVATE N_NIMCALL(NimStringDesc*, getEnv__pureZos_418)(NimStringDesc* key, NimStringDesc* default_0);
346 N_LIB_PRIVATE N_NIMCALL(NimStringDesc*, nosgetHomeDir)(void);
347 static N_INLINE(NimStringDesc*, slash___pureZos_121)(NimStringDesc* head, NimStringDesc* tail);
348 N_LIB_PRIVATE N_NIMCALL(void, nossplitFile)(NimStringDesc* path, tyTuple__7q7q3E6Oj24ZNVJb9aonhAg* Result);
349 N_LIB_PRIVATE N_NIMCALL(NimStringDesc*, nosgetAppFilename)(void);
350 N_LIB_PRIVATE N_NIMCALL(NimStringDesc*, getApplFreebsd__pureZos_1569)(void);
351 static N_INLINE(NI, nimCStrLen)(NCSTRING a);
352 N_LIB_PRIVATE N_NIMCALL(NimStringDesc*, getApplHeuristic__pureZos_1606)(void);
353 N_LIB_PRIVATE N_NIMCALL(NimStringDesc*, paramStr__pureZos_1535)(NI i);
354 N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, nosfileExists)(NimStringDesc* filename);
355 N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, nosexistsOrCreateDir)(NimStringDesc* dir);
356 N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, rawCreateDir__pureZos_1415)(NimStringDesc* dir);
357 N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, nosdirExists)(NimStringDesc* dir);
358 N_LIB_PRIVATE N_NIMCALL(NI, searchExtPos__pureZos_271)(NimStringDesc* path);
359 N_LIB_PRIVATE N_NIMCALL(NimStringDesc*, normExt__pureZos_268)(NimStringDesc* ext);
360 static N_INLINE(void, appendChar)(NimStringDesc* dest, NIM_CHAR c);
361 N_LIB_PRIVATE N_NIMCALL(NimStringDesc*, dollar___pureZos_429)(tyTuple__UV3llMMYFckfui8YMBuUZA x);
362 N_LIB_PRIVATE N_NIMCALL(void, addQuoted__pureZos_449)(NimStringDesc** s, NimStringDesc* x);
363 static N_INLINE(void, addEscapedChar__system_7484)(NimStringDesc** s, NIM_CHAR c);
364 static N_INLINE(NIM_BOOL, contains__pureZos_660)(NIM_CHAR* a, NI aLen_0, NIM_CHAR item);
365 static N_INLINE(NI, find__pureZos_665)(NIM_CHAR* a, NI aLen_0, NIM_CHAR item);
366 N_LIB_PRIVATE N_NIMCALL(NimStringDesc*, nosaddFileExt)(NimStringDesc* filename, NimStringDesc* ext);
367 N_LIB_PRIVATE N_NIMCALL(NimStringDesc*, expandTilde__pureZos_585)(NimStringDesc* path);
368 N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, nossymlinkExists)(NimStringDesc* link);
369 N_LIB_PRIVATE N_NIMCALL(NimStringDesc*, nosparentDir)(NimStringDesc* path);
370 N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, nostryRemoveFile)(NimStringDesc* file);
371 static N_INLINE(void, pushSafePoint)(TSafePoint* s);
372 N_LIB_PRIVATE N_NIMCALL(tyEnum_PathComponent__9c1SIU9cO1wHcl09b703A9cDrg, getSymlinkFileKind__pureZos_1233)(NimStringDesc* path);
373 N_LIB_PRIVATE N_NIMCALL(void, nosremoveFile)(NimStringDesc* file);
374 N_LIB_PRIVATE N_NIMCALL(void, nosremoveDir)(NimStringDesc* dir, NIM_BOOL checkDir);
375 static N_INLINE(void, popSafePoint)(void);
376 N_LIB_PRIVATE N_NIMCALL(void, nimLeaveFinally)(void);
377 N_LIB_PRIVATE N_NIMCALL(void, reraiseException)(void);
378 N_LIB_PRIVATE N_NIMCALL(void, rawRemoveDir__pureZos_1408)(NimStringDesc* dir);
379 N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, tryMoveFSObject__pureZos_1094)(NimStringDesc* source, NimStringDesc* dest, NIM_BOOL isDir);
380 N_LIB_PRIVATE N_NIMCALL(void, noscopyFile)(NimStringDesc* source, NimStringDesc* dest, tySet_tyEnum_CopyFlag__pdzel23GjJ9cPFw8c5ldeRA options);
381 static N_INLINE(NI, countBits32)(NU32 n);
382 static N_INLINE(NI, countSetBitsImpl__systemZcountbits95impl_26)(NU32 x);
383 N_CDECL(int, __builtin_popcount)(unsigned int x);
384 N_LIB_PRIVATE N_NIMCALL(void, createSymlink__pureZos_1018)(NimStringDesc* src, NimStringDesc* dest);
385 N_LIB_PRIVATE N_NIMCALL(NimStringDesc*, expandSymlink__pureZos_1024)(NimStringDesc* symlinkPath);
386 N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, open__systemZio_389)(FILE** f, NimStringDesc* filename, tyEnum_FileMode__ZJfK20XeZ9bv2j1pZjw9aswg mode, NI bufSize);
387 N_LIB_PRIVATE N_NIMCALL(void, close__systemZio_217)(FILE* f);
388 N_LIB_PRIVATE N_NOCONV(void*, allocImpl__system_1743)(NI size);
389 N_LIB_PRIVATE N_NIMCALL(NI, readBuffer__systemZio_144)(FILE* f, void* buffer, NI len);
390 N_LIB_PRIVATE N_NIMCALL(NI, writeBuffer__systemZio_176)(FILE* f, void* buffer, NI len);
391 N_LIB_PRIVATE N_NOCONV(void, dealloc)(void* p);
392 N_LIB_PRIVATE N_NIMCALL(void, flushFile__systemZio_226)(FILE* f);
393 static N_INLINE(void, popCurrentException)(void);
394 N_LIB_PRIVATE N_NIMCALL(void, noscopyDir)(NimStringDesc* source, NimStringDesc* dest);
395 N_LIB_PRIVATE N_NIMCALL(void, noscreateDir)(NimStringDesc* dir);
396 static N_INLINE(tyObject_Time__3y2ZpqsTJLqdZvpC9a0rU2Q, toTime__pureZos_17)(struct timespec ts);
397 N_LIB_PRIVATE N_NIMCALL(tyObject_Time__3y2ZpqsTJLqdZvpC9a0rU2Q, initTime__pureZtimes_895)(NI64 unix_0, NI nanosecond);
398 N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, ntLtTime)(tyObject_Time__3y2ZpqsTJLqdZvpC9a0rU2Q a, tyObject_Time__3y2ZpqsTJLqdZvpC9a0rU2Q b);
399 N_LIB_PRIVATE N_NIMCALL(tyObject_Time__3y2ZpqsTJLqdZvpC9a0rU2Q, nosgetLastModificationTime)(NimStringDesc* file);
400 N_LIB_PRIVATE N_NIMCALL(void, nossetFilePermissions)(NimStringDesc* filename, tySet_tyEnum_FilePermission__uTVeDpjCH6aWw9c74YkAskA permissions, NIM_BOOL followSymlinks);
401 N_LIB_PRIVATE N_NIMCALL(NimStringDesc*, dollar___pureZos_880)(tyTuple__HFn8JzZZeLZ9aKrFg4S9a7HA x);
402 N_LIB_PRIVATE N_NIMCALL(void, addQuoted__pureZos_965)(NimStringDesc** s, tySet_tyEnum_FilePermission__uTVeDpjCH6aWw9c74YkAskA x);
403 N_LIB_PRIVATE N_NIMCALL(NimStringDesc*, dollar___pureZos_971)(tySet_tyEnum_FilePermission__uTVeDpjCH6aWw9c74YkAskA x);
404 N_LIB_PRIVATE N_NIMCALL(NimStringDesc*, collectionToString__pureZos_975)(tySet_tyEnum_FilePermission__uTVeDpjCH6aWw9c74YkAskA x, NimStringDesc* prefix, NimStringDesc* separator, NimStringDesc* suffix);
405 N_LIB_PRIVATE N_NIMCALL(void, addQuoted__pureZos_1007)(NimStringDesc** s, tyEnum_FilePermission__uTVeDpjCH6aWw9c74YkAskA x);
406 N_LIB_PRIVATE N_NIMCALL(NimStringDesc*, reprEnum)(NI e, TNimType* typ);
407 N_LIB_PRIVATE N_NIMCALL(tySet_tyEnum_FilePermission__uTVeDpjCH6aWw9c74YkAskA, nosgetFilePermissions)(NimStringDesc* filename);
408 N_LIB_PRIVATE N_NIMCALL(int, exitStatusLikeShell__pureZos_1107)(int status);
409 extern TNimType NTIseqLstringT__sM4lkSb7zS6F7OVMvW9cffQ_;
410 extern TNimType NTIrefindexdefect__RJnHOb9cQV3neNC9cDkRgMyw_;
411 extern TNimType NTIindexdefect__n6tGEPHKkh7E1AP9bj30WrQ_;
412 STRING_LITERAL(TM__yu6cxgKBBXbNsTkT9cyMd4g_2, "index out of bounds, the container is empty", 43);
413 STRING_LITERAL(TM__yu6cxgKBBXbNsTkT9cyMd4g_3, "index ", 6);
414 STRING_LITERAL(TM__yu6cxgKBBXbNsTkT9cyMd4g_4, " not in 0 .. ", 13);
415 STRING_LITERAL(TM__yu6cxgKBBXbNsTkT9cyMd4g_5, "\'\'", 2);
416 static NIM_CONST tySet_tyChar__nmiMWKVIe46vacnhAFrQvw TM__yu6cxgKBBXbNsTkT9cyMd4g_6 = {
417 0x00, 0x00, 0x00, 0x00, 0x20, 0xe8, 0xff, 0x27,
418 0xff, 0xff, 0xff, 0x87, 0xfe, 0xff, 0xff, 0x07,
419 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
420 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}
421 ;
422 STRING_LITERAL(TM__yu6cxgKBBXbNsTkT9cyMd4g_7, "\'", 1);
423 STRING_LITERAL(TM__yu6cxgKBBXbNsTkT9cyMd4g_8, "\'\"\'\"\'", 5);
424 STRING_LITERAL(TM__yu6cxgKBBXbNsTkT9cyMd4g_9, " ", 1);
425 STRING_LITERAL(TM__yu6cxgKBBXbNsTkT9cyMd4g_10, "/", 1);
426 STRING_LITERAL(TM__yu6cxgKBBXbNsTkT9cyMd4g_11, ".", 1);
427 extern TNimType NTIrefvalueerror__Ie1m0dv1ZHg72IgPRr1cDw_;
428 extern TNimType NTIvalueerror__yoNlBGx0D2tRizIdhQuENw_;
429 STRING_LITERAL(TM__yu6cxgKBBXbNsTkT9cyMd4g_12, "The specified root is not absolute: ", 36);
430 STRING_LITERAL(TM__yu6cxgKBBXbNsTkT9cyMd4g_13, "os.nim(1417, 21) `bufsize >= 0` ", 32);
431 extern TNimType NTIrefoserror__9clYsYwyjCqe2PFTuCI3Ubg_;
432 extern TNimType NTIoserror__BeJgrOdDsczOwEWOZbRfKA_;
433 STRING_LITERAL(TM__yu6cxgKBBXbNsTkT9cyMd4g_14, "Additional info: ", 17);
434 STRING_LITERAL(TM__yu6cxgKBBXbNsTkT9cyMd4g_15, "unknown OS error", 16);
435 static NIM_CONST tyTuple__1v9bKyksXWMsm0vNwmZ4EuQ TM__yu6cxgKBBXbNsTkT9cyMd4g_16 = {((NI) 0),
436 ((NI) -1)}
437 ;
438 STRING_LITERAL(TM__yu6cxgKBBXbNsTkT9cyMd4g_17, "..", 2);
439 STRING_LITERAL(TM__yu6cxgKBBXbNsTkT9cyMd4g_18, "HOME", 4);
440 static NIM_CONST tyArray__VR9bNthWayFgb5M9avIR8bkA TM__yu6cxgKBBXbNsTkT9cyMd4g_19 = {((int) 1),
441 ((int) 14),
442 ((int) 9),
443 ((int) -1)}
444 ;
445 STRING_LITERAL(TM__yu6cxgKBBXbNsTkT9cyMd4g_20, "PATH", 4);
446 extern TNimType NTIrefioerror__HMIVdYjdZYWskTmTQVo5BQ_;
447 extern TNimType NTIioerror__iLZrPn9anoh9ad1MmO0RczFw_;
448 STRING_LITERAL(TM__yu6cxgKBBXbNsTkT9cyMd4g_21, "Failed to create \'", 18);
449 STRING_LITERAL(TM__yu6cxgKBBXbNsTkT9cyMd4g_22, "(", 1);
450 STRING_LITERAL(TM__yu6cxgKBBXbNsTkT9cyMd4g_23, ", ", 2);
451 STRING_LITERAL(TM__yu6cxgKBBXbNsTkT9cyMd4g_24, "\"", 1);
452 STRING_LITERAL(TM__yu6cxgKBBXbNsTkT9cyMd4g_25, "\\a", 2);
453 STRING_LITERAL(TM__yu6cxgKBBXbNsTkT9cyMd4g_26, "\\b", 2);
454 STRING_LITERAL(TM__yu6cxgKBBXbNsTkT9cyMd4g_27, "\\t", 2);
455 STRING_LITERAL(TM__yu6cxgKBBXbNsTkT9cyMd4g_28, "\\n", 2);
456 STRING_LITERAL(TM__yu6cxgKBBXbNsTkT9cyMd4g_29, "\\v", 2);
457 STRING_LITERAL(TM__yu6cxgKBBXbNsTkT9cyMd4g_30, "\\f", 2);
458 STRING_LITERAL(TM__yu6cxgKBBXbNsTkT9cyMd4g_31, "\\r", 2);
459 STRING_LITERAL(TM__yu6cxgKBBXbNsTkT9cyMd4g_32, "\\e", 2);
460 STRING_LITERAL(TM__yu6cxgKBBXbNsTkT9cyMd4g_33, "\\\\", 2);
461 STRING_LITERAL(TM__yu6cxgKBBXbNsTkT9cyMd4g_34, "\\\'", 2);
462 STRING_LITERAL(TM__yu6cxgKBBXbNsTkT9cyMd4g_35, "\\\"", 2);
463 STRING_LITERAL(TM__yu6cxgKBBXbNsTkT9cyMd4g_36, "\\x", 2);
464 STRING_LITERAL(TM__yu6cxgKBBXbNsTkT9cyMd4g_37, "0123456789ABCDEF", 16);
465 STRING_LITERAL(TM__yu6cxgKBBXbNsTkT9cyMd4g_38, ",", 1);
466 STRING_LITERAL(TM__yu6cxgKBBXbNsTkT9cyMd4g_39, ")", 1);
467 N_LIB_PRIVATE NIM_CONST tyArray__nHXaesL0DJZHyVS07ARPRA ExeExts__pureZos_652 = {((NimStringDesc*) NIM_NIL)}
468 ;
469 STRING_LITERAL(TM__yu6cxgKBBXbNsTkT9cyMd4g_41, "os.nim(1851, 12) `card(copyFlagSymlink * options) == 1` There should be exactly one cfSymlink* in options", 105);
470 STRING_LITERAL(TM__yu6cxgKBBXbNsTkT9cyMd4g_44, "XDG_CONFIG_HOME", 15);
471 STRING_LITERAL(TM__yu6cxgKBBXbNsTkT9cyMd4g_45, ".config", 7);
472 N_LIB_PRIVATE TNimType NTIfilepermission__uTVeDpjCH6aWw9c74YkAskA_;
473 STRING_LITERAL(TM__yu6cxgKBBXbNsTkT9cyMd4g_50, "{", 1);
474 STRING_LITERAL(TM__yu6cxgKBBXbNsTkT9cyMd4g_51, "}", 1);
475 extern NCSTRING* environ;
476 extern int cmdCount;
477 extern NCSTRING* cmdLine;
478 extern tyObject_GcHeap__1TRH1TZMaVZTnLNcIHuNFQ gch__system_5217;
479 extern TSafePoint* excHandler__system_2565;
480 extern TSafePoint* excHandler__system_2565;
481 extern TSafePoint* excHandler__system_2565;
482 extern TSafePoint* excHandler__system_2565;
483 extern Exception* currException__system_2566;
484 extern Exception* currException__system_2566;
N_INLINE(NI,minuspercent___system_716)485 static N_INLINE(NI, minuspercent___system_716)(NI x, NI y) {
486 	NI result;
487 	result = (NI)0;
488 	result = ((NI) ((NU)((NU32)(((NU) (x))) - (NU32)(((NU) (y))))));
489 	return result;
490 }
N_INLINE(NIM_BOOL,ltpercent___system_1005)491 static N_INLINE(NIM_BOOL, ltpercent___system_1005)(NI x, NI y) {
492 	NIM_BOOL result;
493 	result = (NIM_BOOL)0;
494 	result = ((NU32)(((NU) (x))) < (NU32)(((NU) (y))));
495 	return result;
496 }
N_INLINE(void,rtlAddZCT__system_5313)497 static N_INLINE(void, rtlAddZCT__system_5313)(tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g* c) {
498 	addZCT__system_5264((&gch__system_5217.zct), c);
499 }
N_INLINE(void,decRef__system_5315)500 static N_INLINE(void, decRef__system_5315)(tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g* c) {
501 	(*c).refcount = minuspercent___system_716((*c).refcount, ((NI) 8));
502 	{
503 		NIM_BOOL T3_;
504 		T3_ = (NIM_BOOL)0;
505 		T3_ = ltpercent___system_1005((*c).refcount, ((NI) 8));
506 		if (!T3_) goto LA4_;
507 		rtlAddZCT__system_5313(c);
508 	}
509 	LA4_: ;
510 }
N_INLINE(tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g *,usrToCell__system_5270)511 static N_INLINE(tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g*, usrToCell__system_5270)(void* usr) {
512 	tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g* result;
513 	NI T1_;
514 	result = (tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g*)0;
515 	T1_ = (NI)0;
516 	T1_ = minuspercent___system_716(((NI) (ptrdiff_t) (usr)), ((NI) 8));
517 	result = ((tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g*) (T1_));
518 	return result;
519 }
N_INLINE(void,nimGCunrefNoCycle)520 static N_INLINE(void, nimGCunrefNoCycle)(void* p) {
521 	tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g* T1_;
522 	T1_ = (tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g*)0;
523 	T1_ = usrToCell__system_5270(p);
524 	decRef__system_5315(T1_);
525 }
N_NIMCALL(tySequence__sM4lkSb7zS6F7OVMvW9cffQ *,nosparseCmdLine)526 N_LIB_PRIVATE N_NIMCALL(tySequence__sM4lkSb7zS6F7OVMvW9cffQ*, nosparseCmdLine)(NimStringDesc* c) {
527 	tySequence__sM4lkSb7zS6F7OVMvW9cffQ* result;
528 	NI i;
529 	NimStringDesc* a;
530 	result = NIM_NIL;
531 	result = NIM_NIL;
532 	i = ((NI) 0);
533 	a = ((NimStringDesc*) NIM_NIL);
534 	{
535 		while (1) {
536 			NI T25_;
537 			NimStringDesc* T26_;
538 			a = setLengthStr(a, ((NI) 0));
539 			{
540 				while (1) {
541 					NIM_BOOL T5_;
542 					T5_ = (NIM_BOOL)0;
543 					T5_ = (i < (c ? c->Sup.len : 0));
544 					if (!(T5_)) goto LA6_;
545 					T5_ = (((NU8)(c->data[i])) == ((NU8)(32)) || ((NU8)(c->data[i])) == ((NU8)(9)) || ((NU8)(c->data[i])) == ((NU8)(10)) || ((NU8)(c->data[i])) == ((NU8)(13)));
546 					LA6_: ;
547 					if (!T5_) goto LA4;
548 					i += ((NI) 1);
549 				} LA4: ;
550 			}
551 			{
552 				if (!((c ? c->Sup.len : 0) <= i)) goto LA9_;
553 				goto LA1;
554 			}
555 			LA9_: ;
556 			switch (((NU8)(c->data[i]))) {
557 			case 39:
558 			case 34:
559 			{
560 				NIM_CHAR delim;
561 				delim = c->data[i];
562 				i += ((NI) 1);
563 				{
564 					while (1) {
565 						NIM_BOOL T14_;
566 						T14_ = (NIM_BOOL)0;
567 						T14_ = (i < (c ? c->Sup.len : 0));
568 						if (!(T14_)) goto LA15_;
569 						T14_ = !(((NU8)(c->data[i]) == (NU8)(delim)));
570 						LA15_: ;
571 						if (!T14_) goto LA13;
572 						a = addChar(a, c->data[i]);
573 						i += ((NI) 1);
574 					} LA13: ;
575 				}
576 				{
577 					if (!(i < (c ? c->Sup.len : 0))) goto LA18_;
578 					i += ((NI) 1);
579 				}
580 				LA18_: ;
581 			}
582 			break;
583 			default:
584 			{
585 				{
586 					while (1) {
587 						NIM_BOOL T23_;
588 						T23_ = (NIM_BOOL)0;
589 						T23_ = (i < (c ? c->Sup.len : 0));
590 						if (!(T23_)) goto LA24_;
591 						T23_ = ((NU8)(32) < (NU8)(c->data[i]));
592 						LA24_: ;
593 						if (!T23_) goto LA22;
594 						a = addChar(a, c->data[i]);
595 						i += ((NI) 1);
596 					} LA22: ;
597 				}
598 			}
599 			break;
600 			}
601 			result = (tySequence__sM4lkSb7zS6F7OVMvW9cffQ*) incrSeqV3((TGenericSeq*)(result), (&NTIseqLstringT__sM4lkSb7zS6F7OVMvW9cffQ_));
602 			T25_ = result->Sup.len++;
603 			T26_ = NIM_NIL;
604 			T26_ = result->data[T25_]; result->data[T25_] = copyStringRC1(a);
605 			if (T26_) nimGCunrefNoCycle(T26_);
606 		}
607 	} LA1: ;
608 	return result;
609 }
N_NIMCALL(NI,paramCount__pureZos_1541)610 N_LIB_PRIVATE N_NIMCALL(NI, paramCount__pureZos_1541)(void) {
611 	NI result;
612 	result = (NI)0;
613 	result = ((NI) ((NI32)(cmdCount - ((NI32) 1))));
614 	return result;
615 }
N_INLINE(void,nimCopyMem)616 static N_INLINE(void, nimCopyMem)(void* dest, void* source, NI size) {
617 	void* T1_;
618 	T1_ = (void*)0;
619 	T1_ = memcpy(dest, source, ((size_t) (size)));
620 }
N_INLINE(void,copyMem__system_1727)621 static N_INLINE(void, copyMem__system_1727)(void* dest, void* source, NI size) {
622 	nimCopyMem(dest, source, size);
623 }
N_INLINE(void,appendString)624 static N_INLINE(void, appendString)(NimStringDesc* dest, NimStringDesc* src) {
625 	{
626 		if (!!((src == ((NimStringDesc*) NIM_NIL)))) goto LA3_;
627 		copyMem__system_1727(((void*) ((&(*dest).data[(*dest).Sup.len]))), ((void*) ((*src).data)), ((NI) ((NI)((*src).Sup.len + ((NI) 1)))));
628 		(*dest).Sup.len += (*src).Sup.len;
629 	}
630 	LA3_: ;
631 }
N_INLINE(NI,pluspercent___system_696)632 static N_INLINE(NI, pluspercent___system_696)(NI x, NI y) {
633 	NI result;
634 	result = (NI)0;
635 	result = ((NI) ((NU)((NU32)(((NU) (x))) + (NU32)(((NU) (y))))));
636 	return result;
637 }
N_INLINE(void,incRef__system_5308)638 static N_INLINE(void, incRef__system_5308)(tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g* c) {
639 	(*c).refcount = pluspercent___system_696((*c).refcount, ((NI) 8));
640 }
N_INLINE(void,asgnRef)641 static N_INLINE(void, asgnRef)(void** dest, void* src) {
642 	{
643 		tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g* T5_;
644 		if (!!((src == NIM_NIL))) goto LA3_;
645 		T5_ = (tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g*)0;
646 		T5_ = usrToCell__system_5270(src);
647 		incRef__system_5308(T5_);
648 	}
649 	LA3_: ;
650 	{
651 		tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g* T10_;
652 		if (!!(((*dest) == NIM_NIL))) goto LA8_;
653 		T10_ = (tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g*)0;
654 		T10_ = usrToCell__system_5270((*dest));
655 		decRef__system_5315(T10_);
656 	}
657 	LA8_: ;
658 	(*dest) = src;
659 }
N_NIMCALL(NimStringDesc *,paramStr__pureZos_1535)660 N_LIB_PRIVATE N_NIMCALL(NimStringDesc*, paramStr__pureZos_1535)(NI i) {
661 	NimStringDesc* result;
662 	result = NIM_NIL;
663 	{
664 		NIM_BOOL T3_;
665 		T3_ = (NIM_BOOL)0;
666 		T3_ = (i < ((NI) (cmdCount)));
667 		if (!(T3_)) goto LA4_;
668 		T3_ = (((NI) 0) <= i);
669 		LA4_: ;
670 		if (!T3_) goto LA5_;
671 		result = cstrToNimstr(cmdLine[i]);
672 	}
673 	goto LA1_;
674 	LA5_: ;
675 	{
676 		tyObject_IndexDefect__n6tGEPHKkh7E1AP9bj30WrQ* T8_;
677 		T8_ = NIM_NIL;
678 		T8_ = (tyObject_IndexDefect__n6tGEPHKkh7E1AP9bj30WrQ*) newObj((&NTIrefindexdefect__RJnHOb9cQV3neNC9cDkRgMyw_), sizeof(tyObject_IndexDefect__n6tGEPHKkh7E1AP9bj30WrQ));
679 		(*T8_).Sup.Sup.Sup.m_type = (&NTIindexdefect__n6tGEPHKkh7E1AP9bj30WrQ_);
680 		(*T8_).Sup.Sup.name = "IndexDefect";
681 		{
682 			NimStringDesc* T13_;
683 			if (!((NI32)(cmdCount - ((NI32) 1)) < ((NI32) 0))) goto LA11_;
684 			T13_ = NIM_NIL;
685 			T13_ = (*T8_).Sup.Sup.message; (*T8_).Sup.Sup.message = copyStringRC1(((NimStringDesc*) &TM__yu6cxgKBBXbNsTkT9cyMd4g_2));
686 			if (T13_) nimGCunrefNoCycle(T13_);
687 		}
688 		goto LA9_;
689 		LA11_: ;
690 		{
691 			NimStringDesc* T15_;
692 			NimStringDesc* T16_;
693 			NimStringDesc* T17_;
694 			T15_ = NIM_NIL;
695 			T16_ = NIM_NIL;
696 			T16_ = dollar___systemZdollars_3(i);
697 			T17_ = NIM_NIL;
698 			T17_ = dollar___systemZdollars_3(((NI) ((NI32)(cmdCount - ((NI32) 1)))));
699 			T15_ = rawNewString((T16_ ? T16_->Sup.len : 0) + (T17_ ? T17_->Sup.len : 0) + 19);
700 appendString(T15_, ((NimStringDesc*) &TM__yu6cxgKBBXbNsTkT9cyMd4g_3));
701 appendString(T15_, T16_);
702 appendString(T15_, ((NimStringDesc*) &TM__yu6cxgKBBXbNsTkT9cyMd4g_4));
703 appendString(T15_, T17_);
704 			asgnRef((void**) (&(*T8_).Sup.Sup.message), T15_);
705 		}
706 		LA9_: ;
707 		asgnRef((void**) (&(*T8_).Sup.Sup.parent), ((Exception*) NIM_NIL));
708 		raiseExceptionEx((Exception*)T8_, "IndexDefect", "paramStr", "os.nim", 2965);
709 	}
710 	LA1_: ;
711 	return result;
712 }
N_NIMCALL(NimStringDesc *,nospquoteShellPosix)713 N_LIB_PRIVATE N_NIMCALL(NimStringDesc*, nospquoteShellPosix)(NimStringDesc* s) {
714 	NimStringDesc* result;
715 	result = NIM_NIL;
716 	{
717 		if (!((s ? s->Sup.len : 0) == ((NI) 0))) goto LA3_;
718 		result = copyString(((NimStringDesc*) &TM__yu6cxgKBBXbNsTkT9cyMd4g_5));
719 	}
720 	goto LA1_;
721 	LA3_: ;
722 	{
723 		NIM_BOOL T6_;
724 		T6_ = (NIM_BOOL)0;
725 		T6_ = allCharsInSet__pureZstrutils_1341(s, TM__yu6cxgKBBXbNsTkT9cyMd4g_6);
726 		if (!T6_) goto LA7_;
727 		result = copyString(s);
728 	}
729 	goto LA1_;
730 	LA7_: ;
731 	{
732 		NimStringDesc* T10_;
733 		NimStringDesc* T11_;
734 		T10_ = NIM_NIL;
735 		T11_ = NIM_NIL;
736 		T11_ = nsuReplaceStr(s, ((NimStringDesc*) &TM__yu6cxgKBBXbNsTkT9cyMd4g_7), ((NimStringDesc*) &TM__yu6cxgKBBXbNsTkT9cyMd4g_8));
737 		T10_ = rawNewString((T11_ ? T11_->Sup.len : 0) + 2);
738 appendString(T10_, ((NimStringDesc*) &TM__yu6cxgKBBXbNsTkT9cyMd4g_7));
739 appendString(T10_, T11_);
740 appendString(T10_, ((NimStringDesc*) &TM__yu6cxgKBBXbNsTkT9cyMd4g_7));
741 		result = T10_;
742 	}
743 	LA1_: ;
744 	return result;
745 }
N_NIMCALL(NimStringDesc *,nospquoteShell)746 N_LIB_PRIVATE N_NIMCALL(NimStringDesc*, nospquoteShell)(NimStringDesc* s) {
747 	NimStringDesc* result;
748 	result = NIM_NIL;
749 	result = nospquoteShellPosix(s);
750 	return result;
751 }
N_NIMCALL(NimStringDesc *,nosunixToNativePath)752 N_LIB_PRIVATE N_NIMCALL(NimStringDesc*, nosunixToNativePath)(NimStringDesc* path, NimStringDesc* drive) {
753 	NimStringDesc* result;
754 	result = NIM_NIL;
755 	result = copyString(path);
756 	return result;
757 }
N_NIMCALL(NimStringDesc *,quoteShellCommand__pureZos_610)758 N_LIB_PRIVATE N_NIMCALL(NimStringDesc*, quoteShellCommand__pureZos_610)(NimStringDesc** args, NI argsLen_0) {
759 	NimStringDesc* result;
760 	result = NIM_NIL;
761 	result = ((NimStringDesc*) NIM_NIL);
762 	{
763 		NI i;
764 		NI colontmp_;
765 		NI i_2;
766 		i = (NI)0;
767 		colontmp_ = (NI)0;
768 		colontmp_ = argsLen_0;
769 		i_2 = ((NI) 0);
770 		{
771 			while (1) {
772 				NimStringDesc* T8_;
773 				if (!(i_2 < colontmp_)) goto LA3;
774 				i = i_2;
775 				{
776 					if (!(((NI) 0) < i)) goto LA6_;
777 					result = resizeString(result, 1);
778 appendString(result, ((NimStringDesc*) &TM__yu6cxgKBBXbNsTkT9cyMd4g_9));
779 				}
780 				LA6_: ;
781 				T8_ = NIM_NIL;
782 				T8_ = nospquoteShell(args[i]);
783 				result = resizeString(result, (T8_ ? T8_->Sup.len : 0) + 0);
784 appendString(result, T8_);
785 				i_2 += ((NI) 1);
786 			} LA3: ;
787 		}
788 	}
789 	return result;
790 }
N_INLINE(NIM_CHAR,X5BX5D___system_7328)791 static N_INLINE(NIM_CHAR, X5BX5D___system_7328)(NimStringDesc* s, NI i) {
792 	NIM_CHAR result;
793 	result = (NIM_CHAR)0;
794 	result = s->data[(NI)((s ? s->Sup.len : 0) - i)];
795 	return result;
796 }
N_INLINE(NIM_CHAR *,X5BX5D___system_7361)797 static N_INLINE(NIM_CHAR*, X5BX5D___system_7361)(NimStringDesc** s, NI i) {
798 	NIM_CHAR* result;
799 	result = (NIM_CHAR*)0;
800 	result = (&(*s)->data[(NI)(((*s) ? (*s)->Sup.len : 0) - i)]);
801 	return result;
802 }
N_NIMCALL(void,normalizePathEnd__pureZos_51)803 N_LIB_PRIVATE N_NIMCALL(void, normalizePathEnd__pureZos_51)(NimStringDesc** path, NIM_BOOL trailingSep) {
804 	NI i;
805 {	{
806 		if (!(((*path) ? (*path)->Sup.len : 0) == ((NI) 0))) goto LA3_;
807 		goto BeforeRet_;
808 	}
809 	LA3_: ;
810 	i = ((*path) ? (*path)->Sup.len : 0);
811 	{
812 		while (1) {
813 			if (!(((NI) 1) <= i)) goto LA6;
814 			{
815 				if (!(((NU8)((*path)->data[(NI)(i - ((NI) 1))])) == ((NU8)(47)) || ((NU8)((*path)->data[(NI)(i - ((NI) 1))])) == ((NU8)(47)))) goto LA9_;
816 				i -= ((NI) 1);
817 			}
818 			goto LA7_;
819 			LA9_: ;
820 			{
821 				NIM_BOOL T12_;
822 				NIM_BOOL T13_;
823 				T12_ = (NIM_BOOL)0;
824 				T13_ = (NIM_BOOL)0;
825 				T13_ = ((NU8)((*path)->data[(NI)(i - ((NI) 1))]) == (NU8)(46));
826 				if (!(T13_)) goto LA14_;
827 				T13_ = (((NI) 2) <= i);
828 				LA14_: ;
829 				T12_ = T13_;
830 				if (!(T12_)) goto LA15_;
831 				T12_ = (((NU8)((*path)->data[(NI)(i - ((NI) 2))])) == ((NU8)(47)) || ((NU8)((*path)->data[(NI)(i - ((NI) 2))])) == ((NU8)(47)));
832 				LA15_: ;
833 				if (!T12_) goto LA16_;
834 				i -= ((NI) 1);
835 			}
836 			goto LA7_;
837 			LA16_: ;
838 			{
839 				goto LA5;
840 			}
841 			LA7_: ;
842 		} LA6: ;
843 	} LA5: ;
844 	{
845 		if (!trailingSep) goto LA21_;
846 		unsureAsgnRef((void**) (&(*path)), setLengthStr((*path), ((NI) (i))));
847 		unsureAsgnRef((void**) (&(*path)), addChar((*path), 47));
848 	}
849 	goto LA19_;
850 	LA21_: ;
851 	{
852 		if (!(((NI) 0) < i)) goto LA24_;
853 		unsureAsgnRef((void**) (&(*path)), setLengthStr((*path), ((NI) (i))));
854 	}
855 	goto LA19_;
856 	LA24_: ;
857 	{
858 		unsureAsgnRef((void**) (&(*path)), copyString(((NimStringDesc*) &TM__yu6cxgKBBXbNsTkT9cyMd4g_10)));
859 	}
860 	LA19_: ;
861 	}BeforeRet_: ;
862 }
N_NIMCALL(void,joinPathImpl__pureZos_82)863 N_LIB_PRIVATE N_NIMCALL(void, joinPathImpl__pureZos_82)(NimStringDesc** result, NI* state, NimStringDesc* tail) {
864 	NIM_BOOL trailingSep;
865 	NIM_BOOL T1_;
866 	NIM_BOOL T2_;
867 	NIM_CHAR T4_;
868 	NIM_BOOL T6_;
869 	NIM_BOOL T8_;
870 	NIM_CHAR* T10_;
871 	T1_ = (NIM_BOOL)0;
872 	T2_ = (NIM_BOOL)0;
873 	T2_ = (((NI) 0) < (tail ? tail->Sup.len : 0));
874 	if (!(T2_)) goto LA3_;
875 	T4_ = (NIM_CHAR)0;
876 	T4_ = X5BX5D___system_7328(tail, ((NI) 1));
877 	T2_ = (((NU8)(T4_)) == ((NU8)(47)) || ((NU8)(T4_)) == ((NU8)(47)));
878 	LA3_: ;
879 	T1_ = T2_;
880 	if (T1_) goto LA5_;
881 	T6_ = (NIM_BOOL)0;
882 	T6_ = ((tail ? tail->Sup.len : 0) == ((NI) 0));
883 	if (!(T6_)) goto LA7_;
884 	T8_ = (NIM_BOOL)0;
885 	T8_ = (((NI) 0) < ((*result) ? (*result)->Sup.len : 0));
886 	if (!(T8_)) goto LA9_;
887 	T10_ = (NIM_CHAR*)0;
888 	T10_ = X5BX5D___system_7361(result, ((NI) 1));
889 	T8_ = (((NU8)((*T10_))) == ((NU8)(47)) || ((NU8)((*T10_))) == ((NU8)(47)));
890 	LA9_: ;
891 	T6_ = T8_;
892 	LA7_: ;
893 	T1_ = T6_;
894 	LA5_: ;
895 	trailingSep = T1_;
896 	normalizePathEnd__pureZos_51(result, NIM_FALSE);
897 	addNormalizePath__pureZpathnorm_71(tail, result, state, 47);
898 	normalizePathEnd__pureZos_51(result, trailingSep);
899 }
N_NIMCALL(NimStringDesc *,nosjoinPath)900 N_LIB_PRIVATE N_NIMCALL(NimStringDesc*, nosjoinPath)(NimStringDesc* head, NimStringDesc* tail) {
901 	NimStringDesc* result;
902 	NI state;
903 	result = NIM_NIL;
904 	result = rawNewString(((NI) ((NI)((head ? head->Sup.len : 0) + (tail ? tail->Sup.len : 0)))));
905 	state = ((NI) 0);
906 	joinPathImpl__pureZos_82((&result), (&state), head);
907 	joinPathImpl__pureZos_82((&result), (&state), tail);
908 	return result;
909 }
N_NIMCALL(NimStringDesc *,normalizePathEnd__pureZos_71)910 N_LIB_PRIVATE N_NIMCALL(NimStringDesc*, normalizePathEnd__pureZos_71)(NimStringDesc* path, NIM_BOOL trailingSep) {
911 	NimStringDesc* result;
912 	result = NIM_NIL;
913 	result = copyString(path);
914 	normalizePathEnd__pureZos_51((&result), trailingSep);
915 	return result;
916 }
N_NIMCALL(void,nossplitPath)917 N_LIB_PRIVATE N_NIMCALL(void, nossplitPath)(NimStringDesc* path, tyTuple__UV3llMMYFckfui8YMBuUZA* Result) {
918 	NI sepPos;
919 	unsureAsgnRef((void**)&(*Result).Field0, NIM_NIL);
920 	unsureAsgnRef((void**)&(*Result).Field1, NIM_NIL);
921 	sepPos = ((NI) -1);
922 	{
923 		NI i;
924 		NI colontmp_;
925 		NI res;
926 		i = (NI)0;
927 		colontmp_ = (NI)0;
928 		colontmp_ = (NI)((path ? path->Sup.len : 0) - ((NI) 1));
929 		res = colontmp_;
930 		{
931 			while (1) {
932 				if (!(((NI) 0) <= res)) goto LA3;
933 				i = res;
934 				{
935 					if (!(((NU8)(path->data[i])) == ((NU8)(47)) || ((NU8)(path->data[i])) == ((NU8)(47)))) goto LA6_;
936 					sepPos = i;
937 					goto LA1;
938 				}
939 				LA6_: ;
940 				res -= ((NI) 1);
941 			} LA3: ;
942 		}
943 	} LA1: ;
944 	{
945 		NI T12_;
946 		if (!(((NI) 0) <= sepPos)) goto LA10_;
947 		T12_ = (NI)0;
948 		{
949 			NIM_BOOL T15_;
950 			T15_ = (NIM_BOOL)0;
951 			T15_ = NIM_LIKELY((((NI) 1) <= sepPos));
952 			if (!T15_) goto LA16_;
953 			T12_ = (NI)(sepPos - ((NI) 1));
954 		}
955 		goto LA13_;
956 		LA16_: ;
957 		{
958 			T12_ = ((NI) 0);
959 		}
960 		LA13_: ;
961 		unsureAsgnRef((void**) (&(*Result).Field0), substr__system_7743(path, ((NI) 0), T12_));
962 		unsureAsgnRef((void**) (&(*Result).Field1), substr__system_7755(path, (NI)(sepPos + ((NI) 1))));
963 	}
964 	goto LA8_;
965 	LA10_: ;
966 	{
967 		unsureAsgnRef((void**) (&(*Result).Field0), ((NimStringDesc*) NIM_NIL));
968 		unsureAsgnRef((void**) (&(*Result).Field1), copyString(path));
969 	}
970 	LA8_: ;
971 }
N_INLINE(void,nimSetMem__systemZmemory_7)972 static N_INLINE(void, nimSetMem__systemZmemory_7)(void* a, int v, NI size) {
973 	void* T1_;
974 	T1_ = (void*)0;
975 	T1_ = memset(a, v, ((size_t) (size)));
976 }
N_INLINE(void,nimZeroMem)977 static N_INLINE(void, nimZeroMem)(void* p, NI size) {
978 	nimSetMem__systemZmemory_7(p, ((int) 0), size);
979 }
N_NIMCALL(NimStringDesc *,nosextractFilename)980 N_LIB_PRIVATE N_NIMCALL(NimStringDesc*, nosextractFilename)(NimStringDesc* path) {
981 	NimStringDesc* result;
982 	result = NIM_NIL;
983 	{
984 		NIM_BOOL T3_;
985 		T3_ = (NIM_BOOL)0;
986 		T3_ = ((path ? path->Sup.len : 0) == ((NI) 0));
987 		if (T3_) goto LA4_;
988 		T3_ = (((NU8)(path->data[(NI)((path ? path->Sup.len : 0) - ((NI) 1))])) == ((NU8)(47)) || ((NU8)(path->data[(NI)((path ? path->Sup.len : 0) - ((NI) 1))])) == ((NU8)(47)));
989 		LA4_: ;
990 		if (!T3_) goto LA5_;
991 		result = ((NimStringDesc*) NIM_NIL);
992 	}
993 	goto LA1_;
994 	LA5_: ;
995 	{
996 		tyTuple__UV3llMMYFckfui8YMBuUZA T8_;
997 		nimZeroMem((void*)(&T8_), sizeof(tyTuple__UV3llMMYFckfui8YMBuUZA));
998 		nossplitPath(path, (&T8_));
999 		result = copyString(T8_.Field1);
1000 	}
1001 	LA1_: ;
1002 	return result;
1003 }
N_NIMCALL(NimStringDesc *,noslastPathPart)1004 N_LIB_PRIVATE N_NIMCALL(NimStringDesc*, noslastPathPart)(NimStringDesc* path) {
1005 	NimStringDesc* result;
1006 	NimStringDesc* path_2;
1007 	result = NIM_NIL;
1008 	path_2 = normalizePathEnd__pureZos_71(path, NIM_FALSE);
1009 	result = nosextractFilename(path_2);
1010 	return result;
1011 }
N_NIMCALL(NI,noscmpPaths)1012 N_LIB_PRIVATE N_NIMCALL(NI, noscmpPaths)(NimStringDesc* pathA, NimStringDesc* pathB) {
1013 	NI result;
1014 	NimStringDesc* a;
1015 	NimStringDesc* b;
1016 	result = (NI)0;
1017 	a = normalizePath__pureZpathnorm_127(pathA, 47);
1018 	b = normalizePath__pureZpathnorm_127(pathB, 47);
1019 	{
1020 		if (!NIM_TRUE) goto LA3_;
1021 		result = cmp__system_1549(a, b);
1022 	}
1023 	goto LA1_;
1024 	LA3_: ;
1025 	{
1026 		result = nsuCmpIgnoreCase(a, b);
1027 	}
1028 	LA1_: ;
1029 	return result;
1030 }
N_NIMCALL(void,nossplitFile)1031 N_LIB_PRIVATE N_NIMCALL(void, nossplitFile)(NimStringDesc* path, tyTuple__7q7q3E6Oj24ZNVJb9aonhAg* Result) {
1032 	NI namePos;
1033 	NI dotPos;
1034 	unsureAsgnRef((void**)&(*Result).Field0, NIM_NIL);
1035 	unsureAsgnRef((void**)&(*Result).Field1, NIM_NIL);
1036 	unsureAsgnRef((void**)&(*Result).Field2, NIM_NIL);
1037 	namePos = ((NI) 0);
1038 	dotPos = ((NI) 0);
1039 	{
1040 		NI i;
1041 		NI colontmp_;
1042 		NI res;
1043 		i = (NI)0;
1044 		colontmp_ = (NI)0;
1045 		colontmp_ = (NI)((path ? path->Sup.len : 0) - ((NI) 1));
1046 		res = colontmp_;
1047 		{
1048 			while (1) {
1049 				if (!(((NI) 0) <= res)) goto LA3;
1050 				i = res;
1051 				{
1052 					NIM_BOOL T6_;
1053 					T6_ = (NIM_BOOL)0;
1054 					T6_ = (((NU8)(path->data[i])) == ((NU8)(47)) || ((NU8)(path->data[i])) == ((NU8)(47)));
1055 					if (T6_) goto LA7_;
1056 					T6_ = (i == ((NI) 0));
1057 					LA7_: ;
1058 					if (!T6_) goto LA8_;
1059 					{
1060 						NI T14_;
1061 						if (!(((NU8)(path->data[i])) == ((NU8)(47)) || ((NU8)(path->data[i])) == ((NU8)(47)))) goto LA12_;
1062 						T14_ = (NI)0;
1063 						{
1064 							NIM_BOOL T17_;
1065 							T17_ = (NIM_BOOL)0;
1066 							T17_ = NIM_LIKELY((((NI) 1) <= i));
1067 							if (!T17_) goto LA18_;
1068 							T14_ = (NI)(i - ((NI) 1));
1069 						}
1070 						goto LA15_;
1071 						LA18_: ;
1072 						{
1073 							T14_ = ((NI) 0);
1074 						}
1075 						LA15_: ;
1076 						unsureAsgnRef((void**) (&(*Result).Field0), substr__system_7743(path, ((NI) 0), T14_));
1077 						namePos = (NI)(i + ((NI) 1));
1078 					}
1079 					LA12_: ;
1080 					{
1081 						if (!(i < dotPos)) goto LA23_;
1082 						unsureAsgnRef((void**) (&(*Result).Field1), substr__system_7743(path, namePos, (NI)(dotPos - ((NI) 1))));
1083 						unsureAsgnRef((void**) (&(*Result).Field2), substr__system_7755(path, dotPos));
1084 					}
1085 					goto LA21_;
1086 					LA23_: ;
1087 					{
1088 						unsureAsgnRef((void**) (&(*Result).Field1), substr__system_7755(path, namePos));
1089 					}
1090 					LA21_: ;
1091 					goto LA1;
1092 				}
1093 				goto LA4_;
1094 				LA8_: ;
1095 				{
1096 					NIM_BOOL T27_;
1097 					NIM_BOOL T28_;
1098 					NIM_BOOL T29_;
1099 					NIM_BOOL T30_;
1100 					NIM_BOOL T31_;
1101 					T27_ = (NIM_BOOL)0;
1102 					T28_ = (NIM_BOOL)0;
1103 					T29_ = (NIM_BOOL)0;
1104 					T30_ = (NIM_BOOL)0;
1105 					T31_ = (NIM_BOOL)0;
1106 					T31_ = ((NU8)(path->data[i]) == (NU8)(46));
1107 					if (!(T31_)) goto LA32_;
1108 					T31_ = (((NI) 0) < i);
1109 					LA32_: ;
1110 					T30_ = T31_;
1111 					if (!(T30_)) goto LA33_;
1112 					T30_ = (i < (NI)((path ? path->Sup.len : 0) - ((NI) 1)));
1113 					LA33_: ;
1114 					T29_ = T30_;
1115 					if (!(T29_)) goto LA34_;
1116 					T29_ = !((((NU8)(path->data[(NI)(i - ((NI) 1))])) == ((NU8)(47)) || ((NU8)(path->data[(NI)(i - ((NI) 1))])) == ((NU8)(47))));
1117 					LA34_: ;
1118 					T28_ = T29_;
1119 					if (!(T28_)) goto LA35_;
1120 					T28_ = !(((NU8)(path->data[(NI)(i + ((NI) 1))]) == (NU8)(46)));
1121 					LA35_: ;
1122 					T27_ = T28_;
1123 					if (!(T27_)) goto LA36_;
1124 					T27_ = (dotPos == ((NI) 0));
1125 					LA36_: ;
1126 					if (!T27_) goto LA37_;
1127 					dotPos = i;
1128 				}
1129 				goto LA4_;
1130 				LA37_: ;
1131 				LA4_: ;
1132 				res -= ((NI) 1);
1133 			} LA3: ;
1134 		}
1135 	} LA1: ;
1136 }
N_INLINE(int,nimCmpMem)1137 static N_INLINE(int, nimCmpMem)(void* a, void* b, NI size) {
1138 	int result;
1139 	result = (int)0;
1140 	result = memcmp(a, b, ((size_t) (size)));
1141 	return result;
1142 }
N_INLINE(NIM_BOOL,equalMem__system_1735)1143 static N_INLINE(NIM_BOOL, equalMem__system_1735)(void* a, void* b, NI size) {
1144 	NIM_BOOL result;
1145 	int T1_;
1146 	result = (NIM_BOOL)0;
1147 	T1_ = (int)0;
1148 	T1_ = nimCmpMem(a, b, size);
1149 	result = (T1_ == ((NI32) 0));
1150 	return result;
1151 }
N_INLINE(NIM_BOOL,eqStrings)1152 static N_INLINE(NIM_BOOL, eqStrings)(NimStringDesc* a, NimStringDesc* b) {
1153 	NIM_BOOL result;
1154 	NI alen;
1155 	NI blen;
1156 {	result = (NIM_BOOL)0;
1157 	alen = (a ? a->Sup.len : 0);
1158 	blen = (b ? b->Sup.len : 0);
1159 	{
1160 		if (!(alen == blen)) goto LA3_;
1161 		{
1162 			if (!(alen == ((NI) 0))) goto LA7_;
1163 			result = NIM_TRUE;
1164 			goto BeforeRet_;
1165 		}
1166 		LA7_: ;
1167 		result = equalMem__system_1735(((void*) ((&a->data[((NI) 0)]))), ((void*) ((&b->data[((NI) 0)]))), ((NI) (alen)));
1168 		goto BeforeRet_;
1169 	}
1170 	LA3_: ;
1171 	}BeforeRet_: ;
1172 	return result;
1173 }
N_NIMCALL(void,nosnormalizePath)1174 N_LIB_PRIVATE N_NIMCALL(void, nosnormalizePath)(NimStringDesc** path) {
1175 	unsureAsgnRef((void**) (&(*path)), normalizePath__pureZpathnorm_127((*path), 47));
1176 }
N_INLINE(void,normalizePathAux__pureZos_31)1177 static N_INLINE(void, normalizePathAux__pureZos_31)(NimStringDesc** path) {
1178 	nosnormalizePath(path);
1179 }
N_NIMCALL(NIM_BOOL,nosisAbsolute)1180 N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, nosisAbsolute)(NimStringDesc* path) {
1181 	NIM_BOOL result;
1182 {	result = (NIM_BOOL)0;
1183 	{
1184 		if (!((path ? path->Sup.len : 0) == ((NI) 0))) goto LA3_;
1185 		result = NIM_FALSE;
1186 		goto BeforeRet_;
1187 	}
1188 	LA3_: ;
1189 	result = ((NU8)(path->data[((NI) 0)]) == (NU8)(47));
1190 	}BeforeRet_: ;
1191 	return result;
1192 }
N_NIMCALL(NimStringDesc *,absolutePath__pureZos_742)1193 N_LIB_PRIVATE N_NIMCALL(NimStringDesc*, absolutePath__pureZos_742)(NimStringDesc* path, NimStringDesc* root) {
1194 	NimStringDesc* result;
1195 	result = NIM_NIL;
1196 	{
1197 		NIM_BOOL T3_;
1198 		T3_ = (NIM_BOOL)0;
1199 		T3_ = nosisAbsolute(path);
1200 		if (!T3_) goto LA4_;
1201 		result = copyString(path);
1202 	}
1203 	goto LA1_;
1204 	LA4_: ;
1205 	{
1206 		{
1207 			NIM_BOOL T9_;
1208 			tyObject_ValueError__yoNlBGx0D2tRizIdhQuENw* T12_;
1209 			NimStringDesc* T13_;
1210 			T9_ = (NIM_BOOL)0;
1211 			T9_ = nosisAbsolute(root);
1212 			if (!!(T9_)) goto LA10_;
1213 			T12_ = NIM_NIL;
1214 			T12_ = (tyObject_ValueError__yoNlBGx0D2tRizIdhQuENw*) newObj((&NTIrefvalueerror__Ie1m0dv1ZHg72IgPRr1cDw_), sizeof(tyObject_ValueError__yoNlBGx0D2tRizIdhQuENw));
1215 			(*T12_).Sup.Sup.Sup.m_type = (&NTIvalueerror__yoNlBGx0D2tRizIdhQuENw_);
1216 			(*T12_).Sup.Sup.name = "ValueError";
1217 			T13_ = NIM_NIL;
1218 			T13_ = rawNewString((root ? root->Sup.len : 0) + 36);
1219 appendString(T13_, ((NimStringDesc*) &TM__yu6cxgKBBXbNsTkT9cyMd4g_12));
1220 appendString(T13_, root);
1221 			asgnRef((void**) (&(*T12_).Sup.Sup.message), T13_);
1222 			asgnRef((void**) (&(*T12_).Sup.Sup.parent), ((Exception*) NIM_NIL));
1223 			raiseExceptionEx((Exception*)T12_, "ValueError", "absolutePath", "os.nim", 1455);
1224 		}
1225 		LA10_: ;
1226 		result = nosjoinPath(root, path);
1227 	}
1228 	LA1_: ;
1229 	return result;
1230 }
N_INLINE(NIM_BOOL,eqeq___system_7723)1231 static N_INLINE(NIM_BOOL, eqeq___system_7723)(NCSTRING x, NCSTRING y) {
1232 	NIM_BOOL result;
1233 	result = (NIM_BOOL)0;
1234 	{
1235 		if (!(((void*) (x)) == ((void*) (y)))) goto LA3_;
1236 		result = NIM_TRUE;
1237 	}
1238 	goto LA1_;
1239 	LA3_: ;
1240 	{
1241 		NIM_BOOL T6_;
1242 		T6_ = (NIM_BOOL)0;
1243 		T6_ = (x == 0);
1244 		if (T6_) goto LA7_;
1245 		T6_ = (y == 0);
1246 		LA7_: ;
1247 		if (!T6_) goto LA8_;
1248 		result = NIM_FALSE;
1249 	}
1250 	goto LA1_;
1251 	LA8_: ;
1252 	{
1253 		int T11_;
1254 		T11_ = (int)0;
1255 		T11_ = strcmp(x, y);
1256 		result = (T11_ == ((NI32) 0));
1257 	}
1258 	LA1_: ;
1259 	return result;
1260 }
N_INLINE(NCSTRING,nimToCStringConv)1261 static N_INLINE(NCSTRING, nimToCStringConv)(NimStringDesc* s) {
1262 	NCSTRING result;
1263 	result = (NCSTRING)0;
1264 	{
1265 		NIM_BOOL T3_;
1266 		T3_ = (NIM_BOOL)0;
1267 		T3_ = (s == ((NimStringDesc*) NIM_NIL));
1268 		if (T3_) goto LA4_;
1269 		T3_ = ((*s).Sup.len == ((NI) 0));
1270 		LA4_: ;
1271 		if (!T3_) goto LA5_;
1272 		result = "";
1273 	}
1274 	goto LA1_;
1275 	LA5_: ;
1276 	{
1277 		result = ((NCSTRING) ((*s).data));
1278 	}
1279 	LA1_: ;
1280 	return result;
1281 }
N_NIMCALL(NI32,osLastError__pureZos_408)1282 N_LIB_PRIVATE N_NIMCALL(NI32, osLastError__pureZos_408)(void) {
1283 	NI32 result;
1284 	result = (NI32)0;
1285 	result = errno;
1286 	return result;
1287 }
N_NIMCALL(NimStringDesc *,osErrorMsg__pureZos_358)1288 N_LIB_PRIVATE N_NIMCALL(NimStringDesc*, osErrorMsg__pureZos_358)(NI32 errorCode) {
1289 	NimStringDesc* result;
1290 	result = NIM_NIL;
1291 	result = ((NimStringDesc*) NIM_NIL);
1292 	{
1293 		NCSTRING T5_;
1294 		if (!!((errorCode == ((NI32) 0)))) goto LA3_;
1295 		T5_ = (NCSTRING)0;
1296 		T5_ = strerror(errorCode);
1297 		result = cstrToNimstr(T5_);
1298 	}
1299 	LA3_: ;
1300 	return result;
1301 }
N_NOINLINE(tyObject_OSError__BeJgrOdDsczOwEWOZbRfKA *,newOSError__pureZos_379)1302 N_LIB_PRIVATE N_NOINLINE(tyObject_OSError__BeJgrOdDsczOwEWOZbRfKA*, newOSError__pureZos_379)(NI32 errorCode, NimStringDesc* additionalInfo) {
1303 	tyObject_OSError__BeJgrOdDsczOwEWOZbRfKA* result;
1304 	tyObject_OSError__BeJgrOdDsczOwEWOZbRfKA* e;
1305 {	result = NIM_NIL;
1306 	e = NIM_NIL;
1307 	e = (tyObject_OSError__BeJgrOdDsczOwEWOZbRfKA*) newObj((&NTIrefoserror__9clYsYwyjCqe2PFTuCI3Ubg_), sizeof(tyObject_OSError__BeJgrOdDsczOwEWOZbRfKA));
1308 	(*e).Sup.Sup.Sup.m_type = (&NTIoserror__BeJgrOdDsczOwEWOZbRfKA_);
1309 	(*e).Sup.Sup.name = "OSError";
1310 	(*e).errorCode = errorCode;
1311 	asgnRef((void**) (&(*e).Sup.Sup.message), osErrorMsg__pureZos_358(errorCode));
1312 	{
1313 		if (!(((NI) 0) < (additionalInfo ? additionalInfo->Sup.len : 0))) goto LA3_;
1314 		{
1315 			NIM_BOOL T7_;
1316 			NIM_CHAR* T9_;
1317 			T7_ = (NIM_BOOL)0;
1318 			T7_ = (((NI) 0) < ((*e).Sup.Sup.message ? (*e).Sup.Sup.message->Sup.len : 0));
1319 			if (!(T7_)) goto LA8_;
1320 			T9_ = (NIM_CHAR*)0;
1321 			T9_ = X5BX5D___system_7361((&(*e).Sup.Sup.message), ((NI) 1));
1322 			T7_ = !(((NU8)((*T9_)) == (NU8)(10)));
1323 			LA8_: ;
1324 			if (!T7_) goto LA10_;
1325 			asgnRef((void**) (&(*e).Sup.Sup.message), addChar((*e).Sup.Sup.message, 10));
1326 		}
1327 		LA10_: ;
1328 		asgnRef((void**) (&(*e).Sup.Sup.message), resizeString((*e).Sup.Sup.message, 17));
1329 appendString((*e).Sup.Sup.message, ((NimStringDesc*) &TM__yu6cxgKBBXbNsTkT9cyMd4g_14));
1330 		asgnRef((void**) (&(*e).Sup.Sup.message), resizeString((*e).Sup.Sup.message, (additionalInfo ? additionalInfo->Sup.len : 0) + 0));
1331 appendString((*e).Sup.Sup.message, additionalInfo);
1332 	}
1333 	LA3_: ;
1334 	{
1335 		NimStringDesc* T16_;
1336 		if (!(((*e).Sup.Sup.message ? (*e).Sup.Sup.message->Sup.len : 0) == 0)) goto LA14_;
1337 		T16_ = NIM_NIL;
1338 		T16_ = (*e).Sup.Sup.message; (*e).Sup.Sup.message = copyStringRC1(((NimStringDesc*) &TM__yu6cxgKBBXbNsTkT9cyMd4g_15));
1339 		if (T16_) nimGCunrefNoCycle(T16_);
1340 	}
1341 	LA14_: ;
1342 	result = e;
1343 	goto BeforeRet_;
1344 	}BeforeRet_: ;
1345 	return result;
1346 }
N_NOINLINE(void,raiseOSError__pureZos_405)1347 N_LIB_PRIVATE N_NOINLINE(void, raiseOSError__pureZos_405)(NI32 errorCode, NimStringDesc* additionalInfo) {
1348 	tyObject_OSError__BeJgrOdDsczOwEWOZbRfKA* T1_;
1349 	T1_ = NIM_NIL;
1350 	T1_ = newOSError__pureZos_379(errorCode, additionalInfo);
1351 	raiseExceptionEx((Exception*)T1_, "OSError", "raiseOSError", "oserr.nim", 95);
1352 }
N_NIMCALL(NimStringDesc *,nosgetCurrentDir)1353 N_LIB_PRIVATE N_NIMCALL(NimStringDesc*, nosgetCurrentDir)(void) {
1354 	NimStringDesc* result;
1355 	NI bufsize;
1356 	result = NIM_NIL;
1357 	bufsize = ((NI) 1024);
1358 	result = mnewString(((NI) (bufsize)));
1359 	{
1360 		while (1) {
1361 			{
1362 				NCSTRING T5_;
1363 				NIM_BOOL T6_;
1364 				int T9_;
1365 				T5_ = (NCSTRING)0;
1366 				T5_ = getcwd(nimToCStringConv(result), bufsize);
1367 				T6_ = (NIM_BOOL)0;
1368 				T6_ = eqeq___system_7723(T5_, ((NCSTRING) NIM_NIL));
1369 				if (!!(T6_)) goto LA7_;
1370 				T9_ = (int)0;
1371 				T9_ = strlen(nimToCStringConv(result));
1372 				result = setLengthStr(result, ((NI) (T9_)));
1373 				goto LA1;
1374 			}
1375 			goto LA3_;
1376 			LA7_: ;
1377 			{
1378 				NI32 err;
1379 				err = osLastError__pureZos_408();
1380 				{
1381 					if (!(err == ERANGE)) goto LA13_;
1382 					bufsize = (NI)((NU32)(bufsize) << (NU32)(((NI) 1)));
1383 					{
1384 						if (!!((((NI) 0) <= bufsize))) goto LA17_;
1385 						failedAssertImpl__systemZassertions_56(((NimStringDesc*) &TM__yu6cxgKBBXbNsTkT9cyMd4g_13));
1386 					}
1387 					LA17_: ;
1388 					result = mnewString(((NI) (bufsize)));
1389 				}
1390 				goto LA11_;
1391 				LA13_: ;
1392 				{
1393 					NI32 T20_;
1394 					T20_ = (NI32)0;
1395 					T20_ = osLastError__pureZos_408();
1396 					raiseOSError__pureZos_405(T20_, ((NimStringDesc*) NIM_NIL));
1397 				}
1398 				LA11_: ;
1399 			}
1400 			LA3_: ;
1401 		}
1402 	} LA1: ;
1403 	return result;
1404 }
N_NIMCALL(NimStringDesc *,absolutePathInternal__pureZos_49)1405 N_LIB_PRIVATE N_NIMCALL(NimStringDesc*, absolutePathInternal__pureZos_49)(NimStringDesc* path) {
1406 	NimStringDesc* result;
1407 	NimStringDesc* T1_;
1408 	result = NIM_NIL;
1409 	T1_ = NIM_NIL;
1410 	T1_ = nosgetCurrentDir();
1411 	result = absolutePath__pureZos_742(path, T1_);
1412 	return result;
1413 }
N_NIMCALL(NimStringDesc *,nosrelativePath)1414 N_LIB_PRIVATE N_NIMCALL(NimStringDesc*, nosrelativePath)(NimStringDesc* path, NimStringDesc* base, NIM_CHAR sep) {
1415 	NimStringDesc* result;
1416 	NimStringDesc* base_2;
1417 	NimStringDesc* path_2;
1418 	NIM_BOOL a1;
1419 	NIM_BOOL a2;
1420 	tyObject_PathIter__tllF14xUpDWpqG9ci5sg9bMg f;
1421 	tyObject_PathIter__tllF14xUpDWpqG9ci5sg9bMg b;
1422 	tyTuple__1v9bKyksXWMsm0vNwmZ4EuQ ff;
1423 	tyTuple__1v9bKyksXWMsm0vNwmZ4EuQ bb;
1424 {	result = NIM_NIL;
1425 	{
1426 		if (!((path ? path->Sup.len : 0) == ((NI) 0))) goto LA3_;
1427 		result = ((NimStringDesc*) NIM_NIL);
1428 		goto BeforeRet_;
1429 	}
1430 	LA3_: ;
1431 	{
1432 		if (!eqStrings(base, ((NimStringDesc*) &TM__yu6cxgKBBXbNsTkT9cyMd4g_11))) goto LA7_;
1433 		base_2 = ((NimStringDesc*) NIM_NIL);
1434 	}
1435 	goto LA5_;
1436 	LA7_: ;
1437 	{
1438 		base_2 = copyString(base);
1439 	}
1440 	LA5_: ;
1441 	path_2 = copyString(path);
1442 	normalizePathAux__pureZos_31((&path_2));
1443 	normalizePathAux__pureZos_31((&base_2));
1444 	a1 = nosisAbsolute(path_2);
1445 	a2 = nosisAbsolute(base_2);
1446 	{
1447 		NIM_BOOL T12_;
1448 		T12_ = (NIM_BOOL)0;
1449 		T12_ = a1;
1450 		if (!(T12_)) goto LA13_;
1451 		T12_ = !(a2);
1452 		LA13_: ;
1453 		if (!T12_) goto LA14_;
1454 		base_2 = absolutePathInternal__pureZos_49(base_2);
1455 	}
1456 	goto LA10_;
1457 	LA14_: ;
1458 	{
1459 		NIM_BOOL T17_;
1460 		T17_ = (NIM_BOOL)0;
1461 		T17_ = a2;
1462 		if (!(T17_)) goto LA18_;
1463 		T17_ = !(a1);
1464 		LA18_: ;
1465 		if (!T17_) goto LA19_;
1466 		path_2 = absolutePathInternal__pureZos_49(path_2);
1467 	}
1468 	goto LA10_;
1469 	LA19_: ;
1470 	LA10_: ;
1471 	nimZeroMem((void*)(&f), sizeof(tyObject_PathIter__tllF14xUpDWpqG9ci5sg9bMg));
1472 	nimZeroMem((void*)(&b), sizeof(tyObject_PathIter__tllF14xUpDWpqG9ci5sg9bMg));
1473 	ff = TM__yu6cxgKBBXbNsTkT9cyMd4g_16;
1474 	bb = TM__yu6cxgKBBXbNsTkT9cyMd4g_16;
1475 	result = rawNewString(((NI) ((path_2 ? path_2->Sup.len : 0))));
1476 	{
1477 		while (1) {
1478 			NIM_BOOL T23_;
1479 			NI diff;
1480 			NIM_BOOL same;
1481 			NI colontmp_;
1482 			NI colontmp__2;
1483 			NI colontmp__3;
1484 			NI colontmp__4;
1485 			T23_ = (NIM_BOOL)0;
1486 			T23_ = hasNext__pureZpathnorm_6(f, path_2);
1487 			if (!(T23_)) goto LA24_;
1488 			T23_ = hasNext__pureZpathnorm_6(b, base_2);
1489 			LA24_: ;
1490 			if (!T23_) goto LA22;
1491 			ff = next__pureZpathnorm_10((&f), path_2);
1492 			bb = next__pureZpathnorm_10((&b), base_2);
1493 			diff = (NI)(ff.Field1 - ff.Field0);
1494 			{
1495 				if (!!((diff == (NI)(bb.Field1 - bb.Field0)))) goto LA27_;
1496 				goto LA21;
1497 			}
1498 			LA27_: ;
1499 			same = NIM_TRUE;
1500 			{
1501 				NI i;
1502 				NI res;
1503 				i = (NI)0;
1504 				res = ((NI) 0);
1505 				{
1506 					while (1) {
1507 						if (!(res <= diff)) goto LA31;
1508 						i = res;
1509 						{
1510 							if (!!(((NU8)(path_2->data[(NI)(i + ff.Field0)]) == (NU8)(base_2->data[(NI)(i + bb.Field0)])))) goto LA34_;
1511 							same = NIM_FALSE;
1512 							goto LA29;
1513 						}
1514 						LA34_: ;
1515 						res += ((NI) 1);
1516 					} LA31: ;
1517 				}
1518 			} LA29: ;
1519 			{
1520 				if (!!(same)) goto LA38_;
1521 				goto LA21;
1522 			}
1523 			LA38_: ;
1524 			colontmp_ = ((NI) 0);
1525 			colontmp__2 = ((NI) -1);
1526 			ff.Field0 = colontmp_;
1527 			ff.Field1 = colontmp__2;
1528 			colontmp__3 = ((NI) 0);
1529 			colontmp__4 = ((NI) -1);
1530 			bb.Field0 = colontmp__3;
1531 			bb.Field1 = colontmp__4;
1532 		} LA22: ;
1533 	} LA21: ;
1534 	{
1535 		while (1) {
1536 			{
1537 				if (!(bb.Field0 <= bb.Field1)) goto LA44_;
1538 				{
1539 					NIM_BOOL T48_;
1540 					NIM_CHAR* T50_;
1541 					T48_ = (NIM_BOOL)0;
1542 					T48_ = (((NI) 0) < (result ? result->Sup.len : 0));
1543 					if (!(T48_)) goto LA49_;
1544 					T50_ = (NIM_CHAR*)0;
1545 					T50_ = X5BX5D___system_7361((&result), ((NI) 1));
1546 					T48_ = !(((NU8)((*T50_)) == (NU8)(sep)));
1547 					LA49_: ;
1548 					if (!T48_) goto LA51_;
1549 					result = addChar(result, sep);
1550 				}
1551 				LA51_: ;
1552 				result = resizeString(result, 2);
1553 appendString(result, ((NimStringDesc*) &TM__yu6cxgKBBXbNsTkT9cyMd4g_17));
1554 			}
1555 			LA44_: ;
1556 			{
1557 				NIM_BOOL T55_;
1558 				T55_ = (NIM_BOOL)0;
1559 				T55_ = hasNext__pureZpathnorm_6(b, base_2);
1560 				if (!!(T55_)) goto LA56_;
1561 				goto LA40;
1562 			}
1563 			LA56_: ;
1564 			bb = next__pureZpathnorm_10((&b), base_2);
1565 		}
1566 	} LA40: ;
1567 	{
1568 		while (1) {
1569 			{
1570 				if (!(ff.Field0 <= ff.Field1)) goto LA62_;
1571 				{
1572 					NIM_BOOL T66_;
1573 					NIM_CHAR* T68_;
1574 					T66_ = (NIM_BOOL)0;
1575 					T66_ = (((NI) 0) < (result ? result->Sup.len : 0));
1576 					if (!(T66_)) goto LA67_;
1577 					T68_ = (NIM_CHAR*)0;
1578 					T68_ = X5BX5D___system_7361((&result), ((NI) 1));
1579 					T66_ = !(((NU8)((*T68_)) == (NU8)(sep)));
1580 					LA67_: ;
1581 					if (!T66_) goto LA69_;
1582 					result = addChar(result, sep);
1583 				}
1584 				LA69_: ;
1585 				{
1586 					NI i_2;
1587 					NI colontmp__5;
1588 					NI res_2;
1589 					i_2 = (NI)0;
1590 					colontmp__5 = (NI)0;
1591 					colontmp__5 = (NI)(ff.Field1 - ff.Field0);
1592 					res_2 = ((NI) 0);
1593 					{
1594 						while (1) {
1595 							if (!(res_2 <= colontmp__5)) goto LA73;
1596 							i_2 = res_2;
1597 							result = addChar(result, path_2->data[(NI)(i_2 + ff.Field0)]);
1598 							res_2 += ((NI) 1);
1599 						} LA73: ;
1600 					}
1601 				}
1602 			}
1603 			LA62_: ;
1604 			{
1605 				NIM_BOOL T76_;
1606 				T76_ = (NIM_BOOL)0;
1607 				T76_ = hasNext__pureZpathnorm_6(f, path_2);
1608 				if (!!(T76_)) goto LA77_;
1609 				goto LA58;
1610 			}
1611 			LA77_: ;
1612 			ff = next__pureZpathnorm_10((&f), path_2);
1613 		}
1614 	} LA58: ;
1615 	{
1616 		if (!((result ? result->Sup.len : 0) == ((NI) 0))) goto LA81_;
1617 		result = resizeString(result, 1);
1618 appendString(result, ((NimStringDesc*) &TM__yu6cxgKBBXbNsTkT9cyMd4g_11));
1619 	}
1620 	LA81_: ;
1621 	}BeforeRet_: ;
1622 	return result;
1623 }
N_NIMCALL(NIM_BOOL,isRelativeTo__pureZos_188)1624 N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, isRelativeTo__pureZos_188)(NimStringDesc* path, NimStringDesc* base) {
1625 	NIM_BOOL result;
1626 	NimStringDesc* path_2;
1627 	NimStringDesc* base_2;
1628 	NimStringDesc* ret;
1629 	NIM_BOOL T1_;
1630 	NIM_BOOL T3_;
1631 	result = (NIM_BOOL)0;
1632 	path_2 = normalizePath__pureZpathnorm_127(path, 47);
1633 	base_2 = normalizePath__pureZpathnorm_127(base, 47);
1634 	ret = nosrelativePath(path_2, base_2, 47);
1635 	T1_ = (NIM_BOOL)0;
1636 	T1_ = (((NI) 0) < (path_2 ? path_2->Sup.len : 0));
1637 	if (!(T1_)) goto LA2_;
1638 	T3_ = (NIM_BOOL)0;
1639 	T3_ = nsuStartsWith(ret, ((NimStringDesc*) &TM__yu6cxgKBBXbNsTkT9cyMd4g_17));
1640 	T1_ = !(T3_);
1641 	LA2_: ;
1642 	result = T1_;
1643 	return result;
1644 }
N_NIMCALL(NI,parentDirPos__pureZos_195)1645 N_LIB_PRIVATE N_NIMCALL(NI, parentDirPos__pureZos_195)(NimStringDesc* path) {
1646 	NI result;
1647 	NI q;
1648 {	result = (NI)0;
1649 	q = ((NI) 1);
1650 	{
1651 		NIM_BOOL T3_;
1652 		T3_ = (NIM_BOOL)0;
1653 		T3_ = (((NI) 1) <= (path ? path->Sup.len : 0));
1654 		if (!(T3_)) goto LA4_;
1655 		T3_ = (((NU8)(path->data[(NI)((path ? path->Sup.len : 0) - ((NI) 1))])) == ((NU8)(47)) || ((NU8)(path->data[(NI)((path ? path->Sup.len : 0) - ((NI) 1))])) == ((NU8)(47)));
1656 		LA4_: ;
1657 		if (!T3_) goto LA5_;
1658 		q = ((NI) 2);
1659 	}
1660 	LA5_: ;
1661 	{
1662 		NI i;
1663 		NI colontmp_;
1664 		NI res;
1665 		i = (NI)0;
1666 		colontmp_ = (NI)0;
1667 		colontmp_ = (NI)((path ? path->Sup.len : 0) - q);
1668 		res = colontmp_;
1669 		{
1670 			while (1) {
1671 				if (!(((NI) 0) <= res)) goto LA9;
1672 				i = res;
1673 				{
1674 					if (!(((NU8)(path->data[i])) == ((NU8)(47)) || ((NU8)(path->data[i])) == ((NU8)(47)))) goto LA12_;
1675 					result = i;
1676 					goto BeforeRet_;
1677 				}
1678 				LA12_: ;
1679 				res -= ((NI) 1);
1680 			} LA9: ;
1681 		}
1682 	}
1683 	result = ((NI) -1);
1684 	}BeforeRet_: ;
1685 	return result;
1686 }
N_NIMCALL(NimStringDesc *,nosparentDir)1687 N_LIB_PRIVATE N_NIMCALL(NimStringDesc*, nosparentDir)(NimStringDesc* path) {
1688 	NimStringDesc* result;
1689 	NI sepPos;
1690 	result = NIM_NIL;
1691 	result = normalizePath__pureZpathnorm_127(path, 47);
1692 	sepPos = parentDirPos__pureZos_195(result);
1693 	{
1694 		if (!(((NI) 0) <= sepPos)) goto LA3_;
1695 		result = substr__system_7743(result, ((NI) 0), sepPos);
1696 		normalizePathEnd__pureZos_51((&result), NIM_FALSE);
1697 	}
1698 	goto LA1_;
1699 	LA3_: ;
1700 	{
1701 		NIM_BOOL T6_;
1702 		NIM_BOOL T7_;
1703 		NIM_BOOL T8_;
1704 		NIM_CHAR* T12_;
1705 		T6_ = (NIM_BOOL)0;
1706 		T7_ = (NIM_BOOL)0;
1707 		T8_ = (NIM_BOOL)0;
1708 		T8_ = eqStrings(result, ((NimStringDesc*) &TM__yu6cxgKBBXbNsTkT9cyMd4g_17));
1709 		if (T8_) goto LA9_;
1710 		T8_ = eqStrings(result, ((NimStringDesc*) &TM__yu6cxgKBBXbNsTkT9cyMd4g_11));
1711 		LA9_: ;
1712 		T7_ = T8_;
1713 		if (T7_) goto LA10_;
1714 		T7_ = ((result ? result->Sup.len : 0) == ((NI) 0));
1715 		LA10_: ;
1716 		T6_ = T7_;
1717 		if (T6_) goto LA11_;
1718 		T12_ = (NIM_CHAR*)0;
1719 		T12_ = X5BX5D___system_7361((&result), ((NI) 1));
1720 		T6_ = (((NU8)((*T12_))) == ((NU8)(47)) || ((NU8)((*T12_))) == ((NU8)(47)));
1721 		LA11_: ;
1722 		if (!T6_) goto LA13_;
1723 		result = ((NimStringDesc*) NIM_NIL);
1724 	}
1725 	goto LA1_;
1726 	LA13_: ;
1727 	{
1728 		result = copyString(((NimStringDesc*) &TM__yu6cxgKBBXbNsTkT9cyMd4g_11));
1729 	}
1730 	LA1_: ;
1731 	return result;
1732 }
N_NIMCALL(NIM_BOOL,nosfileExists)1733 N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, nosfileExists)(NimStringDesc* filename) {
1734 	NIM_BOOL result;
1735 	struct stat res;
1736 	NIM_BOOL T1_;
1737 	int T2_;
1738 {	result = (NIM_BOOL)0;
1739 	nimZeroMem((void*)(&res), sizeof(struct stat));
1740 	T1_ = (NIM_BOOL)0;
1741 	T2_ = (int)0;
1742 	T2_ = stat(nimToCStringConv(filename), (&res));
1743 	T1_ = (((NI32) 0) <= T2_);
1744 	if (!(T1_)) goto LA3_;
1745 	T1_ = S_ISREG(res.st_mode);
1746 	LA3_: ;
1747 	result = T1_;
1748 	goto BeforeRet_;
1749 	}BeforeRet_: ;
1750 	return result;
1751 }
N_NIMCALL(NimStringDesc *,getEnv__pureZos_418)1752 N_LIB_PRIVATE N_NIMCALL(NimStringDesc*, getEnv__pureZos_418)(NimStringDesc* key, NimStringDesc* default_0) {
1753 	NimStringDesc* result;
1754 	NCSTRING env;
1755 {	result = NIM_NIL;
1756 	env = getenv(nimToCStringConv(key));
1757 	{
1758 		NIM_BOOL T3_;
1759 		T3_ = (NIM_BOOL)0;
1760 		T3_ = eqeq___system_7723(env, ((NCSTRING) NIM_NIL));
1761 		if (!T3_) goto LA4_;
1762 		result = copyString(default_0);
1763 		goto BeforeRet_;
1764 	}
1765 	LA4_: ;
1766 	result = cstrToNimstr(env);
1767 	}BeforeRet_: ;
1768 	return result;
1769 }
N_NIMCALL(NimStringDesc *,nosgetHomeDir)1770 N_LIB_PRIVATE N_NIMCALL(NimStringDesc*, nosgetHomeDir)(void) {
1771 	NimStringDesc* result;
1772 	NimStringDesc* T1_;
1773 	NimStringDesc* T2_;
1774 {	result = NIM_NIL;
1775 	T1_ = NIM_NIL;
1776 	T2_ = NIM_NIL;
1777 	T2_ = getEnv__pureZos_418(((NimStringDesc*) &TM__yu6cxgKBBXbNsTkT9cyMd4g_18), ((NimStringDesc*) NIM_NIL));
1778 	T1_ = rawNewString((T2_ ? T2_->Sup.len : 0) + 1);
1779 appendString(T1_, T2_);
1780 appendString(T1_, ((NimStringDesc*) &TM__yu6cxgKBBXbNsTkT9cyMd4g_10));
1781 	result = T1_;
1782 	goto BeforeRet_;
1783 	}BeforeRet_: ;
1784 	return result;
1785 }
N_INLINE(NimStringDesc *,slash___pureZos_121)1786 static N_INLINE(NimStringDesc*, slash___pureZos_121)(NimStringDesc* head, NimStringDesc* tail) {
1787 	NimStringDesc* result;
1788 	result = NIM_NIL;
1789 	result = nosjoinPath(head, tail);
1790 	return result;
1791 }
N_NIMCALL(NimStringDesc *,expandTilde__pureZos_585)1792 N_LIB_PRIVATE N_NIMCALL(NimStringDesc*, expandTilde__pureZos_585)(NimStringDesc* path) {
1793 	NimStringDesc* result;
1794 	result = NIM_NIL;
1795 	{
1796 		NIM_BOOL T3_;
1797 		T3_ = (NIM_BOOL)0;
1798 		T3_ = ((path ? path->Sup.len : 0) == ((NI) 0));
1799 		if (T3_) goto LA4_;
1800 		T3_ = !(((NU8)(path->data[((NI) 0)]) == (NU8)(126)));
1801 		LA4_: ;
1802 		if (!T3_) goto LA5_;
1803 		result = copyString(path);
1804 	}
1805 	goto LA1_;
1806 	LA5_: ;
1807 	{
1808 		if (!((path ? path->Sup.len : 0) == ((NI) 1))) goto LA8_;
1809 		result = nosgetHomeDir();
1810 	}
1811 	goto LA1_;
1812 	LA8_: ;
1813 	{
1814 		NimStringDesc* T13_;
1815 		NimStringDesc* T14_;
1816 		if (!(((NU8)(path->data[((NI) 1)])) == ((NU8)(47)) || ((NU8)(path->data[((NI) 1)])) == ((NU8)(47)))) goto LA11_;
1817 		T13_ = NIM_NIL;
1818 		T13_ = nosgetHomeDir();
1819 		T14_ = NIM_NIL;
1820 		T14_ = substr__system_7755(path, ((NI) 2));
1821 		result = slash___pureZos_121(T13_, T14_);
1822 	}
1823 	goto LA1_;
1824 	LA11_: ;
1825 	{
1826 		result = copyString(path);
1827 	}
1828 	LA1_: ;
1829 	return result;
1830 }
N_INLINE(NI,nimCStrLen)1831 static N_INLINE(NI, nimCStrLen)(NCSTRING a) {
1832 	NI result;
1833 	size_t T1_;
1834 	result = (NI)0;
1835 	T1_ = (size_t)0;
1836 	T1_ = strlen(a);
1837 	result = ((NI) (T1_));
1838 	return result;
1839 }
N_NIMCALL(NimStringDesc *,getApplFreebsd__pureZos_1569)1840 N_LIB_PRIVATE N_NIMCALL(NimStringDesc*, getApplFreebsd__pureZos_1569)(void) {
1841 	NimStringDesc* result;
1842 	size_t pathLength;
1843 	tyArray__VR9bNthWayFgb5M9avIR8bkA req;
1844 	int res;
1845 	NI realLen;
1846 {	result = NIM_NIL;
1847 	pathLength = ((size_t) 0);
1848 	nimZeroMem((void*)req, sizeof(tyArray__VR9bNthWayFgb5M9avIR8bkA));
1849 	nimCopyMem((void*)req, (NIM_CONST void*)TM__yu6cxgKBBXbNsTkT9cyMd4g_19, sizeof(tyArray__VR9bNthWayFgb5M9avIR8bkA));
1850 	res = sysctl((&req[(((NI) 0))- 0]), ((unsigned int) 4), NIM_NIL, (&pathLength), NIM_NIL, ((size_t) 0));
1851 	{
1852 		if (!(res < ((NI32) 0))) goto LA3_;
1853 		result = ((NimStringDesc*) NIM_NIL);
1854 		goto BeforeRet_;
1855 	}
1856 	LA3_: ;
1857 	result = setLengthStr(result, ((NI) (pathLength)));
1858 	res = sysctl((&req[(((NI) 0))- 0]), ((unsigned int) 4), ((void*) ((&result->data[((NI) 0)]))), (&pathLength), NIM_NIL, ((size_t) 0));
1859 	{
1860 		if (!(res < ((NI32) 0))) goto LA7_;
1861 		result = ((NimStringDesc*) NIM_NIL);
1862 		goto BeforeRet_;
1863 	}
1864 	LA7_: ;
1865 	realLen = (nimToCStringConv(result) ? nimCStrLen(nimToCStringConv(result)) : 0);
1866 	result = setLengthStr(result, ((NI) (realLen)));
1867 	}BeforeRet_: ;
1868 	return result;
1869 }
N_NIMCALL(NimStringDesc *,getApplHeuristic__pureZos_1606)1870 N_LIB_PRIVATE N_NIMCALL(NimStringDesc*, getApplHeuristic__pureZos_1606)(void) {
1871 	NimStringDesc* result;
1872 {	result = NIM_NIL;
1873 	result = paramStr__pureZos_1535(((NI) 0));
1874 	{
1875 		NIM_BOOL T3_;
1876 		T3_ = (NIM_BOOL)0;
1877 		T3_ = (((NI) 0) < (result ? result->Sup.len : 0));
1878 		if (!(T3_)) goto LA4_;
1879 		T3_ = !(((NU8)(result->data[((NI) 0)]) == (NU8)(47)));
1880 		LA4_: ;
1881 		if (!T3_) goto LA5_;
1882 		{
1883 			NimStringDesc* p;
1884 			NimStringDesc* colontmp_;
1885 			NI lastX60gensym37_;
1886 			NI splitsX60gensym37_;
1887 			p = NIM_NIL;
1888 			colontmp_ = NIM_NIL;
1889 			colontmp_ = getEnv__pureZos_418(((NimStringDesc*) &TM__yu6cxgKBBXbNsTkT9cyMd4g_20), ((NimStringDesc*) NIM_NIL));
1890 			lastX60gensym37_ = ((NI) 0);
1891 			splitsX60gensym37_ = ((NI) -1);
1892 			{
1893 				while (1) {
1894 					NI firstX60gensym37_;
1895 					NimStringDesc* x;
1896 					if (!(lastX60gensym37_ <= (colontmp_ ? colontmp_->Sup.len : 0))) goto LA9;
1897 					firstX60gensym37_ = lastX60gensym37_;
1898 					{
1899 						while (1) {
1900 							NIM_BOOL T12_;
1901 							T12_ = (NIM_BOOL)0;
1902 							T12_ = (lastX60gensym37_ < (colontmp_ ? colontmp_->Sup.len : 0));
1903 							if (!(T12_)) goto LA13_;
1904 							T12_ = !((((NU8)(colontmp_->data[lastX60gensym37_])) == ((NU8)(58))));
1905 							LA13_: ;
1906 							if (!T12_) goto LA11;
1907 							lastX60gensym37_ += ((NI) 1);
1908 						} LA11: ;
1909 					}
1910 					{
1911 						if (!(splitsX60gensym37_ == ((NI) 0))) goto LA16_;
1912 						lastX60gensym37_ = (colontmp_ ? colontmp_->Sup.len : 0);
1913 					}
1914 					LA16_: ;
1915 					p = substr__system_7743(colontmp_, firstX60gensym37_, (NI)(lastX60gensym37_ - ((NI) 1)));
1916 					x = nosjoinPath(p, result);
1917 					{
1918 						NIM_BOOL T20_;
1919 						T20_ = (NIM_BOOL)0;
1920 						T20_ = nosfileExists(x);
1921 						if (!T20_) goto LA21_;
1922 						result = copyString(x);
1923 						goto BeforeRet_;
1924 					}
1925 					LA21_: ;
1926 					{
1927 						if (!(splitsX60gensym37_ == ((NI) 0))) goto LA25_;
1928 						goto LA8;
1929 					}
1930 					LA25_: ;
1931 					splitsX60gensym37_ -= ((NI) 1);
1932 					lastX60gensym37_ += ((NI) 1);
1933 				} LA9: ;
1934 			} LA8: ;
1935 		}
1936 	}
1937 	LA5_: ;
1938 	}BeforeRet_: ;
1939 	return result;
1940 }
N_NIMCALL(NimStringDesc *,nosgetAppFilename)1941 N_LIB_PRIVATE N_NIMCALL(NimStringDesc*, nosgetAppFilename)(void) {
1942 	NimStringDesc* result;
1943 	result = NIM_NIL;
1944 	result = getApplFreebsd__pureZos_1569();
1945 	{
1946 		if (!((result ? result->Sup.len : 0) == ((NI) 0))) goto LA3_;
1947 		result = getApplHeuristic__pureZos_1606();
1948 	}
1949 	LA3_: ;
1950 	return result;
1951 }
N_NIMCALL(NimStringDesc *,nosgetAppDir)1952 N_LIB_PRIVATE N_NIMCALL(NimStringDesc*, nosgetAppDir)(void) {
1953 	NimStringDesc* result;
1954 	NimStringDesc* T1_;
1955 	tyTuple__7q7q3E6Oj24ZNVJb9aonhAg T2_;
1956 	result = NIM_NIL;
1957 	T1_ = NIM_NIL;
1958 	T1_ = nosgetAppFilename();
1959 	nimZeroMem((void*)(&T2_), sizeof(tyTuple__7q7q3E6Oj24ZNVJb9aonhAg));
1960 	nossplitFile(T1_, (&T2_));
1961 	result = copyString(T2_.Field0);
1962 	return result;
1963 }
N_NIMCALL(NIM_BOOL,nosdirExists)1964 N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, nosdirExists)(NimStringDesc* dir) {
1965 	NIM_BOOL result;
1966 	struct stat res;
1967 	NIM_BOOL T1_;
1968 	int T2_;
1969 	result = (NIM_BOOL)0;
1970 	nimZeroMem((void*)(&res), sizeof(struct stat));
1971 	T1_ = (NIM_BOOL)0;
1972 	T2_ = (int)0;
1973 	T2_ = stat(nimToCStringConv(dir), (&res));
1974 	T1_ = (((NI32) 0) <= T2_);
1975 	if (!(T1_)) goto LA3_;
1976 	T1_ = S_ISDIR(res.st_mode);
1977 	LA3_: ;
1978 	result = T1_;
1979 	return result;
1980 }
N_NIMCALL(tyEnum_PathComponent__9c1SIU9cO1wHcl09b703A9cDrg,getSymlinkFileKind__pureZos_1233)1981 N_LIB_PRIVATE N_NIMCALL(tyEnum_PathComponent__9c1SIU9cO1wHcl09b703A9cDrg, getSymlinkFileKind__pureZos_1233)(NimStringDesc* path) {
1982 	tyEnum_PathComponent__9c1SIU9cO1wHcl09b703A9cDrg result;
1983 	struct stat s;
1984 	result = (tyEnum_PathComponent__9c1SIU9cO1wHcl09b703A9cDrg)0;
1985 	nimZeroMem((void*)(&s), sizeof(struct stat));
1986 	{
1987 		NIM_BOOL T3_;
1988 		int T4_;
1989 		T3_ = (NIM_BOOL)0;
1990 		T4_ = (int)0;
1991 		T4_ = stat(nimToCStringConv(path), (&s));
1992 		T3_ = (T4_ == ((NI32) 0));
1993 		if (!(T3_)) goto LA5_;
1994 		T3_ = S_ISDIR(s.st_mode);
1995 		LA5_: ;
1996 		if (!T3_) goto LA6_;
1997 		result = ((tyEnum_PathComponent__9c1SIU9cO1wHcl09b703A9cDrg) 3);
1998 	}
1999 	goto LA1_;
2000 	LA6_: ;
2001 	{
2002 		result = ((tyEnum_PathComponent__9c1SIU9cO1wHcl09b703A9cDrg) 1);
2003 	}
2004 	LA1_: ;
2005 	return result;
2006 }
N_NIMCALL(NimStringDesc *,nosexpandFilename)2007 N_LIB_PRIVATE N_NIMCALL(NimStringDesc*, nosexpandFilename)(NimStringDesc* filename) {
2008 	NimStringDesc* result;
2009 	NCSTRING r;
2010 	result = NIM_NIL;
2011 	r = realpath(nimToCStringConv(filename), ((NCSTRING) NIM_NIL));
2012 	{
2013 		NI32 T5_;
2014 		if (!(r == 0)) goto LA3_;
2015 		T5_ = (NI32)0;
2016 		T5_ = osLastError__pureZos_408();
2017 		raiseOSError__pureZos_405(T5_, filename);
2018 	}
2019 	goto LA1_;
2020 	LA3_: ;
2021 	{
2022 		result = cstrToNimstr(r);
2023 		free(((void*) (r)));
2024 	}
2025 	LA1_: ;
2026 	return result;
2027 }
N_NIMCALL(NIM_BOOL,rawCreateDir__pureZos_1415)2028 N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, rawCreateDir__pureZos_1415)(NimStringDesc* dir) {
2029 	NIM_BOOL result;
2030 	int res;
2031 	result = (NIM_BOOL)0;
2032 	res = mkdir(nimToCStringConv(dir), ((mode_t) 511));
2033 	{
2034 		if (!(res == ((NI32) 0))) goto LA3_;
2035 		result = NIM_TRUE;
2036 	}
2037 	goto LA1_;
2038 	LA3_: ;
2039 	{
2040 		if (!(errno == EEXIST)) goto LA6_;
2041 		result = NIM_FALSE;
2042 	}
2043 	goto LA1_;
2044 	LA6_: ;
2045 	{
2046 		NI32 T9_;
2047 		T9_ = (NI32)0;
2048 		T9_ = osLastError__pureZos_408();
2049 		raiseOSError__pureZos_405(T9_, dir);
2050 	}
2051 	LA1_: ;
2052 	return result;
2053 }
N_NIMCALL(NIM_BOOL,nosexistsOrCreateDir)2054 N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, nosexistsOrCreateDir)(NimStringDesc* dir) {
2055 	NIM_BOOL result;
2056 	NIM_BOOL T1_;
2057 	result = (NIM_BOOL)0;
2058 	T1_ = (NIM_BOOL)0;
2059 	T1_ = rawCreateDir__pureZos_1415(dir);
2060 	result = !(T1_);
2061 	{
2062 		if (!result) goto LA4_;
2063 		{
2064 			NIM_BOOL T8_;
2065 			tyObject_IOError__iLZrPn9anoh9ad1MmO0RczFw* T11_;
2066 			NimStringDesc* T12_;
2067 			T8_ = (NIM_BOOL)0;
2068 			T8_ = nosdirExists(dir);
2069 			if (!!(T8_)) goto LA9_;
2070 			T11_ = NIM_NIL;
2071 			T11_ = (tyObject_IOError__iLZrPn9anoh9ad1MmO0RczFw*) newObj((&NTIrefioerror__HMIVdYjdZYWskTmTQVo5BQ_), sizeof(tyObject_IOError__iLZrPn9anoh9ad1MmO0RczFw));
2072 			(*T11_).Sup.Sup.Sup.m_type = (&NTIioerror__iLZrPn9anoh9ad1MmO0RczFw_);
2073 			(*T11_).Sup.Sup.name = "IOError";
2074 			T12_ = NIM_NIL;
2075 			T12_ = rawNewString((dir ? dir->Sup.len : 0) + 19);
2076 appendString(T12_, ((NimStringDesc*) &TM__yu6cxgKBBXbNsTkT9cyMd4g_21));
2077 appendString(T12_, dir);
2078 appendString(T12_, ((NimStringDesc*) &TM__yu6cxgKBBXbNsTkT9cyMd4g_7));
2079 			asgnRef((void**) (&(*T11_).Sup.Sup.message), T12_);
2080 			asgnRef((void**) (&(*T11_).Sup.Sup.parent), ((Exception*) NIM_NIL));
2081 			raiseExceptionEx((Exception*)T11_, "IOError", "existsOrCreateDir", "os.nim", 2526);
2082 		}
2083 		LA9_: ;
2084 	}
2085 	LA4_: ;
2086 	return result;
2087 }
N_NIMCALL(void,noscreateDir)2088 N_LIB_PRIVATE N_NIMCALL(void, noscreateDir)(NimStringDesc* dir) {
2089 	NIM_BOOL omitNext;
2090 	omitNext = NIM_FALSE;
2091 	{
2092 		NI i;
2093 		NI colontmp_;
2094 		NI res;
2095 		i = (NI)0;
2096 		colontmp_ = (NI)0;
2097 		colontmp_ = (NI)((dir ? dir->Sup.len : 0) - ((NI) 1));
2098 		res = ((NI) 1);
2099 		{
2100 			while (1) {
2101 				if (!(res <= colontmp_)) goto LA3;
2102 				i = res;
2103 				{
2104 					if (!(((NU8)(dir->data[i])) == ((NU8)(47)) || ((NU8)(dir->data[i])) == ((NU8)(47)))) goto LA6_;
2105 					{
2106 						if (!omitNext) goto LA10_;
2107 						omitNext = NIM_FALSE;
2108 					}
2109 					goto LA8_;
2110 					LA10_: ;
2111 					{
2112 						NimStringDesc* T13_;
2113 						NIM_BOOL T14_;
2114 						T13_ = NIM_NIL;
2115 						T13_ = substr__system_7743(dir, ((NI) 0), (NI)(i - ((NI) 1)));
2116 						T14_ = (NIM_BOOL)0;
2117 						T14_ = nosexistsOrCreateDir(T13_);
2118 						(void)(T14_);
2119 					}
2120 					LA8_: ;
2121 				}
2122 				LA6_: ;
2123 				res += ((NI) 1);
2124 			} LA3: ;
2125 		}
2126 	}
2127 	{
2128 		NIM_BOOL T17_;
2129 		NIM_BOOL T18_;
2130 		NIM_CHAR T21_;
2131 		NIM_BOOL T24_;
2132 		T17_ = (NIM_BOOL)0;
2133 		T18_ = (NIM_BOOL)0;
2134 		T18_ = (((NI) 0) < (dir ? dir->Sup.len : 0));
2135 		if (!(T18_)) goto LA19_;
2136 		T18_ = !(omitNext);
2137 		LA19_: ;
2138 		T17_ = T18_;
2139 		if (!(T17_)) goto LA20_;
2140 		T21_ = (NIM_CHAR)0;
2141 		T21_ = X5BX5D___system_7328(dir, ((NI) 1));
2142 		T17_ = !((((NU8)(T21_)) == ((NU8)(47)) || ((NU8)(T21_)) == ((NU8)(47))));
2143 		LA20_: ;
2144 		if (!T17_) goto LA22_;
2145 		T24_ = (NIM_BOOL)0;
2146 		T24_ = nosexistsOrCreateDir(dir);
2147 		(void)(T24_);
2148 	}
2149 	LA22_: ;
2150 }
N_NIMCALL(NI,searchExtPos__pureZos_271)2151 N_LIB_PRIVATE N_NIMCALL(NI, searchExtPos__pureZos_271)(NimStringDesc* path) {
2152 	NI result;
2153 	result = (NI)0;
2154 	result = ((NI) -1);
2155 	{
2156 		NI i;
2157 		NI colontmp_;
2158 		NI res;
2159 		i = (NI)0;
2160 		colontmp_ = (NI)0;
2161 		colontmp_ = (NI)((path ? path->Sup.len : 0) - ((NI) 1));
2162 		res = colontmp_;
2163 		{
2164 			while (1) {
2165 				if (!(((NI) 1) <= res)) goto LA3;
2166 				i = res;
2167 				{
2168 					if (!((NU8)(path->data[i]) == (NU8)(46))) goto LA6_;
2169 					result = i;
2170 					goto LA1;
2171 				}
2172 				goto LA4_;
2173 				LA6_: ;
2174 				{
2175 					if (!(((NU8)(path->data[i])) == ((NU8)(47)) || ((NU8)(path->data[i])) == ((NU8)(47)))) goto LA9_;
2176 					goto LA1;
2177 				}
2178 				goto LA4_;
2179 				LA9_: ;
2180 				LA4_: ;
2181 				res -= ((NI) 1);
2182 			} LA3: ;
2183 		}
2184 	} LA1: ;
2185 	return result;
2186 }
N_INLINE(void,appendChar)2187 static N_INLINE(void, appendChar)(NimStringDesc* dest, NIM_CHAR c) {
2188 	(*dest).data[(*dest).Sup.len] = c;
2189 	(*dest).data[(NI)((*dest).Sup.len + ((NI) 1))] = 0;
2190 	(*dest).Sup.len += ((NI) 1);
2191 }
N_NIMCALL(NimStringDesc *,normExt__pureZos_268)2192 N_LIB_PRIVATE N_NIMCALL(NimStringDesc*, normExt__pureZos_268)(NimStringDesc* ext) {
2193 	NimStringDesc* result;
2194 	result = NIM_NIL;
2195 	{
2196 		NIM_BOOL T3_;
2197 		T3_ = (NIM_BOOL)0;
2198 		T3_ = ((ext ? ext->Sup.len : 0) == 0);
2199 		if (T3_) goto LA4_;
2200 		T3_ = ((NU8)(ext->data[((NI) 0)]) == (NU8)(46));
2201 		LA4_: ;
2202 		if (!T3_) goto LA5_;
2203 		result = copyString(ext);
2204 	}
2205 	goto LA1_;
2206 	LA5_: ;
2207 	{
2208 		NimStringDesc* T8_;
2209 		T8_ = NIM_NIL;
2210 		T8_ = rawNewString((ext ? ext->Sup.len : 0) + 1);
2211 appendChar(T8_, 46);
2212 appendString(T8_, ext);
2213 		result = T8_;
2214 	}
2215 	LA1_: ;
2216 	return result;
2217 }
N_NIMCALL(NimStringDesc *,noschangeFileExt)2218 N_LIB_PRIVATE N_NIMCALL(NimStringDesc*, noschangeFileExt)(NimStringDesc* filename, NimStringDesc* ext) {
2219 	NimStringDesc* result;
2220 	NI extPos;
2221 	result = NIM_NIL;
2222 	extPos = searchExtPos__pureZos_271(filename);
2223 	{
2224 		NimStringDesc* T5_;
2225 		NimStringDesc* T6_;
2226 		if (!(extPos < ((NI) 0))) goto LA3_;
2227 		T5_ = NIM_NIL;
2228 		T6_ = NIM_NIL;
2229 		T6_ = normExt__pureZos_268(ext);
2230 		T5_ = rawNewString((filename ? filename->Sup.len : 0) + (T6_ ? T6_->Sup.len : 0) + 0);
2231 appendString(T5_, filename);
2232 appendString(T5_, T6_);
2233 		result = T5_;
2234 	}
2235 	goto LA1_;
2236 	LA3_: ;
2237 	{
2238 		NimStringDesc* T8_;
2239 		NimStringDesc* T9_;
2240 		NimStringDesc* T10_;
2241 		T8_ = NIM_NIL;
2242 		T9_ = NIM_NIL;
2243 		T9_ = substr__system_7743(filename, ((NI) 0), (NI)(extPos - ((NI) 1)));
2244 		T10_ = NIM_NIL;
2245 		T10_ = normExt__pureZos_268(ext);
2246 		T8_ = rawNewString((T9_ ? T9_->Sup.len : 0) + (T10_ ? T10_->Sup.len : 0) + 0);
2247 appendString(T8_, T9_);
2248 appendString(T8_, T10_);
2249 		result = T8_;
2250 	}
2251 	LA1_: ;
2252 	return result;
2253 }
N_NIMCALL(NimStringDesc *,nosaddFileExt)2254 N_LIB_PRIVATE N_NIMCALL(NimStringDesc*, nosaddFileExt)(NimStringDesc* filename, NimStringDesc* ext) {
2255 	NimStringDesc* result;
2256 	NI extPos;
2257 	result = NIM_NIL;
2258 	extPos = searchExtPos__pureZos_271(filename);
2259 	{
2260 		NimStringDesc* T5_;
2261 		NimStringDesc* T6_;
2262 		if (!(extPos < ((NI) 0))) goto LA3_;
2263 		T5_ = NIM_NIL;
2264 		T6_ = NIM_NIL;
2265 		T6_ = normExt__pureZos_268(ext);
2266 		T5_ = rawNewString((filename ? filename->Sup.len : 0) + (T6_ ? T6_->Sup.len : 0) + 0);
2267 appendString(T5_, filename);
2268 appendString(T5_, T6_);
2269 		result = T5_;
2270 	}
2271 	goto LA1_;
2272 	LA3_: ;
2273 	{
2274 		result = copyString(filename);
2275 	}
2276 	LA1_: ;
2277 	return result;
2278 }
N_NIMCALL(NIM_BOOL,nostryRemoveFile)2279 N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, nostryRemoveFile)(NimStringDesc* file) {
2280 	NIM_BOOL result;
2281 	result = (NIM_BOOL)0;
2282 	result = NIM_TRUE;
2283 	{
2284 		NIM_BOOL T3_;
2285 		int T4_;
2286 		T3_ = (NIM_BOOL)0;
2287 		T4_ = (int)0;
2288 		T4_ = unlink(nimToCStringConv(file));
2289 		T3_ = !((T4_ == ((NI32) 0)));
2290 		if (!(T3_)) goto LA5_;
2291 		T3_ = !((errno == ENOENT));
2292 		LA5_: ;
2293 		if (!T3_) goto LA6_;
2294 		result = NIM_FALSE;
2295 	}
2296 	LA6_: ;
2297 	return result;
2298 }
N_INLINE(void,addEscapedChar__system_7484)2299 static N_INLINE(void, addEscapedChar__system_7484)(NimStringDesc** s, NIM_CHAR c) {
2300 	switch (((NU8)(c))) {
2301 	case 7:
2302 	{
2303 		unsureAsgnRef((void**) (&(*s)), resizeString((*s), 2));
2304 appendString((*s), ((NimStringDesc*) &TM__yu6cxgKBBXbNsTkT9cyMd4g_25));
2305 	}
2306 	break;
2307 	case 8:
2308 	{
2309 		unsureAsgnRef((void**) (&(*s)), resizeString((*s), 2));
2310 appendString((*s), ((NimStringDesc*) &TM__yu6cxgKBBXbNsTkT9cyMd4g_26));
2311 	}
2312 	break;
2313 	case 9:
2314 	{
2315 		unsureAsgnRef((void**) (&(*s)), resizeString((*s), 2));
2316 appendString((*s), ((NimStringDesc*) &TM__yu6cxgKBBXbNsTkT9cyMd4g_27));
2317 	}
2318 	break;
2319 	case 10:
2320 	{
2321 		unsureAsgnRef((void**) (&(*s)), resizeString((*s), 2));
2322 appendString((*s), ((NimStringDesc*) &TM__yu6cxgKBBXbNsTkT9cyMd4g_28));
2323 	}
2324 	break;
2325 	case 11:
2326 	{
2327 		unsureAsgnRef((void**) (&(*s)), resizeString((*s), 2));
2328 appendString((*s), ((NimStringDesc*) &TM__yu6cxgKBBXbNsTkT9cyMd4g_29));
2329 	}
2330 	break;
2331 	case 12:
2332 	{
2333 		unsureAsgnRef((void**) (&(*s)), resizeString((*s), 2));
2334 appendString((*s), ((NimStringDesc*) &TM__yu6cxgKBBXbNsTkT9cyMd4g_30));
2335 	}
2336 	break;
2337 	case 13:
2338 	{
2339 		unsureAsgnRef((void**) (&(*s)), resizeString((*s), 2));
2340 appendString((*s), ((NimStringDesc*) &TM__yu6cxgKBBXbNsTkT9cyMd4g_31));
2341 	}
2342 	break;
2343 	case 27:
2344 	{
2345 		unsureAsgnRef((void**) (&(*s)), resizeString((*s), 2));
2346 appendString((*s), ((NimStringDesc*) &TM__yu6cxgKBBXbNsTkT9cyMd4g_32));
2347 	}
2348 	break;
2349 	case 92:
2350 	{
2351 		unsureAsgnRef((void**) (&(*s)), resizeString((*s), 2));
2352 appendString((*s), ((NimStringDesc*) &TM__yu6cxgKBBXbNsTkT9cyMd4g_33));
2353 	}
2354 	break;
2355 	case 39:
2356 	{
2357 		unsureAsgnRef((void**) (&(*s)), resizeString((*s), 2));
2358 appendString((*s), ((NimStringDesc*) &TM__yu6cxgKBBXbNsTkT9cyMd4g_34));
2359 	}
2360 	break;
2361 	case 34:
2362 	{
2363 		unsureAsgnRef((void**) (&(*s)), resizeString((*s), 2));
2364 appendString((*s), ((NimStringDesc*) &TM__yu6cxgKBBXbNsTkT9cyMd4g_35));
2365 	}
2366 	break;
2367 	case 32 ... 33:
2368 	case 35 ... 38:
2369 	case 40 ... 91:
2370 	case 93 ... 126:
2371 	{
2372 		unsureAsgnRef((void**) (&(*s)), addChar((*s), c));
2373 	}
2374 	break;
2375 	default:
2376 	{
2377 		NI n;
2378 		unsureAsgnRef((void**) (&(*s)), resizeString((*s), 2));
2379 appendString((*s), ((NimStringDesc*) &TM__yu6cxgKBBXbNsTkT9cyMd4g_36));
2380 		n = ((NU8)(c));
2381 		unsureAsgnRef((void**) (&(*s)), addChar((*s), ((NimStringDesc*) &TM__yu6cxgKBBXbNsTkT9cyMd4g_37)->data[(NI)((NI32)((NI)(n & ((NI) 240))) >> (NU32)(((NI) 4)))]));
2382 		unsureAsgnRef((void**) (&(*s)), addChar((*s), ((NimStringDesc*) &TM__yu6cxgKBBXbNsTkT9cyMd4g_37)->data[(NI)(n & ((NI) 15))]));
2383 	}
2384 	break;
2385 	}
2386 }
N_NIMCALL(void,addQuoted__pureZos_449)2387 N_LIB_PRIVATE N_NIMCALL(void, addQuoted__pureZos_449)(NimStringDesc** s, NimStringDesc* x) {
2388 	unsureAsgnRef((void**) (&(*s)), resizeString((*s), 1));
2389 appendString((*s), ((NimStringDesc*) &TM__yu6cxgKBBXbNsTkT9cyMd4g_24));
2390 	{
2391 		NIM_CHAR c;
2392 		NI i;
2393 		NI L;
2394 		c = (NIM_CHAR)0;
2395 		i = ((NI) 0);
2396 		L = (x ? x->Sup.len : 0);
2397 		{
2398 			while (1) {
2399 				if (!(i < L)) goto LA3;
2400 				c = x->data[i];
2401 				{
2402 					if (!((NU8)(c) <= (NU8)(127))) goto LA6_;
2403 					addEscapedChar__system_7484(s, c);
2404 				}
2405 				goto LA4_;
2406 				LA6_: ;
2407 				{
2408 					unsureAsgnRef((void**) (&(*s)), addChar((*s), c));
2409 				}
2410 				LA4_: ;
2411 				i += ((NI) 1);
2412 			} LA3: ;
2413 		}
2414 	}
2415 	unsureAsgnRef((void**) (&(*s)), resizeString((*s), 1));
2416 appendString((*s), ((NimStringDesc*) &TM__yu6cxgKBBXbNsTkT9cyMd4g_24));
2417 }
N_NIMCALL(NimStringDesc *,dollar___pureZos_429)2418 N_LIB_PRIVATE N_NIMCALL(NimStringDesc*, dollar___pureZos_429)(tyTuple__UV3llMMYFckfui8YMBuUZA x) {
2419 	NimStringDesc* result;
2420 	NI count;
2421 	result = NIM_NIL;
2422 	result = copyString(((NimStringDesc*) &TM__yu6cxgKBBXbNsTkT9cyMd4g_22));
2423 	count = ((NI) 0);
2424 	{
2425 		if (!(((NI) 0) < count)) goto LA3_;
2426 		result = resizeString(result, 2);
2427 appendString(result, ((NimStringDesc*) &TM__yu6cxgKBBXbNsTkT9cyMd4g_23));
2428 	}
2429 	LA3_: ;
2430 	count += ((NI) 1);
2431 	addQuoted__pureZos_449((&result), x.Field0);
2432 	{
2433 		if (!(((NI) 0) < count)) goto LA7_;
2434 		result = resizeString(result, 2);
2435 appendString(result, ((NimStringDesc*) &TM__yu6cxgKBBXbNsTkT9cyMd4g_23));
2436 	}
2437 	LA7_: ;
2438 	count += ((NI) 1);
2439 	addQuoted__pureZos_449((&result), x.Field1);
2440 	{
2441 		if (!(count == ((NI) 1))) goto LA11_;
2442 		result = resizeString(result, 1);
2443 appendString(result, ((NimStringDesc*) &TM__yu6cxgKBBXbNsTkT9cyMd4g_38));
2444 	}
2445 	LA11_: ;
2446 	result = resizeString(result, 1);
2447 appendString(result, ((NimStringDesc*) &TM__yu6cxgKBBXbNsTkT9cyMd4g_39));
2448 	return result;
2449 }
N_NIMCALL(void,putEnv__pureZos_426)2450 N_LIB_PRIVATE N_NIMCALL(void, putEnv__pureZos_426)(NimStringDesc* key, NimStringDesc* val) {
2451 	{
2452 		int T3_;
2453 		NI32 T6_;
2454 		tyTuple__UV3llMMYFckfui8YMBuUZA T7_;
2455 		NimStringDesc* T8_;
2456 		T3_ = (int)0;
2457 		T3_ = setenv(nimToCStringConv(key), nimToCStringConv(val), ((NI32) 1));
2458 		if (!!((T3_ == ((NI32) 0)))) goto LA4_;
2459 		T6_ = (NI32)0;
2460 		T6_ = osLastError__pureZos_408();
2461 		nimZeroMem((void*)(&T7_), sizeof(tyTuple__UV3llMMYFckfui8YMBuUZA));
2462 		T7_.Field0 = copyString(key);
2463 		T7_.Field1 = copyString(val);
2464 		T8_ = NIM_NIL;
2465 		T8_ = dollar___pureZos_429(T7_);
2466 		raiseOSError__pureZos_405(T6_, T8_);
2467 	}
2468 	LA4_: ;
2469 }
N_INLINE(NI,find__pureZos_665)2470 static N_INLINE(NI, find__pureZos_665)(NIM_CHAR* a, NI aLen_0, NIM_CHAR item) {
2471 	NI result;
2472 {	result = (NI)0;
2473 	result = ((NI) 0);
2474 	{
2475 		NIM_CHAR i;
2476 		NI i_2;
2477 		i = (NIM_CHAR)0;
2478 		i_2 = ((NI) 0);
2479 		{
2480 			while (1) {
2481 				if (!(i_2 < aLen_0)) goto LA3;
2482 				i = a[i_2];
2483 				{
2484 					if (!((NU8)(i) == (NU8)(item))) goto LA6_;
2485 					goto BeforeRet_;
2486 				}
2487 				LA6_: ;
2488 				result += ((NI) 1);
2489 				i_2 += ((NI) 1);
2490 			} LA3: ;
2491 		}
2492 	}
2493 	result = ((NI) -1);
2494 	}BeforeRet_: ;
2495 	return result;
2496 }
N_INLINE(NIM_BOOL,contains__pureZos_660)2497 static N_INLINE(NIM_BOOL, contains__pureZos_660)(NIM_CHAR* a, NI aLen_0, NIM_CHAR item) {
2498 	NIM_BOOL result;
2499 	NI T1_;
2500 {	result = (NIM_BOOL)0;
2501 	T1_ = (NI)0;
2502 	T1_ = find__pureZos_665(a, aLen_0, item);
2503 	result = (((NI) 0) <= T1_);
2504 	goto BeforeRet_;
2505 	}BeforeRet_: ;
2506 	return result;
2507 }
N_NIMCALL(NIM_BOOL,nossymlinkExists)2508 N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, nossymlinkExists)(NimStringDesc* link) {
2509 	NIM_BOOL result;
2510 	struct stat res;
2511 	NIM_BOOL T1_;
2512 	int T2_;
2513 	result = (NIM_BOOL)0;
2514 	nimZeroMem((void*)(&res), sizeof(struct stat));
2515 	T1_ = (NIM_BOOL)0;
2516 	T2_ = (int)0;
2517 	T2_ = lstat(nimToCStringConv(link), (&res));
2518 	T1_ = (((NI32) 0) <= T2_);
2519 	if (!(T1_)) goto LA3_;
2520 	T1_ = S_ISLNK(res.st_mode);
2521 	LA3_: ;
2522 	result = T1_;
2523 	return result;
2524 }
N_NIMCALL(NimStringDesc *,findExe__pureZos_653)2525 N_LIB_PRIVATE N_NIMCALL(NimStringDesc*, findExe__pureZos_653)(NimStringDesc* exe, NIM_BOOL followSymlinks, NimStringDesc** extensions, NI extensionsLen_0) {
2526 	NimStringDesc* result;
2527 	NimStringDesc* path;
2528 {	result = NIM_NIL;
2529 	{
2530 		if (!((exe ? exe->Sup.len : 0) == ((NI) 0))) goto LA3_;
2531 		goto BeforeRet_;
2532 	}
2533 	LA3_: ;
2534 	{
2535 		NIM_BOOL T7_;
2536 		T7_ = (NIM_BOOL)0;
2537 		T7_ = contains__pureZos_660(exe->data, (exe ? exe->Sup.len : 0), 47);
2538 		if (!T7_) goto LA8_;
2539 		{
2540 			NimStringDesc** extX60gensym82_;
2541 			NI i;
2542 			extX60gensym82_ = (NimStringDesc**)0;
2543 			i = ((NI) 0);
2544 			{
2545 				while (1) {
2546 					if (!(i < extensionsLen_0)) goto LA12;
2547 					extX60gensym82_ = (&extensions[i]);
2548 					result = nosaddFileExt(exe, (*extX60gensym82_));
2549 					{
2550 						NIM_BOOL T15_;
2551 						T15_ = (NIM_BOOL)0;
2552 						T15_ = nosfileExists(result);
2553 						if (!T15_) goto LA16_;
2554 						goto BeforeRet_;
2555 					}
2556 					LA16_: ;
2557 					i += ((NI) 1);
2558 				} LA12: ;
2559 			}
2560 		}
2561 	}
2562 	LA8_: ;
2563 	path = getEnv__pureZos_418(((NimStringDesc*) &TM__yu6cxgKBBXbNsTkT9cyMd4g_20), ((NimStringDesc*) NIM_NIL));
2564 	{
2565 		NimStringDesc* candidate;
2566 		NI lastX60gensym34_;
2567 		NI splitsX60gensym34_;
2568 		candidate = NIM_NIL;
2569 		lastX60gensym34_ = ((NI) 0);
2570 		splitsX60gensym34_ = ((NI) -1);
2571 		{
2572 			while (1) {
2573 				NI firstX60gensym34_;
2574 				if (!(lastX60gensym34_ <= (path ? path->Sup.len : 0))) goto LA20;
2575 				firstX60gensym34_ = lastX60gensym34_;
2576 				{
2577 					while (1) {
2578 						NIM_BOOL T23_;
2579 						T23_ = (NIM_BOOL)0;
2580 						T23_ = (lastX60gensym34_ < (path ? path->Sup.len : 0));
2581 						if (!(T23_)) goto LA24_;
2582 						T23_ = !(((NU8)(path->data[lastX60gensym34_]) == (NU8)(58)));
2583 						LA24_: ;
2584 						if (!T23_) goto LA22;
2585 						lastX60gensym34_ += ((NI) 1);
2586 					} LA22: ;
2587 				}
2588 				{
2589 					if (!(splitsX60gensym34_ == ((NI) 0))) goto LA27_;
2590 					lastX60gensym34_ = (path ? path->Sup.len : 0);
2591 				}
2592 				LA27_: ;
2593 				candidate = substr__system_7743(path, firstX60gensym34_, (NI)(lastX60gensym34_ - ((NI) 1)));
2594 				{
2595 					NimStringDesc* x;
2596 					NimStringDesc* T34_;
2597 					{
2598 						if (!((candidate ? candidate->Sup.len : 0) == ((NI) 0))) goto LA32_;
2599 						goto LA29;
2600 					}
2601 					LA32_: ;
2602 					T34_ = NIM_NIL;
2603 					T34_ = expandTilde__pureZos_585(candidate);
2604 					x = slash___pureZos_121(T34_, exe);
2605 					{
2606 						NimStringDesc** ext;
2607 						NI i_2;
2608 						ext = (NimStringDesc**)0;
2609 						i_2 = ((NI) 0);
2610 						{
2611 							while (1) {
2612 								NimStringDesc* x_2;
2613 								if (!(i_2 < extensionsLen_0)) goto LA37;
2614 								ext = (&extensions[i_2]);
2615 								x_2 = nosaddFileExt(x, (*ext));
2616 								{
2617 									NIM_BOOL T40_;
2618 									T40_ = (NIM_BOOL)0;
2619 									T40_ = nosfileExists(x_2);
2620 									if (!T40_) goto LA41_;
2621 									{
2622 										while (1) {
2623 											if (!followSymlinks) goto LA44;
2624 											{
2625 												NIM_BOOL T47_;
2626 												NimStringDesc* r;
2627 												NI len;
2628 												T47_ = (NIM_BOOL)0;
2629 												T47_ = nossymlinkExists(x_2);
2630 												if (!T47_) goto LA48_;
2631 												r = mnewString(((NI) 1024));
2632 												len = readlink(nimToCStringConv(x_2), nimToCStringConv(r), ((NI) 1024));
2633 												{
2634 													NI32 T54_;
2635 													if (!(len < ((NI) 0))) goto LA52_;
2636 													T54_ = (NI32)0;
2637 													T54_ = osLastError__pureZos_408();
2638 													raiseOSError__pureZos_405(T54_, exe);
2639 												}
2640 												LA52_: ;
2641 												{
2642 													if (!(((NI) 1024) < len)) goto LA57_;
2643 													r = mnewString(((NI) ((NI)(len + ((NI) 1)))));
2644 													len = readlink(nimToCStringConv(x_2), nimToCStringConv(r), len);
2645 												}
2646 												LA57_: ;
2647 												r = setLengthStr(r, ((NI) (len)));
2648 												{
2649 													NIM_BOOL T61_;
2650 													T61_ = (NIM_BOOL)0;
2651 													T61_ = nosisAbsolute(r);
2652 													if (!T61_) goto LA62_;
2653 													x_2 = copyString(r);
2654 												}
2655 												goto LA59_;
2656 												LA62_: ;
2657 												{
2658 													NimStringDesc* T65_;
2659 													T65_ = NIM_NIL;
2660 													T65_ = nosparentDir(x_2);
2661 													x_2 = slash___pureZos_121(T65_, r);
2662 												}
2663 												LA59_: ;
2664 											}
2665 											goto LA45_;
2666 											LA48_: ;
2667 											{
2668 												goto LA43;
2669 											}
2670 											LA45_: ;
2671 										} LA44: ;
2672 									} LA43: ;
2673 									result = copyString(x_2);
2674 									goto BeforeRet_;
2675 								}
2676 								LA41_: ;
2677 								i_2 += ((NI) 1);
2678 							} LA37: ;
2679 						}
2680 					}
2681 				} LA29: ;
2682 				{
2683 					if (!(splitsX60gensym34_ == ((NI) 0))) goto LA69_;
2684 					goto LA19;
2685 				}
2686 				LA69_: ;
2687 				splitsX60gensym34_ -= ((NI) 1);
2688 				lastX60gensym34_ += ((NI) 1);
2689 			} LA20: ;
2690 		} LA19: ;
2691 	}
2692 	result = ((NimStringDesc*) NIM_NIL);
2693 	}BeforeRet_: ;
2694 	return result;
2695 }
N_NIMCALL(void,nosremoveFile)2696 N_LIB_PRIVATE N_NIMCALL(void, nosremoveFile)(NimStringDesc* file) {
2697 	{
2698 		NIM_BOOL T3_;
2699 		NI32 T6_;
2700 		T3_ = (NIM_BOOL)0;
2701 		T3_ = nostryRemoveFile(file);
2702 		if (!!(T3_)) goto LA4_;
2703 		T6_ = (NI32)0;
2704 		T6_ = osLastError__pureZos_408();
2705 		raiseOSError__pureZos_405(T6_, file);
2706 	}
2707 	LA4_: ;
2708 }
N_NIMCALL(NIM_BOOL,existsEnv__pureZos_423)2709 N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, existsEnv__pureZos_423)(NimStringDesc* key) {
2710 	NIM_BOOL result;
2711 	NCSTRING T1_;
2712 	NIM_BOOL T2_;
2713 {	result = (NIM_BOOL)0;
2714 	T1_ = (NCSTRING)0;
2715 	T1_ = getenv(nimToCStringConv(key));
2716 	T2_ = (NIM_BOOL)0;
2717 	T2_ = eqeq___system_7723(T1_, ((NCSTRING) NIM_NIL));
2718 	result = !(T2_);
2719 	goto BeforeRet_;
2720 	}BeforeRet_: ;
2721 	return result;
2722 }
N_NIMCALL(void,delEnv__pureZos_465)2723 N_LIB_PRIVATE N_NIMCALL(void, delEnv__pureZos_465)(NimStringDesc* key) {
2724 	{
2725 		int T3_;
2726 		NI32 T6_;
2727 		T3_ = (int)0;
2728 		T3_ = unsetenv(nimToCStringConv(key));
2729 		if (!!((T3_ == ((NI32) 0)))) goto LA4_;
2730 		T6_ = (NI32)0;
2731 		T6_ = osLastError__pureZos_408();
2732 		raiseOSError__pureZos_405(T6_, key);
2733 	}
2734 	LA4_: ;
2735 }
N_NIMCALL(int,exitStatusLikeShell__pureZos_1107)2736 N_LIB_PRIVATE N_NIMCALL(int, exitStatusLikeShell__pureZos_1107)(int status) {
2737 	int result;
2738 	result = (int)0;
2739 	{
2740 		NIM_BOOL T3_;
2741 		int T6_;
2742 		T3_ = (NIM_BOOL)0;
2743 		T3_ = WIFSIGNALED(status);
2744 		if (!T3_) goto LA4_;
2745 		T6_ = (int)0;
2746 		T6_ = WTERMSIG(status);
2747 		result = (NI32)(((NI32) 128) + T6_);
2748 	}
2749 	goto LA1_;
2750 	LA4_: ;
2751 	{
2752 		result = WEXITSTATUS(status);
2753 	}
2754 	LA1_: ;
2755 	return result;
2756 }
N_INLINE(void,pushSafePoint)2757 static N_INLINE(void, pushSafePoint)(TSafePoint* s) {
2758 	(*s).prev = excHandler__system_2565;
2759 	excHandler__system_2565 = s;
2760 }
N_INLINE(void,popSafePoint)2761 static N_INLINE(void, popSafePoint)(void) {
2762 	excHandler__system_2565 = (*excHandler__system_2565).prev;
2763 }
N_NIMCALL(void,rawRemoveDir__pureZos_1408)2764 N_LIB_PRIVATE N_NIMCALL(void, rawRemoveDir__pureZos_1408)(NimStringDesc* dir) {
2765 	{
2766 		NIM_BOOL T3_;
2767 		int T4_;
2768 		NI32 T8_;
2769 		T3_ = (NIM_BOOL)0;
2770 		T4_ = (int)0;
2771 		T4_ = rmdir(nimToCStringConv(dir));
2772 		T3_ = !((T4_ == ((NI32) 0)));
2773 		if (!(T3_)) goto LA5_;
2774 		T3_ = !((errno == ENOENT));
2775 		LA5_: ;
2776 		if (!T3_) goto LA6_;
2777 		T8_ = (NI32)0;
2778 		T8_ = osLastError__pureZos_408();
2779 		raiseOSError__pureZos_405(T8_, dir);
2780 	}
2781 	LA6_: ;
2782 }
N_NIMCALL(void,nosremoveDir)2783 N_LIB_PRIVATE N_NIMCALL(void, nosremoveDir)(NimStringDesc* dir, NIM_BOOL checkDir) {
2784 	{
2785 		tyEnum_PathComponent__9c1SIU9cO1wHcl09b703A9cDrg kind;
2786 		NimStringDesc* path;
2787 		DIR* d;
2788 		kind = (tyEnum_PathComponent__9c1SIU9cO1wHcl09b703A9cDrg)0;
2789 		path = NIM_NIL;
2790 		d = opendir(nimToCStringConv(dir));
2791 		{
2792 			if (!(d == ((DIR*) NIM_NIL))) goto LA4_;
2793 			{
2794 				NI32 T10_;
2795 				if (!checkDir) goto LA8_;
2796 				T10_ = (NI32)0;
2797 				T10_ = osLastError__pureZos_408();
2798 				raiseOSError__pureZos_405(T10_, dir);
2799 			}
2800 			LA8_: ;
2801 		}
2802 		goto LA2_;
2803 		LA4_: ;
2804 		{
2805 			TSafePoint TM__yu6cxgKBBXbNsTkT9cyMd4g_40;
2806 			pushSafePoint(&TM__yu6cxgKBBXbNsTkT9cyMd4g_40);
2807 			TM__yu6cxgKBBXbNsTkT9cyMd4g_40.status = _setjmp(TM__yu6cxgKBBXbNsTkT9cyMd4g_40.context);
2808 			if (TM__yu6cxgKBBXbNsTkT9cyMd4g_40.status == 0) {
2809 			{
2810 				while (1) {
2811 					{
2812 						struct dirent* x;
2813 						NimStringDesc* y;
2814 						x = readdir(d);
2815 						{
2816 							if (!(x == ((struct dirent*) NIM_NIL))) goto LA17_;
2817 							goto LA12;
2818 						}
2819 						LA17_: ;
2820 						y = cstrToNimstr(((NCSTRING) ((*x).d_name)));
2821 						{
2822 							NIM_BOOL T21_;
2823 							struct stat s;
2824 							NimStringDesc* path_2;
2825 							tyEnum_PathComponent__9c1SIU9cO1wHcl09b703A9cDrg k;
2826 							T21_ = (NIM_BOOL)0;
2827 							T21_ = !(eqStrings(y, ((NimStringDesc*) &TM__yu6cxgKBBXbNsTkT9cyMd4g_11)));
2828 							if (!(T21_)) goto LA22_;
2829 							T21_ = !(eqStrings(y, ((NimStringDesc*) &TM__yu6cxgKBBXbNsTkT9cyMd4g_17)));
2830 							LA22_: ;
2831 							if (!T21_) goto LA23_;
2832 							nimZeroMem((void*)(&s), sizeof(struct stat));
2833 							path_2 = slash___pureZos_121(dir, y);
2834 							{
2835 								if (!NIM_TRUE) goto LA27_;
2836 								y = copyString(path_2);
2837 							}
2838 							LA27_: ;
2839 							k = ((tyEnum_PathComponent__9c1SIU9cO1wHcl09b703A9cDrg) 0);
2840 							switch ((*x).d_type) {
2841 							case ((NI) 4):
2842 							{
2843 								k = ((tyEnum_PathComponent__9c1SIU9cO1wHcl09b703A9cDrg) 2);
2844 							}
2845 							break;
2846 							case ((NI) 10):
2847 							{
2848 								{
2849 									NIM_BOOL T33_;
2850 									T33_ = (NIM_BOOL)0;
2851 									T33_ = nosdirExists(path_2);
2852 									if (!T33_) goto LA34_;
2853 									k = ((tyEnum_PathComponent__9c1SIU9cO1wHcl09b703A9cDrg) 3);
2854 								}
2855 								goto LA31_;
2856 								LA34_: ;
2857 								{
2858 									k = ((tyEnum_PathComponent__9c1SIU9cO1wHcl09b703A9cDrg) 1);
2859 								}
2860 								LA31_: ;
2861 							}
2862 							break;
2863 							case ((NI) 0):
2864 							{
2865 								{
2866 									int T40_;
2867 									T40_ = (int)0;
2868 									T40_ = lstat(nimToCStringConv(path_2), (&s));
2869 									if (!(T40_ < ((NI32) 0))) goto LA41_;
2870 									goto LA14;
2871 								}
2872 								goto LA38_;
2873 								LA41_: ;
2874 								{
2875 									NIM_BOOL T44_;
2876 									T44_ = (NIM_BOOL)0;
2877 									T44_ = S_ISDIR(s.st_mode);
2878 									if (!T44_) goto LA45_;
2879 									k = ((tyEnum_PathComponent__9c1SIU9cO1wHcl09b703A9cDrg) 2);
2880 								}
2881 								goto LA38_;
2882 								LA45_: ;
2883 								{
2884 									NIM_BOOL T48_;
2885 									T48_ = (NIM_BOOL)0;
2886 									T48_ = S_ISLNK(s.st_mode);
2887 									if (!T48_) goto LA49_;
2888 									k = getSymlinkFileKind__pureZos_1233(path_2);
2889 								}
2890 								goto LA38_;
2891 								LA49_: ;
2892 								LA38_: ;
2893 							}
2894 							break;
2895 							default:
2896 							{
2897 							}
2898 							break;
2899 							}
2900 							kind = k;
2901 							path = y;
2902 							switch (kind) {
2903 							case ((tyEnum_PathComponent__9c1SIU9cO1wHcl09b703A9cDrg) 0):
2904 							case ((tyEnum_PathComponent__9c1SIU9cO1wHcl09b703A9cDrg) 1):
2905 							case ((tyEnum_PathComponent__9c1SIU9cO1wHcl09b703A9cDrg) 3):
2906 							{
2907 								nosremoveFile(path);
2908 							}
2909 							break;
2910 							case ((tyEnum_PathComponent__9c1SIU9cO1wHcl09b703A9cDrg) 2):
2911 							{
2912 								nosremoveDir(path, NIM_TRUE);
2913 							}
2914 							break;
2915 							}
2916 						}
2917 						LA23_: ;
2918 					} LA14: ;
2919 				}
2920 			} LA12: ;
2921 			popSafePoint();
2922 			}
2923 			else {
2924 				popSafePoint();
2925 			}
2926 			{
2927 				int T56_;
2928 				T56_ = (int)0;
2929 				T56_ = closedir(d);
2930 				(void)(T56_);
2931 				if (TM__yu6cxgKBBXbNsTkT9cyMd4g_40.status != 0) nimLeaveFinally();
2932 			}
2933 			if (TM__yu6cxgKBBXbNsTkT9cyMd4g_40.status != 0) reraiseException();
2934 		}
2935 		LA2_: ;
2936 	}
2937 	rawRemoveDir__pureZos_1408(dir);
2938 }
N_NIMCALL(NIM_BOOL,tryMoveFSObject__pureZos_1094)2939 N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, tryMoveFSObject__pureZos_1094)(NimStringDesc* source, NimStringDesc* dest, NIM_BOOL isDir) {
2940 	NIM_BOOL result;
2941 	int T1_;
2942 	result = (NIM_BOOL)0;
2943 	T1_ = (int)0;
2944 	T1_ = rename(nimToCStringConv(source), nimToCStringConv(dest));
2945 	result = (T1_ == ((NI32) 0));
2946 	{
2947 		NI32 err;
2948 		NIM_BOOL isAccessDeniedError;
2949 		if (!!(result)) goto LA4_;
2950 		err = osLastError__pureZos_408();
2951 		isAccessDeniedError = (err == EXDEV);
2952 		{
2953 			tyTuple__UV3llMMYFckfui8YMBuUZA T10_;
2954 			NimStringDesc* T11_;
2955 			if (!!(isAccessDeniedError)) goto LA8_;
2956 			nimZeroMem((void*)(&T10_), sizeof(tyTuple__UV3llMMYFckfui8YMBuUZA));
2957 			T10_.Field0 = copyString(source);
2958 			T10_.Field1 = copyString(dest);
2959 			T11_ = NIM_NIL;
2960 			T11_ = dollar___pureZos_429(T10_);
2961 			raiseOSError__pureZos_405(err, T11_);
2962 		}
2963 		LA8_: ;
2964 	}
2965 	LA4_: ;
2966 	return result;
2967 }
N_INLINE(NI,countSetBitsImpl__systemZcountbits95impl_26)2968 static N_INLINE(NI, countSetBitsImpl__systemZcountbits95impl_26)(NU32 x) {
2969 	NI result;
2970 	int T1_;
2971 	result = (NI)0;
2972 	T1_ = (int)0;
2973 	T1_ = __builtin_popcount(x);
2974 	result = ((NI) (T1_));
2975 	return result;
2976 }
N_INLINE(NI,countBits32)2977 static N_INLINE(NI, countBits32)(NU32 n) {
2978 	NI result;
2979 	result = (NI)0;
2980 	result = countSetBitsImpl__systemZcountbits95impl_26(n);
2981 	return result;
2982 }
N_NIMCALL(void,createSymlink__pureZos_1018)2983 N_LIB_PRIVATE N_NIMCALL(void, createSymlink__pureZos_1018)(NimStringDesc* src, NimStringDesc* dest) {
2984 	{
2985 		int T3_;
2986 		NI32 T6_;
2987 		tyTuple__UV3llMMYFckfui8YMBuUZA T7_;
2988 		NimStringDesc* T8_;
2989 		T3_ = (int)0;
2990 		T3_ = symlink(nimToCStringConv(src), nimToCStringConv(dest));
2991 		if (!!((T3_ == ((NI32) 0)))) goto LA4_;
2992 		T6_ = (NI32)0;
2993 		T6_ = osLastError__pureZos_408();
2994 		nimZeroMem((void*)(&T7_), sizeof(tyTuple__UV3llMMYFckfui8YMBuUZA));
2995 		T7_.Field0 = copyString(src);
2996 		T7_.Field1 = copyString(dest);
2997 		T8_ = NIM_NIL;
2998 		T8_ = dollar___pureZos_429(T7_);
2999 		raiseOSError__pureZos_405(T6_, T8_);
3000 	}
3001 	LA4_: ;
3002 }
N_NIMCALL(NimStringDesc *,expandSymlink__pureZos_1024)3003 N_LIB_PRIVATE N_NIMCALL(NimStringDesc*, expandSymlink__pureZos_1024)(NimStringDesc* symlinkPath) {
3004 	NimStringDesc* result;
3005 	NI len;
3006 	result = NIM_NIL;
3007 	result = mnewString(((NI) 1024));
3008 	len = readlink(nimToCStringConv(symlinkPath), nimToCStringConv(result), ((NI) 1024));
3009 	{
3010 		NI32 T5_;
3011 		if (!(len < ((NI) 0))) goto LA3_;
3012 		T5_ = (NI32)0;
3013 		T5_ = osLastError__pureZos_408();
3014 		raiseOSError__pureZos_405(T5_, symlinkPath);
3015 	}
3016 	LA3_: ;
3017 	{
3018 		if (!(((NI) 1024) < len)) goto LA8_;
3019 		result = mnewString(((NI) ((NI)(len + ((NI) 1)))));
3020 		len = readlink(nimToCStringConv(symlinkPath), nimToCStringConv(result), len);
3021 	}
3022 	LA8_: ;
3023 	result = setLengthStr(result, ((NI) (len)));
3024 	return result;
3025 }
N_NIMCALL(void,noscopyFile)3026 N_LIB_PRIVATE N_NIMCALL(void, noscopyFile)(NimStringDesc* source, NimStringDesc* dest, tySet_tyEnum_CopyFlag__pdzel23GjJ9cPFw8c5ldeRA options) {
3027 	NIM_BOOL isSymlink;
3028 {	{
3029 		if (!!((countBits32((7 & options)) == ((NI) 1)))) goto LA3_;
3030 		failedAssertImpl__systemZassertions_56(((NimStringDesc*) &TM__yu6cxgKBBXbNsTkT9cyMd4g_41));
3031 	}
3032 	LA3_: ;
3033 	isSymlink = nossymlinkExists(source);
3034 	{
3035 		NIM_BOOL T7_;
3036 		NIM_BOOL T9_;
3037 		T7_ = (NIM_BOOL)0;
3038 		T7_ = isSymlink;
3039 		if (!(T7_)) goto LA8_;
3040 		T9_ = (NIM_BOOL)0;
3041 		T9_ = ((options &((NU8)1<<((NU)(((tyEnum_CopyFlag__pdzel23GjJ9cPFw8c5ldeRA) 2))&7U)))!=0);
3042 		if (T9_) goto LA10_;
3043 		T9_ = NIM_FALSE;
3044 		LA10_: ;
3045 		T7_ = T9_;
3046 		LA8_: ;
3047 		if (!T7_) goto LA11_;
3048 		goto BeforeRet_;
3049 	}
3050 	LA11_: ;
3051 	{
3052 		NIM_BOOL T15_;
3053 		NimStringDesc* T19_;
3054 		T15_ = (NIM_BOOL)0;
3055 		T15_ = isSymlink;
3056 		if (!(T15_)) goto LA16_;
3057 		T15_ = ((options &((NU8)1<<((NU)(((tyEnum_CopyFlag__pdzel23GjJ9cPFw8c5ldeRA) 0))&7U)))!=0);
3058 		LA16_: ;
3059 		if (!T15_) goto LA17_;
3060 		T19_ = NIM_NIL;
3061 		T19_ = expandSymlink__pureZos_1024(source);
3062 		createSymlink__pureZos_1018(T19_, dest);
3063 	}
3064 	goto LA13_;
3065 	LA17_: ;
3066 	{
3067 		FILE* d;
3068 		FILE* s;
3069 		void* buf;
3070 		d = (FILE*)0;
3071 		s = (FILE*)0;
3072 		{
3073 			NIM_BOOL T23_;
3074 			NI32 T26_;
3075 			T23_ = (NIM_BOOL)0;
3076 			T23_ = open__systemZio_389(&s, source, ((tyEnum_FileMode__ZJfK20XeZ9bv2j1pZjw9aswg) 0), ((NI) -1));
3077 			if (!!(T23_)) goto LA24_;
3078 			T26_ = (NI32)0;
3079 			T26_ = osLastError__pureZos_408();
3080 			raiseOSError__pureZos_405(T26_, source);
3081 		}
3082 		LA24_: ;
3083 		{
3084 			NIM_BOOL T29_;
3085 			NI32 T32_;
3086 			T29_ = (NIM_BOOL)0;
3087 			T29_ = open__systemZio_389(&d, dest, ((tyEnum_FileMode__ZJfK20XeZ9bv2j1pZjw9aswg) 1), ((NI) -1));
3088 			if (!!(T29_)) goto LA30_;
3089 			close__systemZio_217(s);
3090 			T32_ = (NI32)0;
3091 			T32_ = osLastError__pureZos_408();
3092 			raiseOSError__pureZos_405(T32_, dest);
3093 		}
3094 		LA30_: ;
3095 		buf = allocImpl__system_1743(((NI) 8000));
3096 		{
3097 			while (1) {
3098 				NI bytesread;
3099 				bytesread = readBuffer__systemZio_144(s, buf, ((NI) 8000));
3100 				{
3101 					NI byteswritten;
3102 					if (!(((NI) 0) < bytesread)) goto LA37_;
3103 					byteswritten = writeBuffer__systemZio_176(d, buf, ((NI) (bytesread)));
3104 					{
3105 						NI32 T43_;
3106 						if (!!((bytesread == byteswritten))) goto LA41_;
3107 						dealloc(buf);
3108 						close__systemZio_217(s);
3109 						close__systemZio_217(d);
3110 						T43_ = (NI32)0;
3111 						T43_ = osLastError__pureZos_408();
3112 						raiseOSError__pureZos_405(T43_, dest);
3113 					}
3114 					LA41_: ;
3115 				}
3116 				LA37_: ;
3117 				{
3118 					if (!!((bytesread == ((NI) 8000)))) goto LA46_;
3119 					goto LA33;
3120 				}
3121 				LA46_: ;
3122 			}
3123 		} LA33: ;
3124 		dealloc(buf);
3125 		close__systemZio_217(s);
3126 		flushFile__systemZio_226(d);
3127 		close__systemZio_217(d);
3128 	}
3129 	LA13_: ;
3130 	}BeforeRet_: ;
3131 }
N_INLINE(void,popCurrentException)3132 static N_INLINE(void, popCurrentException)(void) {
3133 	asgnRef((void**) (&currException__system_2566), (*currException__system_2566).up);
3134 }
N_NIMCALL(void,nosmoveFile)3135 N_LIB_PRIVATE N_NIMCALL(void, nosmoveFile)(NimStringDesc* source, NimStringDesc* dest) {
3136 	{
3137 		NIM_BOOL T3_;
3138 		TSafePoint TM__yu6cxgKBBXbNsTkT9cyMd4g_42;
3139 		T3_ = (NIM_BOOL)0;
3140 		T3_ = tryMoveFSObject__pureZos_1094(source, dest, NIM_FALSE);
3141 		if (!!(T3_)) goto LA4_;
3142 		noscopyFile(source, dest, 1);
3143 		pushSafePoint(&TM__yu6cxgKBBXbNsTkT9cyMd4g_42);
3144 		TM__yu6cxgKBBXbNsTkT9cyMd4g_42.status = _setjmp(TM__yu6cxgKBBXbNsTkT9cyMd4g_42.context);
3145 		if (TM__yu6cxgKBBXbNsTkT9cyMd4g_42.status == 0) {
3146 		nosremoveFile(source);
3147 		popSafePoint();
3148 		}
3149 		else {
3150 			popSafePoint();
3151 			{
3152 				NIM_BOOL T8_;
3153 				TM__yu6cxgKBBXbNsTkT9cyMd4g_42.status = 0;
3154 				T8_ = (NIM_BOOL)0;
3155 				T8_ = nostryRemoveFile(dest);
3156 				(void)(T8_);
3157 				reraiseException();
3158 				popCurrentException();
3159 			}
3160 		}
3161 		if (TM__yu6cxgKBBXbNsTkT9cyMd4g_42.status != 0) reraiseException();
3162 	}
3163 	LA4_: ;
3164 }
N_NIMCALL(void,noscopyDir)3165 N_LIB_PRIVATE N_NIMCALL(void, noscopyDir)(NimStringDesc* source, NimStringDesc* dest) {
3166 	noscreateDir(dest);
3167 	{
3168 		tyEnum_PathComponent__9c1SIU9cO1wHcl09b703A9cDrg kind;
3169 		NimStringDesc* path;
3170 		DIR* d;
3171 		kind = (tyEnum_PathComponent__9c1SIU9cO1wHcl09b703A9cDrg)0;
3172 		path = NIM_NIL;
3173 		d = opendir(nimToCStringConv(source));
3174 		{
3175 			if (!(d == ((DIR*) NIM_NIL))) goto LA4_;
3176 			{
3177 				NI32 T10_;
3178 				if (!NIM_FALSE) goto LA8_;
3179 				T10_ = (NI32)0;
3180 				T10_ = osLastError__pureZos_408();
3181 				raiseOSError__pureZos_405(T10_, source);
3182 			}
3183 			LA8_: ;
3184 		}
3185 		goto LA2_;
3186 		LA4_: ;
3187 		{
3188 			TSafePoint TM__yu6cxgKBBXbNsTkT9cyMd4g_43;
3189 			pushSafePoint(&TM__yu6cxgKBBXbNsTkT9cyMd4g_43);
3190 			TM__yu6cxgKBBXbNsTkT9cyMd4g_43.status = _setjmp(TM__yu6cxgKBBXbNsTkT9cyMd4g_43.context);
3191 			if (TM__yu6cxgKBBXbNsTkT9cyMd4g_43.status == 0) {
3192 			{
3193 				while (1) {
3194 					{
3195 						struct dirent* x;
3196 						NimStringDesc* y;
3197 						x = readdir(d);
3198 						{
3199 							if (!(x == ((struct dirent*) NIM_NIL))) goto LA17_;
3200 							goto LA12;
3201 						}
3202 						LA17_: ;
3203 						y = cstrToNimstr(((NCSTRING) ((*x).d_name)));
3204 						{
3205 							NIM_BOOL T21_;
3206 							struct stat s;
3207 							NimStringDesc* path_2;
3208 							tyEnum_PathComponent__9c1SIU9cO1wHcl09b703A9cDrg k;
3209 							NimStringDesc* noSource;
3210 							tyTuple__UV3llMMYFckfui8YMBuUZA T52_;
3211 							T21_ = (NIM_BOOL)0;
3212 							T21_ = !(eqStrings(y, ((NimStringDesc*) &TM__yu6cxgKBBXbNsTkT9cyMd4g_11)));
3213 							if (!(T21_)) goto LA22_;
3214 							T21_ = !(eqStrings(y, ((NimStringDesc*) &TM__yu6cxgKBBXbNsTkT9cyMd4g_17)));
3215 							LA22_: ;
3216 							if (!T21_) goto LA23_;
3217 							nimZeroMem((void*)(&s), sizeof(struct stat));
3218 							path_2 = slash___pureZos_121(source, y);
3219 							{
3220 								if (!NIM_TRUE) goto LA27_;
3221 								y = copyString(path_2);
3222 							}
3223 							LA27_: ;
3224 							k = ((tyEnum_PathComponent__9c1SIU9cO1wHcl09b703A9cDrg) 0);
3225 							switch ((*x).d_type) {
3226 							case ((NI) 4):
3227 							{
3228 								k = ((tyEnum_PathComponent__9c1SIU9cO1wHcl09b703A9cDrg) 2);
3229 							}
3230 							break;
3231 							case ((NI) 10):
3232 							{
3233 								{
3234 									NIM_BOOL T33_;
3235 									T33_ = (NIM_BOOL)0;
3236 									T33_ = nosdirExists(path_2);
3237 									if (!T33_) goto LA34_;
3238 									k = ((tyEnum_PathComponent__9c1SIU9cO1wHcl09b703A9cDrg) 3);
3239 								}
3240 								goto LA31_;
3241 								LA34_: ;
3242 								{
3243 									k = ((tyEnum_PathComponent__9c1SIU9cO1wHcl09b703A9cDrg) 1);
3244 								}
3245 								LA31_: ;
3246 							}
3247 							break;
3248 							case ((NI) 0):
3249 							{
3250 								{
3251 									int T40_;
3252 									T40_ = (int)0;
3253 									T40_ = lstat(nimToCStringConv(path_2), (&s));
3254 									if (!(T40_ < ((NI32) 0))) goto LA41_;
3255 									goto LA14;
3256 								}
3257 								goto LA38_;
3258 								LA41_: ;
3259 								{
3260 									NIM_BOOL T44_;
3261 									T44_ = (NIM_BOOL)0;
3262 									T44_ = S_ISDIR(s.st_mode);
3263 									if (!T44_) goto LA45_;
3264 									k = ((tyEnum_PathComponent__9c1SIU9cO1wHcl09b703A9cDrg) 2);
3265 								}
3266 								goto LA38_;
3267 								LA45_: ;
3268 								{
3269 									NIM_BOOL T48_;
3270 									T48_ = (NIM_BOOL)0;
3271 									T48_ = S_ISLNK(s.st_mode);
3272 									if (!T48_) goto LA49_;
3273 									k = getSymlinkFileKind__pureZos_1233(path_2);
3274 								}
3275 								goto LA38_;
3276 								LA49_: ;
3277 								LA38_: ;
3278 							}
3279 							break;
3280 							default:
3281 							{
3282 							}
3283 							break;
3284 							}
3285 							kind = k;
3286 							path = y;
3287 							nimZeroMem((void*)(&T52_), sizeof(tyTuple__UV3llMMYFckfui8YMBuUZA));
3288 							nossplitPath(path, (&T52_));
3289 							noSource = copyString(T52_.Field1);
3290 							{
3291 								NimStringDesc* T57_;
3292 								if (!(kind == ((tyEnum_PathComponent__9c1SIU9cO1wHcl09b703A9cDrg) 2))) goto LA55_;
3293 								T57_ = NIM_NIL;
3294 								T57_ = slash___pureZos_121(dest, noSource);
3295 								noscopyDir(path, T57_);
3296 							}
3297 							goto LA53_;
3298 							LA55_: ;
3299 							{
3300 								NimStringDesc* T59_;
3301 								T59_ = NIM_NIL;
3302 								T59_ = slash___pureZos_121(dest, noSource);
3303 								noscopyFile(path, T59_, 1);
3304 							}
3305 							LA53_: ;
3306 						}
3307 						LA23_: ;
3308 					} LA14: ;
3309 				}
3310 			} LA12: ;
3311 			popSafePoint();
3312 			}
3313 			else {
3314 				popSafePoint();
3315 			}
3316 			{
3317 				int T62_;
3318 				T62_ = (int)0;
3319 				T62_ = closedir(d);
3320 				(void)(T62_);
3321 				if (TM__yu6cxgKBBXbNsTkT9cyMd4g_43.status != 0) nimLeaveFinally();
3322 			}
3323 			if (TM__yu6cxgKBBXbNsTkT9cyMd4g_43.status != 0) reraiseException();
3324 		}
3325 		LA2_: ;
3326 	}
3327 }
N_NIMCALL(void,moveDir__pureZos_1450)3328 N_LIB_PRIVATE N_NIMCALL(void, moveDir__pureZos_1450)(NimStringDesc* source, NimStringDesc* dest) {
3329 	{
3330 		NIM_BOOL T3_;
3331 		T3_ = (NIM_BOOL)0;
3332 		T3_ = tryMoveFSObject__pureZos_1094(source, dest, NIM_TRUE);
3333 		if (!!(T3_)) goto LA4_;
3334 		noscopyDir(source, dest);
3335 		nosremoveDir(source, NIM_FALSE);
3336 	}
3337 	LA4_: ;
3338 }
N_INLINE(tyObject_Time__3y2ZpqsTJLqdZvpC9a0rU2Q,toTime__pureZos_17)3339 static N_INLINE(tyObject_Time__3y2ZpqsTJLqdZvpC9a0rU2Q, toTime__pureZos_17)(struct timespec ts) {
3340 	tyObject_Time__3y2ZpqsTJLqdZvpC9a0rU2Q result;
3341 	nimZeroMem((void*)(&result), sizeof(tyObject_Time__3y2ZpqsTJLqdZvpC9a0rU2Q));
3342 	result = initTime__pureZtimes_895(((NI64) (ts.tv_sec)), ((NI) (ts.tv_nsec)));
3343 	return result;
3344 }
N_NIMCALL(tyObject_Time__3y2ZpqsTJLqdZvpC9a0rU2Q,nosgetLastModificationTime)3345 N_LIB_PRIVATE N_NIMCALL(tyObject_Time__3y2ZpqsTJLqdZvpC9a0rU2Q, nosgetLastModificationTime)(NimStringDesc* file) {
3346 	tyObject_Time__3y2ZpqsTJLqdZvpC9a0rU2Q result;
3347 	struct stat res;
3348 	nimZeroMem((void*)(&result), sizeof(tyObject_Time__3y2ZpqsTJLqdZvpC9a0rU2Q));
3349 	nimZeroMem((void*)(&res), sizeof(struct stat));
3350 	{
3351 		int T3_;
3352 		NI32 T6_;
3353 		T3_ = (int)0;
3354 		T3_ = stat(nimToCStringConv(file), (&res));
3355 		if (!(T3_ < ((NI32) 0))) goto LA4_;
3356 		T6_ = (NI32)0;
3357 		T6_ = osLastError__pureZos_408();
3358 		raiseOSError__pureZos_405(T6_, file);
3359 	}
3360 	LA4_: ;
3361 	result = toTime__pureZos_17(res.st_mtim);
3362 	return result;
3363 }
N_NIMCALL(NimStringDesc *,nosgetConfigDir)3364 N_LIB_PRIVATE N_NIMCALL(NimStringDesc*, nosgetConfigDir)(void) {
3365 	NimStringDesc* result;
3366 	NimStringDesc* T1_;
3367 	NimStringDesc* T2_;
3368 	result = NIM_NIL;
3369 	T1_ = NIM_NIL;
3370 	T1_ = getEnv__pureZos_418(((NimStringDesc*) &TM__yu6cxgKBBXbNsTkT9cyMd4g_18), ((NimStringDesc*) NIM_NIL));
3371 	T2_ = NIM_NIL;
3372 	T2_ = slash___pureZos_121(T1_, ((NimStringDesc*) &TM__yu6cxgKBBXbNsTkT9cyMd4g_45));
3373 	result = getEnv__pureZos_418(((NimStringDesc*) &TM__yu6cxgKBBXbNsTkT9cyMd4g_44), T2_);
3374 	normalizePathEnd__pureZos_51((&result), NIM_TRUE);
3375 	return result;
3376 }
N_NIMCALL(NIM_BOOL,nosisRootDir)3377 N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, nosisRootDir)(NimStringDesc* path) {
3378 	NIM_BOOL result;
3379 	NI T1_;
3380 	result = (NIM_BOOL)0;
3381 	T1_ = (NI)0;
3382 	T1_ = parentDirPos__pureZos_195(path);
3383 	result = (T1_ < ((NI) 0));
3384 	return result;
3385 }
N_NIMCALL(NIM_BOOL,nosfileNewer)3386 N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, nosfileNewer)(NimStringDesc* a, NimStringDesc* b) {
3387 	NIM_BOOL result;
3388 	tyObject_Time__3y2ZpqsTJLqdZvpC9a0rU2Q T1_;
3389 	tyObject_Time__3y2ZpqsTJLqdZvpC9a0rU2Q T2_;
3390 	result = (NIM_BOOL)0;
3391 	T1_ = nosgetLastModificationTime(b);
3392 	T2_ = nosgetLastModificationTime(a);
3393 	result = ntLtTime(T1_, T2_);
3394 	return result;
3395 }
N_NIMCALL(void,addQuoted__pureZos_1007)3396 N_LIB_PRIVATE N_NIMCALL(void, addQuoted__pureZos_1007)(NimStringDesc** s, tyEnum_FilePermission__uTVeDpjCH6aWw9c74YkAskA x) {
3397 	unsureAsgnRef((void**) (&(*s)), resizeString((*s), (reprEnum((NI)x, (&NTIfilepermission__uTVeDpjCH6aWw9c74YkAskA_)) ? reprEnum((NI)x, (&NTIfilepermission__uTVeDpjCH6aWw9c74YkAskA_))->Sup.len : 0) + 0));
3398 appendString((*s), reprEnum((NI)x, (&NTIfilepermission__uTVeDpjCH6aWw9c74YkAskA_)));
3399 }
N_NIMCALL(NimStringDesc *,collectionToString__pureZos_975)3400 N_LIB_PRIVATE N_NIMCALL(NimStringDesc*, collectionToString__pureZos_975)(tySet_tyEnum_FilePermission__uTVeDpjCH6aWw9c74YkAskA x, NimStringDesc* prefix, NimStringDesc* separator, NimStringDesc* suffix) {
3401 	NimStringDesc* result;
3402 	NIM_BOOL firstElement;
3403 	result = NIM_NIL;
3404 	result = copyString(prefix);
3405 	firstElement = NIM_TRUE;
3406 	{
3407 		tyEnum_FilePermission__uTVeDpjCH6aWw9c74YkAskA value;
3408 		NI i;
3409 		value = (tyEnum_FilePermission__uTVeDpjCH6aWw9c74YkAskA)0;
3410 		i = ((NI) 0);
3411 		{
3412 			while (1) {
3413 				if (!(i <= ((NI) 8))) goto LA3;
3414 				{
3415 					if (!((x &((NU16)1<<((NU)(((tyEnum_FilePermission__uTVeDpjCH6aWw9c74YkAskA) (i)))&15U)))!=0)) goto LA6_;
3416 					value = ((tyEnum_FilePermission__uTVeDpjCH6aWw9c74YkAskA) (i));
3417 					{
3418 						if (!firstElement) goto LA10_;
3419 						firstElement = NIM_FALSE;
3420 					}
3421 					goto LA8_;
3422 					LA10_: ;
3423 					{
3424 						result = resizeString(result, (separator ? separator->Sup.len : 0) + 0);
3425 appendString(result, separator);
3426 					}
3427 					LA8_: ;
3428 					addQuoted__pureZos_1007((&result), value);
3429 				}
3430 				LA6_: ;
3431 				i += ((NI) 1);
3432 			} LA3: ;
3433 		}
3434 	}
3435 	result = resizeString(result, (suffix ? suffix->Sup.len : 0) + 0);
3436 appendString(result, suffix);
3437 	return result;
3438 }
N_NIMCALL(NimStringDesc *,dollar___pureZos_971)3439 N_LIB_PRIVATE N_NIMCALL(NimStringDesc*, dollar___pureZos_971)(tySet_tyEnum_FilePermission__uTVeDpjCH6aWw9c74YkAskA x) {
3440 	NimStringDesc* result;
3441 	result = NIM_NIL;
3442 	result = collectionToString__pureZos_975(x, ((NimStringDesc*) &TM__yu6cxgKBBXbNsTkT9cyMd4g_50), ((NimStringDesc*) &TM__yu6cxgKBBXbNsTkT9cyMd4g_23), ((NimStringDesc*) &TM__yu6cxgKBBXbNsTkT9cyMd4g_51));
3443 	return result;
3444 }
N_NIMCALL(void,addQuoted__pureZos_965)3445 N_LIB_PRIVATE N_NIMCALL(void, addQuoted__pureZos_965)(NimStringDesc** s, tySet_tyEnum_FilePermission__uTVeDpjCH6aWw9c74YkAskA x) {
3446 	NimStringDesc* T1_;
3447 	T1_ = NIM_NIL;
3448 	T1_ = dollar___pureZos_971(x);
3449 	unsureAsgnRef((void**) (&(*s)), resizeString((*s), (T1_ ? T1_->Sup.len : 0) + 0));
3450 appendString((*s), T1_);
3451 }
N_NIMCALL(NimStringDesc *,dollar___pureZos_880)3452 N_LIB_PRIVATE N_NIMCALL(NimStringDesc*, dollar___pureZos_880)(tyTuple__HFn8JzZZeLZ9aKrFg4S9a7HA x) {
3453 	NimStringDesc* result;
3454 	NI count;
3455 	result = NIM_NIL;
3456 	result = copyString(((NimStringDesc*) &TM__yu6cxgKBBXbNsTkT9cyMd4g_22));
3457 	count = ((NI) 0);
3458 	{
3459 		if (!(((NI) 0) < count)) goto LA3_;
3460 		result = resizeString(result, 2);
3461 appendString(result, ((NimStringDesc*) &TM__yu6cxgKBBXbNsTkT9cyMd4g_23));
3462 	}
3463 	LA3_: ;
3464 	count += ((NI) 1);
3465 	addQuoted__pureZos_449((&result), x.Field0);
3466 	{
3467 		if (!(((NI) 0) < count)) goto LA7_;
3468 		result = resizeString(result, 2);
3469 appendString(result, ((NimStringDesc*) &TM__yu6cxgKBBXbNsTkT9cyMd4g_23));
3470 	}
3471 	LA7_: ;
3472 	count += ((NI) 1);
3473 	addQuoted__pureZos_965((&result), x.Field1);
3474 	{
3475 		if (!(count == ((NI) 1))) goto LA11_;
3476 		result = resizeString(result, 1);
3477 appendString(result, ((NimStringDesc*) &TM__yu6cxgKBBXbNsTkT9cyMd4g_38));
3478 	}
3479 	LA11_: ;
3480 	result = resizeString(result, 1);
3481 appendString(result, ((NimStringDesc*) &TM__yu6cxgKBBXbNsTkT9cyMd4g_39));
3482 	return result;
3483 }
N_NIMCALL(void,nossetFilePermissions)3484 N_LIB_PRIVATE N_NIMCALL(void, nossetFilePermissions)(NimStringDesc* filename, tySet_tyEnum_FilePermission__uTVeDpjCH6aWw9c74YkAskA permissions, NIM_BOOL followSymlinks) {
3485 	mode_t p;
3486 	p = ((mode_t) 0);
3487 	{
3488 		if (!((permissions &((NU16)1<<((NU)(((tyEnum_FilePermission__uTVeDpjCH6aWw9c74YkAskA) 2))&15U)))!=0)) goto LA3_;
3489 		p = (NU16)(p | ((mode_t) (S_IRUSR)));
3490 	}
3491 	LA3_: ;
3492 	{
3493 		if (!((permissions &((NU16)1<<((NU)(((tyEnum_FilePermission__uTVeDpjCH6aWw9c74YkAskA) 1))&15U)))!=0)) goto LA7_;
3494 		p = (NU16)(p | ((mode_t) (S_IWUSR)));
3495 	}
3496 	LA7_: ;
3497 	{
3498 		if (!((permissions &((NU16)1<<((NU)(((tyEnum_FilePermission__uTVeDpjCH6aWw9c74YkAskA) 0))&15U)))!=0)) goto LA11_;
3499 		p = (NU16)(p | ((mode_t) (S_IXUSR)));
3500 	}
3501 	LA11_: ;
3502 	{
3503 		if (!((permissions &((NU16)1<<((NU)(((tyEnum_FilePermission__uTVeDpjCH6aWw9c74YkAskA) 5))&15U)))!=0)) goto LA15_;
3504 		p = (NU16)(p | ((mode_t) (S_IRGRP)));
3505 	}
3506 	LA15_: ;
3507 	{
3508 		if (!((permissions &((NU16)1<<((NU)(((tyEnum_FilePermission__uTVeDpjCH6aWw9c74YkAskA) 4))&15U)))!=0)) goto LA19_;
3509 		p = (NU16)(p | ((mode_t) (S_IWGRP)));
3510 	}
3511 	LA19_: ;
3512 	{
3513 		if (!((permissions &((NU16)1<<((NU)(((tyEnum_FilePermission__uTVeDpjCH6aWw9c74YkAskA) 3))&15U)))!=0)) goto LA23_;
3514 		p = (NU16)(p | ((mode_t) (S_IXGRP)));
3515 	}
3516 	LA23_: ;
3517 	{
3518 		if (!((permissions &((NU16)1<<((NU)(((tyEnum_FilePermission__uTVeDpjCH6aWw9c74YkAskA) 8))&15U)))!=0)) goto LA27_;
3519 		p = (NU16)(p | ((mode_t) (S_IROTH)));
3520 	}
3521 	LA27_: ;
3522 	{
3523 		if (!((permissions &((NU16)1<<((NU)(((tyEnum_FilePermission__uTVeDpjCH6aWw9c74YkAskA) 7))&15U)))!=0)) goto LA31_;
3524 		p = (NU16)(p | ((mode_t) (S_IWOTH)));
3525 	}
3526 	LA31_: ;
3527 	{
3528 		if (!((permissions &((NU16)1<<((NU)(((tyEnum_FilePermission__uTVeDpjCH6aWw9c74YkAskA) 6))&15U)))!=0)) goto LA35_;
3529 		p = (NU16)(p | ((mode_t) (S_IXOTH)));
3530 	}
3531 	LA35_: ;
3532 	{
3533 		NIM_BOOL T39_;
3534 		T39_ = (NIM_BOOL)0;
3535 		T39_ = !(followSymlinks);
3536 		if (!(T39_)) goto LA40_;
3537 		T39_ = nossymlinkExists(filename);
3538 		LA40_: ;
3539 		if (!T39_) goto LA41_;
3540 	}
3541 	goto LA37_;
3542 	LA41_: ;
3543 	{
3544 		{
3545 			int T46_;
3546 			NI32 T49_;
3547 			tyTuple__HFn8JzZZeLZ9aKrFg4S9a7HA T50_;
3548 			NimStringDesc* T51_;
3549 			T46_ = (int)0;
3550 			T46_ = chmod(nimToCStringConv(filename), ((mode_t) (p)));
3551 			if (!!((T46_ == ((NI32) 0)))) goto LA47_;
3552 			T49_ = (NI32)0;
3553 			T49_ = osLastError__pureZos_408();
3554 			nimZeroMem((void*)(&T50_), sizeof(tyTuple__HFn8JzZZeLZ9aKrFg4S9a7HA));
3555 			T50_.Field0 = copyString(filename);
3556 			T50_.Field1 = permissions;
3557 			T51_ = NIM_NIL;
3558 			T51_ = dollar___pureZos_880(T50_);
3559 			raiseOSError__pureZos_405(T49_, T51_);
3560 		}
3561 		LA47_: ;
3562 	}
3563 	LA37_: ;
3564 }
N_NIMCALL(tySet_tyEnum_FilePermission__uTVeDpjCH6aWw9c74YkAskA,nosgetFilePermissions)3565 N_LIB_PRIVATE N_NIMCALL(tySet_tyEnum_FilePermission__uTVeDpjCH6aWw9c74YkAskA, nosgetFilePermissions)(NimStringDesc* filename) {
3566 	tySet_tyEnum_FilePermission__uTVeDpjCH6aWw9c74YkAskA result;
3567 	struct stat a;
3568 	nimZeroMem((void*)(&result), sizeof(tySet_tyEnum_FilePermission__uTVeDpjCH6aWw9c74YkAskA));
3569 	nimZeroMem((void*)(&a), sizeof(struct stat));
3570 	{
3571 		int T3_;
3572 		NI32 T6_;
3573 		T3_ = (int)0;
3574 		T3_ = stat(nimToCStringConv(filename), (&a));
3575 		if (!(T3_ < ((NI32) 0))) goto LA4_;
3576 		T6_ = (NI32)0;
3577 		T6_ = osLastError__pureZos_408();
3578 		raiseOSError__pureZos_405(T6_, filename);
3579 	}
3580 	LA4_: ;
3581 	result = 0;
3582 	{
3583 		if (!!(((NU16)(a.st_mode & ((mode_t) (S_IRUSR))) == ((mode_t) 0)))) goto LA9_;
3584 		result |= ((NU16)1)<<((((tyEnum_FilePermission__uTVeDpjCH6aWw9c74YkAskA) 2)) & 15);
3585 	}
3586 	LA9_: ;
3587 	{
3588 		if (!!(((NU16)(a.st_mode & ((mode_t) (S_IWUSR))) == ((mode_t) 0)))) goto LA13_;
3589 		result |= ((NU16)1)<<((((tyEnum_FilePermission__uTVeDpjCH6aWw9c74YkAskA) 1)) & 15);
3590 	}
3591 	LA13_: ;
3592 	{
3593 		if (!!(((NU16)(a.st_mode & ((mode_t) (S_IXUSR))) == ((mode_t) 0)))) goto LA17_;
3594 		result |= ((NU16)1)<<((((tyEnum_FilePermission__uTVeDpjCH6aWw9c74YkAskA) 0)) & 15);
3595 	}
3596 	LA17_: ;
3597 	{
3598 		if (!!(((NU16)(a.st_mode & ((mode_t) (S_IRGRP))) == ((mode_t) 0)))) goto LA21_;
3599 		result |= ((NU16)1)<<((((tyEnum_FilePermission__uTVeDpjCH6aWw9c74YkAskA) 5)) & 15);
3600 	}
3601 	LA21_: ;
3602 	{
3603 		if (!!(((NU16)(a.st_mode & ((mode_t) (S_IWGRP))) == ((mode_t) 0)))) goto LA25_;
3604 		result |= ((NU16)1)<<((((tyEnum_FilePermission__uTVeDpjCH6aWw9c74YkAskA) 4)) & 15);
3605 	}
3606 	LA25_: ;
3607 	{
3608 		if (!!(((NU16)(a.st_mode & ((mode_t) (S_IXGRP))) == ((mode_t) 0)))) goto LA29_;
3609 		result |= ((NU16)1)<<((((tyEnum_FilePermission__uTVeDpjCH6aWw9c74YkAskA) 3)) & 15);
3610 	}
3611 	LA29_: ;
3612 	{
3613 		if (!!(((NU16)(a.st_mode & ((mode_t) (S_IROTH))) == ((mode_t) 0)))) goto LA33_;
3614 		result |= ((NU16)1)<<((((tyEnum_FilePermission__uTVeDpjCH6aWw9c74YkAskA) 8)) & 15);
3615 	}
3616 	LA33_: ;
3617 	{
3618 		if (!!(((NU16)(a.st_mode & ((mode_t) (S_IWOTH))) == ((mode_t) 0)))) goto LA37_;
3619 		result |= ((NU16)1)<<((((tyEnum_FilePermission__uTVeDpjCH6aWw9c74YkAskA) 7)) & 15);
3620 	}
3621 	LA37_: ;
3622 	{
3623 		if (!!(((NU16)(a.st_mode & ((mode_t) (S_IXOTH))) == ((mode_t) 0)))) goto LA41_;
3624 		result |= ((NU16)1)<<((((tyEnum_FilePermission__uTVeDpjCH6aWw9c74YkAskA) 6)) & 15);
3625 	}
3626 	LA41_: ;
3627 	return result;
3628 }
N_NIMCALL(void,copyFileWithPermissions__pureZos_1459)3629 N_LIB_PRIVATE N_NIMCALL(void, copyFileWithPermissions__pureZos_1459)(NimStringDesc* source, NimStringDesc* dest, NIM_BOOL ignorePermissionErrors, tySet_tyEnum_CopyFlag__pdzel23GjJ9cPFw8c5ldeRA options) {
3630 	TSafePoint TM__yu6cxgKBBXbNsTkT9cyMd4g_46;
3631 	tySet_tyEnum_FilePermission__uTVeDpjCH6aWw9c74YkAskA T1_;
3632 	noscopyFile(source, dest, options);
3633 	pushSafePoint(&TM__yu6cxgKBBXbNsTkT9cyMd4g_46);
3634 	TM__yu6cxgKBBXbNsTkT9cyMd4g_46.status = _setjmp(TM__yu6cxgKBBXbNsTkT9cyMd4g_46.context);
3635 	if (TM__yu6cxgKBBXbNsTkT9cyMd4g_46.status == 0) {
3636 	T1_ = nosgetFilePermissions(source);
3637 	nossetFilePermissions(dest, T1_, ((options &((NU8)1<<((NU)(((tyEnum_CopyFlag__pdzel23GjJ9cPFw8c5ldeRA) 1))&7U)))!=0));
3638 	popSafePoint();
3639 	}
3640 	else {
3641 		popSafePoint();
3642 		{
3643 			TM__yu6cxgKBBXbNsTkT9cyMd4g_46.status = 0;
3644 			{
3645 				if (!!(ignorePermissionErrors)) goto LA6_;
3646 				reraiseException();
3647 			}
3648 			LA6_: ;
3649 			popCurrentException();
3650 		}
3651 	}
3652 	if (TM__yu6cxgKBBXbNsTkT9cyMd4g_46.status != 0) reraiseException();
3653 }
N_NIMCALL(NI,nosexecShellCmd)3654 N_LIB_PRIVATE N_NIMCALL(NI, nosexecShellCmd)(NimStringDesc* command) {
3655 	NI result;
3656 	int T1_;
3657 	int T2_;
3658 	result = (NI)0;
3659 	T1_ = (int)0;
3660 	T1_ = system(nimToCStringConv(command));
3661 	T2_ = (int)0;
3662 	T2_ = exitStatusLikeShell__pureZos_1107(T1_);
3663 	result = ((NI) (T2_));
3664 	return result;
3665 }
N_NIMCALL(void,stdlib_osDatInit000)3666 N_LIB_PRIVATE N_NIMCALL(void, stdlib_osDatInit000)(void) {
3667 static TNimNode* TM__yu6cxgKBBXbNsTkT9cyMd4g_47_9[9];
3668 NI TM__yu6cxgKBBXbNsTkT9cyMd4g_49;
3669 static char* NIM_CONST TM__yu6cxgKBBXbNsTkT9cyMd4g_48[9] = {
3670 "fpUserExec",
3671 "fpUserWrite",
3672 "fpUserRead",
3673 "fpGroupExec",
3674 "fpGroupWrite",
3675 "fpGroupRead",
3676 "fpOthersExec",
3677 "fpOthersWrite",
3678 "fpOthersRead"};
3679 static TNimNode TM__yu6cxgKBBXbNsTkT9cyMd4g_0[10];
3680 NTIfilepermission__uTVeDpjCH6aWw9c74YkAskA_.size = sizeof(tyEnum_FilePermission__uTVeDpjCH6aWw9c74YkAskA);
3681 NTIfilepermission__uTVeDpjCH6aWw9c74YkAskA_.align = NIM_ALIGNOF(tyEnum_FilePermission__uTVeDpjCH6aWw9c74YkAskA);
3682 NTIfilepermission__uTVeDpjCH6aWw9c74YkAskA_.kind = 14;
3683 NTIfilepermission__uTVeDpjCH6aWw9c74YkAskA_.base = 0;
3684 NTIfilepermission__uTVeDpjCH6aWw9c74YkAskA_.flags = 3;
3685 for (TM__yu6cxgKBBXbNsTkT9cyMd4g_49 = 0; TM__yu6cxgKBBXbNsTkT9cyMd4g_49 < 9; TM__yu6cxgKBBXbNsTkT9cyMd4g_49++) {
3686 TM__yu6cxgKBBXbNsTkT9cyMd4g_0[TM__yu6cxgKBBXbNsTkT9cyMd4g_49+0].kind = 1;
3687 TM__yu6cxgKBBXbNsTkT9cyMd4g_0[TM__yu6cxgKBBXbNsTkT9cyMd4g_49+0].offset = TM__yu6cxgKBBXbNsTkT9cyMd4g_49;
3688 TM__yu6cxgKBBXbNsTkT9cyMd4g_0[TM__yu6cxgKBBXbNsTkT9cyMd4g_49+0].name = TM__yu6cxgKBBXbNsTkT9cyMd4g_48[TM__yu6cxgKBBXbNsTkT9cyMd4g_49];
3689 TM__yu6cxgKBBXbNsTkT9cyMd4g_47_9[TM__yu6cxgKBBXbNsTkT9cyMd4g_49] = &TM__yu6cxgKBBXbNsTkT9cyMd4g_0[TM__yu6cxgKBBXbNsTkT9cyMd4g_49+0];
3690 }
3691 TM__yu6cxgKBBXbNsTkT9cyMd4g_0[9].len = 9; TM__yu6cxgKBBXbNsTkT9cyMd4g_0[9].kind = 2; TM__yu6cxgKBBXbNsTkT9cyMd4g_0[9].sons = &TM__yu6cxgKBBXbNsTkT9cyMd4g_47_9[0];
3692 NTIfilepermission__uTVeDpjCH6aWw9c74YkAskA_.node = &TM__yu6cxgKBBXbNsTkT9cyMd4g_0[9];
3693 }
3694 
3695