ENH: compile with broken 720 SGI C++ compiler

This commit is contained in:
Bill Hoffman 2001-08-07 15:49:57 -04:00
parent 4b2d48051f
commit 61ec323b6a
2 changed files with 48 additions and 2 deletions

View File

@ -89,4 +89,44 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
#endif
// check for the 720 compiler on the SGI
// which has some strange properties that I don't think are worth
// checking for in a general way in configure
#if defined(__sgi) && !defined(__GNUC__)
# if (_COMPILER_VERSION >= 730)
# define CM_SGI_CC_730
# elif (_COMPILER_VERSION >= 720)
# define CM_SGI_CC_720
# endif
#endif
# ifdef CM_SGI_CC_720
// the 720 sgi compiler has std:: but not for the stream library,
// so we have to bring it into the std namespace by hand.
namespace std {
using ::ostream;
using ::istream;
using ::ios;
using ::cout;
using ::cerr;
using ::cin;
using ::ifstream;
using ::ofstream;
using ::strstream;
using ::endl;
using ::ends;
using ::flush;
}
// The string class is missing these operators so add them
inline bool operator!=(std::string const& a, const char* b)
{ return !(a==std::string(b)); }
inline bool operator==(std::string const& a, const char* b)
{ return (a==std::string(b)); }
// for scoping is not ISO, so use the for hack
#define for if(false) {} else for
# endif
#endif

View File

@ -710,14 +710,20 @@ void cmSystemTools::cmCopyFile(const char* source,
const int buffer_length = 4096;
char buffer[buffer_length];
std::ifstream fin(source,
std::ios::binary | std::ios::in);
#ifdef _WIN32
std::ios::binary |
#endif
std::ios::in);
if(!fin)
{
cmSystemTools::Error("CopyFile failed to open input file \"",
source, "\"");
}
std::ofstream fout(destination,
std::ios::binary | std::ios::out | std::ios::trunc);
#ifdef _WIN32
std::ios::binary |
#endif
std::ios::out | std::ios::trunc);
if(!fout)
{
cmSystemTools::Error("CopyFile failed to open output file \"",