summaryrefslogtreecommitdiff
Unidiff
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--noncore/applets/wirelessapplet/networkinfo.cpp28
1 files changed, 16 insertions, 12 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()
151 151
152 result = ioctl( fd, SIOCGIWNICKN, &iwr ); 152 result = ioctl( fd, SIOCGIWNICKN, &iwr );
153 if ( result == 0 ) 153 if ( result == 0 )
154 { 154 {
155 iwr.u.data.pointer[(unsigned int) iwr.u.data.length-1] = '\0'; 155 iwr.u.data.pointer[(unsigned int) iwr.u.data.length-1] = '\0';
156 nick = iwr.u.data.pointer; 156 nick = iwr.u.data.pointer;
157 } else nick = "*** Unknown ***"; 157 } else nick = "*** Unknown ***";
158 158
159 result = ioctl( fd, SIOCGIWMODE, &iwr ); 159 result = ioctl( fd, SIOCGIWMODE, &iwr );
160 if ( result == 0 ) 160 if ( result == 0 )
161 mode = ( iwr.u.mode == IW_MODE_ADHOC ) ? "Ad-Hoc" : "Managed"; 161 mode = ( iwr.u.mode == IW_MODE_ADHOC ) ? "Ad-Hoc" : "Managed";
162 else mode = "*** Unknown ***"; 162 else mode = "*** Unknown ***";
163 163
164 result = ioctl( fd, SIOCGIWFREQ, &iwr ); 164 result = ioctl( fd, SIOCGIWFREQ, &iwr );
165 if ( result == 0 ) 165 if ( result == 0 )
166 freq = double( iwr.u.freq.m ) * pow( 10, iwr.u.freq.e ) / 1000000000; 166 freq = double( iwr.u.freq.m ) * pow( 10, iwr.u.freq.e ) / 1000000000;
167 else freq = 0; 167 else freq = 0;
168 168
169 // gather link quality from /proc/net/wireless 169 // gather link quality from /proc/net/wireless
170 170
171 char c; 171 char c;
172 QString status; 172 QString status;
173 QString name; 173 QString name;
174 QFile wfile( PROCNETWIRELESS ); 174 QFile wfile( PROCNETWIRELESS );
175 wfile.open( IO_ReadOnly ); 175 bool hasFile = wfile.open( IO_ReadOnly );
176 QTextStream wstream( &wfile ); 176 QTextStream wstream( &wfile );
177 wstream.readLine(); // skip the first two lines 177 if ( hasFile )
178 wstream.readLine(); // because they only contain headers 178 {
179 179 wstream.readLine(); // skip the first two lines
180 if ( wstream.atEnd() ) 180 wstream.readLine(); // because they only contain headers
181 }
182 if ( ( !hasFile ) || ( wstream.atEnd() ) )
181 { 183 {
182 qDebug( "WIFIAPPLET: D'oh! Someone removed the card..." ); 184 qDebug( "WIFIAPPLET: D'oh! Someone removed the card..." );
183 quality = -1; 185 quality = -1;
184 signal = IW_LOWER; 186 signal = IW_LOWER;
185 noise = IW_LOWER; 187 noise = IW_LOWER;
186 return; 188 return;
187 } 189 }
188 190
189 wstream >> name >> status >> quality >> c >> signal >> c >> noise; 191 wstream >> name >> status >> quality >> c >> signal >> c >> noise;
190 192
191 if ( quality > 92 ) 193 if ( quality > 92 )
192 qDebug( "WIFIAPPLET: D'oh! Quality %d > estimated max!\n", quality ); 194 qDebug( "WIFIAPPLET: D'oh! Quality %d > estimated max!\n", quality );
193 if ( ( signal > IW_UPPER ) || ( signal < IW_LOWER ) ) 195 if ( ( signal > IW_UPPER ) || ( signal < IW_LOWER ) )
194 qDebug( "WIFIAPPLET: Doh! Strength %d > estimated max!\n", signal ); 196 qDebug( "WIFIAPPLET: Doh! Strength %d > estimated max!\n", signal );
195 if ( ( noise > IW_UPPER ) || ( noise < IW_LOWER ) ) 197 if ( ( noise > IW_UPPER ) || ( noise < IW_LOWER ) )
196 qDebug( "WIFIAPPLET: Doh! Noise %d > estimated max!\n", noise ); 198 qDebug( "WIFIAPPLET: Doh! Noise %d > estimated max!\n", noise );
197} 199}
198 200
199//--------------------------------------------------------------------------- 201//---------------------------------------------------------------------------
200// class Network 202// class Network
201// 203//
202 204
203MNetwork::MNetwork() 205MNetwork::MNetwork()
204{ 206{
205 qDebug( "MNetwork::MNetwork()" ); 207 //qDebug( "MNetwork::MNetwork()" );
206 procfile = "/proc/net/dev"; 208 procfile = PROCNETDEV;
207} 209}
208 210
209MNetwork::~MNetwork() 211MNetwork::~MNetwork()
210{ 212{
211 qDebug( "MNetwork::~MNetwork()" ); 213 //qDebug( "MNetwork::~MNetwork()" );
212} 214}
213 215
214//--------------------------------------------------------------------------- 216//---------------------------------------------------------------------------
215// class WirelessNetwork 217// class WirelessNetwork
216// 218//
217 219
218MWirelessNetwork::MWirelessNetwork() 220MWirelessNetwork::MWirelessNetwork()
219{ 221{
220 qDebug( "MWirelessNetwork::MWirelessNetwork()" ); 222 //qDebug( "MWirelessNetwork::MWirelessNetwork()" );
221 procfile = "/proc/net/wireless"; 223 procfile = PROCNETWIRELESS;
222} 224}
223 225
224MWirelessNetwork::~MWirelessNetwork() 226MWirelessNetwork::~MWirelessNetwork()
225{ 227{
226 qDebug( "MWirelessNetwork::~MWirelessNetwork()" ); 228 //qDebug( "MWirelessNetwork::~MWirelessNetwork()" );
227} 229}
228 230
229MNetworkInterface* MWirelessNetwork::createInterface( const char* n ) const 231MNetworkInterface* MWirelessNetwork::createInterface( const char* n ) const
230{ 232{
231 return new MWirelessNetworkInterface( n ); 233 return new MWirelessNetworkInterface( n );
232} 234}
233 235
234//--------------------------------------------------------------------------- 236//---------------------------------------------------------------------------
235// class NetworkInterface 237// class NetworkInterface
236// 238//
237 239
238MNetworkInterface* MNetwork::getFirstInterface() 240MNetworkInterface* MNetwork::getFirstInterface()
239{ 241{
240 enumerateInterfaces(); 242 enumerateInterfaces();
241 InterfaceMapIterator it( interfaces ); 243 InterfaceMapIterator it( interfaces );
242 return ( it.count() > 0 ) ? it.toFirst() : 0; 244 return ( it.count() > 0 ) ? it.toFirst() : 0;
243} 245}
244 246
245void MNetwork::enumerateInterfaces() 247void MNetwork::enumerateInterfaces()
246{ 248{
247 interfaces.clear(); 249 interfaces.clear();
248 QString str; 250 QString str;
249 QFile f( procfile ); 251 QFile f( procfile );
250 f.open( IO_ReadOnly ); 252 bool hasFile = f.open( IO_ReadOnly );
253 if ( !hasFile )
254 return;
251 QTextStream s( &f ); 255 QTextStream s( &f );
252 s.readLine(); 256 s.readLine();
253 s.readLine(); 257 s.readLine();
254 while ( !s.atEnd() ) 258 while ( !s.atEnd() )
255 { 259 {
256 s >> str; 260 s >> str;
257 str.truncate( str.find( ':' ) ); 261 str.truncate( str.find( ':' ) );
258 qDebug( "WIFIAPPLET: found interface '%s'", (const char*) str ); 262 qDebug( "WIFIAPPLET: found interface '%s'", (const char*) str );
259 interfaces.insert( str, createInterface( str ) ); 263 interfaces.insert( str, createInterface( str ) );
260 s.readLine(); 264 s.readLine();
261 } 265 }
262} 266}
263 267
264MNetworkInterface* MNetwork::createInterface( const char* n ) const 268MNetworkInterface* MNetwork::createInterface( const char* n ) const
265{ 269{
266 return new MNetworkInterface( n ); 270 return new MNetworkInterface( n );
267} 271}