author | mickeyl <mickeyl> | 2004-06-12 16:54:50 (UTC) |
---|---|---|
committer | mickeyl <mickeyl> | 2004-06-12 16:54:50 (UTC) |
commit | b1235df3628d178891eeefed630a22da46b25952 (patch) (side-by-side diff) | |
tree | c88a3cb04adcc9fe214ff08e3c0b96b21e3c4f0a /libopie2/opiecore/device/odevice_zaurus.cpp | |
parent | 7a62e8e3601ee98f5f06261c361fe8132334cd56 (diff) | |
download | opie-b1235df3628d178891eeefed630a22da46b25952.zip opie-b1235df3628d178891eeefed630a22da46b25952.tar.gz opie-b1235df3628d178891eeefed630a22da46b25952.tar.bz2 |
- refactor the distribution detection code
- add detection of OpenEmbedded and generic linux distributions
- simplify the zaurus model detection code
Diffstat (limited to 'libopie2/opiecore/device/odevice_zaurus.cpp') (more/less context) (ignore whitespace changes)
-rw-r--r-- | libopie2/opiecore/device/odevice_zaurus.cpp | 69 |
1 files changed, 27 insertions, 42 deletions
diff --git a/libopie2/opiecore/device/odevice_zaurus.cpp b/libopie2/opiecore/device/odevice_zaurus.cpp index e8b813e..6ac3157 100644 --- a/libopie2/opiecore/device/odevice_zaurus.cpp +++ b/libopie2/opiecore/device/odevice_zaurus.cpp @@ -112,72 +112,55 @@ struct z_button z_buttons_c700 [] = { // Only question right now is: Do we really need to do it? Because as soon // as the OpenZaurus kernel is ready, there will be a unified interface for all // Zaurus models (concerning apm, backlight, buttons, etc.) // // Comments? - mickeyl. -void Zaurus::init(const QString&) +void Zaurus::init(const QString& cpu_info) { - d->m_vendorstr = "Sharp"; - d->m_vendor = Vendor_Sharp; - m_embedix = true; // Not openzaurus means: It has an embedix kernel ! - - // QFile f ( "/proc/filesystems" ); - QString model; - - // It isn't a good idea to check the system configuration to - // detect the distribution ! - // Otherwise it may happen that any other distribution is detected as openzaurus, just - // because it uses a jffs2 filesystem.. - // (eilers) - // if ( f. open ( IO_ReadOnly ) && ( QTextStream ( &f ). read(). find ( "\tjffs2\n" ) >= 0 )) { - QFile f ("/etc/oz_version"); - if ( f.exists() ){ + // generic distribution code already scanned /etc/issue at that point - + // embedix releases contain "Embedix <version> | Linux for Embedded Devices" + if ( d->m_sysverstr.contains( "embedix", false ) ) + { + d->m_vendorstr = "Sharp"; + d->m_vendor = Vendor_Sharp; + d->m_systemstr = "Zaurus"; + d->m_system = System_Zaurus; + m_embedix = true; + } + else + { d->m_vendorstr = "OpenZaurus Team"; d->m_systemstr = "OpenZaurus"; d->m_system = System_OpenZaurus; + // sysver already gathered - if ( f. open ( IO_ReadOnly )) { - QTextStream ts ( &f ); - d->m_sysverstr = ts. readLine();//. mid ( 10 ); - f. close(); - } - - // Openzaurus sometimes uses the embedix kernel! - // => Check whether this is an embedix kernel + // Openzaurus sometimes uses the embedix kernel, check if this is one FILE *uname = popen("uname -r", "r"); + QFile f; QString line; if ( f.open(IO_ReadOnly, uname) ) { QTextStream ts ( &f ); line = ts. readLine(); int loc = line. find ( "embedix" ); if ( loc != -1 ) m_embedix = true; else m_embedix = false; - f. close(); + f.close(); } pclose(uname); } - else { - d->m_systemstr = "Zaurus"; - d->m_system = System_Zaurus; - } - f. setName ( "/proc/cpuinfo" ); - if ( f. open ( IO_ReadOnly ) ) { - QTextStream ts ( &f ); - QString line; - while( line = ts. readLine() ) { - if ( line. left ( 8 ) == "Hardware" ) - break; - } - int loc = line. find ( ":" ); - if ( loc != -1 ) - model = line. mid ( loc + 2 ). simplifyWhiteSpace( ); - } + // check the Zaurus model + QString model; + int loc = cpu_info.find( ":" ); + if ( loc != -1 ) + model = cpu_info.mid( loc+2 ).simplifyWhiteSpace(); + else + model = cpu_info; if ( model == "SHARP Corgi" ) { d->m_model = Model_Zaurus_SLC7x0; d->m_modelstr = "Zaurus SL-C700"; } else if ( model == "SHARP Shepherd" ) { d->m_model = Model_Zaurus_SLC7x0; @@ -190,15 +173,17 @@ void Zaurus::init(const QString&) d->m_modelstr = "Zaurus SL-B500 or SL-5600"; } else if ( model == "Sharp-Collie" || model == "Collie" ) { d->m_model = Model_Zaurus_SL5500; d->m_modelstr = "Zaurus SL-5500 or SL-5000d"; } else { d->m_model = Model_Zaurus_SL5500; - d->m_modelstr = "Zaurus (Model unknown)"; + d->m_modelstr = "Unkown Zaurus"; } + // set initial rotation + bool flipstate = false; switch ( d->m_model ) { case Model_Zaurus_SLA300: d->m_rotation = Rot0; break; case Model_Zaurus_SLC7x0: |