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;