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