#include #include #include #include #include "util/map.h" #include "util/versie.h" static void usage(FILE *f) { fprintf(f, "Gebruik: kat [-hV] \n" "\n" "Schakel bestanden aaneen naar standaard uitvoer.\n" "\n" " -h Toon deze hulptekst\n" " -V Toon versienummer\n"); } // Returns pointer to argument array containing the file names static char** parse_options(int argc, char **argv) { int opt; while ((opt = getopt(argc, argv, "hV")) != -1) { switch (opt) { case 'h': usage(stdout); exit(0); case 'V': drukkedoos_print_versie(stdout, "kat"); exit(0); case '?': usage(stderr); exit(1); } } return argv + optind; } static void process(const char *fname) { struct map *map = open_map(fname); if (map == NULL) { exit(1); } if (map->sb.st_size >= 0) { for (size_t i = 0; i < (size_t)map->sb.st_size; i++) { putchar(map->addr[i]); } } close_map(map); } int entry_kat(int argc, char **argv) { char **args = parse_options(argc, argv); if (*args == NULL) { fprintf(stderr, "kat: Standaard invoer niet ondersteund in deze projectie-gebaseerde implementatie\n"); return 1; } else { while (*args != NULL) { process(*args); args++; } } return 0; }