Lines Matching full:parser
229 struct ftp_parselist_data *parser = *parserp; in Curl_ftp_parselist_data_free() local
230 if(parser) in Curl_ftp_parselist_data_free()
231 Curl_fileinfo_cleanup(parser->file_data); in Curl_ftp_parselist_data_free()
232 free(parser); in Curl_ftp_parselist_data_free()
317 struct ftp_parselist_data *parser = ftpwc->parser; in ftp_pl_insert_finfo() local
323 finfo->filename = str + parser->offsets.filename; in ftp_pl_insert_finfo()
324 finfo->strings.group = parser->offsets.group ? in ftp_pl_insert_finfo()
325 str + parser->offsets.group : NULL; in ftp_pl_insert_finfo()
326 finfo->strings.perm = parser->offsets.perm ? in ftp_pl_insert_finfo()
327 str + parser->offsets.perm : NULL; in ftp_pl_insert_finfo()
328 finfo->strings.target = parser->offsets.symlink_target ? in ftp_pl_insert_finfo()
329 str + parser->offsets.symlink_target : NULL; in ftp_pl_insert_finfo()
330 finfo->strings.time = str + parser->offsets.time; in ftp_pl_insert_finfo()
331 finfo->strings.user = parser->offsets.user ? in ftp_pl_insert_finfo()
332 str + parser->offsets.user : NULL; in ftp_pl_insert_finfo()
361 ftpwc->parser->file_data = NULL; in ftp_pl_insert_finfo()
371 struct ftp_parselist_data *parser = ftpwc->parser; in Curl_ftp_parselist() local
378 if(parser->error) { /* error in previous call */ in Curl_ftp_parselist()
388 if(parser->os_type == OS_TYPE_UNKNOWN && bufflen > 0) { in Curl_ftp_parselist()
390 parser->os_type = (buffer[0] >= '0' && buffer[0] <= '9') ? in Curl_ftp_parselist()
397 if(!parser->file_data) { /* tmp file data is not allocated yet */ in Curl_ftp_parselist()
398 parser->file_data = Curl_fileinfo_alloc(); in Curl_ftp_parselist()
399 if(!parser->file_data) { in Curl_ftp_parselist()
400 parser->error = CURLE_OUT_OF_MEMORY; in Curl_ftp_parselist()
403 parser->file_data->info.b_data = malloc(FTP_BUFFER_ALLOCSIZE); in Curl_ftp_parselist()
404 if(!parser->file_data->info.b_data) { in Curl_ftp_parselist()
405 parser->error = CURLE_OUT_OF_MEMORY; in Curl_ftp_parselist()
408 parser->file_data->info.b_size = FTP_BUFFER_ALLOCSIZE; in Curl_ftp_parselist()
409 parser->item_offset = 0; in Curl_ftp_parselist()
410 parser->item_length = 0; in Curl_ftp_parselist()
413 infop = parser->file_data; in Curl_ftp_parselist()
426 Curl_fileinfo_cleanup(parser->file_data); in Curl_ftp_parselist()
427 parser->file_data = NULL; in Curl_ftp_parselist()
428 parser->error = CURLE_OUT_OF_MEMORY; in Curl_ftp_parselist()
433 switch(parser->os_type) { in Curl_ftp_parselist()
435 switch(parser->state.UNIX.main) { in Curl_ftp_parselist()
437 switch(parser->state.UNIX.sub.total_dirsize) { in Curl_ftp_parselist()
440 parser->state.UNIX.sub.total_dirsize = PL_UNIX_TOTALSIZE_READING; in Curl_ftp_parselist()
441 parser->item_length++; in Curl_ftp_parselist()
444 parser->state.UNIX.main = PL_UNIX_FILETYPE; in Curl_ftp_parselist()
451 parser->item_length++; in Curl_ftp_parselist()
453 parser->item_length--; in Curl_ftp_parselist()
457 finfo->b_data[parser->item_length - 1] = 0; in Curl_ftp_parselist()
467 parser->error = CURLE_FTP_BAD_FILE_LIST; in Curl_ftp_parselist()
470 parser->state.UNIX.main = PL_UNIX_FILETYPE; in Curl_ftp_parselist()
474 parser->error = CURLE_FTP_BAD_FILE_LIST; in Curl_ftp_parselist()
508 parser->error = CURLE_FTP_BAD_FILE_LIST; in Curl_ftp_parselist()
511 parser->state.UNIX.main = PL_UNIX_PERMISSION; in Curl_ftp_parselist()
512 parser->item_length = 0; in Curl_ftp_parselist()
513 parser->item_offset = 1; in Curl_ftp_parselist()
516 parser->item_length++; in Curl_ftp_parselist()
517 if(parser->item_length <= 9) { in Curl_ftp_parselist()
519 parser->error = CURLE_FTP_BAD_FILE_LIST; in Curl_ftp_parselist()
523 else if(parser->item_length == 10) { in Curl_ftp_parselist()
526 parser->error = CURLE_FTP_BAD_FILE_LIST; in Curl_ftp_parselist()
530 perm = ftp_pl_get_permission(finfo->b_data + parser->item_offset); in Curl_ftp_parselist()
532 parser->error = CURLE_FTP_BAD_FILE_LIST; in Curl_ftp_parselist()
535 parser->file_data->info.flags |= CURLFINFOFLAG_KNOWN_PERM; in Curl_ftp_parselist()
536 parser->file_data->info.perm = perm; in Curl_ftp_parselist()
537 parser->offsets.perm = parser->item_offset; in Curl_ftp_parselist()
539 parser->item_length = 0; in Curl_ftp_parselist()
540 parser->state.UNIX.main = PL_UNIX_HLINKS; in Curl_ftp_parselist()
541 parser->state.UNIX.sub.hlinks = PL_UNIX_HLINKS_PRESPACE; in Curl_ftp_parselist()
545 switch(parser->state.UNIX.sub.hlinks) { in Curl_ftp_parselist()
549 parser->item_offset = finfo->b_used - 1; in Curl_ftp_parselist()
550 parser->item_length = 1; in Curl_ftp_parselist()
551 parser->state.UNIX.sub.hlinks = PL_UNIX_HLINKS_NUMBER; in Curl_ftp_parselist()
554 parser->error = CURLE_FTP_BAD_FILE_LIST; in Curl_ftp_parselist()
560 parser->item_length ++; in Curl_ftp_parselist()
564 finfo->b_data[parser->item_offset + parser->item_length - 1] = 0; in Curl_ftp_parselist()
565 hlinks = strtol(finfo->b_data + parser->item_offset, &p, 10); in Curl_ftp_parselist()
567 parser->file_data->info.flags |= CURLFINFOFLAG_KNOWN_HLINKCOUNT; in Curl_ftp_parselist()
568 parser->file_data->info.hardlinks = hlinks; in Curl_ftp_parselist()
570 parser->item_length = 0; in Curl_ftp_parselist()
571 parser->item_offset = 0; in Curl_ftp_parselist()
572 parser->state.UNIX.main = PL_UNIX_USER; in Curl_ftp_parselist()
573 parser->state.UNIX.sub.user = PL_UNIX_USER_PRESPACE; in Curl_ftp_parselist()
576 parser->error = CURLE_FTP_BAD_FILE_LIST; in Curl_ftp_parselist()
583 switch(parser->state.UNIX.sub.user) { in Curl_ftp_parselist()
586 parser->item_offset = finfo->b_used - 1; in Curl_ftp_parselist()
587 parser->item_length = 1; in Curl_ftp_parselist()
588 parser->state.UNIX.sub.user = PL_UNIX_USER_PARSING; in Curl_ftp_parselist()
592 parser->item_length++; in Curl_ftp_parselist()
594 finfo->b_data[parser->item_offset + parser->item_length - 1] = 0; in Curl_ftp_parselist()
595 parser->offsets.user = parser->item_offset; in Curl_ftp_parselist()
596 parser->state.UNIX.main = PL_UNIX_GROUP; in Curl_ftp_parselist()
597 parser->state.UNIX.sub.group = PL_UNIX_GROUP_PRESPACE; in Curl_ftp_parselist()
598 parser->item_offset = 0; in Curl_ftp_parselist()
599 parser->item_length = 0; in Curl_ftp_parselist()
605 switch(parser->state.UNIX.sub.group) { in Curl_ftp_parselist()
608 parser->item_offset = finfo->b_used - 1; in Curl_ftp_parselist()
609 parser->item_length = 1; in Curl_ftp_parselist()
610 parser->state.UNIX.sub.group = PL_UNIX_GROUP_NAME; in Curl_ftp_parselist()
614 parser->item_length++; in Curl_ftp_parselist()
616 finfo->b_data[parser->item_offset + parser->item_length - 1] = 0; in Curl_ftp_parselist()
617 parser->offsets.group = parser->item_offset; in Curl_ftp_parselist()
618 parser->state.UNIX.main = PL_UNIX_SIZE; in Curl_ftp_parselist()
619 parser->state.UNIX.sub.size = PL_UNIX_SIZE_PRESPACE; in Curl_ftp_parselist()
620 parser->item_offset = 0; in Curl_ftp_parselist()
621 parser->item_length = 0; in Curl_ftp_parselist()
627 switch(parser->state.UNIX.sub.size) { in Curl_ftp_parselist()
631 parser->item_offset = finfo->b_used - 1; in Curl_ftp_parselist()
632 parser->item_length = 1; in Curl_ftp_parselist()
633 parser->state.UNIX.sub.size = PL_UNIX_SIZE_NUMBER; in Curl_ftp_parselist()
636 parser->error = CURLE_FTP_BAD_FILE_LIST; in Curl_ftp_parselist()
642 parser->item_length++; in Curl_ftp_parselist()
646 finfo->b_data[parser->item_offset + parser->item_length - 1] = 0; in Curl_ftp_parselist()
647 if(!curlx_strtoofft(finfo->b_data + parser->item_offset, in Curl_ftp_parselist()
651 parser->file_data->info.flags |= CURLFINFOFLAG_KNOWN_SIZE; in Curl_ftp_parselist()
652 parser->file_data->info.size = fsize; in Curl_ftp_parselist()
654 parser->item_length = 0; in Curl_ftp_parselist()
655 parser->item_offset = 0; in Curl_ftp_parselist()
656 parser->state.UNIX.main = PL_UNIX_TIME; in Curl_ftp_parselist()
657 parser->state.UNIX.sub.time = PL_UNIX_TIME_PREPART1; in Curl_ftp_parselist()
661 parser->error = CURLE_FTP_BAD_FILE_LIST; in Curl_ftp_parselist()
668 switch(parser->state.UNIX.sub.time) { in Curl_ftp_parselist()
672 parser->item_offset = finfo->b_used -1; in Curl_ftp_parselist()
673 parser->item_length = 1; in Curl_ftp_parselist()
674 parser->state.UNIX.sub.time = PL_UNIX_TIME_PART1; in Curl_ftp_parselist()
677 parser->error = CURLE_FTP_BAD_FILE_LIST; in Curl_ftp_parselist()
683 parser->item_length++; in Curl_ftp_parselist()
685 parser->state.UNIX.sub.time = PL_UNIX_TIME_PREPART2; in Curl_ftp_parselist()
688 parser->error = CURLE_FTP_BAD_FILE_LIST; in Curl_ftp_parselist()
693 parser->item_length++; in Curl_ftp_parselist()
696 parser->state.UNIX.sub.time = PL_UNIX_TIME_PART2; in Curl_ftp_parselist()
699 parser->error = CURLE_FTP_BAD_FILE_LIST; in Curl_ftp_parselist()
705 parser->item_length++; in Curl_ftp_parselist()
707 parser->state.UNIX.sub.time = PL_UNIX_TIME_PREPART3; in Curl_ftp_parselist()
710 parser->error = CURLE_FTP_BAD_FILE_LIST; in Curl_ftp_parselist()
715 parser->item_length++; in Curl_ftp_parselist()
718 parser->state.UNIX.sub.time = PL_UNIX_TIME_PART3; in Curl_ftp_parselist()
721 parser->error = CURLE_FTP_BAD_FILE_LIST; in Curl_ftp_parselist()
727 parser->item_length++; in Curl_ftp_parselist()
729 finfo->b_data[parser->item_offset + parser->item_length -1] = 0; in Curl_ftp_parselist()
730 parser->offsets.time = parser->item_offset; in Curl_ftp_parselist()
732 if(ftp_pl_gettime(parser, finfo->b_data + parser->item_offset)) { in Curl_ftp_parselist()
733 parser->file_data->flags |= CURLFINFOFLAG_KNOWN_TIME; in Curl_ftp_parselist()
737 parser->state.UNIX.main = PL_UNIX_SYMLINK; in Curl_ftp_parselist()
738 parser->state.UNIX.sub.symlink = PL_UNIX_SYMLINK_PRESPACE; in Curl_ftp_parselist()
741 parser->state.UNIX.main = PL_UNIX_FILENAME; in Curl_ftp_parselist()
742 parser->state.UNIX.sub.filename = PL_UNIX_FILENAME_PRESPACE; in Curl_ftp_parselist()
746 parser->error = CURLE_FTP_BAD_FILE_LIST; in Curl_ftp_parselist()
753 switch(parser->state.UNIX.sub.filename) { in Curl_ftp_parselist()
756 parser->item_offset = finfo->b_used - 1; in Curl_ftp_parselist()
757 parser->item_length = 1; in Curl_ftp_parselist()
758 parser->state.UNIX.sub.filename = PL_UNIX_FILENAME_NAME; in Curl_ftp_parselist()
762 parser->item_length++; in Curl_ftp_parselist()
764 parser->state.UNIX.sub.filename = PL_UNIX_FILENAME_WINDOWSEOL; in Curl_ftp_parselist()
767 finfo->b_data[parser->item_offset + parser->item_length - 1] = 0; in Curl_ftp_parselist()
768 parser->offsets.filename = parser->item_offset; in Curl_ftp_parselist()
769 parser->state.UNIX.main = PL_UNIX_FILETYPE; in Curl_ftp_parselist()
772 parser->error = result; in Curl_ftp_parselist()
779 finfo->b_data[parser->item_offset + parser->item_length - 1] = 0; in Curl_ftp_parselist()
780 parser->offsets.filename = parser->item_offset; in Curl_ftp_parselist()
781 parser->state.UNIX.main = PL_UNIX_FILETYPE; in Curl_ftp_parselist()
784 parser->error = result; in Curl_ftp_parselist()
789 parser->error = CURLE_FTP_BAD_FILE_LIST; in Curl_ftp_parselist()
796 switch(parser->state.UNIX.sub.symlink) { in Curl_ftp_parselist()
799 parser->item_offset = finfo->b_used - 1; in Curl_ftp_parselist()
800 parser->item_length = 1; in Curl_ftp_parselist()
801 parser->state.UNIX.sub.symlink = PL_UNIX_SYMLINK_NAME; in Curl_ftp_parselist()
805 parser->item_length++; in Curl_ftp_parselist()
807 parser->state.UNIX.sub.symlink = PL_UNIX_SYMLINK_PRETARGET1; in Curl_ftp_parselist()
810 parser->error = CURLE_FTP_BAD_FILE_LIST; in Curl_ftp_parselist()
815 parser->item_length++; in Curl_ftp_parselist()
817 parser->state.UNIX.sub.symlink = PL_UNIX_SYMLINK_PRETARGET2; in Curl_ftp_parselist()
820 parser->error = CURLE_FTP_BAD_FILE_LIST; in Curl_ftp_parselist()
824 parser->state.UNIX.sub.symlink = PL_UNIX_SYMLINK_NAME; in Curl_ftp_parselist()
828 parser->item_length++; in Curl_ftp_parselist()
830 parser->state.UNIX.sub.symlink = PL_UNIX_SYMLINK_PRETARGET3; in Curl_ftp_parselist()
833 parser->error = CURLE_FTP_BAD_FILE_LIST; in Curl_ftp_parselist()
837 parser->state.UNIX.sub.symlink = PL_UNIX_SYMLINK_NAME; in Curl_ftp_parselist()
841 parser->item_length++; in Curl_ftp_parselist()
843 parser->state.UNIX.sub.symlink = PL_UNIX_SYMLINK_PRETARGET4; in Curl_ftp_parselist()
845 finfo->b_data[parser->item_offset + parser->item_length - 4] = 0; in Curl_ftp_parselist()
846 parser->offsets.filename = parser->item_offset; in Curl_ftp_parselist()
847 parser->item_length = 0; in Curl_ftp_parselist()
848 parser->item_offset = 0; in Curl_ftp_parselist()
851 parser->error = CURLE_FTP_BAD_FILE_LIST; in Curl_ftp_parselist()
855 parser->state.UNIX.sub.symlink = PL_UNIX_SYMLINK_NAME; in Curl_ftp_parselist()
860 parser->state.UNIX.sub.symlink = PL_UNIX_SYMLINK_TARGET; in Curl_ftp_parselist()
861 parser->item_offset = finfo->b_used - 1; in Curl_ftp_parselist()
862 parser->item_length = 1; in Curl_ftp_parselist()
865 parser->error = CURLE_FTP_BAD_FILE_LIST; in Curl_ftp_parselist()
870 parser->item_length++; in Curl_ftp_parselist()
872 parser->state.UNIX.sub.symlink = PL_UNIX_SYMLINK_WINDOWSEOL; in Curl_ftp_parselist()
875 finfo->b_data[parser->item_offset + parser->item_length - 1] = 0; in Curl_ftp_parselist()
876 parser->offsets.symlink_target = parser->item_offset; in Curl_ftp_parselist()
879 parser->error = result; in Curl_ftp_parselist()
882 parser->state.UNIX.main = PL_UNIX_FILETYPE; in Curl_ftp_parselist()
887 finfo->b_data[parser->item_offset + parser->item_length - 1] = 0; in Curl_ftp_parselist()
888 parser->offsets.symlink_target = parser->item_offset; in Curl_ftp_parselist()
891 parser->error = result; in Curl_ftp_parselist()
894 parser->state.UNIX.main = PL_UNIX_FILETYPE; in Curl_ftp_parselist()
897 parser->error = CURLE_FTP_BAD_FILE_LIST; in Curl_ftp_parselist()
906 switch(parser->state.NT.main) { in Curl_ftp_parselist()
908 parser->item_length++; in Curl_ftp_parselist()
909 if(parser->item_length < 9) { in Curl_ftp_parselist()
911 parser->error = CURLE_FTP_BAD_FILE_LIST; in Curl_ftp_parselist()
915 else if(parser->item_length == 9) { in Curl_ftp_parselist()
917 parser->state.NT.main = PL_WINNT_TIME; in Curl_ftp_parselist()
918 parser->state.NT.sub.time = PL_WINNT_TIME_PRESPACE; in Curl_ftp_parselist()
921 parser->error = CURLE_FTP_BAD_FILE_LIST; in Curl_ftp_parselist()
926 parser->error = CURLE_FTP_BAD_FILE_LIST; in Curl_ftp_parselist()
931 parser->item_length++; in Curl_ftp_parselist()
932 switch(parser->state.NT.sub.time) { in Curl_ftp_parselist()
935 parser->state.NT.sub.time = PL_WINNT_TIME_TIME; in Curl_ftp_parselist()
940 parser->offsets.time = parser->item_offset; in Curl_ftp_parselist()
941 finfo->b_data[parser->item_offset + parser->item_length -1] = 0; in Curl_ftp_parselist()
942 parser->state.NT.main = PL_WINNT_DIRORSIZE; in Curl_ftp_parselist()
943 parser->state.NT.sub.dirorsize = PL_WINNT_DIRORSIZE_PRESPACE; in Curl_ftp_parselist()
944 parser->item_length = 0; in Curl_ftp_parselist()
947 parser->error = CURLE_FTP_BAD_FILE_LIST; in Curl_ftp_parselist()
954 switch(parser->state.NT.sub.dirorsize) { in Curl_ftp_parselist()
957 parser->item_offset = finfo->b_used - 1; in Curl_ftp_parselist()
958 parser->item_length = 1; in Curl_ftp_parselist()
959 parser->state.NT.sub.dirorsize = PL_WINNT_DIRORSIZE_CONTENT; in Curl_ftp_parselist()
963 parser->item_length ++; in Curl_ftp_parselist()
965 finfo->b_data[parser->item_offset + parser->item_length - 1] = 0; in Curl_ftp_parselist()
966 if(strcmp("<DIR>", finfo->b_data + parser->item_offset) == 0) { in Curl_ftp_parselist()
973 parser->item_offset, in Curl_ftp_parselist()
975 parser->error = CURLE_FTP_BAD_FILE_LIST; in Curl_ftp_parselist()
979 parser->file_data->info.filetype = CURLFILETYPE_FILE; in Curl_ftp_parselist()
982 parser->file_data->info.flags |= CURLFINFOFLAG_KNOWN_SIZE; in Curl_ftp_parselist()
983 parser->item_length = 0; in Curl_ftp_parselist()
984 parser->state.NT.main = PL_WINNT_FILENAME; in Curl_ftp_parselist()
985 parser->state.NT.sub.filename = PL_WINNT_FILENAME_PRESPACE; in Curl_ftp_parselist()
991 switch(parser->state.NT.sub.filename) { in Curl_ftp_parselist()
994 parser->item_offset = finfo->b_used -1; in Curl_ftp_parselist()
995 parser->item_length = 1; in Curl_ftp_parselist()
996 parser->state.NT.sub.filename = PL_WINNT_FILENAME_CONTENT; in Curl_ftp_parselist()
1000 parser->item_length++; in Curl_ftp_parselist()
1002 parser->state.NT.sub.filename = PL_WINNT_FILENAME_WINEOL; in Curl_ftp_parselist()
1006 parser->offsets.filename = parser->item_offset; in Curl_ftp_parselist()
1010 parser->error = result; in Curl_ftp_parselist()
1013 parser->state.NT.main = PL_WINNT_DATE; in Curl_ftp_parselist()
1014 parser->state.NT.sub.filename = PL_WINNT_FILENAME_PRESPACE; in Curl_ftp_parselist()
1019 parser->offsets.filename = parser->item_offset; in Curl_ftp_parselist()
1022 parser->error = result; in Curl_ftp_parselist()
1025 parser->state.NT.main = PL_WINNT_DATE; in Curl_ftp_parselist()
1026 parser->state.NT.sub.filename = PL_WINNT_FILENAME_PRESPACE; in Curl_ftp_parselist()
1029 parser->error = CURLE_FTP_BAD_FILE_LIST; in Curl_ftp_parselist()
1049 if(parser->file_data) { in Curl_ftp_parselist()
1050 Curl_fileinfo_cleanup(parser->file_data); in Curl_ftp_parselist()
1051 parser->file_data = NULL; in Curl_ftp_parselist()