]>
Commit | Line | Data |
---|---|---|
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 | |
5 | This file is part of Cygwin. | |
6 | ||
7 | This software is a copyrighted work licensed under the terms of the | |
8 | Cygwin license. Please consult the file "CYGWIN_LICENSE" for | |
9 | details. */ | |
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)) |