Welcome to mirror list, hosted at ThFree Co, Russian Federation.

cygwin.com/git/newlib-cygwin.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/winsup
diff options
context:
space:
mode:
authorChristopher Faylor <me@cgf.cx>2001-03-28 07:42:58 +0400
committerChristopher Faylor <me@cgf.cx>2001-03-28 07:42:58 +0400
commit1ac6d1a1443d8347f3fcbdab7792619dd9ad33ef (patch)
tree588d30857bcae78b7b7cbca426fdde61c40713a7 /winsup
parent6222b61feede1fd534c7ec1292f7cb51237bd201 (diff)
* lib/_cygwin_S_IEXEC.c: Remove "const" from globals or they never seem to be
defined. Wrap definitions in extern "C". Include winsup.h to assure proper definitions. * dcrt0.cc (dll_crt0_1): Call stdio_init after premain run so that binmode.o, etc., will control default stdio settings. * dtable.cc (dtable::init_std_file_from_handle): Allow __fmode to force binmode/textmode settings. Default pipes to binmode.
Diffstat (limited to 'winsup')
-rw-r--r--winsup/cygwin/ChangeLog11
-rw-r--r--winsup/cygwin/dcrt0.cc6
-rw-r--r--winsup/cygwin/dtable.cc13
-rw-r--r--winsup/cygwin/lib/_cygwin_S_IEXEC.cc18
4 files changed, 34 insertions, 14 deletions
diff --git a/winsup/cygwin/ChangeLog b/winsup/cygwin/ChangeLog
index 5eb727c1d..7f053fb29 100644
--- a/winsup/cygwin/ChangeLog
+++ b/winsup/cygwin/ChangeLog
@@ -1,3 +1,14 @@
+Tue Mar 27 22:38:42 2001 Christopher Faylor <cgf@cygnus.com>
+
+ * lib/_cygwin_S_IEXEC.c: Remove "const" from globals or they never seem
+ to be defined. Wrap definitions in extern "C". Include winsup.h to
+ assure proper definitions.
+
+ * dcrt0.cc (dll_crt0_1): Call stdio_init after premain run so that
+ binmode.o, etc., will control default stdio settings.
+ * dtable.cc (dtable::init_std_file_from_handle): Allow __fmode to force
+ binmode/textmode settings. Default pipes to binmode.
+
Tue Mar 27 11:31:00 2001 Corinna Vinschen <corinna@vinschen.de>
* mmap.cc (mmap): Fix conditional for previous patch.
diff --git a/winsup/cygwin/dcrt0.cc b/winsup/cygwin/dcrt0.cc
index a76e9e5ca..fb5a31e99 100644
--- a/winsup/cygwin/dcrt0.cc
+++ b/winsup/cygwin/dcrt0.cc
@@ -784,9 +784,6 @@ dll_crt0_1 ()
/* Connect to tty. */
tty_init ();
- /* Set up standard fds in file descriptor table. */
- stdio_init ();
-
if (!__argc)
{
char *line = GetCommandLineA ();
@@ -817,6 +814,9 @@ dll_crt0_1 ()
for (unsigned int i = 0; i < PREMAIN_LEN / 2; i++)
user_data->premain[i] (__argc, __argv, user_data);
+ /* Set up standard fds in file descriptor table. */
+ stdio_init ();
+
/* Set up __progname for getopt error call. */
__progname = __argv[0];
diff --git a/winsup/cygwin/dtable.cc b/winsup/cygwin/dtable.cc
index 31cdf4ab7..4c39035f9 100644
--- a/winsup/cygwin/dtable.cc
+++ b/winsup/cygwin/dtable.cc
@@ -165,7 +165,13 @@ void
dtable::init_std_file_from_handle (int fd, HANDLE handle,
DWORD myaccess, const char *name)
{
- int bin = binmode ? O_BINARY : 0;
+ int bin;
+
+ if (__fmode)
+ bin = __fmode;
+ else
+ bin = binmode ?: 0;
+
/* Check to see if we're being redirected - if not then
we open then as consoles */
if (fd == 0 || fd == 1 || fd == 2)
@@ -190,6 +196,11 @@ dtable::init_std_file_from_handle (int fd, HANDLE handle,
else
name = "/dev/conin";
}
+ else if (GetFileType (handle) == FILE_TYPE_PIPE)
+ {
+ if (bin == 0)
+ bin = O_BINARY;
+ }
}
build_fhandler (fd, name, handle)->init (handle, myaccess, bin);
diff --git a/winsup/cygwin/lib/_cygwin_S_IEXEC.cc b/winsup/cygwin/lib/_cygwin_S_IEXEC.cc
index eeb12f4a2..5f57c94d3 100644
--- a/winsup/cygwin/lib/_cygwin_S_IEXEC.cc
+++ b/winsup/cygwin/lib/_cygwin_S_IEXEC.cc
@@ -8,19 +8,17 @@ This software is a copyrighted work licensed under the terms of the
Cygwin license. Please consult the file "CYGWIN_LICENSE" for
details. */
-#if 0
-#include "windows.h"
-#include <sys/cygwin.h>
-#include "perprocess.h"
-#endif
+extern "C" {
+#include "winsup.h"
#include <sys/stat.h>
#include <sys/unistd.h>
-const unsigned _cygwin_S_IEXEC = S_IEXEC;
-const unsigned _cygwin_S_IXUSR = S_IXUSR;
-const unsigned _cygwin_S_IXGRP = S_IXGRP;
-const unsigned _cygwin_S_IXOTH = S_IXOTH;
-const unsigned _cygwin_X_OK = X_OK;
+unsigned _cygwin_S_IEXEC = S_IEXEC;
+unsigned _cygwin_S_IXUSR = S_IXUSR;
+unsigned _cygwin_S_IXGRP = S_IXGRP;
+unsigned _cygwin_S_IXOTH = S_IXOTH;
+unsigned _cygwin_X_OK = X_OK;
+};
extern int __declspec (dllimport) _check_for_executable;
struct _cygwin_bob__