@@ -165,7 +165,7 @@ struct ftp_parselist_data {
165165 } state ;
166166
167167 CURLcode error ;
168- struct curl_fileinfo * file_data ;
168+ struct fileinfo * file_data ;
169169 unsigned int item_length ;
170170 size_t item_offset ;
171171 struct {
@@ -275,14 +275,15 @@ static void PL_ERROR(struct connectdata *conn, CURLcode err)
275275}
276276
277277static CURLcode ftp_pl_insert_finfo (struct connectdata * conn ,
278- struct curl_fileinfo * finfo )
278+ struct fileinfo * infop )
279279{
280280 curl_fnmatch_callback compare ;
281281 struct WildcardData * wc = & conn -> data -> wildcard ;
282282 struct ftp_wc_tmpdata * tmpdata = wc -> tmp ;
283283 struct curl_llist * llist = & wc -> filelist ;
284284 struct ftp_parselist_data * parser = tmpdata -> parser ;
285285 bool add = TRUE;
286+ struct curl_fileinfo * finfo = & infop -> info ;
286287
287288 /* move finfo pointers to b_data */
288289 char * str = finfo -> b_data ;
@@ -316,11 +317,7 @@ static CURLcode ftp_pl_insert_finfo(struct connectdata *conn,
316317 }
317318
318319 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 );
324321 }
325322 else {
326323 Curl_fileinfo_dtor (NULL , finfo );
@@ -337,6 +334,7 @@ size_t Curl_ftp_parselist(char *buffer, size_t size, size_t nmemb,
337334 struct connectdata * conn = (struct connectdata * )connptr ;
338335 struct ftp_wc_tmpdata * tmpdata = conn -> data -> wildcard .tmp ;
339336 struct ftp_parselist_data * parser = tmpdata -> parser ;
337+ struct fileinfo * infop ;
340338 struct curl_fileinfo * finfo ;
341339 unsigned long i = 0 ;
342340 CURLcode result ;
@@ -366,17 +364,18 @@ size_t Curl_ftp_parselist(char *buffer, size_t size, size_t nmemb,
366364 parser -> error = CURLE_OUT_OF_MEMORY ;
367365 return bufflen ;
368366 }
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 ) {
371369 PL_ERROR (conn , CURLE_OUT_OF_MEMORY );
372370 return bufflen ;
373371 }
374- parser -> file_data -> b_size = FTP_BUFFER_ALLOCSIZE ;
372+ parser -> file_data -> info . b_size = FTP_BUFFER_ALLOCSIZE ;
375373 parser -> item_offset = 0 ;
376374 parser -> item_length = 0 ;
377375 }
378376
379- finfo = parser -> file_data ;
377+ infop = parser -> file_data ;
378+ finfo = & infop -> info ;
380379 finfo -> b_data [finfo -> b_used ++ ] = c ;
381380
382381 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,
498497 PL_ERROR (conn , CURLE_FTP_BAD_FILE_LIST );
499498 return bufflen ;
500499 }
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 ;
503502 parser -> offsets .perm = parser -> item_offset ;
504503
505504 parser -> item_length = 0 ;
@@ -530,8 +529,8 @@ size_t Curl_ftp_parselist(char *buffer, size_t size, size_t nmemb,
530529 finfo -> b_data [parser -> item_offset + parser -> item_length - 1 ] = 0 ;
531530 hlinks = strtol (finfo -> b_data + parser -> item_offset , & p , 10 );
532531 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 ;
535534 }
536535 parser -> item_length = 0 ;
537536 parser -> item_offset = 0 ;
@@ -613,8 +612,8 @@ size_t Curl_ftp_parselist(char *buffer, size_t size, size_t nmemb,
613612 fsize = curlx_strtoofft (finfo -> b_data + parser -> item_offset , & p , 10 );
614613 if (p [0 ] == '\0' && fsize != CURL_OFF_T_MAX &&
615614 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 ;
618617 }
619618 parser -> item_length = 0 ;
620619 parser -> item_offset = 0 ;
@@ -731,7 +730,7 @@ size_t Curl_ftp_parselist(char *buffer, size_t size, size_t nmemb,
731730 finfo -> b_data [parser -> item_offset + parser -> item_length - 1 ] = 0 ;
732731 parser -> offsets .filename = parser -> item_offset ;
733732 parser -> state .UNIX .main = PL_UNIX_FILETYPE ;
734- result = ftp_pl_insert_finfo (conn , finfo );
733+ result = ftp_pl_insert_finfo (conn , infop );
735734 if (result ) {
736735 PL_ERROR (conn , result );
737736 return bufflen ;
@@ -743,7 +742,7 @@ size_t Curl_ftp_parselist(char *buffer, size_t size, size_t nmemb,
743742 finfo -> b_data [parser -> item_offset + parser -> item_length - 1 ] = 0 ;
744743 parser -> offsets .filename = parser -> item_offset ;
745744 parser -> state .UNIX .main = PL_UNIX_FILETYPE ;
746- result = ftp_pl_insert_finfo (conn , finfo );
745+ result = ftp_pl_insert_finfo (conn , infop );
747746 if (result ) {
748747 PL_ERROR (conn , result );
749748 return bufflen ;
@@ -838,7 +837,7 @@ size_t Curl_ftp_parselist(char *buffer, size_t size, size_t nmemb,
838837 else if (c == '\n' ) {
839838 finfo -> b_data [parser -> item_offset + parser -> item_length - 1 ] = 0 ;
840839 parser -> offsets .symlink_target = parser -> item_offset ;
841- result = ftp_pl_insert_finfo (conn , finfo );
840+ result = ftp_pl_insert_finfo (conn , infop );
842841 if (result ) {
843842 PL_ERROR (conn , result );
844843 return bufflen ;
@@ -850,7 +849,7 @@ size_t Curl_ftp_parselist(char *buffer, size_t size, size_t nmemb,
850849 if (c == '\n' ) {
851850 finfo -> b_data [parser -> item_offset + parser -> item_length - 1 ] = 0 ;
852851 parser -> offsets .symlink_target = parser -> item_offset ;
853- result = ftp_pl_insert_finfo (conn , finfo );
852+ result = ftp_pl_insert_finfo (conn , infop );
854853 if (result ) {
855854 PL_ERROR (conn , result );
856855 return bufflen ;
@@ -953,10 +952,10 @@ size_t Curl_ftp_parselist(char *buffer, size_t size, size_t nmemb,
953952 return bufflen ;
954953 }
955954 /* correct file type */
956- parser -> file_data -> filetype = CURLFILETYPE_FILE ;
955+ parser -> file_data -> info . filetype = CURLFILETYPE_FILE ;
957956 }
958957
959- parser -> file_data -> flags |= CURLFINFOFLAG_KNOWN_SIZE ;
958+ parser -> file_data -> info . flags |= CURLFINFOFLAG_KNOWN_SIZE ;
960959 parser -> item_length = 0 ;
961960 parser -> state .NT .main = PL_WINNT_FILENAME ;
962961 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,
983982 parser -> offsets .filename = parser -> item_offset ;
984983 finfo -> b_data [finfo -> b_used - 1 ] = 0 ;
985984 parser -> offsets .filename = parser -> item_offset ;
986- result = ftp_pl_insert_finfo (conn , finfo );
985+ result = ftp_pl_insert_finfo (conn , infop );
987986 if (result ) {
988987 PL_ERROR (conn , result );
989988 return bufflen ;
@@ -995,7 +994,7 @@ size_t Curl_ftp_parselist(char *buffer, size_t size, size_t nmemb,
995994 case PL_WINNT_FILENAME_WINEOL :
996995 if (c == '\n' ) {
997996 parser -> offsets .filename = parser -> item_offset ;
998- result = ftp_pl_insert_finfo (conn , finfo );
997+ result = ftp_pl_insert_finfo (conn , infop );
999998 if (result ) {
1000999 PL_ERROR (conn , result );
10011000 return bufflen ;
0 commit comments