blob: 2e7e8a20a7c0bf346e176ccf3ac23dc07dca8a20 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
|
/////////////////////////////////////////////////////////////////////////////
// Name: pokemod/Path.cpp
// Purpose: Define a derived class from the std::string for path extensions
// Author: Ben Boeckel
// Modified by: Ben Boeckel
// Created: Tue Feb 20 10:15:43 2007
// Copyright: ©2007 Nerdy Productions
// Licence:
// This program is free software; you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation; either version 2 of the License, or
// (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License along
// with this program; if not, write to the Free Software Foundation, Inc.,
// 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
/////////////////////////////////////////////////////////////////////////////
#include "Path.h"
PokeGen::PokeMod::Path::Path()
{
assign("");
}
PokeGen::PokeMod::Path::Path(const char *s)
{
assign(s);
Update();
}
PokeGen::PokeMod::Path::Path(const std::string &s)
{
assign(s);
Update();
}
void PokeGen::PokeMod::Path::Update()
{
if (!DoesExist())
assign("");
}
bool PokeGen::PokeMod::Path::DoesExist()
{
if (*this == "")
return false;
std::ifstream test(c_str(), std::ios::in);
test.close();
if (test.fail())
return false;
return true;
}
bool PokeGen::PokeMod::Path::HasExtension(const String &ext)
{
size_t pos = rfind('.');
bool ret = true;
String fileExt(substr(pos + 1));
if ((pos == npos) || (pos + 1 == length()) || (fileExt.length() != ext.length()))
return false;
for (unsigned i = 0; ret && (i < ext.length()); ++i)
ret = (tolower(ext[i]) == tolower(fileExt[i]));
return ret;
}
bool PokeGen::PokeMod::Path::CopyTo(const String &dest)
{
if (!DoesExist())
return false;
std::ifstream fcur(c_str(), std::ios::in | std::ios::binary);
std::ofstream fcopy(dest.c_str(), std::ios::out | std::ios::binary);
if (fcur.bad() || fcopy.bad())
{
fcur.close();
fcopy.close();
return false;
}
while (!fcur.eof())
fcopy.put((char)fcur.get());
fcopy.close();
fcur.close();
return true;
}
|