summaryrefslogtreecommitdiff
path: root/rbutil/rbutilqt
diff options
context:
space:
mode:
authorDominik Riebeling <Dominik.Riebeling@gmail.com>2007-08-23 15:24:28 +0000
committerDominik Riebeling <Dominik.Riebeling@gmail.com>2007-08-23 15:24:28 +0000
commit1152a12d9189d8960a145066454e04d02ed4a171 (patch)
treedcb068254ed6dcd5b31764776bdce3a03da824d1 /rbutil/rbutilqt
parentc494e371c849a9275811f238211d6cf510f38e03 (diff)
downloadrockbox-1152a12d9189d8960a145066454e04d02ed4a171.tar.gz
rockbox-1152a12d9189d8960a145066454e04d02ed4a171.zip
Add Ipod detection using ipodpatcher.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@14441 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'rbutil/rbutilqt')
-rw-r--r--rbutil/rbutilqt/autodetection.cpp37
-rw-r--r--rbutil/rbutilqt/autodetection.h9
2 files changed, 43 insertions, 3 deletions
diff --git a/rbutil/rbutilqt/autodetection.cpp b/rbutil/rbutilqt/autodetection.cpp
index 443db9b24a..e8eb498d62 100644
--- a/rbutil/rbutilqt/autodetection.cpp
+++ b/rbutil/rbutilqt/autodetection.cpp
@@ -31,7 +31,7 @@ bool Autodetection::detect()
31 31
32 // Try detection via rockbox.info 32 // Try detection via rockbox.info
33 QStringList mountpoints = getMountpoints(); 33 QStringList mountpoints = getMountpoints();
34 34
35 for(int i=0; i< mountpoints.size();i++) 35 for(int i=0; i< mountpoints.size();i++)
36 { 36 {
37 QDir dir(mountpoints.at(i)); 37 QDir dir(mountpoints.at(i));
@@ -54,10 +54,19 @@ bool Autodetection::detect()
54 } 54 }
55 55
56 //try ipodpatcher 56 //try ipodpatcher
57 57 struct ipod_t ipod;
58
59 int n = ipod_scan(&ipod);
60 if(n == 1) {
61 qDebug() << "Ipod found:" << ipod.modelstr << "at" << ipod.diskname;
62 m_device = ipod.targetname;
63 m_mountpoint = resolveMountPoint(ipod.diskname);
64 return true;
65 }
58 66
59 //try sansapatcher 67 //try sansapatcher
60 68
69
61 return false; 70 return false;
62} 71}
63 72
@@ -96,4 +105,28 @@ QStringList Autodetection::getMountpoints()
96#endif 105#endif
97} 106}
98 107
108QString Autodetection::resolveMountPoint(QString device)
109{
110 qDebug() << "Autodetection::resolveMountPoint(QString)" << device;
111#if defined(Q_OS_LINUX)
112 FILE *fp = fopen( "/proc/mounts", "r" );
113 if( !fp ) return QString("");
114 char *dev, *dir;
115 while( fscanf( fp, "%as %as %*s %*s %*s %*s", &dev, &dir ) != EOF )
116 {
117 if( QString(dev).startsWith(device) )
118 {
119 QString directory = dir;
120 free( dev );
121 free( dir );
122 return directory;
123 }
124 free( dev );
125 free( dir );
126 }
127 fclose( fp );
128
129#endif
130 return QString("");
99 131
132}
diff --git a/rbutil/rbutilqt/autodetection.h b/rbutil/rbutilqt/autodetection.h
index 0a941a0d5d..e950ab7149 100644
--- a/rbutil/rbutilqt/autodetection.h
+++ b/rbutil/rbutilqt/autodetection.h
@@ -23,6 +23,12 @@
23 23
24#include <QtGui> 24#include <QtGui>
25 25
26extern "C" {
27 // Ipodpatcher
28#include "../ipodpatcher/ipodpatcher.h"
29#include "../sansapatcher/sansapatcher.h"
30};
31
26class Autodetection :public QObject 32class Autodetection :public QObject
27{ 33{
28 Q_OBJECT 34 Q_OBJECT
@@ -36,7 +42,8 @@ public:
36 QString getMountPoint() {return m_mountpoint;} 42 QString getMountPoint() {return m_mountpoint;}
37 43
38private: 44private:
39 QStringList getMountpoints(); 45 QStringList getMountpoints(void);
46 QString resolveMountPoint(QString);
40 47
41 QString m_device; 48 QString m_device;
42 QString m_mountpoint; 49 QString m_mountpoint;