1 |
/* |
2 |
* dos.h |
3 |
* |
4 |
* Functions and structures inherited from MS-DOS. |
5 |
* |
6 |
* $Id: dos.h,v 71af661f5309 2016/04/26 22:05:33 keithmarshall $ |
7 |
* |
8 |
* Written by Jan-Jaap van der Heijden |
9 |
* Copyright (C) 1997-1999, 2001-2004, 2007, 2016, MinGW.org Project. |
10 |
* |
11 |
* |
12 |
* Permission is hereby granted, free of charge, to any person obtaining a |
13 |
* copy of this software and associated documentation files (the "Software"), |
14 |
* to deal in the Software without restriction, including without limitation |
15 |
* the rights to use, copy, modify, merge, publish, distribute, sublicense, |
16 |
* and/or sell copies of the Software, and to permit persons to whom the |
17 |
* Software is furnished to do so, subject to the following conditions: |
18 |
* |
19 |
* The above copyright notice, this permission notice, and the following |
20 |
* disclaimer shall be included in all copies or substantial portions of |
21 |
* the Software. |
22 |
* |
23 |
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS |
24 |
* OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, |
25 |
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL |
26 |
* THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER |
27 |
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING |
28 |
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OF OR OTHER |
29 |
* DEALINGS IN THE SOFTWARE. |
30 |
* |
31 |
*/ |
32 |
#ifndef _DOS_H |
33 |
#pragma GCC system_header |
34 |
|
35 |
/* This header supports selective inclusion by <direct.h>, for delegated |
36 |
* access to the content of <io.h>, and for declaration of the prototype |
37 |
* and associated data structure for the _getdiskfree() function; since |
38 |
* including <dos.h> in this manner does not make all of its content |
39 |
* visible, we defer definition of its multiple inclusion guard... |
40 |
*/ |
41 |
#ifndef __DIRECT_H_SOURCED__ |
42 |
/* ...until we have determined that this inclusion is NOT a selective |
43 |
* request from <direct.h>; in spite of it being obsolete, it appears |
44 |
* that the user may have included <dos.h> directly. |
45 |
*/ |
46 |
#define _DOS_H |
47 |
#warning "<dos.h> is obsolete; consider using <direct.h> instead." |
48 |
#endif /* !__DIRECT_H_SOURCED__ */ |
49 |
|
50 |
/* All MinGW headers are required to include <_mingw.h>; additionally, |
51 |
* for DOS file attributes, we must include <io.h>. By unconditionally |
52 |
* including <io.h> here, we may delegate the inclusion of <_mingw.h> to |
53 |
* it, while also allowing <direct.h> to delegate responsibility for the |
54 |
* inclusion of both <_mingw.h> and <io.h> to us. |
55 |
*/ |
56 |
#include "io.h" |
57 |
|
58 |
#ifndef RC_INVOKED |
59 |
|
60 |
_BEGIN_C_DECLS |
61 |
|
62 |
/* The following declarations are to be visible ONLY when <dos.h> |
63 |
* is included in its own right; they represent entities which are |
64 |
* present in CRTDLL.DLL, but not in MSVCRT.DLL |
65 |
*/ |
66 |
#if defined _DOS_H && ! defined __MSVCRT__ |
67 |
#ifndef __DECLSPEC_SUPPORTED |
68 |
|
69 |
# define _basemajor (*_imp___basemajor_dll) |
70 |
# define _baseminor (*_imp___baseminor_dll) |
71 |
# define _baseversion (*_imp___baseversion_dll) |
72 |
# define _osmajor (*_imp___osmajor_dll) |
73 |
# define _osminor (*_imp___osminor_dll) |
74 |
# define _osmode (*_imp___osmode_dll) |
75 |
|
76 |
extern unsigned int *_imp___basemajor_dll; |
77 |
extern unsigned int *_imp___baseminor_dll; |
78 |
extern unsigned int *_imp___baseversion_dll; |
79 |
extern unsigned int *_imp___osmajor_dll; |
80 |
extern unsigned int *_imp___osminor_dll; |
81 |
extern unsigned int *_imp___osmode_dll; |
82 |
|
83 |
#else /* __DECLSPEC_SUPPORTED */ |
84 |
|
85 |
# define _basemajor _basemajor_dll |
86 |
# define _baseminor _baseminor_dll |
87 |
# define _baseversion _baseversion_dll |
88 |
# define _osmajor _osmajor_dll |
89 |
# define _osminor _osminor_dll |
90 |
# define _osmode _osmode_dll |
91 |
|
92 |
__MINGW_IMPORT unsigned int _basemajor_dll; |
93 |
__MINGW_IMPORT unsigned int _baseminor_dll; |
94 |
__MINGW_IMPORT unsigned int _baseversion_dll; |
95 |
__MINGW_IMPORT unsigned int _osmajor_dll; |
96 |
__MINGW_IMPORT unsigned int _osminor_dll; |
97 |
__MINGW_IMPORT unsigned int _osmode_dll; |
98 |
|
99 |
#endif /* __DECLSPEC_SUPPORTED */ |
100 |
#endif /* _DOS_H && !__MSVCRT__ */ |
101 |
|
102 |
/* The following section, which declares the _getdiskfree() function |
103 |
* prototype, and also defines its associated _diskfree_t data structure, |
104 |
* is to be processed both when including <dos.h> in its own right, and |
105 |
* when selectively included by <direct.h>; however... |
106 |
*/ |
107 |
#if ! (defined _DOS_H && defined _DIRECT_H) |
108 |
/* ...when both the _DOS_H guard, and the _DIRECT_H multiple inclusion |
109 |
* guards have been defined, by the time we get to here, then this is |
110 |
* <dos.h> inclusion in its own right, and we have ALREADY processed |
111 |
* these definitions through selective inclusion by <direct.h>; we |
112 |
* MUST NOT process them a second time. |
113 |
*/ |
114 |
#ifndef _NO_OLDNAMES |
115 |
# define diskfree_t _diskfree_t |
116 |
#endif |
117 |
|
118 |
struct _diskfree_t |
119 |
{ /* A structure in which to store information about disk |
120 |
* free space, as returned by the _getdiskfree() function. |
121 |
*/ |
122 |
unsigned total_clusters; |
123 |
unsigned avail_clusters; |
124 |
unsigned sectors_per_cluster; |
125 |
unsigned bytes_per_sector; |
126 |
}; |
127 |
|
128 |
_CRTIMP __cdecl __MINGW_NOTHROW |
129 |
unsigned _getdiskfree (unsigned, struct _diskfree_t *); |
130 |
|
131 |
#endif /* ! ( _DOS_H && _DIRECT_H) */ |
132 |
|
133 |
_END_C_DECLS |
134 |
|
135 |
#endif /* ! RC_INVOKED */ |
136 |
#endif /* !_DOS_H: $RCSfile: dos.h,v $: end of file */ |