wok-current diff syslinux/stuff/extra/md5sum.c @ rev 19345

Up slitaz-base-files (309)
author Aleksej Bobylev <al.bobylev@gmail.com>
date Fri Jul 22 09:40:10 2016 +0300 (2016-07-22)
parents 3b9bfe76d680
children 0253b140a342
line diff
     1.1 --- a/syslinux/stuff/extra/md5sum.c	Sun Jun 19 14:18:41 2016 +0200
     1.2 +++ b/syslinux/stuff/extra/md5sum.c	Fri Jul 22 09:40:10 2016 +0300
     1.3 @@ -739,6 +739,7 @@
     1.4  static int has_custom_config(void)
     1.5  {
     1.6      const union syslinux_derivative_info *sdi;
     1.7 +    int retry=0;
     1.8      
     1.9      if (got_config)
    1.10      	goto done;
    1.11 @@ -747,24 +748,27 @@
    1.12      	goto fail;
    1.13      disk_get_params(sdi->iso.drive_number, &diskinfo);
    1.14      custom_buffer = disk_read_sectors(&diskinfo, 32768 / diskinfo.bps, 1);
    1.15 -    got_config = (16 + *(unsigned long *) (custom_buffer + 80)) 
    1.16 -    		 * 2048 / diskinfo.bps;
    1.17 -    free(custom_buffer);
    1.18 -    custom_buffer = disk_read_sectors(&diskinfo, got_config, 1);
    1.19 -    if (!memcmp(custom_buffer,"#!boot ",7)) {
    1.20 -	char *p = custom_buffer+7+32+1;
    1.21 +    got_config = (*(unsigned long *) (custom_buffer + 80) * 2048) / diskinfo.bps;
    1.22 +    do {
    1.23 +	free(custom_buffer);
    1.24 +	custom_buffer = disk_read_sectors(&diskinfo, got_config, 1);
    1.25 +	if (!memcmp(custom_buffer,"#!boot ",7)) {
    1.26 +	    char *p = custom_buffer+7+32+1;
    1.27  	
    1.28 -    	if (!memcmp(p,"append=",7)) {
    1.29 -	    custom_cmdline = p + 7;
    1.30 -	    p = strchr(p,'\n');
    1.31 -	    *p++ = 0;
    1.32 -    	}
    1.33 -    	if (!memcmp(p,"initrd:",7)) {
    1.34 -    	    custom_initrdlen = strtoul(p + 7, &custom_initrdbase, 10);
    1.35 -    	    custom_initrdbase++;
    1.36 -    	}
    1.37 -    	return 1;
    1.38 -    }
    1.39 +    	    if (!memcmp(p,"append=",7)) {
    1.40 +		custom_cmdline = p + 7;
    1.41 +		p = strchr(p,'\n');
    1.42 +		*p++ = 0;
    1.43 +    	    }
    1.44 +    	    if (!memcmp(p,"initrd:",7)) {
    1.45 +    		custom_initrdlen = strtoul(p + 7, &custom_initrdbase, 10);
    1.46 +    		custom_initrdbase++;
    1.47 +    	    }
    1.48 +    	    return 1;
    1.49 +	}
    1.50 +	got_config += 16UL;
    1.51 +	retry = 1 - retry;
    1.52 +    } while (retry);
    1.53  fail:
    1.54      got_config = -1;
    1.55  done: