无忧启动论坛
标题:
builtin_cmd 等问题,chenall 请进
[打印本页]
作者:
不点
时间:
2015-9-5 17:51
标题:
builtin_cmd 等问题,chenall 请进
int
builtin_cmd (char *cmd, char *arg, int flags)
{
struct builtin *builtin1 = 0;
if (cmd == NULL)
{
return run_line (arg, flags);
}
if (substring(cmd,"exec",1) == 0)
return command_func(arg, flags);
builtin1 = find_command (cmd);
if ((int)builtin1 != -1)
{
if (! builtin1 || ! (builtin1->flags & flags))
{
errnum = ERR_UNRECOGNIZED;
return 0;
}
else
{
return (builtin1->func) (arg, flags);
}
}
else
return command_func (cmd, flags);
}
复制代码
其功能用法,能详细解释一下吗?
最后一条语句,当 cmd 不是内置命令的时候,执行 command_func (cmd, flags),那么这就把 arg 参数扔掉了。这是不是一个 bug?或者是此时就应该忽略 arg 参数?
另外还有个问题一并提出来。我发现当 bios 数据区的软盘个数为 0 的时候,软盘就不可访问了。这是错误的呀。不知究竟是我弄错的,还是谁弄错的,这应该纠正啊。
bios 数据区的软盘个数,只能控制 find 命令要不要查找软盘,不能控制用其他命令访问软盘。
硬盘的情况也一样,硬盘个数只能限制 find 命令的行为,不能去限制其他命令的访问。
比如说,无论软盘个数为 0 或 1, 除了 find 命令之外,其他命令照样可以访问 (fd1)、(fd2)、…… (fd127)。
同样地,无论硬盘个数为 0 或 1, 除了 find 命令之外,其他命令照样可以访问 (hd1)、(hd2)、…… (hd127)。
即使软盘个数为 0, 所有的软盘也都是可以访问的(只不过禁止 find 命令去访问罢了)。
即使硬盘个数为 0, 所有的硬盘也都是可以访问的(只不过禁止 find 命令去访问罢了)。
作者:
chenall
时间:
2015-9-7 10:02
builtin_cmd本来只是用于调用内置命令
1.常规语法如下(这个命令必需是一个有效的并且符号运行条件的内部命令)
builtin_cmd(命令,参数,flags)
2.后面扩展了一下,增加了一个用法,命令为NULL,这时把参数作为一整行的grub4dos命令来执行.
builtin_cmd(NULL,命令,flags)
后面的这些其实是有点多余的,可以直接返回,这个相当于把 cmd作为一个外部命令来执行.
else
return command_func (cmd, flags);
复制代码
欢迎光临 无忧启动论坛 (http://bbs.c3.wuyou.net/)
Powered by Discuz! X3.3