88 lines
No EOL
1.6 KiB
C
88 lines
No EOL
1.6 KiB
C
#include "helpers.h"
|
|
#include <string.h>
|
|
#include <stdlib.h>
|
|
|
|
char *readFileC(const char *filename){
|
|
//open file
|
|
FILE *fp = fopen(filename, "r+");
|
|
|
|
if(!fp) return NULL;
|
|
|
|
//go to end and get length
|
|
fseek(fp, 0, SEEK_END);
|
|
long len = ftell(fp);
|
|
|
|
//allocate enough memory for the string on the heap
|
|
char *ret = (char*)malloc(len);
|
|
|
|
//go back to the beginning and read everything to the string
|
|
fseek(fp, 0, SEEK_SET);
|
|
fread(ret, 1, len, fp);
|
|
|
|
//close the stream
|
|
fclose(fp);
|
|
|
|
return ret;
|
|
}
|
|
|
|
|
|
sizedData readFileR(const char *filename){
|
|
sizedData ret = {NULL,0};
|
|
|
|
//open file
|
|
FILE *fp = fopen(filename, "r+");
|
|
if(!fp) return ret;
|
|
|
|
//go to end and get length
|
|
fseek(fp, 0, SEEK_END);
|
|
long len = ftell(fp);
|
|
|
|
//allocate enough memory for the data on the heap
|
|
ret.data = malloc(len);
|
|
|
|
//go back to the beginning and read everything
|
|
fseek(fp, 0, SEEK_SET);
|
|
fread(ret.data, 1, len, fp);
|
|
|
|
//set length of data
|
|
ret.length=len;
|
|
|
|
//close the stream
|
|
fclose(fp);
|
|
|
|
return ret;
|
|
}
|
|
|
|
int writeFileC(const char *filename, char *data){
|
|
//open file
|
|
FILE *fp = fopen(filename, "w+");
|
|
if(!fp) return -1;
|
|
|
|
//write the data
|
|
fwrite(data, sizeof(char), strlen(data), fp);
|
|
|
|
//close the stream
|
|
fclose(fp);
|
|
|
|
return 0;
|
|
}
|
|
|
|
|
|
int writeFileR(const char *filename, sizedData data){
|
|
//open file
|
|
FILE *fp = fopen(filename, "w+");
|
|
if(!fp) return -1;
|
|
|
|
//write the data
|
|
fwrite(data.data, 1, data.length, fp);
|
|
|
|
//close the stream
|
|
fclose(fp);
|
|
|
|
return 0;
|
|
}
|
|
|
|
void crash(char *reason){
|
|
PRINTE(reason);
|
|
exit(EXIT_FAILURE);
|
|
} |