Основы программирования в Linux
Шрифт:
}
}
}
16. Следующая функция — утилита для удаления всех дорожек элемента каталога:
static void del_track_entries(const cdc_entry *entry_to_delete) {
int track_no = 1;
int delete_ok;
display_cdc(entry_to_delete);
if (get_confirm("Delete tracks for this entry? ")) {
do {
delete_ok = del_cdt_entry(entry_to_delete->catalog, track_no);
track_no++;
} while(delete_ok);
}
}
17. Создайте
static cdc_entry find_cat(void) {
cdc_entry item_found;
char tmp_str[TMP_STRING_LEN + 1];
int first_call = 1;
int any_entry_found = 0;
int string ok;
int entry_selected = 0;
do {
string_ok = 1;
printf("Enter string to search for in catalog entry: ");
fgets(tmp_str, TMP_STRING_LEN, stdin);
strip_return(tmp_str);
if (strlen(tmp_str) > CAT_CAT_LEN) {
fprintf(stderr, "Sorry, string too long, maximum %d \
characters\n", CAT_CAT_LEN);
string_ok = 0;
}
} while (!string_ok);
while (!entry_selected) {
item_found = search_cdc_entry(tmp_str, &firstcall);
if (item_found.catalog[0] != '\0') {
any_entry_found = 1;
printf("\n");
display_cdc(&item_found);
if (get_confirm("This entry? ")) {
entry_selected = 1;
}
} else {
if (any_entry_found) printf("Sorry, no more matches found\n");
else printf("Sorry, nothing found\n");
break;
}
}
return(item_found);
}
18. Функция
list_tracks
— утилита, которая выводит все дорожки для заданного элемента каталога:
static void list_tracks(const cdc_entry *entry_to_use) {
int track_no = 1;
cdt_entry entry_found;
display_cdc(entry_to_use);
printf("\nTracks\n");
do {
entry_found = get_cdt_entry(entry_to_use->catalog, track_no);
if (entry_found.catalog[0]) {
display_cdt(&entry_found);
track_no++;
}
} while(entry_found.catalog[0]);
(void)get_confirm("Press return");
} /* list_tracks */
19. Функция
count_all_entries
static void count_all_entries(void) {
int cd_entries_found = 0;
int track_entries_found = 0;
cdc_entry cdc_found;
cdt_entry cdt_found;
int track_no = 1;
int first_time = 1;
char *search_string = "";
do {
cdc_found = search_cdc_entry(search_string, &first_time);
if (cdc_found.catalog[0]) {
cd_entries_found++;
track_no = 1;
do {
cdt_found = get_cdt_entry(cdc_found.catalog, track_no);
if (cdt_found.catalog[0]) {
track_entries_found++;
track_no++;
}
} while (cdt_found.catalog[0]);
}
} while (cdc_found.catalog[0]);
printf("Found %d CDs, with a total of %d tracks\n",
cd_entries_found, track_entries_found);
(void)get_confirm("Press return");
}
20. Теперь у вас есть утилита
display_cdc
для вывода элемента каталога:
static void display_cdc(const cdc_entry *cdc_to_show) {
printf("Catalog: %s\n", cdc_to_show->catalog);
printf("\ttitle: %s\n", cdc_to_show->title);
printf("\ttype: %s\n", cdc_to_show->type);
printf("\tartist: %s\n", cdc_to_show->artist);
Поделиться:
Популярные книги
Страж Кодекса. Книга III
3. КО: Страж Кодекса
Фантастика:
фэнтези
попаданцы
5.00
рейтинг книги
Точка Бифуркации IX
9. ТБ
Фантастика:
попаданцы
аниме
фэнтези
5.00
рейтинг книги
Пушкарь. Пенталогия
Фантастика:
альтернативная история
8.11
рейтинг книги
В лапах зверя
1. Звериные повадки Симоновых
Любовные романы:
остросюжетные любовные романы
эро литература
5.00
рейтинг книги
Я – Легенда
1. Я - Легенда!
Фантастика:
боевая фантастика
попаданцы
рпг
фантастика: прочее
5.00
рейтинг книги
Афганский рубеж 3
3. Рубеж
Фантастика:
попаданцы
альтернативная история
6.00
рейтинг книги
Горизонт Вечности
11. Фронтир
Фантастика:
боевая фантастика
космическая фантастика
космоопера
5.00
рейтинг книги
#Бояръ-Аниме. Газлайтер. Том 37
37. История Телепата
Фантастика:
фэнтези
аниме
боевая фантастика
5.00
рейтинг книги
Я Гордый часть 5
5. Стальные яйца
Фантастика:
городское фэнтези
попаданцы
альтернативная история
аниме
5.00
рейтинг книги
Стражи душ
4. Артефактор
Фантастика:
городское фэнтези
попаданцы
аниме
5.00
рейтинг книги
По осколкам твоего сердца
2. Хулиган и новенькая
Любовные романы:
современные любовные романы
5.56
рейтинг книги
Прайм. Хомори
2. Легенда
Фантастика:
боевая фантастика
рпг
5.00
рейтинг книги
Живое проклятье
3. Жизнь Лекаря с нуля
Фантастика:
попаданцы
альтернативная история
аниме
фэнтези
фантастика: прочее
5.00
рейтинг книги
Я еще не князь. Книга XIV
14. Дорогой барон!
Фантастика:
юмористическое фэнтези
попаданцы
аниме
5.00