> String "DOS" is absent from
> https://en.wikipedia.org/wiki/Year_2038_problem. Has anything been
> done or planned to deal with it in FreeDOS, or the legacy filesystems
> it supports? 

The UNIX epoch time is originally a 32bit integer in seconds, since 
1.1.1970. Not defined to be signed, but often is.

https://stackoverflow.com/questions/471248/what-is-time-t-ultimately-a
-typedef-to

That permeates through all sorts of software in UNIX. But:
If any piece of software at hand is written "properly", i.e. using 
strictly the type "time_t" in its source code (and doing any 
manipulation in a safe way), then there's a good chance, that you're 
safe on a 64bit platform by merely recompiling your binaries from 
source - because the year 2038 has been known about since the dawn of 
UNIX, definitely in the time sync community.

You are possibly safe on a modern 32bit platform as well, because the 
C type may be #defined with explicit length ("signed long int" vs. 
"signed long long int") rather than just "int" (would make the length 
automatically dependent on the target instruction set of your 
compilation pass). It's really down to whoever built your "distro" 
from source (kernel and libc) and how they defined time_t in the 
respective header file.
Ahh this paragraph is just my fabulation. The stumbling stone here 
is, that you need to keep compatibility between apps and system 
libraries. For that, you can either define the length of time_t as 
fixed/explicit (which might hamper portability of binaries), or I 
could imagine a rule that the size of time_t shall follow the 
instruction architecture of the "target platform of compilation", 
making binaries portable in this respect...

Allegedly, the year 2038 should only affect software at runtime. It 
is proper practice to AVOID using the binary allocation size of 
"time_t" (as defined locally) as part of time encoding in 
communication protocols, storage formats and UI output.
So again, properly written software, including proper file systems, 
should keep you safe against the Y2038 problem.


There is another Wikipedia entry though, where DOS *is* implied:

https://en.wikipedia.org/wiki/Time_formatting_and_storage_bugs

Apparently, some DOS-based "systems" are prone to a problem with the 
year 2080, depending on the format of calendar YEAR as kept in the 
RTC (two decimal digits since 1980). Not sure if this affects 
FreeDOS, or is an internal matter of the BIOS brand and build, or 
what.

Next, the file timestamps in FAT are subject to a problem with year 
2108. Allegedly the calendar year is stored in FS metadata as an 8bit 
signed integer i.e. 7 bits available, since 1980.

=> oh, 2080 and 2108.
What a pity.
I myself will have overflowed by then.

Frank



_______________________________________________
Freedos-user mailing list
Freedos-user@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/freedos-user

Reply via email to