Skip to content
This repository was archived by the owner on Mar 31, 2019. It is now read-only.

Commit 276814c

Browse files
authored
Merge pull request #8 from DrLex0/day_offset_prefs_item
Add prefs item "dayofs" for finer-grained time offset
2 parents 0aa4e08 + 812dc28 commit 276814c

File tree

2 files changed

+6
-1
lines changed

2 files changed

+6
-1
lines changed

SheepShaver/src/macos_util.cpp

+5-1
Original file line numberDiff line numberDiff line change
@@ -335,6 +335,7 @@ uint32 TimeToMacTime(time_t t)
335335
#endif
336336
const int TM_EPOCH_YEAR = 1900;
337337
const int MAC_EPOCH_YEAR = 1904;
338+
// Clip year and day offsets to prevent dates earlier than 1-Jan-1904
338339
local->tm_year = std::max(MAC_EPOCH_YEAR - TM_EPOCH_YEAR, local->tm_year - PrefsFindInt32("yearofs"));
339340
int a4 = ((local->tm_year + TM_EPOCH_YEAR) >> 2) - !(local->tm_year & 3);
340341
int b4 = (MAC_EPOCH_YEAR >> 2) - !(MAC_EPOCH_YEAR & 3);
@@ -344,7 +345,10 @@ uint32 TimeToMacTime(time_t t)
344345
int b400 = b100 >> 2;
345346
int intervening_leap_days = (a4 - b4) - (a100 - b100) + (a400 - b400);
346347
uint32 days = local->tm_yday + 365 * (local->tm_year - 4) + intervening_leap_days;
347-
return local->tm_sec + 60 * (local->tm_min + 60 * (local->tm_hour + 24 * days));
348+
int32 dayofs = PrefsFindInt32("dayofs");
349+
if(dayofs > 0 && dayofs > days)
350+
dayofs = days;
351+
return local->tm_sec + 60 * (local->tm_min + 60 * (local->tm_hour + 24 * (days - dayofs)));
348352
}
349353

350354

SheepShaver/src/prefs_items.cpp

+1
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,7 @@ prefs_desc common_prefs_items[] = {
6464
{"scale_integer",TYPE_BOOLEAN,false,"integer scaling"},
6565
{"cpuclock", TYPE_INT32, 0, "CPU clock [MHz] of system info"},
6666
{"yearofs", TYPE_INT32, 0, "year offset"},
67+
{"dayofs", TYPE_INT32, 0, "day offset"},
6768
{NULL, TYPE_END, false, NULL} // End of list
6869
};
6970

0 commit comments

Comments
 (0)