feat: (iso9660) directory read support
[lunaix-os.git] / lunaix-os / kernel / fs / iso9660 / utils.c
diff --git a/lunaix-os/kernel/fs/iso9660/utils.c b/lunaix-os/kernel/fs/iso9660/utils.c
new file mode 100644 (file)
index 0000000..748077d
--- /dev/null
@@ -0,0 +1,24 @@
+#include <lunaix/fs/iso9660.h>
+
+struct iso_drecord*
+iso9660_get_drecord(struct iso_var_mdu* drecord_mdu)
+{
+    if (drecord_mdu->len <= sizeof(struct iso_drecord)) {
+        return NULL;
+    }
+    return (struct iso_drecord*)drecord_mdu->content;
+}
+
+#define FOUR_DIGIT(x) (x[0] + x[1] * 10 + x[2] * 100 + x[3] * 1000)
+#define TWO_DIGIT(x) (x[0] + x[1] * 10)
+
+time_t
+iso9660_dt2unix(struct iso_datetime* isodt)
+{
+    return time_tounix(FOUR_DIGIT(isodt->year),
+                       TWO_DIGIT(isodt->month),
+                       TWO_DIGIT(isodt->day),
+                       TWO_DIGIT(isodt->hour),
+                       TWO_DIGIT(isodt->min),
+                       TWO_DIGIT(isodt->sec));
+}