wrap and sort CLEANFILES
[alioth/cvs.git] / windows-NT / config.h.in.footer
1 /*============================================================================*/
2 /* config.h.in.footer:  configuration file for Windows NT
3    Conrad T. Pino <Conrad@Pino.com> --- May 2004 */
4
5 /* This file lives in the windows-NT subdirectory, which is only included
6    in your header search path if you're working under Microsoft Visual C++,
7    and use ../cvsnt.mak for your project.  Thus, this is the right place to
8    put configuration information for Windows NT.  */
9
10 /* This file is getting chaotic and will be organized as follows:
11
12                 Macros appears first alphabetized in case sensitive order.
13                 Typedefs appear next alphabetized in case sensitive order.
14                 Function prototypes alphabetized in case sensitive order.
15
16         Reorgnized by Conrad T. Pino <Conrad@Pino.com> May 25, 2005 */
17
18 /* just one time please */
19 #ifdef _MSC_VER
20 #pragma once
21 #endif
22
23 /* ======================= Macro Definnitions Follow ====================== */
24
25 /* Under Windows NT, mkdir only takes one argument.  */
26 #define CVS_MKDIR wnt_mkdir
27
28 #define CVS_RENAME wnt_rename
29
30 /* This is where old bits go to die under Windows NT.  */
31 #define DEVNULL "nul"
32
33 /* Windows has no ELOOP value in errno.h */
34 #define ELOOP EMLINK
35
36 /* Windows has _snprintf function.
37    HAVE_DECL__SNPRINTF used in ../lib/vasnprintf.c */
38 #define HAVE_DECL__SNPRINTF 1
39
40 #define HAVE_WINSOCK_H
41
42 /* This tells the client that it must use send()/recv() to talk to the
43    server if it is connected to the server via a socket; Win95 needs
44    it because _open_osfhandle doesn't work.  */
45 #define NO_SOCKET_TO_FD 1
46
47 /* Is this true on NT?  Seems like I remember reports that NT 3.51 has
48    problems with 200K writes (of course, the issue of large writes is
49    moot since the use of buffer.c ensures that writes will only be as big
50    as the buffers).  */
51 #define SEND_NEVER_PARTIAL 1
52
53 /* Stop server macro */
54 #define SHUTDOWN_SERVER wnt_shutdown_server
55
56 /* This tells the client that, in addition to needing to use
57    send()/recv() to do socket I/O, the error codes for send()/recv()
58    and other socket operations are not available through errno.
59    Instead, this macro should be used to obtain an error code. */
60 #define SOCK_ERRNO (WSAGetLastError ())
61
62 /* This tells the client that, in addition to needing to use
63    send()/recv() to do socket I/O, the error codes for send()/recv()
64    and other socket operations are not known to strerror.  Instead,
65    this macro should be used to convert the error codes to strings. */
66 #define SOCK_STRERROR sock_strerror
67
68 /* Start server macro */
69 #define START_SERVER wnt_start_server
70
71 /* The internal rsh client uses sockets not file descriptors.  Note
72    that as the code stands now, it often takes values from a SOCKET and
73    puts them in an int.  This is ugly but it seems like sizeof
74    (SOCKET) <= sizeof (int) on win32, even the 64-bit variants.  */
75 #define START_SERVER_RETURNS_SOCKET 1
76
77 /* Macro name tells the story */
78 #define SYSTEM_CLEANUP woe32_cleanup
79
80 /* Macro name tells the story */
81 #define SYSTEM_INITIALIZE(pargc,pargv) woe32_init_winsock()
82
83 /*
84  * According to GNU conventions, we should avoid referencing any macro
85  * containing "WIN" as a reference to Microsoft Windows, as we would like to
86  * avoid any implication that we consider Microsoft Windows any sort of "win".
87  *
88  * FIXME: As of 2003-06-09, folks on the GNULIB project were discussing
89  * defining a configure macro to define WOE32 appropriately.  If they ever do
90  * write such a beast, we should use it, though in most cases it would be
91  * preferable to avoid referencing any OS or compiler anyhow, per Autoconf
92  * convention, and reference only tested features of the system.
93  *
94  * re FIXME: This definition would still be necessary since systems which run
95  * configure do not use this config.h and vice-versa.
96  */
97 #define WOE32 1
98
99 /* Define POSIX name to Microsoft name */
100 #define dup _dup
101
102 /* getpagesize is missing on Windows, 4096 does the right thing. */
103 #define getpagesize() 4096
104
105 /* Define to a substitute for the `lstat' function. */
106 #define lstat stat
107
108 /* Define POSIX name to Microsoft name */
109 #define popen _popen
110
111 /* Define POSIX name to Microsoft name */
112 #define pclose _pclose
113
114 /* Diff needs us to define this.  I think it could always be
115    -1 for CVS, because we pass temporary files to diff, but
116    config.h seems like the easiest place to put this, so for
117    now we put it here.  */
118 #define same_file(s,t) (-1)
119
120 /* Define to a substitute for the stat function. */
121 #define stat wnt_stat
122
123 /* ====================== Typedef Declarations Follow ===================== */
124
125 /* ====================== Function Prototypes Follow ====================== */
126
127 #include <woe32.h>
128
129 /* #define SOCK_STRERROR sock_strerror */
130 char *sock_strerror (int errnum);
131
132 /* #define CVS_MKDIR wnt_mkdir */
133 int wnt_mkdir (const char *PATH, int MODE);
134
135 /* #define CVS_RENAME wnt_rename */
136 int wnt_rename (const char *, const char *);
137
138 /* #define SHUTDOWN_SERVER wnt_shutdown_server */
139 void wnt_shutdown_server (int fd);
140
141 /* #define START_SERVER wnt_start_server */
142 void wnt_start_server (int *tofd, int *fromfd,
143                        char *client_user,
144                        char *server_user,
145                        char *server_host,
146                        char *server_cvsroot);
147
148 /* #define stat wnt_stat and #define lstat wnt_stat */
149 int wnt_stat (const char *file, struct wnt_stat *sb);
150
151 /* =============== Special mkdir Prototype Handling Follows =============== */
152
153 #include <direct.h>
154 #define mkdir wnt_mkdir
155
156 /* ===================== Special Function Definitions ===================== */
157
158 /*
159         Microsoft defines "mbinit" in <wchar.h> for C++ code only.
160
161         Expect link errors for versions:
162
163                 earlier than Visual C++ 5.0
164
165                 later than Visual C++ .NET 2003
166
167         and Visual C++ .NET is just a guess which might be wrong.
168 */
169
170 #if _MSC_VER >= 1100 && _MSC_VER <= 1200
171
172 /* If within Visual C++ 5.0 to Visual C++ 6.0 */
173
174 inline int mbsinit (const void * arg)
175         { return 1; }
176
177 #elif _MSC_VER >= 1300 && _MSC_VER <= 1310
178
179 /* If within Visual C++ .NET to Visual C++ .NET 2003 */
180
181 inline int mbsinit (const int * arg)
182         { return arg == NULL || ! *arg; }
183
184 #endif
185
186 /* =========================== End Of This File =========================== */