wok diff syslinux/stuff/iso2exe/win32.c @ rev 14264

syslinux/iso2exe: fix initrd offset
author Pascal Bellard <pascal.bellard@slitaz.org>
date Mon Apr 01 09:45:40 2013 +0200 (2013-04-01)
parents 692d9593f959
children ff85ea851c53
line diff
     1.1 --- a/syslinux/stuff/iso2exe/win32.c	Sun Mar 31 22:55:34 2013 +0100
     1.2 +++ b/syslinux/stuff/iso2exe/win32.c	Mon Apr 01 09:45:40 2013 +0200
     1.3 @@ -14,6 +14,7 @@
     1.4  		if (j <= 0) break;
     1.5  	}
     1.6  	return i;
     1.7 +#define read fullread
     1.8  }
     1.9  
    1.10  static int fullwrite(int fd, char *p, int n)
    1.11 @@ -24,6 +25,7 @@
    1.12  		if (j <= 0) break;
    1.13  	}
    1.14  	return i;
    1.15 +#define write fullwrite
    1.16  }
    1.17  
    1.18  static void exec16bits(char *isoFileName)
    1.19 @@ -39,9 +41,9 @@
    1.20  	fdiso = open(isoFileName, O_RDONLY|O_BINARY);
    1.21  	fdtmp = open(tmpFileName, O_WRONLY|O_BINARY|O_CREAT,0555);
    1.22  	for (i = 0; i < 0x8000; i += sizeof(buffer)) {
    1.23 -		fullread(fdiso, (char *) buffer, sizeof(buffer));
    1.24 +		read(fdiso, (char *) buffer, sizeof(buffer));
    1.25  		if (i == 0) buffer[15] = 0;	// kill PE header
    1.26 -		fullwrite(fdtmp, (char *) buffer, sizeof(buffer));
    1.27 +		write(fdtmp, (char *) buffer, sizeof(buffer));
    1.28  	}
    1.29  	close(fdiso);
    1.30  	close(fdtmp);
    1.31 @@ -64,17 +66,17 @@
    1.32  	
    1.33  	fdiso = open(isoFileName, O_RDONLY|O_BINARY);
    1.34  	if (lseek(fdiso, 17 * 2048L, SEEK_SET) != -1 &&
    1.35 -	    fullread(fdiso, buffer, 2048) == 2048 &&
    1.36 +	    read(fdiso, buffer, 2048) == 2048 &&
    1.37  	    strncmp(buffer+23,"EL TORITO SPECIFICATION",23) == 0) {
    1.38  		unsigned long lba = * (unsigned long *) (buffer + 71);
    1.39  		
    1.40  		if (lseek(fdiso, lba * 2048L, SEEK_SET) != -1 &&
    1.41 -		    fullread(fdiso, buffer, 2048) == 2048 &&
    1.42 +		    read(fdiso, buffer, 2048) == 2048 &&
    1.43  		    * (unsigned long *) (buffer + 0) == 1 &&
    1.44  		    * (unsigned long *) (buffer + 30) == 0x88AA55) {
    1.45  			lba = * (unsigned long *) (buffer + 40);
    1.46  			if (lseek(fdiso, lba * 2048L, SEEK_SET) != -1 &&
    1.47 -			    fullread(fdiso, buffer, 2048) == 2048)
    1.48 +			    read(fdiso, buffer, 2048) == 2048)
    1.49  				magic = * (unsigned long *) (buffer + 64);
    1.50  		}
    1.51  	}
    1.52 @@ -126,7 +128,7 @@
    1.53  		drive >>= 1;
    1.54  	fdiso = open(isoFileName, O_RDONLY|O_BINARY);
    1.55  	for (s = 0;;) {
    1.56 -		int s, n = fullread(fdiso, buffer, sizeof(buffer));
    1.57 +		int s, n = read(fdiso, buffer, sizeof(buffer));
    1.58  		if (n <= 0) break;
    1.59  		n = (n+511)/512;
    1.60  		if (s == 0) isohybrid = buffer[69];
    1.61 @@ -160,10 +162,10 @@
    1.62  		read(fd, buffer, sizeof(buffer));
    1.63  		n = buffer[BOOTSTRAP_SECTOR_COUNT_OFFSET];
    1.64  		if (n != 0 &&
    1.65 -	            lseek(fd, * (unsigned long *) (buffer + 60) - (512 * n),
    1.66 +	            lseek(fd, * (unsigned short *) (buffer + 66) - (512 * n),
    1.67  			      SEEK_SET) != -1) {
    1.68  			for (i = 0; i < n; i++) {
    1.69 -				fullread(fd, buffer, 512);
    1.70 +				read(fd, buffer, 512);
    1.71  				if (i == 1) strncpy(buffer, isoFileName, 512);
    1.72  				rdwrsector(MODE_WRITE, 0, i, 1, buffer);
    1.73  			}