首页 > 解决方案 > 在MINIX中为CAT命令添加自定义标志

问题描述

我正在尝试修改catMINIX 3.2.1 中的命令,但遇到了一些问题。我想添加-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 buildin /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实际上已经改变了,因为我得到了“新行”行和“.exrc”行(看起来我应该把它放在里面if,但无论如何),但-H未被识别。

我做错了什么?我实际上需要做什么才能添加新标志?提前致谢。

标签: cminix

解决方案


由于cat在 Minix 中使用getopt,您还需要在getoptcall 中添加一个新选项(列出所有可能的选项)。

您提供的代码不会这样做。你也可以咨询man getopt


推荐阅读