diff options
Diffstat (limited to 'src/file.c')
| -rw-r--r-- | src/file.c | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/src/file.c b/src/file.c new file mode 100644 index 0000000..c6823b9 --- /dev/null +++ b/src/file.c @@ -0,0 +1,23 @@ +#include <errno.h> +#include <string.h> + +#include "file.h" +#include "print.h" + +long +file_size(FILE *const file) +{ + fpos_t p; + + if ((fgetpos(file, &p) != 0) || (fseek(file, 0L, SEEK_END) != 0)) { + return -1; + } + + const long size = ftell(file); + + if (fsetpos(file, &p) != 0) { + return -1; + } + + return size; +} |
