2005-03-08 Yoshinori Okuji <okuji@enbug.org>
Automatic loading of commands is supported. * normal/main.c (read_command_list): New function. (grub_normal_execute): Call read_command_list. * normal/command.c (grub_register_command): Return zero or CMD. Allocate CMD->NAME from the heap. Initialize CMD->MODULE_NAME to zero. Find the same name as well. If the same command is found and it is a dummy command, overwrite members. If it is not a dummy command, return zero. (grub_unregister_command): Free Q->NAME and Q->MODULE_NAME. (grub_command_find): If a dummy command is found, load a module and retry to find a command only once. * normal/cmdline.c (grub_tab_complete): Call grub_command_find to make sure that each command is loaded. * include/grub/normal.h (GRUB_COMMAND_FLAG_NOT_LOADED): New macro. (struct grub_command): Remove const from the member `name'. Add a new member `module_name'. (grub_register_command): Return grub_command_t. * commands/help.c (grub_cmd_help): Call grub_command_find to make sure that each command is loaded. * genmk.rb (PModule::rule): Specify a module name without the suffix ".mod" to gencmdlist.sh.
This commit is contained in:
parent
7b1f4b5715
commit
5822ff87a2
9 changed files with 297 additions and 115 deletions
5
genmk.rb
5
genmk.rb
|
@ -1,6 +1,6 @@
|
|||
#! /usr/bin/ruby -w
|
||||
#
|
||||
# Copyright (C) 2002,2003,2004 Free Software Foundation, Inc.
|
||||
# Copyright (C) 2002,2003,2004,2005 Free Software Foundation, Inc.
|
||||
#
|
||||
# This genmk.rb is free software; the author
|
||||
# gives unlimited permission to copy and/or distribute it,
|
||||
|
@ -109,6 +109,7 @@ class PModule
|
|||
defsym = 'def-' + @name.suffix('lst')
|
||||
undsym = 'und-' + @name.suffix('lst')
|
||||
mod_name = File.basename(@name, '.mod')
|
||||
symbolic_name = mod_name.sub(/\.[^\.]*$/, '')
|
||||
|
||||
"CLEANFILES += #{@name} #{mod_obj} #{mod_src} #{pre_obj} #{objs_str} #{defsym} #{undsym}
|
||||
MOSTLYCLEANFILES += #{deps_str}
|
||||
|
@ -162,7 +163,7 @@ COMMANDFILES += #{command}
|
|||
#{command}: #{src} gencmdlist.sh
|
||||
set -e; \
|
||||
$(CC) -I#{dir} -I$(srcdir)/#{dir} $(CPPFLAGS) $(#{flag}) $(#{prefix}_#{flag}) -E $< \
|
||||
| sh $(srcdir)/gencmdlist.sh #{@name} > $@ || (rm -f $@; exit 1)
|
||||
| sh $(srcdir)/gencmdlist.sh #{symbolic_name} > $@ || (rm -f $@; exit 1)
|
||||
|
||||
"
|
||||
end.join('')
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue