lyx_mirror/src/support/path.C
Georg Baum 979fdf7456 Fix strange bibtex problem by converting some more functions to use FileName
instead of std::string

	* src/support/lyxlib.h
	* src/support/getcwd.C
	(getcwd): return a FileName, not a std::string in filesystem encoding

	* src/support/filetools.[Ch]
	(makeAbsPath): return a FileName, not a std::string in undefined encoding

	* src/support/lyxlib.h
	* src/support/tempName.C
	(makeAbsPath): return a FileName, not a std::string in undefined encoding

	* many other files: Adjust to the changes above


git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@16399 a592a061-630c-0410-9148-cb99ea01b6c8
2006-12-27 10:56:11 +00:00

67 lines
1021 B
C

/**
* \file path.C
* This file is part of LyX, the document processor.
* Licence details can be found in the file COPYING.
*
* \author Lars Gullik Bjønnes
*
* Full author contact details are available in file CREDITS.
*/
#include <config.h>
// Needed to prevent the definition of the unnamed_Path macro in the header file.
#define PATH_C
#include "support/path.h"
#include "support/filename.h"
#include "support/lyxlib.h"
using std::string;
namespace lyx {
namespace support {
Path::Path(string const & path)
: popped_(false)
{
if (!path.empty()) {
pushedDir_ = getcwd();
if (pushedDir_.empty() || chdir(FileName(path))) {
/* FIXME: throw */
}
} else {
popped_ = true;
}
}
Path::~Path()
{
if (!popped_) pop();
}
int Path::pop()
{
if (popped_) {
// should throw an exception
// throw logical_error();
return 0;
}
if (chdir(pushedDir_)) {
// should throw an exception
// throw DirChangeError();
}
popped_ = true;
return 0;
}
} // namespace support
} // namespace lyx