[TUHS] Oddness in V6 'mv'

Noel Chiappa jnc at mercury.lcs.mit.edu
Thu Feb 15 03:47:29 AEST 2018

So, in:


what's the point of this piece of code:

	p = place;
	p1 = p;
	while(*p++ = *argp3++);
	p2 = p;
	while(*p++ = *argp4++);
	execl("/bin/cp","cp", p1, p2, 0);

I mean, I get that it's copying the two strings pointed to by 'argp3' and
'argp4' into a temporary buffer at 'place', and leaving 'p1' and 'p2' as
pointers to the copies of said strings, but... why is it doing that?

I at first thought that maybe the execl() call was smashing the stack (and
thus the copies pointed to by 'argp3' and 'argp4'), or something, but I don't
think it does that. So why couldn't the code have just been:

	execl("/bin/cp","cp", argp3, argp4, 0);

Is this code maybe just a left-over from some previous variant?


More information about the TUHS mailing list