From 5a41f96dbb4255a55f2aad487a70856275eaf354 Mon Sep 17 00:00:00 2001 From: Christopher Faylor Date: Thu, 24 Aug 2000 17:54:43 +0000 Subject: [PATCH] * environ.cc (parse_thing): nobinmode should force O_TEXT. (regopt): Use correct path to find LOCAL_MACHINE registry options. * fhandler.cc (fhandler_base::open): Set binary mode only when binmode == O_BINARY. * pipe.cc (pipe): Pipe handling should rely on binmode not _fmode now that the two are different. --- winsup/cygwin/ChangeLog | 9 +++++++++ winsup/cygwin/environ.cc | 7 +++++-- winsup/cygwin/fhandler.cc | 4 ++-- winsup/cygwin/pipe.cc | 3 ++- 4 files changed, 18 insertions(+), 5 deletions(-) diff --git a/winsup/cygwin/ChangeLog b/winsup/cygwin/ChangeLog index 80578d303..c0937b216 100644 --- a/winsup/cygwin/ChangeLog +++ b/winsup/cygwin/ChangeLog @@ -1,3 +1,12 @@ +Thu Aug 24 13:50:15 2000 Christopher Faylor + + * environ.cc (parse_thing): nobinmode should force O_TEXT. + (regopt): Use correct path to find LOCAL_MACHINE registry options. + * fhandler.cc (fhandler_base::open): Set binary mode only when binmode + == O_BINARY. + * pipe.cc (pipe): Pipe handling should rely on binmode not _fmode now + that the two are different. + Thu Aug 24 13:21:09 2000 Christopher Faylor * include/sys/cygwin.h (strace_printf_wrap): Force printing when diff --git a/winsup/cygwin/environ.cc b/winsup/cygwin/environ.cc index fc497a390..1af364697 100644 --- a/winsup/cygwin/environ.cc +++ b/winsup/cygwin/environ.cc @@ -373,7 +373,7 @@ struct parse_thing } values[2]; } known[] = { - {"binmode", {x: &binmode}, justset, NULL, {{0}, {O_BINARY}}}, + {"binmode", {x: &binmode}, justset, NULL, {{O_TEXT}, {O_BINARY}}}, {"envcache", {&envcache}, justset, NULL, {{TRUE}, {FALSE}}}, {"error_start", {func: &error_start_init}, isfunc, NULL, {{0}, {0}}}, {"export", {&export_settings}, justset, NULL, {{FALSE}, {TRUE}}}, @@ -489,7 +489,10 @@ regopt (const char *name) parse_options (buf); else { - reg_key r1 (HKEY_LOCAL_MACHINE, KEY_READ, CYGWIN_INFO_PROGRAM_OPTIONS_NAME, NULL); + reg_key r1 (HKEY_LOCAL_MACHINE, KEY_READ, "SOFTWARE", + CYGWIN_INFO_CYGNUS_REGISTRY_NAME, + CYGWIN_INFO_CYGWIN_REGISTRY_NAME, + CYGWIN_INFO_PROGRAM_OPTIONS_NAME, NULL); if (r1.get_string (lname, buf, sizeof (buf) - 1, "") == ERROR_SUCCESS) parse_options (buf); } diff --git a/winsup/cygwin/fhandler.cc b/winsup/cygwin/fhandler.cc index fb6065f0c..6ce973667 100644 --- a/winsup/cygwin/fhandler.cc +++ b/winsup/cygwin/fhandler.cc @@ -24,7 +24,7 @@ static char fhandler_disk_dummy_name[] = "some disk file"; struct __cygwin_perfile *perfile_table = NULL; -DWORD binmode; +DWORD binmode = 0; int fhandler_base::puts_readahead (const char *s, size_t len = (size_t) -1) @@ -387,7 +387,7 @@ fhandler_base::open (int flags, mode_t mode) else if (get_device () == FH_DISK) bin = get_w_binary () || get_r_binary (); else - bin = binmode || get_w_binary () || get_r_binary (); + bin = (binmode == O_BINARY) || get_w_binary () || get_r_binary (); if (bin & O_TEXT) bin = 0; diff --git a/winsup/cygwin/pipe.cc b/winsup/cygwin/pipe.cc index fb354a471..0031aff67 100644 --- a/winsup/cygwin/pipe.cc +++ b/winsup/cygwin/pipe.cc @@ -64,7 +64,8 @@ make_pipe (int fildes[2], unsigned int psize, int mode) extern "C" int pipe (int filedes[2]) { - return make_pipe (filedes, 16384, (!__fmode || __fmode == O_BINARY) ? O_BINARY : O_TEXT); + extern DWORD binmode; + return make_pipe (filedes, 16384, (!binmode || binmode == O_BINARY) ? O_BINARY : O_TEXT); } extern "C" int