summaryrefslogtreecommitdiffstatshomepage
path: root/src/tools/imgtool/modules/amiga.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/tools/imgtool/modules/amiga.cpp')
-rw-r--r--src/tools/imgtool/modules/amiga.cpp31
1 files changed, 14 insertions, 17 deletions
diff --git a/src/tools/imgtool/modules/amiga.cpp b/src/tools/imgtool/modules/amiga.cpp
index 7a7a3572320..c1c5563012e 100644
--- a/src/tools/imgtool/modules/amiga.cpp
+++ b/src/tools/imgtool/modules/amiga.cpp
@@ -2,7 +2,7 @@
// copyright-holders:Dirk Best
/****************************************************************************
- amiga.c
+ amiga.cpp
Amiga floppies
@@ -290,15 +290,11 @@ static int is_leap(int year)
/* Convert amiga time to standard time */
-static time_t amiga_crack_time(amiga_date *date)
+static imgtool::datetime amiga_crack_time(amiga_date *date)
{
int month_days[12] = { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };
int year = 1978, month = 1, year_days = 365; /* base date */
int day = date->days;
- struct tm t;
-
- /* initialize struct */
- memset(&t, 0, sizeof(t));
/* first calculate the year */
while (day >= year_days)
@@ -316,15 +312,16 @@ static time_t amiga_crack_time(amiga_date *date)
month++;
}
- /* fill the struct with our calculated values */
- t.tm_year = year - 1900;
- t.tm_mon = month - 1;
- t.tm_mday = day + 1;
- t.tm_hour = date->mins / 60;
- t.tm_min = date->mins % 60;
- t.tm_sec = date->ticks / 50;
+ // fill the struct with our calculated values
+ util::arbitrary_datetime dt;
+ dt.year = year;
+ dt.month = month;
+ dt.day_of_month = day;
+ dt.hour = date->mins / 60;
+ dt.minute = date->mins % 60;
+ dt.second = date->ticks / 50;
- return mktime(&t);
+ return imgtool::datetime(imgtool::datetime::datetime_type::LOCAL, dt);
}
@@ -1785,9 +1782,9 @@ static void amiga_image_info(imgtool::image &img, std::ostream &stream)
ret = read_root_block(img, &root);
if (ret) return;
- t_c = amiga_crack_time(&root.c);
- t_v = amiga_crack_time(&root.v);
- t_r = amiga_crack_time(&root.r);
+ t_c = amiga_crack_time(&root.c).to_time_t();
+ t_v = amiga_crack_time(&root.v).to_time_t();
+ t_r = amiga_crack_time(&root.r).to_time_t();
strftime(c, sizeof(c), "%d-%b-%y %H:%M:%S", localtime(&t_c));
strftime(v, sizeof(v), "%d-%b-%y %H:%M:%S", localtime(&t_v));