diff options
author | Corinna Vinschen <corinna@vinschen.de> | 2009-10-31 16:24:06 +0300 |
---|---|---|
committer | Corinna Vinschen <corinna@vinschen.de> | 2009-10-31 16:24:06 +0300 |
commit | 526b0fbca3770cd40133f89053dc79b99e5f0d71 (patch) | |
tree | ebe293fb630991a51e275b5f1da24bbe9e948142 /winsup/cygwin/pipe.cc | |
parent | 7c16c02dbb98f6d35bd895b23d2ff71df5109a34 (diff) |
* cygprops.h: New file.
* dtable.cc (handle_to_fn): Add check for correct installation_key
string in object name for pipes and ttys.
* external.cc (cygwin_internal): Add CW_GET_INSTKEY to allow fetching
the installation_key from cygserver.
* fhandler_fifo.cc (fhandler_fifo::fifo_name): Add installation_key
to fifo name.
* globals.cc: Include cygprops.h.
(_RDATA): Move slightly and add comment.
(cygwin_props): Define.
* mount.cc (mount_info::init): Accommodate the fact that
installation_root is now a global variable in DLL common shared memory,
rather than a member of cygwin_shared.
* pipe.cc (fhandler_pipe::create_selectable): Add installation_key to
pipe name.
* shared.cc (installation_root): Define here for storage in DLL
common shared memory.
(installation_key): Ditto.
(installation_key_buf): Ditto.
(init_installation_root): Convert from shared_info method to ordinary
function. Add initializing installation_key. Invalidate
installation_key depending of value of disable_key property. Add
comment to explain.
(get_shared_parent_dir): Add installation_key to directory name.
(get_session_parent_dir): Ditto.
(shared_info::initialize): Move call to init_installation_root from
here...
(memory_init): ...to here. Add debug output to print installation root
and installation key. Add comment to explain why.
* shared_info.h (SHARED_INFO_CB): Recalculate.
(CURR_SHARED_MAGIC): Ditto.
(class shared_info): Remove definition of installation_root and
declaration of init_installation_root.
(init_installation_root): Declare.
(installation_root): Declare.
(installation_key): Declare.
* uinfo.cc (pwdgrp::load): Accommodate the fact that installation_root
is now a global variable in DLL common shared memory.
* include/cygwin/version.h: Bump API minor number.
(CYGWIN_INFO_INSTALLATIONS_NAME): Add.
* include/sys/cygwin.h (cygwin_getinfo_types): Add CW_GET_INSTKEY.
Diffstat (limited to 'winsup/cygwin/pipe.cc')
-rw-r--r-- | winsup/cygwin/pipe.cc | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/winsup/cygwin/pipe.cc b/winsup/cygwin/pipe.cc index 5e557d8c6..aad1531d1 100644 --- a/winsup/cygwin/pipe.cc +++ b/winsup/cygwin/pipe.cc @@ -21,6 +21,7 @@ details. */ #include "dtable.h" #include "cygheap.h" #include "pinfo.h" +#include "shared_info.h" fhandler_pipe::fhandler_pipe () : fhandler_base (), popen_pid (0), overlapped (NULL) @@ -216,7 +217,10 @@ fhandler_pipe::create_selectable (LPSECURITY_ATTRIBUTES sa_ptr, HANDLE& r, if (psize < PIPE_BUF) psize = PIPE_BUF; - char pipename[MAX_PATH] = PIPE_INTRO; + char pipename[MAX_PATH]; + const size_t len = __small_sprintf (pipename, PIPE_INTRO "%S-", + &installation_key); + /* FIXME: Eventually make ttys work with overlapped I/O. */ DWORD overlapped = name ? 0 : FILE_FLAG_OVERLAPPED; @@ -228,10 +232,10 @@ fhandler_pipe::create_selectable (LPSECURITY_ATTRIBUTES sa_ptr, HANDLE& r, { static volatile ULONG pipe_unique_id; if (!name) - __small_sprintf (pipename + strlen(PIPE_INTRO), "pipe-%p-%p", myself->pid, + __small_sprintf (pipename + len, "pipe-%p-%p", myself->pid, InterlockedIncrement ((LONG *) &pipe_unique_id)); else - strcpy (pipename + strlen(PIPE_INTRO), name); + strcpy (pipename + len, name); debug_printf ("CreateNamedPipe: name %s, size %lu", pipename, psize); |