summaryrefslogtreecommitdiff
authorllornkcor <llornkcor>2005-08-15 11:09:26 (UTC)
committer llornkcor <llornkcor>2005-08-15 11:09:26 (UTC)
commit0771d689056f233fe772d85de4040f59f3ba1e6b (patch) (unidiff)
treecd746f64ca8b36852d6232f62ee7b803e6a5a3c4
parente7c0016a970ab1bdf5870a648a7bf07b857fbb11 (diff)
downloadopie-0771d689056f233fe772d85de4040f59f3ba1e6b.zip
opie-0771d689056f233fe772d85de4040f59f3ba1e6b.tar.gz
opie-0771d689056f233fe772d85de4040f59f3ba1e6b.tar.bz2
better way to get shares
Diffstat (more/less context) (show whitespace changes)
-rw-r--r--noncore/net/opie-smb/qsmb.cpp139
-rw-r--r--noncore/net/opie-smb/qsmbbase.ui20
2 files changed, 87 insertions, 72 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
@@ -95,7 +95,7 @@ void* runitm(void* arg)
95 95
96void Qsmb::scan() 96void Qsmb::scan()
97{ 97{
98 int i; 98// int i;
99 99
100 if (scanning) return; 100 if (scanning) return;
101 scanning = true; 101 scanning = true;
@@ -123,7 +123,6 @@ void Qsmb::scan()
123 123
124 /* parse output and display in ListViewScan */ 124 /* parse output and display in ListViewScan */
125 ccmd = "smbfind"; 125 ccmd = "smbfind";
126 owarn <<"cmd: " << ccmd << oendl;
127 runCommand(ccmd); 126 runCommand(ccmd);
128 127
129 QTextStream s(&out, IO_ReadOnly); 128 QTextStream s(&out, IO_ReadOnly);
@@ -151,8 +150,6 @@ void Qsmb::scan()
151void Qsmb::hostSelected(int index) 150void Qsmb::hostSelected(int index)
152{ 151{
153 owarn << "hostSelected" << oendl; 152 owarn << "hostSelected" << oendl;
154 int i;
155
156 QListViewItem *element; 153 QListViewItem *element;
157 QListViewItem *parent; 154 QListViewItem *parent;
158 155
@@ -162,77 +159,90 @@ void Qsmb::hostSelected(int index)
162 scanning = true; 159 scanning = true;
163 160
164 QString cmd; 161 QString cmd;
165 char result[256]; 162 QStringList ccmd;
166
167 FILE *pipe;
168 163
169 LScan->setText("Scanning..."); 164 LScan->setText("Scanning...");
170 165
171 if(username->text().isEmpty()) 166 ccmd << "/usr/bin/smbclient";
172 cmd = "/usr/bin/smbclient -L //"+CBHost->currentText()+" -N 2>&1 |grep Disk"; 167 ccmd << "-L";
173 else 168 ccmd << CBHost->currentText();
174 cmd = "/usr/bin/smbclient -L //"+CBHost->currentText()+" -N -U "+username->text()+"\%"+password->text()+" 2>&1 |grep Disk"; 169 ccmd << "-N";
175 170
176// for(i = 0; i < 512; i++) { 171 if(username->text().isEmpty()) {
177// if(cmd[i]==':') { 172 } else {
178// cmd[i]='%'; 173 ccmd << "-U";
179// break; 174 ccmd << username->text()+"\%"+ password->text();
180// } 175 }
181// if(cmd[i]=='\0') 176 runCommand(ccmd);
182// break; 177 QTextStream s(&out, IO_ReadOnly);
183// }
184 178
185 owarn << "i="<< index << "cmd:" << cmd << oendl; 179 while ( !s.atEnd() ) {
180 QString share;
181 QString comment;
182 QString tmp = s.readLine();
183
184 if( tmp.find("$") == -1 && tmp.find("Disk") != -1) {
185 QStringList token = QStringList::split(' ', tmp );
186 share = token[0];
187 comment = token[2];
188 element = new QListViewItem(ListViewScan,share, comment);
189 element->setOpen(true);
190// top_element = element;
191// parent = element;
192 }
193
194 }
195// owarn << "i="<< index << "cmd:" << cmd << oendl;
186 196
187 TextViewOutput->append(cmd); 197 TextViewOutput->append(cmd);
188 198
189 /* run smbclient & read output */ 199 /* run smbclient & read output */
190 if ((pipe = popen(cmd.latin1(), "r")) == NULL) { 200// if ((pipe = popen(cmd.latin1(), "r")) == NULL) {
191 snprintf(result, 256, "Error: Can't run %s", cmd.latin1()); 201// snprintf(result, 256, "Error: Can't run %s", cmd.latin1());
192// cmd = "Error: Can't run "+cmd; 202// // cmd = "Error: Can't run "+cmd;
193 TextViewOutput->append(result); 203// TextViewOutput->append(result);
194 return; 204// return;
195 } 205// }
196 206
197 /* parse output and display in ListViewScan */ 207 /* parse output and display in ListViewScan */
198 while(fgets(result, 256, pipe) != NULL) { 208// while(fgets(result, 256, pipe) != NULL) {
199 /* put result into TextViewOutput */ 209// /* put result into TextViewOutput */
200 TextViewOutput->append(result); 210// TextViewOutput->append(result);
201 211
202 if( strchr(result, '$') == NULL ) { 212// if( strchr(result, '$') == NULL ) {
203 char share[256], *ptr1; 213// char share[256], *ptr1;
204 214
205 strcpy(share,result); 215// strcpy(share,result);
206 ptr1 = strchr(share,' '); 216// ptr1 = strchr(share,' ');
207 share[ptr1 - share]='\0'; 217// share[ptr1 - share]='\0';
208 218
209 owarn<< "add share: " << share << oendl; 219// owarn<< "add share: " << share << oendl;
210 220
211 if(top_element != NULL) { 221// if(top_element != NULL) {
212 bool found = false; 222// bool found = false;
213 element = top_element; 223// element = top_element;
214 224
215 while(element != NULL && !found) { 225// while(element != NULL && !found) {
216 if(strcmp( element->text(0).ascii(), share)==0) { 226// if(strcmp( element->text(0).ascii(), share)==0) {
217 parent = element; 227// parent = element;
218 found = true; 228// found = true;
219 } 229// }
220 element = element->nextSibling(); 230// element = element->nextSibling();
221 } 231// }
222 232
223 if(!found) { 233// if(!found) {
224 element = new QListViewItem(ListViewScan,share); 234// element = new QListViewItem(ListViewScan,share);
225 element->setOpen(true); 235// element->setOpen(true);
226 parent=element; 236// parent=element;
227 } 237// }
228 } else { 238// } else {
229 element = new QListViewItem(ListViewScan,share); 239// element = new QListViewItem(ListViewScan,share);
230 element->setOpen(true); 240// element->setOpen(true);
231 top_element = element; 241// top_element = element;
232 parent = element; 242// parent = element;
233 } 243// }
234 } 244// }
235 } 245// }
236 246
237 TextViewOutput->append("\n\n============================================\n"); 247 TextViewOutput->append("\n\n============================================\n");
238 LScan->setText(""); 248 LScan->setText("");
@@ -268,19 +278,6 @@ void Qsmb::DoIt()
268 278
269 279
270 if(! QFileInfo(text).exists()) { 280 if(! QFileInfo(text).exists()) {
271// /* make sure mount exists! */
272
273// cmd = "mkdir -p "+ text;
274// owarn<<"cmd: "<< cmd << oendl;
275// if ((pipe2 = popen(cmd.latin1(), "r")) == NULL) {
276// snprintf(result, 256, "Error: Can't run %s", cmd.latin1());
277// TextViewOutput->append(result);
278// return;
279// }
280// while(fgets(result, 256, pipe2) != NULL) {
281// /* put result into TextViewOutput */
282// TextViewOutput->append(result);
283// }
284 QStringList ccmd; 281 QStringList ccmd;
285 ccmd << "mkdir"; 282 ccmd << "mkdir";
286 ccmd << "-p"; 283 ccmd << "-p";
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
@@ -11,7 +11,7 @@
11 <rect> 11 <rect>
12 <x>0</x> 12 <x>0</x>
13 <y>0</y> 13 <y>0</y>
14 <width>254</width> 14 <width>250</width>
15 <height>352</height> 15 <height>352</height>
16 </rect> 16 </rect>
17 </property> 17 </property>
@@ -122,10 +122,28 @@
122 <bool>true</bool> 122 <bool>true</bool>
123 </property> 123 </property>
124 </column> 124 </column>
125 <column>
126 <property>
127 <name>text</name>
128 <string>Comment</string>
129 </property>
130 <property>
131 <name>clickable</name>
132 <bool>true</bool>
133 </property>
134 <property>
135 <name>resizeable</name>
136 <bool>true</bool>
137 </property>
138 </column>
125 <property stdset="1"> 139 <property stdset="1">
126 <name>name</name> 140 <name>name</name>
127 <cstring>ListViewScan</cstring> 141 <cstring>ListViewScan</cstring>
128 </property> 142 </property>
143 <property stdset="1">
144 <name>allColumnsShowFocus</name>
145 <bool>true</bool>
146 </property>
129 </widget> 147 </widget>
130 <widget row="0" column="0" rowspan="1" colspan="2" > 148 <widget row="0" column="0" rowspan="1" colspan="2" >
131 <class>QPushButton</class> 149 <class>QPushButton</class>