summaryrefslogtreecommitdiffstats
path: root/winsup/cygwin/dtable.cc
diff options
context:
space:
mode:
authorChristopher Faylor <me@cgf.cx>2001-09-22 21:44:07 +0000
committerChristopher Faylor <me@cgf.cx>2001-09-22 21:44:07 +0000
commit9854ada7547fab60f8283aad78deff6011ac4d5b (patch)
tree739a6e9dcdf341d39cc2c9238d713896ed711312 /winsup/cygwin/dtable.cc
parent880230dc7cb0fb299d2114ae4fb10efa7bcda626 (diff)
downloadcygnal-9854ada7547fab60f8283aad78deff6011ac4d5b.tar.gz
cygnal-9854ada7547fab60f8283aad78deff6011ac4d5b.tar.bz2
cygnal-9854ada7547fab60f8283aad78deff6011ac4d5b.zip
* dtable.cc (dtable::build_fhandler): Accept an optional path_conv argument.
If available, use this to calculate path name and device number. * dtable.h (dtable): Reflect above change. * fhandler.h (fhandler_base): Declare virtual method which accepts path_conv rather than path string as first argument. * fhandler.cc (fhandler_base::open): Define above new method. * syscalls.cc (_open): Set aside a path_conv variable for use in build_fhandler and subsequent call to open.
Diffstat (limited to 'winsup/cygwin/dtable.cc')
-rw-r--r--winsup/cygwin/dtable.cc12
1 files changed, 10 insertions, 2 deletions
diff --git a/winsup/cygwin/dtable.cc b/winsup/cygwin/dtable.cc
index 82009c943..8578cc76e 100644
--- a/winsup/cygwin/dtable.cc
+++ b/winsup/cygwin/dtable.cc
@@ -228,12 +228,20 @@ cygwin_attach_handle_to_fd (char *name, int fd, HANDLE handle, mode_t bin,
}
fhandler_base *
-dtable::build_fhandler (int fd, const char *name, HANDLE handle)
+dtable::build_fhandler (int fd, const char *name, HANDLE handle, path_conv *pc)
{
int unit;
DWORD devn;
- if ((devn = get_device_number (name, unit)) == FH_BAD)
+ if (!pc)
+ devn = get_device_number (name, unit);
+ else
+ {
+ pc->check (name);
+ devn = pc->get_devn ();
+ }
+
+ if (devn == FH_BAD)
{
struct sockaddr sa;
int sal = sizeof (sa);