145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
|
char *read_buf, *read_buf_s=NULL;
char *smallbuf, *tmpbuf;
int port, fd, x, ftpfd=-1, retrmode=0;
if (!parse_url(pathname,scheme,username,password,host,&port,file)) {
if ((fd=createconnection_tcp(host,port))<0) return(-1);
switch (ELFCRC(0, scheme, strlen(scheme))) {
case 457648: /* http */
if ((flags&O_WRONLY)==O_WRONLY || (flags&O_RDWR)==O_RDWR) {
close(fd);
return(-1);
}
read_buf_s=read_buf=malloc(50);
write(fd, "GET ", 4);
|
|
|
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
|
char *read_buf, *read_buf_s=NULL;
char *smallbuf, *tmpbuf;
int port, fd, x, ftpfd=-1, retrmode=0;
if (!parse_url(pathname,scheme,username,password,host,&port,file)) {
if ((fd=createconnection_tcp(host,port))<0) return(-1);
switch (elfcrc(0, scheme, strlen(scheme))) {
case 457648: /* http */
if ((flags&O_WRONLY)==O_WRONLY || (flags&O_RDWR)==O_RDWR) {
close(fd);
return(-1);
}
read_buf_s=read_buf=malloc(50);
write(fd, "GET ", 4);
|
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
|
return(-EIO);
}
/* It's waiting for input... */
}
read_buf[x]=0;
while ((smallbuf=strsep(&read_buf,"\n"))!=NULL) {
switch (ELFCRC(0, smallbuf, 4)) {
case 231456: /* 550 */
if (ftpfd!=-1) close(ftpfd);
close(fd);
free(read_buf_s);
// errno=ENOENT;
return(-ENOENT);
break;
|
|
|
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
|
return(-EIO);
}
/* It's waiting for input... */
}
read_buf[x]=0;
while ((smallbuf=strsep(&read_buf,"\n"))!=NULL) {
switch (elfcrc(0, smallbuf, 4)) {
case 231456: /* 550 */
if (ftpfd!=-1) close(ftpfd);
close(fd);
free(read_buf_s);
// errno=ENOENT;
return(-ENOENT);
break;
|
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
|
return(ftpfd);
break;
case 218656: /* 230 */
write(fd, "PASV\n", 5);
break;
default:
#ifdef DEBUG_FTP
PRINT_LINE; fprintf(stderr, "dact: Unknown cmd %i (%s)\n",ELFCRC(0,smallbuf,4),smallbuf);
#endif
break;
}
}
read_buf=read_buf_s;
}
|
|
|
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
|
return(ftpfd);
break;
case 218656: /* 230 */
write(fd, "PASV\n", 5);
break;
default:
#ifdef DEBUG_FTP
PRINT_LINE; fprintf(stderr, "dact: Unknown cmd %i (%s)\n",elfcrc(0,smallbuf,4),smallbuf);
#endif
break;
}
}
read_buf=read_buf_s;
}
|