|
- 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 命令去访问罢了)。
|
|