diff options
Diffstat (limited to 'rbutil')
-rw-r--r-- | rbutil/rbutilqt/autodetection.cpp | 34 | ||||
-rw-r--r-- | rbutil/rbutilqt/rbutilqt.pro | 2 |
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 | ||
164 | QStringList Autodetection::getMountpoints() | 169 | QStringList 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 | ||
196 | QString Autodetection::resolveMountPoint(QString device) | 205 | QString 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 { | |||
127 | macx { | 127 | macx { |
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 | ||
132 | static { | 134 | static { |