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
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
|
#include "kdebug.h"
#include "kurl.h"
#include "kstandarddirs.h"
#ifdef DESKTOP_VERSION
#include <qregexp.h>
#include <qmessagebox.h>
#endif
#include <qfile.h>
#include <qdir.h>
QString KStandardDirs::mAppDir = QString::null;
QString locate( const char *type, const QString& filename )
{
/*US why do we put all files into one directory. It is quit complicated.
why not staying with the original directorystructure ?
QString escapedFilename = filename;
escapedFilename.replace( QRegExp( "/" ), "_" );
QString path = KStandardDirs::appDir() + type + "_" + escapedFilename;
kdDebug() << "locate: '" << path << "'" << endl;
qDebug("locate: %s" , path.latin1());
return path;
*/
//US so my proposal is this:
// QString escapedFilename = filename;
// escapedFilename.replace( QRegExp( "/" ), "_" );
#ifdef _WIN32_
QString path = QDir::convertSeparators(KStandardDirs::appDir() + type + "/" + filename);
#else
QString path = KStandardDirs::appDir() + type + "/" + filename;
#endif
//US Create the containing dir if needed
KURL pathurl;
pathurl.setPath(path);
QString dir=pathurl.directory();
// QMessageBox::information( 0,"path", path, 1 );
#ifdef _WIN32_
KStandardDirs::makeDir(path);
#else
KStandardDirs::makeDir(dir);
#endif
kdDebug() << "locate: '" << path << "'" << endl;
qDebug("locate: %s" , path.latin1());
return path;
}
QString locateLocal( const char *type, const QString& filename )
{
return locate( type, filename );
}
QStringList KStandardDirs::findAllResources( const QString &, const QString &, bool, bool)
{
return QStringList();
}
QString KStandardDirs::findResourceDir( const QString &, const QString & )
{
return QString::null;
}
void KStandardDirs::setAppDir( const QString &appDir )
{
mAppDir = appDir;
if ( mAppDir.right( 1 ) != "/" ) mAppDir += "/";
}
bool KStandardDirs::makeDir(const QString& dir, int mode)
{
QDir dirObj;
// we want an absolute path
#ifndef _WIN32_
if (dir.at(0) != '/')
return false;
#endif
QString target = dir;
uint len = target.length();
#ifndef _WIN32_
// append trailing slash if missing
if (dir.at(len - 1) != '/')
target += '/';
#endif
QString base("");
uint i = 1;
while( i < len )
{
//US struct stat st;
#ifndef _WIN32_
int pos = target.find('/', i);
#else
int pos = target.find('\\', i);
#endif
if ( pos < 0 )
return true;
base += target.mid(i - 1, pos - i + 1);
//QMessageBox::information( 0,"cap111", base, 1 );
/*US
QCString baseEncoded = QFile::encodeName(base);
// bail out if we encountered a problem
if (stat(baseEncoded, &st) != 0)
{
// Directory does not exist....
// Or maybe a dangling symlink ?
if (lstat(baseEncoded, &st) == 0)
(void)unlink(baseEncoded); // try removing
if ( mkdir(baseEncoded, (mode_t) mode) != 0) {
perror("trying to create local folder");
return false; // Couldn't create it :-(
}
}
*/
if (dirObj.exists(base) == false)
{
qDebug("KStandardDirs::makeDir try to create : %s" , base.latin1());
if (dirObj.mkdir(base) != true)
{
qDebug("KStandardDirs::makeDir could not create: %s" , base.latin1());
return false;
}
}
i = pos + 1;
}
return true;
}
|