diff options
author | Dominik Riebeling <Dominik.Riebeling@gmail.com> | 2009-11-22 14:29:22 +0000 |
---|---|---|
committer | Dominik Riebeling <Dominik.Riebeling@gmail.com> | 2009-11-22 14:29:22 +0000 |
commit | de37ce51edaa09d9394d16fbb43445f9bd11c970 (patch) | |
tree | c38aa1081750061d89bbb358f22c6faa81eb97b2 /rbutil/rbutilqt/base | |
parent | 6b06648239a8ef24623d4f27124ce738e27797fc (diff) | |
download | rockbox-de37ce51edaa09d9394d16fbb43445f9bd11c970.tar.gz rockbox-de37ce51edaa09d9394d16fbb43445f9bd11c970.zip |
OS X uses msdos as filesystem for vfat which is the same OpenBSD does. Fixes mountpoint resolving.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@23701 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'rbutil/rbutilqt/base')
-rw-r--r-- | rbutil/rbutilqt/base/autodetection.cpp | 41 |
1 files changed, 11 insertions, 30 deletions
diff --git a/rbutil/rbutilqt/base/autodetection.cpp b/rbutil/rbutilqt/base/autodetection.cpp index 0526d8d9c9..332a16017f 100644 --- a/rbutil/rbutilqt/base/autodetection.cpp +++ b/rbutil/rbutilqt/base/autodetection.cpp | |||
@@ -265,6 +265,7 @@ QString Autodetection::resolveMountPoint(QString device) | |||
265 | if(QString(ent->mnt_fsname).startsWith(device) | 265 | if(QString(ent->mnt_fsname).startsWith(device) |
266 | && QString(ent->mnt_type).contains("vfat", Qt::CaseInsensitive)) { | 266 | && QString(ent->mnt_type).contains("vfat", Qt::CaseInsensitive)) { |
267 | endmntent(mn); | 267 | endmntent(mn); |
268 | qDebug() << "[Autodetect] resolved mountpoint is:" << mntinf->nmt_dir; | ||
268 | return QString(ent->mnt_dir); | 269 | return QString(ent->mnt_dir); |
269 | } | 270 | } |
270 | } | 271 | } |
@@ -272,28 +273,17 @@ QString Autodetection::resolveMountPoint(QString device) | |||
272 | 273 | ||
273 | #endif | 274 | #endif |
274 | 275 | ||
275 | #if defined(Q_OS_MACX) | 276 | #if defined(Q_OS_MACX) || defined(Q_OS_OPENBSD) |
276 | int num; | ||
277 | struct statfs *mntinf; | ||
278 | |||
279 | num = getmntinfo(&mntinf, MNT_WAIT); | ||
280 | while(num--) { | ||
281 | if(QString(mntinf->f_mntfromname).startsWith(device) | ||
282 | && QString(mntinf->f_fstypename).contains("vfat", Qt::CaseInsensitive)) | ||
283 | return QString(mntinf->f_mntonname); | ||
284 | mntinf++; | ||
285 | } | ||
286 | #endif | ||
287 | |||
288 | #if defined(Q_OS_OPENBSD) | ||
289 | int num; | 277 | int num; |
290 | struct statfs *mntinf; | 278 | struct statfs *mntinf; |
291 | 279 | ||
292 | num = getmntinfo(&mntinf, MNT_WAIT); | 280 | num = getmntinfo(&mntinf, MNT_WAIT); |
293 | while(num--) { | 281 | while(num--) { |
294 | if(QString(mntinf->f_mntfromname).startsWith(device) | 282 | if(QString(mntinf->f_mntfromname).startsWith(device) |
295 | && QString(mntinf->f_fstypename).contains("msdos", Qt::CaseInsensitive)) | 283 | && QString(mntinf->f_fstypename).contains("msdos", Qt::CaseInsensitive)) { |
284 | qDebug() << "[Autodetect] resolved mountpoint is:" << mntinf->f_mntonname; | ||
296 | return QString(mntinf->f_mntonname); | 285 | return QString(mntinf->f_mntonname); |
286 | } | ||
297 | mntinf++; | 287 | mntinf++; |
298 | } | 288 | } |
299 | #endif | 289 | #endif |
@@ -334,6 +324,7 @@ QString Autodetection::resolveDevicename(QString path) | |||
334 | if(QString(ent->mnt_dir).startsWith(path) | 324 | if(QString(ent->mnt_dir).startsWith(path) |
335 | && QString(ent->mnt_type).contains("vfat", Qt::CaseInsensitive)) { | 325 | && QString(ent->mnt_type).contains("vfat", Qt::CaseInsensitive)) { |
336 | endmntent(mn); | 326 | endmntent(mn); |
327 | qDebug() << "[Autodetect] device name is" << ent->mnt_fsname; | ||
337 | return QString(ent->mnt_fsname); | 328 | return QString(ent->mnt_fsname); |
338 | } | 329 | } |
339 | } | 330 | } |
@@ -341,31 +332,21 @@ QString Autodetection::resolveDevicename(QString path) | |||
341 | 332 | ||
342 | #endif | 333 | #endif |
343 | 334 | ||
344 | #if defined(Q_OS_MACX) | 335 | #if defined(Q_OS_MACX) || defined(Q_OS_OPENBSD) |
345 | int num; | 336 | int num; |
346 | struct statfs *mntinf; | 337 | struct statfs *mntinf; |
347 | 338 | ||
348 | num = getmntinfo(&mntinf, MNT_WAIT); | 339 | num = getmntinfo(&mntinf, MNT_WAIT); |
349 | while(num--) { | 340 | while(num--) { |
350 | if(QString(mntinf->f_mntonname).startsWith(path) | 341 | if(QString(mntinf->f_mntonname).startsWith(path) |
351 | && QString(mntinf->f_fstypename).contains("vfat", Qt::CaseInsensitive)) | 342 | && QString(mntinf->f_fstypename).contains("msdos", Qt::CaseInsensitive)) { |
343 | qDebug() << "[Autodetect] device name is" << mntinf->f_mntfromname; | ||
352 | return QString(mntinf->f_mntfromname); | 344 | return QString(mntinf->f_mntfromname); |
345 | } | ||
353 | mntinf++; | 346 | mntinf++; |
354 | } | 347 | } |
355 | #endif | 348 | #endif |
356 | 349 | ||
357 | #if defined(Q_OS_OPENBSD) | ||
358 | int num; | ||
359 | struct statfs *mntinf; | ||
360 | |||
361 | num = getmntinfo(&mntinf, MNT_WAIT); | ||
362 | while(num--) { | ||
363 | if(QString(mntinf->f_mntonname).startsWith(device) | ||
364 | && QString(mntinf->f_fstypename).contains("msdos", Qt::CaseInsensitive)) | ||
365 | return QString(mntinf->f_mntfromname); | ||
366 | mntinf++; | ||
367 | } | ||
368 | #endif | ||
369 | #if defined(Q_OS_WIN32) | 350 | #if defined(Q_OS_WIN32) |
370 | DWORD written; | 351 | DWORD written; |
371 | HANDLE h; | 352 | HANDLE h; |
@@ -387,7 +368,7 @@ QString Autodetection::resolveDevicename(QString path) | |||
387 | qDebug() << "[Autodetect] resolving device name: volume spans multiple disks!"; | 368 | qDebug() << "[Autodetect] resolving device name: volume spans multiple disks!"; |
388 | return ""; | 369 | return ""; |
389 | } | 370 | } |
390 | //qDebug() << "Disk:" << extents->Extents[0].DiskNumber; | 371 | qDebug() << "[Autodetect] device name is" << extents->Extents[0].DiskNumber; |
391 | return QString("%1").arg(extents->Extents[0].DiskNumber); | 372 | return QString("%1").arg(extents->Extents[0].DiskNumber); |
392 | } | 373 | } |
393 | #endif | 374 | #endif |