> Can you see what I'm doing wrong? It used to work in the past, for sure, and was used in some code over here...
Since it was an ad-hoc thing, the behavior might have changed -- I haven't checked it lately. To make the full disclosure, we reassign the entire __argv here from the linear memory array made up from new argv[] and argc (s_Argc is the original "argc" passed to main()), to make all command line to go into argv[0] for the purposes of "ps" output: extern char** __argv; extern int __argc; char* cmdline; char** x_argv; size_t len; int n; for (len = 0, n = 0; n < argc; ++n) len += strlen(argv[n]) + 1; if (!(x_argv = (char**) malloc((s_Argc + 1) * sizeof(*x_argv) + len))) return 0/*failure*/; x_argv[0] = cmdline = (char*) x_argv + (s_Argc + 1) * sizeof(*x_argv); memset(x_argv + 1, 0, s_Argc * sizeof(*x_argv)); for (n = 0; n < argc; ++n) { if (n) *cmdline++ = ' '; len = strlen(argv[n]); memcpy(cmdline, argv[n], len); cmdline += len; } *cmdline = '\0'; __argv = x_argv; __argc = 1; HTH, Anton Lavrentiev Contractor NIH/NLM/NCBI -- Problem reports: https://cygwin.com/problems.html FAQ: https://cygwin.com/faq/ Documentation: https://cygwin.com/docs.html Unsubscribe info: https://cygwin.com/ml/#unsubscribe-simple