c - 在MINIX中为CAT命令添加自定义标志
问题描述
我正在尝试修改cat
MINIX 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 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
实际上已经改变了,因为我得到了“新行”行和“.exrc”行(看起来我应该把它放在里面if
,但无论如何),但-H
未被识别。
我做错了什么?我实际上需要做什么才能添加新标志?提前致谢。
解决方案
由于cat
在 Minix 中使用getopt
,您还需要在getopt
call 中添加一个新选项(列出所有可能的选项)。
您提供的代码不会这样做。你也可以咨询man getopt
。
推荐阅读
- java - 如何获得毫秒到小时、分钟、秒和剩余毫秒
- javascript - 对 className 风格技术做出反应的最佳实践
- reactjs - React 创建一个可重用的 Modal
- json - 你如何在 Golang 中修改这个结构来接受两个不同的结果?
- javascript - 如何在 javascript 中的数字字符串之间放置分隔符,例如我有 123456,我想要 123,456 或 1000000 到 1,000,000
- android - 无法在布局 xml 中添加卡片视图
- postgresql - 如何在 SQL/PostgreSQL 中显示分数?
- r - 在ggplot中过滤多年的月份
- python - 当我在odoo 12中调用操作按钮时如何保持向导在后台打开
- git - 使用一个命令动态创建 .gitmodules 并克隆/拉取所有存储库