equal
deleted
inserted
replaced
225 const char **argv = mallocx(sizeof(char *) * argsize); |
225 const char **argv = mallocx(sizeof(char *) * argsize); |
226 memcpy(argv, baseargv, sizeof(baseargv)); |
226 memcpy(argv, baseargv, sizeof(baseargv)); |
227 memcpy(argv + baseargvsize, opts->args, sizeof(char *) * opts->argsize); |
227 memcpy(argv + baseargvsize, opts->args, sizeof(char *) * opts->argsize); |
228 argv[argsize - 1] = NULL; |
228 argv[argsize - 1] = NULL; |
229 |
229 |
|
230 if (putenv("CHGINTERNALMARK=") != 0) |
|
231 abortmsg("failed to putenv (errno = %d)", errno); |
230 if (execvp(hgcmd, (char **)argv) < 0) |
232 if (execvp(hgcmd, (char **)argv) < 0) |
231 abortmsg("failed to exec cmdserver (errno = %d)", errno); |
233 abortmsg("failed to exec cmdserver (errno = %d)", errno); |
232 free(argv); |
234 free(argv); |
233 } |
235 } |
234 |
236 |
488 int main(int argc, const char *argv[], const char *envp[]) |
490 int main(int argc, const char *argv[], const char *envp[]) |
489 { |
491 { |
490 if (getenv("CHGDEBUG")) |
492 if (getenv("CHGDEBUG")) |
491 enabledebugmsg(); |
493 enabledebugmsg(); |
492 |
494 |
|
495 if (getenv("CHGINTERNALMARK")) |
|
496 abortmsg("chg started by chg detected.\n" |
|
497 "Please make sure ${HG:-hg} is not a symlink or " |
|
498 "wrapper to chg. Alternatively, set $CHGHG to the " |
|
499 "path of real hg."); |
|
500 |
493 if (isunsupported(argc - 1, argv + 1)) |
501 if (isunsupported(argc - 1, argv + 1)) |
494 execoriginalhg(argv); |
502 execoriginalhg(argv); |
495 |
503 |
496 struct cmdserveropts opts; |
504 struct cmdserveropts opts; |
497 initcmdserveropts(&opts); |
505 initcmdserveropts(&opts); |