Reformat comments in Cygwin's version.h, remove very outdated info

Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
This commit is contained in:
Corinna Vinschen 2016-04-12 15:23:41 +02:00
parent 308de2a1d4
commit 002c9b468d

View File

@ -9,74 +9,44 @@ This software is a copyrighted work licensed under the terms of the
Cygwin license. Please consult the file "CYGWIN_LICENSE" for Cygwin license. Please consult the file "CYGWIN_LICENSE" for
details. */ details. */
/* Cygwin versioning is relatively complicated because of its status /* The DLL major and minor numbers correspond to the "version of
as a shared library. Let's start with how versioning used to be done. the Cygwin shared library". This version is used to track important
changes to the DLL and is mainly informative in nature. */
Historical versioning in Cygwin 16.0 to 19.5:
In the olden days of Cygwin, we had a dll major and minor version
and a registry version. The major number started at 16 because the
"b15" GNU-Win32 release of the compiler tools was out when this
scheme was started. We incremented the DLL name frequently (for
every official release) and towards the end of this period every
release used a different shared memory area to prevent DLLs from
interfering with each other (embedding a build timestamp into the
name of the shared memory area). This turned out to be a Bad Idea
(tm) because people needed to mingle separate releases and have
them work together more than we thought they would. This was
especially problematic when tty info needed to be retained when an
old Cygwin executable executed a newer one.
In the old scheme, we incremented the major number whenever a
change to the dll invalidated existing executables. This can
happen for a number of reasons, including when functions are
removed from the export list of the dll. The minor number was
incremented when a change was made that we wanted to record, but
that didn't invalidate existing executables. Both numbers were
recorded in the executable and in the dll.
In October 1998 (starting with Cygwin 19.6), we started a new method
of Cygwin versioning: */
/* The DLL major and minor numbers correspond to the "version of
the Cygwin shared library". This version is used to track important
changes to the DLL and is mainly informative in nature. */
#define CYGWIN_VERSION_DLL_MAJOR 2005 #define CYGWIN_VERSION_DLL_MAJOR 2005
#define CYGWIN_VERSION_DLL_MINOR 1 #define CYGWIN_VERSION_DLL_MINOR 1
/* Major numbers before CYGWIN_VERSION_DLL_EPOCH are /* Major numbers before CYGWIN_VERSION_DLL_EPOCH are incompatible. */
incompatible. */
#define CYGWIN_VERSION_DLL_EPOCH 19 #define CYGWIN_VERSION_DLL_EPOCH 19
/* CYGWIN_VERSION_DLL_COMBINED gives us a single number /* CYGWIN_VERSION_DLL_COMBINED gives us a single number representing the
representing the combined DLL major and minor numbers. */ combined DLL major and minor numbers. */
/* WATCH OUT FOR OCTAL! Don't use, say, "00020" for 0.20 */ /* WATCH OUT FOR OCTAL! Don't use, say, "00020" for 0.20 */
#define CYGWIN_VERSION_DLL_MAKE_COMBINED(maj, min) (((maj) * 1000) + min) #define CYGWIN_VERSION_DLL_MAKE_COMBINED(maj, min) (((maj) * 1000) + min)
#define CYGWIN_VERSION_DLL_COMBINED \ #define CYGWIN_VERSION_DLL_COMBINED \
CYGWIN_VERSION_DLL_MAKE_COMBINED (CYGWIN_VERSION_DLL_MAJOR, CYGWIN_VERSION_DLL_MINOR) CYGWIN_VERSION_DLL_MAKE_COMBINED (CYGWIN_VERSION_DLL_MAJOR, CYGWIN_VERSION_DLL_MINOR)
/* Every version of cygwin <= this uses an old, incorrect method /* Every version of cygwin <= this uses an old, incorrect method to determine
to determine signal masks. */ signal masks. */
#define CYGWIN_VERSION_PER_PROCESS_API_VERSION_COMBINED(u) \ #define CYGWIN_VERSION_PER_PROCESS_API_VERSION_COMBINED(u) \
CYGWIN_VERSION_DLL_MAKE_COMBINED ((u)->api_major, (u)->api_minor) CYGWIN_VERSION_DLL_MAKE_COMBINED ((u)->api_major, (u)->api_minor)
#define CYGWIN_VERSION_USER_API_VERSION_COMBINED \ #define CYGWIN_VERSION_USER_API_VERSION_COMBINED \
CYGWIN_VERSION_PER_PROCESS_API_VERSION_COMBINED (user_data) CYGWIN_VERSION_PER_PROCESS_API_VERSION_COMBINED (user_data)
/* API versions <= this had a termios structure whose members were /* API versions <= this had a termios structure whose members were too small
too small to accomodate modern settings. */ to accomodate modern settings. */
#define CYGWIN_VERSION_DLL_OLD_TERMIOS 5 #define CYGWIN_VERSION_DLL_OLD_TERMIOS 5
#define CYGWIN_VERSION_DLL_IS_OLD_TERMIOS \ #define CYGWIN_VERSION_DLL_IS_OLD_TERMIOS \
(CYGWIN_VERSION_USER_API_VERSION_COMBINED <= CYGWIN_VERSION_DLL_OLD_TERMIOS) (CYGWIN_VERSION_USER_API_VERSION_COMBINED <= CYGWIN_VERSION_DLL_OLD_TERMIOS)
#define CYGWIN_VERSION_DLL_MALLOC_ENV 28 #define CYGWIN_VERSION_DLL_MALLOC_ENV 28
/* Old APIs had getc/putc macros that conflict with new CR/LF
handling in the stdio buffers */ /* Old APIs had getc/putc macros that conflict with new CR/LF handling in the
stdio buffers */
#define CYGWIN_VERSION_OLD_STDIO_CRLF_HANDLING \ #define CYGWIN_VERSION_OLD_STDIO_CRLF_HANDLING \
(CYGWIN_VERSION_USER_API_VERSION_COMBINED <= 20) (CYGWIN_VERSION_USER_API_VERSION_COMBINED <= 20)
@ -109,458 +79,447 @@ details. */
#define CYGWIN_VERSION_CYGWIN_CONV 181 #define CYGWIN_VERSION_CYGWIN_CONV 181
/* API_MAJOR 0.0: Initial version. API_MINOR changes: /* API_MAJOR 0.0: Initial version. API_MINOR changes:
1: Export cygwin32_ calls as cygwin_ as well. 1: Export cygwin32_ calls as cygwin_ as well.
2: Export j1, jn, y1, yn. 2: Export j1, jn, y1, yn.
3: Export dll_noncygwin_dllcrt0. 3: Export dll_noncygwin_dllcrt0.
4: New socket ioctls, revamped ifconf support. 4: New socket ioctls, revamped ifconf support.
5: Thread support/exports. 5: Thread support/exports.
6: Change in termios handling. 6: Change in termios handling.
7: Export scandir and alphasort. 7: Export scandir and alphasort.
8: Export _ctype_, _sys_errlist, _sys_nerr. 8: Export _ctype_, _sys_errlist, _sys_nerr.
9: Mount-related changes, new cygwin_umount export. 9: Mount-related changes, new cygwin_umount export.
Raw device support (tape, floppies). Raw device support (tape, floppies).
10: Fast math routine support added. 10: Fast math routine support added.
11: Export seekdir, telldir. 11: Export seekdir, telldir.
12: Export pthread_join, pthread_detach. 12: Export pthread_join, pthread_detach.
13: Export math funcs gamma and friends, also _j0, _j1, etc. 13: Export math funcs gamma and friends, also _j0, _j1, etc.
14: Export snprintf and vnsprintf. 14: Export snprintf and vnsprintf.
15: Export glob 15: Export glob
16: Export cygwin_stackdump 16: Export cygwin_stackdump
17: Export fast math stuff 17: Export fast math stuff
18: Stop exporting _strace_wm 18: Stop exporting _strace_wm
19: Export fchown, lchown, lacl 19: Export fchown, lchown, lacl
20: regsub, inet_network 20: regsub, inet_network
21: incompatible change to stdio cr/lf and buffering 21: incompatible change to stdio cr/lf and buffering
22: Export cygwin_logon_user, cygwin_set_impersonation_token. 22: Export cygwin_logon_user, cygwin_set_impersonation_token.
geteuid, getegid return effective uid/gid. geteuid, getegid return effective uid/gid.
getuid, getgid return real uid/gid. getuid, getgid return real uid/gid.
seteuid, setegid set only effective uid/gid. seteuid, setegid set only effective uid/gid.
setuid, setgid set effective and real uid/gid. setuid, setgid set effective and real uid/gid.
23: Export new dll_crt0 interface and cygwin_user_data for use 23: Export new dll_crt0 interface and cygwin_user_data for use
with crt0 startup code. with crt0 startup code.
24: Export poll and _poll. 24: Export poll and _poll.
25: Export getmode and _getmode. 25: Export getmode and _getmode.
26: CW_GET_CYGDRIVE_PREFIXES addition to external.cc 26: CW_GET_CYGDRIVE_PREFIXES addition to external.cc
27: CW_GETPINFO_FULL addition to external.cc 27: CW_GETPINFO_FULL addition to external.cc
28: Accidentally bumped by cgf 28: Accidentally bumped by cgf
29: Export hstrerror 29: Export hstrerror
30: CW_GET_CYGDRIVE_INFO addition to external.cc 30: CW_GET_CYGDRIVE_INFO addition to external.cc
31: Export inet_aton 31: Export inet_aton
32: Export getrlimit/setrlimit 32: Export getrlimit/setrlimit
33: Export setlogmask 33: Export setlogmask
34: Separated out mount table 34: Separated out mount table
35: Export drand48, erand48, jrand48, lcong48, lrand48, 35: Export drand48, erand48, jrand48, lcong48, lrand48,
mrand48, nrand48, seed48, and srand48. mrand48, nrand48, seed48, and srand48.
36: Added _cygwin_S_IEXEC, et al 36: Added _cygwin_S_IEXEC, et al
37: [f]pathconv support _PC_POSIX_PERMISSIONS and _PC_POSIX_SECURITY 37: [f]pathconv support _PC_POSIX_PERMISSIONS and _PC_POSIX_SECURITY
38: vscanf, vscanf_r, and random pthread functions 38: vscanf, vscanf_r, and random pthread functions
39: asctime_r, ctime_r, gmtime_r, localtime_r 39: asctime_r, ctime_r, gmtime_r, localtime_r
40: fchdir 40: fchdir
41: __signgam 41: __signgam
42: sys_errlist, sys_nerr 42: sys_errlist, sys_nerr
43: sigsetjmp, siglongjmp fixed 43: sigsetjmp, siglongjmp fixed
44: Export dirfd 44: Export dirfd
45: perprocess change, gamma_r, gammaf_r, lgamma_r, lgammaf_r 45: perprocess change, gamma_r, gammaf_r, lgamma_r, lgammaf_r
46: Remove cygwin_getshared 46: Remove cygwin_getshared
47: Report EOTWarningZoneSize in struct mtget. 47: Report EOTWarningZoneSize in struct mtget.
48: Export "posix" regex functions 48: Export "posix" regex functions
49: Export setutent, endutent, utmpname, getutent, getutid, getutline. 49: Export setutent, endutent, utmpname, getutent, getutid, getutline.
50: Export fnmatch. 50: Export fnmatch.
51: Export recvmsg, sendmsg. 51: Export recvmsg, sendmsg.
52: Export strptime 52: Export strptime
53: Export strlcat, strlcpy. 53: Export strlcat, strlcpy.
54: Export __fpclassifyd, __fpclassifyf, __signbitd, __signbitf. 54: Export __fpclassifyd, __fpclassifyf, __signbitd, __signbitf.
55: Export fcloseall, fcloseall_r. 55: Export fcloseall, fcloseall_r.
56: Make ntsec on by default. 56: Make ntsec on by default.
57: Export setgroups. 57: Export setgroups.
58: Export memalign, valloc, malloc_trim, malloc_usable_size, mallopt, 58: Export memalign, valloc, malloc_trim, malloc_usable_size, mallopt,
malloc_stats malloc_stats
59: getsid 59: getsid
60: MSG_NOSIGNAL 60: MSG_NOSIGNAL
61: Export getc_unlocked, getchar_unlocked, putc_unlocked, 61: Export getc_unlocked, getchar_unlocked, putc_unlocked,
putchar_unlocked putchar_unlocked
62: Erroneously bumped 62: Erroneously bumped
63: Export pututline 63: Export pututline
64: Export fseeko, ftello 64: Export fseeko, ftello
65: Export siginterrupt 65: Export siginterrupt
66: Export nl_langinfo 66: Export nl_langinfo
67: Export pthread_getsequence_np 67: Export pthread_getsequence_np
68: Export netdb stuff 68: Export netdb stuff
69: Export strtof 69: Export strtof
70: Export asprintf, _asprintf_r, vasprintf, _vasprintf_r 70: Export asprintf, _asprintf_r, vasprintf, _vasprintf_r
71: Export strerror_r 71: Export strerror_r
72: Export nanosleep 72: Export nanosleep
73: Export setreuid32, setreuid, setregid32, setregid 73: Export setreuid32, setreuid, setregid32, setregid
74: Export _strtold a64l hcreate hcreate_r hdestroy hdestroy_r hsearch 74: Export _strtold a64l hcreate hcreate_r hdestroy hdestroy_r hsearch
hsearch_r isblank iswalnum iswalpha iswblank iswcntrl iswctype hsearch_r isblank iswalnum iswalpha iswblank iswcntrl iswctype
iswdigit iswgraph iswlower iswprint iswpunct iswspace iswupper iswdigit iswgraph iswlower iswprint iswpunct iswspace iswupper
iswxdigit l64a mbrlen mbrtowc mbsinit mbsrtowcs mempcpy iswxdigit l64a mbrlen mbrtowc mbsinit mbsrtowcs mempcpy
on_exit setbuffer setlinebuf strndup strnlen tdelete tdestroy on_exit setbuffer setlinebuf strndup strnlen tdelete tdestroy
tfind towctrans towlower towupper tsearch twalk wcrtomb wcscat tfind towctrans towlower towupper tsearch twalk wcrtomb wcscat
wcschr wcscpy wcscspn wcslcat wcslcpy wcsncat wcsncmp wcsncpy wcschr wcscpy wcscspn wcslcat wcslcpy wcsncat wcsncmp wcsncpy
wcspbrk wcsrchr wcsrtombs wcsspn wcsstr wctob wctob wctrans wcspbrk wcsrchr wcsrtombs wcsspn wcsstr wctob wctob wctrans
wctype wmemchr wmemcmp wmemcpy wmemmove wmemset wctype wmemchr wmemcmp wmemcpy wmemmove wmemset
75: Export exp2 exp2f fdim fdimf fma fmaf fmax fmaxf fmin fminf lrint 75: Export exp2 exp2f fdim fdimf fma fmaf fmax fmaxf fmin fminf lrint
lrintf lround lroundf nearbyint nearbyintf remquo remquof lrintf lround lroundf nearbyint nearbyintf remquo remquof
round roundf scalbln scalblnf sincos sincosf tgamma tgammaf round roundf scalbln scalblnf sincos sincosf tgamma tgammaf
truncf truncf
76: mallinfo 76: mallinfo
77: thread-safe exit/at_exit 77: thread-safe exit/at_exit
78: Use stat and fstat rather than _stat, and _fstat. 78: Use stat and fstat rather than _stat, and _fstat.
Export btowc and trunc. Export btowc and trunc.
79: Export acl32 aclcheck32 aclfrommode32 aclfrompbits32 aclfromtext32 79: Export acl32 aclcheck32 aclfrommode32 aclfrompbits32 aclfromtext32
aclsort32 acltomode32 acltopbits32 acltotext32 facl32 aclsort32 acltomode32 acltopbits32 acltotext32 facl32
fgetpos64 fopen64 freopen64 fseeko64 fsetpos64 ftello64 fgetpos64 fopen64 freopen64 fseeko64 fsetpos64 ftello64
_open64 _lseek64 _fstat64 _stat64 mknod32 _open64 _lseek64 _fstat64 _stat64 mknod32
80: Export pthread_rwlock stuff 80: Export pthread_rwlock stuff
81: CW_CHECK_NTSEC addition to external.cc 81: CW_CHECK_NTSEC addition to external.cc
82: Export wcscoll wcswidth wcwidth 82: Export wcscoll wcswidth wcwidth
83: Export gethostid 83: Export gethostid
84: Pty open allocates invisible console. 64 bit interface 84: Pty open allocates invisible console. 64 bit interface
85: Export new 32/64 functions from API 0.79 only with leading 85: Export new 32/64 functions from API 0.79 only with leading
underscore. No problems with backward compatibility since no underscore. No problems with backward compatibility since no
official release has been made so far. This change removes official release has been made so far. This change removes
exported symbols like fopen64, which might confuse configure. exported symbols like fopen64, which might confuse configure.
86: Export ftok 86: Export ftok
87: Export vsyslog 87: Export vsyslog
88: Export _getreent 88: Export _getreent
89: Export __mempcpy 89: Export __mempcpy
90: Export _fopen64 90: Export _fopen64
91: Export argz_add argz_add_sep argz_append argz_count argz_create 91: Export argz_add argz_add_sep argz_append argz_count argz_create
argz_create_sep argz_delete argz_extract argz_insert argz_create_sep argz_delete argz_extract argz_insert
argz_next argz_replace argz_stringify envz_add envz_entry argz_next argz_replace argz_stringify envz_add envz_entry
envz_get envz_merge envz_remove envz_strip envz_get envz_merge envz_remove envz_strip
92: Export getusershell, setusershell, endusershell 92: Export getusershell, setusershell, endusershell
93: Export daemon, forkpty, openpty, iruserok, ruserok, login_tty, 93: Export daemon, forkpty, openpty, iruserok, ruserok, login_tty,
openpty, forkpty, revoke, logwtmp, updwtmp openpty, forkpty, revoke, logwtmp, updwtmp
94: Export getopt, getopt_long, optarg, opterr, optind, optopt, 94: Export getopt, getopt_long, optarg, opterr, optind, optopt,
optreset, __check_rhosts_file, __rcmd_errstr. optreset, __check_rhosts_file, __rcmd_errstr.
95: Export shmat, shmctl, shmdt, shmget. 95: Export shmat, shmctl, shmdt, shmget.
96: CW_GET_ERRNO_FROM_WINERROR addition to external.cc 96: CW_GET_ERRNO_FROM_WINERROR addition to external.cc
97: Export sem_open, sem_close, sem_timedwait, sem_getvalue. 97: Export sem_open, sem_close, sem_timedwait, sem_getvalue.
98: Export _tmpfile64. 98: Export _tmpfile64.
99: CW_GET_POSIX_SECURITY_ATTRIBUTE addition to external.cc. 99: CW_GET_POSIX_SECURITY_ATTRIBUTE addition to external.cc.
100: CW_GET_SHMLBA addition to external.cc. 100: CW_GET_SHMLBA addition to external.cc.
101: Export err, errx, verr, verrx, warn, warnx, vwarn, vwarnx. 101: Export err, errx, verr, verrx, warn, warnx, vwarn, vwarnx.
102: CW_GET_UID_FROM_SID and CW_GET_GID_FROM_SID addition to external.cc. 102: CW_GET_UID_FROM_SID and CW_GET_GID_FROM_SID addition to external.cc.
103: Export getprogname, setprogname. 103: Export getprogname, setprogname.
104: Export msgctl, msgget, msgrcv, msgsnd, semctl, semget, semop. 104: Export msgctl, msgget, msgrcv, msgsnd, semctl, semget, semop.
105: Export sigwait. 105: Export sigwait.
106: Export flock. 106: Export flock.
107: Export fcntl64. 107: Export fcntl64.
108: Remove unused (hopefully) reent_data export. 108: Remove unused (hopefully) reent_data export.
109: Oh well. Someone uses reent_data. 109: Oh well. Someone uses reent_data.
110: Export clock_gettime, sigwaitinfo, timer_create, timer_delete, 110: Export clock_gettime, sigwaitinfo, timer_create, timer_delete,
timer_settime timer_settime
111: Export sigqueue, sighold. 111: Export sigqueue, sighold.
112: Redefine some mtget fields. 112: Redefine some mtget fields.
113: Again redefine some mtget fields. Use mt_fileno and mt_blkno as 113: Again redefine some mtget fields. Use mt_fileno and mt_blkno as
on Linux. on Linux.
114: Export rand_r, ttyname_r. 114: Export rand_r, ttyname_r.
115: Export flockfile, ftrylockfile, funlockfile, getgrgid_r, getgrnam_r, 115: Export flockfile, ftrylockfile, funlockfile, getgrgid_r, getgrnam_r,
getlogin_r. getlogin_r.
116: Export atoll. 116: Export atoll.
117: Export utmpx functions, Return utmp * from pututent. 117: Export utmpx functions, Return utmp * from pututent.
118: Export getpriority, setpriority. 118: Export getpriority, setpriority.
119: Export fdatasync. 119: Export fdatasync.
120: Export basename, dirname. 120: Export basename, dirname.
122: Export statvfs, fstatvfs. 122: Export statvfs, fstatvfs.
123: Export utmpxname. 123: Export utmpxname.
124: Add MAP_AUTOGROW flag to mmap. 124: Add MAP_AUTOGROW flag to mmap.
125: LD_PRELOAD/CW_HOOK available. 125: LD_PRELOAD/CW_HOOK available.
126: Export lsearch, lfind, timer_gettime. 126: Export lsearch, lfind, timer_gettime.
127: Export sigrelese. 127: Export sigrelese.
128: Export pselect. 128: Export pselect.
129: Export mkdtemp. 129: Export mkdtemp.
130: Export strtoimax, strtoumax, llabs, imaxabs, lldiv, imaxdiv. 130: Export strtoimax, strtoumax, llabs, imaxabs, lldiv, imaxdiv.
131: Export inet_ntop, inet_pton. 131: Export inet_ntop, inet_pton.
132: Add GLOB_LIMIT flag to glob. 132: Add GLOB_LIMIT flag to glob.
133: Export __getline, __getdelim. 133: Export __getline, __getdelim.
134: Export getline, getdelim. 134: Export getline, getdelim.
135: Export pread, pwrite 135: Export pread, pwrite
136: Add TIOCMBIS/TIOCMBIC ioctl codes. 136: Add TIOCMBIS/TIOCMBIC ioctl codes.
137: fts_children, fts_close, fts_get_clientptr, fts_get_stream, 137: fts_children, fts_close, fts_get_clientptr, fts_get_stream,
fts_open, fts_read, fts_set, fts_set_clientptr, ftw, nftw. fts_open, fts_read, fts_set, fts_set_clientptr, ftw, nftw.
138: Export readdir_r. 138: Export readdir_r.
139: Start using POSIX definition of struct msghdr and WinSock2 139: Start using POSIX definition of struct msghdr and WinSock2
IPPROTO_IP values. IPPROTO_IP values.
140: Export mlock, munlock. 140: Export mlock, munlock.
141: Export futimes, lutimes. 141: Export futimes, lutimes.
142: Export memmem 142: Export memmem
143: Export clock_getres, clock_setres 143: Export clock_getres, clock_setres
144: Export timelocal, timegm. 144: Export timelocal, timegm.
145: Add MAP_NORESERVE flag to mmap. 145: Add MAP_NORESERVE flag to mmap.
146: Change SI_USER definition. FIXME: Need to develop compatibility 146: Change SI_USER definition. FIXME: Need to develop compatibility
macro for this? macro for this?
147: Eliminate problematic d_ino from dirent structure. unsetenv now 147: Eliminate problematic d_ino from dirent structure. unsetenv now
returns int, as per linux. returns int, as per linux.
148: Add open(2) flags O_SYNC, O_RSYNC, O_DSYNC and O_DIRECT. 148: Add open(2) flags O_SYNC, O_RSYNC, O_DSYNC and O_DIRECT.
149: Add open(2) flag O_NOFOLLOW. 149: Add open(2) flag O_NOFOLLOW.
150: Export getsubopt. 150: Export getsubopt.
151: Export __opendir_with_d_ino 151: Export __opendir_with_d_ino
152: Revert to having d_ino in dirent unconditionally. 152: Revert to having d_ino in dirent unconditionally.
153: Export updwtmpx, Implement CW_SETUP_WINENV. 153: Export updwtmpx, Implement CW_SETUP_WINENV.
154: Export sigset, sigignore. 154: Export sigset, sigignore.
155: Export __isinff, __isinfd, __isnanf, __isnand. 155: Export __isinff, __isinfd, __isnanf, __isnand.
156: Export __srbuf_r, __swget_r. 156: Export __srbuf_r, __swget_r.
157: Export gai_strerror, getaddrinfo, getnameinfo, freeaddrinfo, 157: Export gai_strerror, getaddrinfo, getnameinfo, freeaddrinfo,
in6addr_any, in6addr_loopback. in6addr_any, in6addr_loopback.
158: Export bindresvport, bindresvport_sa, iruserok_sa, rcmd_af, 158: Export bindresvport, bindresvport_sa, iruserok_sa, rcmd_af,
rresvport_af. rresvport_af.
159: Export posix_openpt. 159: Export posix_openpt.
160: Export posix_fadvise, posix_fallocate. 160: Export posix_fadvise, posix_fallocate.
161: Export resolver functions. 161: Export resolver functions.
162: New struct ifreq. Export if_nametoindex, if_indextoname, 162: New struct ifreq. Export if_nametoindex, if_indextoname,
if_nameindex, if_freenameindex. if_nameindex, if_freenameindex.
163: Export posix_madvise, posix_memalign. 163: Export posix_madvise, posix_memalign.
164: Export shm_open, shm_unlink. 164: Export shm_open, shm_unlink.
165: Export mq_close, mq_getattr, mq_notify, mq_open, mq_receive, 165: Export mq_close, mq_getattr, mq_notify, mq_open, mq_receive,
mq_send, mq_setattr, mq_timedreceive, mq_timedsend, mq_unlink. mq_send, mq_setattr, mq_timedreceive, mq_timedsend, mq_unlink.
166: Export sem_unlink. 166: Export sem_unlink.
167: Add st_birthtim to struct stat. 167: Add st_birthtim to struct stat.
168: Export asnprintf, dprintf, _Exit, vasnprintf, vdprintf. 168: Export asnprintf, dprintf, _Exit, vasnprintf, vdprintf.
169: Export confstr. 169: Export confstr.
170: Export insque, remque. 170: Export insque, remque.
171: Export exp10, exp10f, pow10, pow10f, strcasestr, funopen, 171: Export exp10, exp10f, pow10, pow10f, strcasestr, funopen,
fopencookie. fopencookie.
172: Export getifaddrs, freeifaddrs. 172: Export getifaddrs, freeifaddrs.
173: Export __assert_func. 173: Export __assert_func.
174: Export stpcpy, stpncpy. 174: Export stpcpy, stpncpy.
175: Export fdopendir. 175: Export fdopendir.
176: Export wcstol, wcstoll, wcstoul, wcstoull, wcsxfrm. 176: Export wcstol, wcstoll, wcstoul, wcstoull, wcsxfrm.
177: Export sys_sigabbrev 177: Export sys_sigabbrev
178: Export wcpcpy, wcpncpy. 178: Export wcpcpy, wcpncpy.
179: Export _f_llrint, _f_llrintf, _f_llrintl, _f_lrint, _f_lrintf, 179: Export _f_llrint, _f_llrintf, _f_llrintl, _f_lrint, _f_lrintf,
_f_lrintl, _f_rint, _f_rintf, _f_rintl, llrint, llrintf, llrintl, _f_lrintl, _f_rint, _f_rintf, _f_rintl, llrint, llrintf, llrintl,
rintl, lrintl, and redirect exports of lrint, lrintf, rint, rintf. rintl, lrintl, and redirect exports of lrint, lrintf, rint, rintf.
180: Export getxattr, lgetxattr, fgetxattr, listxattr, llistxattr, 180: Export getxattr, lgetxattr, fgetxattr, listxattr, llistxattr,
flistxattr, setxattr, lsetxattr, fsetxattr, removexattr, flistxattr, setxattr, lsetxattr, fsetxattr, removexattr,
lremovexattr, fremovexattr. lremovexattr, fremovexattr.
181: Export cygwin_conv_path, cygwin_create_path, cygwin_conv_path_list. 181: Export cygwin_conv_path, cygwin_create_path, cygwin_conv_path_list.
182: Export lockf. 182: Export lockf.
FIXME: Removed 12 year old and entirely wrong wprintf function at 183: Export open_memstream, fmemopen.
this point. We need a working implementation soon. 184: Export openat, faccessat, fchmodat, fchownat, fstatat, futimesat,
183: Export open_memstream, fmemopen. linkat, mkdirat, mkfifoat, mknodat, readlinkat, renameat, symlinkat,
184: Export openat, faccessat, fchmodat, fchownat, fstatat, futimesat, unlinkat.
linkat, mkdirat, mkfifoat, mknodat, readlinkat, renameat, symlinkat, 185: Export futimens, utimensat.
unlinkat. 186: Remove ancient V8 regexp functions. Also eliminate old crt0 interface
185: Export futimens, utimensat. which provided its own user_data structure.
186: Remove ancient V8 regexp functions. Also eliminate old crt0 interface 187: Export cfmakeraw.
which provided its own user_data structure. 188: Export CW_SET_PRIV_KEY.
187: Export cfmakeraw. 189: Implement dirent.d_type.
188: Export CW_SET_PRIV_KEY. 190: Export fgetwc, fgetws, fputwc, fputws, fwide, getwc, getwchar,
189: Implement dirent.d_type. putwc, putwchar, ungetwc.
190: Export fgetwc, fgetws, fputwc, fputws, fwide, getwc, getwchar, 191: Export glob_pattern_p
putwc, putwchar, ungetwc. 192: CW_SETERRNO added
191: Export glob_pattern_p 193: Export wcstok.
192: CW_SETERRNO added 194: fcntl.h flags O_DIRECTORY, O_EXEC and O_SEARCH added.
193: Export wcstok. 195: Export wcstod, wcstof.
194: fcntl.h flags O_DIRECTORY, O_EXEC and O_SEARCH added. 196: Export wcsnlen.
195: Export wcstod, wcstof. 197: Export wcstoimax, wcstoumax.
196: Export wcsnlen. 198: Export reallocf.
197: Export wcstoimax, wcstoumax. 199: Export open_wmemstream.
198: Export reallocf. 200: Export mbsnrtowcs, wcsnrtombs.
199: Export open_wmemstream. 201: Export wprintf, fwprintf, swprintf, vwprintf, vfwprintf, vswprintf.
200: Export mbsnrtowcs, wcsnrtombs. 202: Export gethostbyname2.
201: Export wprintf, fwprintf, swprintf, vwprintf, vfwprintf, vswprintf. 203: Export wcsftime.
202: Export gethostbyname2. 204: recv/send flag MSG_DONTWAIT added.
203: Export wcsftime. 205: Export wscanf, fwscanf, swscanf, vwscanf, vfwscanf, vswscanf.
204: recv/send flag MSG_DONTWAIT added. 206: Export wcscasecmp, wcsncasecmp.
205: Export wscanf, fwscanf, swscanf, vwscanf, vfwscanf, vswscanf. 207: Export wcsdup.
206: Export wcscasecmp, wcsncasecmp. 208: Export log2, log2f.
207: Export wcsdup. 209: Export wordexp, wordfree.
208: Export log2, log2f. 210: New ctype layout using variable ctype pointer. Export __ctype_ptr__.
209: Export wordexp, wordfree. 211: Export fpurge, mkstemps.
210: New ctype layout using variable ctype pointer. Export __ctype_ptr__. 212: Add and export libstdc++ malloc wrappers.
211: Export fpurge, mkstemps. 213: Export canonicalize_file_name, eaccess, euidaccess.
212: Add and export libstdc++ malloc wrappers. 214: Export execvpe, fexecve.
213: Export canonicalize_file_name, eaccess, euidaccess. 215: CW_EXIT_PROCESS added.
214: Export execvpe, fexecve. 216: CW_SET_EXTERNAL_TOKEN added.
215: CW_EXIT_PROCESS added. 217: CW_GET_INSTKEY added.
216: CW_SET_EXTERNAL_TOKEN added. 218: Export get_nprocs, get_nprocs_conf, get_phys_pages, get_avphys_pages.
217: CW_GET_INSTKEY added. 219: Export dup3, pipe2, O_CLOEXEC, F_DUPFD_CLOEXEC.
218: Export get_nprocs, get_nprocs_conf, get_phys_pages, get_avphys_pages. 220: Export accept4, SOCK_CLOEXEC, SOCK_NONBLOCK.
219: Export dup3, pipe2, O_CLOEXEC, F_DUPFD_CLOEXEC. 221: Export strfmon.
220: Export accept4, SOCK_CLOEXEC, SOCK_NONBLOCK. 222: CW_INT_SETLOCALE added.
221: Export strfmon. 223: SIGPWR added.
222: CW_INT_SETLOCALE added. 224: Export xdr* functions.
223: SIGPWR added. 225: Export __xdr* functions.
224: Export xdr* functions. 226: Export __locale_mb_cur_max.
225: Export __xdr* functions. 227: Add pseudo_reloc_start, pseudo_reloc_end, image_base to per_process.
226: Export __locale_mb_cur_max. 228: CW_STRERROR added.
227: Add pseudo_reloc_start, pseudo_reloc_end, image_base to per_process. 229: Add mkostemp, mkostemps.
228: CW_STRERROR added. 230: Add CLOCK_MONOTONIC.
229: Add mkostemp, mkostemps. 231: Add fenv.h functions.
230: Add CLOCK_MONOTONIC. 232: Export cacos, cacosf, cacosh, cacoshf, carg, cargf, casin, casinf,
231: Add fenv.h functions. casinh, casinhf, catan, catanf, catanh, catanhf, ccos, ccosf, ccosh,
232: Export cacos, cacosf, cacosh, cacoshf, carg, cargf, casin, casinf, ccoshf, cexp, cexpf, cimag, cimagf, clog, clogf, conj, conjf, cpow,
casinh, casinhf, catan, catanf, catanh, catanhf, ccos, ccosf, ccosh, cpowf, cproj, cprojf, creal, crealf, csin, csinf, csinh, csinhf,
ccoshf, cexp, cexpf, cimag, cimagf, clog, clogf, conj, conjf, cpow, csqrt, csqrtf, ctan, ctanf, ctanh, ctanhf.
cpowf, cproj, cprojf, creal, crealf, csin, csinf, csinh, csinhf, 233: Add TIOCGPGRP, TIOCSPGRP. Export llround, llroundf.
csqrt, csqrtf, ctan, ctanf, ctanh, ctanhf. 234: Export program_invocation_name, program_invocation_short_name.
233: Add TIOCGPGRP, TIOCSPGRP. Export llround, llroundf. 235: Export madvise.
234: Export program_invocation_name, program_invocation_short_name. 236: Export pthread_yield, __xpg_strerror_r.
235: Export madvise. 237: Export strchrnul.
236: Export pthread_yield, __xpg_strerror_r. 238: Export pthread_spin_destroy, pthread_spin_init, pthread_spin_lock,
237: Export strchrnul. pthread_spin_trylock, pthread_spin_unlock.
238: Export pthread_spin_destroy, pthread_spin_init, pthread_spin_lock, 239: Export pthread_setschedprio.
pthread_spin_trylock, pthread_spin_unlock. 240: Export ppoll.
239: Export pthread_setschedprio. 241: Export pthread_attr_getstack, pthread_attr_getstackaddr,
240: Export ppoll. pthread_getattr_np.
241: Export pthread_attr_getstack, pthread_attr_getstackaddr, 242: Export psiginfo, psignal, sys_siglist.
pthread_getattr_np. 243: Export sysinfo.
242: Export psiginfo, psignal, sys_siglist. 244: Export clock_settime.
243: Export sysinfo. 245: Export pthread_attr_getguardsize, pthread_attr_setguardsize,
244: Export clock_settime. pthread_attr_setstack, pthread_attr_setstackaddr.
245: Export pthread_attr_getguardsize, pthread_attr_setguardsize, 246: Add CLOCK_PROCESS_CPUTIME_ID, CLOCK_THREAD_CPUTIME_ID.
pthread_attr_setstack, pthread_attr_setstackaddr. Export clock_getcpuclockid, pthread_getcpuclockid.
246: Add CLOCK_PROCESS_CPUTIME_ID, CLOCK_THREAD_CPUTIME_ID. 247: Export error, error_at_line, error_message_count, error_one_per_line,
Export clock_getcpuclockid, pthread_getcpuclockid. error_print_progname.
247: Export error, error_at_line, error_message_count, error_one_per_line, 248: Export __fpurge.
error_print_progname. 249: Export pthread_condattr_getclock, pthread_condattr_setclock.
248: Export __fpurge. 250: Export clock_nanosleep.
249: Export pthread_condattr_getclock, pthread_condattr_setclock. 251: RTLD_NODELETE, RTLD_NOLOAD, RTLD_DEEPBIND added.
250: Export clock_nanosleep. 252: CW_CVT_ENV_TO_WINENV added.
251: RTLD_NODELETE, RTLD_NOLOAD, RTLD_DEEPBIND added. 253: Export TIOCSCTTY, tcgetsid.
252: CW_CVT_ENV_TO_WINENV added. 254: Export getgrouplist.
253: Export TIOCSCTTY, tcgetsid. 255: Export ptsname_r.
254: Export getgrouplist. 256: Add CW_ALLOC_DRIVE_MAP, CW_MAP_DRIVE_MAP, CW_FREE_DRIVE_MAP.
255: Export ptsname_r. 257: Export getpt.
256: Add CW_ALLOC_DRIVE_MAP, CW_MAP_DRIVE_MAP, CW_FREE_DRIVE_MAP. 258: Export get_current_dir_name.
257: Export getpt. 259: Export pthread_sigqueue.
258: Export get_current_dir_name. 260: Export scandirat.
259: Export pthread_sigqueue. 261: Export memrchr.
260: Export scandirat. 262: Export getmntent_r.
261: Export memrchr. 263: Export cfsetspeed.
262: Export getmntent_r. 264: Consistently export strtold
263: Export cfsetspeed. 265: Export __b64_ntop, __b64_pton.
264: Consistently export strtold 266: Export arc4random, arc4random_addrandom, arc4random_buf,
265: Export __b64_ntop, __b64_pton. arc4random_stir, arc4random_uniform.
266: Export arc4random, arc4random_addrandom, arc4random_buf, 267: Export rawmemchr.
arc4random_stir, arc4random_uniform. 268: Export GetCommandLineA, GetCommandLineW
267: Export rawmemchr. 269: Allow application override of posix_memalign.
268: Export GetCommandLineA, GetCommandLineW 270: Redefine mtget.mt_resid field to contain current partition as well
269: Allow application override of posix_memalign. as number of partitions on tape.
270: Redefine mtget.mt_resid field to contain current partition as well 271: Export posix_spawn, posix_spawnp, and helper functions.
as number of partitions on tape. 272: Export tm_gmtoff and tm_zone members.
271: Export posix_spawn, posix_spawnp, and helper functions. 273: Skipped.
272: Export tm_gmtoff and tm_zone members. 274: Export __cxa_atexit and __cxa_finalize.
273: Skipped. 275: Introduce account mapping from Windows account DBs. Add CW_SETENT,
274: Export __cxa_atexit and __cxa_finalize. CW_GETENT, CW_ENDENT, CW_GETNSSSEP, CW_GETPWSID, CW_GETGRSID,
275: Introduce account mapping from Windows account DBs. Add CW_SETENT, CW_CYGNAME_FROM_WINNAME.
CW_GETENT, CW_ENDENT, CW_GETNSSSEP, CW_GETPWSID, CW_GETGRSID, 276: Export ffsl, ffsll.
CW_CYGNAME_FROM_WINNAME. 277: Add setsockopt(SO_PEERCRED).
276: Export ffsl, ffsll. 278: Add quotactl.
277: Add setsockopt(SO_PEERCRED). 279: Export stime.
278: Add quotactl. 280: Static atexit in libcygwin.a, CW_FIXED_ATEXIT.
279: Export stime. 281: Add CW_GETNSS_PWD_SRC, CW_GETNSS_GRP_SRC.
280: Static atexit in libcygwin.a, CW_FIXED_ATEXIT. 282: Export __bsd_qsort_r, qsort_r.
281: Add CW_GETNSS_PWD_SRC, CW_GETNSS_GRP_SRC. 283: Export __fbufsize, __flbf, __fpending, __freadable, __freading,
282: Export __bsd_qsort_r, qsort_r. __fsetlocking, __fwritable, __fwriting. clearerr_unlocked,
283: Export __fbufsize, __flbf, __fpending, __freadable, __freading, feof_unlocked, ferror_unlocked, fflush_unlocked, fgetc_unlocked,
__fsetlocking, __fwritable, __fwriting. clearerr_unlocked, fgets_unlocked, fgetwc_unlocked, fgetws_unlocked, fileno_unlocked,
feof_unlocked, ferror_unlocked, fflush_unlocked, fgetc_unlocked, fputc_unlocked, fputs_unlocked, fputwc_unlocked, fputws_unlocked,
fgets_unlocked, fgetwc_unlocked, fgetws_unlocked, fileno_unlocked, fread_unlocked, fwrite_unlocked, getwc_unlocked, getwchar_unlocked,
fputc_unlocked, fputs_unlocked, fputwc_unlocked, fputws_unlocked, putwc_unlocked, putwchar_unlocked.
fread_unlocked, fwrite_unlocked, getwc_unlocked, getwchar_unlocked, 284: Export sockatmark.
putwc_unlocked, putwchar_unlocked. 285: Export wcstold.
284: Export sockatmark. 286: Export cabsl, cimagl, creall, finitel, hypotl, sqrtl.
285: Export wcstold. 287: Export issetugid.
286: Export cabsl, cimagl, creall, finitel, hypotl, sqrtl. 288: Export getcontext, makecontext, setcontext, swapcontext.
287: Export issetugid. 289: Export sigsetjmp, siglongjmp.
288: Export getcontext, makecontext, setcontext, swapcontext. 290: Add sysconf cache handling.
289: Export sigsetjmp, siglongjmp. 291: Export aligned_alloc, at_quick_exit, quick_exit.
290: Add sysconf cache handling. 292: Export rpmatch.
291: Export aligned_alloc, at_quick_exit, quick_exit. 293: Convert utmpname/utmpxname to int.
292: Export rpmatch. 294: Export clog10, clog10f.
293: Convert utmpname/utmpxname to int. 295: Export POSIX ACL functions.
294: Export clog10, clog10f. 296: Export __getpagesize.
295: Export POSIX ACL functions. 297: Export missing math functions, acoshl, acosl, asinhl, asinl, atan2l,
296: Export __getpagesize. atanhl, atanl, cacoshl, cacosl, cargl, casinhl, casinl, catanhl,
297: Export missing math functions, acoshl, acosl, asinhl, asinl, atan2l, catanl, ccoshl, ccosl, ceill, cexpl, clog10l, clogl, conjl,
atanhl, atanl, cacoshl, cacosl, cargl, casinhl, casinl, catanhl, copysignl, coshl, cosl, cpowl, cprojl, csinhl, csinl, csqrtl, ctanhl,
catanl, ccoshl, ccosl, ceill, cexpl, clog10l, clogl, conjl, ctanl, dreml, erfcl, erfl, exp10l, exp2l, expl, expm1l, fabsl, fdiml,
copysignl, coshl, cosl, cpowl, cprojl, csinhl, csinl, csqrtl, ctanhl, floorl, fmal, fmaxl, fminl, fmodl, frexpl, ilogbl, isinfl, isnanl,
ctanl, dreml, erfcl, erfl, exp10l, exp2l, expl, expm1l, fabsl, fdiml, ldexpl, lgammal, lgammal_r, llroundl, log10l, log1pl, log2l, logbl,
floorl, fmal, fmaxl, fminl, fmodl, frexpl, ilogbl, isinfl, isnanl, logl, lroundl, modfl, nearbyintl, nextafterl, nexttoward,
ldexpl, lgammal, lgammal_r, llroundl, log10l, log1pl, log2l, logbl, nexttowardf, nexttowardl, pow10l, powl, remainderl, remquol, roundl,
logl, lroundl, modfl, nearbyintl, nextafterl, nexttoward, scalbl, scalblnl, scalbnl, sincosl, sinhl, sinl, tanhl, tanl,
nexttowardf, nexttowardl, pow10l, powl, remainderl, remquol, roundl, tgammal, truncl.
scalbl, scalblnl, scalbnl, sincosl, sinhl, sinl, tanhl, tanl,
tgammal, truncl.
*/
/* Note that we forgot to bump the api for ualarm, strtoll, strtoull, Note that we forgot to bump the api for ualarm, strtoll, strtoull,
sigaltstack, sethostname. */ sigaltstack, sethostname. */
#define CYGWIN_VERSION_API_MAJOR 0 #define CYGWIN_VERSION_API_MAJOR 0
#define CYGWIN_VERSION_API_MINOR 297 #define CYGWIN_VERSION_API_MINOR 297
/* There is also a compatibity version number associated with the /* There is also a compatibity version number associated with the shared memory
shared memory regions. It is incremented when incompatible regions. It is incremented when incompatible changes are made to the shared
changes are made to the shared memory region *or* to any named memory region *or* to any named shared mutexes, semaphores, etc. */
shared mutexes, semaphores, etc. The arbitrary starting
version was 0 (cygwin release 98r2).
Bump to 4 since this hasn't been rigorously updated in a
while. */
#define CYGWIN_VERSION_SHARED_DATA 5 #define CYGWIN_VERSION_SHARED_DATA 5
/* An identifier used in the names used to create shared objects. /* An identifier used in the names used to create shared objects. The full
The full names include the CYGWIN_VERSION_SHARED_DATA version names include the CYGWIN_VERSION_SHARED_DATA version as well as this
as well as this identifier. */ identifier. */
#define CYGWIN_VERSION_DLL_IDENTIFIER "cygwin1" #define CYGWIN_VERSION_DLL_IDENTIFIER "cygwin1"
/* The Cygwin mount table interface in the Win32 registry also /* The Cygwin mount table interface in the Win32 registry also has a version
has a version number associated with it in case that is number associated with it in case that is changed in a non-backwards
changed in a non-backwards compatible fashion. Increment this compatible fashion. Increment this version number whenever incompatible
version number whenever incompatible changes in mount table changes in mount table registry usage are made.
registry usage are made.
1: Original number version. 1: Original number version.
2: New mount registry layout, system-wide mount accessibility. 2: New mount registry layout, system-wide mount accessibility.
3: The mount table is not in the registry anymore, but in /etc/fstab. 3: The mount table is not in the registry anymore, but in /etc/fstab.
*/ */
#define CYGWIN_VERSION_MOUNT_REGISTRY 3 #define CYGWIN_VERSION_MOUNT_REGISTRY 3
/* Identifiers used in the Win32 registry. */ /* Identifiers used in the Win32 registry. */
#define CYGWIN_INFO_CYGWIN_REGISTRY_NAME "Cygwin" #define CYGWIN_INFO_CYGWIN_REGISTRY_NAME "Cygwin"
#define CYGWIN_INFO_INSTALLATIONS_NAME "Installations" #define CYGWIN_INFO_INSTALLATIONS_NAME "Installations"
/* The default cygdrive prefix. */ /* The default cygdrive prefix. */
#define CYGWIN_INFO_CYGDRIVE_DEFAULT_PREFIX "/cygdrive" #define CYGWIN_INFO_CYGDRIVE_DEFAULT_PREFIX "/cygdrive"
/* In addition to the above version number strings, the build /* In addition to the above version number strings, the build process adds some
process adds some strings that may be useful in strings that may be useful in debugging/identifying a particular Cygwin DLL:
debugging/identifying a particular Cygwin DLL:
The mkvers.sh script at the top level produces a .cc file The mkvers.sh script at the top level produces a .cc file which initializes
which initializes a cygwin_version structure based on the a cygwin_version structure based on the above version information and
above version information and creates a string table for creates a string table for grepping via "fgrep '%%%' cygwinwhatever.dll"
grepping via "fgrep '%%%' cygwinwhatever.dll" if you are if you are using GNU grep. Otherwise you may want to do a
using GNU grep. Otherwise you may want to do a "strings cygwinwhatever.dll | fgrep '%%%'" instead.
"strings cygwinwhatever.dll | fgrep '%%%'" instead.
This will produce output such as: This will produce output such as:
%%% Cygwin dll_identifier: cygwin %%% Cygwin dll_identifier: cygwin
%%% Cygwin api_major: 0 %%% Cygwin api_major: 0
%%% Cygwin api_minor: 0 %%% Cygwin api_minor: 0
%%% Cygwin dll_major: 19 %%% Cygwin dll_major: 19
%%% Cygwin dll_minor: 6 %%% Cygwin dll_minor: 6
%%% Cygwin shared_data: 1 %%% Cygwin shared_data: 1
%%% Cygwin registry: b15 %%% Cygwin registry: b15
%%% Cygwin build date: Wed Oct 14 16:26:51 EDT 1998 %%% Cygwin build date: Wed Oct 14 16:26:51 EDT 1998
%%% Cygwin shared id: cygwinS1 %%% Cygwin shared id: cygwinS1
This information can also be obtained through a call to This information can also be obtained through a call to
cygwin_internal (CW_GETVERSIONINFO). cygwin_internal (CW_GETVERSIONINFO). */
*/
#define CYGWIN_VERSION_MAGIC(a, b) ((unsigned) ((((unsigned short) a) << 16) | (unsigned short) b)) #define CYGWIN_VERSION_MAGIC(a, b) ((unsigned) ((((unsigned short) a) << 16) | (unsigned short) b))
#define CYGWIN_VERSION_MAGIC_VERSION(a) ((unsigned) ((unsigned)a & 0xffff)) #define CYGWIN_VERSION_MAGIC_VERSION(a) ((unsigned) ((unsigned)a & 0xffff))