在 MINIX 中为 CAT 命令添加自定义标志
Adding custom flag to CAT command in MINIX
我正在尝试修改 MINIX 3.2.1 中的 cat
命令,但遇到了一些问题。我想添加 -H
标志,以便在使用时在其内容之前打印文件名。我在 cat.c 中添加了一些代码(参考原始行数):
第 64 行(Hflag
变量):
int Hflag, bflag, eflag, fflag, lflag, nflag, sflag, tflag, vflag;
第 85 行('H' 案例):
case 'H':
Hflag = 1;
break;
case 'b':
第130行(Hflag参数):
if (Hflag || bflag || eflag || nflag || sflag || tflag || vflag)
第 142 行(添加 fprintf
以确保确实将 cat.c
添加到重新编译的 MINIX 中):
fprintf(stdout, "new line\n");
FILE *fp;
第 157 行(应打印文件名的行):
fprintf(stdout, "%s\n", *argv);
filename = *argv++;
问题是在重新编译后(make build
in /usr/src
),cat
似乎无法识别新的 -H
标志。如果我输入
# cat -H .exrc
我明白了
cat: unknown option -- H
但是,如果我输入
# cat -b .exrc
I get
new line
.exrc
1 set autoindent autowrite report=2 showmatch
所以 cat
实际上已经改变了,因为我得到 "new line" 行以及“.exrc”行(看起来我应该把它放在 if
条件下,但无论如何), 但 -H
未被识别。
我做错了什么?我实际上需要做什么才能添加新标志?提前致谢。
由于 Minix 中的 cat
使用 getopt
,您还需要在 getopt
调用中添加一个新选项(其中列出了所有可能的选项)。
您提供的代码无法执行此操作。您也可以参考 man getopt
.