1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
|
/**********************************************************************
** Copyright (C) 2002 Michael 'Mickey' Lauer. All rights reserved.
**
** This file is part of Opie Environment.
**
** This file may be distributed and/or modified under the terms of the
** GNU General Public License version 2 as published by the Free Software
** Foundation and appearing in the file LICENSE.GPL included in the
** packaging of this file.
**
** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
**
**********************************************************************/
#include "omanufacturerdb.h"
// Qt
#include <qstring.h>
#include <qfile.h>
#include <qtextstream.h>
OManufacturerDB* OManufacturerDB::_instance = 0;
OManufacturerDB* OManufacturerDB::instance()
{
if ( !OManufacturerDB::_instance )
{
qDebug( "OManufacturerDB::instance(): creating OManufacturerDB..." );
_instance = new OManufacturerDB();
}
return _instance;
}
OManufacturerDB::OManufacturerDB()
{
QString filename( "/etc/manufacturers" );
qDebug( "OManufacturerDB: trying to read '%s'...", (const char*) filename );
if ( !QFile::exists( filename ) )
{
filename = "/opt/QtPalmtop/etc/manufacturers";
qDebug( "OManufacturerDB: trying to read '%s'...", (const char*) filename );
if ( !QFile::exists( filename ) )
{
filename = "/usr/share/wellenreiter/manufacturers";
qDebug( "OManufacturerDB: trying to read '%s'...", (const char*) filename );
}
}
QFile file( filename );
bool hasFile = file.open( IO_ReadOnly );
if (!hasFile)
{
qWarning( "OManufacturerDB: no valid manufacturer list found.", (const char*) filename );
}
else
{
qDebug( "OManufacturerDB: found manufacturer list in '%s'...", (const char*) filename );
QTextStream s( &file );
QString addr;
QString manu;
QString extManu;
while (!s.atEnd())
{
s >> addr;
if ( !addr ) // read nothing!?
{
continue;
}
else
if ( addr[0] == '#' )
{
continue;
}
s.skipWhiteSpace();
s >> manu;
s.skipWhiteSpace();
s >> extManu;
if ( extManu[0] == '#' ) // we have an extended manufacturer
{
s.skipWhiteSpace();
extManu = s.readLine();
qDebug( "OManufacturerDB: read '%s' as extended manufacturer string", (const char*) extManu );
manufacturersExt.insert( addr, extManu );
}
else
s.readLine();
qDebug( "ManufacturerDB: read tuple %s, %s", (const char*) addr, (const char*) manu );
manufacturers.insert( addr, manu );
}
}
}
OManufacturerDB::~OManufacturerDB()
{
}
const QString& OManufacturerDB::lookup( const QString& macaddr ) const
{
return manufacturers[macaddr.upper().left(8)];
}
const QString& OManufacturerDB::lookupExt( const QString& macaddr ) const
{
QMap<QString,QString>::ConstIterator it = manufacturersExt.find( macaddr.upper().left(8) );
return it == manufacturersExt.end() ? lookup( macaddr ) : *it;
}
|