无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站投放广告、加入VIP会员,请联系 微信:wuyouceo
查看: 2545|回复: 1
打印 上一主题 下一主题

builtin_cmd 等问题,chenall 请进

[复制链接]
跳转到指定楼层
1#
发表于 2015-9-5 17:51:21 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

  1. int
  2. builtin_cmd (char *cmd, char *arg, int flags)
  3. {
  4.         struct builtin *builtin1 = 0;

  5.         if (cmd == NULL)
  6.         {
  7.                 return run_line (arg, flags);
  8.         }

  9.         if (substring(cmd,"exec",1) == 0)
  10.                 return command_func(arg, flags);

  11.         builtin1 = find_command (cmd);

  12.         if ((int)builtin1 != -1)
  13.         {
  14.                 if (! builtin1 || ! (builtin1->flags & flags))
  15.                 {
  16.                         errnum = ERR_UNRECOGNIZED;
  17.                         return 0;
  18.                 }
  19.                 else
  20.                 {
  21.                         return (builtin1->func) (arg, flags);
  22.                 }
  23.         }
  24.         else
  25.                 return command_func (cmd, flags);
  26. }
复制代码


其功能用法,能详细解释一下吗?

最后一条语句,当 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 命令去访问罢了)。



2#
发表于 2015-9-7 10:02:45 | 只看该作者
builtin_cmd本来只是用于调用内置命令

1.常规语法如下(这个命令必需是一个有效的并且符号运行条件的内部命令)
builtin_cmd(命令,参数,flags)

2.后面扩展了一下,增加了一个用法,命令为NULL,这时把参数作为一整行的grub4dos命令来执行.
builtin_cmd(NULL,命令,flags)

后面的这些其实是有点多余的,可以直接返回,这个相当于把 cmd作为一个外部命令来执行.
  1. else
  2.                 return command_func (cmd, flags);
复制代码
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|捐助支持|无忧启动 ( 闽ICP备05002490号-1 )

闽公网安备 35020302032614号

GMT+8, 2024-11-16 12:00

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表