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