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