diff options
Diffstat (limited to 'src/storage/image-manager/exif.zig')
| -rw-r--r-- | src/storage/image-manager/exif.zig | 57 |
1 files changed, 0 insertions, 57 deletions
diff --git a/src/storage/image-manager/exif.zig b/src/storage/image-manager/exif.zig deleted file mode 100644 index 88e9b48..0000000 --- a/src/storage/image-manager/exif.zig +++ /dev/null @@ -1,57 +0,0 @@ -const std = @import("std"); -const exif = @cImport(@cInclude("libexif/exif-data.h")); -const cstd = @cImport(@cInclude("time.h")); - -const tags = [_]c_uint { - exif.EXIF_TAG_DATE_TIME, - exif.EXIF_TAG_DATE_TIME_ORIGINAL, - exif.EXIF_TAG_DATE_TIME_DIGITIZED, -}; - -pub fn get_date_time(path: [*:0]const u8) ?i64 { - const exif_data = exif.exif_data_new_from_file(path); - defer exif.exif_data_unref(exif_data); - - if (exif_data == 0) { - return null; - } - - var entry: ?[*c]exif.struct__ExifEntry = null; - for (0..exif.EXIF_IFD_COUNT) |index| { - for (tags) |tag| { - entry = exif.exif_content_get_entry((exif_data.*).ifd[index], tag); - - if (entry) |_| { break; } - } - - if (entry) |_| { break; } - } - - if (entry == 0) { - return null; - } - - if (entry) |e| { - const c_data = (e.*).data; - return parse_date(c_data); - } - - return null; -} - -extern fn strptime( - s: [*c]const u8, - format: [*c]const u8, - tm: *cstd.tm, -) ?*const u8; - -extern fn mktime(tm: *cstd.tm) i64; - -fn parse_date(date: [*:0]const u8) ?i64 { - var tm: cstd.tm = std.mem.zeroes(cstd.tm); - if (strptime(date, "%Y:%m:%d %H:%M:%S", &tm)) |_| { - return mktime(&tm); - } - - return null; -} |