Logo

Programming-Idioms

This language bar is your friend. Select your favorite languages!
  • Lua

Idiom #58 Extract file content to a string

Create the string lines from the content of the file with filename f.

lines = io.input(f):read('a')
#include <sys/mman.h>
#include <sys/stat.h>
#include <fcntl.h>
int err = 0;
int fd = 0;
void * ptr = NULL;
struct stat st;
if ((fd = open (f, O_RDONLY))
&& (err = fstat (fd, &st)) == 0
&& (ptr = mmap (NULL, st.st_size, PROT_READ, MAP_PRIVATE, fd, 0)) != -1) {
    const char * lines = ptr;
    puts (lines);
    munmap (ptr, st.st_size);
    close (fd);
}

Mapping the whole file into the process address space avoids allocating memory.

New implementation...
< >
programming-idioms.org