Я пытаюсь изменить команду 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
в /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
не распознается.
Что я сделал не так? Что мне на самом деле нужно сделать, чтобы добавить новый флаг? Заранее спасибо.