diff options
author | Christopher Faylor <me@cgf.cx> | 2001-09-22 21:44:07 +0000 |
---|---|---|
committer | Christopher Faylor <me@cgf.cx> | 2001-09-22 21:44:07 +0000 |
commit | 9854ada7547fab60f8283aad78deff6011ac4d5b (patch) | |
tree | 739a6e9dcdf341d39cc2c9238d713896ed711312 /winsup/cygwin/dtable.cc | |
parent | 880230dc7cb0fb299d2114ae4fb10efa7bcda626 (diff) | |
download | cygnal-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.cc | 12 |
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); |