diff options
author | Dominik Wenger <domonoky@googlemail.com> | 2007-08-05 19:48:04 +0000 |
---|---|---|
committer | Dominik Wenger <domonoky@googlemail.com> | 2007-08-05 19:48:04 +0000 |
commit | 421411b73adadf17a23227cbb488677b937390e1 (patch) | |
tree | 067045c9afaf69c00e9bd6fae88148c984aa9857 /rbutil/rbutilqt/autodetection.cpp | |
parent | b3113674819cd8daf44750d129c5d8298e830df0 (diff) |
rbutilqt: initial port of the autodetection. (use only rockbox-info.txt at the moment)
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@14199 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'rbutil/rbutilqt/autodetection.cpp')
-rw-r--r-- | rbutil/rbutilqt/autodetection.cpp | 99 |
1 files changed, 99 insertions, 0 deletions
diff --git a/rbutil/rbutilqt/autodetection.cpp b/rbutil/rbutilqt/autodetection.cpp new file mode 100644 index 0000000000..3f7814282d --- /dev/null +++ b/rbutil/rbutilqt/autodetection.cpp @@ -0,0 +1,99 @@ +/*************************************************************************** + * __________ __ ___. + * Open \______ \ ____ ____ | | _\_ |__ _______ ___ + * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ / + * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < < + * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \ + * \/ \/ \/ \/ \/ + * + * Copyright (C) 2007 by Dominik Wenger + * $Id: autodetection.cpp 14027 2007-07-27 17:42:49Z domonoky $ + * + * All files in this archive are subject to the GNU General Public License. + * See the file COPYING in the source tree root for full license agreement. + * + * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY + * KIND, either express or implied. + * + ****************************************************************************/ + +#include "autodetection.h" + +Autodetection::Autodetection(QObject* parent): QObject(parent) +{ + +} + +bool Autodetection::detect() +{ + m_device = ""; + m_mountpoint = ""; + + // Try detection via rockbox.info + QStringList mountpoints = getMountpoints(); + + for(int i=0; i< mountpoints.size();i++) + { + QDir dir(mountpoints.at(i)); + if(dir.exists()) + { + QFile file(mountpoints.at(i) + "/.rockbox/rockbox-info.txt"); + if(file.exists()) + { + file.open(QIODevice::ReadOnly | QIODevice::Text); + QString line = file.readLine(); + if(line.startsWith("Target: ")) + { + line.remove("Target: "); + m_device = line; + m_mountpoint = mountpoints.at(i); + return true; + } + } + } + } + + //try ipodpatcher + + + //try sansapatcher + + return false; +} + + +QStringList Autodetection::getMountpoints() +{ +#ifdef Q_OS_WIN32 + QStringList tempList; + QFileInfoList list = QDir::drives(); + for(int i=0; i<list.size();i++) + { + tempList << list.at(i).absolutePath(); + } + return tempList; + +#elif Q_OS_MACX + QDir dir("/Volumes"); + return dir.entryList(); +#elif Q_OS_LINUX + QStringList tempList; + + FILE *fp = fopen( "/proc/mounts", "r" ); + if( !fp ) return tempList; + char *dev, *dir; + while( fscanf( fp, "%as %as %*s %*s %*s %*s", &dev, &dir ) != EOF ) + { + tempList << dir; + free( dev ); + free( dir ); + } + fclose( fp ); + + return tempList; +#else +#error Unknown Plattform +#endif +} + + |