diff options
Diffstat (limited to 'base/output.cc')
-rw-r--r-- | base/output.cc | 129 |
1 files changed, 0 insertions, 129 deletions
diff --git a/base/output.cc b/base/output.cc deleted file mode 100644 index 2b1733f21..000000000 --- a/base/output.cc +++ /dev/null @@ -1,129 +0,0 @@ -/* - * Copyright (c) 2005 The Regents of The University of Michigan - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are - * met: redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer; - * redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution; - * neither the name of the copyright holders nor the names of its - * contributors may be used to endorse or promote products derived from - * this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -#include <errno.h> -#include <limits.h> -#include <stdlib.h> -#include <sys/stat.h> -#include <sys/types.h> - -#include <fstream> - -#include "base/misc.hh" -#include "base/output.hh" - -using namespace std; - -OutputDirectory simout; - -/** - * - */ -OutputDirectory::OutputDirectory() -{} - -OutputDirectory::~OutputDirectory() -{} - -void -OutputDirectory::setDirectory(const string &d) -{ - if (!dir.empty()) - panic("Output directory already set!\n"); - - dir = d; - - if (dir != ".") { - if (mkdir(dir.c_str(), 0777) < 0 && errno != EEXIST) - panic("couldn't make output dir %s: %s\n", - dir, strerror(errno)); - } - - // guarantee that directory ends with a '/' - if (dir[dir.size() - 1] != '/') - dir += "/"; -} - -const string & -OutputDirectory::directory() -{ - if (dir.empty()) - panic("Output directory not set!"); - - return dir; -} - -string -OutputDirectory::resolve(const string &name) -{ - return (name[0] != '/') ? dir + name : name; -} - -ostream * -OutputDirectory::create(const string &name) -{ - if (name == "cerr" || name == "stderr") - return &cerr; - - if (name == "cout" || name == "stdout") - return &cout; - - ofstream *file = new ofstream(resolve(name).c_str(), ios::trunc); - if (!file->is_open()) - panic("Cannot open file %s", name); - - return file; -} - -ostream * -OutputDirectory::find(const string &name) -{ - if (name == "cerr" || name == "stderr") - return &cerr; - - if (name == "cout" || name == "stdout") - return &cout; - - string filename = resolve(name); - map_t::iterator i = files.find(filename); - if (i != files.end()) - return (*i).second; - - ofstream *file = new ofstream(filename.c_str(), ios::trunc); - if (!file->is_open()) - panic("Cannot open file %s", filename); - - files[filename] = file; - return file; -} - -bool -OutputDirectory::isFile(const std::ostream *os) -{ - return os && os != &cerr && os != &cout; -} |