contrib/chg/chg.c
changeset 28261 2ab59ac06b76
parent 28260 0a17cfbe5429
child 28327 3ab370f84a23
equal deleted inserted replaced
28260:0a17cfbe5429 28261:2ab59ac06b76
   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);