summaryrefslogtreecommitdiff
path: root/rbutil/rbutilqt/autodetection.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'rbutil/rbutilqt/autodetection.cpp')
-rw-r--r--rbutil/rbutilqt/autodetection.cpp37
1 files changed, 35 insertions, 2 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}