我正在尝试修改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 linen");
FILE *fp;
第157行(应该打印文件名的行):
fprintf(stdout, "%sn", *argv);
filename = *argv++;
问题在于重新编译(make build
中的CC_6),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
实际上已经改变了,因为我得到了"新行"行以及" .EXRC"行(看起来我应该将其放入if
条件中,但无论如何),但是-H
尚未识别。
我做错了什么?我实际上需要做什么才能添加新标志?预先感谢。
由于Minix中的cat
使用getopt
,您还需要在getopt
调用中添加新选项(列出所有可能的选项)。
您提供的代码没有这样做。您还可以咨询man getopt
。