14
14
//
15
15
// ===----------------------------------------------------------------------===//
16
16
17
- #include < vector>
18
- #include < string>
19
17
#include < cassert>
20
18
#include < climits>
21
19
#include < cstdarg>
22
20
#include < cstdint>
23
21
#include < cstdio>
24
22
#include < cstdlib>
25
23
#include < cstring>
24
+ #include < string>
25
+ #include < vector>
26
26
27
27
#include " swift/Runtime/Debug.h"
28
28
29
- #include " ../SwiftShims/RuntimeStubs.h"
30
29
#include " ../SwiftShims/GlobalObjects.h"
30
+ #include " ../SwiftShims/RuntimeStubs.h"
31
31
32
32
#if defined(_WIN32)
33
33
#define WIN32_LEAN_AND_MEAN
@@ -52,7 +52,7 @@ extern "C" char ***_NSGetArgv(void);
52
52
extern " C" int *_NSGetArgc (void );
53
53
54
54
SWIFT_RUNTIME_STDLIB_API
55
- char ** _swift_stdlib_getUnsafeArgvArgc (int *outArgLen) {
55
+ char **_swift_stdlib_getUnsafeArgvArgc (int *outArgLen) {
56
56
assert (outArgLen != nullptr );
57
57
58
58
if (_swift_stdlib_ProcessOverrideUnsafeArgv) {
@@ -65,7 +65,7 @@ char ** _swift_stdlib_getUnsafeArgvArgc(int *outArgLen) {
65
65
}
66
66
#elif defined(__linux__) || defined(__CYGWIN__)
67
67
SWIFT_RUNTIME_STDLIB_API
68
- char ** _swift_stdlib_getUnsafeArgvArgc (int *outArgLen) {
68
+ char **_swift_stdlib_getUnsafeArgvArgc (int *outArgLen) {
69
69
assert (outArgLen != nullptr );
70
70
71
71
if (_swift_stdlib_ProcessOverrideUnsafeArgv) {
@@ -75,8 +75,8 @@ char ** _swift_stdlib_getUnsafeArgvArgc(int *outArgLen) {
75
75
76
76
FILE *cmdline = fopen (" /proc/self/cmdline" , " rb" );
77
77
if (!cmdline) {
78
- swift::fatalError (0 ,
79
- " Fatal error: Unable to open interface to '/proc/self/cmdline'.\n " );
78
+ swift::fatalError (
79
+ 0 , " Fatal error: Unable to open interface to '/proc/self/cmdline'.\n " );
80
80
}
81
81
char *arg = nullptr ;
82
82
size_t size = 0 ;
@@ -95,11 +95,11 @@ char ** _swift_stdlib_getUnsafeArgvArgc(int *outArgLen) {
95
95
96
96
return outBuf;
97
97
}
98
- #elif defined (_WIN32)
98
+ #elif defined(_WIN32)
99
99
#include < stdlib.h>
100
100
101
101
SWIFT_RUNTIME_STDLIB_API
102
- char ** _swift_stdlib_getUnsafeArgvArgc (int *outArgLen) {
102
+ char **_swift_stdlib_getUnsafeArgvArgc (int *outArgLen) {
103
103
assert (outArgLen != nullptr );
104
104
105
105
if (_swift_stdlib_ProcessOverrideUnsafeArgv) {
@@ -109,7 +109,6 @@ char ** _swift_stdlib_getUnsafeArgvArgc(int *outArgLen) {
109
109
110
110
*outArgLen = 0 ;
111
111
112
-
113
112
LPWSTR *szArgList;
114
113
int nArgs;
115
114
szArgList = CommandLineToArgvW (GetCommandLineW (), &nArgs);
@@ -118,17 +117,17 @@ char ** _swift_stdlib_getUnsafeArgvArgc(int *outArgLen) {
118
117
119
118
std::vector<char *> argv;
120
119
for (int i = 0 ; i < nArgs; ++i) {
121
- int szBufferSize = WideCharToMultiByte (CP_UTF8, WC_ERR_INVALID_CHARS,
122
- szArgList[i], -1 , nullptr , 0 ,
123
- nullptr , nullptr );
120
+ int szBufferSize =
121
+ WideCharToMultiByte (CP_UTF8, WC_ERR_INVALID_CHARS, szArgList[i], -1 ,
122
+ nullptr , 0 , nullptr , nullptr );
124
123
if (szBufferSize == 0 ) {
125
124
for (char *arg : argv)
126
125
free (arg);
127
126
return nullptr ;
128
127
}
129
128
130
- char *buffer = static_cast <char *>(calloc ( static_cast < size_t >(szBufferSize),
131
- sizeof (char )));
129
+ char *buffer = static_cast <char *>(
130
+ calloc ( static_cast < size_t >(szBufferSize), sizeof (char )));
132
131
if (buffer == nullptr ) {
133
132
for (char *arg : argv)
134
133
free (arg);
@@ -157,13 +156,13 @@ char ** _swift_stdlib_getUnsafeArgvArgc(int *outArgLen) {
157
156
}
158
157
#elif defined(__FreeBSD__)
159
158
#include < errno.h>
160
- #include < unistd.h>
161
- #include < sys/types.h>
162
159
#include < sys/param.h>
163
160
#include < sys/sysctl.h>
161
+ #include < sys/types.h>
162
+ #include < unistd.h>
164
163
165
164
SWIFT_RUNTIME_STDLIB_API
166
- char ** _swift_stdlib_getUnsafeArgvArgc (int *outArgLen) {
165
+ char **_swift_stdlib_getUnsafeArgvArgc (int *outArgLen) {
167
166
assert (outArgLen != nullptr );
168
167
169
168
if (_swift_stdlib_ProcessOverrideUnsafeArgv) {
@@ -172,7 +171,7 @@ char ** _swift_stdlib_getUnsafeArgvArgc(int *outArgLen) {
172
171
}
173
172
174
173
char *argPtr = nullptr ; // or use ARG_MAX? 8192 is used in LLDB though..
175
- int mib[4 ] = { CTL_KERN, KERN_PROC, KERN_PROC_ARGS, getpid () };
174
+ int mib[4 ] = {CTL_KERN, KERN_PROC, KERN_PROC_ARGS, getpid ()};
176
175
size_t argPtrSize = 0 ;
177
176
for (int i = 0 ; i < 3 && !argPtr; ++i) { // give up after 3 tries
178
177
if (sysctl (mib, 4 , nullptr , &argPtrSize, nullptr , 0 ) != -1 ) {
@@ -188,8 +187,10 @@ char ** _swift_stdlib_getUnsafeArgvArgc(int *outArgLen) {
188
187
}
189
188
}
190
189
if (!argPtr)
191
- swift::fatalError (0 , " Fatal error: Could not retrieve commandline "
192
- " arguments: sysctl: %s.\n " , strerror (errno));
190
+ swift::fatalError (0 ,
191
+ " Fatal error: Could not retrieve commandline "
192
+ " arguments: sysctl: %s.\n " ,
193
+ strerror (errno));
193
194
194
195
char *curPtr = argPtr;
195
196
char *endPtr = argPtr + argPtrSize;
@@ -203,16 +204,16 @@ char ** _swift_stdlib_getUnsafeArgvArgc(int *outArgLen) {
203
204
outBuf[argvec.size ()] = nullptr ;
204
205
205
206
free (argPtr);
206
-
207
+
207
208
return outBuf;
208
209
}
209
210
#elif defined(__wasi__)
211
+ #include < stdlib.h>
210
212
#include < wasi/api.h>
211
213
#include < wasi/libc.h>
212
- #include < stdlib.h>
213
214
214
215
SWIFT_RUNTIME_STDLIB_API
215
- char ** _swift_stdlib_getUnsafeArgvArgc (int *outArgLen) {
216
+ char **_swift_stdlib_getUnsafeArgvArgc (int *outArgLen) {
216
217
assert (outArgLen != nullptr );
217
218
218
219
if (_swift_stdlib_ProcessOverrideUnsafeArgv) {
@@ -225,7 +226,8 @@ char ** _swift_stdlib_getUnsafeArgvArgc(int *outArgLen) {
225
226
size_t argv_buf_size;
226
227
size_t argc;
227
228
err = __wasi_args_sizes_get (&argc, &argv_buf_size);
228
- if (err != __WASI_ERRNO_SUCCESS) return nullptr ;
229
+ if (err != __WASI_ERRNO_SUCCESS)
230
+ return nullptr ;
229
231
230
232
size_t num_ptrs = argc + 1 ;
231
233
char *argv_buf = (char *)malloc (argv_buf_size);
@@ -280,14 +282,14 @@ char ** _swift_stdlib_getUnsafeArgvArgc(int *outArgLen) {
280
282
}
281
283
#else // Add your favorite OS's command line arg grabber here.
282
284
SWIFT_RUNTIME_STDLIB_API
283
- char ** _swift_stdlib_getUnsafeArgvArgc (int *outArgLen) {
285
+ char **_swift_stdlib_getUnsafeArgvArgc (int *outArgLen) {
284
286
if (_swift_stdlib_ProcessOverrideUnsafeArgv) {
285
287
*outArgLen = _swift_stdlib_ProcessOverrideUnsafeArgc;
286
288
return _swift_stdlib_ProcessOverrideUnsafeArgv;
287
289
}
288
-
289
- swift::fatalError (0 ,
290
+
291
+ swift::fatalError (
292
+ 0 ,
290
293
" Fatal error: Command line arguments not supported on this platform.\n " );
291
294
}
292
295
#endif
293
-
0 commit comments