README.md 1.99 KB
Newer Older
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
# Operačné systémy 2018 - Copymaster

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 funkciu `main()`
 - **options** (`options.c`, `options.h`) - Spracovanie parametrov príkazového riadku (prepínačov)
 
## Spracovanie parametrov
 
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`.

Michal Vrabel's avatar
Michal Vrabel committed
21
Prepínače, ktoré majú aj nejakú vstupnú hodnotu (`--create`, `--lseek`, `--chmod`, `--umask`, `--truncate`), majú v štruktúre `CopymasterOptions` asociovanú dodatočnú členskú premennú. 
22
23
24
25
26
27
28
29
30
31
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`.