summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDominik Riebeling <Dominik.Riebeling@gmail.com>2008-04-01 20:30:41 +0000
committerDominik Riebeling <Dominik.Riebeling@gmail.com>2008-04-01 20:30:41 +0000
commit92717eb9ed97447e725fb3ac6cb3182589053366 (patch)
treee1b453bcda61d91e4399d21443ba7987137921f5
parent0a73b16a93ab648687c3cf7fb3aa86d00bbe3f14 (diff)
downloadrockbox-92717eb9ed97447e725fb3ac6cb3182589053366.tar.gz
rockbox-92717eb9ed97447e725fb3ac6cb3182589053366.zip
Implement a function to resolve a given path case-insensitively. This is needed by file-based bootloader installs on case-sensitive systems. Bootloader installation not updated yet.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@16921 a1c6a512-1295-4272-9138-f99709370657
-rw-r--r--rbutil/rbutilqt/utils.cpp33
-rw-r--r--rbutil/rbutilqt/utils.h1
2 files changed, 34 insertions, 0 deletions
diff --git a/rbutil/rbutilqt/utils.cpp b/rbutil/rbutilqt/utils.cpp
index caeb30a4b5..d77a1ac125 100644
--- a/rbutil/rbutilqt/utils.cpp
+++ b/rbutil/rbutilqt/utils.cpp
@@ -30,6 +30,7 @@
30#include <windows.h> 30#include <windows.h>
31#include <tchar.h> 31#include <tchar.h>
32#endif 32#endif
33#include <QDebug>
33 34
34// recursive function to delete a dir with files 35// recursive function to delete a dir with files
35bool recRmdir( const QString &dirName ) 36bool recRmdir( const QString &dirName )
@@ -54,6 +55,38 @@ bool recRmdir( const QString &dirName )
54} 55}
55 56
56 57
58//! @brief resolves the given path, ignoring case.
59//! @param path absolute path to resolve.
60//! @return returns exact casing of path, empty string if path not found.
61QString resolvePathCase(QString path)
62{
63 QStringList elems;
64 QString realpath = "/";
65 elems = path.split("/", QString::SkipEmptyParts);
66
67 for(int i = 0; i < elems.size(); i++) {
68 QStringList direlems = QDir(realpath).entryList(QDir::AllEntries);
69 if(direlems.contains(elems.at(i), Qt::CaseInsensitive)) {
70 // need to filter using QRegExp as QStringList::filter(QString)
71 // matches any substring
72 QString expr = QString("^" + elems.at(i) + "$");
73 QRegExp rx = QRegExp(expr, Qt::CaseInsensitive);
74 QStringList a = direlems.filter(rx);
75
76 if(a.size() != 1)
77 return QString("");
78 if(!realpath.endsWith("/"))
79 realpath += "/";
80 realpath += a.at(0);
81 }
82 else
83 return QString("");
84 }
85 qDebug() << __func__ << path << "->" << realpath;
86 return realpath;
87}
88
89
57//! @brief get system proxy value. 90//! @brief get system proxy value.
58QUrl systemProxy(void) 91QUrl systemProxy(void)
59{ 92{
diff --git a/rbutil/rbutilqt/utils.h b/rbutil/rbutilqt/utils.h
index c7dbf58f76..8ca782fc05 100644
--- a/rbutil/rbutilqt/utils.h
+++ b/rbutil/rbutilqt/utils.h
@@ -25,6 +25,7 @@
25#include <QUrl> 25#include <QUrl>
26 26
27bool recRmdir( const QString &dirName ); 27bool recRmdir( const QString &dirName );
28QString resolvePathCase(QString path);
28 29
29QUrl systemProxy(void); 30QUrl systemProxy(void);
30 31