5. Добавьте к своей версии touch
6. Усовершенствуйте ch06-sortemp.c
7. Добавьте к ch06-sortdir.c
8. Напишите простую версию команды chown
chown пользователь[:группа] файлы ...
Здесь
root. Делайте это осторожно!9. Усовершенствуйте свою chown
10. Напишите функции для копирования структур пользователя и группы, включая указываемые данные. Для выделения памяти используйте при необходимости malloc()
11. Напишите специализированную библиотеку поиска пользователей, которая считывает в динамически выделяемый массив всю базу данных пользователей. Предусмотрите
12. Сделайте то же самое для базы данных групп.
13. Напишите программу stat
struct stat для каждого файла, указанного в командной строке. Она должна выводить все значения в формате, удобном для восприятия человеком: значения time_t в виде дат и времени, значения uid_t и gid_t в виде соответствующих имен (если они доступны), а также содержимое символических ссылок. Выведите поле st_mode таким же образом, как вывела бы ls.Сравните свою программу с программой stat
Глава 7
Соединяя все вместе: ls
Команда V7 ls
7.1. Опции V7 ls
По сравнению с современными версиями ls
ls принимает лишь небольшое количество опций, а значение некоторых из них для V7 отличается от значения для современной ls. Эти опции следующие:-а
.' и '..' не выводятся. Довольно интересно, V7 игнорирует лишь '.' и '..', тогда как с V1 по V6 игнорируется любой файл, имя которого начинается с точки. Это последнее является также поведением по умолчанию и для современных версий ls.-n
-t или -l время изменения индекса.-d
-f
-l, -r, -s, -t и включает -а. (Эта опция, очевидно, существует для отладки и исправления файловой системы.)-g
ls -l' использует вместо имени пользователя имя группы.-i
-l
ls -l' выводила лишь имя владельца, а не имена владельца и группы вместе.-r
-s
-t
-u
-t и/или -l использует время доступа вместо времени модификации. Наибольшие различия между V7 ls и современной ls затрагивают опцию -а и опцию -l. Современные системы опускают все файлы с точками, если не указана -а, и они включают в длинный листинг -l имена и владельца, и группы. На современных системах -g означает вывод лишь имени группы, а -o означает вывод лишь имени владельца. Стоит заметить, что у GNU ls свыше 50 опций!7.2. Код V7 ls
Файл /usr/src/cmd/ls.c
1 /*