author | zecke <zecke> | 2004-09-18 01:08:08 (UTC) |
---|---|---|
committer | zecke <zecke> | 2004-09-18 01:08:08 (UTC) |
commit | 5096f9bd9f1a06e5238e2206eee195c43a2bdb6b (patch) (unidiff) | |
tree | 57281b88624984d3b2dc7950cd2a5f586f06f076 /core | |
parent | 081f8a3c3a6c6d45743f451cd9dc966a135b8156 (diff) | |
download | opie-5096f9bd9f1a06e5238e2206eee195c43a2bdb6b.zip opie-5096f9bd9f1a06e5238e2206eee195c43a2bdb6b.tar.gz opie-5096f9bd9f1a06e5238e2206eee195c43a2bdb6b.tar.bz2 |
The following change is untested on a real device. So please try and
bitch if I broke something!!!
Make unmounting of sdcards more robust. If we find a /dev/mmcard1 or
/dev/mmc/1 or /dev/mmc* we will remember that device name and if the
user asks us to eject it we will use that name.
-rw-r--r-- | core/applets/cardmon/cardmon.cpp | 15 | ||||
-rw-r--r-- | core/applets/cardmon/cardmon.h | 1 |
2 files changed, 6 insertions, 10 deletions
diff --git a/core/applets/cardmon/cardmon.cpp b/core/applets/cardmon/cardmon.cpp index 48146ab..43ccce2 100644 --- a/core/applets/cardmon/cardmon.cpp +++ b/core/applets/cardmon/cardmon.cpp | |||
@@ -133,23 +133,18 @@ void CardMonitor::mousePressEvent( QMouseEvent * ) { | |||
133 | QSize s = menu->sizeHint(); | 133 | QSize s = menu->sizeHint(); |
134 | int opt = menu->exec( QPoint( p.x() + ( width() / 2 ) - ( s.width() / 2 ), | 134 | int opt = menu->exec( QPoint( p.x() + ( width() / 2 ) - ( s.width() / 2 ), |
135 | p.y() - s.height() ), 0 ); | 135 | p.y() - s.height() ), 0 ); |
136 | 136 | ||
137 | if ( opt == 1 ) { | 137 | if ( opt == 1 ) { |
138 | m_commandOrig = 1; | 138 | m_commandOrig = 1; |
139 | execCommand("/sbin/cardctl eject 0"); | 139 | execCommand("/sbin/cardctl eject 0"); |
140 | } else if ( opt == 0 ) { | 140 | } else if ( opt == 0 ) { |
141 | if ( ODevice::inst() ->system() == System_Familiar ) { | ||
142 | cmd = "umount /dev/mmc/part1"; | ||
143 | } else { | ||
144 | cmd = "umount /dev/mmcda1"; | ||
145 | } | ||
146 | m_commandOrig = 2; | 141 | m_commandOrig = 2; |
147 | execCommand( cmd ); | 142 | execCommand( QString("umount %1").arg(cardSdName)); |
148 | } else if ( opt == 2 ) { | 143 | } else if ( opt == 2 ) { |
149 | m_commandOrig = 3; | 144 | m_commandOrig = 3; |
150 | execCommand( "/sbin/cardctl eject 1" ); | 145 | execCommand( "/sbin/cardctl eject 1" ); |
151 | } | 146 | } |
152 | delete menu; | 147 | delete menu; |
153 | } | 148 | } |
154 | 149 | ||
155 | 150 | ||
@@ -277,21 +272,22 @@ bool CardMonitor::getStatusSd( int showPopUp ) { | |||
277 | 272 | ||
278 | #if defined(_OS_LINUX_) || defined(Q_OS_LINUX) | 273 | #if defined(_OS_LINUX_) || defined(Q_OS_LINUX) |
279 | 274 | ||
280 | struct mntent *me; | 275 | struct mntent *me; |
281 | FILE *mntfp = setmntent( "/etc/mtab", "r" ); | 276 | FILE *mntfp = setmntent( "/etc/mtab", "r" ); |
282 | 277 | ||
283 | if ( mntfp ) { | 278 | if ( mntfp ) { |
284 | while ( ( me = getmntent( mntfp ) ) != 0 ) { | 279 | while ( ( me = getmntent( mntfp ) ) != 0 ) { |
285 | QString fs = me->mnt_fsname; | 280 | QString fs = QFile::decodeName( me->mnt_fsname ); |
286 | //odebug << fs << oendl; | 281 | //odebug << fs << oendl; |
287 | if ( fs.left( 14 ) == "/dev/mmc/part1" || fs.left( 7 ) == "/dev/sd" | 282 | if ( fs.left( 14 ) == "/dev/mmc/part1" || fs.left( 7 ) == "/dev/sd" |
288 | || fs.left( 9 ) == "/dev/mmcd" ) { | 283 | || fs.left( 9 ) == "/dev/mmcd" ) { |
289 | cardInSd = TRUE; | 284 | cardInSd = TRUE; |
285 | cardSdName = fs; | ||
290 | show(); | 286 | show(); |
291 | } | 287 | } |
292 | // else { | 288 | // else { |
293 | // cardInSd = FALSE; | 289 | // cardInSd = FALSE; |
294 | // } | 290 | // } |
295 | } | 291 | } |
296 | endmntent( mntfp ); | 292 | endmntent( mntfp ); |
297 | } | 293 | } |
@@ -333,16 +329,18 @@ void CardMonitor::paintEvent( QPaintEvent * ) { | |||
333 | } | 329 | } |
334 | } | 330 | } |
335 | 331 | ||
336 | int CardMonitor::position() { | 332 | int CardMonitor::position() { |
337 | return 7; | 333 | return 7; |
338 | } | 334 | } |
339 | 335 | ||
340 | void CardMonitor::execCommand( const QString &command ) { | 336 | void CardMonitor::execCommand( const QString &command ) { |
337 | delete m_process; | ||
338 | m_process = 0; | ||
341 | 339 | ||
342 | if ( m_process == 0 ) { | 340 | if ( m_process == 0 ) { |
343 | m_process = new OProcess(); | 341 | m_process = new OProcess(); |
344 | QStringList strList = QStringList::split( " ", command ); | 342 | QStringList strList = QStringList::split( " ", command ); |
345 | 343 | ||
346 | for ( QStringList::Iterator it = strList.begin(); it != strList.end(); ++it ) { | 344 | for ( QStringList::Iterator it = strList.begin(); it != strList.end(); ++it ) { |
347 | *m_process << *it; | 345 | *m_process << *it; |
348 | } | 346 | } |
@@ -366,15 +364,12 @@ void CardMonitor::slotExited( OProcess* ) { | |||
366 | popUp( tr( "CF/PCMCIA card eject failed!" ) ); | 364 | popUp( tr( "CF/PCMCIA card eject failed!" ) ); |
367 | } else if ( m_commandOrig == 2 ) { | 365 | } else if ( m_commandOrig == 2 ) { |
368 | popUp( tr( "SD/MMC card eject failed!" ) ); | 366 | popUp( tr( "SD/MMC card eject failed!" ) ); |
369 | } else if ( m_commandOrig == 3 ) { | 367 | } else if ( m_commandOrig == 3 ) { |
370 | popUp( tr( "CF/PCMCIA card eject failed!" ) ); | 368 | popUp( tr( "CF/PCMCIA card eject failed!" ) ); |
371 | } | 369 | } |
372 | } | 370 | } |
373 | } | 371 | } |
374 | |||
375 | delete m_process; | ||
376 | m_process = 0; | ||
377 | } | 372 | } |
378 | 373 | ||
379 | EXPORT_OPIE_APPLET_v1( CardMonitor ) | 374 | EXPORT_OPIE_APPLET_v1( CardMonitor ) |
380 | 375 | ||
diff --git a/core/applets/cardmon/cardmon.h b/core/applets/cardmon/cardmon.h index 19d0394..b02c8b1 100644 --- a/core/applets/cardmon/cardmon.h +++ b/core/applets/cardmon/cardmon.h | |||
@@ -54,16 +54,17 @@ private: | |||
54 | bool cardInPcmcia0; | 54 | bool cardInPcmcia0; |
55 | QString cardInPcmcia0Name; | 55 | QString cardInPcmcia0Name; |
56 | QString cardInPcmcia0Type; | 56 | QString cardInPcmcia0Type; |
57 | // pcmcia socket 1 | 57 | // pcmcia socket 1 |
58 | bool cardInPcmcia1; | 58 | bool cardInPcmcia1; |
59 | QString cardInPcmcia1Name; | 59 | QString cardInPcmcia1Name; |
60 | QString cardInPcmcia1Type; | 60 | QString cardInPcmcia1Type; |
61 | bool cardInSd; | 61 | bool cardInSd; |
62 | QString cardSdName; // the device which is mounted | ||
62 | void iconShow(); | 63 | void iconShow(); |
63 | QPopupMenu *popupMenu; | 64 | QPopupMenu *popupMenu; |
64 | void popUp(QString message, QString icon = QString::null ); | 65 | void popUp(QString message, QString icon = QString::null ); |
65 | Opie::Core::OProcess* m_process; | 66 | Opie::Core::OProcess* m_process; |
66 | }; | 67 | }; |
67 | 68 | ||
68 | #endif | 69 | #endif |
69 | 70 | ||