FILE* fp;
int fd;
off_t file_size;
char *buffer;
struct stat st;
fd = open("foo.bin", O_RDONLY);
if (fd == -1) {
/* Handle Error */
}
fp = fdopen(fd, "r");
if (fp == NULL) {
/* Handle Error */
}
/* Ensure that the file is a regular file */
if ((fstat(fd, &st) != 0) || (!S_ISREG(st.st_mode))) {
/* Handle Error */
}
if (fseeko(fp, 0 , SEEK_END) != 0) {
/* Handle Error */
}
file_size = ftello(fp);
if (file_size == -1) {
/* Handle Error */
}
buffer = (char*)malloc(file_size);
if (buffer == NULL) {
/* Handle Error */
}
/* ... */ |