This shows you the differences between two versions of the page.
programare:teme_2014:tema5 [2013/12/26 18:50] laura.vasilescu [Comenzi de intrare] |
programare:teme_2014:tema5 [2014/01/10 21:49] (current) laura.vasilescu [Trimitere temă] |
||
---|---|---|---|
Line 8: | Line 8: | ||
**Deadline (hard):** joi, 16 ianuarie, ora 23:55 | **Deadline (hard):** joi, 16 ianuarie, ora 23:55 | ||
+ | |||
+ | ** checker: ** [[http://lauravasilescu.ro/5-tar.zip|http://lauravasilescu.ro/5-tar.zip]] [05.01.2014, ora 21:00] | ||
====== Obiective ====== | ====== Obiective ====== | ||
Line 72: | Line 74: | ||
În urma acestei comenzi trebuie să se obțină o arhivă cu numele cerut, care să conțină toate fişierele (fără directoare) enumerate în ''file_ls''. | În urma acestei comenzi trebuie să se obțină o arhivă cu numele cerut, care să conțină toate fişierele (fără directoare) enumerate în ''file_ls''. | ||
== list archivename == | == list archivename == | ||
- | Comanda va lista în consolă numele fișierelor din arhivă. | + | Comanda va lista în consolă numele fișierelor din arhivă. Câte unul pe linie. |
== get archivename filename == | == get archivename filename == | ||
Line 81: | Line 83: | ||
== quit == | == quit == | ||
Închide programul. | Închide programul. | ||
+ | ===== Formatul arhivei tar ===== | ||
+ | |||
+ | Mai multe detalii găsiți [[http://www.mksxserver.com/docs/man4/tar.4.asp|aici]]. | ||
+ | Practica, structura header-ului ar trebui să fie ceva de genul: | ||
+ | <code> | ||
+ | union record { | ||
+ | char charptr[512]; | ||
+ | struct header { | ||
+ | char name[100]; | ||
+ | char mode[8]; | ||
+ | char uid[8]; | ||
+ | char gid[8]; | ||
+ | char size[12]; | ||
+ | char mtime[12]; | ||
+ | char chksum[8]; | ||
+ | char typeflag; | ||
+ | char linkname[100]; | ||
+ | char magic[8]; | ||
+ | char uname[32]; | ||
+ | char gname[32]; | ||
+ | char devmajor[8]; | ||
+ | char devminor[8]; | ||
+ | } header; | ||
+ | }; | ||
+ | </code> | ||
+ | |||
+ | Câmpurile **name**, **mode**, **uid**, **gid**, **size**, **mtime**, **uname**, **gname** vor fi determinate din fișierele ''usermap.txt'' și/sau ''file_ls''. | ||
+ | |||
+ | **chksum** se compltează făcând suma între toți octeții ce alcătuiesc headerul. | ||
+ | |||
+ | **typeflag** va fi 0. | ||
+ | |||
+ | **linkname** reprezintă numele fișierului. | ||
+ | |||
+ | **magic** o să fie string-ul "GNUtar " (atenție, e un spațiu la final!) | ||
+ | |||
+ | **devmajor** și **devminor** o să fie 0. | ||
+ | |||
+ | <note> | ||
+ | Toate valorile trebuie să fie în **octal**. Vedeți în documentație. | ||
+ | </note> | ||
+ | |||
+ | ===== Trimitere temă ===== | ||
+ | |||
+ | |||
+ | |||
+ | * Tema va fi trimisă atât pe [[https://elf.cs.pub.ro/vmchecker/|vmchecker]] cât și pe [[http://cs.curs.pub.ro|moodle]], sub forma unei arhive ZIP. | ||
+ | * Arhiva va trebui să conţină ''în directorul rădăcină'' doar următoarele: | ||
+ | * Codul sursă al programului vostru (fişierele ''.c'' şi eventual ''.h''). | ||
+ | * Un fişier ''Makefile'' care să conţină regulile ''build'' şi ''clean''. Regula ''build'' va compila programul într-un executabil cu numele **''my_tar''**. Regula ''clean'' va şterge executabilul şi eventual toate binarele intermediare (fişiere obiect) generate de voi. | ||
+ | * Un fişier ''README'' care să conţină prezentarea implementării alese de voi. | ||
+ | * O temă care nu compilează nu va primi nici un punct. | ||
+ | * Criteriile de notare sunt următoarele: | ||
+ | * **''90 puncte''** - testele automate din arhiva de testare. | ||
+ | * **''10 puncte''** - calitatea şi eficienţa implementării, explicaţiile din README şi aspectul codului sursă. | ||
+ |