blob: 1bb857ab69686ffa4da838757586ed084212bf51 [file] [log] [blame]
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
// Base header file. Must be first.
#include <xalanc/Include/PlatformDefinitions.hpp>
#include <stdio.h>
#include <sstream>
#if defined(XALAN_WINDOWS)
#include <direct.h>
#define getcwd _getcwd
#else
#include <unistd.h>
#endif
#include <xalanc/Include/XalanMemoryManagement.hpp>
#include <xalanc/PlatformSupport/DOMStringHelper.hpp>
#include "Utils.hpp"
using xalanc::XalanMemMgrs;
using xalanc::CharVectorType;
using xalanc::TranscodeToLocalCodePage;
using xalanc::c_str;
bool checkFileExists(const XalanDOMString& fileName)
{
CharVectorType theResult(XalanMemMgrs::getDefaultXercesMemMgr());
TranscodeToLocalCodePage(fileName, theResult, true);
FILE* fileHandle = fopen(c_str(theResult), "r");
if (fileHandle != 0)
{
fclose(fileHandle);
return true;
}
else
{
return false;
}
}
XalanDOMString getWorkingDirectory()
{
char path[4096];
getcwd(path, 4096);
return XalanDOMString(path);
}
const XalanDOMChar* getPathSep()
{
return XalanFileUtility::s_pathSep;
}
void fileToStream(
const XalanDOMString& fileName,
std::istringstream& resultStream)
{
CharVectorType resultFileName;
fileName.transcode(resultFileName);
using std::ifstream;
using std::ostringstream;
ifstream resultFile(c_str(resultFileName));
ostringstream fileOutputStream;
char ch;
while(resultFile.get(ch))
{
fileOutputStream.put(ch);
}
resultStream.str(fileOutputStream.str());
}
void copyFile(
const XalanDOMString& destFile,
const XalanDOMString& sourceFile)
{
CharVectorType sourceFileName;
sourceFile.transcode(sourceFileName);
using std::ifstream;
using std::ofstream;
ifstream sourceFileStream(c_str(sourceFileName));
CharVectorType destFileName;
destFile.transcode(destFileName);
ofstream destFileStream(c_str(destFileName));
char ch;
while (sourceFileStream.get(ch))
{
destFileStream.put(ch);
}
sourceFileStream.close();
destFileStream.close();
}