@@ -720,28 +720,47 @@ static void buf_stream_init(struct buf_stream *writer, git_buf *target)
720720 git_buf_clear (target );
721721}
722722
723- int git_filter_list_apply_to_data (
724- git_buf * tgt , git_filter_list * filters , git_buf * src )
723+ int git_filter_list_apply_to_buffer (
724+ git_buf * out ,
725+ git_filter_list * filters ,
726+ const char * in ,
727+ size_t in_len )
725728{
726729 struct buf_stream writer ;
727730 int error ;
728731
729- if ((error = git_buf_sanitize (tgt )) < 0 ||
730- (error = git_buf_sanitize (src )) < 0 )
731- return error ;
732+ if ((error = git_buf_sanitize (out )) < 0 )
733+ return error ;
732734
733- if (!filters ) {
734- git_buf_attach_notowned (tgt , src -> ptr , src -> size );
735+ buf_stream_init (& writer , out );
736+
737+ if ((error = git_filter_list_stream_buffer (filters ,
738+ in , in_len , & writer .parent )) < 0 )
739+ return error ;
740+
741+ GIT_ASSERT (writer .complete );
742+ return error ;
743+ }
744+
745+ int git_filter_list__convert_buf (
746+ git_buf * out ,
747+ git_filter_list * filters ,
748+ git_buf * in )
749+ {
750+ int error ;
751+
752+ if (!filters || git_filter_list_length (filters ) == 0 ) {
753+ git_buf_swap (out , in );
754+ git_buf_dispose (in );
735755 return 0 ;
736756 }
737757
738- buf_stream_init (& writer , tgt );
758+ error = git_filter_list_apply_to_buffer (out , filters ,
759+ in -> ptr , in -> size );
739760
740- if ((error = git_filter_list_stream_data (filters , src ,
741- & writer .parent )) < 0 )
742- return error ;
761+ if (!error )
762+ git_buf_dispose (in );
743763
744- GIT_ASSERT (writer .complete );
745764 return error ;
746765}
747766
@@ -1002,24 +1021,21 @@ int git_filter_list_stream_file(
10021021 return error ;
10031022}
10041023
1005- int git_filter_list_stream_data (
1024+ int git_filter_list_stream_buffer (
10061025 git_filter_list * filters ,
1007- git_buf * data ,
1026+ const char * buffer ,
1027+ size_t len ,
10081028 git_writestream * target )
10091029{
10101030 git_vector filter_streams = GIT_VECTOR_INIT ;
10111031 git_writestream * stream_start ;
10121032 int error , initialized = 0 ;
10131033
1014- if ((error = git_buf_sanitize (data )) < 0 )
1015- return error ;
1016-
10171034 if ((error = stream_list_init (& stream_start , & filter_streams , filters , target )) < 0 )
10181035 goto out ;
10191036 initialized = 1 ;
10201037
1021- if ((error = stream_start -> write (
1022- stream_start , data -> ptr , data -> size )) < 0 )
1038+ if ((error = stream_start -> write (stream_start , buffer , len )) < 0 )
10231039 goto out ;
10241040
10251041out :
@@ -1043,11 +1059,39 @@ int git_filter_list_stream_blob(
10431059 if (filters )
10441060 git_oid_cpy (& filters -> source .oid , git_blob_id (blob ));
10451061
1046- return git_filter_list_stream_data (filters , & in , target );
1062+ return git_filter_list_stream_buffer (filters , in . ptr , in . size , target );
10471063}
10481064
10491065int git_filter_init (git_filter * filter , unsigned int version )
10501066{
10511067 GIT_INIT_STRUCTURE_FROM_TEMPLATE (filter , version , git_filter , GIT_FILTER_INIT );
10521068 return 0 ;
10531069}
1070+
1071+ #ifndef GIT_DEPRECATE_HARD
1072+
1073+ int git_filter_list_stream_data (
1074+ git_filter_list * filters ,
1075+ git_buf * data ,
1076+ git_writestream * target )
1077+ {
1078+ int error ;
1079+
1080+ if ((error = git_buf_sanitize (data )) < 0 )
1081+ return error ;
1082+
1083+ return git_filter_list_stream_buffer (filters , data -> ptr , data -> size , target );
1084+ }
1085+
1086+ int git_filter_list_apply_to_data (
1087+ git_buf * tgt , git_filter_list * filters , git_buf * src )
1088+ {
1089+ int error ;
1090+
1091+ if ((error = git_buf_sanitize (src )) < 0 )
1092+ return error ;
1093+
1094+ return git_filter_list_apply_to_buffer (tgt , filters , src -> ptr , src -> size );
1095+ }
1096+
1097+ #endif
0 commit comments