mirror of
https://github.com/aaru-dps/fstester.git
synced 2025-12-16 19:24:39 +00:00
Use an enumeration for DOS flavor.
This commit is contained in:
@@ -3,7 +3,7 @@
|
|||||||
------------------------------------------------------------------------
|
------------------------------------------------------------------------
|
||||||
|
|
||||||
Filename : dosuname.c
|
Filename : dosuname.c
|
||||||
Version : 0.08
|
Version : 0.09
|
||||||
Author(s) : Natalia Portillo
|
Author(s) : Natalia Portillo
|
||||||
|
|
||||||
Component : UNAME for DOS
|
Component : UNAME for DOS
|
||||||
@@ -50,6 +50,7 @@
|
|||||||
easily detected, without exact knowledge of the versions by
|
easily detected, without exact knowledge of the versions by
|
||||||
this program.
|
this program.
|
||||||
0.08: Changed function parameters to use a struct.
|
0.08: Changed function parameters to use a struct.
|
||||||
|
0.09: Use an enumeration for DOS flavor.
|
||||||
|
|
||||||
--[ How to compile ]----------------------------------------------------
|
--[ How to compile ]----------------------------------------------------
|
||||||
|
|
||||||
@@ -91,7 +92,7 @@ void getdosver(struct dosuname_version_t* version)
|
|||||||
union REGS regs;
|
union REGS regs;
|
||||||
int dos_temp, nt_flag;
|
int dos_temp, nt_flag;
|
||||||
nt_flag = 0;
|
nt_flag = 0;
|
||||||
version->flavor = 0;
|
version->flavor = DOS_FLAVOR_UNKNOWN;
|
||||||
|
|
||||||
regs.x.ax = 0x3306; /* Set function 3306h */
|
regs.x.ax = 0x3306; /* Set function 3306h */
|
||||||
int86(0x21, ®s, ®s); /* Call INT 21h */
|
int86(0x21, ®s, ®s); /* Call INT 21h */
|
||||||
@@ -130,20 +131,20 @@ void getdosver(struct dosuname_version_t* version)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* Set DOS to DOS type */
|
/* Set DOS to DOS type */
|
||||||
if(dos_temp == 0 && version->major <= 3) { version->flavor = 12; }
|
if(dos_temp == 0 && version->major <= 3) { version->flavor = DOS_FLAVOR_MSPCDOS; }
|
||||||
if(dos_temp == 0 && version->major >= 4) { version->flavor = 2; }
|
if(dos_temp == 0 && version->major >= 4) { version->flavor = DOS_FLAVOR_PCDOS; }
|
||||||
if(dos_temp == 0 && version->major >= 10) { version->flavor = 7; }
|
if(dos_temp == 0 && version->major >= 10) { version->flavor = DOS_FLAVOR_OS2; }
|
||||||
if(dos_temp == 0xff && version->major <= 6) { version->flavor = 1; }
|
if(dos_temp == 0xff && version->major <= 6) { version->flavor = DOS_FLAVOR_MSDOS; }
|
||||||
if(dos_temp == 0xff && version->major == 7)
|
if(dos_temp == 0xff && version->major == 7)
|
||||||
{
|
{
|
||||||
if(version->minor == 0) { version->flavor = 5; }
|
if(version->minor == 0) { version->flavor = DOS_FLAVOR_WIN95; }
|
||||||
if(version->minor == 10) { version->flavor = 13; }
|
if(version->minor == 10) { version->flavor = DOS_FLAVOR_WIN9X; }
|
||||||
}
|
}
|
||||||
if(dos_temp == 0xff && version->major == 8) { version->flavor = 14; }
|
if(dos_temp == 0xff && version->major == 8) { version->flavor = DOS_FLAVOR_WINME; }
|
||||||
if(dos_temp == 253) { version->flavor = 4; }
|
if(dos_temp == 253) { version->flavor = DOS_FLAVOR_FREEDOS; }
|
||||||
if(dos_temp == 0xff && nt_flag == 1) { version->flavor = 6; }
|
if(dos_temp == 0xff && nt_flag == 1) { version->flavor = DOS_FLAVOR_WINNT; }
|
||||||
if(dos_temp == 0x66) { version->flavor = 8; }
|
if(dos_temp == 0x66) { version->flavor = DOS_FLAVOR_PTSDOS; }
|
||||||
if(dos_temp == 0x5E) { version->flavor = 9; }
|
if(dos_temp == 0x5E) { version->flavor = DOS_FLAVOR_RXDOS; }
|
||||||
|
|
||||||
/* Check for Concurrent DOS versions */
|
/* Check for Concurrent DOS versions */
|
||||||
regs.x.ax = 0x4451; /* Set function 4451h */
|
regs.x.ax = 0x4451; /* Set function 4451h */
|
||||||
@@ -152,43 +153,43 @@ void getdosver(struct dosuname_version_t* version)
|
|||||||
{
|
{
|
||||||
version->major = 3;
|
version->major = 3;
|
||||||
version->minor = 2;
|
version->minor = 2;
|
||||||
version->flavor = 10;
|
version->flavor = DOS_FLAVOR_CONCURRENTDOS;
|
||||||
}
|
}
|
||||||
if(regs.h.al == 0x41)
|
if(regs.h.al == 0x41)
|
||||||
{
|
{
|
||||||
version->major = 4;
|
version->major = 4;
|
||||||
version->minor = 1;
|
version->minor = 1;
|
||||||
version->flavor = 10;
|
version->flavor = DOS_FLAVOR_CONCURRENTDOS;
|
||||||
}
|
}
|
||||||
if(regs.h.al == 0x50)
|
if(regs.h.al == 0x50)
|
||||||
{
|
{
|
||||||
version->major = 5;
|
version->major = 5;
|
||||||
version->minor = 0;
|
version->minor = 0;
|
||||||
version->flavor = 10;
|
version->flavor = DOS_FLAVOR_CONCURRENTDOS;
|
||||||
}
|
}
|
||||||
if(regs.h.al == 0x60)
|
if(regs.h.al == 0x60)
|
||||||
{
|
{
|
||||||
version->major = 6;
|
version->major = 6;
|
||||||
version->minor = 0;
|
version->minor = 0;
|
||||||
version->flavor = 10;
|
version->flavor = DOS_FLAVOR_CONCURRENTDOS;
|
||||||
}
|
}
|
||||||
if(regs.h.al == 0x62)
|
if(regs.h.al == 0x62)
|
||||||
{
|
{
|
||||||
version->major = 6;
|
version->major = 6;
|
||||||
version->minor = 2;
|
version->minor = 2;
|
||||||
version->flavor = 10;
|
version->flavor = DOS_FLAVOR_CONCURRENTDOS;
|
||||||
}
|
}
|
||||||
if(regs.h.al == 0x66)
|
if(regs.h.al == 0x66)
|
||||||
{
|
{
|
||||||
version->major = 5;
|
version->major = 5;
|
||||||
version->minor = 1;
|
version->minor = 1;
|
||||||
version->flavor = 6;
|
version->flavor = DOS_FLAVOR_WINNT;
|
||||||
}
|
}
|
||||||
if(regs.h.al == 0x67)
|
if(regs.h.al == 0x67)
|
||||||
{
|
{
|
||||||
version->major = 5;
|
version->major = 5;
|
||||||
version->minor = 1;
|
version->minor = 1;
|
||||||
version->flavor = 10;
|
version->flavor = DOS_FLAVOR_CONCURRENTDOS;
|
||||||
}
|
}
|
||||||
/* End of check for Concurrent DOS versions */
|
/* End of check for Concurrent DOS versions */
|
||||||
|
|
||||||
@@ -199,55 +200,55 @@ void getdosver(struct dosuname_version_t* version)
|
|||||||
{
|
{
|
||||||
version->major = 1;
|
version->major = 1;
|
||||||
version->minor = 2;
|
version->minor = 2;
|
||||||
version->flavor = 3;
|
version->flavor = DOS_FLAVOR_DRDOS;
|
||||||
}
|
}
|
||||||
if(regs.h.al == 0x60)
|
if(regs.h.al == 0x60)
|
||||||
{
|
{
|
||||||
version->major = 2;
|
version->major = 2;
|
||||||
version->minor = 0;
|
version->minor = 0;
|
||||||
version->flavor = 3;
|
version->flavor = DOS_FLAVOR_DRDOS;
|
||||||
}
|
}
|
||||||
if(regs.h.al == 0x63)
|
if(regs.h.al == 0x63)
|
||||||
{
|
{
|
||||||
version->major = 3;
|
version->major = 3;
|
||||||
version->minor = 41;
|
version->minor = 41;
|
||||||
version->flavor = 3;
|
version->flavor = DOS_FLAVOR_DRDOS;
|
||||||
}
|
}
|
||||||
if(regs.h.al == 0x64)
|
if(regs.h.al == 0x64)
|
||||||
{
|
{
|
||||||
version->major = 3;
|
version->major = 3;
|
||||||
version->minor = 42;
|
version->minor = 42;
|
||||||
version->flavor = 3;
|
version->flavor = DOS_FLAVOR_DRDOS;
|
||||||
}
|
}
|
||||||
if(regs.h.al == 0x65)
|
if(regs.h.al == 0x65)
|
||||||
{
|
{
|
||||||
version->major = 5;
|
version->major = 5;
|
||||||
version->minor = 0;
|
version->minor = 0;
|
||||||
version->flavor = 3;
|
version->flavor = DOS_FLAVOR_DRDOS;
|
||||||
}
|
}
|
||||||
if(regs.h.al == 0x67)
|
if(regs.h.al == 0x67)
|
||||||
{
|
{
|
||||||
version->major = 6;
|
version->major = 6;
|
||||||
version->minor = 0;
|
version->minor = 0;
|
||||||
version->flavor = 3;
|
version->flavor = DOS_FLAVOR_DRDOS;
|
||||||
}
|
}
|
||||||
if(regs.h.al == 0x71)
|
if(regs.h.al == 0x71)
|
||||||
{
|
{
|
||||||
version->major = 6;
|
version->major = 6;
|
||||||
version->minor = 0;
|
version->minor = 0;
|
||||||
version->flavor = 3;
|
version->flavor = DOS_FLAVOR_DRDOS;
|
||||||
}
|
}
|
||||||
if(regs.h.al == 0x72)
|
if(regs.h.al == 0x72)
|
||||||
{
|
{
|
||||||
version->major = 7;
|
version->major = 7;
|
||||||
version->minor = 0;
|
version->minor = 0;
|
||||||
version->flavor = 11;
|
version->flavor = DOS_FLAVOR_NOVELLDOS;
|
||||||
}
|
}
|
||||||
if(regs.h.al == 0x73)
|
if(regs.h.al == 0x73)
|
||||||
{
|
{
|
||||||
version->major = 7;
|
version->major = 7;
|
||||||
version->minor = 0;
|
version->minor = 0;
|
||||||
version->flavor = 3;
|
version->flavor = DOS_FLAVOR_DRDOS;
|
||||||
}
|
}
|
||||||
/* End of check for DR-DOS_FLAVOR versions */
|
/* End of check for DR-DOS_FLAVOR versions */
|
||||||
version->dos_oem = dos_temp;
|
version->dos_oem = dos_temp;
|
||||||
|
|||||||
@@ -3,7 +3,7 @@
|
|||||||
------------------------------------------------------------------------
|
------------------------------------------------------------------------
|
||||||
|
|
||||||
Filename : dosuname.h
|
Filename : dosuname.h
|
||||||
Version : 0.07
|
Version : 0.09
|
||||||
Author(s) : Natalia Portillo
|
Author(s) : Natalia Portillo
|
||||||
|
|
||||||
Component : UNAME for DOS
|
Component : UNAME for DOS
|
||||||
@@ -46,25 +46,45 @@
|
|||||||
#ifndef DOS_DOSUNAME_H_
|
#ifndef DOS_DOSUNAME_H_
|
||||||
#define DOS_DOSUNAME_H_
|
#define DOS_DOSUNAME_H_
|
||||||
|
|
||||||
|
typedef enum
|
||||||
|
{
|
||||||
|
DOS_FLAVOR_UNKNOWN,
|
||||||
|
DOS_FLAVOR_MSDOS,
|
||||||
|
DOS_FLAVOR_PCDOS,
|
||||||
|
DOS_FLAVOR_DRDOS,
|
||||||
|
DOS_FLAVOR_FREEDOS,
|
||||||
|
DOS_FLAVOR_WIN95,
|
||||||
|
DOS_FLAVOR_WINNT,
|
||||||
|
DOS_FLAVOR_OS2,
|
||||||
|
DOS_FLAVOR_PTSDOS,
|
||||||
|
DOS_FLAVOR_RXDOS,
|
||||||
|
DOS_FLAVOR_CONCURRENTDOS,
|
||||||
|
DOS_FLAVOR_NOVELLDOS,
|
||||||
|
DOS_FLAVOR_MSPCDOS,
|
||||||
|
DOS_FLAVOR_WIN9X,
|
||||||
|
DOS_FLAVOR_WINME,
|
||||||
|
|
||||||
|
} dosuname_flavor;
|
||||||
|
|
||||||
struct dosuname_version_t
|
struct dosuname_version_t
|
||||||
{
|
{
|
||||||
int flavor;
|
dosuname_flavor flavor;
|
||||||
int major;
|
int major;
|
||||||
int minor;
|
int minor;
|
||||||
int simulated_major;
|
int simulated_major;
|
||||||
int simulated_minor;
|
int simulated_minor;
|
||||||
int dos_oem;
|
int dos_oem;
|
||||||
int desqview_major;
|
int desqview_major;
|
||||||
int desqview_minor;
|
int desqview_minor;
|
||||||
int _4dos_major;
|
int _4dos_major;
|
||||||
int _4dos_minor;
|
int _4dos_minor;
|
||||||
int ndos_major;
|
int ndos_major;
|
||||||
int ndos_minor;
|
int ndos_minor;
|
||||||
int windows_major;
|
int windows_major;
|
||||||
int windows_minor;
|
int windows_minor;
|
||||||
int windows_mode;
|
int windows_mode;
|
||||||
int softice_major;
|
int softice_major;
|
||||||
int softice_minor;
|
int softice_minor;
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // DOS_DOSUNAME_H_
|
#endif // DOS_DOSUNAME_H_
|
||||||
|
|||||||
Reference in New Issue
Block a user