1251881Speter/* 2251881Speter * deprecated.c: holding file for all deprecated APIs. 3251881Speter * "we can't lose 'em, but we can shun 'em!" 4251881Speter * 5251881Speter * ==================================================================== 6251881Speter * Licensed to the Apache Software Foundation (ASF) under one 7251881Speter * or more contributor license agreements. See the NOTICE file 8251881Speter * distributed with this work for additional information 9251881Speter * regarding copyright ownership. The ASF licenses this file 10251881Speter * to you under the Apache License, Version 2.0 (the 11251881Speter * "License"); you may not use this file except in compliance 12251881Speter * with the License. You may obtain a copy of the License at 13251881Speter * 14251881Speter * http://www.apache.org/licenses/LICENSE-2.0 15251881Speter * 16251881Speter * Unless required by applicable law or agreed to in writing, 17251881Speter * software distributed under the License is distributed on an 18251881Speter * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 19251881Speter * KIND, either express or implied. See the License for the 20251881Speter * specific language governing permissions and limitations 21251881Speter * under the License. 22251881Speter * ==================================================================== 23251881Speter */ 24251881Speter 25251881Speter/* ==================================================================== */ 26251881Speter 27251881Speter 28251881Speter 29251881Speter/*** Includes. ***/ 30251881Speter 31251881Speter/* We define this here to remove any further warnings about the usage of 32251881Speter deprecated functions in this file. */ 33251881Speter#define SVN_DEPRECATED 34251881Speter 35251881Speter#include "svn_diff.h" 36251881Speter#include "svn_utf.h" 37251881Speter 38251881Speter#include "svn_private_config.h" 39251881Speter 40251881Speter 41251881Speter 42251881Speter 43251881Speter/*** Code. ***/ 44251881Speterstruct fns_wrapper_baton 45251881Speter{ 46251881Speter /* We put the old baton in front of this one, so that we can still use 47251881Speter this baton in place of the old. This prevents us from having to 48251881Speter implement simple wrappers around each member of diff_fns_t. */ 49251881Speter void *old_baton; 50251881Speter const svn_diff_fns_t *vtable; 51251881Speter}; 52251881Speter 53251881Speterstatic svn_error_t * 54251881Speterdatasources_open(void *baton, 55251881Speter apr_off_t *prefix_lines, 56251881Speter apr_off_t *suffix_lines, 57251881Speter const svn_diff_datasource_e *datasources, 58251881Speter apr_size_t datasource_len) 59251881Speter{ 60251881Speter struct fns_wrapper_baton *fwb = baton; 61251881Speter apr_size_t i; 62251881Speter 63251881Speter /* Just iterate over the datasources, using the old singular version. */ 64251881Speter for (i = 0; i < datasource_len; i++) 65251881Speter { 66251881Speter SVN_ERR(fwb->vtable->datasource_open(fwb->old_baton, datasources[i])); 67251881Speter } 68251881Speter 69251881Speter /* Don't claim any prefix or suffix matches. */ 70251881Speter *prefix_lines = 0; 71251881Speter *suffix_lines = 0; 72251881Speter 73251881Speter return SVN_NO_ERROR; 74251881Speter} 75251881Speter 76251881Speterstatic svn_error_t * 77251881Speterdatasource_close(void *baton, 78251881Speter svn_diff_datasource_e datasource) 79251881Speter{ 80251881Speter struct fns_wrapper_baton *fwb = baton; 81251881Speter return fwb->vtable->datasource_close(fwb->old_baton, datasource); 82251881Speter} 83251881Speter 84251881Speterstatic svn_error_t * 85251881Speterdatasource_get_next_token(apr_uint32_t *hash, 86251881Speter void **token, 87251881Speter void *baton, 88251881Speter svn_diff_datasource_e datasource) 89251881Speter{ 90251881Speter struct fns_wrapper_baton *fwb = baton; 91251881Speter return fwb->vtable->datasource_get_next_token(hash, token, fwb->old_baton, 92251881Speter datasource); 93251881Speter} 94251881Speter 95251881Speterstatic svn_error_t * 96251881Spetertoken_compare(void *baton, 97251881Speter void *ltoken, 98251881Speter void *rtoken, 99251881Speter int *compare) 100251881Speter{ 101251881Speter struct fns_wrapper_baton *fwb = baton; 102251881Speter return fwb->vtable->token_compare(fwb->old_baton, ltoken, rtoken, compare); 103251881Speter} 104251881Speter 105251881Speterstatic void 106251881Spetertoken_discard(void *baton, 107251881Speter void *token) 108251881Speter{ 109251881Speter struct fns_wrapper_baton *fwb = baton; 110251881Speter fwb->vtable->token_discard(fwb->old_baton, token); 111251881Speter} 112251881Speter 113251881Speterstatic void 114251881Spetertoken_discard_all(void *baton) 115251881Speter{ 116251881Speter struct fns_wrapper_baton *fwb = baton; 117251881Speter fwb->vtable->token_discard_all(fwb->old_baton); 118251881Speter} 119251881Speter 120251881Speter 121251881Speterstatic void 122251881Speterwrap_diff_fns(svn_diff_fns2_t **diff_fns2, 123251881Speter struct fns_wrapper_baton **baton2, 124251881Speter const svn_diff_fns_t *diff_fns, 125251881Speter void *baton, 126251881Speter apr_pool_t *result_pool) 127251881Speter{ 128251881Speter /* Initialize the return vtable. */ 129251881Speter *diff_fns2 = apr_palloc(result_pool, sizeof(**diff_fns2)); 130251881Speter 131251881Speter (*diff_fns2)->datasources_open = datasources_open; 132251881Speter (*diff_fns2)->datasource_close = datasource_close; 133251881Speter (*diff_fns2)->datasource_get_next_token = datasource_get_next_token; 134251881Speter (*diff_fns2)->token_compare = token_compare; 135251881Speter (*diff_fns2)->token_discard = token_discard; 136251881Speter (*diff_fns2)->token_discard_all = token_discard_all; 137251881Speter 138251881Speter /* Initialize the wrapper baton. */ 139251881Speter *baton2 = apr_palloc(result_pool, sizeof (**baton2)); 140251881Speter (*baton2)->old_baton = baton; 141251881Speter (*baton2)->vtable = diff_fns; 142251881Speter} 143251881Speter 144251881Speter 145251881Speter/*** From diff_file.c ***/ 146289180Speter 147251881Spetersvn_error_t * 148289180Spetersvn_diff_file_output_unified3(svn_stream_t *output_stream, 149289180Speter svn_diff_t *diff, 150289180Speter const char *original_path, 151289180Speter const char *modified_path, 152289180Speter const char *original_header, 153289180Speter const char *modified_header, 154289180Speter const char *header_encoding, 155289180Speter const char *relative_to_dir, 156289180Speter svn_boolean_t show_c_function, 157289180Speter apr_pool_t *pool) 158289180Speter{ 159289180Speter return svn_error_trace( 160289180Speter svn_diff_file_output_unified4(output_stream, 161289180Speter diff, 162289180Speter original_path, 163289180Speter modified_path, 164289180Speter original_header, 165289180Speter modified_header, 166289180Speter header_encoding, 167289180Speter relative_to_dir, 168289180Speter show_c_function, 169289180Speter -1 /* context_size */, 170289180Speter NULL, NULL, /* cancel */ 171289180Speter pool)); 172289180Speter} 173289180Speter 174289180Spetersvn_error_t * 175251881Spetersvn_diff_file_output_unified2(svn_stream_t *output_stream, 176251881Speter svn_diff_t *diff, 177251881Speter const char *original_path, 178251881Speter const char *modified_path, 179251881Speter const char *original_header, 180251881Speter const char *modified_header, 181251881Speter const char *header_encoding, 182251881Speter apr_pool_t *pool) 183251881Speter{ 184251881Speter return svn_diff_file_output_unified3(output_stream, diff, 185251881Speter original_path, modified_path, 186251881Speter original_header, modified_header, 187251881Speter header_encoding, NULL, FALSE, pool); 188251881Speter} 189251881Speter 190251881Spetersvn_error_t * 191251881Spetersvn_diff_file_output_unified(svn_stream_t *output_stream, 192251881Speter svn_diff_t *diff, 193251881Speter const char *original_path, 194251881Speter const char *modified_path, 195251881Speter const char *original_header, 196251881Speter const char *modified_header, 197251881Speter apr_pool_t *pool) 198251881Speter{ 199251881Speter return svn_diff_file_output_unified2(output_stream, diff, 200251881Speter original_path, modified_path, 201251881Speter original_header, modified_header, 202251881Speter SVN_APR_LOCALE_CHARSET, pool); 203251881Speter} 204251881Speter 205251881Spetersvn_error_t * 206251881Spetersvn_diff_file_diff(svn_diff_t **diff, 207251881Speter const char *original, 208251881Speter const char *modified, 209251881Speter apr_pool_t *pool) 210251881Speter{ 211251881Speter return svn_diff_file_diff_2(diff, original, modified, 212251881Speter svn_diff_file_options_create(pool), pool); 213251881Speter} 214251881Speter 215251881Spetersvn_error_t * 216251881Spetersvn_diff_file_diff3(svn_diff_t **diff, 217251881Speter const char *original, 218251881Speter const char *modified, 219251881Speter const char *latest, 220251881Speter apr_pool_t *pool) 221251881Speter{ 222251881Speter return svn_diff_file_diff3_2(diff, original, modified, latest, 223251881Speter svn_diff_file_options_create(pool), pool); 224251881Speter} 225251881Speter 226251881Spetersvn_error_t * 227251881Spetersvn_diff_file_diff4(svn_diff_t **diff, 228251881Speter const char *original, 229251881Speter const char *modified, 230251881Speter const char *latest, 231251881Speter const char *ancestor, 232251881Speter apr_pool_t *pool) 233251881Speter{ 234251881Speter return svn_diff_file_diff4_2(diff, original, modified, latest, ancestor, 235251881Speter svn_diff_file_options_create(pool), pool); 236251881Speter} 237251881Speter 238251881Spetersvn_error_t * 239251881Spetersvn_diff_file_output_merge(svn_stream_t *output_stream, 240251881Speter svn_diff_t *diff, 241251881Speter const char *original_path, 242251881Speter const char *modified_path, 243251881Speter const char *latest_path, 244251881Speter const char *conflict_original, 245251881Speter const char *conflict_modified, 246251881Speter const char *conflict_latest, 247251881Speter const char *conflict_separator, 248251881Speter svn_boolean_t display_original_in_conflict, 249251881Speter svn_boolean_t display_resolved_conflicts, 250251881Speter apr_pool_t *pool) 251251881Speter{ 252251881Speter svn_diff_conflict_display_style_t style = 253251881Speter svn_diff_conflict_display_modified_latest; 254251881Speter 255251881Speter if (display_resolved_conflicts) 256251881Speter style = svn_diff_conflict_display_resolved_modified_latest; 257251881Speter 258251881Speter if (display_original_in_conflict) 259251881Speter style = svn_diff_conflict_display_modified_original_latest; 260251881Speter 261251881Speter return svn_diff_file_output_merge2(output_stream, 262251881Speter diff, 263251881Speter original_path, 264251881Speter modified_path, 265251881Speter latest_path, 266251881Speter conflict_original, 267251881Speter conflict_modified, 268251881Speter conflict_latest, 269251881Speter conflict_separator, 270251881Speter style, 271251881Speter pool); 272251881Speter} 273251881Speter 274289180Spetersvn_error_t * 275289180Spetersvn_diff_file_output_merge2(svn_stream_t *output_stream, 276289180Speter svn_diff_t *diff, 277289180Speter const char *original_path, 278289180Speter const char *modified_path, 279289180Speter const char *latest_path, 280289180Speter const char *conflict_original, 281289180Speter const char *conflict_modified, 282289180Speter const char *conflict_latest, 283289180Speter const char *conflict_separator, 284289180Speter svn_diff_conflict_display_style_t conflict_style, 285289180Speter apr_pool_t *pool) 286289180Speter{ 287289180Speter return svn_error_trace(svn_diff_file_output_merge3(output_stream, 288289180Speter diff, original_path, 289289180Speter modified_path, 290289180Speter latest_path, 291289180Speter conflict_original, 292289180Speter conflict_modified, 293289180Speter conflict_latest, 294289180Speter conflict_separator, 295289180Speter conflict_style, 296289180Speter NULL, NULL, /* cancel */ 297289180Speter pool)); 298289180Speter} 299251881Speter 300251881Speter/*** From diff.c ***/ 301251881Spetersvn_error_t * 302251881Spetersvn_diff_diff(svn_diff_t **diff, 303251881Speter void *diff_baton, 304251881Speter const svn_diff_fns_t *vtable, 305251881Speter apr_pool_t *pool) 306251881Speter{ 307251881Speter svn_diff_fns2_t *diff_fns2; 308251881Speter struct fns_wrapper_baton *fwb; 309251881Speter 310251881Speter wrap_diff_fns(&diff_fns2, &fwb, vtable, diff_baton, pool); 311251881Speter return svn_diff_diff_2(diff, fwb, diff_fns2, pool); 312251881Speter} 313251881Speter 314251881Speter 315251881Speter/*** From diff3.c ***/ 316251881Spetersvn_error_t * 317251881Spetersvn_diff_diff3(svn_diff_t **diff, 318251881Speter void *diff_baton, 319251881Speter const svn_diff_fns_t *vtable, 320251881Speter apr_pool_t *pool) 321251881Speter{ 322251881Speter svn_diff_fns2_t *diff_fns2; 323251881Speter struct fns_wrapper_baton *fwb; 324251881Speter 325251881Speter wrap_diff_fns(&diff_fns2, &fwb, vtable, diff_baton, pool); 326251881Speter return svn_diff_diff3_2(diff, fwb, diff_fns2, pool); 327251881Speter} 328251881Speter 329251881Speter 330251881Speter/*** From diff4.c ***/ 331251881Spetersvn_error_t * 332251881Spetersvn_diff_diff4(svn_diff_t **diff, 333251881Speter void *diff_baton, 334251881Speter const svn_diff_fns_t *vtable, 335251881Speter apr_pool_t *pool) 336251881Speter{ 337251881Speter svn_diff_fns2_t *diff_fns2; 338251881Speter struct fns_wrapper_baton *fwb; 339251881Speter 340251881Speter wrap_diff_fns(&diff_fns2, &fwb, vtable, diff_baton, pool); 341251881Speter return svn_diff_diff4_2(diff, fwb, diff_fns2, pool); 342251881Speter} 343289180Speter 344289180Speter/*** From util.c ***/ 345289180Spetersvn_error_t * 346289180Spetersvn_diff_output(svn_diff_t *diff, 347289180Speter void *output_baton, 348289180Speter const svn_diff_output_fns_t *output_fns) 349289180Speter{ 350289180Speter return svn_error_trace(svn_diff_output2(diff, output_baton, output_fns, 351289180Speter NULL, NULL /* cancel */)); 352289180Speter} 353289180Speter 354289180Speter/*** From diff_memory.c ***/ 355289180Spetersvn_error_t * 356289180Spetersvn_diff_mem_string_output_merge(svn_stream_t *output_stream, 357289180Speter svn_diff_t *diff, 358289180Speter const svn_string_t *original, 359289180Speter const svn_string_t *modified, 360289180Speter const svn_string_t *latest, 361289180Speter const char *conflict_original, 362289180Speter const char *conflict_modified, 363289180Speter const char *conflict_latest, 364289180Speter const char *conflict_separator, 365289180Speter svn_boolean_t display_original_in_conflict, 366289180Speter svn_boolean_t display_resolved_conflicts, 367289180Speter apr_pool_t *pool) 368289180Speter{ 369289180Speter svn_diff_conflict_display_style_t style = 370289180Speter svn_diff_conflict_display_modified_latest; 371289180Speter 372289180Speter if (display_resolved_conflicts) 373289180Speter style = svn_diff_conflict_display_resolved_modified_latest; 374289180Speter 375289180Speter if (display_original_in_conflict) 376289180Speter style = svn_diff_conflict_display_modified_original_latest; 377289180Speter 378289180Speter return svn_diff_mem_string_output_merge2(output_stream, 379289180Speter diff, 380289180Speter original, 381289180Speter modified, 382289180Speter latest, 383289180Speter conflict_original, 384289180Speter conflict_modified, 385289180Speter conflict_latest, 386289180Speter conflict_separator, 387289180Speter style, 388289180Speter pool); 389289180Speter} 390289180Speter 391289180Spetersvn_error_t * 392289180Spetersvn_diff_mem_string_output_merge2(svn_stream_t *output_stream, 393289180Speter svn_diff_t *diff, 394289180Speter const svn_string_t *original, 395289180Speter const svn_string_t *modified, 396289180Speter const svn_string_t *latest, 397289180Speter const char *conflict_original, 398289180Speter const char *conflict_modified, 399289180Speter const char *conflict_latest, 400289180Speter const char *conflict_separator, 401289180Speter svn_diff_conflict_display_style_t style, 402289180Speter apr_pool_t *pool) 403289180Speter{ 404289180Speter return svn_error_trace(svn_diff_mem_string_output_merge3(output_stream, diff, 405289180Speter original, 406289180Speter modified, latest, 407289180Speter conflict_original, 408289180Speter conflict_modified, 409289180Speter conflict_latest, 410289180Speter conflict_separator, 411289180Speter style, 412289180Speter /* no cancelation */ 413289180Speter NULL, NULL, 414289180Speter pool)); 415289180Speter} 416289180Speter 417289180Spetersvn_error_t * 418289180Spetersvn_diff_mem_string_output_unified(svn_stream_t *output_stream, 419289180Speter svn_diff_t *diff, 420289180Speter const char *original_header, 421289180Speter const char *modified_header, 422289180Speter const char *header_encoding, 423289180Speter const svn_string_t *original, 424289180Speter const svn_string_t *modified, 425289180Speter apr_pool_t *pool) 426289180Speter{ 427289180Speter return svn_error_trace(svn_diff_mem_string_output_unified2(output_stream, 428289180Speter diff, 429289180Speter TRUE, 430289180Speter NULL, 431289180Speter original_header, 432289180Speter modified_header, 433289180Speter header_encoding, 434289180Speter original, 435289180Speter modified, 436289180Speter pool)); 437289180Speter} 438289180Speter 439289180Spetersvn_error_t * 440289180Spetersvn_diff_mem_string_output_unified2(svn_stream_t *output_stream, 441289180Speter svn_diff_t *diff, 442289180Speter svn_boolean_t with_diff_header, 443289180Speter const char *hunk_delimiter, 444289180Speter const char *original_header, 445289180Speter const char *modified_header, 446289180Speter const char *header_encoding, 447289180Speter const svn_string_t *original, 448289180Speter const svn_string_t *modified, 449289180Speter apr_pool_t *pool) 450289180Speter{ 451289180Speter return svn_error_trace(svn_diff_mem_string_output_unified3(output_stream, 452289180Speter diff, 453289180Speter with_diff_header, 454289180Speter hunk_delimiter, 455289180Speter original_header, 456289180Speter modified_header, 457289180Speter header_encoding, 458289180Speter original, 459289180Speter modified, 460289180Speter -1 /* context */, 461289180Speter /* cancel */ 462289180Speter NULL, NULL, 463289180Speter pool)); 464289180Speter} 465