1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
|
/***
*dostypes.h - defines DOS packed date and time types
*
* Copyright (c) 1987-1990, Microsoft Corporation. All rights reserved.
*
*Purpose:
* This file defines the DOS packed date and time types.
*
*Revision History:
* 11-18-87 SKS Removed declaration of _dtoxtime
* 09-27-88 JCR 386 versions of macros
* 10-03-88 GJF Use M_I386, not I386
* 05-01-89 JCR Fixed 386 versions for new rev of OS/2 386
* 08-03-89 GJF Cleanup, now specific to OS/2 2.0 (i.e., 386 flat model)
* 10-30-89 GJF Fixed copyright
* 02-28-90 GJF Added #ifndef _INC_DOSTYPES stuff
* 08-11-90 SBM Enhanced SET_DOS_* macros to compile cleanly with -W3
* 04-09-91 PNT Added _MAC_ definitions
*
****/
#ifndef _INC_DOSTYPES
#define MASK4 0xf /* 4 bit mask */
#define MASK5 0x1f /* 5 bit mask */
#define MASK6 0x3f /* 6 bit mask */
#define MASK7 0x7f /* 7 bit mask */
#define DAYLOC 0 /* day value starts in bit 0 */
#define MONTHLOC 5 /* month value starts in bit 5 */
#define YEARLOC 9 /* year value starts in bit 9 */
#define SECLOC 0 /* seconds value starts in bit 0 */
#define MINLOC 5 /* minutes value starts in bit 5 */
#define HOURLOC 11 /* hours value starts in bit 11 */
#define _DATECAST(fd) * (unsigned short *) &(fd)
#define _TIMECAST(ft) * (unsigned short *) &(ft)
#ifdef _CRUISER_
#define SET_DOS_DAY(fd, xday) fd.day = (unsigned short)((xday) & MASK5)
#define SET_DOS_MONTH(fd, xmon) fd.month = (unsigned short)((xmon) & MASK4)
#define SET_DOS_YEAR(fd, xyr) fd.year = (unsigned short)((xyr) & MASK7)
#define SET_DOS_HOUR(ft, xhr) ft.hours = (unsigned short)((xhr) & MASK5)
#define SET_DOS_MIN(ft, xmin) ft.minutes = (unsigned short)((xmin) & MASK6)
#define SET_DOS_SEC(ft, xsec) ft.twosecs = (unsigned short)((xsec) & MASK5)
#define DOS_DAY(fd) (fd.day)
#define DOS_MONTH(fd) (fd.month)
#define DOS_YEAR(fd) (fd.year)
#define DOS_HOUR(ft) (ft.hours)
#define DOS_MIN(ft) (ft.minutes)
#define DOS_SEC(ft) (ft.twosecs)
#else /* ndef _CRUISER_ */
#ifdef _WIN32_
#define SET_DOS_DAY(fd, xday) fd.Day = (unsigned short)((xday) & MASK5)
#define SET_DOS_MONTH(fd, xmon) fd.Month = (unsigned short)((xmon) & MASK4)
#define SET_DOS_YEAR(fd, xyr) fd.Year = (unsigned short)((xyr) & MASK7)
#define SET_DOS_HOUR(ft, xhr) ft.Hours = (unsigned short)((xhr) & MASK5)
#define SET_DOS_MIN(ft, xmin) ft.Minutes = (unsigned short)((xmin) & MASK6)
#define SET_DOS_SEC(ft, xsec) ft.DoubleSeconds = (unsigned short)((xsec) & MASK5)
#define DOS_DAY(fd) (fd.Day)
#define DOS_MONTH(fd) (fd.Month)
#define DOS_YEAR(fd) (fd.Year)
#define DOS_HOUR(ft) (ft.Hours)
#define DOS_MIN(ft) (ft.Minutes)
#define DOS_SEC(ft) (ft.DoubleSeconds)
#else /* ndef _WIN32_ */
#ifdef _MAC_
#define SET_DOS_DAY(fd, xday) fd.day = (unsigned short)((xday) & MASK5)
#define SET_DOS_MONTH(fd, xmon) fd.month = (unsigned short)((xmon) & MASK4)
#define SET_DOS_YEAR(fd, xyr) fd.year = (unsigned short)((xyr) & MASK7)
#define SET_DOS_HOUR(ft, xhr) ft.hours = (unsigned short)((xhr) & MASK5)
#define SET_DOS_MIN(ft, xmin) ft.minutes = (unsigned short)((xmin) & MASK6)
#define SET_DOS_SEC(ft, xsec) ft.twosecs = (unsigned short)((xsec) & MASK5)
#define DOS_DAY(fd) (fd.day)
#define DOS_MONTH(fd) (fd.month)
#define DOS_YEAR(fd) (fd.year)
#define DOS_HOUR(ft) (ft.hours)
#define DOS_MIN(ft) (ft.minutes)
#define DOS_SEC(ft) (ft.twosecs)
#else /* ndef _MAC_ */
#error ERROR - ONLY CRUISER, WIN32, _MAC_ TARGET SUPPORTED!
#endif /* _MAC_ */
#endif /* _WIN32_ */
#endif /* _CRUISER_ */
#define XTIME(d,t) _dtoxtime(DOS_YEAR(d),DOS_MONTH(d),DOS_DAY(d),DOS_HOUR(t),\
DOS_MIN(t),DOS_SEC(t)*2)
#define _INC_DOSTYPES
#endif /* _INC_DOSTYPES */
|