#define _POSIX_C_SOURCE 200809L #include /* assert */ #include /* Napište podprogram ‹sort_file›, který seřadí pevně velké záznamy * v zadaném souboru, podle zadaného klíče. Soubor je obyčejný * soubor – není-li možné ho namapovat do paměti, můžete to * považovat za fatální chybu. * * Parametry: * * • ‹fd› – popisovač souboru který chceme seřadit, * • ‹rec_len› – velikost záznamu, * • ‹key_off› – offset řadicího klíče od začátku záznamu, * • ‹key_len› – počet bajtů klíče. * * Pozor, jak záznam tak klíč mohou být velmi velké – mimo mapovaný * soubor nemusí být možné je uložit jako celek. Zároveň požadujeme, * aby byl podprogram «reentrantní» – tzn. aby bylo možné jej volat * (na různé soubory) z více souběžných vláken. Zejména to znamená, * že nesmí používat globální proměnné. Řadicí algoritmus může být * kvadratický. * * Nápověda: implementujte si pomocné podprogramy ‹compare› a ‹swap› * (pro celé záznamy) a řazení proveďte algoritmem select sort. */ int sort_file( int fd, int rec_len, int key_off, int key_len ); /* ┄┄┄┄┄┄┄ %< ┄┄┄┄┄┄┄┄┄┄ následují testy ┄┄┄┄┄┄┄┄┄┄ %< ┄┄┄┄┄┄┄ */ #include /* err, warn, warnx */ int main( void ) { return 0; }