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