Tento projekt obsahuje základnú štruktúru zadania Copymaster.
Zdrojové súbory z tohoto projektu môžete použiť vo svojich zadaniach.
Aktuálne sa projekt skladá z dvoch modulov:
- copymaster (
copymaster.c) - Hlavný modul, ktorý obsahuje funkciumain() - options (
options.c,options.h) - Spracovanie parametrov príkazového riadku (prepínačov)
Funkcia ParseCopymaterOptions() je zodpovedná za spracovanie parameterov príkazového riadku.
Typ návratovej hodnoty tejto funkcie je struct CopymasterOptions.
Táto štruktúra obsahuje členské premenné, ktoré reprezentujú jednotlivé prepínače programu v predspracovanej podobe.
Spôsob práce s týmito členskými premennými je demonštrovaný vo funkcii main() v súbore copymaster.c.
Pre kontrolu, či v parametroch príkazového riadku je nastavený prepínač, použite členskú premennú, ktorá má názov identický s názvom prepínača v zadaní úlohy.
Výnimkou je prepínač --delete (v krátkej forme -d), ktorý je asociovaný s členskou premennou delete_opt.
Prepínače, ktoré majú aj nejakú vstupnú hodnotu (--create, --lseek, --chmod, --umask, --truncate), majú v štruktúre CopymasterOptions asociovanú dodatočnú členskú premennú.
Použitie týchto premenných by malo byť ľahko pochopiteľné.
Mále nejasnoti môžu byť pri členskej premennej umask_options.
Premenná je dvojrozmerné pole 10x4 znakov.
Toto pole je možné porozumieť ako zoznam nastavení z príkazového riadku.
Každá položka prvej dimenzie poľa je platný reťazec v jazyku C, teda štvrtý bajt reťazca je \0.
Očakáva sa, že prepínač --umask môže mať maximálne 9 rôznych nastavení (3 typy používateľov - u,g,o, 3 typy práv - r, w, x).
Ak je prvý bajt nastavenia 0, znamená to koniec zoznamu nastavení a už nie je ďalej potrebné prechádzať položkami poľa umask_options.