PWB1/sys/source/s2/mkdir.c

/*
 * mkdir -- make directories
 */

main(argc, argv)
char **argv;
{
	static char dname[128], pname[128];
	static nerror;
	register char *p1, *p2, *p3;

	while (--argc > 0) {
		argv++;
		p1 = argv[0];
		p2 = dname;
		p3 = pname;
		while (*p2++ = *p3++ = *p1++);
		p2[-1] = '/';
		*p2++ = '.';
		*p2 = '\0';
		while (p3>pname && *--p3!='/');
		if (p3 > pname)
			*p3 = '\0';
		else if (*p3 == '/')
			p3[1] = '\0';
		else {
			*p3++ = '.';
			*p3++ = '\0';
		}
		if (access(pname, 02)) {
			perror("mkdir");
			nerror++;
			continue;
		}
		if (mknod(argv[0], 0140755, 0) < 0) {
			perror("mkdir");
			nerror++;
			continue;
		}
		chown(argv[0], ((getgid()&0377)<<8) + (getuid()&0377));
		link(argv[0], dname);
		*p2++ = '.';
		*p2 = '\0';
		link(pname, dname);
	}
	return(nerror);
}