summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--rbutil/rbutilqt/base/utils.cpp57
-rw-r--r--rbutil/rbutilqt/base/utils.h2
-rw-r--r--rbutil/rbutilqt/base/zipinstaller.cpp3
-rw-r--r--rbutil/rbutilqt/sysinfo.cpp4
4 files changed, 52 insertions, 14 deletions
diff --git a/rbutil/rbutilqt/base/utils.cpp b/rbutil/rbutilqt/base/utils.cpp
index 3447320e11..fe35f0c295 100644
--- a/rbutil/rbutilqt/base/utils.cpp
+++ b/rbutil/rbutilqt/base/utils.cpp
@@ -135,6 +135,51 @@ QString Utils::resolvePathCase(QString path)
135} 135}
136 136
137 137
138QString Utils::filesystemType(QString path)
139{
140#if defined(Q_OS_LINUX)
141 FILE *mn = setmntent("/etc/mtab", "r");
142 if(!mn)
143 return QString("");
144
145 struct mntent *ent;
146 while((ent = getmntent(mn))) {
147 if(QString(ent->mnt_dir) == path) {
148 endmntent(mn);
149 LOG_INFO() << "device type is" << ent->mnt_type;
150 return QString(ent->mnt_type);
151 }
152 }
153 endmntent(mn);
154#endif
155
156#if defined(Q_OS_MACX) || defined(Q_OS_OPENBSD)
157 int num;
158 struct statfs *mntinf;
159
160 num = getmntinfo(&mntinf, MNT_WAIT);
161 while(num--) {
162 if(QString(mntinf->f_mntonname) == path) {
163 LOG_INFO() << "device type is" << mntinf->f_fstypename;
164 return QString(mntinf->f_fstypename);
165 }
166 mntinf++;
167 }
168#endif
169
170#if defined(Q_OS_WIN32)
171 wchar_t t[64];
172 memset(t, 0, 32);
173 if(GetVolumeInformationW((LPCWSTR)path.utf16(),
174 NULL, 0, NULL, NULL, NULL, t, 64)) {
175 LOG_INFO() << "device type is" << t;
176 return QString::fromWCharArray(t);
177 }
178#endif
179 return QString("-");
180}
181
182
138QString Utils::filesystemName(QString path) 183QString Utils::filesystemName(QString path)
139{ 184{
140 QString name; 185 QString name;
@@ -218,18 +263,10 @@ qulonglong Utils::filesystemTotal(QString path)
218} 263}
219 264
220 265
221qulonglong Utils::filesystemClusterSize(QString path)
222{
223 qulonglong size = filesystemSize(path, FilesystemClusterSize);
224 LOG_INFO() << "cluster size for" << path << size;
225 return size;
226}
227
228
229qulonglong Utils::filesystemSize(QString path, enum Utils::Size type) 266qulonglong Utils::filesystemSize(QString path, enum Utils::Size type)
230{ 267{
231 qulonglong size = 0; 268 qulonglong size = 0;
232#if defined(Q_OS_LINUX) || defined(Q_OS_MACX) 269#if defined(Q_OS_LINUX) || defined(Q_OS_MACX)
233 // the usage of statfs() is deprecated by the LSB so use statvfs(). 270 // the usage of statfs() is deprecated by the LSB so use statvfs().
234 struct statvfs fs; 271 struct statvfs fs;
235 int ret; 272 int ret;
@@ -281,7 +318,7 @@ qulonglong Utils::filesystemSize(QString path, enum Utils::Size type)
281//! \brief searches for a Executable in the Environement Path 318//! \brief searches for a Executable in the Environement Path
282QString Utils::findExecutable(QString name) 319QString Utils::findExecutable(QString name)
283{ 320{
284 //try autodetect tts 321 //try autodetect tts
285#if defined(Q_OS_LINUX) || defined(Q_OS_MACX) || defined(Q_OS_OPENBSD) 322#if defined(Q_OS_LINUX) || defined(Q_OS_MACX) || defined(Q_OS_OPENBSD)
286#if QT_VERSION >= 0x050e00 323#if QT_VERSION >= 0x050e00
287 QStringList path = QString(getenv("PATH")).split(":", Qt::SkipEmptyParts); 324 QStringList path = QString(getenv("PATH")).split(":", Qt::SkipEmptyParts);
diff --git a/rbutil/rbutilqt/base/utils.h b/rbutil/rbutilqt/base/utils.h
index ca9c1d61af..f46f713525 100644
--- a/rbutil/rbutilqt/base/utils.h
+++ b/rbutil/rbutilqt/base/utils.h
@@ -44,8 +44,8 @@ public:
44 static QString resolvePathCase(QString path); 44 static QString resolvePathCase(QString path);
45 static qulonglong filesystemFree(QString path); 45 static qulonglong filesystemFree(QString path);
46 static qulonglong filesystemTotal(QString path); 46 static qulonglong filesystemTotal(QString path);
47 static qulonglong filesystemClusterSize(QString path);
48 static qulonglong filesystemSize(QString path, enum Size type); 47 static qulonglong filesystemSize(QString path, enum Size type);
48 static QString filesystemType(QString path);
49 static QString findExecutable(QString name); 49 static QString findExecutable(QString name);
50 static QString checkEnvironment(bool permission); 50 static QString checkEnvironment(bool permission);
51 static int compareVersionStrings(QString s1, QString s2); 51 static int compareVersionStrings(QString s1, QString s2);
diff --git a/rbutil/rbutilqt/base/zipinstaller.cpp b/rbutil/rbutilqt/base/zipinstaller.cpp
index caf1b52945..6c111a314d 100644
--- a/rbutil/rbutilqt/base/zipinstaller.cpp
+++ b/rbutil/rbutilqt/base/zipinstaller.cpp
@@ -139,7 +139,8 @@ void ZipInstaller::downloadDone(bool error)
139 // some room for operating (also includes calculation mistakes due to 139 // some room for operating (also includes calculation mistakes due to
140 // cluster sizes on the player). 140 // cluster sizes on the player).
141 if((qint64)Utils::filesystemFree(m_mountpoint) 141 if((qint64)Utils::filesystemFree(m_mountpoint)
142 < (zip.totalUncompressedSize(Utils::filesystemClusterSize(m_mountpoint)) 142 < (zip.totalUncompressedSize(
143 Utils::filesystemSize(m_mountpoint, Utils::FilesystemClusterSize))
143 + 1000000)) { 144 + 1000000)) {
144 emit logItem(tr("Not enough disk space! Aborting."), LOGERROR); 145 emit logItem(tr("Not enough disk space! Aborting."), LOGERROR);
145 emit logProgress(1, 1); 146 emit logProgress(1, 1);
diff --git a/rbutil/rbutilqt/sysinfo.cpp b/rbutil/rbutilqt/sysinfo.cpp
index 75ade2438f..9160ce9d9a 100644
--- a/rbutil/rbutilqt/sysinfo.cpp
+++ b/rbutil/rbutilqt/sysinfo.cpp
@@ -65,14 +65,14 @@ QString Sysinfo::getInfo(Sysinfo::InfoType type)
65 info += "<table>"; 65 info += "<table>";
66 info += "<tr><td>" + tr("Mountpoint") + "</td><td>" + tr("Label") 66 info += "<tr><td>" + tr("Mountpoint") + "</td><td>" + tr("Label")
67 + "</td><td>" + tr("Free") + "</td><td>" + tr("Total") + "</td><td>" 67 + "</td><td>" + tr("Free") + "</td><td>" + tr("Total") + "</td><td>"
68 + tr("Cluster Size") + "</td></tr>"; 68 + tr("Type") + "</td><td></tr>";
69 for(int i = 0; i < drives.size(); i++) { 69 for(int i = 0; i < drives.size(); i++) {
70 info += tr("<tr><td>%1</td><td>%4</td><td>%2 GiB</td><td>%3 GiB</td><td>%5</td></tr>") 70 info += tr("<tr><td>%1</td><td>%4</td><td>%2 GiB</td><td>%3 GiB</td><td>%5</td></tr>")
71 .arg(QDir::toNativeSeparators(drives.at(i))) 71 .arg(QDir::toNativeSeparators(drives.at(i)))
72 .arg((double)Utils::filesystemFree(drives.at(i)) / (1<<30), 0, 'f', 2) 72 .arg((double)Utils::filesystemFree(drives.at(i)) / (1<<30), 0, 'f', 2)
73 .arg((double)Utils::filesystemTotal(drives.at(i)) / (1<<30), 0, 'f', 2) 73 .arg((double)Utils::filesystemTotal(drives.at(i)) / (1<<30), 0, 'f', 2)
74 .arg(Utils::filesystemName(drives.at(i))) 74 .arg(Utils::filesystemName(drives.at(i)))
75 .arg(Utils::filesystemClusterSize(drives.at(i))); 75 .arg(Utils::filesystemType(drives.at(i)));
76 } 76 }
77 info += "</table>"; 77 info += "</table>";
78 info += "<hr/>"; 78 info += "<hr/>";