@@ -165,7 +165,7 @@ struct ftp_parselist_data {
165
165
} state ;
166
166
167
167
CURLcode error ;
168
- struct curl_fileinfo * file_data ;
168
+ struct fileinfo * file_data ;
169
169
unsigned int item_length ;
170
170
size_t item_offset ;
171
171
struct {
@@ -275,14 +275,15 @@ static void PL_ERROR(struct connectdata *conn, CURLcode err)
275
275
}
276
276
277
277
static CURLcode ftp_pl_insert_finfo (struct connectdata * conn ,
278
- struct curl_fileinfo * finfo )
278
+ struct fileinfo * infop )
279
279
{
280
280
curl_fnmatch_callback compare ;
281
281
struct WildcardData * wc = & conn -> data -> wildcard ;
282
282
struct ftp_wc_tmpdata * tmpdata = wc -> tmp ;
283
283
struct curl_llist * llist = & wc -> filelist ;
284
284
struct ftp_parselist_data * parser = tmpdata -> parser ;
285
285
bool add = TRUE;
286
+ struct curl_fileinfo * finfo = & infop -> info ;
286
287
287
288
/* move finfo pointers to b_data */
288
289
char * str = finfo -> b_data ;
@@ -316,11 +317,7 @@ static CURLcode ftp_pl_insert_finfo(struct connectdata *conn,
316
317
}
317
318
318
319
if (add ) {
319
- if (!Curl_llist_insert_next (llist , llist -> tail , finfo )) {
320
- Curl_fileinfo_dtor (NULL , finfo );
321
- tmpdata -> parser -> file_data = NULL ;
322
- return CURLE_OUT_OF_MEMORY ;
323
- }
320
+ Curl_llist_insert_next (llist , llist -> tail , finfo , & infop -> list );
324
321
}
325
322
else {
326
323
Curl_fileinfo_dtor (NULL , finfo );
@@ -337,6 +334,7 @@ size_t Curl_ftp_parselist(char *buffer, size_t size, size_t nmemb,
337
334
struct connectdata * conn = (struct connectdata * )connptr ;
338
335
struct ftp_wc_tmpdata * tmpdata = conn -> data -> wildcard .tmp ;
339
336
struct ftp_parselist_data * parser = tmpdata -> parser ;
337
+ struct fileinfo * infop ;
340
338
struct curl_fileinfo * finfo ;
341
339
unsigned long i = 0 ;
342
340
CURLcode result ;
@@ -366,17 +364,18 @@ size_t Curl_ftp_parselist(char *buffer, size_t size, size_t nmemb,
366
364
parser -> error = CURLE_OUT_OF_MEMORY ;
367
365
return bufflen ;
368
366
}
369
- parser -> file_data -> b_data = malloc (FTP_BUFFER_ALLOCSIZE );
370
- if (!parser -> file_data -> b_data ) {
367
+ parser -> file_data -> info . b_data = malloc (FTP_BUFFER_ALLOCSIZE );
368
+ if (!parser -> file_data -> info . b_data ) {
371
369
PL_ERROR (conn , CURLE_OUT_OF_MEMORY );
372
370
return bufflen ;
373
371
}
374
- parser -> file_data -> b_size = FTP_BUFFER_ALLOCSIZE ;
372
+ parser -> file_data -> info . b_size = FTP_BUFFER_ALLOCSIZE ;
375
373
parser -> item_offset = 0 ;
376
374
parser -> item_length = 0 ;
377
375
}
378
376
379
- finfo = parser -> file_data ;
377
+ infop = parser -> file_data ;
378
+ finfo = & infop -> info ;
380
379
finfo -> b_data [finfo -> b_used ++ ] = c ;
381
380
382
381
if (finfo -> b_used >= finfo -> b_size - 1 ) {
@@ -498,8 +497,8 @@ size_t Curl_ftp_parselist(char *buffer, size_t size, size_t nmemb,
498
497
PL_ERROR (conn , CURLE_FTP_BAD_FILE_LIST );
499
498
return bufflen ;
500
499
}
501
- parser -> file_data -> flags |= CURLFINFOFLAG_KNOWN_PERM ;
502
- parser -> file_data -> perm = perm ;
500
+ parser -> file_data -> info . flags |= CURLFINFOFLAG_KNOWN_PERM ;
501
+ parser -> file_data -> info . perm = perm ;
503
502
parser -> offsets .perm = parser -> item_offset ;
504
503
505
504
parser -> item_length = 0 ;
@@ -530,8 +529,8 @@ size_t Curl_ftp_parselist(char *buffer, size_t size, size_t nmemb,
530
529
finfo -> b_data [parser -> item_offset + parser -> item_length - 1 ] = 0 ;
531
530
hlinks = strtol (finfo -> b_data + parser -> item_offset , & p , 10 );
532
531
if (p [0 ] == '\0' && hlinks != LONG_MAX && hlinks != LONG_MIN ) {
533
- parser -> file_data -> flags |= CURLFINFOFLAG_KNOWN_HLINKCOUNT ;
534
- parser -> file_data -> hardlinks = hlinks ;
532
+ parser -> file_data -> info . flags |= CURLFINFOFLAG_KNOWN_HLINKCOUNT ;
533
+ parser -> file_data -> info . hardlinks = hlinks ;
535
534
}
536
535
parser -> item_length = 0 ;
537
536
parser -> item_offset = 0 ;
@@ -613,8 +612,8 @@ size_t Curl_ftp_parselist(char *buffer, size_t size, size_t nmemb,
613
612
fsize = curlx_strtoofft (finfo -> b_data + parser -> item_offset , & p , 10 );
614
613
if (p [0 ] == '\0' && fsize != CURL_OFF_T_MAX &&
615
614
fsize != CURL_OFF_T_MIN ) {
616
- parser -> file_data -> flags |= CURLFINFOFLAG_KNOWN_SIZE ;
617
- parser -> file_data -> size = fsize ;
615
+ parser -> file_data -> info . flags |= CURLFINFOFLAG_KNOWN_SIZE ;
616
+ parser -> file_data -> info . size = fsize ;
618
617
}
619
618
parser -> item_length = 0 ;
620
619
parser -> item_offset = 0 ;
@@ -731,7 +730,7 @@ size_t Curl_ftp_parselist(char *buffer, size_t size, size_t nmemb,
731
730
finfo -> b_data [parser -> item_offset + parser -> item_length - 1 ] = 0 ;
732
731
parser -> offsets .filename = parser -> item_offset ;
733
732
parser -> state .UNIX .main = PL_UNIX_FILETYPE ;
734
- result = ftp_pl_insert_finfo (conn , finfo );
733
+ result = ftp_pl_insert_finfo (conn , infop );
735
734
if (result ) {
736
735
PL_ERROR (conn , result );
737
736
return bufflen ;
@@ -743,7 +742,7 @@ size_t Curl_ftp_parselist(char *buffer, size_t size, size_t nmemb,
743
742
finfo -> b_data [parser -> item_offset + parser -> item_length - 1 ] = 0 ;
744
743
parser -> offsets .filename = parser -> item_offset ;
745
744
parser -> state .UNIX .main = PL_UNIX_FILETYPE ;
746
- result = ftp_pl_insert_finfo (conn , finfo );
745
+ result = ftp_pl_insert_finfo (conn , infop );
747
746
if (result ) {
748
747
PL_ERROR (conn , result );
749
748
return bufflen ;
@@ -838,7 +837,7 @@ size_t Curl_ftp_parselist(char *buffer, size_t size, size_t nmemb,
838
837
else if (c == '\n' ) {
839
838
finfo -> b_data [parser -> item_offset + parser -> item_length - 1 ] = 0 ;
840
839
parser -> offsets .symlink_target = parser -> item_offset ;
841
- result = ftp_pl_insert_finfo (conn , finfo );
840
+ result = ftp_pl_insert_finfo (conn , infop );
842
841
if (result ) {
843
842
PL_ERROR (conn , result );
844
843
return bufflen ;
@@ -850,7 +849,7 @@ size_t Curl_ftp_parselist(char *buffer, size_t size, size_t nmemb,
850
849
if (c == '\n' ) {
851
850
finfo -> b_data [parser -> item_offset + parser -> item_length - 1 ] = 0 ;
852
851
parser -> offsets .symlink_target = parser -> item_offset ;
853
- result = ftp_pl_insert_finfo (conn , finfo );
852
+ result = ftp_pl_insert_finfo (conn , infop );
854
853
if (result ) {
855
854
PL_ERROR (conn , result );
856
855
return bufflen ;
@@ -953,10 +952,10 @@ size_t Curl_ftp_parselist(char *buffer, size_t size, size_t nmemb,
953
952
return bufflen ;
954
953
}
955
954
/* correct file type */
956
- parser -> file_data -> filetype = CURLFILETYPE_FILE ;
955
+ parser -> file_data -> info . filetype = CURLFILETYPE_FILE ;
957
956
}
958
957
959
- parser -> file_data -> flags |= CURLFINFOFLAG_KNOWN_SIZE ;
958
+ parser -> file_data -> info . flags |= CURLFINFOFLAG_KNOWN_SIZE ;
960
959
parser -> item_length = 0 ;
961
960
parser -> state .NT .main = PL_WINNT_FILENAME ;
962
961
parser -> state .NT .sub .filename = PL_WINNT_FILENAME_PRESPACE ;
@@ -983,7 +982,7 @@ size_t Curl_ftp_parselist(char *buffer, size_t size, size_t nmemb,
983
982
parser -> offsets .filename = parser -> item_offset ;
984
983
finfo -> b_data [finfo -> b_used - 1 ] = 0 ;
985
984
parser -> offsets .filename = parser -> item_offset ;
986
- result = ftp_pl_insert_finfo (conn , finfo );
985
+ result = ftp_pl_insert_finfo (conn , infop );
987
986
if (result ) {
988
987
PL_ERROR (conn , result );
989
988
return bufflen ;
@@ -995,7 +994,7 @@ size_t Curl_ftp_parselist(char *buffer, size_t size, size_t nmemb,
995
994
case PL_WINNT_FILENAME_WINEOL :
996
995
if (c == '\n' ) {
997
996
parser -> offsets .filename = parser -> item_offset ;
998
- result = ftp_pl_insert_finfo (conn , finfo );
997
+ result = ftp_pl_insert_finfo (conn , infop );
999
998
if (result ) {
1000
999
PL_ERROR (conn , result );
1001
1000
return bufflen ;
0 commit comments