Commit 78db117e9cc6aa09cc7d4d43ea8f9bc68feef306
1 parent
dcc2c93c
windows standard io fix for binary data
Showing
1 changed file
with
21 additions
and
0 deletions
openbr/plugins/gallery.cpp
| @@ -39,6 +39,11 @@ | @@ -39,6 +39,11 @@ | ||
| 39 | #include "MatlabIOContainer.hpp" | 39 | #include "MatlabIOContainer.hpp" |
| 40 | #endif | 40 | #endif |
| 41 | 41 | ||
| 42 | +#ifdef _WIN32 | ||
| 43 | +#include <io.h> | ||
| 44 | +#include <fcntl.h> | ||
| 45 | +#endif // _WIN32 | ||
| 46 | + | ||
| 42 | namespace br | 47 | namespace br |
| 43 | { | 48 | { |
| 44 | 49 | ||
| @@ -96,11 +101,27 @@ class BinaryGallery : public Gallery | @@ -96,11 +101,27 @@ class BinaryGallery : public Gallery | ||
| 96 | void init() | 101 | void init() |
| 97 | { | 102 | { |
| 98 | const QString baseName = file.baseName(); | 103 | const QString baseName = file.baseName(); |
| 104 | + | ||
| 99 | if (baseName == "stdin") { | 105 | if (baseName == "stdin") { |
| 106 | +#ifdef _WIN32 | ||
| 107 | + if(_setmode(_fileno(stdin), _O_BINARY) == -1) | ||
| 108 | + qFatal("Failed to set stdin to binary mode!"); | ||
| 109 | +#endif // _WIN32 | ||
| 110 | + | ||
| 100 | gallery.open(stdin, QFile::ReadOnly); | 111 | gallery.open(stdin, QFile::ReadOnly); |
| 101 | } else if (baseName == "stdout") { | 112 | } else if (baseName == "stdout") { |
| 113 | +#ifdef _WIN32 | ||
| 114 | + if(_setmode(_fileno(stdout), _O_BINARY) == -1) | ||
| 115 | + qFatal("Failed to set stdout to binary mode!"); | ||
| 116 | +#endif // _WIN32 | ||
| 117 | + | ||
| 102 | gallery.open(stdout, QFile::WriteOnly); | 118 | gallery.open(stdout, QFile::WriteOnly); |
| 103 | } else if (baseName == "stderr") { | 119 | } else if (baseName == "stderr") { |
| 120 | +#ifdef _WIN32 | ||
| 121 | + if(_setmode(_fileno(stderr), _O_BINARY) == -1) | ||
| 122 | + qFatal("Failed to set stderr to binary mode!"); | ||
| 123 | +#endif // _WIN32 | ||
| 124 | + | ||
| 104 | gallery.open(stderr, QFile::WriteOnly); | 125 | gallery.open(stderr, QFile::WriteOnly); |
| 105 | } else { | 126 | } else { |
| 106 | gallery.setFileName(file); | 127 | gallery.setFileName(file); |