summaryrefslogtreecommitdiff
path: root/rbutil
diff options
context:
space:
mode:
Diffstat (limited to 'rbutil')
-rw-r--r--rbutil/rbutilqt/autodetection.cpp34
-rw-r--r--rbutil/rbutilqt/rbutilqt.pro2
2 files changed, 30 insertions, 6 deletions
diff --git a/rbutil/rbutilqt/autodetection.cpp b/rbutil/rbutilqt/autodetection.cpp
index f2ba8df756..97963d4190 100644
--- a/rbutil/rbutilqt/autodetection.cpp
+++ b/rbutil/rbutilqt/autodetection.cpp
@@ -26,6 +26,11 @@
26#if defined(Q_OS_LINUX) 26#if defined(Q_OS_LINUX)
27#include <mntent.h> 27#include <mntent.h>
28#endif 28#endif
29#if defined(Q_OS_MACX)
30#include <sys/param.h>
31#include <sys/ucred.h>
32#include <sys/mount.h>
33#endif
29#if defined(Q_OS_WIN32) 34#if defined(Q_OS_WIN32)
30#if defined(UNICODE) 35#if defined(UNICODE)
31#define _UNICODE 36#define _UNICODE
@@ -163,20 +168,24 @@ bool Autodetection::detect()
163 168
164QStringList Autodetection::getMountpoints() 169QStringList Autodetection::getMountpoints()
165{ 170{
166#if defined(Q_OS_WIN32)
167 QStringList tempList; 171 QStringList tempList;
172#if defined(Q_OS_WIN32)
168 QFileInfoList list = QDir::drives(); 173 QFileInfoList list = QDir::drives();
169 for(int i=0; i<list.size();i++) 174 for(int i=0; i<list.size();i++)
170 { 175 {
171 tempList << list.at(i).absolutePath(); 176 tempList << list.at(i).absolutePath();
172 } 177 }
173 return tempList;
174 178
175#elif defined(Q_OS_MACX) 179#elif defined(Q_OS_MACX)
176 QDir dir("/Volumes"); 180 int num;
177 return dir.entryList(); 181 struct statfs *mntinf;
182
183 num = getmntinfo(&mntinf, MNT_WAIT);
184 while(num--) {
185 tempList << QString(mntinf->f_mntonname);
186 mntinf++;
187 }
178#elif defined(Q_OS_LINUX) 188#elif defined(Q_OS_LINUX)
179 QStringList tempList;
180 189
181 FILE *mn = setmntent("/etc/mtab", "r"); 190 FILE *mn = setmntent("/etc/mtab", "r");
182 if(!mn) 191 if(!mn)
@@ -187,10 +196,10 @@ QStringList Autodetection::getMountpoints()
187 tempList << QString(ent->mnt_dir); 196 tempList << QString(ent->mnt_dir);
188 endmntent(mn); 197 endmntent(mn);
189 198
190 return tempList;
191#else 199#else
192#error Unknown Plattform 200#error Unknown Plattform
193#endif 201#endif
202 return tempList;
194} 203}
195 204
196QString Autodetection::resolveMountPoint(QString device) 205QString Autodetection::resolveMountPoint(QString device)
@@ -213,6 +222,19 @@ QString Autodetection::resolveMountPoint(QString device)
213 endmntent(mn); 222 endmntent(mn);
214 223
215#endif 224#endif
225
226#if defined(Q_OS_MACX)
227 int num;
228 struct statfs *mntinf;
229
230 num = getmntinfo(&mntinf, MNT_WAIT);
231 while(num--) {
232 if(QString(mntinf->f_mntfromname).startsWith(device)
233 && QString(mntinf->f_fstypename).contains("vfat", Qt::CaseInsensitive))
234 return QString(mntinf->f_mntonname);
235 mntinf++;
236 }
237#endif
216 return QString(""); 238 return QString("");
217 239
218} 240}
diff --git a/rbutil/rbutilqt/rbutilqt.pro b/rbutil/rbutilqt/rbutilqt.pro
index a4cbb886e5..56ddf469f1 100644
--- a/rbutil/rbutilqt/rbutilqt.pro
+++ b/rbutil/rbutilqt/rbutilqt.pro
@@ -127,6 +127,8 @@ unix {
127macx { 127macx {
128 QMAKE_MAC_SDK=/Developer/SDKs/MacOSX10.4u.sdk 128 QMAKE_MAC_SDK=/Developer/SDKs/MacOSX10.4u.sdk
129 CONFIG+=x86 ppc 129 CONFIG+=x86 ppc
130 LIBS += -L/usr/local/lib -framework IOKit
131 INCLUDEPATH += /usr/local/include
130} 132}
131 133
132static { 134static {