Lines Matching refs:parser

226   struct ftp_parselist_data *parser = *parserp;  in Curl_ftp_parselist_data_free()  local
227 if(parser) in Curl_ftp_parselist_data_free()
228 Curl_fileinfo_cleanup(parser->file_data); in Curl_ftp_parselist_data_free()
229 free(parser); in Curl_ftp_parselist_data_free()
314 struct ftp_parselist_data *parser = ftpwc->parser; in ftp_pl_insert_finfo() local
320 finfo->filename = str + parser->offsets.filename; in ftp_pl_insert_finfo()
321 finfo->strings.group = parser->offsets.group ? in ftp_pl_insert_finfo()
322 str + parser->offsets.group : NULL; in ftp_pl_insert_finfo()
323 finfo->strings.perm = parser->offsets.perm ? in ftp_pl_insert_finfo()
324 str + parser->offsets.perm : NULL; in ftp_pl_insert_finfo()
325 finfo->strings.target = parser->offsets.symlink_target ? in ftp_pl_insert_finfo()
326 str + parser->offsets.symlink_target : NULL; in ftp_pl_insert_finfo()
327 finfo->strings.time = str + parser->offsets.time; in ftp_pl_insert_finfo()
328 finfo->strings.user = parser->offsets.user ? in ftp_pl_insert_finfo()
329 str + parser->offsets.user : NULL; in ftp_pl_insert_finfo()
358 ftpwc->parser->file_data = NULL; in ftp_pl_insert_finfo()
370 struct ftp_parselist_data *parser = ftpwc->parser; in Curl_ftp_parselist() local
375 if(parser->error) { /* error in previous call */ in Curl_ftp_parselist()
385 if(parser->os_type == OS_TYPE_UNKNOWN && bufflen > 0) { in Curl_ftp_parselist()
387 parser->os_type = ISDIGIT(buffer[0]) ? OS_TYPE_WIN_NT : OS_TYPE_UNIX; in Curl_ftp_parselist()
396 if(!parser->file_data) { /* tmp file data is not allocated yet */ in Curl_ftp_parselist()
397 parser->file_data = Curl_fileinfo_alloc(); in Curl_ftp_parselist()
398 if(!parser->file_data) { in Curl_ftp_parselist()
399 parser->error = CURLE_OUT_OF_MEMORY; in Curl_ftp_parselist()
402 parser->item_offset = 0; in Curl_ftp_parselist()
403 parser->item_length = 0; in Curl_ftp_parselist()
404 Curl_dyn_init(&parser->file_data->buf, MAX_FTPLIST_BUFFER); in Curl_ftp_parselist()
407 infop = parser->file_data; in Curl_ftp_parselist()
411 parser->error = CURLE_OUT_OF_MEMORY; in Curl_ftp_parselist()
417 switch(parser->os_type) { in Curl_ftp_parselist()
419 switch(parser->state.UNIX.main) { in Curl_ftp_parselist()
421 switch(parser->state.UNIX.sub.total_dirsize) { in Curl_ftp_parselist()
424 parser->state.UNIX.sub.total_dirsize = PL_UNIX_TOTALSIZE_READING; in Curl_ftp_parselist()
425 parser->item_length++; in Curl_ftp_parselist()
428 parser->state.UNIX.main = PL_UNIX_FILETYPE; in Curl_ftp_parselist()
435 parser->item_length++; in Curl_ftp_parselist()
437 parser->item_length--; in Curl_ftp_parselist()
441 mem[parser->item_length - 1] = 0; in Curl_ftp_parselist()
451 parser->error = CURLE_FTP_BAD_FILE_LIST; in Curl_ftp_parselist()
454 parser->state.UNIX.main = PL_UNIX_FILETYPE; in Curl_ftp_parselist()
458 parser->error = CURLE_FTP_BAD_FILE_LIST; in Curl_ftp_parselist()
492 parser->error = CURLE_FTP_BAD_FILE_LIST; in Curl_ftp_parselist()
495 parser->state.UNIX.main = PL_UNIX_PERMISSION; in Curl_ftp_parselist()
496 parser->item_length = 0; in Curl_ftp_parselist()
497 parser->item_offset = 1; in Curl_ftp_parselist()
500 parser->item_length++; in Curl_ftp_parselist()
501 if(parser->item_length <= 9) { in Curl_ftp_parselist()
503 parser->error = CURLE_FTP_BAD_FILE_LIST; in Curl_ftp_parselist()
507 else if(parser->item_length == 10) { in Curl_ftp_parselist()
510 parser->error = CURLE_FTP_BAD_FILE_LIST; in Curl_ftp_parselist()
514 perm = ftp_pl_get_permission(mem + parser->item_offset); in Curl_ftp_parselist()
516 parser->error = CURLE_FTP_BAD_FILE_LIST; in Curl_ftp_parselist()
519 parser->file_data->info.flags |= CURLFINFOFLAG_KNOWN_PERM; in Curl_ftp_parselist()
520 parser->file_data->info.perm = perm; in Curl_ftp_parselist()
521 parser->offsets.perm = parser->item_offset; in Curl_ftp_parselist()
523 parser->item_length = 0; in Curl_ftp_parselist()
524 parser->state.UNIX.main = PL_UNIX_HLINKS; in Curl_ftp_parselist()
525 parser->state.UNIX.sub.hlinks = PL_UNIX_HLINKS_PRESPACE; in Curl_ftp_parselist()
529 switch(parser->state.UNIX.sub.hlinks) { in Curl_ftp_parselist()
533 parser->item_offset = len - 1; in Curl_ftp_parselist()
534 parser->item_length = 1; in Curl_ftp_parselist()
535 parser->state.UNIX.sub.hlinks = PL_UNIX_HLINKS_NUMBER; in Curl_ftp_parselist()
538 parser->error = CURLE_FTP_BAD_FILE_LIST; in Curl_ftp_parselist()
544 parser->item_length ++; in Curl_ftp_parselist()
548 mem[parser->item_offset + parser->item_length - 1] = 0; in Curl_ftp_parselist()
549 hlinks = strtol(mem + parser->item_offset, &p, 10); in Curl_ftp_parselist()
551 parser->file_data->info.flags |= CURLFINFOFLAG_KNOWN_HLINKCOUNT; in Curl_ftp_parselist()
552 parser->file_data->info.hardlinks = hlinks; in Curl_ftp_parselist()
554 parser->item_length = 0; in Curl_ftp_parselist()
555 parser->item_offset = 0; in Curl_ftp_parselist()
556 parser->state.UNIX.main = PL_UNIX_USER; in Curl_ftp_parselist()
557 parser->state.UNIX.sub.user = PL_UNIX_USER_PRESPACE; in Curl_ftp_parselist()
560 parser->error = CURLE_FTP_BAD_FILE_LIST; in Curl_ftp_parselist()
567 switch(parser->state.UNIX.sub.user) { in Curl_ftp_parselist()
570 parser->item_offset = len - 1; in Curl_ftp_parselist()
571 parser->item_length = 1; in Curl_ftp_parselist()
572 parser->state.UNIX.sub.user = PL_UNIX_USER_PARSING; in Curl_ftp_parselist()
576 parser->item_length++; in Curl_ftp_parselist()
578 mem[parser->item_offset + parser->item_length - 1] = 0; in Curl_ftp_parselist()
579 parser->offsets.user = parser->item_offset; in Curl_ftp_parselist()
580 parser->state.UNIX.main = PL_UNIX_GROUP; in Curl_ftp_parselist()
581 parser->state.UNIX.sub.group = PL_UNIX_GROUP_PRESPACE; in Curl_ftp_parselist()
582 parser->item_offset = 0; in Curl_ftp_parselist()
583 parser->item_length = 0; in Curl_ftp_parselist()
589 switch(parser->state.UNIX.sub.group) { in Curl_ftp_parselist()
592 parser->item_offset = len - 1; in Curl_ftp_parselist()
593 parser->item_length = 1; in Curl_ftp_parselist()
594 parser->state.UNIX.sub.group = PL_UNIX_GROUP_NAME; in Curl_ftp_parselist()
598 parser->item_length++; in Curl_ftp_parselist()
600 mem[parser->item_offset + parser->item_length - 1] = 0; in Curl_ftp_parselist()
601 parser->offsets.group = parser->item_offset; in Curl_ftp_parselist()
602 parser->state.UNIX.main = PL_UNIX_SIZE; in Curl_ftp_parselist()
603 parser->state.UNIX.sub.size = PL_UNIX_SIZE_PRESPACE; in Curl_ftp_parselist()
604 parser->item_offset = 0; in Curl_ftp_parselist()
605 parser->item_length = 0; in Curl_ftp_parselist()
611 switch(parser->state.UNIX.sub.size) { in Curl_ftp_parselist()
615 parser->item_offset = len - 1; in Curl_ftp_parselist()
616 parser->item_length = 1; in Curl_ftp_parselist()
617 parser->state.UNIX.sub.size = PL_UNIX_SIZE_NUMBER; in Curl_ftp_parselist()
620 parser->error = CURLE_FTP_BAD_FILE_LIST; in Curl_ftp_parselist()
626 parser->item_length++; in Curl_ftp_parselist()
630 mem[parser->item_offset + parser->item_length - 1] = 0; in Curl_ftp_parselist()
631 if(!curlx_strtoofft(mem + parser->item_offset, in Curl_ftp_parselist()
635 parser->file_data->info.flags |= CURLFINFOFLAG_KNOWN_SIZE; in Curl_ftp_parselist()
636 parser->file_data->info.size = fsize; in Curl_ftp_parselist()
638 parser->item_length = 0; in Curl_ftp_parselist()
639 parser->item_offset = 0; in Curl_ftp_parselist()
640 parser->state.UNIX.main = PL_UNIX_TIME; in Curl_ftp_parselist()
641 parser->state.UNIX.sub.time = PL_UNIX_TIME_PREPART1; in Curl_ftp_parselist()
645 parser->error = CURLE_FTP_BAD_FILE_LIST; in Curl_ftp_parselist()
652 switch(parser->state.UNIX.sub.time) { in Curl_ftp_parselist()
656 parser->item_offset = len -1; in Curl_ftp_parselist()
657 parser->item_length = 1; in Curl_ftp_parselist()
658 parser->state.UNIX.sub.time = PL_UNIX_TIME_PART1; in Curl_ftp_parselist()
661 parser->error = CURLE_FTP_BAD_FILE_LIST; in Curl_ftp_parselist()
667 parser->item_length++; in Curl_ftp_parselist()
669 parser->state.UNIX.sub.time = PL_UNIX_TIME_PREPART2; in Curl_ftp_parselist()
672 parser->error = CURLE_FTP_BAD_FILE_LIST; in Curl_ftp_parselist()
677 parser->item_length++; in Curl_ftp_parselist()
680 parser->state.UNIX.sub.time = PL_UNIX_TIME_PART2; in Curl_ftp_parselist()
683 parser->error = CURLE_FTP_BAD_FILE_LIST; in Curl_ftp_parselist()
689 parser->item_length++; in Curl_ftp_parselist()
691 parser->state.UNIX.sub.time = PL_UNIX_TIME_PREPART3; in Curl_ftp_parselist()
694 parser->error = CURLE_FTP_BAD_FILE_LIST; in Curl_ftp_parselist()
699 parser->item_length++; in Curl_ftp_parselist()
702 parser->state.UNIX.sub.time = PL_UNIX_TIME_PART3; in Curl_ftp_parselist()
705 parser->error = CURLE_FTP_BAD_FILE_LIST; in Curl_ftp_parselist()
711 parser->item_length++; in Curl_ftp_parselist()
713 mem[parser->item_offset + parser->item_length -1] = 0; in Curl_ftp_parselist()
714 parser->offsets.time = parser->item_offset; in Curl_ftp_parselist()
721 parser->state.UNIX.main = PL_UNIX_SYMLINK; in Curl_ftp_parselist()
722 parser->state.UNIX.sub.symlink = PL_UNIX_SYMLINK_PRESPACE; in Curl_ftp_parselist()
725 parser->state.UNIX.main = PL_UNIX_FILENAME; in Curl_ftp_parselist()
726 parser->state.UNIX.sub.filename = PL_UNIX_FILENAME_PRESPACE; in Curl_ftp_parselist()
730 parser->error = CURLE_FTP_BAD_FILE_LIST; in Curl_ftp_parselist()
737 switch(parser->state.UNIX.sub.filename) { in Curl_ftp_parselist()
740 parser->item_offset = len - 1; in Curl_ftp_parselist()
741 parser->item_length = 1; in Curl_ftp_parselist()
742 parser->state.UNIX.sub.filename = PL_UNIX_FILENAME_NAME; in Curl_ftp_parselist()
746 parser->item_length++; in Curl_ftp_parselist()
748 parser->state.UNIX.sub.filename = PL_UNIX_FILENAME_WINDOWSEOL; in Curl_ftp_parselist()
751 mem[parser->item_offset + parser->item_length - 1] = 0; in Curl_ftp_parselist()
752 parser->offsets.filename = parser->item_offset; in Curl_ftp_parselist()
753 parser->state.UNIX.main = PL_UNIX_FILETYPE; in Curl_ftp_parselist()
756 parser->error = result; in Curl_ftp_parselist()
763 mem[parser->item_offset + parser->item_length - 1] = 0; in Curl_ftp_parselist()
764 parser->offsets.filename = parser->item_offset; in Curl_ftp_parselist()
765 parser->state.UNIX.main = PL_UNIX_FILETYPE; in Curl_ftp_parselist()
768 parser->error = result; in Curl_ftp_parselist()
773 parser->error = CURLE_FTP_BAD_FILE_LIST; in Curl_ftp_parselist()
780 switch(parser->state.UNIX.sub.symlink) { in Curl_ftp_parselist()
783 parser->item_offset = len - 1; in Curl_ftp_parselist()
784 parser->item_length = 1; in Curl_ftp_parselist()
785 parser->state.UNIX.sub.symlink = PL_UNIX_SYMLINK_NAME; in Curl_ftp_parselist()
789 parser->item_length++; in Curl_ftp_parselist()
791 parser->state.UNIX.sub.symlink = PL_UNIX_SYMLINK_PRETARGET1; in Curl_ftp_parselist()
794 parser->error = CURLE_FTP_BAD_FILE_LIST; in Curl_ftp_parselist()
799 parser->item_length++; in Curl_ftp_parselist()
801 parser->state.UNIX.sub.symlink = PL_UNIX_SYMLINK_PRETARGET2; in Curl_ftp_parselist()
804 parser->error = CURLE_FTP_BAD_FILE_LIST; in Curl_ftp_parselist()
808 parser->state.UNIX.sub.symlink = PL_UNIX_SYMLINK_NAME; in Curl_ftp_parselist()
812 parser->item_length++; in Curl_ftp_parselist()
814 parser->state.UNIX.sub.symlink = PL_UNIX_SYMLINK_PRETARGET3; in Curl_ftp_parselist()
817 parser->error = CURLE_FTP_BAD_FILE_LIST; in Curl_ftp_parselist()
821 parser->state.UNIX.sub.symlink = PL_UNIX_SYMLINK_NAME; in Curl_ftp_parselist()
825 parser->item_length++; in Curl_ftp_parselist()
827 parser->state.UNIX.sub.symlink = PL_UNIX_SYMLINK_PRETARGET4; in Curl_ftp_parselist()
829 mem[parser->item_offset + parser->item_length - 4] = 0; in Curl_ftp_parselist()
830 parser->offsets.filename = parser->item_offset; in Curl_ftp_parselist()
831 parser->item_length = 0; in Curl_ftp_parselist()
832 parser->item_offset = 0; in Curl_ftp_parselist()
835 parser->error = CURLE_FTP_BAD_FILE_LIST; in Curl_ftp_parselist()
839 parser->state.UNIX.sub.symlink = PL_UNIX_SYMLINK_NAME; in Curl_ftp_parselist()
844 parser->state.UNIX.sub.symlink = PL_UNIX_SYMLINK_TARGET; in Curl_ftp_parselist()
845 parser->item_offset = len - 1; in Curl_ftp_parselist()
846 parser->item_length = 1; in Curl_ftp_parselist()
849 parser->error = CURLE_FTP_BAD_FILE_LIST; in Curl_ftp_parselist()
854 parser->item_length++; in Curl_ftp_parselist()
856 parser->state.UNIX.sub.symlink = PL_UNIX_SYMLINK_WINDOWSEOL; in Curl_ftp_parselist()
859 mem[parser->item_offset + parser->item_length - 1] = 0; in Curl_ftp_parselist()
860 parser->offsets.symlink_target = parser->item_offset; in Curl_ftp_parselist()
863 parser->error = result; in Curl_ftp_parselist()
866 parser->state.UNIX.main = PL_UNIX_FILETYPE; in Curl_ftp_parselist()
871 mem[parser->item_offset + parser->item_length - 1] = 0; in Curl_ftp_parselist()
872 parser->offsets.symlink_target = parser->item_offset; in Curl_ftp_parselist()
875 parser->error = result; in Curl_ftp_parselist()
878 parser->state.UNIX.main = PL_UNIX_FILETYPE; in Curl_ftp_parselist()
881 parser->error = CURLE_FTP_BAD_FILE_LIST; in Curl_ftp_parselist()
890 switch(parser->state.NT.main) { in Curl_ftp_parselist()
892 parser->item_length++; in Curl_ftp_parselist()
893 if(parser->item_length < 9) { in Curl_ftp_parselist()
895 parser->error = CURLE_FTP_BAD_FILE_LIST; in Curl_ftp_parselist()
899 else if(parser->item_length == 9) { in Curl_ftp_parselist()
901 parser->state.NT.main = PL_WINNT_TIME; in Curl_ftp_parselist()
902 parser->state.NT.sub.time = PL_WINNT_TIME_PRESPACE; in Curl_ftp_parselist()
905 parser->error = CURLE_FTP_BAD_FILE_LIST; in Curl_ftp_parselist()
910 parser->error = CURLE_FTP_BAD_FILE_LIST; in Curl_ftp_parselist()
915 parser->item_length++; in Curl_ftp_parselist()
916 switch(parser->state.NT.sub.time) { in Curl_ftp_parselist()
919 parser->state.NT.sub.time = PL_WINNT_TIME_TIME; in Curl_ftp_parselist()
924 parser->offsets.time = parser->item_offset; in Curl_ftp_parselist()
925 mem[parser->item_offset + parser->item_length -1] = 0; in Curl_ftp_parselist()
926 parser->state.NT.main = PL_WINNT_DIRORSIZE; in Curl_ftp_parselist()
927 parser->state.NT.sub.dirorsize = PL_WINNT_DIRORSIZE_PRESPACE; in Curl_ftp_parselist()
928 parser->item_length = 0; in Curl_ftp_parselist()
931 parser->error = CURLE_FTP_BAD_FILE_LIST; in Curl_ftp_parselist()
938 switch(parser->state.NT.sub.dirorsize) { in Curl_ftp_parselist()
941 parser->item_offset = len - 1; in Curl_ftp_parselist()
942 parser->item_length = 1; in Curl_ftp_parselist()
943 parser->state.NT.sub.dirorsize = PL_WINNT_DIRORSIZE_CONTENT; in Curl_ftp_parselist()
947 parser->item_length ++; in Curl_ftp_parselist()
949 mem[parser->item_offset + parser->item_length - 1] = 0; in Curl_ftp_parselist()
950 if(strcmp("<DIR>", mem + parser->item_offset) == 0) { in Curl_ftp_parselist()
957 parser->item_offset, in Curl_ftp_parselist()
959 parser->error = CURLE_FTP_BAD_FILE_LIST; in Curl_ftp_parselist()
963 parser->file_data->info.filetype = CURLFILETYPE_FILE; in Curl_ftp_parselist()
966 parser->file_data->info.flags |= CURLFINFOFLAG_KNOWN_SIZE; in Curl_ftp_parselist()
967 parser->item_length = 0; in Curl_ftp_parselist()
968 parser->state.NT.main = PL_WINNT_FILENAME; in Curl_ftp_parselist()
969 parser->state.NT.sub.filename = PL_WINNT_FILENAME_PRESPACE; in Curl_ftp_parselist()
975 switch(parser->state.NT.sub.filename) { in Curl_ftp_parselist()
978 parser->item_offset = len -1; in Curl_ftp_parselist()
979 parser->item_length = 1; in Curl_ftp_parselist()
980 parser->state.NT.sub.filename = PL_WINNT_FILENAME_CONTENT; in Curl_ftp_parselist()
984 parser->item_length++; in Curl_ftp_parselist()
986 parser->state.NT.sub.filename = PL_WINNT_FILENAME_WINEOL; in Curl_ftp_parselist()
990 parser->offsets.filename = parser->item_offset; in Curl_ftp_parselist()
994 parser->error = result; in Curl_ftp_parselist()
997 parser->state.NT.main = PL_WINNT_DATE; in Curl_ftp_parselist()
998 parser->state.NT.sub.filename = PL_WINNT_FILENAME_PRESPACE; in Curl_ftp_parselist()
1003 parser->offsets.filename = parser->item_offset; in Curl_ftp_parselist()
1006 parser->error = result; in Curl_ftp_parselist()
1009 parser->state.NT.main = PL_WINNT_DATE; in Curl_ftp_parselist()
1010 parser->state.NT.sub.filename = PL_WINNT_FILENAME_PRESPACE; in Curl_ftp_parselist()
1013 parser->error = CURLE_FTP_BAD_FILE_LIST; in Curl_ftp_parselist()
1033 if(parser->file_data) { in Curl_ftp_parselist()
1034 Curl_fileinfo_cleanup(parser->file_data); in Curl_ftp_parselist()
1035 parser->file_data = NULL; in Curl_ftp_parselist()