* lib/Makefile.in: Add unknwn-uuid and servprov-uuid as sources and
objects.
* lib/uuid.c (IID_IUnknown, IID_IClassFactory, IID_IServiceProvider):
Remove. Moved to unknwn-uuid and servprov-uuid.
* lib/unknwn-uuid.c: New file.
* lib/servprov-uuid.c: New file.
thread being terminated rather than thread doing terminating.
* fhandler.h (fhandler_pty_master::slave): Delete.
(fhandler_pty_master::get_unit): Ditto.
(fhandler_pty_master::setup): Change argument declaration to accommodate new
usage.
* fhandler_tty.cc (fhandler_tty_master::init): Remove obsolete slave
assignment. Pass argument to setup indicating that this is a tty.
(fhandler_tty_slave::open): Use dev() method rather than referencing pc.dev
directly.
(fhandler_pty_master::open): Don't create archetype based on ptym device
number. Set device number to use DEV_TTYM_MAJOR and tty number. Pass argument
to setup indicating that this is a pty.
(fhandler_pty_master::setup): Change single argument to a flag indicating
whether we're creating a pty and use appropriately. Calculate 't' variable
here rather than in caller.
* fhandler_dsp.cc (fhandler_dev_dsp::open): Use dev() method rather than
referencing pc.dev directly.
(dll_crt0_1): Reflect renaming from tty_init to tty::init_session.
(do_exit): Reflect moving of tty_terminate into tty_list.
* exceptions.cc (events_init): Move tty_mutex stuff elsewhere.
* fhandler_console.cc (set_console_title): Use lock_ttys class.
* fhandler_termios.cc (fhandler_termios::bg_check): Make debug output more
accurate.
* fhandler_tty.cc (fhandler_tty_slave::open): Reflect move of attach_tty into
tty_list class. Don't attempt to grab master end of pty if master doesn't
exist.
(fhandler_pty_master::open): Reflect move of allocate_tty into tty_list class.
Use lock_ttys::release to release mutex. Improve debugging output.
(fhandler_pty_master::setup): Remove if 0'ed block. Fix argument to
SetNamedPipeHandleState.
* pinfo.cc (_pinfo::set_ctty): Lock ttys before setting sid/pgid. Improve
debugging. Add temporary debugging.
* tty.cc (tty_list::init_session): New function.
(tty::init_session): Rename from tty_init. Reflect move of attach_tty to
tty_list class.
(tty::create_master): Rename from create_tty_master.
(tty_list::attach): Rename from attach_tty. Reflect renaming of connect_tty to
connect. Ditto for allocate_tty.
(tty_terminate): Delete.
(tty_list::terminate): Subsume tty_terminate. Use lock_ttys rather than
manipulating mutex directly.
(tty_list::allocate): Rename from allocate_tty. Use lock_ttys rather than
manipulating mutex directly. Don't set sid here since linux apparently doesn't
do this. Reflect move of create_tty_master into tty.
(lock_ttys::lock_ttys): Define new constructor.
(lock_ttys::release): New function.
* tty.h (tty::exists): Return false immediately if !master_pid.
(tty::set_master_closed): Define new function.
(tty::create_master): Ditto.
(tty::init_session): Ditto.
(tty_list::mutex): New field.
(tty_list::allocate): Define new function.
(tty_list::connect): Ditto.
(tty_list::attach): Ditto.
(tty_list::init_session): Ditto.
(lock_ttys): New class.
(tty_init): Delete declaration.
(tty_terminate): Ditto.
(attach_tty): Ditto.
(create_tty_master): Ditto.
own them.
(fhandler_pty_master::setup): Make sure that original handle is closed when
changing inheritance.
(fhandler_pty_master::fixup_after_fork): Set from_master/to_master to arch
value always.
(fhandler_pty_master::fixup_after_exec): Clear from_master/to_master when
close_on_exec.
* dcrt0.cc (child_info_spawn::handle_spawn): Signal ready after we've run
fixup_after_exec.
* dtable.cc (dtable::fixup_after_exec): Add debugging output.
* fhandler_tty.cc (fhandler_pty_master::doecho): Use class version of
to_master.
(fhandler_tty_common::close): Remove obsolete code.
(fhandler_tty_slave::fixup_after_exec): Don't close, since this is done in
dtable's fixup_after_exec. (revisit later?)
(fhandler_pty_master::fixup_after_exec): Ditto.
* fhandler.h (fhandler_base::fixup_after_exec): Make non-inline.
(fhandler_termios::fixup_after_fork): Delete declaration.
(fhandler_termios::fixup_after_exec): Ditto.
(fhandler_tty_common::inuse): Remove.
(fhandler_tty_common::dup): Delete declaration.
(fhandler_tty_common::fixup_after_fork): Ditto.
(fhandler_tty_slave::fixup_after_exec): Declare new function.
(fhandler_pty_master::dwProcessId): New variable.
(fhandler_pty_master::from_master): Ditto.
(fhandler_pty_master::to_master): Ditto.
(fhandler_pty_master::setup): New function.
(fhandler_pty_master::fixup_after_fork): Ditto.
(fhandler_pty_master::fixup_after_exec): Ditto.
* fhandler_termios.cc (fhandler_termios::fixup_after_exec): Delete definition.
(fhandler_termios::fixup_after_fork): Ditto.
* fhandler_tty.cc (fhandler_tty_master::init): Use fhandler_pty_master setup
function rather than obsolete tty::common_init. Delete obsolete inuse setting.
(fhandler_tty_slave::fhandler_tty_slave): Set inuse to NULL here.
(fhandler_tty_slave::open): Change debugging output for clarity. Check for
different things when doing a sanity check on the tty. Reflect the fact that
master_pid now is the cygwin pid rather than the windows pid. Use "arch"
rather than "archetype" for consistency.
(fhandler_tty_slave::close): Close inuse here.
(fhandler_tty_slave::dup): Remove old if 0'ed code.
(fhandler_pty_master::dup): New function. Handles pty master archetype.
(fhandler_pty_master::fhandler_pty_master): Zero pty_master specific fields.
(fhandler_pty_master::open): Implement using archetypes, similar to slave. Use
fhandler_pty_master setup function rather than obsolete tty::common_init.
Don't set inuse.
(fhandler_tty_common::close): Don't deal with inuse. Delete old if 0'ed code.
(fhandler_pty_master::close): Implement using archetypes. Close from_master
and to_master.
(fhandler_tty_common::set_close_on_exec): Just set close_on_exec flag here
since everything uses archetypes now.
(fhandler_tty_common::fixup_after_fork): Delete definition.
(fhandler_tty_slave::fixup_after_exec): Define new function.
(fhandler_pty_master::setup): New function, derived from tty::common_init.
(fhandler_pty_master::fixup_after_fork): New function.
(shared_info.h): Reset SHARED_INFO_CB to reflect new tty size.
* tty.cc (tty_list::terminate): Close individual handles from tty_master.
(tty::master_alive): Delete.
(tty::make_pipes): Ditto.
(tty::common_init): Ditto.
* tty.h (tty::from_slave): Delete.
(tty::to_slave): Ditto.
(tty::common_init): Delete declaration.
(tty::make_pipes): Ditto.
(tty::master_pid): Define as pid_t since it is now a cygwin pid.
caller do that.
* dcrt0.cc (child_info_spawn::handle_spawn): Close parent handle here to allow
fixup_after_exec functions to use it.
* cygtls.cc (_cygtls::call2): Avoid calling exit thread if called with
*crt0_1 functions.
* cygtls.h (_cygtls::isinitialized): Check that we actually have a tls before
seeing if it is initialized.
* gendef (_sigfe_maybe): Ditto.
* dcrt0.cc (dll_crt0_1): Remove static, use just one argument.
* dll_init.cc (dllcrt0_info): New structure.
(dll_dllcrt0): Change into a front-end to renamed dll_dllcrt0_1 so that we'll
always be assured of having something like a tls.
(dll_dllcrt0_1): New function, basically renamed from from dll_dllcrt0.
Unconditionally call _my_tls.init_exception_handler now that we are assured of
having a tls. Change variable name from "linking" to "linked".
* winsup.h (dll_crt0_1): Declare.
(dll_dllcrt0_1): Ditto.
finished initializing (Thanks to Gary Zablackis for noticing this problem).
Just use cygwin_finished_initializing rather than defining a separate variable.
(modify_handle): Declare new function.
* debug.cc (modify_handle): Define new function.
* fhandler.h (fhandler_base::fork_fixup): Change return value from void to
bool.
* fhandler.cc (fhandler_base::fork_fixup): Return true if fork fixup has been
done.
* pipe.cc (fhandler_pipe::set_close_on_exec): Set inheritance of protected
handle via ModifyHandle if DEBUGGING.
(fhandler_pipe::fixup_after_fork): Protect guard handle if fork fixup has been
done.
(CURR_CHILD_INFO_MAGIC): Reset.
(saw_ctrl_c): New function.
(set_saw_ctrl_c): Ditto.
* sigproc.cc (child_info::proc_retry): Return EXITCODE_OK if we get
STATUS_CONTROL_C_EXIT and we actually saw a CTRL-C.
* spawn.cc (dwExeced): Delete.
(chExeced): New variable.
(spawn_guts): Set chExeced;
* exceptions.cc (dwExeced): Delete declaration.
(chExeced): Declare.
(ctrl_c_handler): Detect if we're an exec stub process and set a flag, if so.
* fhandler_tty.cc (fhandler_tty_common::__release_output_mutex): Add extra
DEBUGGING test.
* pinfo.cc: Fix comment.
SECURITY_ATTRIBUTES argument.
* pipe.cc (fhandler_pipe::open): Duplicate guard from other process and protect
it appropriately. Eliminate unneeded writepipe_exists temporary variable. Set
inheritance appropriately.
(fhandler_pipe::set_close_on_exec): Revert change which eliminated handling
guard inheritance.
(fhandler_pipe::fixup_after_fork): Ditto. Use correct name of entity being
checked by fork_fixup.
(fhandler_pipe::fixup_after_exec): Don't bother with guard here.
(fhandler_pipe::dup): Cosmetic changes and revert creation of writepipe_exists
as noninheritable.
(fhandler_pipe::create): Revert change which eliminated SECURITY_ATTRIBUTES
argument. Revert change which always made writepipe_exists noninheritable.
* dtable.cc (dtable::stdio_init): Cosmetic change.
* fhandler.h (fhandler_base::create_read_state): Protect handle.
(fhandler_pipe::create_guard): Ditto. Always mark the handle as inheritable.
(fhandler_pipe::is_slow): Return boolean value rather than numeric 1.
* pipe.cc (fhandler_pipe::fhandler_pipe): Always flag that we need fork fixup.
(fhandler_pipe::open): Don't pass security attributes to create_guard.
(fhandler_pipe::set_close_on_exec): Don't handle guard here.
(fhandler_pipe::close): Accommodate now-protected guard handle.
(fhandler_pipe::fixup_in_child): Don't proected read_state here.
(fhandler_pipe::fixup_after_exec): Close guard handle if close_on_exec.
(fhandler_pipe::fixup_after_fork): Don't bother with guard here.
(fhandler_pipe::dup): Don't set res to non-error prematurely. Use boolean
values where appropriate. Protect guard and read_state.
(fhandler_pipe::create): Don't call need_fork_fixup since it is now the
default. Don't protect read_state or guard.
* pipe.cc (fhandler_base::ready_for_read): Use bool values for "avail".
* spawn.cc (spawn_guts): Set cygheap->pid_handle as inheritable when
protecting.
* select.cc (fhandler_pipe::ready_for_read): Actually get the guard mutex for
blocking reads.
function will always be called when _my_tls is initialized.
* init.cc (dll_entry): Don't attempt to remove tls info if _my_tls is obviously
not even available.
(wait_sig): Set hwait_sig to INVALID_HANDLE_VALUE on __SIGEXIT.
* cygtls.cc (_cygtls::init_thread): Zero entire _my_tls structure and no more.
* cygtls.h (_my_tls::padding): Delete.
(CYGTLS_PADSIZE): Redefine concept of padding to mean padding at the end of the
stack.
* dcrt0.cc (initialize_main_tls): Change return to void.
* gentls_offsets: Treat const specially, too. Keep going after a '}' is found.
Change negative offset calculation to use CYGTLS_PADSIZE.
* init.cc (_my_oldfunc): New variable.
(threadfunc_fe): Use stored tls value for oldfunc rather than blindly writing
to the stack.
(munge_threadfunc): Set oldfunc in tls.
(dll_entry): Initialize tls allocation.
* tlsoffsets.h: Regenerate.
(TracePrintf{AW},TracePrintfEx{AW}): Left out for now.
* include/rtutils.h: New file.
(TraceDump{AW},TracePuts{AW},TraceRegister{AW},TraceVprintf{AW}):
Commented out, they're missing from rtutils.def.
(IAMAudioRendererStats,IAMBufferNegotiation,IAMCameraControl)
(IAMCertifiedOutputProtection): Add interfaces.
* include/adsprop.h: New file.
* include/cmnquery.h: New file.
* include/dsadmin.h: New file.
* include/dsclient.h: New file.
* include/dsgetdc.h: New file.
* include/dsquery.h: New file.
* include/dsrole.h: New file.
* include/ntdsapi.h: New file.
* include/ntdsbcli.h: New file.
* include/objsel.h: New file.
Not finished. Just wanted to submit this before I'm disembarked
from the project, so that the work isn't lost...
of memset to avoid <string.h>. Still need a fix for memcmp.
* include/dshow.h (AM_ASPECT_RATIO_MODE,AM_WST_DRAWBGMODE,AM_WST_LEVEL)
(AMExtendedSeekingCapabilities,AM_WST_SERVICE,AM_WST_STATE)
(AM_WST_STYLE): Add enums.
(AM_WST_PAGE,AMVABeginFrameInfo,AMVACompBufferInfo,AMVAEndFrameInfo,
AMVAInternalMemInfo,AMVAUncompBufferInfo,AMVAUncompDataInfo): New
structures.
* include/errors.h (VFW_*): Define.
* include/evcode.h (AM_WMT_EVENT_DATA): New structure.
* include/mmsystem.h (WAVE_FORMAT_EXTENSIBLE): Define.
* include/edevdefs.h (ED_FORMAT_SMPTE_30,ED_FORMAT_SMPTE_30DROP)
(ED_FORMAT_SMPTE_25,ED_FORMAT_SMPTE_24): Move from here...
* include/strmif.h: ... to here. New file.
* include/aviriff.h: New file.
* include/bdatypes.h: New file.
* include/control.h: New file.
* include/dvdmedia.h: New file.
* include/il21dec.h: New file.
* include/ks.h: New file.
* include/ksmedia.h: New file.
* include/mmreg.h: New file.
* include/mpegtype.h: New file.
* include/vidcap.h: New file.
* include/vmr9.h: New file.
* include/vptype.h: New file.
* include/xprtdefs.h: New file.
Documented as defined on Windows 2000 or later.
[WINVER >= 0x0600] (LOCALE_SDURATION,LOCALE_SIETFLANGUAGE)
(LOCALE_SISO3166CTRYNAME2,LOCALE_SISO639LANGNAME2)
(LOCALE_SKEYBOARDSTOINSTALL,LOCALE_SNAME,LOCALE_SNAN)
(LOCALE_SNEGINFINITY,LOCALE_SPOSINFINITY,LOCALE_SSCRIPTS): Documented
but values unknown, Windows Vista or later.
(CAL_UMALQURA): Cleanup.
(CAL_SSHORTESTDAYNAME_*): Cleanup.
[WINVER >= 0x0410] (CAL_SYEARMONTH,CAL_ITWODIGITYEARMAX)
(CAL_NOUSEROVERRIDE,CAL_RETURN_NUMBER,CAL_USE_CP_ACP): Cleanup.
CAL_NOUSEROVERRIDE, CAL_RETURN_NUMBER,CAL_USE_CP_ACP): Documented
as available on Windows 98 and better.
(CAL_UMALQURA,CAL_SSHORTESTDAYNAME*): Define, Windows Vista and better.
(HSHELL_*): Cleanup and new define.
(SMTO_*): Cleanup and new define.
(SPI_*): Cleanup and new define.
(SPIF_*): Cleanup.
(HWND_MESSAGE): Windows 2000 only.
(SIF_*): Cleanup.
(SWP_*): Cleanup.
* include/wingdi.h (ETO_*): Cleanup and new define.
IF_CHECK_*,IF_CONNECTION_*,IF_ADMIN_*,IF_OPER_*): Define.
* include/winbase.h (CancelWaitableTimer,UnregisterWait):
Add function declaration.
* include/mgm.h: New file.
* lib/rtm.def: New file.
Thanks to: Bruce M Simpson <bms_spc at sf dot net>
to take file size and inode number as 64 bit values.
* fhandler_disk_file.cc (FS_IS_SAMBA): Move to path.cc
(FS_IS_SAMBA_WITH_QUOTA): Ditto.
(path_conv::hasgood_inode): Delete.
(path_conv::is_samba): Delete.
(path_conv::isgood_inode): Centralized function to recognize
a good inode number.
(fhandler_base::fstat_by_handle): Constify fvi_size and fai_size.
Accomodate argument change in fstat_helper.
(fhandler_base::fstat_by_name): Ditto.
(fhandler_base::fstat_helper): Accomodate argument change. Call
path_conv::isgood_inode to recognize good inodes.
(fhandler_disk_file::opendir): Explain Samba weirdness here.
Call path_conv::fs_is_samba instead of path_conv::is_samba.
(fhandler_disk_file::readdir): Add STATUS_INVALID_INFO_CLASS
as valid return code from NtQueryDirectoryFile to indicate that
FileIdBothDirectoryInformation is not supported.
Call path_conv::isgood_inode to recognize good inodes.
* ntdll.h (STATUS_INVALID_INFO_CLASS): Define.
* path.cc (fs_info::update): Rework file system recognition
and set appropriate flags.
* path.h (struct fs_info): Add is_ntfs, is_samba and is_nfs flags.
Constify pure read accessors.
This function cannot be made thread-safe, the API would have to be
changed for that, just like strerror() -> strerror_r() and similar
ISO C or POSIX functions...
(getearly): Rename 's' variable to 'len' since 's' is used fairly consistently
throughout cygwin as a string variable. Remove rawenv declaration. Perform
other minor cleanups.
(environ_init): Remove rawenv declaration. Only set rawenv to
GetEnvironmentStrings() if it has not already been set. Properly free rawenv
in all cases.
(tty::gethwnd): Ditto.
(tty::sethwnd): Ditto.
(tty_min::hwnd): Receive variable from tty class.
(tty_min::gethwnd): Receive function from tty classs.
(tty_min::sethwnd): Ditto.
* dtable.cc (dtable::stdio_init): Only call init_console_handler when we
actually own the console.
* fhandler_console.cc (fhandler_console::get_tty_stuff): Set tty's hwnd to
non-zero value.
* fhandler_termios.cc (fhandler_termios::tcsetpgrp): Semi-reinstate handling of
console when pgrp is set.
(findenv_func): New function pointer, predefined to getearly.
(getenv): Call findenv function over the findenv_func pointer.
(environ_init): Change findenv_func pointer to my_findenv after Cygwin
environment is initialized.
Use as guard for the WAVEFORMATEX structure instead of
_WAVEFORMATEX_ to avoid clashes with DirectSound. Keep
_WAVEFORMATEX_ for compatibility.
Thanks to: Andrew Jones <guln at sf dot net>
PocketPC support.
* include/aygshell.h: New file [_WIN32_WCE]. Declare most common
functions for using aygshell on PocketPC:
SHCreateMenuBar, SHFindMenuBar, SHCreateNewItem, SHFullScreen,
SHSipInfo, SHHandleWMActivate, SHHandleWMSettingChange
* include/commctrl.h [_WIN32_WCE] Add function prototypes for
command bar API on PocketPC:
CommandBar_Create, CommandBar_Show, CommandBar_AddBitmap,
CommandBar_InsertComboBox, CommandBar_InsertMenubar,
CommandBar_InsertMenubarEx, CommandBar_DrawMenuBar,
CommandBar_GetMenu, CommandBar_AddAdornments, CommandBar_Height,
CommandBar_InsertButton, CommandBar_Destroy.
* include/winbase.h [_WIN32_WCE] (WIN32_FIND_DATA{A|W}): Remove
fields not present on PocketPC.
(GetCurrentThreadId): Conditionally declare as extern function
without dllimport attribute on PocketPC.
(ResetEvent): Likwise.
(SetEvent): Likewise.
* include/wingdi.h [_WIN32_WCE] (GetTextExtentPoint32{A|W}):
Conditionally declare as extern function without dllimport
attribute on PocketPC.
* winuser.h [_WIN32_WCE] (DialogBoxParam{A|W}): Conditionally
declare as extern function without dllimport attribute on PocketPC.
PocketPC support.
* include/aygshell.h: New file [_WIN32_WCE]. Declare most common
functions for using aygshell on PocketPC:
SHCreateMenuBar, SHFindMenuBar, SHCreateNewItem, SHFullScreen,
SHSipInfo, SHHandleWMActivate, SHHandleWMSettingChange
* include/commctrl.h [_WIN32_WCE] Add function prototypes for
command bar API on PocketPC:
CommandBar_Create, CommandBar_Show, CommandBar_AddBitmap,
CommandBar_InsertComboBox, CommandBar_InsertMenubar,
CommandBar_InsertMenubarEx, CommandBar_DrawMenuBar,
CommandBar_GetMenu, CommandBar_AddAdornments, CommandBar_Height,
CommandBar_InsertButton, CommandBar_Destroy.
* include/winbase.h [_WIN32_WCE] (WIN32_FIND_DATA{A|W}): Remove
fields not present on PocketPC.
(GetCurrentThreadId): Conditionally declare as extern function
without dllimport attribute on PocketPC.
(ResetEvent): Likwise.
(SetEvent): Likewise.
* include/wingdi.h [_WIN32_WCE] (GetTextExtentPoint32{A|W}):
Conditionally declare as extern function without dllimport
attribute on PocketPC.
* winuser.h [_WIN32_WCE] (DialogBoxParam{A|W}): Conditionally
declare as extern function without dllimport attribute on PocketPC.
* include/winnt.h (IMAGE_FILE_MACHINE_IA64): New define.
(IMAGE_FILE_MACHINE_AMD64): New define.
(IMAGE_NT_OPTIONAL_HDR{32|64}_MAGIC. New. Map to IMAGE_NT_OPTIONAL_HDR_MAGIC.
(IMAGE_SUBSYSTEM_NATIVE_WINDOWS): New define.
(IMAGE_SUBSYSTEM_WINDOWS_CE_GUI): New define.
(IMAGE_DLLCHARACTERISTICS_WDM_DRIVER): New define.
(IMAGE_DIRECTORY_ENTRY_*): New defines.
(IMAGE_SCN_TYPE_*): New defines.
(IMAGE_SCN_ALIGN_*): New defines.
(IMAGE_DEBUG_TYPE_BORLAND): New define.
(IMAGE_OPTIONAL_HEADER{32|64}): New structure definitions and typedefs. Map to
IMAGE_OPTIONAL_HEADERS.
(IMAGE_NT_HEADERS{32|64}): New structure definitions and typedefs. Map to
IMAGE_NT_HEADERS.
(IMAGE_LOAD_CONFIG_DIRECTORY64): New structure definition and typedefs.
(IMAGE_CE_RUNTIME_FUNCTION_ENTRY): Likewise.
(IMAGE_FUNCTION_ENTRY64): Likewise.
* include/ws2spi.h (system_header): Add pragma.
* include/rasdlg.h (system_header): Add pragma.
* include/rasdlg.h (_RASDLG_H): Define.
Define instead of _RASDLG_H_, this is the w32api standard.
* include/mlang.h (_MLANG_H): Define.
Define instead of _MLANG_H_, this is the w32api standard.
* include/setupapi.h (_SETUPAPI_H): Define.
Define instead of _SETUPAPI_H_, this is the w32api standard.
Thanks to: James du Russel <ephelon at users dot sf dot net>
* include/rpcndr.h (_RPCNDR_H): Define.
Define in addition to __RPCNDR_H__, this is the w32api standard.
Drop remote fs handling entirely since unreliable inode numbers
are now recognized differently.
(path_conv::is_samba): Make inline.
(fhandler_disk_file::opendir): Reformat comment.
(fhandler_base::fstat_helper): Special case remote file systems
returning (unreliable) 32 bit inode numbers.
(fhandler_base::readdir): Ditto.
* fhandler_netdrive.cc (fhandler_netdrive::readdir): Ditto.
differently from those which are mounted with -X. Pass extra argument to
linebuf::fromargv.
* winf.h (MAXCYGWINCMDLEN): New define.
(linebuf::finish): Add a new argument denoting when command line overflow is
ok.
(linebuf::fromargv): Ditto.
* winf.cc (linebuf::finish): Implement above change.
(linebuf::fromargv): Ditto.
* include/comcat.h: INTERFACE should not remain defined
at the end of the header.
* include/docobj.h: Ditto.
* include/exdisp.h: Ditto.
* include/intshcut.h: Ditto.
* include/mlang.h: Ditto.
* include/mshtml.h: Ditto.
* include/oaidl.h: Ditto.