Diffstat (limited to 'noncore/net/opie-smb/qsmb.cpp') (more/less context) (ignore whitespace changes)
-rw-r--r-- | noncore/net/opie-smb/qsmb.cpp | 151 |
1 files changed, 74 insertions, 77 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 | ||
96 | void Qsmb::scan() | 96 | void 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() | |||
151 | void Qsmb::hostSelected(int index) | 150 | void 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"; |
170 | |||
171 | if(username->text().isEmpty()) { | ||
172 | } else { | ||
173 | ccmd << "-U"; | ||
174 | ccmd << username->text()+"\%"+ password->text(); | ||
175 | } | ||
176 | runCommand(ccmd); | ||
177 | QTextStream s(&out, IO_ReadOnly); | ||
175 | 178 | ||
176 | // for(i = 0; i < 512; i++) { | 179 | while ( !s.atEnd() ) { |
177 | // if(cmd[i]==':') { | 180 | QString share; |
178 | // cmd[i]='%'; | 181 | QString comment; |
179 | // break; | 182 | QString tmp = s.readLine(); |
180 | // } | 183 | |
181 | // if(cmd[i]=='\0') | 184 | if( tmp.find("$") == -1 && tmp.find("Disk") != -1) { |
182 | // break; | 185 | QStringList token = QStringList::split(' ', tmp ); |
183 | // } | 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 | } | ||
184 | 193 | ||
185 | owarn << "i="<< index << "cmd:" << cmd << oendl; | 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"; |