summaryrefslogtreecommitdiff
authormickeyl <mickeyl>2005-05-06 09:27:12 (UTC)
committer mickeyl <mickeyl>2005-05-06 09:27:12 (UTC)
commit543d9d7c58c9601dba6f47b3a4011313d1d75499 (patch) (unidiff)
tree6b9d259a91b220264c961d542e25b69fe070320f
parentc199fa0b0ef971c3a121af6c31a9a9822561a1be (diff)
downloadopie-543d9d7c58c9601dba6f47b3a4011313d1d75499.zip
opie-543d9d7c58c9601dba6f47b3a4011313d1d75499.tar.gz
opie-543d9d7c58c9601dba6f47b3a4011313d1d75499.tar.bz2
- OManufacturerDB: check if there is a QApplication before calling Global::statusMessage or qApp->processEvents()
- ONetwork: skip hostap control interfaces 'wifi*' - OWirelessNetworkInterface: set \0 in SSID() and nickName() to work around (buggy) drivers not returning a zero-terminated string
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--ChangeLog1
-rw-r--r--libopie2/opienet/omanufacturerdb.cpp17
-rw-r--r--libopie2/opienet/onetwork.cpp9
-rw-r--r--libopie2/opienet/opienet.pro2
4 files changed, 14 insertions, 15 deletions
diff --git a/ChangeLog b/ChangeLog
index 63ed0c3..511c841 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -10,32 +10,33 @@
10 ---------- 10 ----------
11 * #1476 - Wrong order of application entries in the O-menu (skyhusker) 11 * #1476 - Wrong order of application entries in the O-menu (skyhusker)
12 * #1535- Missing line break and unnecessary location shown with Today-Calendar plugin (deller) 12 * #1535- Missing line break and unnecessary location shown with Today-Calendar plugin (deller)
13 * #1565 - crash-fix in odevice.cpp while scanning the distribution table (deller) 13 * #1565 - crash-fix in odevice.cpp while scanning the distribution table (deller)
14 * #1614 - Make Opie-console start in $HOME instead of / (skyhusker) 14 * #1614 - Make Opie-console start in $HOME instead of / (skyhusker)
15 * n.a.- always show volume and wireless applet popups inside visible screen (deller) 15 * n.a.- always show volume and wireless applet popups inside visible screen (deller)
16 * n.a. - scale O-Menu-Applets appropriately (mickeyl) 16 * n.a. - scale O-Menu-Applets appropriately (mickeyl)
17 * n.a.- libopienet: fix bugs in wireless scanning and setting SSID (skyhusker) 17 * n.a.- libopienet: fix bugs in wireless scanning and setting SSID (skyhusker)
18 * n.a.- Wellenreiter: relax WE version matching test a bit (mickeyl) 18 * n.a.- Wellenreiter: relax WE version matching test a bit (mickeyl)
19 * n.a.- scale BluezApplet appropriately and use larger icons (mickeyl) 19 * n.a.- scale BluezApplet appropriately and use larger icons (mickeyl)
20 * n.a.- memoryapplet: fix crash in memoryapplet on kernels without swap support (seneca cunningham) 20 * n.a.- memoryapplet: fix crash in memoryapplet on kernels without swap support (seneca cunningham)
21 21
22 Internal 22 Internal
23 -------- 23 --------
24 * Make BluezApplet use OTaskbarApplet (mickeyl) 24 * Make BluezApplet use OTaskbarApplet (mickeyl)
25 * Rewrite OFileNotification to use the upcoming inotify interface instead of the deprecated dnotify (mickeyl) 25 * Rewrite OFileNotification to use the upcoming inotify interface instead of the deprecated dnotify (mickeyl)
26 * libopienet: Skip hostap control interfaces 'wifi' and improve robustness in ONetworkInterface (mickeyl)
26 27
27 2005-03-25Opie 1.2.0 28 2005-03-25Opie 1.2.0
28 29
29 Fixed Bugs 30 Fixed Bugs
30 ---------- 31 ----------
31 * #1613 - AdvancedFM - scale toolbar icons appropriately (drw) 32 * #1613 - AdvancedFM - scale toolbar icons appropriately (drw)
32 * #1620 - OFileSelector - show the button on press and not on press on hold (alwin) 33 * #1620 - OFileSelector - show the button on press and not on press on hold (alwin)
33 * #1473 - Opie-Eye - Same as #1620 but we lack a common FileSystem Button class (zecke) 34 * #1473 - Opie-Eye - Same as #1620 but we lack a common FileSystem Button class (zecke)
34 * n.a. - PackageManager - fix bug where messages show up multiple times in install dialog (drw) 35 * n.a. - PackageManager - fix bug where messages show up multiple times in install dialog (drw)
35 * n.a.- make qpeglobal.h include qglobal.h (zecke) 36 * n.a.- make qpeglobal.h include qglobal.h (zecke)
36 37
37 2005-03-20Opie 1.2.0-rc1 38 2005-03-20Opie 1.2.0-rc1
38 39
39 40
40 New Features 41 New Features
41 ------------ 42 ------------
diff --git a/libopie2/opienet/omanufacturerdb.cpp b/libopie2/opienet/omanufacturerdb.cpp
index 123aee8..3af3d4c 100644
--- a/libopie2/opienet/omanufacturerdb.cpp
+++ b/libopie2/opienet/omanufacturerdb.cpp
@@ -15,34 +15,32 @@
15    : ..    .:,     . . . without even the implied warranty of 15    : ..    .:,     . . . without even the implied warranty of
16    =_        +     =;=|` MERCHANTABILITY or FITNESS FOR A 16    =_        +     =;=|` MERCHANTABILITY or FITNESS FOR A
17  _.=:.       :    :=>`: PARTICULAR PURPOSE. See the GNU 17  _.=:.       :    :=>`: PARTICULAR PURPOSE. See the GNU
18..}^=.=       =       ; Library General Public License for more 18..}^=.=       =       ; Library General Public License for more
19++=   -.     .`     .: details. 19++=   -.     .`     .: details.
20 :     =  ...= . :.=- 20 :     =  ...= . :.=-
21 -.   .:....=;==+<; You should have received a copy of the GNU 21 -.   .:....=;==+<; You should have received a copy of the GNU
22  -_. . .   )=.  = Library General Public License along with 22  -_. . .   )=.  = Library General Public License along with
23    --        :-=` this library; see the file COPYING.LIB. 23    --        :-=` this library; see the file COPYING.LIB.
24 If not, write to the Free Software Foundation, 24 If not, write to the Free Software Foundation,
25 Inc., 59 Temple Place - Suite 330, 25 Inc., 59 Temple Place - Suite 330,
26 Boston, MA 02111-1307, USA. 26 Boston, MA 02111-1307, USA.
27*/ 27*/
28 28
29#include "omanufacturerdb.h" 29#include "omanufacturerdb.h"
30 30
31#define OPIE_IMPROVE_GUI_LATENCY 1
32
33/* OPIE */ 31/* OPIE */
34#include <opie2/odebug.h> 32#include <opie2/odebug.h>
35#include <qpe/qpeapplication.h> 33#include <qpe/qpeapplication.h>
36#ifdef OPIE_IMPROVE_GUI_LATENCY 34#ifdef OPIE_IMPROVE_GUI_LATENCY
37#include <qpe/global.h> 35#include <qpe/global.h>
38#endif 36#endif
39 37
40 38
41 39
42/* QT */ 40/* QT */
43#include <qapplication.h> 41#include <qapplication.h>
44#include <qfile.h> 42#include <qfile.h>
45#include <qtextstream.h> 43#include <qtextstream.h>
46 44
47using namespace Opie::Core; 45using namespace Opie::Core;
48namespace Opie { 46namespace Opie {
@@ -50,86 +48,79 @@ namespace Net {
50 48
51OManufacturerDB* OManufacturerDB::_instance = 0; 49OManufacturerDB* OManufacturerDB::_instance = 0;
52 50
53OManufacturerDB* OManufacturerDB::instance() 51OManufacturerDB* OManufacturerDB::instance()
54{ 52{
55 if ( !OManufacturerDB::_instance ) 53 if ( !OManufacturerDB::_instance )
56 { 54 {
57 odebug << "OManufacturerDB::instance(): creating OManufacturerDB..." << oendl; 55 odebug << "OManufacturerDB::instance(): creating OManufacturerDB..." << oendl;
58 _instance = new OManufacturerDB(); 56 _instance = new OManufacturerDB();
59 } 57 }
60 return _instance; 58 return _instance;
61} 59}
62 60
63 61
64OManufacturerDB::OManufacturerDB() 62OManufacturerDB::OManufacturerDB()
65{ 63{
66 #ifdef OPIE_IMPROVE_GUI_LATENCY 64 if ( qApp ) Global::statusMessage( "Reading Manufacturers..." );
67 Global::statusMessage( "Reading Manufacturers..." );
68 #endif
69 QString filename( "/etc/manufacturers" ); 65 QString filename( "/etc/manufacturers" );
70 odebug << "OManufacturerDB: trying to read " << filename << oendl; 66 odebug << "OManufacturerDB: trying to read " << filename << oendl;
71 if ( !QFile::exists( filename ) ) 67 if ( !QFile::exists( filename ) )
72 { 68 {
73 filename = QPEApplication::qpeDir()+"etc/manufacturers"; 69 filename = QPEApplication::qpeDir()+"etc/manufacturers";
74 odebug << "OManufacturerDB: trying to read " << filename << oendl; 70 odebug << "OManufacturerDB: trying to read " << filename << oendl;
75 if ( !QFile::exists( filename ) ) 71 if ( !QFile::exists( filename ) )
76 { 72 {
77 filename = "/usr/share/wellenreiter/manufacturers"; 73 filename = "/usr/share/wellenreiter/manufacturers";
78 odebug << "OManufacturerDB: trying to read " << filename << oendl; 74 odebug << "OManufacturerDB: trying to read " << filename << oendl;
79 } 75 }
80 } 76 }
81 77
82 QFile file( filename ); 78 QFile file( filename );
83 bool hasFile = file.open( IO_ReadOnly ); 79 bool hasFile = file.open( IO_ReadOnly );
84 if (!hasFile) 80 if (!hasFile)
85 { 81 {
86 owarn << "OManufacturerDB: no valid manufacturer list found." << oendl; 82 owarn << "OManufacturerDB: no valid manufacturer list found." << oendl;
87 } 83 }
88 else 84 else
89 { 85 {
90 odebug << "OManufacturerDB: found manufacturer list in " << filename << oendl; 86 odebug << "OManufacturerDB: found manufacturer list in " << filename << oendl;
91 QTextStream s( &file ); 87 QTextStream s( &file );
92 QString addr; 88 QString addr;
93 QString manu; 89 QString manu;
94 QString extManu; 90 QString extManu;
95 #ifdef OPIE_IMPROVE_GUI_LATENCY
96 int counter = 0; 91 int counter = 0;
97 #endif 92
98 while (!s.atEnd()) 93 while (!s.atEnd())
99 { 94 {
100 s >> addr; 95 s >> addr;
101 s >> manu; 96 s >> manu;
102 s >> extManu; 97 s >> extManu;
103 98
104 manufacturers.insert( addr, manu ); 99 manufacturers.insert( addr, manu );
105 manufacturersExt.insert( addr, extManu ); 100 manufacturersExt.insert( addr, extManu );
106 // odebug << "OmanufacturerDB: parse '" << addr << "' as '" << manu << "' (" << extManu << ")" << oendl; 101 // odebug << "OmanufacturerDB: parse '" << addr << "' as '" << manu << "' (" << extManu << ")" << oendl;
107 #ifdef OPIE_IMPROVE_GUI_LATENCY
108 counter++; 102 counter++;
109 if ( counter == 50 ) 103 if ( counter == 50 )
110 { 104 {
111 qApp->processEvents(); 105 if ( qApp ) qApp->processEvents();
112 counter = 0; 106 counter = 0;
113 } 107 }
114 #endif
115 } 108 }
116 odebug << "OManufacturerDB: manufacturer list completed." << oendl; 109 odebug << "OManufacturerDB: manufacturer list completed." << oendl;
117 #ifdef OPIE_IMPROVE_GUI_LATENCY 110 if ( qApp ) Global::statusMessage( "Manufacturers Complete..." );
118 Global::statusMessage( "Manufacturers Complete..." );
119 #endif
120 } 111 }
121} 112}
122 113
123 114
124OManufacturerDB::~OManufacturerDB() 115OManufacturerDB::~OManufacturerDB()
125{ 116{
126} 117}
127 118
128 119
129const QString& OManufacturerDB::lookup( const QString& macaddr ) const 120const QString& OManufacturerDB::lookup( const QString& macaddr ) const
130{ 121{
131 return manufacturers[macaddr.upper().left(8)]; 122 return manufacturers[macaddr.upper().left(8)];
132} 123}
133 124
134 125
135const QString& OManufacturerDB::lookupExt( const QString& macaddr ) const 126const QString& OManufacturerDB::lookupExt( const QString& macaddr ) const
diff --git a/libopie2/opienet/onetwork.cpp b/libopie2/opienet/onetwork.cpp
index 0a74019..f4bdbe0 100644
--- a/libopie2/opienet/onetwork.cpp
+++ b/libopie2/opienet/onetwork.cpp
@@ -91,32 +91,38 @@ void ONetwork::synchronize()
91 QString str; 91 QString str;
92 QFile f( "/proc/net/dev" ); 92 QFile f( "/proc/net/dev" );
93 bool hasFile = f.open( IO_ReadOnly ); 93 bool hasFile = f.open( IO_ReadOnly );
94 if ( !hasFile ) 94 if ( !hasFile )
95 { 95 {
96 odebug << "ONetwork: /proc/net/dev not existing. No network devices available" << oendl; 96 odebug << "ONetwork: /proc/net/dev not existing. No network devices available" << oendl;
97 return; 97 return;
98 } 98 }
99 QTextStream s( &f ); 99 QTextStream s( &f );
100 s.readLine(); 100 s.readLine();
101 s.readLine(); 101 s.readLine();
102 while ( !s.atEnd() ) 102 while ( !s.atEnd() )
103 { 103 {
104 s >> str; 104 s >> str;
105 str.truncate( str.find( ':' ) ); 105 str.truncate( str.find( ':' ) );
106 odebug << "ONetwork: found interface '" << str << "'" << oendl; 106 odebug << "ONetwork: found interface '" << str << "'" << oendl;
107 if ( str.startsWith( "wifi" ) )
108 {
109 odebug << "ONetwork: ignoring hostap control interface" << oendl;
110 s.readLine();
111 continue;
112 }
107 ONetworkInterface* iface = 0; 113 ONetworkInterface* iface = 0;
108 if ( isWirelessInterface( str ) ) 114 if ( isWirelessInterface( str ) )
109 { 115 {
110 iface = new OWirelessNetworkInterface( this, (const char*) str ); 116 iface = new OWirelessNetworkInterface( this, (const char*) str );
111 odebug << "ONetwork: interface '" << str << "' has Wireless Extensions" << oendl; 117 odebug << "ONetwork: interface '" << str << "' has Wireless Extensions" << oendl;
112 } 118 }
113 else 119 else
114 { 120 {
115 iface = new ONetworkInterface( this, (const char*) str ); 121 iface = new ONetworkInterface( this, (const char*) str );
116 } 122 }
117 _interfaces.insert( str, iface ); 123 _interfaces.insert( str, iface );
118 s.readLine(); 124 s.readLine();
119 } 125 }
120} 126}
121 127
122 128
@@ -795,33 +801,33 @@ void OWirelessNetworkInterface::setNickName( const QString& nickname )
795 _iwr.u.essid.length = nickname.length(); 801 _iwr.u.essid.length = nickname.length();
796 wioctl( SIOCSIWNICKN ); 802 wioctl( SIOCSIWNICKN );
797} 803}
798 804
799 805
800QString OWirelessNetworkInterface::nickName() const 806QString OWirelessNetworkInterface::nickName() const
801{ 807{
802 char str[IW_ESSID_MAX_SIZE]; 808 char str[IW_ESSID_MAX_SIZE];
803 _iwr.u.data.pointer = &str[0]; 809 _iwr.u.data.pointer = &str[0];
804 _iwr.u.data.length = IW_ESSID_MAX_SIZE; 810 _iwr.u.data.length = IW_ESSID_MAX_SIZE;
805 if ( !wioctl( SIOCGIWNICKN ) ) 811 if ( !wioctl( SIOCGIWNICKN ) )
806 { 812 {
807 return "<unknown>"; 813 return "<unknown>";
808 } 814 }
809 else 815 else
810 { 816 {
811 str[_iwr.u.data.length] = 0x0; // some drivers (e.g. wlan-ng) don't zero-terminate the string 817 str[_iwr.u.data.length] = '\0'; // some drivers don't zero-terminate the string
812 return str; 818 return str;
813 } 819 }
814} 820}
815 821
816 822
817void OWirelessNetworkInterface::setPrivate( const QString& call, int numargs, ... ) 823void OWirelessNetworkInterface::setPrivate( const QString& call, int numargs, ... )
818{ 824{
819 OPrivateIOCTL* priv = static_cast<OPrivateIOCTL*>( child( (const char*) call ) ); 825 OPrivateIOCTL* priv = static_cast<OPrivateIOCTL*>( child( (const char*) call ) );
820 if ( !priv ) 826 if ( !priv )
821 { 827 {
822 owarn << "OWirelessNetworkInterface::setPrivate(): interface '" << name() 828 owarn << "OWirelessNetworkInterface::setPrivate(): interface '" << name()
823 << "' does not support private ioctl '" << call << "'" << oendl; 829 << "' does not support private ioctl '" << call << "'" << oendl;
824 return; 830 return;
825 } 831 }
826 if ( priv->numberSetArgs() != numargs ) 832 if ( priv->numberSetArgs() != numargs )
827 { 833 {
@@ -853,32 +859,33 @@ bool OWirelessNetworkInterface::hasPrivate( const QString& call )
853{ 859{
854 return child( call.local8Bit() ); 860 return child( call.local8Bit() );
855} 861}
856 862
857 863
858QString OWirelessNetworkInterface::SSID() const 864QString OWirelessNetworkInterface::SSID() const
859{ 865{
860 char str[IW_ESSID_MAX_SIZE]; 866 char str[IW_ESSID_MAX_SIZE];
861 _iwr.u.essid.pointer = &str[0]; 867 _iwr.u.essid.pointer = &str[0];
862 _iwr.u.essid.length = IW_ESSID_MAX_SIZE; 868 _iwr.u.essid.length = IW_ESSID_MAX_SIZE;
863 if ( !wioctl( SIOCGIWESSID ) ) 869 if ( !wioctl( SIOCGIWESSID ) )
864 { 870 {
865 return "<unknown>"; 871 return "<unknown>";
866 } 872 }
867 else 873 else
868 { 874 {
875 str[_iwr.u.essid.length] = '\0'; // some drivers don't zero-terminate the string
869 return str; 876 return str;
870 } 877 }
871} 878}
872 879
873 880
874void OWirelessNetworkInterface::setSSID( const QString& ssid ) 881void OWirelessNetworkInterface::setSSID( const QString& ssid )
875{ 882{
876 _iwr.u.essid.pointer = const_cast<char*>( (const char*) ssid ); 883 _iwr.u.essid.pointer = const_cast<char*>( (const char*) ssid );
877 _iwr.u.essid.length = ssid.length()+1; // zero byte 884 _iwr.u.essid.length = ssid.length()+1; // zero byte
878 wioctl( SIOCSIWESSID ); 885 wioctl( SIOCSIWESSID );
879} 886}
880 887
881 888
882OStationList* OWirelessNetworkInterface::scanNetwork() 889OStationList* OWirelessNetworkInterface::scanNetwork()
883{ 890{
884 _iwr.u.param.flags = IW_SCAN_DEFAULT; 891 _iwr.u.param.flags = IW_SCAN_DEFAULT;
diff --git a/libopie2/opienet/opienet.pro b/libopie2/opienet/opienet.pro
index a10a949..460de0a 100644
--- a/libopie2/opienet/opienet.pro
+++ b/libopie2/opienet/opienet.pro
@@ -5,33 +5,33 @@ HEADERS = 802_11_user.h \
5 dhcp.h \ 5 dhcp.h \
6 udp_ports.h \ 6 udp_ports.h \
7 odebugmapper.h \ 7 odebugmapper.h \
8 omanufacturerdb.h \ 8 omanufacturerdb.h \
9 onetutils.h \ 9 onetutils.h \
10 onetwork.h \ 10 onetwork.h \
11 opcap.h \ 11 opcap.h \
12 ostation.h 12 ostation.h
13SOURCES = odebugmapper.cpp \ 13SOURCES = odebugmapper.cpp \
14 omanufacturerdb.cpp \ 14 omanufacturerdb.cpp \
15 onetutils.cpp \ 15 onetutils.cpp \
16 onetwork.cpp \ 16 onetwork.cpp \
17 opcap.cpp \ 17 opcap.cpp \
18 ostation.cpp 18 ostation.cpp
19INTERFACES = 19INTERFACES =
20TARGET = opienet2 20TARGET = opienet2
21VERSION = 1.8.5 21VERSION = 1.8.6
22INCLUDEPATH += $(OPIEDIR)/include 22INCLUDEPATH += $(OPIEDIR)/include
23DEPENDPATH += $(OPIEDIR)/include 23DEPENDPATH += $(OPIEDIR)/include
24LIBS += -lpcap 24LIBS += -lpcap
25 25
26 26
27!contains( platform, x11 ) { 27!contains( platform, x11 ) {
28 include( $(OPIEDIR)/include.pro ) 28 include( $(OPIEDIR)/include.pro )
29} 29}
30 30
31contains( platform, x11 ) { 31contains( platform, x11 ) {
32 LIBS += -L$(OPIEDIR)/lib -Wl,-rpath,$(OPIEDIR)/lib 32 LIBS += -L$(OPIEDIR)/lib -Wl,-rpath,$(OPIEDIR)/lib
33} 33}
34 34
35!isEmpty( LIBPCAP_INC_DIR ) { 35!isEmpty( LIBPCAP_INC_DIR ) {
36 INCLUDEPATH = $$LIBPCAP_INC_DIR $$INCLUDEPATH 36 INCLUDEPATH = $$LIBPCAP_INC_DIR $$INCLUDEPATH
37} 37}