]> sourceware.org Git - newlib-cygwin.git/blame - winsup/cygwin/include/cygwin/version.h
* libc/include/sys/unistd.h: Define fdatasync also for Cygwin.
[newlib-cygwin.git] / winsup / cygwin / include / cygwin / version.h
CommitLineData
1fd5e000
CF
1/* version.h -- Cygwin version numbers and accompanying documentation.
2
656a999a 3 Copyright 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004 Red Hat, Inc.
1fd5e000
CF
4
5This file is part of Cygwin.
6
7This software is a copyrighted work licensed under the terms of the
8Cygwin license. Please consult the file "CYGWIN_LICENSE" for
9details. */
10
11/* Cygwin versioning is relatively complicated because of its status
12 as a shared library. Let's start with how versioning used to be done.
13
14 Historical versioning in Cygwin 16.0 to 19.5:
15
16 In the olden days of Cygwin, we had a dll major and minor version
17 and a registry version. The major number started at 16 because the
18 "b15" GNU-Win32 release of the compiler tools was out when this
19 scheme was started. We incremented the DLL name frequently (for
20 every official release) and towards the end of this period every
21 release used a different shared memory area to prevent DLLs from
22 interfering with each other (embedding a build timestamp into the
23 name of the shared memory area). This turned out to be a Bad Idea
24 (tm) because people needed to mingle separate releases and have
25 them work together more than we thought they would. This was
26 especially problematic when tty info needed to be retained when an
27 old Cygwin executable executed a newer one.
28
29 In the old scheme, we incremented the major number whenever a
30 change to the dll invalidated existing executables. This can
31 happen for a number of reasons, including when functions are
32 removed from the export list of the dll. The minor number was
33 incremented when a change was made that we wanted to record, but
34 that didn't invalidate existing executables. Both numbers were
35 recorded in the executable and in the dll.
36
e80cbe3e
CF
37 In October 1998 (starting with Cygwin 19.6), we started a new method
38 of Cygwin versioning: */
1fd5e000
CF
39
40 /* The DLL major and minor numbers correspond to the "version of
a7d42fef 41 the Cygwin shared library". This version is used to track important
1fd5e000
CF
42 changes to the DLL and is mainly informative in nature. */
43
99b1a40d 44#define CYGWIN_VERSION_DLL_MAJOR 1005
e8248d01 45#define CYGWIN_VERSION_DLL_MINOR 13
1fd5e000
CF
46
47 /* Major numbers before CYGWIN_VERSION_DLL_EPOCH are
48 incompatible. */
49
50#define CYGWIN_VERSION_DLL_EPOCH 19
51
52 /* CYGWIN_VERSION_DLL_COMBINED gives us a single number
53 representing the combined DLL major and minor numbers. */
54
fcc4976d
DD
55 /* WATCH OUT FOR OCTAL! Don't use, say, "00020" for 0.20 */
56
1fd5e000
CF
57#define CYGWIN_VERSION_DLL_MAKE_COMBINED(maj, min) (((maj) * 1000) + min)
58#define CYGWIN_VERSION_DLL_COMBINED \
1bdc5f1f 59 CYGWIN_VERSION_DLL_MAKE_COMBINED (CYGWIN_VERSION_DLL_MAJOR, CYGWIN_VERSION_DLL_MINOR)
1fd5e000
CF
60
61 /* Every version of cygwin <= this uses an old, incorrect method
62 to determine signal masks. */
63
64#define CYGWIN_VERSION_DLL_BAD_SIGNAL_MASK 19005
65
66 /* API versions <= this had a termios structure whose members were
67 too small to accomodate modern settings. */
fcc4976d 68#define CYGWIN_VERSION_DLL_OLD_TERMIOS 5
1fd5e000
CF
69#define CYGWIN_VERSION_DLL_IS_OLD_TERMIOS \
70 (CYGWIN_VERSION_DLL_MAKE_COMBINED (user_data->api_major, user_data->api_minor) <= \
71 CYGWIN_VERSION_DLL_OLD_TERMIOS)
72
9bc846bd 73#define CYGWIN_VERSION_DLL_MALLOC_ENV 28
56cd25ee
DD
74 /* Old APIs had getc/putc macros that conflict with new CR/LF
75 handling in the stdio buffers */
76#define CYGWIN_VERSION_OLD_STDIO_CRLF_HANDLING \
77 (CYGWIN_VERSION_DLL_MAKE_COMBINED (user_data->api_major, user_data->api_minor) <= \
fcc4976d 78 20)
56cd25ee 79
95a8465b
CF
80#define CYGWIN_VERSION_CHECK_FOR_S_IEXEC \
81 (CYGWIN_VERSION_DLL_MAKE_COMBINED (user_data->api_major, user_data->api_minor) >= \
82 36)
96a3f4ae
CF
83
84#define CYGWIN_VERSION_CHECK_FOR_OLD_O_NONBLOCK \
85 (CYGWIN_VERSION_DLL_MAKE_COMBINED (user_data->api_major, user_data->api_minor) <= \
86 28)
c16d0946
CV
87
88#define CYGWIN_VERSION_CHECK_FOR_USING_BIG_TYPES \
89 (CYGWIN_VERSION_DLL_MAKE_COMBINED (user_data->api_major, user_data->api_minor) >= \
90 79)
1fd5e000
CF
91 /* We used to use the DLL major/minor to track
92 non-backward-compatible interface changes to the API. Now we
93 use an API major/minor number for this purpose. */
94
95 /* API_MAJOR 0.0: Initial version. API_MINOR changes:
96 1: Export cygwin32_ calls as cygwin_ as well.
97 2: Export j1, jn, y1, yn.
9c510edc
CF
98 3: Export dll_noncygwin_dllcrt0.
99 4: New socket ioctls, revamped ifconf support.
100 5: Thread support/exports.
101 6: Change in termios handling.
102 7: Export scandir and alphasort.
103 8: Export _ctype_, _sys_errlist, _sys_nerr.
1fd5e000
CF
104 9: Mount-related changes, new cygwin_umount export.
105 Raw device support (tape, floppies).
106 10: Fast math routine support added.
107 11: Export seekdir, telldir.
108 12: Export pthread_join, pthread_detach.
109 13: Export math funcs gamma and friends, also _j0, _j1, etc.
110 14: Export snprintf and vnsprintf.
111 15: Export glob
112 16: Export cygwin_stackdump
4b17897e 113 17: Export fast math stuff
5abc9b83 114 18: Stop exporting _strace_wm
8a06963c 115 19: Export fchown, lchown, lacl
66aea0c5 116 20: regsub, inet_network
56cd25ee 117 21: incompatible change to stdio cr/lf and buffering
64b30629 118 22: Export cygwin_logon_user, cygwin_set_impersonation_token.
9c510edc
CF
119 geteuid, getegid return effective uid/gid.
120 getuid, getgid return real uid/gid.
121 seteuid, setegid set only effective uid/gid.
122 setuid, setgid set effective and real uid/gid.
14a3bc2f
CF
123 23: Export new dll_crt0 interface and cygwin_user_data for use
124 with crt0 startup code.
914e40df 125 24: Export poll and _poll.
bd4ec496 126 25: Export getmode and _getmode.
84c7d409
CF
127 26: CW_GET_CYGDRIVE_PREFIXES addition to external.cc
128 27: CW_GETPINFO_FULL addition to external.cc
cbe4c8e2 129 28: Accidentally bumped by cgf
7d9688b7 130 29: Export hstrerror
9bc846bd 131 30: CW_GET_CYGDRIVE_INFO addition to external.cc
2e68f6b4 132 31: Export inet_aton
8a93913d 133 32: Export getrlimit/setrlimit
c65a3183 134 33: Export setlogmask
ae6c8e4f 135 34: Separated out mount table
f97e7d75 136 35: Export drand48, erand48, jrand48, lcong48, lrand48,
9c510edc 137 mrand48, nrand48, seed48, and srand48.
95a8465b 138 36: Added _cygwin_S_IEXEC, et al
30f326bf 139 37: [f]pathconv support _PC_POSIX_PERMISSIONS and _PC_POSIX_SECURITY
c02e9189 140 38: vscanf, vscanf_r, and random pthread functions
86699e15 141 39: asctime_r, ctime_r, gmtime_r, localtime_r
463513f0 142 40: fchdir
351a8548 143 41: __signgam
8e4e3874 144 42: sys_errlist, sys_nerr
3ca6bcc4 145 43: sigsetjmp, siglongjmp fixed
a71aee46 146 44: Export dirfd
c12a96d1 147 45: perprocess change, gamma_r, gammaf_r, lgamma_r, lgammaf_r
dbc82a87 148 46: Remove cygwin_getshared
b20e2ee6 149 47: Report EOTWarningZoneSize in struct mtget.
4f235c95 150 48: Export "posix" regex functions
971ec8d3 151 49: Export setutent, endutent, utmpname, getutent, getutid, getutline.
104c3be6 152 50: Export fnmatch.
df3af773 153 51: Export recvmsg, sendmsg.
dbe67a81 154 52: Export strptime
feb7f1a9 155 53: Export strlcat, strlcpy.
b7e51146 156 54: Export __fpclassifyd, __fpclassifyf, __signbitd, __signbitf.
bf47141f 157 55: Export fcloseall, fcloseall_r.
667f875d 158 56: Make ntsec on by default.
5519d543 159 57: Export setgroups.
c7e2187a 160 58: Export memalign, valloc, malloc_trim, malloc_usable_size, mallopt,
b59e1aac 161 malloc_stats
8dca9e23 162 59: getsid
281d8a32 163 60: MSG_NOSIGNAL
75d01d9e
CV
164 61: Export getc_unlocked, getchar_unlocked, putc_unlocked,
165 putchar_unlocked
8efb9fd7
CF
166 62: Erroneously bumped
167 63: Export pututline
0be11474 168 64: Export fseeko, ftello
8efb9fd7 169 65: Export siginterrupt
05c728c4 170 66: Export nl_langinfo
cdaf8896 171 67: Export pthread_getsequence_np
838ad582 172 68: Export netdb stuff
11b087d5 173 69: Export strtof
70d61f30 174 70: Export asprintf, _asprintf_r, vasprintf, _vasprintf_r
afa378e7 175 71: Export strerror_r
89f7e8d1 176 72: Export nanosleep
7d33eefa 177 73: Export setreuid32, setreuid, setregid32, setregid
f655eadf
CF
178 74: Export _strtold a64l hcreate hcreate_r hdestroy hdestroy_r hsearch
179 hsearch_r isblank iswalnum iswalpha iswblank iswcntrl iswctype
180 iswdigit iswgraph iswlower iswprint iswpunct iswspace iswupper
181 iswxdigit l64a mbrlen mbrtowc mbsinit mbsrtowcs mempcpy
182 on_exit setbuffer setlinebuf strndup strnlen tdelete tdestroy
183 tfind towctrans towlower towupper tsearch twalk wcrtomb wcscat
184 wcschr wcscpy wcscspn wcslcat wcslcpy wcsncat wcsncmp wcsncpy
185 wcspbrk wcsrchr wcsrtombs wcsspn wcsstr wctob wctob wctrans
186 wctype wmemchr wmemcmp wmemcpy wmemmove wmemset
8fc16812
CF
187 75: Export exp2 exp2f fdim fdimf fma fmaf fmax fmaxf fmin fminf lrint
188 lrintf lround lroundf nearbyint nearbyintf remquo remquof
189 round roundf scalbln scalblnf sincos sincosf tgamma tgammaf
190 truncf
878e60c5 191 76: mallinfo
005c3065 192 77: thread-safe exit/at_exit
f194ba1f 193 78: Use stat and fstat rather than _stat, and _fstat.
de9e39f7 194 Export btowc and trunc.
f194ba1f 195 79: Export acl32 aclcheck32 aclfrommode32 aclfrompbits32 aclfromtext32
b1aae492
CV
196 aclsort32 acltomode32 acltopbits32 acltotext32 facl32
197 fgetpos64 fopen64 freopen64 fseeko64 fsetpos64 ftello64
198 _open64 _lseek64 _fstat64 _stat64 mknod32
00d296a3 199 80: Export pthread_rwlock stuff
5a4a19b3 200 81: CW_CHECK_NTSEC addition to external.cc
ac5ec961 201 82: Export wcscoll wcswidth wcwidth
c448f78f 202 83: Export gethostid
99b1a40d 203 84: Pty open allocates invisible console. 64 bit interface
3e66a81c 204 85: Export new 32/64 functions from API 0.79 only with leading
de9e39f7
CF
205 underscore. No problems with backward compatibility since no
206 official release has been made so far. This change removes
207 exported symbols like fopen64, which might confuse configure.
10bada05 208 86: Export ftok
54152c7e 209 87: Export vsyslog
c433f461 210 88: Export _getreent
1fbeb827 211 89: Export __mempcpy
86ed5c88 212 90: Export _fopen64
dcb6ce0c 213 91: Export argz_add argz_add_sep argz_append argz_count argz_create
24efca14
CV
214 argz_create_sep argz_delete argz_extract argz_insert
215 argz_next argz_replace argz_stringify envz_add envz_entry
216 envz_get envz_merge envz_remove envz_strip
34a1d63d
CV
217 92: Export getusershell, setusershell, endusershell
218 93: Export daemon, forkpty, openpty, iruserok, ruserok, login_tty,
219 openpty, forkpty, revoke, logwtmp, updwtmp
932a40e8 220 94: Export getopt, getopt_long, optarg, opterr, optind, optopt,
de9e39f7 221 optreset, __check_rhosts_file, __rcmd_errstr.
e217832c 222 95: Export shmat, shmctl, shmdt, shmget.
5ec9ea21 223 96: CW_GET_ERRNO_FROM_WINERROR addition to external.cc
07233966 224 97: Export sem_open, sem_close, sem_timedwait, sem_getvalue.
56a4ceac 225 98: Export _tmpfile64.
bcd06214 226 99: CW_GET_POSIX_SECURITY_ATTRIBUTE addition to external.cc.
6ef3b76b 227 100: CW_GET_SHMLBA addition to external.cc.
3e68e19f 228 101: Export err, errx, verr, verrx, warn, warnx, vwarn, vwarnx.
8e68687d 229 102: CW_GET_UID_FROM_SID and CW_GET_GID_FROM_SID addition to external.cc.
6e17cee5 230 103: Export getprogname, setprogname.
a6df500f 231 104: Export msgctl, msgget, msgrcv, msgsnd, semctl, semget, semop.
9a4d574b 232 105: Export sigwait.
f3a1e23e 233 106: Export flock.
dc399868 234 107: Export fcntl64.
29d52c8a 235 108: Remove unused (hopefully) reent_data export.
fba870ac
CF
236 109: Oh well. Someone uses reent_data.
237 110: Export clock_gettime, sigwaitinfo, timer_create, timer_delete,
f6936c48 238 timer_settime
ca713cfa 239 111: Export sigqueue, sighold.
80c74a5f 240 112: Redefine some mtget fields.
dee56309
CV
241 113: Again redefine some mtget fields. Use mt_fileno and mt_blkno as
242 on Linux.
93d66ddc 243 114: Export rand_r, ttyname_r.
68509b30
CV
244 115: Export flockfile, ftrylockfile, funlockfile, getgrgid_r, getgrnam_r,
245 getlogin_r.
41bba72e 246 116: Export atoll.
2ef89b22 247 117: Export utmpx functions, Return utmp * from pututent.
72c1491b 248 118: Export getpriority, setpriority.
a62f6b80 249 118: Export fdatasync.
1fd5e000
CF
250 */
251
77f4a250
CF
252 /* Note that we forgot to bump the api for ualarm, strtoll, strtoull */
253
1fd5e000 254#define CYGWIN_VERSION_API_MAJOR 0
a62f6b80 255#define CYGWIN_VERSION_API_MINOR 119
1fd5e000
CF
256
257 /* There is also a compatibity version number associated with the
258 shared memory regions. It is incremented when incompatible
259 changes are made to the shared memory region *or* to any named
260 shared mutexes, semaphores, etc. The arbitrary starting
656a999a
CF
261 version was 0 (cygwin release 98r2).
262 Bump to 4 since this hasn't been rigorously updated in a
263 while. */
1fd5e000 264
656a999a 265#define CYGWIN_VERSION_SHARED_DATA 4
1fd5e000
CF
266
267 /* An identifier used in the names used to create shared objects.
268 The full names include the CYGWIN_VERSION_SHARED_DATA version
269 as well as this identifier. */
270
271#define CYGWIN_VERSION_DLL_IDENTIFIER "cygwin1"
272
273 /* The Cygwin mount table interface in the Win32 registry also
274 has a version number associated with it in case that is
275 changed in a non-backwards compatible fashion. Increment this
276 version number whenever incompatible changes in mount table
277 registry usage are made.
278
279 1: Original number version.
280 2: New mount registry layout, system-wide mount accessibility.
281 */
282
283#define CYGWIN_VERSION_MOUNT_REGISTRY 2
284
285 /* Identifiers used in the Win32 registry. */
286
287#define CYGWIN_INFO_CYGNUS_REGISTRY_NAME "Cygnus Solutions"
288#define CYGWIN_INFO_CYGWIN_REGISTRY_NAME "Cygwin"
289#define CYGWIN_INFO_PROGRAM_OPTIONS_NAME "Program Options"
290#define CYGWIN_INFO_CYGWIN_MOUNT_REGISTRY_NAME "mounts v2"
a98b1584
CF
291#define CYGWIN_INFO_CYGDRIVE_FLAGS "cygdrive flags"
292#define CYGWIN_INFO_CYGDRIVE_PREFIX "cygdrive prefix"
293#define CYGWIN_INFO_CYGDRIVE_DEFAULT_PREFIX "/cygdrive"
1fd5e000
CF
294
295 /* In addition to the above version number strings, the build
296 process adds some strings that may be useful in
297 debugging/identifying a particular Cygwin DLL:
298
299 The mkvers.sh script at the top level produces a .cc file
300 which initializes a cygwin_version structure based on the
301 above version information and creates a string table for
302 grepping via "fgrep '%%%' cygwinwhatever.dll" if you are
303 using GNU grep. Otherwise you may want to do a
304 "strings cygwinwhatever.dll | fgrep '%%%'" instead.
305
306 This will produce output such as:
307
308 %%% Cygwin dll_identifier: cygwin
309 %%% Cygwin api_major: 0
310 %%% Cygwin api_minor: 0
311 %%% Cygwin dll_major: 19
312 %%% Cygwin dll_minor: 6
313 %%% Cygwin shared_data: 1
314 %%% Cygwin registry: b15
315 %%% Cygwin build date: Wed Oct 14 16:26:51 EDT 1998
316 %%% Cygwin shared id: cygwinS1
317
318 This information can also be obtained through a call to
319 cygwin_internal (CW_GETVERSIONINFO).
320 */
321
082512ae 322#define CYGWIN_VERSION_MAGIC(a, b) ((unsigned) ((((unsigned short) a) << 16) | (unsigned short) b))
77f4a250 323#define CYGWIN_VERSION_MAGIC_VERSION(a) ((unsigned) ((unsigned)a & 0xffff))
This page took 0.224803 seconds and 5 git commands to generate.