aboutsummaryrefslogtreecommitdiff
path: root/src/storage/image-manager/exif.zig
diff options
context:
space:
mode:
authorNathan Reiner <nathan@nathanreiner.xyz>2026-05-20 10:16:50 +0200
committerNathan Reiner <nathan@nathanreiner.xyz>2026-05-20 10:16:50 +0200
commit44445734ba4a0f05564f808c2fd34a7f23c6fafb (patch)
tree3bd22add718620cbf931286f55137bcc666100be /src/storage/image-manager/exif.zig
parent95ae9f15e1db335a7f8358d811ea37e2c89dd10f (diff)
Let's do a rewrite!
Created project structure and changed `build.zig` and added licence.
Diffstat (limited to 'src/storage/image-manager/exif.zig')
-rw-r--r--src/storage/image-manager/exif.zig57
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;
-}