summaryrefslogtreecommitdiff
path: root/rbutil/rbutilqt/autodetection.cpp
diff options
context:
space:
mode:
authorDominik Wenger <domonoky@googlemail.com>2007-08-05 19:48:04 +0000
committerDominik Wenger <domonoky@googlemail.com>2007-08-05 19:48:04 +0000
commit421411b73adadf17a23227cbb488677b937390e1 (patch)
tree067045c9afaf69c00e9bd6fae88148c984aa9857 /rbutil/rbutilqt/autodetection.cpp
parentb3113674819cd8daf44750d129c5d8298e830df0 (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.cpp99
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
+}
+
+