在 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.