while (*ptarget++ = *file++)
while ((*ptarget++ = *file++))
static void recvit(cmd, type)	char *cmd;	int type;{	int mode;	opt_t opts;	off_t size;	time_t mtime, atime;	char *owner, *group, *file;	char new[MAXPATHLEN];	long freespace = -1, freefiles = -1;	char *cp = cmd;	/*	 * Get rdist option flags	 */	opts = strtol(cp, &cp, 8);	if (*cp++ != ' ') {		error("recvit: options not delimited");		return;	}	/*	 * Get file mode	 */	mode = strtol(cp, &cp, 8);	if (*cp++ != ' ') {		error("recvit: mode not delimited");		return;	}	/*	 * Get file size	 */	size = strtol(cp, &cp, 10);	if (*cp++ != ' ') {		error("recvit: size not delimited");		return;	}	/*	 * Get modification time	 */	mtime = strtol(cp, &cp, 10);	if (*cp++ != ' ') {		error("recvit: mtime not delimited");		return;	}	/*	 * Get access time	 */	atime = strtol(cp, &cp, 10);	if (*cp++ != ' ') {		error("recvit: atime not delimited");		return;	}	/*	 * Get file owner name	 */	owner = strtok(cp, " ");	if (owner == NULL) {		error("recvit: owner name not delimited");		return;	}	/*	 * Get file group name	 */	group = strtok((char *)NULL, " ");	if (group == NULL) {		error("recvit: group name not delimited");		return;	}	/*	 * Get file name.  Can't use strtok() since there could	 * be white space in the file name.	 */	file = group + strlen(group) + 1;	if (file == NULL) {		error("recvit: no file name");		return;	}	debugmsg(DM_MISC,		 "recvit: opts = %04o mode = %04o size = %d mtime = %d",		 opts, mode, size, mtime);	debugmsg(DM_MISC,       "recvit: owner = '%s' group = '%s' file = '%s' catname = %d isdir = %d",		 owner, group, file, catname, (type == S_IFDIR) ? 1 : 0);	if (type == S_IFDIR) {		if (catname >= sizeof(sptarget)) {			error("%s: too many directory levels", target);			return;		}		sptarget[catname] = ptarget;		if (catname++) {			*ptarget++ = '/';			while (*ptarget++ = *file++)			    ;			ptarget--;		}	} else {		/*		 * Create name of temporary file		 */		if (catname && cattarget(file) < 0) {			error("Cannot set file name.");			return;		}		file = strrchr(target, '/');		if (file == NULL)			(void) strcpy(new, tempname);		else if (file == target)			(void) sprintf(new, "/%s", tempname);		else {			*file = CNULL;			(void) sprintf(new, "%s/%s", target, tempname);			*file = '/';		}		(void) mktemp(new);	}	/*	 * Check to see if there is enough free space and inodes	 * to install this file.	 */	if (min_freespace || min_freefiles) {		/* Convert file size to kilobytes */		long fsize = (long) (size / 1024);		if (getfilesysinfo(target, &freespace, &freefiles) != 0)			return;		/*		 * filesystem values < 0 indicate unsupported or unavailable		 * information.		 */		if (min_freespace && (freespace >= 0) && 		    (freespace - fsize < min_freespace)) {			error(		     "%s: Not enough free space on filesystem: min %d free %d",			      target, min_freespace, freespace);			return;		}		if (min_freefiles && (freefiles >= 0) &&		    (freefiles - 1 < min_freefiles)) {			error(		     "%s: Not enough free files on filesystem: min %d free %d",			      target, min_freefiles, freefiles);			return;		}	}	/*	 * Call appropriate receive function to receive file	 */	switch (type) {	case S_IFDIR:		recvdir(opts, mode, owner, group);		break;	case S_IFLNK:		recvlink(new, opts, mode, size);		break;	case S_IFREG:		recvfile(new, opts, mode, owner, group, mtime, atime, size);		break;	default:		error("%d: unknown file type", type);		break;	}}