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: