/* * Output contents of a file. * * Compile this file with Visual Studio and run the produced command in * console with a file name argument. For example, command * * cat include\dirent.h * * will output the dirent.h to screen. * * Copyright (C) 1998-2019 Toni Ronkko * This file is part of dirent. Dirent may be freely distributed * under the MIT license. For all details and documentation, see * https://github.com/tronkko/dirent */ #define _CRT_SECURE_NO_WARNINGS #include #include #include #include #include #include static void output_file (const char *fn); int main( int argc, char *argv[]) { int i; /* Select default locale */ setlocale (LC_ALL, ""); /* Require at least one file */ if (argc == 1) { fprintf (stderr, "Usage: cat filename\n"); return EXIT_FAILURE; } /* For each file name argument in command line */ i = 1; while (i < argc) { output_file (argv[i]); i++; } return EXIT_SUCCESS; } /* * Output file to screen */ static void output_file( const char *fn) { FILE *fp; /* Open file */ fp = fopen (fn, "r"); if (fp != NULL) { size_t n; char buffer[4096]; /* Output file to screen */ do { /* Read some bytes from file */ n = fread (buffer, 1, 4096, fp); /* Output bytes to screen */ fwrite (buffer, 1, n, stdout); } while (n != 0); /* Close file */ fclose (fp); } else { /* Could not open directory */ fprintf (stderr, "Cannot open %s (%s)\n", fn, strerror (errno)); exit (EXIT_FAILURE); } }