summaryrefslogtreecommitdiff
Side-by-side diff
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--noncore/net/opie-smb/qsmb.cpp151
-rw-r--r--noncore/net/opie-smb/qsmbbase.ui20
2 files changed, 93 insertions, 78 deletions
diff --git a/noncore/net/opie-smb/qsmb.cpp b/noncore/net/opie-smb/qsmb.cpp
index c1ee9a9..fbe1c5c 100644
--- a/noncore/net/opie-smb/qsmb.cpp
+++ b/noncore/net/opie-smb/qsmb.cpp
@@ -92,13 +92,13 @@ void* runitm(void* arg)
caller->DoIt();
return(0);
}
void Qsmb::scan()
{
- int i;
+// int i;
if (scanning) return;
scanning = true;
QString match;
QString cmd;
@@ -120,13 +120,12 @@ void Qsmb::scan()
QTextStream lms(&lmhosts);
lmhosts.open(IO_WriteOnly);
lms << "127.0.0.1 localhost\n";
/* parse output and display in ListViewScan */
ccmd = "smbfind";
- owarn <<"cmd: " << ccmd << oendl;
runCommand(ccmd);
QTextStream s(&out, IO_ReadOnly);
while ( !s.atEnd() ) {
QString ip_addr, host, output;
@@ -148,94 +147,105 @@ void Qsmb::scan()
scanning = false;
}
void Qsmb::hostSelected(int index)
{
owarn << "hostSelected" << oendl;
- int i;
-
QListViewItem *element;
QListViewItem *parent;
QString text = CBHost->currentText();
if (scanning) return;
scanning = true;
QString cmd;
- char result[256];
-
- FILE *pipe;
+ QStringList ccmd;
LScan->setText("Scanning...");
- if(username->text().isEmpty())
- cmd = "/usr/bin/smbclient -L //"+CBHost->currentText()+" -N 2>&1 |grep Disk";
- else
- cmd = "/usr/bin/smbclient -L //"+CBHost->currentText()+" -N -U "+username->text()+"\%"+password->text()+" 2>&1 |grep Disk";
+ ccmd << "/usr/bin/smbclient";
+ ccmd << "-L";
+ ccmd << CBHost->currentText();
+ ccmd << "-N";
+
+ if(username->text().isEmpty()) {
+ } else {
+ ccmd << "-U";
+ ccmd << username->text()+"\%"+ password->text();
+ }
+ runCommand(ccmd);
+ QTextStream s(&out, IO_ReadOnly);
-// for(i = 0; i < 512; i++) {
-// if(cmd[i]==':') {
-// cmd[i]='%';
-// break;
-// }
-// if(cmd[i]=='\0')
-// break;
-// }
+ while ( !s.atEnd() ) {
+ QString share;
+ QString comment;
+ QString tmp = s.readLine();
+
+ if( tmp.find("$") == -1 && tmp.find("Disk") != -1) {
+ QStringList token = QStringList::split(' ', tmp );
+ share = token[0];
+ comment = token[2];
+ element = new QListViewItem(ListViewScan,share, comment);
+ element->setOpen(true);
+// top_element = element;
+// parent = element;
+ }
- owarn << "i="<< index << "cmd:" << cmd << oendl;
+ }
+// owarn << "i="<< index << "cmd:" << cmd << oendl;
TextViewOutput->append(cmd);
/* run smbclient & read output */
- if ((pipe = popen(cmd.latin1(), "r")) == NULL) {
- snprintf(result, 256, "Error: Can't run %s", cmd.latin1());
-// cmd = "Error: Can't run "+cmd;
- TextViewOutput->append(result);
- return;
- }
+// if ((pipe = popen(cmd.latin1(), "r")) == NULL) {
+// snprintf(result, 256, "Error: Can't run %s", cmd.latin1());
+// // cmd = "Error: Can't run "+cmd;
+// TextViewOutput->append(result);
+// return;
+// }
/* parse output and display in ListViewScan */
- while(fgets(result, 256, pipe) != NULL) {
- /* put result into TextViewOutput */
- TextViewOutput->append(result);
-
- if( strchr(result, '$') == NULL ) {
- char share[256], *ptr1;
-
- strcpy(share,result);
- ptr1 = strchr(share,' ');
- share[ptr1 - share]='\0';
-
- owarn<< "add share: " << share << oendl;
-
- if(top_element != NULL) {
- bool found = false;
- element = top_element;
-
- while(element != NULL && !found) {
- if(strcmp( element->text(0).ascii(), share)==0) {
- parent = element;
- found = true;
- }
- element = element->nextSibling();
- }
-
- if(!found) {
- element = new QListViewItem(ListViewScan,share);
- element->setOpen(true);
- parent=element;
- }
- } else {
- element = new QListViewItem(ListViewScan,share);
- element->setOpen(true);
- top_element = element;
- parent = element;
- }
- }
- }
+// while(fgets(result, 256, pipe) != NULL) {
+// /* put result into TextViewOutput */
+// TextViewOutput->append(result);
+
+// if( strchr(result, '$') == NULL ) {
+// char share[256], *ptr1;
+
+// strcpy(share,result);
+// ptr1 = strchr(share,' ');
+// share[ptr1 - share]='\0';
+
+// owarn<< "add share: " << share << oendl;
+
+// if(top_element != NULL) {
+// bool found = false;
+// element = top_element;
+
+// while(element != NULL && !found) {
+// if(strcmp( element->text(0).ascii(), share)==0) {
+// parent = element;
+// found = true;
+// }
+// element = element->nextSibling();
+// }
+
+// if(!found) {
+// element = new QListViewItem(ListViewScan,share);
+// element->setOpen(true);
+// parent=element;
+// }
+// } else {
+// element = new QListViewItem(ListViewScan,share);
+// element->setOpen(true);
+// top_element = element;
+// parent = element;
+// }
+// }
+// }
TextViewOutput->append("\n\n============================================\n");
LScan->setText("");
scanning = false;
}
@@ -265,25 +275,12 @@ void Qsmb::DoIt()
LScan->setText("Mounting...");
qApp->processEvents();
if(! QFileInfo(text).exists()) {
-// /* make sure mount exists! */
-
-// cmd = "mkdir -p "+ text;
-// owarn<<"cmd: "<< cmd << oendl;
-// if ((pipe2 = popen(cmd.latin1(), "r")) == NULL) {
-// snprintf(result, 256, "Error: Can't run %s", cmd.latin1());
-// TextViewOutput->append(result);
-// return;
-// }
-// while(fgets(result, 256, pipe2) != NULL) {
-// /* put result into TextViewOutput */
-// TextViewOutput->append(result);
-// }
QStringList ccmd;
ccmd << "mkdir";
ccmd << "-p";
ccmd << text;
owarn<<"cmd: "<< ccmd << oendl;
diff --git a/noncore/net/opie-smb/qsmbbase.ui b/noncore/net/opie-smb/qsmbbase.ui
index 35a1aec..3107929 100644
--- a/noncore/net/opie-smb/qsmbbase.ui
+++ b/noncore/net/opie-smb/qsmbbase.ui
@@ -8,13 +8,13 @@
</property>
<property stdset="1">
<name>geometry</name>
<rect>
<x>0</x>
<y>0</y>
- <width>254</width>
+ <width>250</width>
<height>352</height>
</rect>
</property>
<property stdset="1">
<name>font</name>
<font>
@@ -119,16 +119,34 @@
</property>
<property>
<name>resizeable</name>
<bool>true</bool>
</property>
</column>
+ <column>
+ <property>
+ <name>text</name>
+ <string>Comment</string>
+ </property>
+ <property>
+ <name>clickable</name>
+ <bool>true</bool>
+ </property>
+ <property>
+ <name>resizeable</name>
+ <bool>true</bool>
+ </property>
+ </column>
<property stdset="1">
<name>name</name>
<cstring>ListViewScan</cstring>
</property>
+ <property stdset="1">
+ <name>allColumnsShowFocus</name>
+ <bool>true</bool>
+ </property>
</widget>
<widget row="0" column="0" rowspan="1" colspan="2" >
<class>QPushButton</class>
<property stdset="1">
<name>name</name>
<cstring>BtnScan</cstring>