Support/Program: Make Change<stream>ToBinary return error_code.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@146522 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Michael J. Spencer 2011-12-13 23:16:49 +00:00
parent faebf11a34
commit b92cb30cf5
5 changed files with 27 additions and 18 deletions

View File

@ -17,6 +17,7 @@
#include "llvm/Support/Path.h"
namespace llvm {
class error_code;
namespace sys {
// TODO: Add operations to communicate with the process, redirect its I/O,
@ -122,12 +123,12 @@ namespace sys {
/// @brief Construct a Program by finding it by name.
static Path FindProgramByName(const std::string& name);
// These methods change the specified standard stream (stdin,
// stdout, or stderr) to binary mode. They return true if an error
// occurred
static bool ChangeStdinToBinary();
static bool ChangeStdoutToBinary();
static bool ChangeStderrToBinary();
// These methods change the specified standard stream (stdin, stdout, or
// stderr) to binary mode. They return errc::success if the specified stream
// was changed. Otherwise a platform dependent error is returned.
static error_code ChangeStdinToBinary();
static error_code ChangeStdoutToBinary();
static error_code ChangeStderrToBinary();
/// A convenience function equivalent to Program prg; prg.Execute(..);
/// prg.Wait(..);

View File

@ -13,6 +13,7 @@
#include "llvm/Support/Program.h"
#include "llvm/Config/config.h"
#include "llvm/Support/system_error.h"
using namespace llvm;
using namespace sys;

View File

@ -412,19 +412,19 @@ Program::Kill(std::string* ErrMsg) {
return false;
}
bool Program::ChangeStdinToBinary(){
error_code Program::ChangeStdinToBinary(){
// Do nothing, as Unix doesn't differentiate between text and binary.
return false;
return make_error_code(errc::success);
}
bool Program::ChangeStdoutToBinary(){
error_code Program::ChangeStdoutToBinary(){
// Do nothing, as Unix doesn't differentiate between text and binary.
return false;
return make_error_code(errc::success);
}
bool Program::ChangeStderrToBinary(){
error_code Program::ChangeStderrToBinary(){
// Do nothing, as Unix doesn't differentiate between text and binary.
return false;
return make_error_code(errc::success);
}
}

View File

@ -397,19 +397,25 @@ Program::Kill(std::string* ErrMsg) {
return false;
}
bool Program::ChangeStdinToBinary(){
error_code Program::ChangeStdinToBinary(){
int result = _setmode( _fileno(stdin), _O_BINARY );
return result == -1;
if (result == -1)
return error_code(errno, generic_category());
return make_error_code(errc::success);
}
bool Program::ChangeStdoutToBinary(){
error_code Program::ChangeStdoutToBinary(){
int result = _setmode( _fileno(stdout), _O_BINARY );
return result == -1;
if (result == -1)
return error_code(errno, generic_category());
return make_error_code(errc::success);
}
bool Program::ChangeStderrToBinary(){
error_code Program::ChangeStderrToBinary(){
int result = _setmode( _fileno(stderr), _O_BINARY );
return result == -1;
if (result == -1)
return error_code(errno, generic_category());
return make_error_code(errc::success);
}
}

View File

@ -20,6 +20,7 @@
#include "llvm/Config/config.h"
#include "llvm/Support/Compiler.h"
#include "llvm/Support/ErrorHandling.h"
#include "llvm/Support/system_error.h"
#include "llvm/ADT/STLExtras.h"
#include <cctype>
#include <cerrno>