summaryrefslogtreecommitdiff
path: root/noncore
authorllornkcor <llornkcor>2005-08-16 09:32:25 (UTC)
committer llornkcor <llornkcor>2005-08-16 09:32:25 (UTC)
commit8c44cc4fdb67ea6b96cf7e49ec648de4049a9f1c (patch) (unidiff)
tree28fbe8466b5b93173513402f7b46e6c7ce5222ac /noncore
parent2176aa6c353e794798aa8ecddc28be365e94989c (diff)
downloadopie-8c44cc4fdb67ea6b96cf7e49ec648de4049a9f1c.zip
opie-8c44cc4fdb67ea6b96cf7e49ec648de4049a9f1c.tar.gz
opie-8c44cc4fdb67ea6b96cf7e49ec648de4049a9f1c.tar.bz2
add current mount when selecting server
Diffstat (limited to 'noncore') (more/less context) (ignore whitespace changes)
-rw-r--r--noncore/net/opie-smb/qsmb.cpp33
-rw-r--r--noncore/net/opie-smb/qsmb.h1
2 files changed, 28 insertions, 6 deletions
diff --git a/noncore/net/opie-smb/qsmb.cpp b/noncore/net/opie-smb/qsmb.cpp
index e2ddc7f..7f3ae89 100644
--- a/noncore/net/opie-smb/qsmb.cpp
+++ b/noncore/net/opie-smb/qsmb.cpp
@@ -189,21 +189,25 @@ void Qsmb::hostSelected(int /*index*/ )
189 runCommand(ccmd); 189 runCommand(ccmd);
190 QTextStream s(&out, IO_ReadOnly); 190 QTextStream s(&out, IO_ReadOnly);
191 191
192 while ( !s.atEnd() ) { 192 while ( !s.atEnd() ) {
193 QString share; 193 QString share;
194 QString comment; 194 QString comment;
195 QString mount;
195 QString tmp = s.readLine(); 196 QString tmp = s.readLine();
196 197
197 if( tmp.find("$") == -1 && tmp.find("Disk") != -1) { 198 if( tmp.find("$") == -1 && tmp.find("Disk") != -1) {
198 QStringList token = QStringList::split(' ', tmp ); 199 QStringList token = QStringList::split(' ', tmp );
199 share = token[0]; 200 share = token[0];
200 comment = token[2]; 201 comment = token[2];
201 share = share.stripWhiteSpace(); 202 share = share.stripWhiteSpace();
202 comment = comment.stripWhiteSpace(); 203 comment = comment.stripWhiteSpace();
203 element = new QListViewItem(ListViewScan, share, comment); 204// if(isMounted(share))
205
206 mount = getMount(share);
207 element = new QListViewItem(ListViewScan, share, comment, mount);
204 element->setOpen(true); 208 element->setOpen(true);
205// top_element = element; 209// top_element = element;
206// parent = element; 210// parent = element;
207 } 211 }
208 212
209 } 213 }
@@ -317,14 +321,12 @@ void Qsmb::DoIt()
317 ccmd << "/usr/bin/smbmount"; 321 ccmd << "/usr/bin/smbmount";
318 ccmd << "//"+ service+"/"+share; 322 ccmd << "//"+ service+"/"+share;
319 ccmd << mount; 323 ccmd << mount;
320 ccmd << "-o"; 324 ccmd << "-o";
321 ccmd << "username="+username->text()+",password="+password->text()+""; 325 ccmd << "username="+username->text()+",password="+password->text()+"";
322 326
323 TextViewOutput->append(ccmd.join(" ").latin1());
324
325 if(onbootBtn->isChecked()) { 327 if(onbootBtn->isChecked()) {
326 qWarning("Saving Setting permanently..."); 328 qWarning("Saving Setting permanently...");
327 QFile sambenv("/opt/QtPalmtop/etc/samba.env"); 329 QFile sambenv("/opt/QtPalmtop/etc/samba.env");
328 QTextStream smbv(&sambenv); 330 QTextStream smbv(&sambenv);
329 sambenv.open(IO_WriteOnly); 331 sambenv.open(IO_WriteOnly);
330 smbv << ccmd.join(" ") ; 332 smbv << ccmd.join(" ") ;
@@ -332,13 +334,13 @@ void Qsmb::DoIt()
332 } 334 }
333 335
334 noerr = runCommand(ccmd); 336 noerr = runCommand(ccmd);
335 337
336 LScan->setText(""); 338 LScan->setText("");
337 339
338 if(noerr) { 340 if(noerr && isMounted(mount)) {
339 element->setText(2, mount); 341 element->setText(2, mount);
340 TextViewOutput->append("\n\n================CheckMounts==================\n"); 342 TextViewOutput->append("\n\n================CheckMounts==================\n");
341 ccmd = "/bin/mount"; 343 ccmd = "/bin/mount";
342 runCommand(ccmd); 344 runCommand(ccmd);
343 TextViewOutput->append("\n\n============================================\n"); 345 TextViewOutput->append("\n\n============================================\n");
344 qApp->processEvents(); 346 qApp->processEvents();
@@ -395,22 +397,41 @@ bool Qsmb::runCommand(const QStringList & command) {
395 r = false; 397 r = false;
396 } 398 }
397 return r; 399 return r;
398} 400}
399 401
400 402
401bool Qsmb::isMounted(const QString &mountPoint) { 403bool Qsmb::isMounted(const QString &mountPoint)
404{
402 struct mntent *me; 405 struct mntent *me;
403 bool mounted = false; 406 bool mounted = false;
404 FILE *mntfp = setmntent( "/etc/mtab", "r" ); 407 FILE *mntfp = setmntent( "/etc/mtab", "r" );
405 if ( mntfp ){ 408 if ( mntfp ){
406 while ( (me = getmntent( mntfp )) != 0 ) { 409 while ( (me = getmntent( mntfp )) != 0 ) {
407 QString deviceName = me->mnt_fsname; 410 QString deviceName = me->mnt_fsname;
408 QString mountDir = me->mnt_dir; 411 QString mountDir = me->mnt_dir;
409 QString fsType = me->mnt_type; 412 QString fsType = me->mnt_type;
410 if( fsType == "smbfs" && mountDir.find(mountPoint) !=-1) 413 if( fsType == "smbfs" && (mountDir.find(mountPoint) != -1 | deviceName.find(mountPoint) != -1))
411 mounted = true; 414 mounted = true;
412 } 415 }
413 } 416 }
414 endmntent( mntfp ); 417 endmntent( mntfp );
415 return mounted; 418 return mounted;
416} 419}
420
421QString Qsmb::getMount(const QString &shareName)
422{
423 struct mntent *me;
424 QString mount;
425 FILE *mntfp = setmntent( "/etc/mtab", "r" );
426 if ( mntfp ){
427 while ( (me = getmntent( mntfp )) != 0 ) {
428 QString deviceName = me->mnt_fsname;
429 QString mountDir = me->mnt_dir;
430 QString fsType = me->mnt_type;
431 if( fsType == "smbfs" && deviceName.find(shareName) != -1)
432 mount = mountDir;
433 }
434 }
435 endmntent( mntfp );
436 return mount;
437}
diff --git a/noncore/net/opie-smb/qsmb.h b/noncore/net/opie-smb/qsmb.h
index fba94d0..abf27da 100644
--- a/noncore/net/opie-smb/qsmb.h
+++ b/noncore/net/opie-smb/qsmb.h
@@ -24,12 +24,13 @@ public:
24private: 24private:
25 QListViewItem *top_element; 25 QListViewItem *top_element;
26 QComboBox *hosts; 26 QComboBox *hosts;
27 pthread_t tpid; 27 pthread_t tpid;
28 bool scanning; 28 bool scanning;
29 bool isMounted(const QString &); 29 bool isMounted(const QString &);
30 QString getMount(const QString &);
30 31
31public slots: 32public slots:
32 void clear(); 33 void clear();
33 void scanClicked(); 34 void scanClicked();
34 void hostSelected(int); 35 void hostSelected(int);
35 void DoItClicked(); 36 void DoItClicked();