Код по идее просто должен читать текст с файла и записывать в указатель, но от куда то вылетает ошибка сегментирования. Нервно деру волосы на голове, не знаю что делать. Исходники:
#include <stdio.h>
#include <string.h>
#include <sys/types.h> 
#include <sys/stat.h>
#include <fcntl.h>
#include <errno.h>
#include <stdarg.h>
#include <stdlib.h>
#include <unistd.h>
#define MAXLINE 256
static void err_doit(int errnoflag, int error, const char *fmt, va_list ap){
	char buf[MAXLINE];
	vsnprintf(buf, MAXLINE, fmt, ap);
	if(errnoflag)
		snprintf(buf+strlen(buf), MAXLINE-strlen(buf), ": %s", strerror(error));
	strcat(buf, "\n");
	fflush(stdout);
	fputs(buf, stderr);
	fflush(NULL);
}
void err_sys(const char *fmt, ...){
	va_list ap;
	
	va_start(ap, fmt);
	err_doit(1, errno, fmt, ap);
	va_end(ap);
	exit(1);
}
char* read_kode(const char *arg){
	int fd;
	ssize_t stat;
        size_t buf_sz = 0;
	char *kode = NULL;
	char buf[MAXLINE];
	
	if((fd = open(arg, O_RDONLY)) < 0)
		err_sys("Can't open file %s", arg);
	
	while((stat = read(fd, buf, MAXLINE)) > 0){
                kode = realloc(kode, buf_sz + stat + 1);
		if(kode == NULL)
			err_sys("Memory exchausted");
		memcpy(kode + buf_sz, buf, stat);
		kode[buf_sz += stat] = '\0';
			
	}
	if(stat==-1)
		err_sys("Read error");
	
	close(fd);
	return kode;
}
int main(int argc, char **argv){
	char *str = read_kode(argv[1]);
	printf("%s", str);
	exit(0);
}
err_doit и err_sys рабочие, проверял неоднократно. Используются просто для вывода ошибок и выхода с программы.






