Skip to content

Commit bb18fdd

Browse files
committed
pass args in WSL wrapper
1 parent 34f9721 commit bb18fdd

File tree

1 file changed

+13
-9
lines changed

1 file changed

+13
-9
lines changed

samples/wsl_wrapper/wsl_wrapper.cpp

Lines changed: 13 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,7 @@
5757

5858
#include <cstdio>
5959
#include <string>
60+
#include <vector>
6061

6162
#include "boinc_win.h"
6263
#include "util.h"
@@ -65,6 +66,8 @@
6566
#include "app_ipc.h"
6667

6768
using std::string;
69+
using std::vector;
70+
using std::ostringstream;
6871

6972
WSL_CMD app_wc;
7073
WSL_CMD ctl_wc;
@@ -224,25 +227,25 @@ void poll_client_msgs() {
224227
}
225228

226229
int main(int argc, char** argv) {
227-
const char *os_name_regexp=".*", *os_version_regexp=".*", *pass_thru=NULL;
230+
const char *os_name_regexp=".*", *os_version_regexp=".*";
228231
const char *main_prog = "main";
232+
vector<string> app_args;
229233
int min_libc_version = 0;
230234
for (int i=1; i<argc; i++) {
231235
if (!strcmp(argv[i], "--os_name_regexp")) {
232236
os_name_regexp = argv[++i];
233237
} else if (!strcmp(argv[i], "--os_version_regexp")) {
234238
os_version_regexp = argv[++i];
235239
} else if (!strcmp(argv[i], "--pass_thru")) {
236-
pass_thru = argv[++i];
240+
app_args.push_back(argv[++i]);
237241
} else if (!strcmp(argv[i], "--min_libc_version")) {
238242
min_libc_version = atoi(argv[++i]);
239243
} else if (!strcmp(argv[i], "--verbose")) {
240244
verbose = true;
241245
} else if (!strcmp(argv[i], "--main_prog")) {
242246
main_prog = argv[++i];
243247
} else {
244-
fprintf(stderr, "unknown option %s\n", argv[i]);
245-
exit(1);
248+
app_args.push_back(argv[i]);
246249
}
247250
}
248251

@@ -269,12 +272,13 @@ int main(int argc, char** argv) {
269272
distro_name = distro->distro_name;
270273
}
271274

272-
string main_cmd = "./";
273-
main_cmd += main_prog;
274-
if (pass_thru){
275-
main_cmd += " ";
276-
main_cmd += pass_thru;
275+
ostringstream oss;
276+
oss << "./" << main_prog;
277+
for (const string& arg : app_args) {
278+
oss << " " << arg;
277279
}
280+
string main_cmd = oss.str();
281+
278282
if (launch(distro_name.c_str(), main_cmd.c_str())) {
279283
fprintf(stderr, "launch failed\n");
280284
exit(1);

0 commit comments

Comments
 (0)