aboutsummaryrefslogtreecommitdiffstats
path: root/lib/System
diff options
context:
space:
mode:
Diffstat (limited to 'lib/System')
-rw-r--r--lib/System/Unix/Program.inc8
-rw-r--r--lib/System/Win32/Program.inc14
2 files changed, 22 insertions, 0 deletions
diff --git a/lib/System/Unix/Program.inc b/lib/System/Unix/Program.inc
index 47810bdbeb..01eefe0d52 100644
--- a/lib/System/Unix/Program.inc
+++ b/lib/System/Unix/Program.inc
@@ -227,4 +227,12 @@ Program::ExecuteAndWait(const Path& path,
}
+void Program::ChangeStdinToBinary(){
+ // Do nothing, as Unix doesn't differentiate between text and binary.
+}
+
+void Program::ChangeStdoutToBinary(){
+ // Do nothing, as Unix doesn't differentiate between text and binary.
+}
+
}
diff --git a/lib/System/Win32/Program.inc b/lib/System/Win32/Program.inc
index 95f56b231f..c29adf0bd1 100644
--- a/lib/System/Win32/Program.inc
+++ b/lib/System/Win32/Program.inc
@@ -12,8 +12,10 @@
//===----------------------------------------------------------------------===//
#include "Win32.h"
+#include <cstdio>
#include <malloc.h>
#include <io.h>
+#include <fcntl.h>
//===----------------------------------------------------------------------===//
//=== WARNING: Implementation here must contain only Win32 specific code
@@ -218,4 +220,16 @@ Program::ExecuteAndWait(const Path& path,
return status;
}
+void Program::ChangeStdinToBinary(){
+ int result = _setmode( _fileno(stdin), _O_BINARY );
+ if( result == -1 )
+ throw std::string("Cannot set input mode on stdin to binary.");
+}
+
+void Program::ChangeStdoutToBinary(){
+ int result = _setmode( _fileno(stdout), _O_BINARY );
+ if( result == -1 )
+ throw std::string("Cannot set output mode on stdout to binary.");
+}
+
}