create a working testsuite directory. Add a comment this time to explain the
unusual behavior.
(Previous ChangeLog checkin did not include accompanying Makefile.in)
* include/devguid.h: Add new file with missing GUID_DEVCLASS_*
declarations. They were extracted from the registry with a script.
* lib/devguid.c: Add new file with the implementation of the
missing GUIDs.
* lib/Makefile.in: Add devguid.c to UUID_SOURCES and UUID_OBJS.
non-private mappings.
(mmap_record::unmap_pages): Only check noreserve flag which now implies
anonymous and private.
(mprotect): Ditto.
(fixup_mmaps_after_fork): Ditto.
mmap_is_attached_or_noreserve_page function in case of access violation
and allow application to retry access on noreserve pages.
* mmap.cc (mmap_is_attached_or_noreserve_page): Changed from
mmap_is_attached_page. Handle also noreserve pages now. Change
comment accordingly.
* winsup.h (mmap_is_attached_or_noreserve_page): Declare instead of
mmap_is_attached_page.
(putmem): Make static.
(get_export): Ditto.
(rvadelta): Ditto. Don't assume that a section which ends where the import_rva
begins is the import list.
* child_info.h: Update copyright.
* fork.cc: Ditto.
at this point anyway.
(get_symlink_ea): Remove.
(set_symlink_ea): Remove.
(symlink_worker): Drop writing symlink into NTFS extended attributes.
(symlink_info::check): Drop reading symlinks from NTFS extended
attributes.
(NtSetEaFile): Define.
* fhandler.cc (fhandler_base::open): Use appropriate open flags
in query case when allow_ntea is set.
* ntdll.h (struct _FILE_GET_EA_INFORMATION): Define.
(struct _FILE_FULL_EA_INFORMATION): Define.
(NtQueryEaFile): Declare.
(NtSetEaFile): Declare.
* ntea.cc (read_ea): Rename from NTReadEA and rewrite using
NtQueryEaFile.
(write_ea): Rename from NTWriteEA and rewrite using NtSetEaFile.
* path.cc (get_symlink_ea): Make static. Add handle parameter to
accomodate new read_ea call.
(set_symlink_ea): Make static. Add handle parameter to accomodate new
write_ea call.
(symlink_worker): Call set_symlink_ea while file is still open.
(symlink_info::check): Call get_symlink_ea after file has been opened.
* security.cc (get_file_attribute): Accomodate new read_ea call.
(set_file_attribute): Accomodate new write_ea call.
* security.h (read_ea): Change declaration accordingly.
(write_ea): Ditto.
current meta key mode.
* fhandler_console.cc (fhandler_console::read): Set the top bit of
the character if metabit is true.
* fhandler_console.cc (fhandler_console::ioctl): Implement
KDGKBMETA and KDSKBMETA commands.
* fhandler_tty.cc (process_ioctl): Support KDSKBMETA.
(fhandler_tty_slave::ioctl): Send KDGKBMETA and KDSKBMETA to the
master.
* include/cygwin/kd.h: New file for the meta key mode.
* include/sys/kd.h: New file.
accept and connect back to using select:
* fhandler.h (class fhandler_socket): Remove accept_mtx.
* fhandler_socket.cc (fhandler_socket::fhandler_socket): Drop
initializing accept_mtx.
(fhandler_socket::accept): Drop event handling.
(fhandler_socket.cc (fhandler_socket::connect): Ditto.
(fhandler_socket::dup): Drop accept_mtx handling.
(fhandler_socket::listen): Ditto.
(fhandler_socket::prepare): Ditto.
(fhandler_socket::release): Ditto.
(fhandler_socket::close): Ditto.
* net.cc (cygwin_accept): Revert to calling cygwin_select to
implement interuptible accept.
(cygwin_connect): Ditto for connect.
system-wide mutex to prevent a deadlock and a race.
* sync.h (lock_process): Make fhandler_fifo a friend.
* smallprint.c (__small_vsprintf): Cosmetic change.
accept_mtx.
* fhandler_socket.cc (fhandler_socket::fhandler_socket): Initialize
accept_mtx to NULL.
(fhandler_socket::dup): Duplicate accept_mtx, if available.
(fhandler_socket::listen): Create accept_mtx before trying to listen.
(fhandler_socket::prepare): Wait for accept_mtx if available to
serialize accepts on the same socket.
(fhandler_socket::release): Release accept_mtx.
(fhandler_socket::close): Close accept_mtx on successful closesocket.
* lib/Makefile.in: Added extras-uuid as an object and source.
* lib/uuid.c (IID_IClientSiteHandler, IID_IContinue, IID_IHttpNegotiate,
IID_IPersistMoniker, IID_IServerHandler, IID_ITargetEmbedding,
IID_ITargetFrame, IID_ITypeComp, IID_IUrlHistoryStg, IID_IWinInetHttpInfo,
IID_IWinInetInfo, IID_IEnumSTATPROPSETSTG, IID_IEnumSTATPROPSTG,
IID_IEnumSTATURL): Remove. Moved to extras-uuid.c.
* lib/extras-uuid.c: New file.
Thank you to Julien Lecomte (julienlecomte at users dot sourceforge dot
net).
*include/imagehlp.h: Comment out IN, OUT and OPTIONAL,
throughout.
*include/rpcdce.h: Don't define IN, OUT or OPTIONAL if
_NO_W32_PSEUDO_MODIFIERS.
*include/rpcnsi.h: Comment out IN, OUT and OPTIONAL,
throughout.
*include/rpcnsip.h: Likewise.
*include/windef.h: Don't define IN, OUT or OPTIONAL
if _NO_W32_PSEUDO_MODIFIERS.
*include/ddk/batclass.h: Comment out IN, OUT and OPTIONAL,
throughout.
*include/ddk/cfgmgr32.h: Likewise.
*include/ddk/ddkmapi.h: Likewise.
*include/ddk/hidclass.h: Likewise.
*include/ddk/hidpi.h: Likewise.
*include/ddk/kbdmou.h: Likewise.
*include/ddk/mcd.h: Likewise.
*include/ddk/miniport.h: Likewise.
*include/ddk/minitape.h: Likewise.
*include/ddk/ndis.h: Likewise.
*include/ddk/ndistapi.h: Likewise.
*include/ddk/ndiswan.h: Likewise.
*include/ddk/ntapi.h: Likewise.
*include/ddk/ntdd8042.h: Likewise.
*include/ddk/ntddpcm.h: Likewise.
*include/ddk/ntifs.h: Likewise.
*include/ddk/ntpoapi.h: Likewise.
*include/ddk/parallel.h: Likewise.
*include/ddk/pfhook.h: Likewise.
*include/ddk/scsiwmi.h: Likewise.
*include/ddk/smbus.h: Likewise.
*include/ddk/srb.h: Likewise.
*include/ddk/storport.h: Likewise.
*include/ddk/tdikrnl.h: Likewise.
*include/ddk/upssvc.h: Likewise.
*include/ddk/usbcamdi.h: Likewise.
*include/ddk/usbscan.h: Likewise.
*include/ddk/video.h: Likewise.
*include/ddk/videoagp.h: Likewise.
*include/ddk/win2k.h: Likewise.
*include/ddk/winddi.h: Likewise.
*include/ddk/winddk.h: Don't define IN, OUT or OPTIONAL
if _NO_W32_PSEUDO_MODIFIERS.
Comment out IN, OUT and OPTIONAL, throughout.
*include/ddk/winnt4.h: Comment out IN, OUT and OPTIONAL,
throughout.
*include/ddk/ws2san.h: Likewise.
* lib/Makefile.in: Added urlmon-uuid and hlink-uuid as sources and
objects.
* lib/uuid.c (IID_IAuthenticate, IID_IBindHost, IID_IBindProtocol,
IID_IBindStatusCallback, IID_IBindStatusCallbackMsg, IID_IBinding,
IID_IHlink, IID_IHlinkBrowseContext, IID_IHlinkFrame, IID_IHlinkSite,
IID_IHlinkTarget): Remove. Moved to new files.
* lib/urlmon-uuid.c: New file.
* lib/hlink-uuid.c: New file.
* lib/Makefile.in: Added ativscp-uuid as source and object.
* lib/uuid.c (IID_IActiveScript, IID_IActiveScriptError,
IID_IActiveScriptParse, IID_IActiveScriptSite,
IID_IActiveScriptSiteWindow): Remove. Moved to ativscp-uuid.c.
* lib/ativscp-uuid.c: New file.
* 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.