wok-current annotate syslinux/stuff/extra/readconfig.u @ rev 23787
updated yaml and yaml-dev (0.2.2 -> 0.2.4)
author | Hans-G?nter Theisgen |
---|---|
date | Fri May 22 07:12:48 2020 +0100 (2020-05-22) |
parents | 922ed71c2f6d |
children |
rev | line source |
---|---|
pascal@13747 | 1 --- com32/menu/readconfig.c |
pascal@13747 | 2 +++ com32/menu/readconfig.c |
pascal@19192 | 3 @@ -23,6 +23,7 @@ |
pascal@19192 | 4 #include <com32.h> |
pascal@19192 | 5 #include <syslinux/adv.h> |
pascal@19192 | 6 #include <syslinux/config.h> |
pascal@19192 | 7 +#include <syslinux/disk.h> |
pascal@19192 | 8 |
pascal@19192 | 9 #include "menu.h" |
pascal@19192 | 10 |
pascal@19192 | 11 @@ -874,6 +875,31 @@ |
pascal@13747 | 12 } |
pascal@13747 | 13 } else if (looking_at(p, "start")) { |
pascal@13747 | 14 start_menu = m; |
pascal@13747 | 15 + } else if ((ep = looking_at(p, "startifnoarg"))) { |
pascal@19192 | 16 + const union syslinux_derivative_info *sdi; |
pascal@19192 | 17 + int custom = 0; |
pascal@13747 | 18 + size_t size; |
pascal@13747 | 19 + int slot; |
pascal@19192 | 20 + sdi = syslinux_derivative_info(); |
pascal@19192 | 21 + if (sdi->c.filesystem == SYSLINUX_FS_ISOLINUX) { |
pascal@19192 | 22 + struct disk_info diskinfo; |
pascal@19192 | 23 + char *custom_buffer; |
pascal@19192 | 24 + int got_config; |
pascal@19192 | 25 + |
pascal@19192 | 26 + disk_get_params(sdi->iso.drive_number, &diskinfo); |
pascal@19192 | 27 + custom_buffer = disk_read_sectors(&diskinfo, 32768 / diskinfo.bps, 1); |
pascal@19333 | 28 + got_config = (*(unsigned long *) (custom_buffer + 80)) |
pascal@19192 | 29 + * 2048 / diskinfo.bps; |
pascal@19192 | 30 + free(custom_buffer); |
pascal@19192 | 31 + custom_buffer = disk_read_sectors(&diskinfo, got_config, 1); |
pascal@19192 | 32 + if (!memcmp(custom_buffer,"#!boot ",7)) { |
pascal@19192 | 33 + custom++; |
pascal@19192 | 34 + } |
pascal@19192 | 35 + free(custom_buffer); |
pascal@19192 | 36 + } |
pascal@13747 | 37 + slot = strtoul(ep, &ep, 0); |
pascal@19192 | 38 + if (!custom && !syslinux_getadv(slot, &size)) |
pascal@13747 | 39 + start_menu = m; |
pascal@13747 | 40 } else if (looking_at(p, "help")) { |
pascal@13747 | 41 if (ld.label) { |
pascal@13747 | 42 ld.action = MA_HELP; |