summaryrefslogtreecommitdiff
path: root/library
authoralwin <alwin>2005-03-07 14:32:58 (UTC)
committer alwin <alwin>2005-03-07 14:32:58 (UTC)
commit9ac0dc3c7b4e56f38c3cefce2e5699078aa3a357 (patch) (unidiff)
tree9b8e96c6971ca8750a274f2542eed1272f4ec683 /library
parentc26df8eafe66bded4a4af4f95830fd2187bfa2ca (diff)
downloadopie-9ac0dc3c7b4e56f38c3cefce2e5699078aa3a357.zip
opie-9ac0dc3c7b4e56f38c3cefce2e5699078aa3a357.tar.gz
opie-9ac0dc3c7b4e56f38c3cefce2e5699078aa3a357.tar.bz2
yes - scsi storage may be removeable devices!
Diffstat (limited to 'library') (more/less context) (ignore whitespace changes)
-rw-r--r--library/storage.cpp5
1 files changed, 3 insertions, 2 deletions
diff --git a/library/storage.cpp b/library/storage.cpp
index 9549ff3..e657573 100644
--- a/library/storage.cpp
+++ b/library/storage.cpp
@@ -111,195 +111,196 @@ const FileSystem *StorageInfo::fileSystemOf( const QString &filename )
111 return (*i); 111 return (*i);
112 } 112 }
113 return 0; 113 return 0;
114} 114}
115 115
116 116
117void StorageInfo::cardMessage( const QCString& msg, const QByteArray& ) 117void StorageInfo::cardMessage( const QCString& msg, const QByteArray& )
118{ 118{
119 if ( msg == "mtabChanged()" ) 119 if ( msg == "mtabChanged()" )
120 update(); 120 update();
121} 121}
122 122
123 123
124/*! Updates the mount and free space available information for each mount 124/*! Updates the mount and free space available information for each mount
125 point. This method is automatically called when a disk is mounted or 125 point. This method is automatically called when a disk is mounted or
126 unmounted. 126 unmounted.
127*/ 127*/
128// cause of the lack of a d pointer we need 128// cause of the lack of a d pointer we need
129// to store informations in a config file :( 129// to store informations in a config file :(
130void StorageInfo::update() 130void StorageInfo::update()
131{ 131{
132 //qDebug("StorageInfo::updating"); 132 //qDebug("StorageInfo::updating");
133#if defined(_OS_LINUX_) || defined(Q_OS_LINUX) 133#if defined(_OS_LINUX_) || defined(Q_OS_LINUX)
134 struct mntent *me; 134 struct mntent *me;
135 FILE *mntfp = setmntent( "/etc/mtab", "r" ); 135 FILE *mntfp = setmntent( "/etc/mtab", "r" );
136 136
137 QStringList curdisks; 137 QStringList curdisks;
138 QStringList curopts; 138 QStringList curopts;
139 QStringList curfs; 139 QStringList curfs;
140 bool rebuild = FALSE; 140 bool rebuild = FALSE;
141 int n=0; 141 int n=0;
142 if ( mntfp ) 142 if ( mntfp )
143 { 143 {
144 while ( (me = getmntent( mntfp )) != 0 ) 144 while ( (me = getmntent( mntfp )) != 0 )
145 { 145 {
146 QString fs = me->mnt_fsname; 146 QString fs = me->mnt_fsname;
147 if ( fs.left(7)=="/dev/hd" || fs.left(7)=="/dev/sd" 147 if ( fs.left(7)=="/dev/hd" || fs.left(7)=="/dev/sd"
148 || fs.left(8)=="/dev/mtd" || fs.left(9) == "/dev/mmcd" 148 || fs.left(8)=="/dev/mtd" || fs.left(9) == "/dev/mmcd"
149 || fs.left( 14 ) == "/dev/mmc/part1" 149 || fs.left( 14 ) == "/dev/mmc/part1"
150 || fs.left(5)=="tmpfs" || fs.left(11)=="/dev/mmcblk" 150 || fs.left(5)=="tmpfs" || fs.left(11)=="/dev/mmcblk"
151 || fs.left(9)=="/dev/root" ) 151 || fs.left(9)=="/dev/root" )
152 { 152 {
153 n++; 153 n++;
154 curdisks.append(fs); 154 curdisks.append(fs);
155 curopts.append( me->mnt_opts ); 155 curopts.append( me->mnt_opts );
156 //qDebug("-->fs %s opts %s", fs.latin1(), me->mnt_opts ); 156 //qDebug("-->fs %s opts %s", fs.latin1(), me->mnt_opts );
157 curfs.append( me->mnt_dir ); 157 curfs.append( me->mnt_dir );
158 bool found = FALSE; 158 bool found = FALSE;
159 for (QListIterator<FileSystem> i(mFileSystems); i.current(); ++i) 159 for (QListIterator<FileSystem> i(mFileSystems); i.current(); ++i)
160 { 160 {
161 if ( (*i)->disk() == fs ) 161 if ( (*i)->disk() == fs )
162 { 162 {
163 found = TRUE; 163 found = TRUE;
164 break; 164 break;
165 } 165 }
166 } 166 }
167 if ( !found ) 167 if ( !found )
168 rebuild = TRUE; 168 rebuild = TRUE;
169 } 169 }
170 } 170 }
171 endmntent( mntfp ); 171 endmntent( mntfp );
172 } 172 }
173 if ( rebuild || n != (int)mFileSystems.count() ) 173 if ( rebuild || n != (int)mFileSystems.count() )
174 { 174 {
175 mFileSystems.clear(); 175 mFileSystems.clear();
176 QStringList::ConstIterator it=curdisks.begin(); 176 QStringList::ConstIterator it=curdisks.begin();
177 QStringList::ConstIterator fsit=curfs.begin(); 177 QStringList::ConstIterator fsit=curfs.begin();
178 QStringList::ConstIterator optsIt=curopts.begin(); 178 QStringList::ConstIterator optsIt=curopts.begin();
179 for (; it!=curdisks.end(); ++it, ++fsit, ++optsIt) 179 for (; it!=curdisks.end(); ++it, ++fsit, ++optsIt)
180 { 180 {
181 QString opts = *optsIt; 181 QString opts = *optsIt;
182 182
183 QString disk = *it; 183 QString disk = *it;
184 QString humanname; 184 QString humanname;
185 bool removable = FALSE; 185 bool removable = FALSE;
186 if ( isCF(disk) ) 186 if ( isCF(disk) )
187 { 187 {
188 humanname = tr("CF Card"); 188 humanname = tr("CF Card");
189 removable = TRUE; 189 removable = TRUE;
190 } 190 }
191 else if ( disk == "/dev/hda1" ) 191 else if ( disk == "/dev/hda1" )
192 { 192 {
193 humanname = tr("Hard Disk"); 193 humanname = tr("Hard Disk");
194 } 194 }
195 else if ( disk.left(9) == "/dev/mmcd" ) 195 else if ( disk.left(9) == "/dev/mmcd" )
196 { 196 {
197 humanname = tr("SD Card"); 197 humanname = tr("SD Card");
198 removable = TRUE; 198 removable = TRUE;
199 } 199 }
200 else if ( disk.left( 14 ) == "/dev/mmc/part1" || disk.left(11) == "/dev/mmcblk" ) 200 else if ( disk.left( 14 ) == "/dev/mmc/part1" || disk.left(11) == "/dev/mmcblk" )
201 { 201 {
202 humanname = tr("MMC Card"); 202 humanname = tr("MMC Card");
203 removable = TRUE; 203 removable = TRUE;
204 } 204 }
205 else if ( disk.left(7) == "/dev/hd" ) 205 else if ( disk.left(7) == "/dev/hd" )
206 humanname = tr("Hard Disk") + " " + disk; 206 humanname = tr("Hard Disk") + " " + disk;
207 else if ( disk.left(7) == "/dev/sd" ) 207 else if ( disk.left(7) == "/dev/sd" ) {
208 humanname = tr("SCSI Hard Disk") + " " + disk; 208 humanname = tr("SCSI Hard Disk") + " " + disk;
209 else if ( disk.left(14) == "/dev/mtdblock6" ) //openzaurus ramfs 209 removable = TRUE;
210 } else if ( disk.left(14) == "/dev/mtdblock6" ) //openzaurus ramfs
210 humanname = tr("Internal Memory"); 211 humanname = tr("Internal Memory");
211 else if ( disk == "/dev/mtdblock1" || humanname == "/dev/mtdblock/1" ) 212 else if ( disk == "/dev/mtdblock1" || humanname == "/dev/mtdblock/1" )
212 humanname = tr("Internal Storage"); 213 humanname = tr("Internal Storage");
213 else if ( disk.left(14) == "/dev/mtdblock/" ) 214 else if ( disk.left(14) == "/dev/mtdblock/" )
214 humanname = tr("Internal Storage") + " " + disk; 215 humanname = tr("Internal Storage") + " " + disk;
215 else if ( disk.left(13) == "/dev/mtdblock" ) 216 else if ( disk.left(13) == "/dev/mtdblock" )
216 humanname = tr("Internal Storage") + " " + disk; 217 humanname = tr("Internal Storage") + " " + disk;
217 else if ( disk.left(9) == "/dev/root" ) 218 else if ( disk.left(9) == "/dev/root" )
218 humanname = tr("Internal Storage") + " " + disk; 219 humanname = tr("Internal Storage") + " " + disk;
219 else if ( disk.left(5) == "tmpfs" ) //ipaqs /mnt/ramfs 220 else if ( disk.left(5) == "tmpfs" ) //ipaqs /mnt/ramfs
220 humanname = tr("Internal Memory"); 221 humanname = tr("Internal Memory");
221 FileSystem *fs = new FileSystem( disk, *fsit, humanname, removable, opts ); 222 FileSystem *fs = new FileSystem( disk, *fsit, humanname, removable, opts );
222 mFileSystems.append( fs ); 223 mFileSystems.append( fs );
223 } 224 }
224 emit disksChanged(); 225 emit disksChanged();
225 } 226 }
226 else 227 else
227 { 228 {
228 // just update them 229 // just update them
229 for (QListIterator<FileSystem> i(mFileSystems); i.current(); ++i) 230 for (QListIterator<FileSystem> i(mFileSystems); i.current(); ++i)
230 i.current()->update(); 231 i.current()->update();
231 } 232 }
232#endif 233#endif
233} 234}
234 235
235bool deviceTab( const char *device) 236bool deviceTab( const char *device)
236{ 237{
237 QString name = device; 238 QString name = device;
238 bool hasDevice=false; 239 bool hasDevice=false;
239 240
240#ifdef Q_OS_MACX 241#ifdef Q_OS_MACX
241 // Darwin (MacOS X) 242 // Darwin (MacOS X)
242 struct statfs** mntbufp; 243 struct statfs** mntbufp;
243 int count = 0; 244 int count = 0;
244 if ( ( count = getmntinfo( mntbufp, MNT_WAIT ) ) == 0 ) 245 if ( ( count = getmntinfo( mntbufp, MNT_WAIT ) ) == 0 )
245 { 246 {
246 qWarning("deviceTab: Error in getmntinfo(): %s",strerror( errno ) ); 247 qWarning("deviceTab: Error in getmntinfo(): %s",strerror( errno ) );
247 hasDevice = false; 248 hasDevice = false;
248 } 249 }
249 for( int i = 0; i < count; i++ ) 250 for( int i = 0; i < count; i++ )
250 { 251 {
251 QString deviceName = mntbufp[i]->f_mntfromname; 252 QString deviceName = mntbufp[i]->f_mntfromname;
252 qDebug(deviceName); 253 qDebug(deviceName);
253 if( deviceName.left( name.length() ) == name ) 254 if( deviceName.left( name.length() ) == name )
254 hasDevice = true; 255 hasDevice = true;
255 } 256 }
256#else 257#else
257 // Linux 258 // Linux
258 struct mntent *me; 259 struct mntent *me;
259 FILE *mntfp = setmntent( "/etc/mtab", "r" ); 260 FILE *mntfp = setmntent( "/etc/mtab", "r" );
260 if ( mntfp ) 261 if ( mntfp )
261 { 262 {
262 while ( (me = getmntent( mntfp )) != 0 ) 263 while ( (me = getmntent( mntfp )) != 0 )
263 { 264 {
264 QString deviceName = me->mnt_fsname; 265 QString deviceName = me->mnt_fsname;
265 // qDebug(deviceName); 266 // qDebug(deviceName);
266 if( deviceName.left(name.length()) == name) 267 if( deviceName.left(name.length()) == name)
267 { 268 {
268 hasDevice = true; 269 hasDevice = true;
269 } 270 }
270 } 271 }
271 } 272 }
272 endmntent( mntfp ); 273 endmntent( mntfp );
273#endif /* Q_OS_MACX */ 274#endif /* Q_OS_MACX */
274 275
275 276
276 return hasDevice; 277 return hasDevice;
277} 278}
278 279
279/*! 280/*!
280 * @fn static bool StorageInfo::hasCf() 281 * @fn static bool StorageInfo::hasCf()
281 * @brief returns whether device has Cf mounted 282 * @brief returns whether device has Cf mounted
282 * 283 *
283 */ 284 */
284bool StorageInfo::hasCf() 285bool StorageInfo::hasCf()
285{ 286{
286 return deviceTab("/dev/hd"); 287 return deviceTab("/dev/hd");
287} 288}
288 289
289/*! 290/*!
290 * @fn static bool StorageInfo::hasSd() 291 * @fn static bool StorageInfo::hasSd()
291 * @brief returns whether device has SD mounted 292 * @brief returns whether device has SD mounted
292 * 293 *
293 */ 294 */
294bool StorageInfo::hasSd() 295bool StorageInfo::hasSd()
295{ 296{
296 return deviceTab("/dev/mmcd"); 297 return deviceTab("/dev/mmcd");
297} 298}
298 299
299/*! 300/*!
300 * @fn static bool StorageInfo::hasMmc() 301 * @fn static bool StorageInfo::hasMmc()
301 * @brief returns whether device has mmc mounted 302 * @brief returns whether device has mmc mounted
302 * 303 *
303 */ 304 */
304bool StorageInfo::hasMmc() 305bool StorageInfo::hasMmc()
305{ 306{