errors |= sfcn(fn, fd, ep, &sb);
newsize = 0; errors |= sfcn(fn, fd, ep, &sb, &newsize);
main(argc, argv)	int argc;	char *argv[];{	int fd;	EXEC *ep;	struct stat sb;	int (*sfcn)(const char *, int, EXEC *, struct stat *);	int ch, errors;	char *fn;	sfcn = s_sym;	while ((ch = getopt(argc, argv, "dx")) != -1)		switch(ch) {                case 'x':                        xflag = 1;                        /*FALLTHROUGH*/		case 'd':			sfcn = s_stab;			break;		case '?':		default:			usage();		}	argc -= optind;	argv += optind;	errors = 0;#define	ERROR(x) errors |= 1; warnx("%s: %s", fn, strerror(x)); continue;	while ((fn = *argv++)) {		if ((fd = open(fn, O_RDWR)) < 0) {			ERROR(errno);		}        	if (fstat(fd, &sb)) {			(void)close(fd);			ERROR(errno);		}		if (sb.st_size < sizeof(EXEC)) {			(void)close(fd);			ERROR(EFTYPE);		}		if ((ep = (EXEC *)mmap(NULL, sb.st_size, PROT_READ|PROT_WRITE,		    MAP_SHARED, fd, (off_t)0)) == MAP_FAILED) {			(void)close(fd);			ERROR(errno);		}		if (BAD_OBJECT(*ep)) {			munmap((caddr_t)ep, sb.st_size);			(void)close(fd);			ERROR(EFTYPE);		}		/* since we're dealing with an mmap there, we have to convert once		   for dealing with data in memory, and a second time for out		 */		fix_header_order(ep);		errors |= sfcn(fn, fd, ep, &sb);		fix_header_order(ep);		munmap((caddr_t)ep, sb.st_size);		if (close(fd)) {			ERROR(errno);		}	}#undef ERROR	exit(errors);}