grub/include/grub/script_sh.h

406 lines
12 KiB
C
Raw Normal View History

2009-05-02 Bean <bean123ch@gmail.com> * conf/common.rmk (grub_script.tab.c): Change normal/parser.y to script/sh/parser.y. (pkglib_MODULES): Add normal.mod and sh.mod. (normal_SOURCES): New variable. (normal_mod_CFLAGS): Likewise. (normal_mod_LDFLAGS): Likewise. (sh_mod_SOURCES): Likewise. (sh_mod_CFLAGS): Likewise. (sh_mod_LDFLAGS): Likewise. * conf/i386-pc.rmk (normal/lexer.c_DEPENDENCIES): Changed to script/sh/lexer.c_DEPENDENCIES. (kernel_img_SOURCES): Remove kern/rescue.c, and kern/reader.c, kern/rescue_reader.c and kern/rescue_parser.c. (kernel_img_HEADERS): Remove rescue.h, add reader.h. (grub_emu_SOURCES): Change source files. (pkglib_MODULES): Remove normal.mod. (normal_SOURCES): Removed. (normal_mod_CFLAGS): Likewise. (normal_mod_LDFLAGS): Likewise. * conf/i386-coreboot.rmk: Likewise. * conf/i386-efi.rmk: Likewise. * conf/i386-ieee1276.rmk: Likewise. * conf/powerpc-ieee1275.rmk: Likewise. * conf/sparc64-ieee1275.rmk: Likewise. * conf/x86_64-efi.rmk: Likewise. * include/grub/command.h (grub_command_execute): New inline function. * include/grub/menu.h (grub_menu_entry): Removed commands field. * include/grub/normal.h: Remove <grub/setjmp.h>. (grub_fs_module_list): Moved to normal/autofs.c. (grub_exit_env): Removed. (grub_command_execute): Likewise. (grub_normal_menu_addentry): Renamed to grub_menu_addentry, removed parameter script. (read_command_list): New function declaration. (read_fs_list): Likewise. * include/parser.h: Include <grub/reader.h>. (grub_parser_split_cmdline): Change type of getline parameter. (grub_parser): New structure. (grub_parser_class): New variable. (grub_parser_execute): New function declaration. (grub_register_rescue_parser): Likewise. (grub_parser_register): New inline function. (grub_parser_unregister): Likewise. (grub_parser_get_current): Likewise. (grub_parser_set_current): Likewise. * include/grub/reader.h: New file. * kern/reader.c: Likewise. * kern/rescue_parser.c: Likewise. * kern/rescue_reader.c: Likewise. * normal/autofs.c: Likewise. * normal/dyncmd.c: Likewise. * include/grub/rescue.h: Removed. * normal/command.h: Likewise. * include/grub/script.h: Moved to ... * include/grub/script_sh.h: ... Moved here. * normal/execute.c: Moved to ... * script/sh/execute.c: ... Moved here. * normal/function.c: Moved to ... * script/sh/function.c: ... Moved here. * normal/lexer.c: Moved to ... * script/sh/lexer.c: ... Moved here. * normal/parser.y: Moved to ... * script/sh/parser.y: ... Moved here. * normal/script.c: Moved to ... * script/sh/script.c: ... Moved here. * normal/main.c: Remove <grub/rescue.h> and <grub/script.h>, include <grub/reader.h>. (grub_exit_env): Removed. (fs_module_list): Moved to normal/autofs.c. (grub_file_getline): Don't handle comment here. (free_menu): Skip removed field entry->commands. (grub_normal_menu_addentry): Removed as grub_menu_entry, removed script parameter. (read_config_file): Removed nested parameter, change getline function. (grub_enter_normal_mode): Removed. (grub_dyncmd_dispatcher): Moved to normal/dyncmd.c. (read_command_list): Likewise. (autoload_fs_module): Moved to normal/autofs.c. (read_fs_list): Likewise. (reader_nested): New variable. (grub_normal_execute): Run parser.sh to switch to sh parser. (grub_cmd_rescue): Removed. (cmd_normal): Removed. (grub_cmd_normal): Unregister itself at the beginning. Don't register rescue command. (grub_cmdline_run): New function. (grub_normal_reader_init): Likewise. (grub_normal_read_line): Likewise. (grub_env_write_pager): Likewise. (cmdline): New variable. (grub_normal_reader): Likewise. (GRUB_MOD_INIT): Register normal reader and set as current, register pager hook, register normal command with grub_register_command_prio, so that it won't show up in command.lst. (GRUB_MOD_FINI): Unregister normal reader, unhook pager, clear grub_fs_autoload_hook. * normal/menu.c: Remove <grub/script.h>, add <grub/command.h>. (grub_menu_execute_entry): Replace grub_script_execute with grub_parser_execute, change parameter to grub_command_execute. * normal/menu_text.c: Remove <grub/script.h>. * normal/menu_entry.c: Remove <grub/script.h>, add <grub/command.h> and <grub/parser.h>. (run): Change editor_getline to use new parser interface. Change parameter to grub_command_execute. * kern/main.c: Remove <grub/rescue.h>, include <grub/command.h>, <grub/reader.h> and <grub/parser.h>. (grub_load_normal_mode): Execute normal command. (grub_main): Call grub_register_core_commands, grub_register_rescue_parser and grub_register_rescue_reader, use grub_reader_loop to enter input loop. * kern/parser.c (grub_parser_spli_cmdline): Change type of getline parameter. (grub_parser_class): New variable. (grub_parser_execute): New function. * loader/i386/multiboot.c: Remove <grub/rescue.h>. * loader/multiboot2.c: Likewise. * loader/sparc64/ieee1275/linux.c: Likewise. * util/grub-emu.c (read_command_list): New dummy function.
2009-05-02 19:49:34 +00:00
/* normal_parser.h */
/*
* GRUB -- GRand Unified Bootloader
2010-01-22 13:37:27 +00:00
* Copyright (C) 2005,2007,2009,2010 Free Software Foundation, Inc.
*
2007-07-22 Yoshinori K. Okuji <okuji@enbug.org> Migrate to GNU General Public License Version 3. * COPYING: Replaced with the plain text version of GPLv3. * config.guess: Updated from gnulib. * config.sub: Likewise. * geninit.sh: Output a GPLv3 copyright notice. * geninitheader.sh: Likewise. * genmodsrc.sh: Likewise. * gensymlist.sh.in: Likewise. * boot/i386/pc/boot.S: Upgraded to GPLv3. * boot/i386/pc/diskboot.S: Likewise. * boot/i386/pc/pxeboot.S: Likewise. * commands/blocklist.c: Likewise. * commands/boot.c: Likewise. * commands/cat.c: Likewise. * commands/cmp.c: Likewise. * commands/configfile.c: Likewise. * commands/echo.c: Likewise. * commands/help.c: Likewise. * commands/ls.c: Likewise. * commands/search.c: Likewise. * commands/terminal.c: Likewise. * commands/test.c: Likewise. * commands/videotest.c: Likewise. * commands/i386/cpuid.c: Likewise. * commands/i386/pc/halt.c: Likewise. * commands/i386/pc/play.c: Likewise. * commands/i386/pc/reboot.c: Likewise. * commands/i386/pc/vbeinfo.c: Likewise. * commands/i386/pc/vbetest.c: Likewise. * commands/ieee1275/halt.c: Likewise. * commands/ieee1275/reboot.c: Likewise. * commands/ieee1275/suspend.c: Likewise. * disk/loopback.c: Likewise. * disk/lvm.c: Likewise. * disk/raid.c: Likewise. * disk/efi/efidisk.c: Likewise. * disk/i386/pc/biosdisk.c: Likewise. * disk/ieee1275/ofdisk.c: Likewise. * font/manager.c: Likewise. * fs/affs.c: Likewise. * fs/ext2.c: Likewise. * fs/fat.c: Likewise. * fs/fshelp.c: Likewise. * fs/hfs.c: Likewise. * fs/hfsplus.c: Likewise. * fs/iso9660.c: Likewise. * fs/jfs.c: Likewise. * fs/minix.c: Likewise. * fs/sfs.c: Likewise. * fs/ufs.c: Likewise. * fs/xfs.c: Likewise. * hello/hello.c: Likewise. * include/grub/acorn_filecore.h: Likewise. * include/grub/arg.h: Likewise. * include/grub/bitmap.h: Likewise. * include/grub/boot.h: Likewise. * include/grub/cache.h: Likewise. * include/grub/device.h: Likewise. * include/grub/disk.h: Likewise. * include/grub/dl.h: Likewise. * include/grub/elfload.h: Likewise. * include/grub/env.h: Likewise. * include/grub/err.h: Likewise. * include/grub/file.h: Likewise. * include/grub/font.h: Likewise. * include/grub/fs.h: Likewise. * include/grub/fshelp.h: Likewise. * include/grub/gzio.h: Likewise. * include/grub/hfs.h: Likewise. * include/grub/kernel.h: Likewise. * include/grub/loader.h: Likewise. * include/grub/lvm.h: Likewise. * include/grub/misc.h: Likewise. * include/grub/mm.h: Likewise. * include/grub/net.h: Likewise. * include/grub/normal.h: Likewise. * include/grub/parser.h: Likewise. * include/grub/partition.h: Likewise. * include/grub/pc_partition.h: Likewise. * include/grub/raid.h: Likewise. * include/grub/rescue.h: Likewise. * include/grub/script.h: Likewise. * include/grub/setjmp.h: Likewise. * include/grub/symbol.h: Likewise. * include/grub/term.h: Likewise. * include/grub/terminfo.h: Likewise. * include/grub/tparm.h: Likewise. * include/grub/types.h: Likewise. * include/grub/video.h: Likewise. * include/grub/efi/api.h: Likewise. * include/grub/efi/chainloader.h: Likewise. * include/grub/efi/console.h: Likewise. * include/grub/efi/console_control.h: Likewise. * include/grub/efi/disk.h: Likewise. * include/grub/efi/efi.h: Likewise. * include/grub/efi/pe32.h: Likewise. * include/grub/efi/time.h: Likewise. * include/grub/i386/linux.h: Likewise. * include/grub/i386/setjmp.h: Likewise. * include/grub/i386/types.h: Likewise. * include/grub/i386/efi/kernel.h: Likewise. * include/grub/i386/efi/loader.h: Likewise. * include/grub/i386/efi/time.h: Likewise. * include/grub/i386/pc/biosdisk.h: Likewise. * include/grub/i386/pc/boot.h: Likewise. * include/grub/i386/pc/chainloader.h: Likewise. * include/grub/i386/pc/console.h: Likewise. * include/grub/i386/pc/init.h: Likewise. * include/grub/i386/pc/kernel.h: Likewise. * include/grub/i386/pc/loader.h: Likewise. * include/grub/i386/pc/memory.h: Likewise. * include/grub/i386/pc/multiboot.h: Likewise. * include/grub/i386/pc/serial.h: Likewise. * include/grub/i386/pc/time.h: Likewise. * include/grub/i386/pc/vbe.h: Likewise. * include/grub/i386/pc/vbeblit.h: Likewise. * include/grub/i386/pc/vbefill.h: Likewise. * include/grub/i386/pc/vbeutil.h: Likewise. * include/grub/i386/pc/vga.h: Likewise. * include/grub/ieee1275/ieee1275.h: Likewise. * include/grub/ieee1275/ofdisk.h: Likewise. * include/grub/powerpc/libgcc.h: Likewise. * include/grub/powerpc/setjmp.h: Likewise. * include/grub/powerpc/types.h: Likewise. * include/grub/powerpc/ieee1275/biosdisk.h: Likewise. * include/grub/powerpc/ieee1275/console.h: Likewise. * include/grub/powerpc/ieee1275/ieee1275.h: Likewise. * include/grub/powerpc/ieee1275/kernel.h: Likewise. * include/grub/powerpc/ieee1275/loader.h: Likewise. * include/grub/powerpc/ieee1275/multiboot.h: Likewise. * include/grub/powerpc/ieee1275/time.h: Likewise. * include/grub/powerpc/ieee1275/util/biosdisk.h: Likewise. * include/grub/sparc64/libgcc.h: Likewise. * include/grub/sparc64/setjmp.h: Likewise. * include/grub/sparc64/types.h: Likewise. * include/grub/sparc64/ieee1275/console.h: Likewise. * include/grub/sparc64/ieee1275/ieee1275.h: Likewise. * include/grub/sparc64/ieee1275/kernel.h: Likewise. * include/grub/sparc64/ieee1275/time.h: Likewise. * include/grub/util/biosdisk.h: Likewise. * include/grub/util/getroot.h: Likewise. * include/grub/util/lvm.h: Likewise. * include/grub/util/misc.h: Likewise. * include/grub/util/raid.h: Likewise. * include/grub/util/resolve.h: Likewise. * io/gzio.c: Likewise. * kern/device.c: Likewise. * kern/disk.c: Likewise. * kern/dl.c: Likewise. * kern/elf.c: Likewise. * kern/env.c: Likewise. * kern/err.c: Likewise. * kern/file.c: Likewise. * kern/fs.c: Likewise. * kern/loader.c: Likewise. * kern/main.c: Likewise. * kern/misc.c: Likewise. * kern/mm.c: Likewise. * kern/parser.c: Likewise. * kern/partition.c: Likewise. * kern/rescue.c: Likewise. * kern/term.c: Likewise. * kern/efi/efi.c: Likewise. * kern/efi/init.c: Likewise. * kern/efi/mm.c: Likewise. * kern/i386/dl.c: Likewise. * kern/i386/efi/init.c: Likewise. * kern/i386/efi/startup.S: Likewise. * kern/i386/pc/init.c: Likewise. * kern/i386/pc/lzo1x.S: Likewise. * kern/i386/pc/startup.S: Likewise. * kern/ieee1275/ieee1275.c: Likewise. * kern/powerpc/cache.S: Likewise. * kern/powerpc/dl.c: Likewise. * kern/powerpc/ieee1275/cmain.c: Likewise. * kern/powerpc/ieee1275/crt0.S: Likewise. * kern/powerpc/ieee1275/init.c: Likewise. * kern/powerpc/ieee1275/openfw.c: Likewise. * kern/sparc64/cache.S: Likewise. * kern/sparc64/dl.c: Likewise. * kern/sparc64/ieee1275/init.c: Likewise. * kern/sparc64/ieee1275/openfw.c: Likewise. * loader/efi/chainloader.c: Likewise. * loader/efi/chainloader_normal.c: Likewise. * loader/i386/efi/linux.c: Likewise. * loader/i386/efi/linux_normal.c: Likewise. * loader/i386/pc/chainloader.c: Likewise. * loader/i386/pc/chainloader_normal.c: Likewise. * loader/i386/pc/linux.c: Likewise. * loader/i386/pc/linux_normal.c: Likewise. * loader/i386/pc/multiboot.c: Likewise. * loader/i386/pc/multiboot_normal.c: Likewise. * loader/powerpc/ieee1275/linux.c: Likewise. * loader/powerpc/ieee1275/linux_normal.c: Likewise. * normal/arg.c: Likewise. * normal/cmdline.c: Likewise. * normal/command.c: Likewise. * normal/completion.c: Likewise. * normal/execute.c: Likewise. * normal/function.c: Likewise. * normal/lexer.c: Likewise. * normal/main.c: Likewise. * normal/menu.c: Likewise. * normal/menu_entry.c: Likewise. * normal/misc.c: Likewise. * normal/parser.y: Likewise. * normal/script.c: Likewise. * normal/i386/setjmp.S: Likewise. * normal/powerpc/setjmp.S: Likewise. * normal/sparc64/setjmp.S: Likewise. * partmap/acorn.c: Likewise. * partmap/amiga.c: Likewise. * partmap/apple.c: Likewise. * partmap/gpt.c: Likewise. * partmap/pc.c: Likewise. * partmap/sun.c: Likewise. * term/gfxterm.c: Likewise. * term/terminfo.c: Likewise. * term/efi/console.c: Likewise. * term/i386/pc/console.c: Likewise. * term/i386/pc/serial.c: Likewise. * term/i386/pc/vesafb.c: Likewise. * term/i386/pc/vga.c: Likewise. * term/ieee1275/ofconsole.c: Likewise. * util/biosdisk.c: Likewise. * util/console.c: Likewise. * util/genmoddep.c: Likewise. * util/getroot.c: Likewise. * util/grub-emu.c: Likewise. * util/grub-mkdevicemap.c: Likewise. * util/grub-probe.c: Likewise. * util/lvm.c: Likewise. * util/misc.c: Likewise. * util/raid.c: Likewise. * util/resolve.c: Likewise. * util/update-grub.in: Likewise. * util/update-grub_lib.in: Likewise. * util/grub.d/00_header.in: Likewise. * util/grub.d/10_hurd.in: Likewise. * util/grub.d/10_linux.in: Likewise. * util/i386/efi/grub-install.in: Likewise. * util/i386/efi/grub-mkimage.c: Likewise. * util/i386/pc/grub-install.in: Likewise. * util/i386/pc/grub-mkimage.c: Likewise. * util/i386/pc/grub-mkrescue.in: Likewise. * util/i386/pc/grub-setup.c: Likewise. * util/i386/pc/misc.c: Likewise. * util/powerpc/ieee1275/grub-install.in: Likewise. * util/powerpc/ieee1275/grub-mkimage.c: Likewise. * util/powerpc/ieee1275/misc.c: Likewise. * video/bitmap.c: Likewise. * video/video.c: Likewise. * video/i386/pc/vbe.c: Likewise. * video/i386/pc/vbeblit.c: Likewise. * video/i386/pc/vbefill.c: Likewise. * video/i386/pc/vbeutil.c: Likewise. * video/readers/tga.c: Likewise.
2007-07-21 23:32:33 +00:00
* GRUB is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
2007-07-22 Yoshinori K. Okuji <okuji@enbug.org> Migrate to GNU General Public License Version 3. * COPYING: Replaced with the plain text version of GPLv3. * config.guess: Updated from gnulib. * config.sub: Likewise. * geninit.sh: Output a GPLv3 copyright notice. * geninitheader.sh: Likewise. * genmodsrc.sh: Likewise. * gensymlist.sh.in: Likewise. * boot/i386/pc/boot.S: Upgraded to GPLv3. * boot/i386/pc/diskboot.S: Likewise. * boot/i386/pc/pxeboot.S: Likewise. * commands/blocklist.c: Likewise. * commands/boot.c: Likewise. * commands/cat.c: Likewise. * commands/cmp.c: Likewise. * commands/configfile.c: Likewise. * commands/echo.c: Likewise. * commands/help.c: Likewise. * commands/ls.c: Likewise. * commands/search.c: Likewise. * commands/terminal.c: Likewise. * commands/test.c: Likewise. * commands/videotest.c: Likewise. * commands/i386/cpuid.c: Likewise. * commands/i386/pc/halt.c: Likewise. * commands/i386/pc/play.c: Likewise. * commands/i386/pc/reboot.c: Likewise. * commands/i386/pc/vbeinfo.c: Likewise. * commands/i386/pc/vbetest.c: Likewise. * commands/ieee1275/halt.c: Likewise. * commands/ieee1275/reboot.c: Likewise. * commands/ieee1275/suspend.c: Likewise. * disk/loopback.c: Likewise. * disk/lvm.c: Likewise. * disk/raid.c: Likewise. * disk/efi/efidisk.c: Likewise. * disk/i386/pc/biosdisk.c: Likewise. * disk/ieee1275/ofdisk.c: Likewise. * font/manager.c: Likewise. * fs/affs.c: Likewise. * fs/ext2.c: Likewise. * fs/fat.c: Likewise. * fs/fshelp.c: Likewise. * fs/hfs.c: Likewise. * fs/hfsplus.c: Likewise. * fs/iso9660.c: Likewise. * fs/jfs.c: Likewise. * fs/minix.c: Likewise. * fs/sfs.c: Likewise. * fs/ufs.c: Likewise. * fs/xfs.c: Likewise. * hello/hello.c: Likewise. * include/grub/acorn_filecore.h: Likewise. * include/grub/arg.h: Likewise. * include/grub/bitmap.h: Likewise. * include/grub/boot.h: Likewise. * include/grub/cache.h: Likewise. * include/grub/device.h: Likewise. * include/grub/disk.h: Likewise. * include/grub/dl.h: Likewise. * include/grub/elfload.h: Likewise. * include/grub/env.h: Likewise. * include/grub/err.h: Likewise. * include/grub/file.h: Likewise. * include/grub/font.h: Likewise. * include/grub/fs.h: Likewise. * include/grub/fshelp.h: Likewise. * include/grub/gzio.h: Likewise. * include/grub/hfs.h: Likewise. * include/grub/kernel.h: Likewise. * include/grub/loader.h: Likewise. * include/grub/lvm.h: Likewise. * include/grub/misc.h: Likewise. * include/grub/mm.h: Likewise. * include/grub/net.h: Likewise. * include/grub/normal.h: Likewise. * include/grub/parser.h: Likewise. * include/grub/partition.h: Likewise. * include/grub/pc_partition.h: Likewise. * include/grub/raid.h: Likewise. * include/grub/rescue.h: Likewise. * include/grub/script.h: Likewise. * include/grub/setjmp.h: Likewise. * include/grub/symbol.h: Likewise. * include/grub/term.h: Likewise. * include/grub/terminfo.h: Likewise. * include/grub/tparm.h: Likewise. * include/grub/types.h: Likewise. * include/grub/video.h: Likewise. * include/grub/efi/api.h: Likewise. * include/grub/efi/chainloader.h: Likewise. * include/grub/efi/console.h: Likewise. * include/grub/efi/console_control.h: Likewise. * include/grub/efi/disk.h: Likewise. * include/grub/efi/efi.h: Likewise. * include/grub/efi/pe32.h: Likewise. * include/grub/efi/time.h: Likewise. * include/grub/i386/linux.h: Likewise. * include/grub/i386/setjmp.h: Likewise. * include/grub/i386/types.h: Likewise. * include/grub/i386/efi/kernel.h: Likewise. * include/grub/i386/efi/loader.h: Likewise. * include/grub/i386/efi/time.h: Likewise. * include/grub/i386/pc/biosdisk.h: Likewise. * include/grub/i386/pc/boot.h: Likewise. * include/grub/i386/pc/chainloader.h: Likewise. * include/grub/i386/pc/console.h: Likewise. * include/grub/i386/pc/init.h: Likewise. * include/grub/i386/pc/kernel.h: Likewise. * include/grub/i386/pc/loader.h: Likewise. * include/grub/i386/pc/memory.h: Likewise. * include/grub/i386/pc/multiboot.h: Likewise. * include/grub/i386/pc/serial.h: Likewise. * include/grub/i386/pc/time.h: Likewise. * include/grub/i386/pc/vbe.h: Likewise. * include/grub/i386/pc/vbeblit.h: Likewise. * include/grub/i386/pc/vbefill.h: Likewise. * include/grub/i386/pc/vbeutil.h: Likewise. * include/grub/i386/pc/vga.h: Likewise. * include/grub/ieee1275/ieee1275.h: Likewise. * include/grub/ieee1275/ofdisk.h: Likewise. * include/grub/powerpc/libgcc.h: Likewise. * include/grub/powerpc/setjmp.h: Likewise. * include/grub/powerpc/types.h: Likewise. * include/grub/powerpc/ieee1275/biosdisk.h: Likewise. * include/grub/powerpc/ieee1275/console.h: Likewise. * include/grub/powerpc/ieee1275/ieee1275.h: Likewise. * include/grub/powerpc/ieee1275/kernel.h: Likewise. * include/grub/powerpc/ieee1275/loader.h: Likewise. * include/grub/powerpc/ieee1275/multiboot.h: Likewise. * include/grub/powerpc/ieee1275/time.h: Likewise. * include/grub/powerpc/ieee1275/util/biosdisk.h: Likewise. * include/grub/sparc64/libgcc.h: Likewise. * include/grub/sparc64/setjmp.h: Likewise. * include/grub/sparc64/types.h: Likewise. * include/grub/sparc64/ieee1275/console.h: Likewise. * include/grub/sparc64/ieee1275/ieee1275.h: Likewise. * include/grub/sparc64/ieee1275/kernel.h: Likewise. * include/grub/sparc64/ieee1275/time.h: Likewise. * include/grub/util/biosdisk.h: Likewise. * include/grub/util/getroot.h: Likewise. * include/grub/util/lvm.h: Likewise. * include/grub/util/misc.h: Likewise. * include/grub/util/raid.h: Likewise. * include/grub/util/resolve.h: Likewise. * io/gzio.c: Likewise. * kern/device.c: Likewise. * kern/disk.c: Likewise. * kern/dl.c: Likewise. * kern/elf.c: Likewise. * kern/env.c: Likewise. * kern/err.c: Likewise. * kern/file.c: Likewise. * kern/fs.c: Likewise. * kern/loader.c: Likewise. * kern/main.c: Likewise. * kern/misc.c: Likewise. * kern/mm.c: Likewise. * kern/parser.c: Likewise. * kern/partition.c: Likewise. * kern/rescue.c: Likewise. * kern/term.c: Likewise. * kern/efi/efi.c: Likewise. * kern/efi/init.c: Likewise. * kern/efi/mm.c: Likewise. * kern/i386/dl.c: Likewise. * kern/i386/efi/init.c: Likewise. * kern/i386/efi/startup.S: Likewise. * kern/i386/pc/init.c: Likewise. * kern/i386/pc/lzo1x.S: Likewise. * kern/i386/pc/startup.S: Likewise. * kern/ieee1275/ieee1275.c: Likewise. * kern/powerpc/cache.S: Likewise. * kern/powerpc/dl.c: Likewise. * kern/powerpc/ieee1275/cmain.c: Likewise. * kern/powerpc/ieee1275/crt0.S: Likewise. * kern/powerpc/ieee1275/init.c: Likewise. * kern/powerpc/ieee1275/openfw.c: Likewise. * kern/sparc64/cache.S: Likewise. * kern/sparc64/dl.c: Likewise. * kern/sparc64/ieee1275/init.c: Likewise. * kern/sparc64/ieee1275/openfw.c: Likewise. * loader/efi/chainloader.c: Likewise. * loader/efi/chainloader_normal.c: Likewise. * loader/i386/efi/linux.c: Likewise. * loader/i386/efi/linux_normal.c: Likewise. * loader/i386/pc/chainloader.c: Likewise. * loader/i386/pc/chainloader_normal.c: Likewise. * loader/i386/pc/linux.c: Likewise. * loader/i386/pc/linux_normal.c: Likewise. * loader/i386/pc/multiboot.c: Likewise. * loader/i386/pc/multiboot_normal.c: Likewise. * loader/powerpc/ieee1275/linux.c: Likewise. * loader/powerpc/ieee1275/linux_normal.c: Likewise. * normal/arg.c: Likewise. * normal/cmdline.c: Likewise. * normal/command.c: Likewise. * normal/completion.c: Likewise. * normal/execute.c: Likewise. * normal/function.c: Likewise. * normal/lexer.c: Likewise. * normal/main.c: Likewise. * normal/menu.c: Likewise. * normal/menu_entry.c: Likewise. * normal/misc.c: Likewise. * normal/parser.y: Likewise. * normal/script.c: Likewise. * normal/i386/setjmp.S: Likewise. * normal/powerpc/setjmp.S: Likewise. * normal/sparc64/setjmp.S: Likewise. * partmap/acorn.c: Likewise. * partmap/amiga.c: Likewise. * partmap/apple.c: Likewise. * partmap/gpt.c: Likewise. * partmap/pc.c: Likewise. * partmap/sun.c: Likewise. * term/gfxterm.c: Likewise. * term/terminfo.c: Likewise. * term/efi/console.c: Likewise. * term/i386/pc/console.c: Likewise. * term/i386/pc/serial.c: Likewise. * term/i386/pc/vesafb.c: Likewise. * term/i386/pc/vga.c: Likewise. * term/ieee1275/ofconsole.c: Likewise. * util/biosdisk.c: Likewise. * util/console.c: Likewise. * util/genmoddep.c: Likewise. * util/getroot.c: Likewise. * util/grub-emu.c: Likewise. * util/grub-mkdevicemap.c: Likewise. * util/grub-probe.c: Likewise. * util/lvm.c: Likewise. * util/misc.c: Likewise. * util/raid.c: Likewise. * util/resolve.c: Likewise. * util/update-grub.in: Likewise. * util/update-grub_lib.in: Likewise. * util/grub.d/00_header.in: Likewise. * util/grub.d/10_hurd.in: Likewise. * util/grub.d/10_linux.in: Likewise. * util/i386/efi/grub-install.in: Likewise. * util/i386/efi/grub-mkimage.c: Likewise. * util/i386/pc/grub-install.in: Likewise. * util/i386/pc/grub-mkimage.c: Likewise. * util/i386/pc/grub-mkrescue.in: Likewise. * util/i386/pc/grub-setup.c: Likewise. * util/i386/pc/misc.c: Likewise. * util/powerpc/ieee1275/grub-install.in: Likewise. * util/powerpc/ieee1275/grub-mkimage.c: Likewise. * util/powerpc/ieee1275/misc.c: Likewise. * video/bitmap.c: Likewise. * video/video.c: Likewise. * video/i386/pc/vbe.c: Likewise. * video/i386/pc/vbeblit.c: Likewise. * video/i386/pc/vbefill.c: Likewise. * video/i386/pc/vbeutil.c: Likewise. * video/readers/tga.c: Likewise.
2007-07-21 23:32:33 +00:00
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
2007-07-22 Yoshinori K. Okuji <okuji@enbug.org> Migrate to GNU General Public License Version 3. * COPYING: Replaced with the plain text version of GPLv3. * config.guess: Updated from gnulib. * config.sub: Likewise. * geninit.sh: Output a GPLv3 copyright notice. * geninitheader.sh: Likewise. * genmodsrc.sh: Likewise. * gensymlist.sh.in: Likewise. * boot/i386/pc/boot.S: Upgraded to GPLv3. * boot/i386/pc/diskboot.S: Likewise. * boot/i386/pc/pxeboot.S: Likewise. * commands/blocklist.c: Likewise. * commands/boot.c: Likewise. * commands/cat.c: Likewise. * commands/cmp.c: Likewise. * commands/configfile.c: Likewise. * commands/echo.c: Likewise. * commands/help.c: Likewise. * commands/ls.c: Likewise. * commands/search.c: Likewise. * commands/terminal.c: Likewise. * commands/test.c: Likewise. * commands/videotest.c: Likewise. * commands/i386/cpuid.c: Likewise. * commands/i386/pc/halt.c: Likewise. * commands/i386/pc/play.c: Likewise. * commands/i386/pc/reboot.c: Likewise. * commands/i386/pc/vbeinfo.c: Likewise. * commands/i386/pc/vbetest.c: Likewise. * commands/ieee1275/halt.c: Likewise. * commands/ieee1275/reboot.c: Likewise. * commands/ieee1275/suspend.c: Likewise. * disk/loopback.c: Likewise. * disk/lvm.c: Likewise. * disk/raid.c: Likewise. * disk/efi/efidisk.c: Likewise. * disk/i386/pc/biosdisk.c: Likewise. * disk/ieee1275/ofdisk.c: Likewise. * font/manager.c: Likewise. * fs/affs.c: Likewise. * fs/ext2.c: Likewise. * fs/fat.c: Likewise. * fs/fshelp.c: Likewise. * fs/hfs.c: Likewise. * fs/hfsplus.c: Likewise. * fs/iso9660.c: Likewise. * fs/jfs.c: Likewise. * fs/minix.c: Likewise. * fs/sfs.c: Likewise. * fs/ufs.c: Likewise. * fs/xfs.c: Likewise. * hello/hello.c: Likewise. * include/grub/acorn_filecore.h: Likewise. * include/grub/arg.h: Likewise. * include/grub/bitmap.h: Likewise. * include/grub/boot.h: Likewise. * include/grub/cache.h: Likewise. * include/grub/device.h: Likewise. * include/grub/disk.h: Likewise. * include/grub/dl.h: Likewise. * include/grub/elfload.h: Likewise. * include/grub/env.h: Likewise. * include/grub/err.h: Likewise. * include/grub/file.h: Likewise. * include/grub/font.h: Likewise. * include/grub/fs.h: Likewise. * include/grub/fshelp.h: Likewise. * include/grub/gzio.h: Likewise. * include/grub/hfs.h: Likewise. * include/grub/kernel.h: Likewise. * include/grub/loader.h: Likewise. * include/grub/lvm.h: Likewise. * include/grub/misc.h: Likewise. * include/grub/mm.h: Likewise. * include/grub/net.h: Likewise. * include/grub/normal.h: Likewise. * include/grub/parser.h: Likewise. * include/grub/partition.h: Likewise. * include/grub/pc_partition.h: Likewise. * include/grub/raid.h: Likewise. * include/grub/rescue.h: Likewise. * include/grub/script.h: Likewise. * include/grub/setjmp.h: Likewise. * include/grub/symbol.h: Likewise. * include/grub/term.h: Likewise. * include/grub/terminfo.h: Likewise. * include/grub/tparm.h: Likewise. * include/grub/types.h: Likewise. * include/grub/video.h: Likewise. * include/grub/efi/api.h: Likewise. * include/grub/efi/chainloader.h: Likewise. * include/grub/efi/console.h: Likewise. * include/grub/efi/console_control.h: Likewise. * include/grub/efi/disk.h: Likewise. * include/grub/efi/efi.h: Likewise. * include/grub/efi/pe32.h: Likewise. * include/grub/efi/time.h: Likewise. * include/grub/i386/linux.h: Likewise. * include/grub/i386/setjmp.h: Likewise. * include/grub/i386/types.h: Likewise. * include/grub/i386/efi/kernel.h: Likewise. * include/grub/i386/efi/loader.h: Likewise. * include/grub/i386/efi/time.h: Likewise. * include/grub/i386/pc/biosdisk.h: Likewise. * include/grub/i386/pc/boot.h: Likewise. * include/grub/i386/pc/chainloader.h: Likewise. * include/grub/i386/pc/console.h: Likewise. * include/grub/i386/pc/init.h: Likewise. * include/grub/i386/pc/kernel.h: Likewise. * include/grub/i386/pc/loader.h: Likewise. * include/grub/i386/pc/memory.h: Likewise. * include/grub/i386/pc/multiboot.h: Likewise. * include/grub/i386/pc/serial.h: Likewise. * include/grub/i386/pc/time.h: Likewise. * include/grub/i386/pc/vbe.h: Likewise. * include/grub/i386/pc/vbeblit.h: Likewise. * include/grub/i386/pc/vbefill.h: Likewise. * include/grub/i386/pc/vbeutil.h: Likewise. * include/grub/i386/pc/vga.h: Likewise. * include/grub/ieee1275/ieee1275.h: Likewise. * include/grub/ieee1275/ofdisk.h: Likewise. * include/grub/powerpc/libgcc.h: Likewise. * include/grub/powerpc/setjmp.h: Likewise. * include/grub/powerpc/types.h: Likewise. * include/grub/powerpc/ieee1275/biosdisk.h: Likewise. * include/grub/powerpc/ieee1275/console.h: Likewise. * include/grub/powerpc/ieee1275/ieee1275.h: Likewise. * include/grub/powerpc/ieee1275/kernel.h: Likewise. * include/grub/powerpc/ieee1275/loader.h: Likewise. * include/grub/powerpc/ieee1275/multiboot.h: Likewise. * include/grub/powerpc/ieee1275/time.h: Likewise. * include/grub/powerpc/ieee1275/util/biosdisk.h: Likewise. * include/grub/sparc64/libgcc.h: Likewise. * include/grub/sparc64/setjmp.h: Likewise. * include/grub/sparc64/types.h: Likewise. * include/grub/sparc64/ieee1275/console.h: Likewise. * include/grub/sparc64/ieee1275/ieee1275.h: Likewise. * include/grub/sparc64/ieee1275/kernel.h: Likewise. * include/grub/sparc64/ieee1275/time.h: Likewise. * include/grub/util/biosdisk.h: Likewise. * include/grub/util/getroot.h: Likewise. * include/grub/util/lvm.h: Likewise. * include/grub/util/misc.h: Likewise. * include/grub/util/raid.h: Likewise. * include/grub/util/resolve.h: Likewise. * io/gzio.c: Likewise. * kern/device.c: Likewise. * kern/disk.c: Likewise. * kern/dl.c: Likewise. * kern/elf.c: Likewise. * kern/env.c: Likewise. * kern/err.c: Likewise. * kern/file.c: Likewise. * kern/fs.c: Likewise. * kern/loader.c: Likewise. * kern/main.c: Likewise. * kern/misc.c: Likewise. * kern/mm.c: Likewise. * kern/parser.c: Likewise. * kern/partition.c: Likewise. * kern/rescue.c: Likewise. * kern/term.c: Likewise. * kern/efi/efi.c: Likewise. * kern/efi/init.c: Likewise. * kern/efi/mm.c: Likewise. * kern/i386/dl.c: Likewise. * kern/i386/efi/init.c: Likewise. * kern/i386/efi/startup.S: Likewise. * kern/i386/pc/init.c: Likewise. * kern/i386/pc/lzo1x.S: Likewise. * kern/i386/pc/startup.S: Likewise. * kern/ieee1275/ieee1275.c: Likewise. * kern/powerpc/cache.S: Likewise. * kern/powerpc/dl.c: Likewise. * kern/powerpc/ieee1275/cmain.c: Likewise. * kern/powerpc/ieee1275/crt0.S: Likewise. * kern/powerpc/ieee1275/init.c: Likewise. * kern/powerpc/ieee1275/openfw.c: Likewise. * kern/sparc64/cache.S: Likewise. * kern/sparc64/dl.c: Likewise. * kern/sparc64/ieee1275/init.c: Likewise. * kern/sparc64/ieee1275/openfw.c: Likewise. * loader/efi/chainloader.c: Likewise. * loader/efi/chainloader_normal.c: Likewise. * loader/i386/efi/linux.c: Likewise. * loader/i386/efi/linux_normal.c: Likewise. * loader/i386/pc/chainloader.c: Likewise. * loader/i386/pc/chainloader_normal.c: Likewise. * loader/i386/pc/linux.c: Likewise. * loader/i386/pc/linux_normal.c: Likewise. * loader/i386/pc/multiboot.c: Likewise. * loader/i386/pc/multiboot_normal.c: Likewise. * loader/powerpc/ieee1275/linux.c: Likewise. * loader/powerpc/ieee1275/linux_normal.c: Likewise. * normal/arg.c: Likewise. * normal/cmdline.c: Likewise. * normal/command.c: Likewise. * normal/completion.c: Likewise. * normal/execute.c: Likewise. * normal/function.c: Likewise. * normal/lexer.c: Likewise. * normal/main.c: Likewise. * normal/menu.c: Likewise. * normal/menu_entry.c: Likewise. * normal/misc.c: Likewise. * normal/parser.y: Likewise. * normal/script.c: Likewise. * normal/i386/setjmp.S: Likewise. * normal/powerpc/setjmp.S: Likewise. * normal/sparc64/setjmp.S: Likewise. * partmap/acorn.c: Likewise. * partmap/amiga.c: Likewise. * partmap/apple.c: Likewise. * partmap/gpt.c: Likewise. * partmap/pc.c: Likewise. * partmap/sun.c: Likewise. * term/gfxterm.c: Likewise. * term/terminfo.c: Likewise. * term/efi/console.c: Likewise. * term/i386/pc/console.c: Likewise. * term/i386/pc/serial.c: Likewise. * term/i386/pc/vesafb.c: Likewise. * term/i386/pc/vga.c: Likewise. * term/ieee1275/ofconsole.c: Likewise. * util/biosdisk.c: Likewise. * util/console.c: Likewise. * util/genmoddep.c: Likewise. * util/getroot.c: Likewise. * util/grub-emu.c: Likewise. * util/grub-mkdevicemap.c: Likewise. * util/grub-probe.c: Likewise. * util/lvm.c: Likewise. * util/misc.c: Likewise. * util/raid.c: Likewise. * util/resolve.c: Likewise. * util/update-grub.in: Likewise. * util/update-grub_lib.in: Likewise. * util/grub.d/00_header.in: Likewise. * util/grub.d/10_hurd.in: Likewise. * util/grub.d/10_linux.in: Likewise. * util/i386/efi/grub-install.in: Likewise. * util/i386/efi/grub-mkimage.c: Likewise. * util/i386/pc/grub-install.in: Likewise. * util/i386/pc/grub-mkimage.c: Likewise. * util/i386/pc/grub-mkrescue.in: Likewise. * util/i386/pc/grub-setup.c: Likewise. * util/i386/pc/misc.c: Likewise. * util/powerpc/ieee1275/grub-install.in: Likewise. * util/powerpc/ieee1275/grub-mkimage.c: Likewise. * util/powerpc/ieee1275/misc.c: Likewise. * video/bitmap.c: Likewise. * video/video.c: Likewise. * video/i386/pc/vbe.c: Likewise. * video/i386/pc/vbeblit.c: Likewise. * video/i386/pc/vbefill.c: Likewise. * video/i386/pc/vbeutil.c: Likewise. * video/readers/tga.c: Likewise.
2007-07-21 23:32:33 +00:00
* GRUB is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
2007-07-22 Yoshinori K. Okuji <okuji@enbug.org> Migrate to GNU General Public License Version 3. * COPYING: Replaced with the plain text version of GPLv3. * config.guess: Updated from gnulib. * config.sub: Likewise. * geninit.sh: Output a GPLv3 copyright notice. * geninitheader.sh: Likewise. * genmodsrc.sh: Likewise. * gensymlist.sh.in: Likewise. * boot/i386/pc/boot.S: Upgraded to GPLv3. * boot/i386/pc/diskboot.S: Likewise. * boot/i386/pc/pxeboot.S: Likewise. * commands/blocklist.c: Likewise. * commands/boot.c: Likewise. * commands/cat.c: Likewise. * commands/cmp.c: Likewise. * commands/configfile.c: Likewise. * commands/echo.c: Likewise. * commands/help.c: Likewise. * commands/ls.c: Likewise. * commands/search.c: Likewise. * commands/terminal.c: Likewise. * commands/test.c: Likewise. * commands/videotest.c: Likewise. * commands/i386/cpuid.c: Likewise. * commands/i386/pc/halt.c: Likewise. * commands/i386/pc/play.c: Likewise. * commands/i386/pc/reboot.c: Likewise. * commands/i386/pc/vbeinfo.c: Likewise. * commands/i386/pc/vbetest.c: Likewise. * commands/ieee1275/halt.c: Likewise. * commands/ieee1275/reboot.c: Likewise. * commands/ieee1275/suspend.c: Likewise. * disk/loopback.c: Likewise. * disk/lvm.c: Likewise. * disk/raid.c: Likewise. * disk/efi/efidisk.c: Likewise. * disk/i386/pc/biosdisk.c: Likewise. * disk/ieee1275/ofdisk.c: Likewise. * font/manager.c: Likewise. * fs/affs.c: Likewise. * fs/ext2.c: Likewise. * fs/fat.c: Likewise. * fs/fshelp.c: Likewise. * fs/hfs.c: Likewise. * fs/hfsplus.c: Likewise. * fs/iso9660.c: Likewise. * fs/jfs.c: Likewise. * fs/minix.c: Likewise. * fs/sfs.c: Likewise. * fs/ufs.c: Likewise. * fs/xfs.c: Likewise. * hello/hello.c: Likewise. * include/grub/acorn_filecore.h: Likewise. * include/grub/arg.h: Likewise. * include/grub/bitmap.h: Likewise. * include/grub/boot.h: Likewise. * include/grub/cache.h: Likewise. * include/grub/device.h: Likewise. * include/grub/disk.h: Likewise. * include/grub/dl.h: Likewise. * include/grub/elfload.h: Likewise. * include/grub/env.h: Likewise. * include/grub/err.h: Likewise. * include/grub/file.h: Likewise. * include/grub/font.h: Likewise. * include/grub/fs.h: Likewise. * include/grub/fshelp.h: Likewise. * include/grub/gzio.h: Likewise. * include/grub/hfs.h: Likewise. * include/grub/kernel.h: Likewise. * include/grub/loader.h: Likewise. * include/grub/lvm.h: Likewise. * include/grub/misc.h: Likewise. * include/grub/mm.h: Likewise. * include/grub/net.h: Likewise. * include/grub/normal.h: Likewise. * include/grub/parser.h: Likewise. * include/grub/partition.h: Likewise. * include/grub/pc_partition.h: Likewise. * include/grub/raid.h: Likewise. * include/grub/rescue.h: Likewise. * include/grub/script.h: Likewise. * include/grub/setjmp.h: Likewise. * include/grub/symbol.h: Likewise. * include/grub/term.h: Likewise. * include/grub/terminfo.h: Likewise. * include/grub/tparm.h: Likewise. * include/grub/types.h: Likewise. * include/grub/video.h: Likewise. * include/grub/efi/api.h: Likewise. * include/grub/efi/chainloader.h: Likewise. * include/grub/efi/console.h: Likewise. * include/grub/efi/console_control.h: Likewise. * include/grub/efi/disk.h: Likewise. * include/grub/efi/efi.h: Likewise. * include/grub/efi/pe32.h: Likewise. * include/grub/efi/time.h: Likewise. * include/grub/i386/linux.h: Likewise. * include/grub/i386/setjmp.h: Likewise. * include/grub/i386/types.h: Likewise. * include/grub/i386/efi/kernel.h: Likewise. * include/grub/i386/efi/loader.h: Likewise. * include/grub/i386/efi/time.h: Likewise. * include/grub/i386/pc/biosdisk.h: Likewise. * include/grub/i386/pc/boot.h: Likewise. * include/grub/i386/pc/chainloader.h: Likewise. * include/grub/i386/pc/console.h: Likewise. * include/grub/i386/pc/init.h: Likewise. * include/grub/i386/pc/kernel.h: Likewise. * include/grub/i386/pc/loader.h: Likewise. * include/grub/i386/pc/memory.h: Likewise. * include/grub/i386/pc/multiboot.h: Likewise. * include/grub/i386/pc/serial.h: Likewise. * include/grub/i386/pc/time.h: Likewise. * include/grub/i386/pc/vbe.h: Likewise. * include/grub/i386/pc/vbeblit.h: Likewise. * include/grub/i386/pc/vbefill.h: Likewise. * include/grub/i386/pc/vbeutil.h: Likewise. * include/grub/i386/pc/vga.h: Likewise. * include/grub/ieee1275/ieee1275.h: Likewise. * include/grub/ieee1275/ofdisk.h: Likewise. * include/grub/powerpc/libgcc.h: Likewise. * include/grub/powerpc/setjmp.h: Likewise. * include/grub/powerpc/types.h: Likewise. * include/grub/powerpc/ieee1275/biosdisk.h: Likewise. * include/grub/powerpc/ieee1275/console.h: Likewise. * include/grub/powerpc/ieee1275/ieee1275.h: Likewise. * include/grub/powerpc/ieee1275/kernel.h: Likewise. * include/grub/powerpc/ieee1275/loader.h: Likewise. * include/grub/powerpc/ieee1275/multiboot.h: Likewise. * include/grub/powerpc/ieee1275/time.h: Likewise. * include/grub/powerpc/ieee1275/util/biosdisk.h: Likewise. * include/grub/sparc64/libgcc.h: Likewise. * include/grub/sparc64/setjmp.h: Likewise. * include/grub/sparc64/types.h: Likewise. * include/grub/sparc64/ieee1275/console.h: Likewise. * include/grub/sparc64/ieee1275/ieee1275.h: Likewise. * include/grub/sparc64/ieee1275/kernel.h: Likewise. * include/grub/sparc64/ieee1275/time.h: Likewise. * include/grub/util/biosdisk.h: Likewise. * include/grub/util/getroot.h: Likewise. * include/grub/util/lvm.h: Likewise. * include/grub/util/misc.h: Likewise. * include/grub/util/raid.h: Likewise. * include/grub/util/resolve.h: Likewise. * io/gzio.c: Likewise. * kern/device.c: Likewise. * kern/disk.c: Likewise. * kern/dl.c: Likewise. * kern/elf.c: Likewise. * kern/env.c: Likewise. * kern/err.c: Likewise. * kern/file.c: Likewise. * kern/fs.c: Likewise. * kern/loader.c: Likewise. * kern/main.c: Likewise. * kern/misc.c: Likewise. * kern/mm.c: Likewise. * kern/parser.c: Likewise. * kern/partition.c: Likewise. * kern/rescue.c: Likewise. * kern/term.c: Likewise. * kern/efi/efi.c: Likewise. * kern/efi/init.c: Likewise. * kern/efi/mm.c: Likewise. * kern/i386/dl.c: Likewise. * kern/i386/efi/init.c: Likewise. * kern/i386/efi/startup.S: Likewise. * kern/i386/pc/init.c: Likewise. * kern/i386/pc/lzo1x.S: Likewise. * kern/i386/pc/startup.S: Likewise. * kern/ieee1275/ieee1275.c: Likewise. * kern/powerpc/cache.S: Likewise. * kern/powerpc/dl.c: Likewise. * kern/powerpc/ieee1275/cmain.c: Likewise. * kern/powerpc/ieee1275/crt0.S: Likewise. * kern/powerpc/ieee1275/init.c: Likewise. * kern/powerpc/ieee1275/openfw.c: Likewise. * kern/sparc64/cache.S: Likewise. * kern/sparc64/dl.c: Likewise. * kern/sparc64/ieee1275/init.c: Likewise. * kern/sparc64/ieee1275/openfw.c: Likewise. * loader/efi/chainloader.c: Likewise. * loader/efi/chainloader_normal.c: Likewise. * loader/i386/efi/linux.c: Likewise. * loader/i386/efi/linux_normal.c: Likewise. * loader/i386/pc/chainloader.c: Likewise. * loader/i386/pc/chainloader_normal.c: Likewise. * loader/i386/pc/linux.c: Likewise. * loader/i386/pc/linux_normal.c: Likewise. * loader/i386/pc/multiboot.c: Likewise. * loader/i386/pc/multiboot_normal.c: Likewise. * loader/powerpc/ieee1275/linux.c: Likewise. * loader/powerpc/ieee1275/linux_normal.c: Likewise. * normal/arg.c: Likewise. * normal/cmdline.c: Likewise. * normal/command.c: Likewise. * normal/completion.c: Likewise. * normal/execute.c: Likewise. * normal/function.c: Likewise. * normal/lexer.c: Likewise. * normal/main.c: Likewise. * normal/menu.c: Likewise. * normal/menu_entry.c: Likewise. * normal/misc.c: Likewise. * normal/parser.y: Likewise. * normal/script.c: Likewise. * normal/i386/setjmp.S: Likewise. * normal/powerpc/setjmp.S: Likewise. * normal/sparc64/setjmp.S: Likewise. * partmap/acorn.c: Likewise. * partmap/amiga.c: Likewise. * partmap/apple.c: Likewise. * partmap/gpt.c: Likewise. * partmap/pc.c: Likewise. * partmap/sun.c: Likewise. * term/gfxterm.c: Likewise. * term/terminfo.c: Likewise. * term/efi/console.c: Likewise. * term/i386/pc/console.c: Likewise. * term/i386/pc/serial.c: Likewise. * term/i386/pc/vesafb.c: Likewise. * term/i386/pc/vga.c: Likewise. * term/ieee1275/ofconsole.c: Likewise. * util/biosdisk.c: Likewise. * util/console.c: Likewise. * util/genmoddep.c: Likewise. * util/getroot.c: Likewise. * util/grub-emu.c: Likewise. * util/grub-mkdevicemap.c: Likewise. * util/grub-probe.c: Likewise. * util/lvm.c: Likewise. * util/misc.c: Likewise. * util/raid.c: Likewise. * util/resolve.c: Likewise. * util/update-grub.in: Likewise. * util/update-grub_lib.in: Likewise. * util/grub.d/00_header.in: Likewise. * util/grub.d/10_hurd.in: Likewise. * util/grub.d/10_linux.in: Likewise. * util/i386/efi/grub-install.in: Likewise. * util/i386/efi/grub-mkimage.c: Likewise. * util/i386/pc/grub-install.in: Likewise. * util/i386/pc/grub-mkimage.c: Likewise. * util/i386/pc/grub-mkrescue.in: Likewise. * util/i386/pc/grub-setup.c: Likewise. * util/i386/pc/misc.c: Likewise. * util/powerpc/ieee1275/grub-install.in: Likewise. * util/powerpc/ieee1275/grub-mkimage.c: Likewise. * util/powerpc/ieee1275/misc.c: Likewise. * video/bitmap.c: Likewise. * video/video.c: Likewise. * video/i386/pc/vbe.c: Likewise. * video/i386/pc/vbeblit.c: Likewise. * video/i386/pc/vbefill.c: Likewise. * video/i386/pc/vbeutil.c: Likewise. * video/readers/tga.c: Likewise.
2007-07-21 23:32:33 +00:00
* along with GRUB. If not, see <http://www.gnu.org/licenses/>.
*/
2006-01-17 Marco Gerards <marco@gnu.org> * include/grub/normal.h: Include <grub/script.h>. (grub_command_list): Removed struct. (grub_command_list_t): Removed type. (grub_menu_entry): Remove members `num' and `command_list'. Add members `commands' and `sourcecode'. * include/grub/script.h: Add inclusion guards. (grub_script_cmd_menuentry): New struct. (grub_script_execute_menuentry): New prototype. (grub_script_lexer_record_start): Likewise. (grub_script_lexer_record_stop): Likewise. * normal/execute.c (grub_script_execute_menuentry): New function. * normal/lexer.c (record, recording, recordpos, recordlen): New variables. (grub_script_lexer_record_start): New function. (grub_script_lexer_record_stop): Likewise. (recordchar): Likewise. (nextchar): Likewise. (grub_script_yylex): Use `nextchar' to fetch new characters. Use 2048 as the buffer size. Add the tokens `menuentry' and `@'. * normal/main.c: Include <grub/parser.h> and <grub/script.h> (current_menu): New variable. (free_menu): Mainly rewritten. (grub_normal_menu_addentry): New function. (read_config_file): Rewritten. * normal/menu.c (run_menu_entry): Mainly rewritten. * normal/menu_entry.c (make_screen): Rewritten te code to insert the menu entry. (run): Mainly rewritten. * normal/parser.y (menu_entry): New variable. (GRUB_PARSER_TOKEN_MENUENTRY): New token. (menuentry): New rule. (command): Add `menuentry'. (if_statement): Allow additional returns before `fi'. * normal/script.c (grub_script_create_cmdmenu): New function.
2006-01-17 09:50:47 +00:00
2009-05-02 Bean <bean123ch@gmail.com> * conf/common.rmk (grub_script.tab.c): Change normal/parser.y to script/sh/parser.y. (pkglib_MODULES): Add normal.mod and sh.mod. (normal_SOURCES): New variable. (normal_mod_CFLAGS): Likewise. (normal_mod_LDFLAGS): Likewise. (sh_mod_SOURCES): Likewise. (sh_mod_CFLAGS): Likewise. (sh_mod_LDFLAGS): Likewise. * conf/i386-pc.rmk (normal/lexer.c_DEPENDENCIES): Changed to script/sh/lexer.c_DEPENDENCIES. (kernel_img_SOURCES): Remove kern/rescue.c, and kern/reader.c, kern/rescue_reader.c and kern/rescue_parser.c. (kernel_img_HEADERS): Remove rescue.h, add reader.h. (grub_emu_SOURCES): Change source files. (pkglib_MODULES): Remove normal.mod. (normal_SOURCES): Removed. (normal_mod_CFLAGS): Likewise. (normal_mod_LDFLAGS): Likewise. * conf/i386-coreboot.rmk: Likewise. * conf/i386-efi.rmk: Likewise. * conf/i386-ieee1276.rmk: Likewise. * conf/powerpc-ieee1275.rmk: Likewise. * conf/sparc64-ieee1275.rmk: Likewise. * conf/x86_64-efi.rmk: Likewise. * include/grub/command.h (grub_command_execute): New inline function. * include/grub/menu.h (grub_menu_entry): Removed commands field. * include/grub/normal.h: Remove <grub/setjmp.h>. (grub_fs_module_list): Moved to normal/autofs.c. (grub_exit_env): Removed. (grub_command_execute): Likewise. (grub_normal_menu_addentry): Renamed to grub_menu_addentry, removed parameter script. (read_command_list): New function declaration. (read_fs_list): Likewise. * include/parser.h: Include <grub/reader.h>. (grub_parser_split_cmdline): Change type of getline parameter. (grub_parser): New structure. (grub_parser_class): New variable. (grub_parser_execute): New function declaration. (grub_register_rescue_parser): Likewise. (grub_parser_register): New inline function. (grub_parser_unregister): Likewise. (grub_parser_get_current): Likewise. (grub_parser_set_current): Likewise. * include/grub/reader.h: New file. * kern/reader.c: Likewise. * kern/rescue_parser.c: Likewise. * kern/rescue_reader.c: Likewise. * normal/autofs.c: Likewise. * normal/dyncmd.c: Likewise. * include/grub/rescue.h: Removed. * normal/command.h: Likewise. * include/grub/script.h: Moved to ... * include/grub/script_sh.h: ... Moved here. * normal/execute.c: Moved to ... * script/sh/execute.c: ... Moved here. * normal/function.c: Moved to ... * script/sh/function.c: ... Moved here. * normal/lexer.c: Moved to ... * script/sh/lexer.c: ... Moved here. * normal/parser.y: Moved to ... * script/sh/parser.y: ... Moved here. * normal/script.c: Moved to ... * script/sh/script.c: ... Moved here. * normal/main.c: Remove <grub/rescue.h> and <grub/script.h>, include <grub/reader.h>. (grub_exit_env): Removed. (fs_module_list): Moved to normal/autofs.c. (grub_file_getline): Don't handle comment here. (free_menu): Skip removed field entry->commands. (grub_normal_menu_addentry): Removed as grub_menu_entry, removed script parameter. (read_config_file): Removed nested parameter, change getline function. (grub_enter_normal_mode): Removed. (grub_dyncmd_dispatcher): Moved to normal/dyncmd.c. (read_command_list): Likewise. (autoload_fs_module): Moved to normal/autofs.c. (read_fs_list): Likewise. (reader_nested): New variable. (grub_normal_execute): Run parser.sh to switch to sh parser. (grub_cmd_rescue): Removed. (cmd_normal): Removed. (grub_cmd_normal): Unregister itself at the beginning. Don't register rescue command. (grub_cmdline_run): New function. (grub_normal_reader_init): Likewise. (grub_normal_read_line): Likewise. (grub_env_write_pager): Likewise. (cmdline): New variable. (grub_normal_reader): Likewise. (GRUB_MOD_INIT): Register normal reader and set as current, register pager hook, register normal command with grub_register_command_prio, so that it won't show up in command.lst. (GRUB_MOD_FINI): Unregister normal reader, unhook pager, clear grub_fs_autoload_hook. * normal/menu.c: Remove <grub/script.h>, add <grub/command.h>. (grub_menu_execute_entry): Replace grub_script_execute with grub_parser_execute, change parameter to grub_command_execute. * normal/menu_text.c: Remove <grub/script.h>. * normal/menu_entry.c: Remove <grub/script.h>, add <grub/command.h> and <grub/parser.h>. (run): Change editor_getline to use new parser interface. Change parameter to grub_command_execute. * kern/main.c: Remove <grub/rescue.h>, include <grub/command.h>, <grub/reader.h> and <grub/parser.h>. (grub_load_normal_mode): Execute normal command. (grub_main): Call grub_register_core_commands, grub_register_rescue_parser and grub_register_rescue_reader, use grub_reader_loop to enter input loop. * kern/parser.c (grub_parser_spli_cmdline): Change type of getline parameter. (grub_parser_class): New variable. (grub_parser_execute): New function. * loader/i386/multiboot.c: Remove <grub/rescue.h>. * loader/multiboot2.c: Likewise. * loader/sparc64/ieee1275/linux.c: Likewise. * util/grub-emu.c (read_command_list): New dummy function.
2009-05-02 19:49:34 +00:00
#ifndef GRUB_NORMAL_PARSER_HEADER
#define GRUB_NORMAL_PARSER_HEADER 1
2006-01-17 Marco Gerards <marco@gnu.org> * include/grub/normal.h: Include <grub/script.h>. (grub_command_list): Removed struct. (grub_command_list_t): Removed type. (grub_menu_entry): Remove members `num' and `command_list'. Add members `commands' and `sourcecode'. * include/grub/script.h: Add inclusion guards. (grub_script_cmd_menuentry): New struct. (grub_script_execute_menuentry): New prototype. (grub_script_lexer_record_start): Likewise. (grub_script_lexer_record_stop): Likewise. * normal/execute.c (grub_script_execute_menuentry): New function. * normal/lexer.c (record, recording, recordpos, recordlen): New variables. (grub_script_lexer_record_start): New function. (grub_script_lexer_record_stop): Likewise. (recordchar): Likewise. (nextchar): Likewise. (grub_script_yylex): Use `nextchar' to fetch new characters. Use 2048 as the buffer size. Add the tokens `menuentry' and `@'. * normal/main.c: Include <grub/parser.h> and <grub/script.h> (current_menu): New variable. (free_menu): Mainly rewritten. (grub_normal_menu_addentry): New function. (read_config_file): Rewritten. * normal/menu.c (run_menu_entry): Mainly rewritten. * normal/menu_entry.c (make_screen): Rewritten te code to insert the menu entry. (run): Mainly rewritten. * normal/parser.y (menu_entry): New variable. (GRUB_PARSER_TOKEN_MENUENTRY): New token. (menuentry): New rule. (command): Add `menuentry'. (if_statement): Allow additional returns before `fi'. * normal/script.c (grub_script_create_cmdmenu): New function.
2006-01-17 09:50:47 +00:00
#include <grub/types.h>
#include <grub/err.h>
2006-17-04 Marco Gerards <marco@gnu.org> * include/grub/script.h: Include <grub/parser.h> and "grub_script.tab.h". (struct grub_lexer_param): New struct. (struct grub_parser_param): Likewise. (grub_script_create_arglist): Pass the state in an argument. (grub_script_add_arglist): Likewise. (grub_script_create_cmdline): Likewise. (grub_script_create_cmdblock): Likewise. (grub_script_create_cmdif): Likewise. (grub_script_create_cmdmenu): Likewise. (grub_script_add_cmd): Likewise. (grub_script_arg_add): Likewise. (grub_script_lexer_ref): Likewise. (grub_script_lexer_deref): Likewise. (grub_script_lexer_record_start): Likewise. (grub_script_lexer_record_stop): Likewise. (grub_script_mem_record): Likewise. (grub_script_mem_record_stop): Likewise. (grub_script_malloc): Likewise. (grub_script_yylex): Likewise. (grub_script_yyparse): Likewise. (grub_script_yyerror): Likewise. (grub_script_yylex): Likewise. (grub_script_lexer_init): Return the state. * normal/lexer.c (grub_script_lexer_state): Removed variable. (grub_script_lexer_done): Likewise. (grub_script_lexer_getline): Likewise. (grub_script_lexer_refs): Likewise. (script): Likewise. (newscript): Likewise. (record): Likewise. (recording): Likewise. (recordpos): Likewise. (recordlen): Likewise. (grub_script_lexer_init): Return the state instead of setting global variables. (grub_script_lexer_ref): Use the newly added argument for state instead of globals. (grub_script_lexer_deref): Likewise. (grub_script_lexer_record_start): Likewise. (grub_script_lexer_record_stop): Likewise. (recordchar): Likewise. (nextchar): Likewise. (grub_script_yylex2): Likewise. (grub_script_yylex): Likewise. (grub_script_yyerror): Likewise. * normal/parser.y (func_mem): Removed variable. (menu_entry): Likewise. (err): Likewise. (%lex-param): New parser option. (%parse-param): Likewise. (script): Always return the AST. (argument): Pass the state around. (arguments): Likewise. (grubcmd): Likewise. (commands): Likewise. (function): Likewise. (menuentry): Likewise. (if_statement): Likewise. (if): Likewise. * normal/script.c (grub_script_memused): Removed variable. (grub_script_parsed): Likewise. (grub_script_malloc): Added a state argument. Use that instead of global variables. (grub_script_mem_record): Likewise. (grub_script_mem_record_stop): Likewise. (grub_script_arg_add): Likewise. (grub_script_add_arglist): Likewise. (grub_script_create_cmdline): Likewise. (grub_script_create_cmdif): Likewise. (grub_script_create_cmdmenu): Likewise. (grub_script_add_cmd): Likewise. (grub_script_parse): Setup the state before calling the parser.
2006-04-17 13:01:20 +00:00
#include <grub/parser.h>
2010-05-07 04:38:09 +00:00
#include <grub/command.h>
struct grub_script_mem;
/* The generic header for each scripting command or structure. */
struct grub_script_cmd
{
/* This function is called to execute the command. */
grub_err_t (*exec) (struct grub_script_cmd *cmd);
/* The next command. This can be used by the parent to form a chain
of commands. */
struct grub_script_cmd *next;
};
struct grub_script
{
unsigned refcnt;
struct grub_script_mem *mem;
struct grub_script_cmd *cmd;
2010-07-21 23:19:05 +00:00
2010-08-09 16:12:24 +00:00
/* grub_scripts from block arguments. */
struct grub_script *next_siblings;
2010-07-21 23:19:05 +00:00
struct grub_script *children;
};
typedef enum
{
2010-01-22 13:37:27 +00:00
GRUB_SCRIPT_ARG_TYPE_VAR,
GRUB_SCRIPT_ARG_TYPE_TEXT,
GRUB_SCRIPT_ARG_TYPE_DQVAR,
GRUB_SCRIPT_ARG_TYPE_DQSTR,
2010-04-30 06:39:31 +00:00
GRUB_SCRIPT_ARG_TYPE_SQSTR,
GRUB_SCRIPT_ARG_TYPE_BLOCK
} grub_script_arg_type_t;
/* A part of an argument. */
struct grub_script_arg
{
grub_script_arg_type_t type;
char *str;
2010-04-30 06:39:31 +00:00
/* Parsed block argument. */
struct grub_script *script;
2010-04-30 06:39:31 +00:00
/* Next argument part. */
struct grub_script_arg *next;
};
/* An argument vector. */
struct grub_script_argv
{
unsigned argc;
char **args;
struct grub_script *script;
};
2010-07-29 17:22:09 +00:00
/* Pluggable wildcard translator. */
struct grub_script_wildcard_translator
{
char *(*escape) (const char *str);
char *(*unescape) (const char *str);
grub_err_t (*expand) (const char *str, char ***expansions);
};
2010-09-03 15:05:23 +00:00
extern struct grub_script_wildcard_translator *grub_wildcard_translator;
2010-09-04 06:19:02 +00:00
extern struct grub_script_wildcard_translator grub_filename_translator;
2010-07-29 17:22:09 +00:00
/* A complete argument. It consists of a list of one or more `struct
grub_script_arg's. */
struct grub_script_arglist
{
struct grub_script_arglist *next;
struct grub_script_arg *arg;
/* Only stored in the first link. */
int argcount;
};
/* A single command line. */
struct grub_script_cmdline
{
struct grub_script_cmd cmd;
/* The arguments for this command. */
struct grub_script_arglist *arglist;
};
/* An if statement. */
struct grub_script_cmdif
{
struct grub_script_cmd cmd;
/* The command used to check if the 'if' is true or false. */
struct grub_script_cmd *exec_to_evaluate;
/* The code executed in case the result of 'if' was true. */
struct grub_script_cmd *exec_on_true;
/* The code executed in case the result of 'if' was false. */
struct grub_script_cmd *exec_on_false;
};
2010-01-23 05:33:41 +00:00
/* A for statement. */
struct grub_script_cmdfor
{
struct grub_script_cmd cmd;
/* The name used as looping variable. */
struct grub_script_arg *name;
/* The words loop iterates over. */
struct grub_script_arglist *words;
/* The command list executed in each loop. */
struct grub_script_cmd *list;
};
2010-01-23 05:49:26 +00:00
/* A while/until command. */
struct grub_script_cmdwhile
{
struct grub_script_cmd cmd;
/* The command list used as condition. */
struct grub_script_cmd *cond;
/* The command list executed in each loop. */
struct grub_script_cmd *list;
/* The flag to indicate this as "until" loop. */
int until;
};
2006-17-04 Marco Gerards <marco@gnu.org> * include/grub/script.h: Include <grub/parser.h> and "grub_script.tab.h". (struct grub_lexer_param): New struct. (struct grub_parser_param): Likewise. (grub_script_create_arglist): Pass the state in an argument. (grub_script_add_arglist): Likewise. (grub_script_create_cmdline): Likewise. (grub_script_create_cmdblock): Likewise. (grub_script_create_cmdif): Likewise. (grub_script_create_cmdmenu): Likewise. (grub_script_add_cmd): Likewise. (grub_script_arg_add): Likewise. (grub_script_lexer_ref): Likewise. (grub_script_lexer_deref): Likewise. (grub_script_lexer_record_start): Likewise. (grub_script_lexer_record_stop): Likewise. (grub_script_mem_record): Likewise. (grub_script_mem_record_stop): Likewise. (grub_script_malloc): Likewise. (grub_script_yylex): Likewise. (grub_script_yyparse): Likewise. (grub_script_yyerror): Likewise. (grub_script_yylex): Likewise. (grub_script_lexer_init): Return the state. * normal/lexer.c (grub_script_lexer_state): Removed variable. (grub_script_lexer_done): Likewise. (grub_script_lexer_getline): Likewise. (grub_script_lexer_refs): Likewise. (script): Likewise. (newscript): Likewise. (record): Likewise. (recording): Likewise. (recordpos): Likewise. (recordlen): Likewise. (grub_script_lexer_init): Return the state instead of setting global variables. (grub_script_lexer_ref): Use the newly added argument for state instead of globals. (grub_script_lexer_deref): Likewise. (grub_script_lexer_record_start): Likewise. (grub_script_lexer_record_stop): Likewise. (recordchar): Likewise. (nextchar): Likewise. (grub_script_yylex2): Likewise. (grub_script_yylex): Likewise. (grub_script_yyerror): Likewise. * normal/parser.y (func_mem): Removed variable. (menu_entry): Likewise. (err): Likewise. (%lex-param): New parser option. (%parse-param): Likewise. (script): Always return the AST. (argument): Pass the state around. (arguments): Likewise. (grubcmd): Likewise. (commands): Likewise. (function): Likewise. (menuentry): Likewise. (if_statement): Likewise. (if): Likewise. * normal/script.c (grub_script_memused): Removed variable. (grub_script_parsed): Likewise. (grub_script_malloc): Added a state argument. Use that instead of global variables. (grub_script_mem_record): Likewise. (grub_script_mem_record_stop): Likewise. (grub_script_arg_add): Likewise. (grub_script_add_arglist): Likewise. (grub_script_create_cmdline): Likewise. (grub_script_create_cmdif): Likewise. (grub_script_create_cmdmenu): Likewise. (grub_script_add_cmd): Likewise. (grub_script_parse): Setup the state before calling the parser.
2006-04-17 13:01:20 +00:00
/* State of the lexer as passed to the lexer. */
struct grub_lexer_param
{
/* Function used by the lexer to get a new line when more input is
expected, but not available. */
2009-05-02 Bean <bean123ch@gmail.com> * conf/common.rmk (grub_script.tab.c): Change normal/parser.y to script/sh/parser.y. (pkglib_MODULES): Add normal.mod and sh.mod. (normal_SOURCES): New variable. (normal_mod_CFLAGS): Likewise. (normal_mod_LDFLAGS): Likewise. (sh_mod_SOURCES): Likewise. (sh_mod_CFLAGS): Likewise. (sh_mod_LDFLAGS): Likewise. * conf/i386-pc.rmk (normal/lexer.c_DEPENDENCIES): Changed to script/sh/lexer.c_DEPENDENCIES. (kernel_img_SOURCES): Remove kern/rescue.c, and kern/reader.c, kern/rescue_reader.c and kern/rescue_parser.c. (kernel_img_HEADERS): Remove rescue.h, add reader.h. (grub_emu_SOURCES): Change source files. (pkglib_MODULES): Remove normal.mod. (normal_SOURCES): Removed. (normal_mod_CFLAGS): Likewise. (normal_mod_LDFLAGS): Likewise. * conf/i386-coreboot.rmk: Likewise. * conf/i386-efi.rmk: Likewise. * conf/i386-ieee1276.rmk: Likewise. * conf/powerpc-ieee1275.rmk: Likewise. * conf/sparc64-ieee1275.rmk: Likewise. * conf/x86_64-efi.rmk: Likewise. * include/grub/command.h (grub_command_execute): New inline function. * include/grub/menu.h (grub_menu_entry): Removed commands field. * include/grub/normal.h: Remove <grub/setjmp.h>. (grub_fs_module_list): Moved to normal/autofs.c. (grub_exit_env): Removed. (grub_command_execute): Likewise. (grub_normal_menu_addentry): Renamed to grub_menu_addentry, removed parameter script. (read_command_list): New function declaration. (read_fs_list): Likewise. * include/parser.h: Include <grub/reader.h>. (grub_parser_split_cmdline): Change type of getline parameter. (grub_parser): New structure. (grub_parser_class): New variable. (grub_parser_execute): New function declaration. (grub_register_rescue_parser): Likewise. (grub_parser_register): New inline function. (grub_parser_unregister): Likewise. (grub_parser_get_current): Likewise. (grub_parser_set_current): Likewise. * include/grub/reader.h: New file. * kern/reader.c: Likewise. * kern/rescue_parser.c: Likewise. * kern/rescue_reader.c: Likewise. * normal/autofs.c: Likewise. * normal/dyncmd.c: Likewise. * include/grub/rescue.h: Removed. * normal/command.h: Likewise. * include/grub/script.h: Moved to ... * include/grub/script_sh.h: ... Moved here. * normal/execute.c: Moved to ... * script/sh/execute.c: ... Moved here. * normal/function.c: Moved to ... * script/sh/function.c: ... Moved here. * normal/lexer.c: Moved to ... * script/sh/lexer.c: ... Moved here. * normal/parser.y: Moved to ... * script/sh/parser.y: ... Moved here. * normal/script.c: Moved to ... * script/sh/script.c: ... Moved here. * normal/main.c: Remove <grub/rescue.h> and <grub/script.h>, include <grub/reader.h>. (grub_exit_env): Removed. (fs_module_list): Moved to normal/autofs.c. (grub_file_getline): Don't handle comment here. (free_menu): Skip removed field entry->commands. (grub_normal_menu_addentry): Removed as grub_menu_entry, removed script parameter. (read_config_file): Removed nested parameter, change getline function. (grub_enter_normal_mode): Removed. (grub_dyncmd_dispatcher): Moved to normal/dyncmd.c. (read_command_list): Likewise. (autoload_fs_module): Moved to normal/autofs.c. (read_fs_list): Likewise. (reader_nested): New variable. (grub_normal_execute): Run parser.sh to switch to sh parser. (grub_cmd_rescue): Removed. (cmd_normal): Removed. (grub_cmd_normal): Unregister itself at the beginning. Don't register rescue command. (grub_cmdline_run): New function. (grub_normal_reader_init): Likewise. (grub_normal_read_line): Likewise. (grub_env_write_pager): Likewise. (cmdline): New variable. (grub_normal_reader): Likewise. (GRUB_MOD_INIT): Register normal reader and set as current, register pager hook, register normal command with grub_register_command_prio, so that it won't show up in command.lst. (GRUB_MOD_FINI): Unregister normal reader, unhook pager, clear grub_fs_autoload_hook. * normal/menu.c: Remove <grub/script.h>, add <grub/command.h>. (grub_menu_execute_entry): Replace grub_script_execute with grub_parser_execute, change parameter to grub_command_execute. * normal/menu_text.c: Remove <grub/script.h>. * normal/menu_entry.c: Remove <grub/script.h>, add <grub/command.h> and <grub/parser.h>. (run): Change editor_getline to use new parser interface. Change parameter to grub_command_execute. * kern/main.c: Remove <grub/rescue.h>, include <grub/command.h>, <grub/reader.h> and <grub/parser.h>. (grub_load_normal_mode): Execute normal command. (grub_main): Call grub_register_core_commands, grub_register_rescue_parser and grub_register_rescue_reader, use grub_reader_loop to enter input loop. * kern/parser.c (grub_parser_spli_cmdline): Change type of getline parameter. (grub_parser_class): New variable. (grub_parser_execute): New function. * loader/i386/multiboot.c: Remove <grub/rescue.h>. * loader/multiboot2.c: Likewise. * loader/sparc64/ieee1275/linux.c: Likewise. * util/grub-emu.c (read_command_list): New dummy function.
2009-05-02 19:49:34 +00:00
grub_reader_getline_t getline;
2006-17-04 Marco Gerards <marco@gnu.org> * include/grub/script.h: Include <grub/parser.h> and "grub_script.tab.h". (struct grub_lexer_param): New struct. (struct grub_parser_param): Likewise. (grub_script_create_arglist): Pass the state in an argument. (grub_script_add_arglist): Likewise. (grub_script_create_cmdline): Likewise. (grub_script_create_cmdblock): Likewise. (grub_script_create_cmdif): Likewise. (grub_script_create_cmdmenu): Likewise. (grub_script_add_cmd): Likewise. (grub_script_arg_add): Likewise. (grub_script_lexer_ref): Likewise. (grub_script_lexer_deref): Likewise. (grub_script_lexer_record_start): Likewise. (grub_script_lexer_record_stop): Likewise. (grub_script_mem_record): Likewise. (grub_script_mem_record_stop): Likewise. (grub_script_malloc): Likewise. (grub_script_yylex): Likewise. (grub_script_yyparse): Likewise. (grub_script_yyerror): Likewise. (grub_script_yylex): Likewise. (grub_script_lexer_init): Return the state. * normal/lexer.c (grub_script_lexer_state): Removed variable. (grub_script_lexer_done): Likewise. (grub_script_lexer_getline): Likewise. (grub_script_lexer_refs): Likewise. (script): Likewise. (newscript): Likewise. (record): Likewise. (recording): Likewise. (recordpos): Likewise. (recordlen): Likewise. (grub_script_lexer_init): Return the state instead of setting global variables. (grub_script_lexer_ref): Use the newly added argument for state instead of globals. (grub_script_lexer_deref): Likewise. (grub_script_lexer_record_start): Likewise. (grub_script_lexer_record_stop): Likewise. (recordchar): Likewise. (nextchar): Likewise. (grub_script_yylex2): Likewise. (grub_script_yylex): Likewise. (grub_script_yyerror): Likewise. * normal/parser.y (func_mem): Removed variable. (menu_entry): Likewise. (err): Likewise. (%lex-param): New parser option. (%parse-param): Likewise. (script): Always return the AST. (argument): Pass the state around. (arguments): Likewise. (grubcmd): Likewise. (commands): Likewise. (function): Likewise. (menuentry): Likewise. (if_statement): Likewise. (if): Likewise. * normal/script.c (grub_script_memused): Removed variable. (grub_script_parsed): Likewise. (grub_script_malloc): Added a state argument. Use that instead of global variables. (grub_script_mem_record): Likewise. (grub_script_mem_record_stop): Likewise. (grub_script_arg_add): Likewise. (grub_script_add_arglist): Likewise. (grub_script_create_cmdline): Likewise. (grub_script_create_cmdif): Likewise. (grub_script_create_cmdmenu): Likewise. (grub_script_add_cmd): Likewise. (grub_script_parse): Setup the state before calling the parser.
2006-04-17 13:01:20 +00:00
/* A reference counter. If this is >0 it means that the parser
expects more tokens and `getline' should be called to fetch more.
Otherwise the lexer can stop processing if the current buffer is
depleted. */
int refs;
/* While walking through the databuffer, `record' the characters to
this other buffer. It can be used to edit the menu entry at a
later moment. */
/* If true, recording is enabled. */
int record;
/* Points to the recording. */
char *recording;
2009-05-02 Bean <bean123ch@gmail.com> * conf/common.rmk (grub_script.tab.c): Change normal/parser.y to script/sh/parser.y. (pkglib_MODULES): Add normal.mod and sh.mod. (normal_SOURCES): New variable. (normal_mod_CFLAGS): Likewise. (normal_mod_LDFLAGS): Likewise. (sh_mod_SOURCES): Likewise. (sh_mod_CFLAGS): Likewise. (sh_mod_LDFLAGS): Likewise. * conf/i386-pc.rmk (normal/lexer.c_DEPENDENCIES): Changed to script/sh/lexer.c_DEPENDENCIES. (kernel_img_SOURCES): Remove kern/rescue.c, and kern/reader.c, kern/rescue_reader.c and kern/rescue_parser.c. (kernel_img_HEADERS): Remove rescue.h, add reader.h. (grub_emu_SOURCES): Change source files. (pkglib_MODULES): Remove normal.mod. (normal_SOURCES): Removed. (normal_mod_CFLAGS): Likewise. (normal_mod_LDFLAGS): Likewise. * conf/i386-coreboot.rmk: Likewise. * conf/i386-efi.rmk: Likewise. * conf/i386-ieee1276.rmk: Likewise. * conf/powerpc-ieee1275.rmk: Likewise. * conf/sparc64-ieee1275.rmk: Likewise. * conf/x86_64-efi.rmk: Likewise. * include/grub/command.h (grub_command_execute): New inline function. * include/grub/menu.h (grub_menu_entry): Removed commands field. * include/grub/normal.h: Remove <grub/setjmp.h>. (grub_fs_module_list): Moved to normal/autofs.c. (grub_exit_env): Removed. (grub_command_execute): Likewise. (grub_normal_menu_addentry): Renamed to grub_menu_addentry, removed parameter script. (read_command_list): New function declaration. (read_fs_list): Likewise. * include/parser.h: Include <grub/reader.h>. (grub_parser_split_cmdline): Change type of getline parameter. (grub_parser): New structure. (grub_parser_class): New variable. (grub_parser_execute): New function declaration. (grub_register_rescue_parser): Likewise. (grub_parser_register): New inline function. (grub_parser_unregister): Likewise. (grub_parser_get_current): Likewise. (grub_parser_set_current): Likewise. * include/grub/reader.h: New file. * kern/reader.c: Likewise. * kern/rescue_parser.c: Likewise. * kern/rescue_reader.c: Likewise. * normal/autofs.c: Likewise. * normal/dyncmd.c: Likewise. * include/grub/rescue.h: Removed. * normal/command.h: Likewise. * include/grub/script.h: Moved to ... * include/grub/script_sh.h: ... Moved here. * normal/execute.c: Moved to ... * script/sh/execute.c: ... Moved here. * normal/function.c: Moved to ... * script/sh/function.c: ... Moved here. * normal/lexer.c: Moved to ... * script/sh/lexer.c: ... Moved here. * normal/parser.y: Moved to ... * script/sh/parser.y: ... Moved here. * normal/script.c: Moved to ... * script/sh/script.c: ... Moved here. * normal/main.c: Remove <grub/rescue.h> and <grub/script.h>, include <grub/reader.h>. (grub_exit_env): Removed. (fs_module_list): Moved to normal/autofs.c. (grub_file_getline): Don't handle comment here. (free_menu): Skip removed field entry->commands. (grub_normal_menu_addentry): Removed as grub_menu_entry, removed script parameter. (read_config_file): Removed nested parameter, change getline function. (grub_enter_normal_mode): Removed. (grub_dyncmd_dispatcher): Moved to normal/dyncmd.c. (read_command_list): Likewise. (autoload_fs_module): Moved to normal/autofs.c. (read_fs_list): Likewise. (reader_nested): New variable. (grub_normal_execute): Run parser.sh to switch to sh parser. (grub_cmd_rescue): Removed. (cmd_normal): Removed. (grub_cmd_normal): Unregister itself at the beginning. Don't register rescue command. (grub_cmdline_run): New function. (grub_normal_reader_init): Likewise. (grub_normal_read_line): Likewise. (grub_env_write_pager): Likewise. (cmdline): New variable. (grub_normal_reader): Likewise. (GRUB_MOD_INIT): Register normal reader and set as current, register pager hook, register normal command with grub_register_command_prio, so that it won't show up in command.lst. (GRUB_MOD_FINI): Unregister normal reader, unhook pager, clear grub_fs_autoload_hook. * normal/menu.c: Remove <grub/script.h>, add <grub/command.h>. (grub_menu_execute_entry): Replace grub_script_execute with grub_parser_execute, change parameter to grub_command_execute. * normal/menu_text.c: Remove <grub/script.h>. * normal/menu_entry.c: Remove <grub/script.h>, add <grub/command.h> and <grub/parser.h>. (run): Change editor_getline to use new parser interface. Change parameter to grub_command_execute. * kern/main.c: Remove <grub/rescue.h>, include <grub/command.h>, <grub/reader.h> and <grub/parser.h>. (grub_load_normal_mode): Execute normal command. (grub_main): Call grub_register_core_commands, grub_register_rescue_parser and grub_register_rescue_reader, use grub_reader_loop to enter input loop. * kern/parser.c (grub_parser_spli_cmdline): Change type of getline parameter. (grub_parser_class): New variable. (grub_parser_execute): New function. * loader/i386/multiboot.c: Remove <grub/rescue.h>. * loader/multiboot2.c: Likewise. * loader/sparc64/ieee1275/linux.c: Likewise. * util/grub-emu.c (read_command_list): New dummy function.
2009-05-02 19:49:34 +00:00
/* index in the RECORDING. */
2006-17-04 Marco Gerards <marco@gnu.org> * include/grub/script.h: Include <grub/parser.h> and "grub_script.tab.h". (struct grub_lexer_param): New struct. (struct grub_parser_param): Likewise. (grub_script_create_arglist): Pass the state in an argument. (grub_script_add_arglist): Likewise. (grub_script_create_cmdline): Likewise. (grub_script_create_cmdblock): Likewise. (grub_script_create_cmdif): Likewise. (grub_script_create_cmdmenu): Likewise. (grub_script_add_cmd): Likewise. (grub_script_arg_add): Likewise. (grub_script_lexer_ref): Likewise. (grub_script_lexer_deref): Likewise. (grub_script_lexer_record_start): Likewise. (grub_script_lexer_record_stop): Likewise. (grub_script_mem_record): Likewise. (grub_script_mem_record_stop): Likewise. (grub_script_malloc): Likewise. (grub_script_yylex): Likewise. (grub_script_yyparse): Likewise. (grub_script_yyerror): Likewise. (grub_script_yylex): Likewise. (grub_script_lexer_init): Return the state. * normal/lexer.c (grub_script_lexer_state): Removed variable. (grub_script_lexer_done): Likewise. (grub_script_lexer_getline): Likewise. (grub_script_lexer_refs): Likewise. (script): Likewise. (newscript): Likewise. (record): Likewise. (recording): Likewise. (recordpos): Likewise. (recordlen): Likewise. (grub_script_lexer_init): Return the state instead of setting global variables. (grub_script_lexer_ref): Use the newly added argument for state instead of globals. (grub_script_lexer_deref): Likewise. (grub_script_lexer_record_start): Likewise. (grub_script_lexer_record_stop): Likewise. (recordchar): Likewise. (nextchar): Likewise. (grub_script_yylex2): Likewise. (grub_script_yylex): Likewise. (grub_script_yyerror): Likewise. * normal/parser.y (func_mem): Removed variable. (menu_entry): Likewise. (err): Likewise. (%lex-param): New parser option. (%parse-param): Likewise. (script): Always return the AST. (argument): Pass the state around. (arguments): Likewise. (grubcmd): Likewise. (commands): Likewise. (function): Likewise. (menuentry): Likewise. (if_statement): Likewise. (if): Likewise. * normal/script.c (grub_script_memused): Removed variable. (grub_script_parsed): Likewise. (grub_script_malloc): Added a state argument. Use that instead of global variables. (grub_script_mem_record): Likewise. (grub_script_mem_record_stop): Likewise. (grub_script_arg_add): Likewise. (grub_script_add_arglist): Likewise. (grub_script_create_cmdline): Likewise. (grub_script_create_cmdif): Likewise. (grub_script_create_cmdmenu): Likewise. (grub_script_add_cmd): Likewise. (grub_script_parse): Setup the state before calling the parser.
2006-04-17 13:01:20 +00:00
int recordpos;
/* Size of RECORDING. */
int recordlen;
2009-06-04 Vladimir Serbinenko <phcoder@gmail.com> Script fixes * include/grub/script_sh.h (grub_script_cmdline): remove cmdline (grub_lexer_param): add tokenonhold (grub_script_create_cmdline): remove cmdline. All callers updated (grub_script_function_create): make functionname grub_script_arg. All callers updated (grub_script_execute_argument_to_string): new prototype * kern/parser.c (state_transitions): reorder (grub_parser_cmdline_state): fix a bug and make more compact * script/sh/execute.c (grub_script_execute_argument_to_string): make global (grub_script_execute_cmdline): use new format * script/sh/function.c (grub_script_function_create): make functionname grub_script_arg. All callers updated * script/sh/lexer.c (grub_script_lexer_init): initilaize tokenonhold (grub_script_yylex): remove (grub_script_yylex2): renamed to ... (grub_script_yylex): ...renamed parse the expressions like a${b}c * script/sh/parser.y (GRUB_PARSER_TOKEN_ARG): new typed terminal (GRUB_PARSER_TOKEN_VAR): remove (GRUB_PARSER_TOKEN_NAME): likewise ("if"): declare as typeless ("while"): likewise ("function"): likewise ("else"): likewise ("then"): likewise ("fi"): likewise (text): remove (argument): likewise (script): accept empty scripts and make exit on error (arguments): use GRUB_PARSER_TOKEN_ARG (function): likewise (command): move error handling to script (menuentry): move grub_script_lexer_ref before * script/sh/script.c (grub_script_create_cmdline): remove cmdline argument. All callers updated
2009-06-04 16:18:35 +00:00
2010-01-22 13:37:27 +00:00
/* End of file reached. */
int eof;
/* Merge multiple word tokens. */
int merge_start;
int merge_end;
2010-01-22 18:44:00 +00:00
/* Part of a multi-part token. */
2010-01-22 13:37:27 +00:00
char *text;
2010-01-22 18:44:00 +00:00
unsigned used;
unsigned size;
2010-01-22 13:37:27 +00:00
/* Type of text. */
grub_script_arg_type_t type;
2010-06-12 05:36:02 +00:00
/* Flag to indicate resplit in progres. */
unsigned resplit;
/* Text that is unput. */
char *prefix;
2010-01-22 13:37:27 +00:00
/* Flex scanner. */
void *yyscanner;
/* Flex scanner buffer. */
void *buffer;
2006-17-04 Marco Gerards <marco@gnu.org> * include/grub/script.h: Include <grub/parser.h> and "grub_script.tab.h". (struct grub_lexer_param): New struct. (struct grub_parser_param): Likewise. (grub_script_create_arglist): Pass the state in an argument. (grub_script_add_arglist): Likewise. (grub_script_create_cmdline): Likewise. (grub_script_create_cmdblock): Likewise. (grub_script_create_cmdif): Likewise. (grub_script_create_cmdmenu): Likewise. (grub_script_add_cmd): Likewise. (grub_script_arg_add): Likewise. (grub_script_lexer_ref): Likewise. (grub_script_lexer_deref): Likewise. (grub_script_lexer_record_start): Likewise. (grub_script_lexer_record_stop): Likewise. (grub_script_mem_record): Likewise. (grub_script_mem_record_stop): Likewise. (grub_script_malloc): Likewise. (grub_script_yylex): Likewise. (grub_script_yyparse): Likewise. (grub_script_yyerror): Likewise. (grub_script_yylex): Likewise. (grub_script_lexer_init): Return the state. * normal/lexer.c (grub_script_lexer_state): Removed variable. (grub_script_lexer_done): Likewise. (grub_script_lexer_getline): Likewise. (grub_script_lexer_refs): Likewise. (script): Likewise. (newscript): Likewise. (record): Likewise. (recording): Likewise. (recordpos): Likewise. (recordlen): Likewise. (grub_script_lexer_init): Return the state instead of setting global variables. (grub_script_lexer_ref): Use the newly added argument for state instead of globals. (grub_script_lexer_deref): Likewise. (grub_script_lexer_record_start): Likewise. (grub_script_lexer_record_stop): Likewise. (recordchar): Likewise. (nextchar): Likewise. (grub_script_yylex2): Likewise. (grub_script_yylex): Likewise. (grub_script_yyerror): Likewise. * normal/parser.y (func_mem): Removed variable. (menu_entry): Likewise. (err): Likewise. (%lex-param): New parser option. (%parse-param): Likewise. (script): Always return the AST. (argument): Pass the state around. (arguments): Likewise. (grubcmd): Likewise. (commands): Likewise. (function): Likewise. (menuentry): Likewise. (if_statement): Likewise. (if): Likewise. * normal/script.c (grub_script_memused): Removed variable. (grub_script_parsed): Likewise. (grub_script_malloc): Added a state argument. Use that instead of global variables. (grub_script_mem_record): Likewise. (grub_script_mem_record_stop): Likewise. (grub_script_arg_add): Likewise. (grub_script_add_arglist): Likewise. (grub_script_create_cmdline): Likewise. (grub_script_create_cmdif): Likewise. (grub_script_create_cmdmenu): Likewise. (grub_script_add_cmd): Likewise. (grub_script_parse): Setup the state before calling the parser.
2006-04-17 13:01:20 +00:00
};
#define GRUB_LEXER_INITIAL_TEXT_SIZE 32
#define GRUB_LEXER_INITIAL_RECORD_SIZE 256
2010-01-22 13:37:27 +00:00
2006-17-04 Marco Gerards <marco@gnu.org> * include/grub/script.h: Include <grub/parser.h> and "grub_script.tab.h". (struct grub_lexer_param): New struct. (struct grub_parser_param): Likewise. (grub_script_create_arglist): Pass the state in an argument. (grub_script_add_arglist): Likewise. (grub_script_create_cmdline): Likewise. (grub_script_create_cmdblock): Likewise. (grub_script_create_cmdif): Likewise. (grub_script_create_cmdmenu): Likewise. (grub_script_add_cmd): Likewise. (grub_script_arg_add): Likewise. (grub_script_lexer_ref): Likewise. (grub_script_lexer_deref): Likewise. (grub_script_lexer_record_start): Likewise. (grub_script_lexer_record_stop): Likewise. (grub_script_mem_record): Likewise. (grub_script_mem_record_stop): Likewise. (grub_script_malloc): Likewise. (grub_script_yylex): Likewise. (grub_script_yyparse): Likewise. (grub_script_yyerror): Likewise. (grub_script_yylex): Likewise. (grub_script_lexer_init): Return the state. * normal/lexer.c (grub_script_lexer_state): Removed variable. (grub_script_lexer_done): Likewise. (grub_script_lexer_getline): Likewise. (grub_script_lexer_refs): Likewise. (script): Likewise. (newscript): Likewise. (record): Likewise. (recording): Likewise. (recordpos): Likewise. (recordlen): Likewise. (grub_script_lexer_init): Return the state instead of setting global variables. (grub_script_lexer_ref): Use the newly added argument for state instead of globals. (grub_script_lexer_deref): Likewise. (grub_script_lexer_record_start): Likewise. (grub_script_lexer_record_stop): Likewise. (recordchar): Likewise. (nextchar): Likewise. (grub_script_yylex2): Likewise. (grub_script_yylex): Likewise. (grub_script_yyerror): Likewise. * normal/parser.y (func_mem): Removed variable. (menu_entry): Likewise. (err): Likewise. (%lex-param): New parser option. (%parse-param): Likewise. (script): Always return the AST. (argument): Pass the state around. (arguments): Likewise. (grubcmd): Likewise. (commands): Likewise. (function): Likewise. (menuentry): Likewise. (if_statement): Likewise. (if): Likewise. * normal/script.c (grub_script_memused): Removed variable. (grub_script_parsed): Likewise. (grub_script_malloc): Added a state argument. Use that instead of global variables. (grub_script_mem_record): Likewise. (grub_script_mem_record_stop): Likewise. (grub_script_arg_add): Likewise. (grub_script_add_arglist): Likewise. (grub_script_create_cmdline): Likewise. (grub_script_create_cmdif): Likewise. (grub_script_create_cmdmenu): Likewise. (grub_script_add_cmd): Likewise. (grub_script_parse): Setup the state before calling the parser.
2006-04-17 13:01:20 +00:00
/* State of the parser as passes to the parser. */
struct grub_parser_param
{
/* Keep track of the memory allocated for this specific
function. */
struct grub_script_mem *func_mem;
/* When set to 0, no errors have occurred during parsing. */
2006-17-04 Marco Gerards <marco@gnu.org> * include/grub/script.h: Include <grub/parser.h> and "grub_script.tab.h". (struct grub_lexer_param): New struct. (struct grub_parser_param): Likewise. (grub_script_create_arglist): Pass the state in an argument. (grub_script_add_arglist): Likewise. (grub_script_create_cmdline): Likewise. (grub_script_create_cmdblock): Likewise. (grub_script_create_cmdif): Likewise. (grub_script_create_cmdmenu): Likewise. (grub_script_add_cmd): Likewise. (grub_script_arg_add): Likewise. (grub_script_lexer_ref): Likewise. (grub_script_lexer_deref): Likewise. (grub_script_lexer_record_start): Likewise. (grub_script_lexer_record_stop): Likewise. (grub_script_mem_record): Likewise. (grub_script_mem_record_stop): Likewise. (grub_script_malloc): Likewise. (grub_script_yylex): Likewise. (grub_script_yyparse): Likewise. (grub_script_yyerror): Likewise. (grub_script_yylex): Likewise. (grub_script_lexer_init): Return the state. * normal/lexer.c (grub_script_lexer_state): Removed variable. (grub_script_lexer_done): Likewise. (grub_script_lexer_getline): Likewise. (grub_script_lexer_refs): Likewise. (script): Likewise. (newscript): Likewise. (record): Likewise. (recording): Likewise. (recordpos): Likewise. (recordlen): Likewise. (grub_script_lexer_init): Return the state instead of setting global variables. (grub_script_lexer_ref): Use the newly added argument for state instead of globals. (grub_script_lexer_deref): Likewise. (grub_script_lexer_record_start): Likewise. (grub_script_lexer_record_stop): Likewise. (recordchar): Likewise. (nextchar): Likewise. (grub_script_yylex2): Likewise. (grub_script_yylex): Likewise. (grub_script_yyerror): Likewise. * normal/parser.y (func_mem): Removed variable. (menu_entry): Likewise. (err): Likewise. (%lex-param): New parser option. (%parse-param): Likewise. (script): Always return the AST. (argument): Pass the state around. (arguments): Likewise. (grubcmd): Likewise. (commands): Likewise. (function): Likewise. (menuentry): Likewise. (if_statement): Likewise. (if): Likewise. * normal/script.c (grub_script_memused): Removed variable. (grub_script_parsed): Likewise. (grub_script_malloc): Added a state argument. Use that instead of global variables. (grub_script_mem_record): Likewise. (grub_script_mem_record_stop): Likewise. (grub_script_arg_add): Likewise. (grub_script_add_arglist): Likewise. (grub_script_create_cmdline): Likewise. (grub_script_create_cmdif): Likewise. (grub_script_create_cmdmenu): Likewise. (grub_script_add_cmd): Likewise. (grub_script_parse): Setup the state before calling the parser.
2006-04-17 13:01:20 +00:00
int err;
/* The memory that was used while parsing and scanning. */
struct grub_script_mem *memused;
2010-07-21 23:19:05 +00:00
/* The block argument scripts. */
struct grub_script *scripts;
2006-17-04 Marco Gerards <marco@gnu.org> * include/grub/script.h: Include <grub/parser.h> and "grub_script.tab.h". (struct grub_lexer_param): New struct. (struct grub_parser_param): Likewise. (grub_script_create_arglist): Pass the state in an argument. (grub_script_add_arglist): Likewise. (grub_script_create_cmdline): Likewise. (grub_script_create_cmdblock): Likewise. (grub_script_create_cmdif): Likewise. (grub_script_create_cmdmenu): Likewise. (grub_script_add_cmd): Likewise. (grub_script_arg_add): Likewise. (grub_script_lexer_ref): Likewise. (grub_script_lexer_deref): Likewise. (grub_script_lexer_record_start): Likewise. (grub_script_lexer_record_stop): Likewise. (grub_script_mem_record): Likewise. (grub_script_mem_record_stop): Likewise. (grub_script_malloc): Likewise. (grub_script_yylex): Likewise. (grub_script_yyparse): Likewise. (grub_script_yyerror): Likewise. (grub_script_yylex): Likewise. (grub_script_lexer_init): Return the state. * normal/lexer.c (grub_script_lexer_state): Removed variable. (grub_script_lexer_done): Likewise. (grub_script_lexer_getline): Likewise. (grub_script_lexer_refs): Likewise. (script): Likewise. (newscript): Likewise. (record): Likewise. (recording): Likewise. (recordpos): Likewise. (recordlen): Likewise. (grub_script_lexer_init): Return the state instead of setting global variables. (grub_script_lexer_ref): Use the newly added argument for state instead of globals. (grub_script_lexer_deref): Likewise. (grub_script_lexer_record_start): Likewise. (grub_script_lexer_record_stop): Likewise. (recordchar): Likewise. (nextchar): Likewise. (grub_script_yylex2): Likewise. (grub_script_yylex): Likewise. (grub_script_yyerror): Likewise. * normal/parser.y (func_mem): Removed variable. (menu_entry): Likewise. (err): Likewise. (%lex-param): New parser option. (%parse-param): Likewise. (script): Always return the AST. (argument): Pass the state around. (arguments): Likewise. (grubcmd): Likewise. (commands): Likewise. (function): Likewise. (menuentry): Likewise. (if_statement): Likewise. (if): Likewise. * normal/script.c (grub_script_memused): Removed variable. (grub_script_parsed): Likewise. (grub_script_malloc): Added a state argument. Use that instead of global variables. (grub_script_mem_record): Likewise. (grub_script_mem_record_stop): Likewise. (grub_script_arg_add): Likewise. (grub_script_add_arglist): Likewise. (grub_script_create_cmdline): Likewise. (grub_script_create_cmdif): Likewise. (grub_script_create_cmdmenu): Likewise. (grub_script_add_cmd): Likewise. (grub_script_parse): Setup the state before calling the parser.
2006-04-17 13:01:20 +00:00
/* The result of the parser. */
struct grub_script_cmd *parsed;
struct grub_lexer_param *lexerstate;
};
2010-06-12 15:06:46 +00:00
void grub_script_init (void);
void grub_script_fini (void);
void grub_script_mem_free (struct grub_script_mem *mem);
void grub_script_argv_free (struct grub_script_argv *argv);
int grub_script_argv_make (struct grub_script_argv *argv, int argc, char **args);
int grub_script_argv_next (struct grub_script_argv *argv);
int grub_script_argv_append (struct grub_script_argv *argv, const char *s);
int grub_script_argv_split_append (struct grub_script_argv *argv, char *s);
struct grub_script_arglist *
2006-17-04 Marco Gerards <marco@gnu.org> * include/grub/script.h: Include <grub/parser.h> and "grub_script.tab.h". (struct grub_lexer_param): New struct. (struct grub_parser_param): Likewise. (grub_script_create_arglist): Pass the state in an argument. (grub_script_add_arglist): Likewise. (grub_script_create_cmdline): Likewise. (grub_script_create_cmdblock): Likewise. (grub_script_create_cmdif): Likewise. (grub_script_create_cmdmenu): Likewise. (grub_script_add_cmd): Likewise. (grub_script_arg_add): Likewise. (grub_script_lexer_ref): Likewise. (grub_script_lexer_deref): Likewise. (grub_script_lexer_record_start): Likewise. (grub_script_lexer_record_stop): Likewise. (grub_script_mem_record): Likewise. (grub_script_mem_record_stop): Likewise. (grub_script_malloc): Likewise. (grub_script_yylex): Likewise. (grub_script_yyparse): Likewise. (grub_script_yyerror): Likewise. (grub_script_yylex): Likewise. (grub_script_lexer_init): Return the state. * normal/lexer.c (grub_script_lexer_state): Removed variable. (grub_script_lexer_done): Likewise. (grub_script_lexer_getline): Likewise. (grub_script_lexer_refs): Likewise. (script): Likewise. (newscript): Likewise. (record): Likewise. (recording): Likewise. (recordpos): Likewise. (recordlen): Likewise. (grub_script_lexer_init): Return the state instead of setting global variables. (grub_script_lexer_ref): Use the newly added argument for state instead of globals. (grub_script_lexer_deref): Likewise. (grub_script_lexer_record_start): Likewise. (grub_script_lexer_record_stop): Likewise. (recordchar): Likewise. (nextchar): Likewise. (grub_script_yylex2): Likewise. (grub_script_yylex): Likewise. (grub_script_yyerror): Likewise. * normal/parser.y (func_mem): Removed variable. (menu_entry): Likewise. (err): Likewise. (%lex-param): New parser option. (%parse-param): Likewise. (script): Always return the AST. (argument): Pass the state around. (arguments): Likewise. (grubcmd): Likewise. (commands): Likewise. (function): Likewise. (menuentry): Likewise. (if_statement): Likewise. (if): Likewise. * normal/script.c (grub_script_memused): Removed variable. (grub_script_parsed): Likewise. (grub_script_malloc): Added a state argument. Use that instead of global variables. (grub_script_mem_record): Likewise. (grub_script_mem_record_stop): Likewise. (grub_script_arg_add): Likewise. (grub_script_add_arglist): Likewise. (grub_script_create_cmdline): Likewise. (grub_script_create_cmdif): Likewise. (grub_script_create_cmdmenu): Likewise. (grub_script_add_cmd): Likewise. (grub_script_parse): Setup the state before calling the parser.
2006-04-17 13:01:20 +00:00
grub_script_create_arglist (struct grub_parser_param *state);
struct grub_script_arglist *
2006-17-04 Marco Gerards <marco@gnu.org> * include/grub/script.h: Include <grub/parser.h> and "grub_script.tab.h". (struct grub_lexer_param): New struct. (struct grub_parser_param): Likewise. (grub_script_create_arglist): Pass the state in an argument. (grub_script_add_arglist): Likewise. (grub_script_create_cmdline): Likewise. (grub_script_create_cmdblock): Likewise. (grub_script_create_cmdif): Likewise. (grub_script_create_cmdmenu): Likewise. (grub_script_add_cmd): Likewise. (grub_script_arg_add): Likewise. (grub_script_lexer_ref): Likewise. (grub_script_lexer_deref): Likewise. (grub_script_lexer_record_start): Likewise. (grub_script_lexer_record_stop): Likewise. (grub_script_mem_record): Likewise. (grub_script_mem_record_stop): Likewise. (grub_script_malloc): Likewise. (grub_script_yylex): Likewise. (grub_script_yyparse): Likewise. (grub_script_yyerror): Likewise. (grub_script_yylex): Likewise. (grub_script_lexer_init): Return the state. * normal/lexer.c (grub_script_lexer_state): Removed variable. (grub_script_lexer_done): Likewise. (grub_script_lexer_getline): Likewise. (grub_script_lexer_refs): Likewise. (script): Likewise. (newscript): Likewise. (record): Likewise. (recording): Likewise. (recordpos): Likewise. (recordlen): Likewise. (grub_script_lexer_init): Return the state instead of setting global variables. (grub_script_lexer_ref): Use the newly added argument for state instead of globals. (grub_script_lexer_deref): Likewise. (grub_script_lexer_record_start): Likewise. (grub_script_lexer_record_stop): Likewise. (recordchar): Likewise. (nextchar): Likewise. (grub_script_yylex2): Likewise. (grub_script_yylex): Likewise. (grub_script_yyerror): Likewise. * normal/parser.y (func_mem): Removed variable. (menu_entry): Likewise. (err): Likewise. (%lex-param): New parser option. (%parse-param): Likewise. (script): Always return the AST. (argument): Pass the state around. (arguments): Likewise. (grubcmd): Likewise. (commands): Likewise. (function): Likewise. (menuentry): Likewise. (if_statement): Likewise. (if): Likewise. * normal/script.c (grub_script_memused): Removed variable. (grub_script_parsed): Likewise. (grub_script_malloc): Added a state argument. Use that instead of global variables. (grub_script_mem_record): Likewise. (grub_script_mem_record_stop): Likewise. (grub_script_arg_add): Likewise. (grub_script_add_arglist): Likewise. (grub_script_create_cmdline): Likewise. (grub_script_create_cmdif): Likewise. (grub_script_create_cmdmenu): Likewise. (grub_script_add_cmd): Likewise. (grub_script_parse): Setup the state before calling the parser.
2006-04-17 13:01:20 +00:00
grub_script_add_arglist (struct grub_parser_param *state,
struct grub_script_arglist *list,
struct grub_script_arg *arg);
struct grub_script_cmd *
2006-17-04 Marco Gerards <marco@gnu.org> * include/grub/script.h: Include <grub/parser.h> and "grub_script.tab.h". (struct grub_lexer_param): New struct. (struct grub_parser_param): Likewise. (grub_script_create_arglist): Pass the state in an argument. (grub_script_add_arglist): Likewise. (grub_script_create_cmdline): Likewise. (grub_script_create_cmdblock): Likewise. (grub_script_create_cmdif): Likewise. (grub_script_create_cmdmenu): Likewise. (grub_script_add_cmd): Likewise. (grub_script_arg_add): Likewise. (grub_script_lexer_ref): Likewise. (grub_script_lexer_deref): Likewise. (grub_script_lexer_record_start): Likewise. (grub_script_lexer_record_stop): Likewise. (grub_script_mem_record): Likewise. (grub_script_mem_record_stop): Likewise. (grub_script_malloc): Likewise. (grub_script_yylex): Likewise. (grub_script_yyparse): Likewise. (grub_script_yyerror): Likewise. (grub_script_yylex): Likewise. (grub_script_lexer_init): Return the state. * normal/lexer.c (grub_script_lexer_state): Removed variable. (grub_script_lexer_done): Likewise. (grub_script_lexer_getline): Likewise. (grub_script_lexer_refs): Likewise. (script): Likewise. (newscript): Likewise. (record): Likewise. (recording): Likewise. (recordpos): Likewise. (recordlen): Likewise. (grub_script_lexer_init): Return the state instead of setting global variables. (grub_script_lexer_ref): Use the newly added argument for state instead of globals. (grub_script_lexer_deref): Likewise. (grub_script_lexer_record_start): Likewise. (grub_script_lexer_record_stop): Likewise. (recordchar): Likewise. (nextchar): Likewise. (grub_script_yylex2): Likewise. (grub_script_yylex): Likewise. (grub_script_yyerror): Likewise. * normal/parser.y (func_mem): Removed variable. (menu_entry): Likewise. (err): Likewise. (%lex-param): New parser option. (%parse-param): Likewise. (script): Always return the AST. (argument): Pass the state around. (arguments): Likewise. (grubcmd): Likewise. (commands): Likewise. (function): Likewise. (menuentry): Likewise. (if_statement): Likewise. (if): Likewise. * normal/script.c (grub_script_memused): Removed variable. (grub_script_parsed): Likewise. (grub_script_malloc): Added a state argument. Use that instead of global variables. (grub_script_mem_record): Likewise. (grub_script_mem_record_stop): Likewise. (grub_script_arg_add): Likewise. (grub_script_add_arglist): Likewise. (grub_script_create_cmdline): Likewise. (grub_script_create_cmdif): Likewise. (grub_script_create_cmdmenu): Likewise. (grub_script_add_cmd): Likewise. (grub_script_parse): Setup the state before calling the parser.
2006-04-17 13:01:20 +00:00
grub_script_create_cmdline (struct grub_parser_param *state,
struct grub_script_arglist *arglist);
struct grub_script_cmd *
2006-17-04 Marco Gerards <marco@gnu.org> * include/grub/script.h: Include <grub/parser.h> and "grub_script.tab.h". (struct grub_lexer_param): New struct. (struct grub_parser_param): Likewise. (grub_script_create_arglist): Pass the state in an argument. (grub_script_add_arglist): Likewise. (grub_script_create_cmdline): Likewise. (grub_script_create_cmdblock): Likewise. (grub_script_create_cmdif): Likewise. (grub_script_create_cmdmenu): Likewise. (grub_script_add_cmd): Likewise. (grub_script_arg_add): Likewise. (grub_script_lexer_ref): Likewise. (grub_script_lexer_deref): Likewise. (grub_script_lexer_record_start): Likewise. (grub_script_lexer_record_stop): Likewise. (grub_script_mem_record): Likewise. (grub_script_mem_record_stop): Likewise. (grub_script_malloc): Likewise. (grub_script_yylex): Likewise. (grub_script_yyparse): Likewise. (grub_script_yyerror): Likewise. (grub_script_yylex): Likewise. (grub_script_lexer_init): Return the state. * normal/lexer.c (grub_script_lexer_state): Removed variable. (grub_script_lexer_done): Likewise. (grub_script_lexer_getline): Likewise. (grub_script_lexer_refs): Likewise. (script): Likewise. (newscript): Likewise. (record): Likewise. (recording): Likewise. (recordpos): Likewise. (recordlen): Likewise. (grub_script_lexer_init): Return the state instead of setting global variables. (grub_script_lexer_ref): Use the newly added argument for state instead of globals. (grub_script_lexer_deref): Likewise. (grub_script_lexer_record_start): Likewise. (grub_script_lexer_record_stop): Likewise. (recordchar): Likewise. (nextchar): Likewise. (grub_script_yylex2): Likewise. (grub_script_yylex): Likewise. (grub_script_yyerror): Likewise. * normal/parser.y (func_mem): Removed variable. (menu_entry): Likewise. (err): Likewise. (%lex-param): New parser option. (%parse-param): Likewise. (script): Always return the AST. (argument): Pass the state around. (arguments): Likewise. (grubcmd): Likewise. (commands): Likewise. (function): Likewise. (menuentry): Likewise. (if_statement): Likewise. (if): Likewise. * normal/script.c (grub_script_memused): Removed variable. (grub_script_parsed): Likewise. (grub_script_malloc): Added a state argument. Use that instead of global variables. (grub_script_mem_record): Likewise. (grub_script_mem_record_stop): Likewise. (grub_script_arg_add): Likewise. (grub_script_add_arglist): Likewise. (grub_script_create_cmdline): Likewise. (grub_script_create_cmdif): Likewise. (grub_script_create_cmdmenu): Likewise. (grub_script_add_cmd): Likewise. (grub_script_parse): Setup the state before calling the parser.
2006-04-17 13:01:20 +00:00
grub_script_create_cmdif (struct grub_parser_param *state,
struct grub_script_cmd *exec_to_evaluate,
struct grub_script_cmd *exec_on_true,
struct grub_script_cmd *exec_on_false);
2006-01-17 Marco Gerards <marco@gnu.org> * include/grub/normal.h: Include <grub/script.h>. (grub_command_list): Removed struct. (grub_command_list_t): Removed type. (grub_menu_entry): Remove members `num' and `command_list'. Add members `commands' and `sourcecode'. * include/grub/script.h: Add inclusion guards. (grub_script_cmd_menuentry): New struct. (grub_script_execute_menuentry): New prototype. (grub_script_lexer_record_start): Likewise. (grub_script_lexer_record_stop): Likewise. * normal/execute.c (grub_script_execute_menuentry): New function. * normal/lexer.c (record, recording, recordpos, recordlen): New variables. (grub_script_lexer_record_start): New function. (grub_script_lexer_record_stop): Likewise. (recordchar): Likewise. (nextchar): Likewise. (grub_script_yylex): Use `nextchar' to fetch new characters. Use 2048 as the buffer size. Add the tokens `menuentry' and `@'. * normal/main.c: Include <grub/parser.h> and <grub/script.h> (current_menu): New variable. (free_menu): Mainly rewritten. (grub_normal_menu_addentry): New function. (read_config_file): Rewritten. * normal/menu.c (run_menu_entry): Mainly rewritten. * normal/menu_entry.c (make_screen): Rewritten te code to insert the menu entry. (run): Mainly rewritten. * normal/parser.y (menu_entry): New variable. (GRUB_PARSER_TOKEN_MENUENTRY): New token. (menuentry): New rule. (command): Add `menuentry'. (if_statement): Allow additional returns before `fi'. * normal/script.c (grub_script_create_cmdmenu): New function.
2006-01-17 09:50:47 +00:00
2010-01-23 05:33:41 +00:00
struct grub_script_cmd *
grub_script_create_cmdfor (struct grub_parser_param *state,
struct grub_script_arg *name,
struct grub_script_arglist *words,
struct grub_script_cmd *list);
2010-01-23 05:49:26 +00:00
struct grub_script_cmd *
grub_script_create_cmdwhile (struct grub_parser_param *state,
struct grub_script_cmd *cond,
struct grub_script_cmd *list,
int is_an_until_loop);
struct grub_script_cmd *
2010-05-05 08:35:06 +00:00
grub_script_append_cmd (struct grub_parser_param *state,
struct grub_script_cmd *list,
struct grub_script_cmd *last);
struct grub_script_arg *
2006-17-04 Marco Gerards <marco@gnu.org> * include/grub/script.h: Include <grub/parser.h> and "grub_script.tab.h". (struct grub_lexer_param): New struct. (struct grub_parser_param): Likewise. (grub_script_create_arglist): Pass the state in an argument. (grub_script_add_arglist): Likewise. (grub_script_create_cmdline): Likewise. (grub_script_create_cmdblock): Likewise. (grub_script_create_cmdif): Likewise. (grub_script_create_cmdmenu): Likewise. (grub_script_add_cmd): Likewise. (grub_script_arg_add): Likewise. (grub_script_lexer_ref): Likewise. (grub_script_lexer_deref): Likewise. (grub_script_lexer_record_start): Likewise. (grub_script_lexer_record_stop): Likewise. (grub_script_mem_record): Likewise. (grub_script_mem_record_stop): Likewise. (grub_script_malloc): Likewise. (grub_script_yylex): Likewise. (grub_script_yyparse): Likewise. (grub_script_yyerror): Likewise. (grub_script_yylex): Likewise. (grub_script_lexer_init): Return the state. * normal/lexer.c (grub_script_lexer_state): Removed variable. (grub_script_lexer_done): Likewise. (grub_script_lexer_getline): Likewise. (grub_script_lexer_refs): Likewise. (script): Likewise. (newscript): Likewise. (record): Likewise. (recording): Likewise. (recordpos): Likewise. (recordlen): Likewise. (grub_script_lexer_init): Return the state instead of setting global variables. (grub_script_lexer_ref): Use the newly added argument for state instead of globals. (grub_script_lexer_deref): Likewise. (grub_script_lexer_record_start): Likewise. (grub_script_lexer_record_stop): Likewise. (recordchar): Likewise. (nextchar): Likewise. (grub_script_yylex2): Likewise. (grub_script_yylex): Likewise. (grub_script_yyerror): Likewise. * normal/parser.y (func_mem): Removed variable. (menu_entry): Likewise. (err): Likewise. (%lex-param): New parser option. (%parse-param): Likewise. (script): Always return the AST. (argument): Pass the state around. (arguments): Likewise. (grubcmd): Likewise. (commands): Likewise. (function): Likewise. (menuentry): Likewise. (if_statement): Likewise. (if): Likewise. * normal/script.c (grub_script_memused): Removed variable. (grub_script_parsed): Likewise. (grub_script_malloc): Added a state argument. Use that instead of global variables. (grub_script_mem_record): Likewise. (grub_script_mem_record_stop): Likewise. (grub_script_arg_add): Likewise. (grub_script_add_arglist): Likewise. (grub_script_create_cmdline): Likewise. (grub_script_create_cmdif): Likewise. (grub_script_create_cmdmenu): Likewise. (grub_script_add_cmd): Likewise. (grub_script_parse): Setup the state before calling the parser.
2006-04-17 13:01:20 +00:00
grub_script_arg_add (struct grub_parser_param *state,
struct grub_script_arg *arg,
grub_script_arg_type_t type, char *str);
struct grub_script *grub_script_parse (char *script,
2009-05-02 Bean <bean123ch@gmail.com> * conf/common.rmk (grub_script.tab.c): Change normal/parser.y to script/sh/parser.y. (pkglib_MODULES): Add normal.mod and sh.mod. (normal_SOURCES): New variable. (normal_mod_CFLAGS): Likewise. (normal_mod_LDFLAGS): Likewise. (sh_mod_SOURCES): Likewise. (sh_mod_CFLAGS): Likewise. (sh_mod_LDFLAGS): Likewise. * conf/i386-pc.rmk (normal/lexer.c_DEPENDENCIES): Changed to script/sh/lexer.c_DEPENDENCIES. (kernel_img_SOURCES): Remove kern/rescue.c, and kern/reader.c, kern/rescue_reader.c and kern/rescue_parser.c. (kernel_img_HEADERS): Remove rescue.h, add reader.h. (grub_emu_SOURCES): Change source files. (pkglib_MODULES): Remove normal.mod. (normal_SOURCES): Removed. (normal_mod_CFLAGS): Likewise. (normal_mod_LDFLAGS): Likewise. * conf/i386-coreboot.rmk: Likewise. * conf/i386-efi.rmk: Likewise. * conf/i386-ieee1276.rmk: Likewise. * conf/powerpc-ieee1275.rmk: Likewise. * conf/sparc64-ieee1275.rmk: Likewise. * conf/x86_64-efi.rmk: Likewise. * include/grub/command.h (grub_command_execute): New inline function. * include/grub/menu.h (grub_menu_entry): Removed commands field. * include/grub/normal.h: Remove <grub/setjmp.h>. (grub_fs_module_list): Moved to normal/autofs.c. (grub_exit_env): Removed. (grub_command_execute): Likewise. (grub_normal_menu_addentry): Renamed to grub_menu_addentry, removed parameter script. (read_command_list): New function declaration. (read_fs_list): Likewise. * include/parser.h: Include <grub/reader.h>. (grub_parser_split_cmdline): Change type of getline parameter. (grub_parser): New structure. (grub_parser_class): New variable. (grub_parser_execute): New function declaration. (grub_register_rescue_parser): Likewise. (grub_parser_register): New inline function. (grub_parser_unregister): Likewise. (grub_parser_get_current): Likewise. (grub_parser_set_current): Likewise. * include/grub/reader.h: New file. * kern/reader.c: Likewise. * kern/rescue_parser.c: Likewise. * kern/rescue_reader.c: Likewise. * normal/autofs.c: Likewise. * normal/dyncmd.c: Likewise. * include/grub/rescue.h: Removed. * normal/command.h: Likewise. * include/grub/script.h: Moved to ... * include/grub/script_sh.h: ... Moved here. * normal/execute.c: Moved to ... * script/sh/execute.c: ... Moved here. * normal/function.c: Moved to ... * script/sh/function.c: ... Moved here. * normal/lexer.c: Moved to ... * script/sh/lexer.c: ... Moved here. * normal/parser.y: Moved to ... * script/sh/parser.y: ... Moved here. * normal/script.c: Moved to ... * script/sh/script.c: ... Moved here. * normal/main.c: Remove <grub/rescue.h> and <grub/script.h>, include <grub/reader.h>. (grub_exit_env): Removed. (fs_module_list): Moved to normal/autofs.c. (grub_file_getline): Don't handle comment here. (free_menu): Skip removed field entry->commands. (grub_normal_menu_addentry): Removed as grub_menu_entry, removed script parameter. (read_config_file): Removed nested parameter, change getline function. (grub_enter_normal_mode): Removed. (grub_dyncmd_dispatcher): Moved to normal/dyncmd.c. (read_command_list): Likewise. (autoload_fs_module): Moved to normal/autofs.c. (read_fs_list): Likewise. (reader_nested): New variable. (grub_normal_execute): Run parser.sh to switch to sh parser. (grub_cmd_rescue): Removed. (cmd_normal): Removed. (grub_cmd_normal): Unregister itself at the beginning. Don't register rescue command. (grub_cmdline_run): New function. (grub_normal_reader_init): Likewise. (grub_normal_read_line): Likewise. (grub_env_write_pager): Likewise. (cmdline): New variable. (grub_normal_reader): Likewise. (GRUB_MOD_INIT): Register normal reader and set as current, register pager hook, register normal command with grub_register_command_prio, so that it won't show up in command.lst. (GRUB_MOD_FINI): Unregister normal reader, unhook pager, clear grub_fs_autoload_hook. * normal/menu.c: Remove <grub/script.h>, add <grub/command.h>. (grub_menu_execute_entry): Replace grub_script_execute with grub_parser_execute, change parameter to grub_command_execute. * normal/menu_text.c: Remove <grub/script.h>. * normal/menu_entry.c: Remove <grub/script.h>, add <grub/command.h> and <grub/parser.h>. (run): Change editor_getline to use new parser interface. Change parameter to grub_command_execute. * kern/main.c: Remove <grub/rescue.h>, include <grub/command.h>, <grub/reader.h> and <grub/parser.h>. (grub_load_normal_mode): Execute normal command. (grub_main): Call grub_register_core_commands, grub_register_rescue_parser and grub_register_rescue_reader, use grub_reader_loop to enter input loop. * kern/parser.c (grub_parser_spli_cmdline): Change type of getline parameter. (grub_parser_class): New variable. (grub_parser_execute): New function. * loader/i386/multiboot.c: Remove <grub/rescue.h>. * loader/multiboot2.c: Likewise. * loader/sparc64/ieee1275/linux.c: Likewise. * util/grub-emu.c (read_command_list): New dummy function.
2009-05-02 19:49:34 +00:00
grub_reader_getline_t getline);
void grub_script_free (struct grub_script *script);
struct grub_script *grub_script_create (struct grub_script_cmd *cmd,
struct grub_script_mem *mem);
2010-01-22 13:37:27 +00:00
struct grub_lexer_param *grub_script_lexer_init (struct grub_parser_param *parser,
char *script,
2009-05-02 Bean <bean123ch@gmail.com> * conf/common.rmk (grub_script.tab.c): Change normal/parser.y to script/sh/parser.y. (pkglib_MODULES): Add normal.mod and sh.mod. (normal_SOURCES): New variable. (normal_mod_CFLAGS): Likewise. (normal_mod_LDFLAGS): Likewise. (sh_mod_SOURCES): Likewise. (sh_mod_CFLAGS): Likewise. (sh_mod_LDFLAGS): Likewise. * conf/i386-pc.rmk (normal/lexer.c_DEPENDENCIES): Changed to script/sh/lexer.c_DEPENDENCIES. (kernel_img_SOURCES): Remove kern/rescue.c, and kern/reader.c, kern/rescue_reader.c and kern/rescue_parser.c. (kernel_img_HEADERS): Remove rescue.h, add reader.h. (grub_emu_SOURCES): Change source files. (pkglib_MODULES): Remove normal.mod. (normal_SOURCES): Removed. (normal_mod_CFLAGS): Likewise. (normal_mod_LDFLAGS): Likewise. * conf/i386-coreboot.rmk: Likewise. * conf/i386-efi.rmk: Likewise. * conf/i386-ieee1276.rmk: Likewise. * conf/powerpc-ieee1275.rmk: Likewise. * conf/sparc64-ieee1275.rmk: Likewise. * conf/x86_64-efi.rmk: Likewise. * include/grub/command.h (grub_command_execute): New inline function. * include/grub/menu.h (grub_menu_entry): Removed commands field. * include/grub/normal.h: Remove <grub/setjmp.h>. (grub_fs_module_list): Moved to normal/autofs.c. (grub_exit_env): Removed. (grub_command_execute): Likewise. (grub_normal_menu_addentry): Renamed to grub_menu_addentry, removed parameter script. (read_command_list): New function declaration. (read_fs_list): Likewise. * include/parser.h: Include <grub/reader.h>. (grub_parser_split_cmdline): Change type of getline parameter. (grub_parser): New structure. (grub_parser_class): New variable. (grub_parser_execute): New function declaration. (grub_register_rescue_parser): Likewise. (grub_parser_register): New inline function. (grub_parser_unregister): Likewise. (grub_parser_get_current): Likewise. (grub_parser_set_current): Likewise. * include/grub/reader.h: New file. * kern/reader.c: Likewise. * kern/rescue_parser.c: Likewise. * kern/rescue_reader.c: Likewise. * normal/autofs.c: Likewise. * normal/dyncmd.c: Likewise. * include/grub/rescue.h: Removed. * normal/command.h: Likewise. * include/grub/script.h: Moved to ... * include/grub/script_sh.h: ... Moved here. * normal/execute.c: Moved to ... * script/sh/execute.c: ... Moved here. * normal/function.c: Moved to ... * script/sh/function.c: ... Moved here. * normal/lexer.c: Moved to ... * script/sh/lexer.c: ... Moved here. * normal/parser.y: Moved to ... * script/sh/parser.y: ... Moved here. * normal/script.c: Moved to ... * script/sh/script.c: ... Moved here. * normal/main.c: Remove <grub/rescue.h> and <grub/script.h>, include <grub/reader.h>. (grub_exit_env): Removed. (fs_module_list): Moved to normal/autofs.c. (grub_file_getline): Don't handle comment here. (free_menu): Skip removed field entry->commands. (grub_normal_menu_addentry): Removed as grub_menu_entry, removed script parameter. (read_config_file): Removed nested parameter, change getline function. (grub_enter_normal_mode): Removed. (grub_dyncmd_dispatcher): Moved to normal/dyncmd.c. (read_command_list): Likewise. (autoload_fs_module): Moved to normal/autofs.c. (read_fs_list): Likewise. (reader_nested): New variable. (grub_normal_execute): Run parser.sh to switch to sh parser. (grub_cmd_rescue): Removed. (cmd_normal): Removed. (grub_cmd_normal): Unregister itself at the beginning. Don't register rescue command. (grub_cmdline_run): New function. (grub_normal_reader_init): Likewise. (grub_normal_read_line): Likewise. (grub_env_write_pager): Likewise. (cmdline): New variable. (grub_normal_reader): Likewise. (GRUB_MOD_INIT): Register normal reader and set as current, register pager hook, register normal command with grub_register_command_prio, so that it won't show up in command.lst. (GRUB_MOD_FINI): Unregister normal reader, unhook pager, clear grub_fs_autoload_hook. * normal/menu.c: Remove <grub/script.h>, add <grub/command.h>. (grub_menu_execute_entry): Replace grub_script_execute with grub_parser_execute, change parameter to grub_command_execute. * normal/menu_text.c: Remove <grub/script.h>. * normal/menu_entry.c: Remove <grub/script.h>, add <grub/command.h> and <grub/parser.h>. (run): Change editor_getline to use new parser interface. Change parameter to grub_command_execute. * kern/main.c: Remove <grub/rescue.h>, include <grub/command.h>, <grub/reader.h> and <grub/parser.h>. (grub_load_normal_mode): Execute normal command. (grub_main): Call grub_register_core_commands, grub_register_rescue_parser and grub_register_rescue_reader, use grub_reader_loop to enter input loop. * kern/parser.c (grub_parser_spli_cmdline): Change type of getline parameter. (grub_parser_class): New variable. (grub_parser_execute): New function. * loader/i386/multiboot.c: Remove <grub/rescue.h>. * loader/multiboot2.c: Likewise. * loader/sparc64/ieee1275/linux.c: Likewise. * util/grub-emu.c (read_command_list): New dummy function.
2009-05-02 19:49:34 +00:00
grub_reader_getline_t getline);
2010-01-22 13:37:27 +00:00
void grub_script_lexer_fini (struct grub_lexer_param *);
2006-17-04 Marco Gerards <marco@gnu.org> * include/grub/script.h: Include <grub/parser.h> and "grub_script.tab.h". (struct grub_lexer_param): New struct. (struct grub_parser_param): Likewise. (grub_script_create_arglist): Pass the state in an argument. (grub_script_add_arglist): Likewise. (grub_script_create_cmdline): Likewise. (grub_script_create_cmdblock): Likewise. (grub_script_create_cmdif): Likewise. (grub_script_create_cmdmenu): Likewise. (grub_script_add_cmd): Likewise. (grub_script_arg_add): Likewise. (grub_script_lexer_ref): Likewise. (grub_script_lexer_deref): Likewise. (grub_script_lexer_record_start): Likewise. (grub_script_lexer_record_stop): Likewise. (grub_script_mem_record): Likewise. (grub_script_mem_record_stop): Likewise. (grub_script_malloc): Likewise. (grub_script_yylex): Likewise. (grub_script_yyparse): Likewise. (grub_script_yyerror): Likewise. (grub_script_yylex): Likewise. (grub_script_lexer_init): Return the state. * normal/lexer.c (grub_script_lexer_state): Removed variable. (grub_script_lexer_done): Likewise. (grub_script_lexer_getline): Likewise. (grub_script_lexer_refs): Likewise. (script): Likewise. (newscript): Likewise. (record): Likewise. (recording): Likewise. (recordpos): Likewise. (recordlen): Likewise. (grub_script_lexer_init): Return the state instead of setting global variables. (grub_script_lexer_ref): Use the newly added argument for state instead of globals. (grub_script_lexer_deref): Likewise. (grub_script_lexer_record_start): Likewise. (grub_script_lexer_record_stop): Likewise. (recordchar): Likewise. (nextchar): Likewise. (grub_script_yylex2): Likewise. (grub_script_yylex): Likewise. (grub_script_yyerror): Likewise. * normal/parser.y (func_mem): Removed variable. (menu_entry): Likewise. (err): Likewise. (%lex-param): New parser option. (%parse-param): Likewise. (script): Always return the AST. (argument): Pass the state around. (arguments): Likewise. (grubcmd): Likewise. (commands): Likewise. (function): Likewise. (menuentry): Likewise. (if_statement): Likewise. (if): Likewise. * normal/script.c (grub_script_memused): Removed variable. (grub_script_parsed): Likewise. (grub_script_malloc): Added a state argument. Use that instead of global variables. (grub_script_mem_record): Likewise. (grub_script_mem_record_stop): Likewise. (grub_script_arg_add): Likewise. (grub_script_add_arglist): Likewise. (grub_script_create_cmdline): Likewise. (grub_script_create_cmdif): Likewise. (grub_script_create_cmdmenu): Likewise. (grub_script_add_cmd): Likewise. (grub_script_parse): Setup the state before calling the parser.
2006-04-17 13:01:20 +00:00
void grub_script_lexer_ref (struct grub_lexer_param *);
void grub_script_lexer_deref (struct grub_lexer_param *);
2010-04-29 12:40:22 +00:00
unsigned grub_script_lexer_record_start (struct grub_parser_param *);
char *grub_script_lexer_record_stop (struct grub_parser_param *, unsigned);
2010-06-12 05:36:02 +00:00
int grub_script_lexer_yywrap (struct grub_parser_param *, const char *input);
2010-01-22 13:37:27 +00:00
void grub_script_lexer_record (struct grub_parser_param *, char *);
/* Functions to track allocated memory. */
2006-17-04 Marco Gerards <marco@gnu.org> * include/grub/script.h: Include <grub/parser.h> and "grub_script.tab.h". (struct grub_lexer_param): New struct. (struct grub_parser_param): Likewise. (grub_script_create_arglist): Pass the state in an argument. (grub_script_add_arglist): Likewise. (grub_script_create_cmdline): Likewise. (grub_script_create_cmdblock): Likewise. (grub_script_create_cmdif): Likewise. (grub_script_create_cmdmenu): Likewise. (grub_script_add_cmd): Likewise. (grub_script_arg_add): Likewise. (grub_script_lexer_ref): Likewise. (grub_script_lexer_deref): Likewise. (grub_script_lexer_record_start): Likewise. (grub_script_lexer_record_stop): Likewise. (grub_script_mem_record): Likewise. (grub_script_mem_record_stop): Likewise. (grub_script_malloc): Likewise. (grub_script_yylex): Likewise. (grub_script_yyparse): Likewise. (grub_script_yyerror): Likewise. (grub_script_yylex): Likewise. (grub_script_lexer_init): Return the state. * normal/lexer.c (grub_script_lexer_state): Removed variable. (grub_script_lexer_done): Likewise. (grub_script_lexer_getline): Likewise. (grub_script_lexer_refs): Likewise. (script): Likewise. (newscript): Likewise. (record): Likewise. (recording): Likewise. (recordpos): Likewise. (recordlen): Likewise. (grub_script_lexer_init): Return the state instead of setting global variables. (grub_script_lexer_ref): Use the newly added argument for state instead of globals. (grub_script_lexer_deref): Likewise. (grub_script_lexer_record_start): Likewise. (grub_script_lexer_record_stop): Likewise. (recordchar): Likewise. (nextchar): Likewise. (grub_script_yylex2): Likewise. (grub_script_yylex): Likewise. (grub_script_yyerror): Likewise. * normal/parser.y (func_mem): Removed variable. (menu_entry): Likewise. (err): Likewise. (%lex-param): New parser option. (%parse-param): Likewise. (script): Always return the AST. (argument): Pass the state around. (arguments): Likewise. (grubcmd): Likewise. (commands): Likewise. (function): Likewise. (menuentry): Likewise. (if_statement): Likewise. (if): Likewise. * normal/script.c (grub_script_memused): Removed variable. (grub_script_parsed): Likewise. (grub_script_malloc): Added a state argument. Use that instead of global variables. (grub_script_mem_record): Likewise. (grub_script_mem_record_stop): Likewise. (grub_script_arg_add): Likewise. (grub_script_add_arglist): Likewise. (grub_script_create_cmdline): Likewise. (grub_script_create_cmdif): Likewise. (grub_script_create_cmdmenu): Likewise. (grub_script_add_cmd): Likewise. (grub_script_parse): Setup the state before calling the parser.
2006-04-17 13:01:20 +00:00
struct grub_script_mem *grub_script_mem_record (struct grub_parser_param *state);
2009-05-02 Bean <bean123ch@gmail.com> * conf/common.rmk (grub_script.tab.c): Change normal/parser.y to script/sh/parser.y. (pkglib_MODULES): Add normal.mod and sh.mod. (normal_SOURCES): New variable. (normal_mod_CFLAGS): Likewise. (normal_mod_LDFLAGS): Likewise. (sh_mod_SOURCES): Likewise. (sh_mod_CFLAGS): Likewise. (sh_mod_LDFLAGS): Likewise. * conf/i386-pc.rmk (normal/lexer.c_DEPENDENCIES): Changed to script/sh/lexer.c_DEPENDENCIES. (kernel_img_SOURCES): Remove kern/rescue.c, and kern/reader.c, kern/rescue_reader.c and kern/rescue_parser.c. (kernel_img_HEADERS): Remove rescue.h, add reader.h. (grub_emu_SOURCES): Change source files. (pkglib_MODULES): Remove normal.mod. (normal_SOURCES): Removed. (normal_mod_CFLAGS): Likewise. (normal_mod_LDFLAGS): Likewise. * conf/i386-coreboot.rmk: Likewise. * conf/i386-efi.rmk: Likewise. * conf/i386-ieee1276.rmk: Likewise. * conf/powerpc-ieee1275.rmk: Likewise. * conf/sparc64-ieee1275.rmk: Likewise. * conf/x86_64-efi.rmk: Likewise. * include/grub/command.h (grub_command_execute): New inline function. * include/grub/menu.h (grub_menu_entry): Removed commands field. * include/grub/normal.h: Remove <grub/setjmp.h>. (grub_fs_module_list): Moved to normal/autofs.c. (grub_exit_env): Removed. (grub_command_execute): Likewise. (grub_normal_menu_addentry): Renamed to grub_menu_addentry, removed parameter script. (read_command_list): New function declaration. (read_fs_list): Likewise. * include/parser.h: Include <grub/reader.h>. (grub_parser_split_cmdline): Change type of getline parameter. (grub_parser): New structure. (grub_parser_class): New variable. (grub_parser_execute): New function declaration. (grub_register_rescue_parser): Likewise. (grub_parser_register): New inline function. (grub_parser_unregister): Likewise. (grub_parser_get_current): Likewise. (grub_parser_set_current): Likewise. * include/grub/reader.h: New file. * kern/reader.c: Likewise. * kern/rescue_parser.c: Likewise. * kern/rescue_reader.c: Likewise. * normal/autofs.c: Likewise. * normal/dyncmd.c: Likewise. * include/grub/rescue.h: Removed. * normal/command.h: Likewise. * include/grub/script.h: Moved to ... * include/grub/script_sh.h: ... Moved here. * normal/execute.c: Moved to ... * script/sh/execute.c: ... Moved here. * normal/function.c: Moved to ... * script/sh/function.c: ... Moved here. * normal/lexer.c: Moved to ... * script/sh/lexer.c: ... Moved here. * normal/parser.y: Moved to ... * script/sh/parser.y: ... Moved here. * normal/script.c: Moved to ... * script/sh/script.c: ... Moved here. * normal/main.c: Remove <grub/rescue.h> and <grub/script.h>, include <grub/reader.h>. (grub_exit_env): Removed. (fs_module_list): Moved to normal/autofs.c. (grub_file_getline): Don't handle comment here. (free_menu): Skip removed field entry->commands. (grub_normal_menu_addentry): Removed as grub_menu_entry, removed script parameter. (read_config_file): Removed nested parameter, change getline function. (grub_enter_normal_mode): Removed. (grub_dyncmd_dispatcher): Moved to normal/dyncmd.c. (read_command_list): Likewise. (autoload_fs_module): Moved to normal/autofs.c. (read_fs_list): Likewise. (reader_nested): New variable. (grub_normal_execute): Run parser.sh to switch to sh parser. (grub_cmd_rescue): Removed. (cmd_normal): Removed. (grub_cmd_normal): Unregister itself at the beginning. Don't register rescue command. (grub_cmdline_run): New function. (grub_normal_reader_init): Likewise. (grub_normal_read_line): Likewise. (grub_env_write_pager): Likewise. (cmdline): New variable. (grub_normal_reader): Likewise. (GRUB_MOD_INIT): Register normal reader and set as current, register pager hook, register normal command with grub_register_command_prio, so that it won't show up in command.lst. (GRUB_MOD_FINI): Unregister normal reader, unhook pager, clear grub_fs_autoload_hook. * normal/menu.c: Remove <grub/script.h>, add <grub/command.h>. (grub_menu_execute_entry): Replace grub_script_execute with grub_parser_execute, change parameter to grub_command_execute. * normal/menu_text.c: Remove <grub/script.h>. * normal/menu_entry.c: Remove <grub/script.h>, add <grub/command.h> and <grub/parser.h>. (run): Change editor_getline to use new parser interface. Change parameter to grub_command_execute. * kern/main.c: Remove <grub/rescue.h>, include <grub/command.h>, <grub/reader.h> and <grub/parser.h>. (grub_load_normal_mode): Execute normal command. (grub_main): Call grub_register_core_commands, grub_register_rescue_parser and grub_register_rescue_reader, use grub_reader_loop to enter input loop. * kern/parser.c (grub_parser_spli_cmdline): Change type of getline parameter. (grub_parser_class): New variable. (grub_parser_execute): New function. * loader/i386/multiboot.c: Remove <grub/rescue.h>. * loader/multiboot2.c: Likewise. * loader/sparc64/ieee1275/linux.c: Likewise. * util/grub-emu.c (read_command_list): New dummy function.
2009-05-02 19:49:34 +00:00
struct grub_script_mem *grub_script_mem_record_stop (struct grub_parser_param *state,
2006-17-04 Marco Gerards <marco@gnu.org> * include/grub/script.h: Include <grub/parser.h> and "grub_script.tab.h". (struct grub_lexer_param): New struct. (struct grub_parser_param): Likewise. (grub_script_create_arglist): Pass the state in an argument. (grub_script_add_arglist): Likewise. (grub_script_create_cmdline): Likewise. (grub_script_create_cmdblock): Likewise. (grub_script_create_cmdif): Likewise. (grub_script_create_cmdmenu): Likewise. (grub_script_add_cmd): Likewise. (grub_script_arg_add): Likewise. (grub_script_lexer_ref): Likewise. (grub_script_lexer_deref): Likewise. (grub_script_lexer_record_start): Likewise. (grub_script_lexer_record_stop): Likewise. (grub_script_mem_record): Likewise. (grub_script_mem_record_stop): Likewise. (grub_script_malloc): Likewise. (grub_script_yylex): Likewise. (grub_script_yyparse): Likewise. (grub_script_yyerror): Likewise. (grub_script_yylex): Likewise. (grub_script_lexer_init): Return the state. * normal/lexer.c (grub_script_lexer_state): Removed variable. (grub_script_lexer_done): Likewise. (grub_script_lexer_getline): Likewise. (grub_script_lexer_refs): Likewise. (script): Likewise. (newscript): Likewise. (record): Likewise. (recording): Likewise. (recordpos): Likewise. (recordlen): Likewise. (grub_script_lexer_init): Return the state instead of setting global variables. (grub_script_lexer_ref): Use the newly added argument for state instead of globals. (grub_script_lexer_deref): Likewise. (grub_script_lexer_record_start): Likewise. (grub_script_lexer_record_stop): Likewise. (recordchar): Likewise. (nextchar): Likewise. (grub_script_yylex2): Likewise. (grub_script_yylex): Likewise. (grub_script_yyerror): Likewise. * normal/parser.y (func_mem): Removed variable. (menu_entry): Likewise. (err): Likewise. (%lex-param): New parser option. (%parse-param): Likewise. (script): Always return the AST. (argument): Pass the state around. (arguments): Likewise. (grubcmd): Likewise. (commands): Likewise. (function): Likewise. (menuentry): Likewise. (if_statement): Likewise. (if): Likewise. * normal/script.c (grub_script_memused): Removed variable. (grub_script_parsed): Likewise. (grub_script_malloc): Added a state argument. Use that instead of global variables. (grub_script_mem_record): Likewise. (grub_script_mem_record_stop): Likewise. (grub_script_arg_add): Likewise. (grub_script_add_arglist): Likewise. (grub_script_create_cmdline): Likewise. (grub_script_create_cmdif): Likewise. (grub_script_create_cmdmenu): Likewise. (grub_script_add_cmd): Likewise. (grub_script_parse): Setup the state before calling the parser.
2006-04-17 13:01:20 +00:00
struct grub_script_mem *restore);
void *grub_script_malloc (struct grub_parser_param *state, grub_size_t size);
/* Functions used by bison. */
union YYSTYPE;
int grub_script_yylex (union YYSTYPE *, struct grub_parser_param *);
2006-17-04 Marco Gerards <marco@gnu.org> * include/grub/script.h: Include <grub/parser.h> and "grub_script.tab.h". (struct grub_lexer_param): New struct. (struct grub_parser_param): Likewise. (grub_script_create_arglist): Pass the state in an argument. (grub_script_add_arglist): Likewise. (grub_script_create_cmdline): Likewise. (grub_script_create_cmdblock): Likewise. (grub_script_create_cmdif): Likewise. (grub_script_create_cmdmenu): Likewise. (grub_script_add_cmd): Likewise. (grub_script_arg_add): Likewise. (grub_script_lexer_ref): Likewise. (grub_script_lexer_deref): Likewise. (grub_script_lexer_record_start): Likewise. (grub_script_lexer_record_stop): Likewise. (grub_script_mem_record): Likewise. (grub_script_mem_record_stop): Likewise. (grub_script_malloc): Likewise. (grub_script_yylex): Likewise. (grub_script_yyparse): Likewise. (grub_script_yyerror): Likewise. (grub_script_yylex): Likewise. (grub_script_lexer_init): Return the state. * normal/lexer.c (grub_script_lexer_state): Removed variable. (grub_script_lexer_done): Likewise. (grub_script_lexer_getline): Likewise. (grub_script_lexer_refs): Likewise. (script): Likewise. (newscript): Likewise. (record): Likewise. (recording): Likewise. (recordpos): Likewise. (recordlen): Likewise. (grub_script_lexer_init): Return the state instead of setting global variables. (grub_script_lexer_ref): Use the newly added argument for state instead of globals. (grub_script_lexer_deref): Likewise. (grub_script_lexer_record_start): Likewise. (grub_script_lexer_record_stop): Likewise. (recordchar): Likewise. (nextchar): Likewise. (grub_script_yylex2): Likewise. (grub_script_yylex): Likewise. (grub_script_yyerror): Likewise. * normal/parser.y (func_mem): Removed variable. (menu_entry): Likewise. (err): Likewise. (%lex-param): New parser option. (%parse-param): Likewise. (script): Always return the AST. (argument): Pass the state around. (arguments): Likewise. (grubcmd): Likewise. (commands): Likewise. (function): Likewise. (menuentry): Likewise. (if_statement): Likewise. (if): Likewise. * normal/script.c (grub_script_memused): Removed variable. (grub_script_parsed): Likewise. (grub_script_malloc): Added a state argument. Use that instead of global variables. (grub_script_mem_record): Likewise. (grub_script_mem_record_stop): Likewise. (grub_script_arg_add): Likewise. (grub_script_add_arglist): Likewise. (grub_script_create_cmdline): Likewise. (grub_script_create_cmdif): Likewise. (grub_script_create_cmdmenu): Likewise. (grub_script_add_cmd): Likewise. (grub_script_parse): Setup the state before calling the parser.
2006-04-17 13:01:20 +00:00
int grub_script_yyparse (struct grub_parser_param *);
void grub_script_yyerror (struct grub_parser_param *, char const *);
/* Commands to execute, don't use these directly. */
grub_err_t grub_script_execute_cmdline (struct grub_script_cmd *cmd);
2010-05-05 08:35:06 +00:00
grub_err_t grub_script_execute_cmdlist (struct grub_script_cmd *cmd);
grub_err_t grub_script_execute_cmdif (struct grub_script_cmd *cmd);
2010-01-23 05:33:41 +00:00
grub_err_t grub_script_execute_cmdfor (struct grub_script_cmd *cmd);
2010-01-23 05:49:26 +00:00
grub_err_t grub_script_execute_cmdwhile (struct grub_script_cmd *cmd);
/* Execute any GRUB pre-parsed command or script. */
grub_err_t grub_script_execute (struct grub_script *script);
grub_err_t grub_script_execute_sourcecode (const char *source, int argc, char **args);
2010-05-05 10:04:26 +00:00
/* Break command for loops. */
grub_err_t grub_script_break (grub_command_t cmd, int argc, char *argv[]);
2010-05-07 04:38:09 +00:00
/* SHIFT command for GRUB script. */
2010-06-13 04:18:47 +00:00
grub_err_t grub_script_shift (grub_command_t cmd, int argc, char *argv[]);
2010-05-07 04:38:09 +00:00
/* SETPARAMS command for GRUB script functions. */
grub_err_t grub_script_setparams (grub_command_t cmd, int argc, char *argv[]);
2010-08-25 14:05:52 +00:00
/* RETURN command for functions. */
grub_err_t grub_script_return (grub_command_t cmd, int argc, char *argv[]);
/* This variable points to the parsed command. This is used to
communicate with the bison code. */
extern struct grub_script_cmd *grub_script_parsed;
/* The function description. */
struct grub_script_function
{
/* The name. */
char *name;
/* The script function. */
struct grub_script *func;
/* The flags. */
unsigned flags;
/* The next element. */
struct grub_script_function *next;
int references;
};
typedef struct grub_script_function *grub_script_function_t;
2010-03-26 23:58:35 +00:00
extern grub_script_function_t grub_script_function_list;
#define FOR_SCRIPT_FUNCTIONS(var) for((var) = grub_script_function_list; \
(var); (var) = (var)->next)
2009-06-04 Vladimir Serbinenko <phcoder@gmail.com> Script fixes * include/grub/script_sh.h (grub_script_cmdline): remove cmdline (grub_lexer_param): add tokenonhold (grub_script_create_cmdline): remove cmdline. All callers updated (grub_script_function_create): make functionname grub_script_arg. All callers updated (grub_script_execute_argument_to_string): new prototype * kern/parser.c (state_transitions): reorder (grub_parser_cmdline_state): fix a bug and make more compact * script/sh/execute.c (grub_script_execute_argument_to_string): make global (grub_script_execute_cmdline): use new format * script/sh/function.c (grub_script_function_create): make functionname grub_script_arg. All callers updated * script/sh/lexer.c (grub_script_lexer_init): initilaize tokenonhold (grub_script_yylex): remove (grub_script_yylex2): renamed to ... (grub_script_yylex): ...renamed parse the expressions like a${b}c * script/sh/parser.y (GRUB_PARSER_TOKEN_ARG): new typed terminal (GRUB_PARSER_TOKEN_VAR): remove (GRUB_PARSER_TOKEN_NAME): likewise ("if"): declare as typeless ("while"): likewise ("function"): likewise ("else"): likewise ("then"): likewise ("fi"): likewise (text): remove (argument): likewise (script): accept empty scripts and make exit on error (arguments): use GRUB_PARSER_TOKEN_ARG (function): likewise (command): move error handling to script (menuentry): move grub_script_lexer_ref before * script/sh/script.c (grub_script_create_cmdline): remove cmdline argument. All callers updated
2009-06-04 16:18:35 +00:00
grub_script_function_t grub_script_function_create (struct grub_script_arg *functionname,
struct grub_script *cmd);
void grub_script_function_remove (const char *name);
grub_script_function_t grub_script_function_find (char *functionname);
2010-06-12 11:02:06 +00:00
2010-05-05 09:17:50 +00:00
grub_err_t grub_script_function_call (grub_script_function_t func,
int argc, char **args);
2006-01-17 Marco Gerards <marco@gnu.org> * include/grub/normal.h: Include <grub/script.h>. (grub_command_list): Removed struct. (grub_command_list_t): Removed type. (grub_menu_entry): Remove members `num' and `command_list'. Add members `commands' and `sourcecode'. * include/grub/script.h: Add inclusion guards. (grub_script_cmd_menuentry): New struct. (grub_script_execute_menuentry): New prototype. (grub_script_lexer_record_start): Likewise. (grub_script_lexer_record_stop): Likewise. * normal/execute.c (grub_script_execute_menuentry): New function. * normal/lexer.c (record, recording, recordpos, recordlen): New variables. (grub_script_lexer_record_start): New function. (grub_script_lexer_record_stop): Likewise. (recordchar): Likewise. (nextchar): Likewise. (grub_script_yylex): Use `nextchar' to fetch new characters. Use 2048 as the buffer size. Add the tokens `menuentry' and `@'. * normal/main.c: Include <grub/parser.h> and <grub/script.h> (current_menu): New variable. (free_menu): Mainly rewritten. (grub_normal_menu_addentry): New function. (read_config_file): Rewritten. * normal/menu.c (run_menu_entry): Mainly rewritten. * normal/menu_entry.c (make_screen): Rewritten te code to insert the menu entry. (run): Mainly rewritten. * normal/parser.y (menu_entry): New variable. (GRUB_PARSER_TOKEN_MENUENTRY): New token. (menuentry): New rule. (command): Add `menuentry'. (if_statement): Allow additional returns before `fi'. * normal/script.c (grub_script_create_cmdmenu): New function.
2006-01-17 09:50:47 +00:00
2010-01-22 13:37:27 +00:00
char **
grub_script_execute_arglist_to_argv (struct grub_script_arglist *arglist, int *count);
2009-06-04 Vladimir Serbinenko <phcoder@gmail.com> Script fixes * include/grub/script_sh.h (grub_script_cmdline): remove cmdline (grub_lexer_param): add tokenonhold (grub_script_create_cmdline): remove cmdline. All callers updated (grub_script_function_create): make functionname grub_script_arg. All callers updated (grub_script_execute_argument_to_string): new prototype * kern/parser.c (state_transitions): reorder (grub_parser_cmdline_state): fix a bug and make more compact * script/sh/execute.c (grub_script_execute_argument_to_string): make global (grub_script_execute_cmdline): use new format * script/sh/function.c (grub_script_function_create): make functionname grub_script_arg. All callers updated * script/sh/lexer.c (grub_script_lexer_init): initilaize tokenonhold (grub_script_yylex): remove (grub_script_yylex2): renamed to ... (grub_script_yylex): ...renamed parse the expressions like a${b}c * script/sh/parser.y (GRUB_PARSER_TOKEN_ARG): new typed terminal (GRUB_PARSER_TOKEN_VAR): remove (GRUB_PARSER_TOKEN_NAME): likewise ("if"): declare as typeless ("while"): likewise ("function"): likewise ("else"): likewise ("then"): likewise ("fi"): likewise (text): remove (argument): likewise (script): accept empty scripts and make exit on error (arguments): use GRUB_PARSER_TOKEN_ARG (function): likewise (command): move error handling to script (menuentry): move grub_script_lexer_ref before * script/sh/script.c (grub_script_create_cmdline): remove cmdline argument. All callers updated
2009-06-04 16:18:35 +00:00
2010-03-26 23:19:42 +00:00
grub_err_t
grub_normal_parse_line (char *line, grub_reader_getline_t getline);
static inline struct grub_script *
2010-08-09 16:12:24 +00:00
grub_script_ref (struct grub_script *script)
{
2010-07-21 23:19:05 +00:00
if (script)
script->refcnt++;
return script;
}
static inline void
2010-08-09 16:12:24 +00:00
grub_script_unref (struct grub_script *script)
{
2010-07-21 23:19:05 +00:00
if (! script)
return;
if (script->refcnt == 0)
grub_script_free (script);
else
script->refcnt--;
}
2009-05-02 Bean <bean123ch@gmail.com> * conf/common.rmk (grub_script.tab.c): Change normal/parser.y to script/sh/parser.y. (pkglib_MODULES): Add normal.mod and sh.mod. (normal_SOURCES): New variable. (normal_mod_CFLAGS): Likewise. (normal_mod_LDFLAGS): Likewise. (sh_mod_SOURCES): Likewise. (sh_mod_CFLAGS): Likewise. (sh_mod_LDFLAGS): Likewise. * conf/i386-pc.rmk (normal/lexer.c_DEPENDENCIES): Changed to script/sh/lexer.c_DEPENDENCIES. (kernel_img_SOURCES): Remove kern/rescue.c, and kern/reader.c, kern/rescue_reader.c and kern/rescue_parser.c. (kernel_img_HEADERS): Remove rescue.h, add reader.h. (grub_emu_SOURCES): Change source files. (pkglib_MODULES): Remove normal.mod. (normal_SOURCES): Removed. (normal_mod_CFLAGS): Likewise. (normal_mod_LDFLAGS): Likewise. * conf/i386-coreboot.rmk: Likewise. * conf/i386-efi.rmk: Likewise. * conf/i386-ieee1276.rmk: Likewise. * conf/powerpc-ieee1275.rmk: Likewise. * conf/sparc64-ieee1275.rmk: Likewise. * conf/x86_64-efi.rmk: Likewise. * include/grub/command.h (grub_command_execute): New inline function. * include/grub/menu.h (grub_menu_entry): Removed commands field. * include/grub/normal.h: Remove <grub/setjmp.h>. (grub_fs_module_list): Moved to normal/autofs.c. (grub_exit_env): Removed. (grub_command_execute): Likewise. (grub_normal_menu_addentry): Renamed to grub_menu_addentry, removed parameter script. (read_command_list): New function declaration. (read_fs_list): Likewise. * include/parser.h: Include <grub/reader.h>. (grub_parser_split_cmdline): Change type of getline parameter. (grub_parser): New structure. (grub_parser_class): New variable. (grub_parser_execute): New function declaration. (grub_register_rescue_parser): Likewise. (grub_parser_register): New inline function. (grub_parser_unregister): Likewise. (grub_parser_get_current): Likewise. (grub_parser_set_current): Likewise. * include/grub/reader.h: New file. * kern/reader.c: Likewise. * kern/rescue_parser.c: Likewise. * kern/rescue_reader.c: Likewise. * normal/autofs.c: Likewise. * normal/dyncmd.c: Likewise. * include/grub/rescue.h: Removed. * normal/command.h: Likewise. * include/grub/script.h: Moved to ... * include/grub/script_sh.h: ... Moved here. * normal/execute.c: Moved to ... * script/sh/execute.c: ... Moved here. * normal/function.c: Moved to ... * script/sh/function.c: ... Moved here. * normal/lexer.c: Moved to ... * script/sh/lexer.c: ... Moved here. * normal/parser.y: Moved to ... * script/sh/parser.y: ... Moved here. * normal/script.c: Moved to ... * script/sh/script.c: ... Moved here. * normal/main.c: Remove <grub/rescue.h> and <grub/script.h>, include <grub/reader.h>. (grub_exit_env): Removed. (fs_module_list): Moved to normal/autofs.c. (grub_file_getline): Don't handle comment here. (free_menu): Skip removed field entry->commands. (grub_normal_menu_addentry): Removed as grub_menu_entry, removed script parameter. (read_config_file): Removed nested parameter, change getline function. (grub_enter_normal_mode): Removed. (grub_dyncmd_dispatcher): Moved to normal/dyncmd.c. (read_command_list): Likewise. (autoload_fs_module): Moved to normal/autofs.c. (read_fs_list): Likewise. (reader_nested): New variable. (grub_normal_execute): Run parser.sh to switch to sh parser. (grub_cmd_rescue): Removed. (cmd_normal): Removed. (grub_cmd_normal): Unregister itself at the beginning. Don't register rescue command. (grub_cmdline_run): New function. (grub_normal_reader_init): Likewise. (grub_normal_read_line): Likewise. (grub_env_write_pager): Likewise. (cmdline): New variable. (grub_normal_reader): Likewise. (GRUB_MOD_INIT): Register normal reader and set as current, register pager hook, register normal command with grub_register_command_prio, so that it won't show up in command.lst. (GRUB_MOD_FINI): Unregister normal reader, unhook pager, clear grub_fs_autoload_hook. * normal/menu.c: Remove <grub/script.h>, add <grub/command.h>. (grub_menu_execute_entry): Replace grub_script_execute with grub_parser_execute, change parameter to grub_command_execute. * normal/menu_text.c: Remove <grub/script.h>. * normal/menu_entry.c: Remove <grub/script.h>, add <grub/command.h> and <grub/parser.h>. (run): Change editor_getline to use new parser interface. Change parameter to grub_command_execute. * kern/main.c: Remove <grub/rescue.h>, include <grub/command.h>, <grub/reader.h> and <grub/parser.h>. (grub_load_normal_mode): Execute normal command. (grub_main): Call grub_register_core_commands, grub_register_rescue_parser and grub_register_rescue_reader, use grub_reader_loop to enter input loop. * kern/parser.c (grub_parser_spli_cmdline): Change type of getline parameter. (grub_parser_class): New variable. (grub_parser_execute): New function. * loader/i386/multiboot.c: Remove <grub/rescue.h>. * loader/multiboot2.c: Likewise. * loader/sparc64/ieee1275/linux.c: Likewise. * util/grub-emu.c (read_command_list): New dummy function.
2009-05-02 19:49:34 +00:00
#endif /* ! GRUB_NORMAL_PARSER_HEADER */