OSDN Git Service

* fhandler_console.cc (fhandler_console::open): Reinstate setting of flags.
authorcgf <cgf>
Fri, 31 May 2002 22:53:24 +0000 (22:53 +0000)
committercgf <cgf>
Fri, 31 May 2002 22:53:24 +0000 (22:53 +0000)
winsup/cygwin/ChangeLog
winsup/cygwin/dtable.cc
winsup/cygwin/fhandler.cc
winsup/cygwin/fhandler.h
winsup/cygwin/fhandler_console.cc
winsup/cygwin/fhandler_disk_file.cc
winsup/cygwin/path.cc

index 94c3ade..9b20283 100644 (file)
@@ -1,5 +1,10 @@
 2002-05-31  Christopher Faylor  <cgf@redhat.com>
 
+       * fhandler_console.cc (fhandler_console::open): Reinstate setting of
+       flags.
+
+2002-05-31  Christopher Faylor  <cgf@redhat.com>
+
        * fhandler_console.cc (fhandler_console::open): Always default to
        binmode.
        (fhandler_console::write_normal): Don't honor binmode setting.  There
index 028a5f8..e52e6dd 100644 (file)
@@ -217,7 +217,7 @@ cygwin_attach_handle_to_fd (char *name, int fd, HANDLE handle, mode_t bin,
 void
 dtable::init_std_file_from_handle (int fd, HANDLE handle, DWORD myaccess)
 {
-  int bin = 0;
+  int bin = -1;
   const char *name;
   CONSOLE_SCREEN_BUFFER_INFO buf;
   struct sockaddr sa;
@@ -238,7 +238,7 @@ dtable::init_std_file_from_handle (int fd, HANDLE handle, DWORD myaccess)
       if (__fmode)
        bin = __fmode;
       else
-       bin = binmode ?: 0;
+       bin = (int) binmode ?: -1;
 
       /* See if we can consoleify it  - if it is a console,
        don't open it in binary.  That will screw up our crlfs*/
@@ -280,7 +280,8 @@ dtable::init_std_file_from_handle (int fd, HANDLE handle, DWORD myaccess)
   else
     {
       path_conv pc;
-      build_fhandler_from_name (fd, name, handle, pc)->init (handle, myaccess, bin);
+      build_fhandler_from_name (fd, name, handle, pc)->init (handle, myaccess,
+                                                            bin < 0 ? pc.isbinary () : bin);
       set_std_handle (fd);
       paranoid_printf ("fd %d, handle %p", fd, handle);
     }
index 00a8e0b..0148570 100644 (file)
@@ -1169,3 +1169,5 @@ fhandler_base::closedir (DIR *)
   set_errno (ENOTDIR);
   return -1;
 }
+bool fhandler_base::get_w_binary () { return FHISSETF (WBINSET) ? FHISSETF (WBINARY) : 1; }
+bool fhandler_base::get_r_binary () { return FHISSETF (RBINSET) ? FHISSETF (RBINARY) : 1; }
index 91ac5cc..31b5406 100644 (file)
@@ -179,8 +179,8 @@ class fhandler_base
   bool is_nonblocking ();
   void set_nonblocking (int yes);
 
-  bool get_w_binary () { return FHISSETF (WBINARY); }
-  bool get_r_binary () { return FHISSETF (RBINARY); }
+  bool get_w_binary () { return FHISSETF (WBINSET) ? FHISSETF (WBINARY) : 1; }
+  bool get_r_binary () { return FHISSETF (RBINSET) ? FHISSETF (RBINARY) : 1; }
 
   bool get_w_binset () { return FHISSETF (WBINSET); }
   bool get_r_binset () { return FHISSETF (RBINSET); }
index 957dd46..ac4f9ba 100644 (file)
@@ -547,6 +547,7 @@ fhandler_console::open (path_conv *, int flags, mode_t)
   set_io_handle (INVALID_HANDLE_VALUE);
   set_output_handle (INVALID_HANDLE_VALUE);
 
+  set_flags (flags);
   set_w_binary (1);
   set_r_binary (1);
 
index 5c266ee..2548ce6 100644 (file)
@@ -63,7 +63,7 @@ num_entries (const char *win32_name)
 int __stdcall
 fhandler_disk_file::fstat_by_handle (struct __stat64 *buf, path_conv *pc)
 {
-  int res;
+  int res = 0;
   BY_HANDLE_FILE_INFORMATION local;
 
   /* NT 3.51 seems to have a bug when attempting to get vol serial
index 9aa968b..034926a 100644 (file)
@@ -741,7 +741,6 @@ out:
       if (tail[1] != '\0')
        *tail = '/';
       normalized_path = cstrdup (path_copy);
-      debug_printf ("path_copy %s", path_copy);
     }
   /* Deal with Windows stupidity which considers filename\. to be valid
      even when "filename" is not a directory. */
@@ -814,6 +813,7 @@ out:
        path_flags |= PATH_EXEC;
     }
 
+  debug_printf ("binary %d", isbinary ());
 #if 0
   if (!error)
     {