diff options
Diffstat (limited to 'rbutil/rbutilqt')
-rw-r--r-- | rbutil/rbutilqt/autodetection.cpp | 37 | ||||
-rw-r--r-- | rbutil/rbutilqt/autodetection.h | 9 |
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 | ||
108 | QString 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 | ||
26 | extern "C" { | ||
27 | // Ipodpatcher | ||
28 | #include "../ipodpatcher/ipodpatcher.h" | ||
29 | #include "../sansapatcher/sansapatcher.h" | ||
30 | }; | ||
31 | |||
26 | class Autodetection :public QObject | 32 | class 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 | ||
38 | private: | 44 | private: |
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; |