author | mickeyl <mickeyl> | 2002-08-14 23:55:37 (UTC) |
---|---|---|
committer | mickeyl <mickeyl> | 2002-08-14 23:55:37 (UTC) |
commit | f4fb50020242275a11f4b185ff843517e0862f9b (patch) (side-by-side diff) | |
tree | 92a0fb73206a86faea9604edcc7666b968512389 | |
parent | 8951b45cfd2c0063e66d947346535f1af319d2a9 (diff) | |
download | opie-f4fb50020242275a11f4b185ff843517e0862f9b.zip opie-f4fb50020242275a11f4b185ff843517e0862f9b.tar.gz opie-f4fb50020242275a11f4b185ff843517e0862f9b.tar.bz2 |
Fixed damn bug causing wirelessapplet to hang Opie if /proc/net/wireless is not found (i.e. SHARP ROM or Desktop PC)
-rw-r--r-- | noncore/applets/wirelessapplet/networkinfo.cpp | 24 |
1 files changed, 14 insertions, 10 deletions
diff --git a/noncore/applets/wirelessapplet/networkinfo.cpp b/noncore/applets/wirelessapplet/networkinfo.cpp index dc5c3be..22d7d83 100644 --- a/noncore/applets/wirelessapplet/networkinfo.cpp +++ b/noncore/applets/wirelessapplet/networkinfo.cpp @@ -151,117 +151,121 @@ void MWirelessNetworkInterface::updateStatistics() result = ioctl( fd, SIOCGIWNICKN, &iwr ); if ( result == 0 ) { iwr.u.data.pointer[(unsigned int) iwr.u.data.length-1] = '\0'; nick = iwr.u.data.pointer; } else nick = "*** Unknown ***"; result = ioctl( fd, SIOCGIWMODE, &iwr ); if ( result == 0 ) mode = ( iwr.u.mode == IW_MODE_ADHOC ) ? "Ad-Hoc" : "Managed"; else mode = "*** Unknown ***"; result = ioctl( fd, SIOCGIWFREQ, &iwr ); if ( result == 0 ) freq = double( iwr.u.freq.m ) * pow( 10, iwr.u.freq.e ) / 1000000000; else freq = 0; // gather link quality from /proc/net/wireless char c; QString status; QString name; QFile wfile( PROCNETWIRELESS ); - wfile.open( IO_ReadOnly ); + bool hasFile = wfile.open( IO_ReadOnly ); QTextStream wstream( &wfile ); + if ( hasFile ) + { wstream.readLine(); // skip the first two lines wstream.readLine(); // because they only contain headers - - if ( wstream.atEnd() ) + } + if ( ( !hasFile ) || ( wstream.atEnd() ) ) { qDebug( "WIFIAPPLET: D'oh! Someone removed the card..." ); quality = -1; signal = IW_LOWER; noise = IW_LOWER; return; } wstream >> name >> status >> quality >> c >> signal >> c >> noise; if ( quality > 92 ) qDebug( "WIFIAPPLET: D'oh! Quality %d > estimated max!\n", quality ); if ( ( signal > IW_UPPER ) || ( signal < IW_LOWER ) ) qDebug( "WIFIAPPLET: Doh! Strength %d > estimated max!\n", signal ); if ( ( noise > IW_UPPER ) || ( noise < IW_LOWER ) ) qDebug( "WIFIAPPLET: Doh! Noise %d > estimated max!\n", noise ); } //--------------------------------------------------------------------------- // class Network // MNetwork::MNetwork() { - qDebug( "MNetwork::MNetwork()" ); - procfile = "/proc/net/dev"; + //qDebug( "MNetwork::MNetwork()" ); + procfile = PROCNETDEV; } MNetwork::~MNetwork() { - qDebug( "MNetwork::~MNetwork()" ); + //qDebug( "MNetwork::~MNetwork()" ); } //--------------------------------------------------------------------------- // class WirelessNetwork // MWirelessNetwork::MWirelessNetwork() { - qDebug( "MWirelessNetwork::MWirelessNetwork()" ); - procfile = "/proc/net/wireless"; + //qDebug( "MWirelessNetwork::MWirelessNetwork()" ); + procfile = PROCNETWIRELESS; } MWirelessNetwork::~MWirelessNetwork() { - qDebug( "MWirelessNetwork::~MWirelessNetwork()" ); + //qDebug( "MWirelessNetwork::~MWirelessNetwork()" ); } MNetworkInterface* MWirelessNetwork::createInterface( const char* n ) const { return new MWirelessNetworkInterface( n ); } //--------------------------------------------------------------------------- // class NetworkInterface // MNetworkInterface* MNetwork::getFirstInterface() { enumerateInterfaces(); InterfaceMapIterator it( interfaces ); return ( it.count() > 0 ) ? it.toFirst() : 0; } void MNetwork::enumerateInterfaces() { interfaces.clear(); QString str; QFile f( procfile ); - f.open( IO_ReadOnly ); + bool hasFile = f.open( IO_ReadOnly ); + if ( !hasFile ) + return; QTextStream s( &f ); s.readLine(); s.readLine(); while ( !s.atEnd() ) { s >> str; str.truncate( str.find( ':' ) ); qDebug( "WIFIAPPLET: found interface '%s'", (const char*) str ); interfaces.insert( str, createInterface( str ) ); s.readLine(); } } MNetworkInterface* MNetwork::createInterface( const char* n ) const { return new MNetworkInterface( n ); } |