deprecated.c (309511) | deprecated.c (362181) |
---|---|
1/* 2 * deprecated.c: holding file for all deprecated APIs. 3 * "we can't lose 'em, but we can shun 'em!" 4 * 5 * ==================================================================== 6 * Licensed to the Apache Software Foundation (ASF) under one 7 * or more contributor license agreements. See the NOTICE file 8 * distributed with this work for additional information --- 32 unchanged lines hidden (view full) --- 41#include "svn_cmdline.h" 42#include "svn_version.h" 43#include "svn_pools.h" 44#include "svn_dso.h" 45#include "svn_mergeinfo.h" 46#include "svn_utf.h" 47#include "svn_xml.h" 48#include "svn_auth.h" | 1/* 2 * deprecated.c: holding file for all deprecated APIs. 3 * "we can't lose 'em, but we can shun 'em!" 4 * 5 * ==================================================================== 6 * Licensed to the Apache Software Foundation (ASF) under one 7 * or more contributor license agreements. See the NOTICE file 8 * distributed with this work for additional information --- 32 unchanged lines hidden (view full) --- 41#include "svn_cmdline.h" 42#include "svn_version.h" 43#include "svn_pools.h" 44#include "svn_dso.h" 45#include "svn_mergeinfo.h" 46#include "svn_utf.h" 47#include "svn_xml.h" 48#include "svn_auth.h" |
49#include "svn_base64.h" |
|
49 50#include "opt.h" 51#include "auth.h" 52#include "private/svn_opt_private.h" 53#include "private/svn_mergeinfo_private.h" 54 55#include "svn_private_config.h" 56 --- 327 unchanged lines hidden (view full) --- 384 385 if (have_options) 386 SVN_ERR(svn_cmdline_fprintf(stream, pool, "\n")); 387 } 388 389 return SVN_NO_ERROR; 390} 391 | 50 51#include "opt.h" 52#include "auth.h" 53#include "private/svn_opt_private.h" 54#include "private/svn_mergeinfo_private.h" 55 56#include "svn_private_config.h" 57 --- 327 unchanged lines hidden (view full) --- 385 386 if (have_options) 387 SVN_ERR(svn_cmdline_fprintf(stream, pool, "\n")); 388 } 389 390 return SVN_NO_ERROR; 391} 392 |
393const svn_opt_subcommand_desc2_t * 394svn_opt_get_canonical_subcommand2(const svn_opt_subcommand_desc2_t *table, 395 const char *cmd_name) 396{ 397 int i = 0; 398 399 if (cmd_name == NULL) 400 return NULL; 401 402 while (table[i].name) { 403 int j; 404 if (strcmp(cmd_name, table[i].name) == 0) 405 return table + i; 406 for (j = 0; (j < SVN_OPT_MAX_ALIASES) && table[i].aliases[j]; j++) 407 if (strcmp(cmd_name, table[i].aliases[j]) == 0) 408 return table + i; 409 410 i++; 411 } 412 413 /* If we get here, there was no matching subcommand name or alias. */ 414 return NULL; 415} 416 |
|
392const svn_opt_subcommand_desc_t * 393svn_opt_get_canonical_subcommand(const svn_opt_subcommand_desc_t *table, 394 const char *cmd_name) 395{ 396 int i = 0; 397 398 if (cmd_name == NULL) 399 return NULL; --- 8 unchanged lines hidden (view full) --- 408 409 i++; 410 } 411 412 /* If we get here, there was no matching subcommand name or alias. */ 413 return NULL; 414} 415 | 417const svn_opt_subcommand_desc_t * 418svn_opt_get_canonical_subcommand(const svn_opt_subcommand_desc_t *table, 419 const char *cmd_name) 420{ 421 int i = 0; 422 423 if (cmd_name == NULL) 424 return NULL; --- 8 unchanged lines hidden (view full) --- 433 434 i++; 435 } 436 437 /* If we get here, there was no matching subcommand name or alias. */ 438 return NULL; 439} 440 |
441const apr_getopt_option_t * 442svn_opt_get_option_from_code2(int code, 443 const apr_getopt_option_t *option_table, 444 const svn_opt_subcommand_desc2_t *command, 445 apr_pool_t *pool) 446{ 447 apr_size_t i; 448 449 for (i = 0; option_table[i].optch; i++) 450 if (option_table[i].optch == code) 451 { 452 if (command) 453 { 454 int j; 455 456 for (j = 0; ((j < SVN_OPT_MAX_OPTIONS) && 457 command->desc_overrides[j].optch); j++) 458 if (command->desc_overrides[j].optch == code) 459 { 460 apr_getopt_option_t *tmpopt = 461 apr_palloc(pool, sizeof(*tmpopt)); 462 *tmpopt = option_table[i]; 463 tmpopt->description = command->desc_overrides[j].desc; 464 return tmpopt; 465 } 466 } 467 return &(option_table[i]); 468 } 469 470 return NULL; 471} 472 473const apr_getopt_option_t * 474svn_opt_get_option_from_code(int code, 475 const apr_getopt_option_t *option_table) 476{ 477 apr_size_t i; 478 479 for (i = 0; option_table[i].optch; i++) 480 if (option_table[i].optch == code) 481 return &(option_table[i]); 482 483 return NULL; 484} 485 486/* Like svn_opt_get_option_from_code2(), but also, if CODE appears a second 487 * time in OPTION_TABLE with a different name, then set *LONG_ALIAS to that 488 * second name, else set it to NULL. */ 489static const apr_getopt_option_t * 490get_option_from_code(const char **long_alias, 491 int code, 492 const apr_getopt_option_t *option_table, 493 const svn_opt_subcommand_desc2_t *command, 494 apr_pool_t *pool) 495{ 496 const apr_getopt_option_t *i; 497 const apr_getopt_option_t *opt 498 = svn_opt_get_option_from_code2(code, option_table, command, pool); 499 500 /* Find a long alias in the table, if there is one. */ 501 *long_alias = NULL; 502 for (i = option_table; i->optch; i++) 503 { 504 if (i->optch == code && i->name != opt->name) 505 { 506 *long_alias = i->name; 507 break; 508 } 509 } 510 511 return opt; 512} 513 514/* Print an option OPT nicely into a STRING allocated in POOL. 515 * If OPT has a single-character short form, then print OPT->name (if not 516 * NULL) as an alias, else print LONG_ALIAS (if not NULL) as an alias. 517 * If DOC is set, include the generic documentation string of OPT, 518 * localized to the current locale if a translation is available. 519 */ 520static void 521format_option(const char **string, 522 const apr_getopt_option_t *opt, 523 const char *long_alias, 524 svn_boolean_t doc, 525 apr_pool_t *pool) 526{ 527 char *opts; 528 529 if (opt == NULL) 530 { 531 *string = "?"; 532 return; 533 } 534 535 /* We have a valid option which may or may not have a "short 536 name" (a single-character alias for the long option). */ 537 if (opt->optch <= 255) 538 opts = apr_psprintf(pool, "-%c [--%s]", opt->optch, opt->name); 539 else if (long_alias) 540 opts = apr_psprintf(pool, "--%s [--%s]", opt->name, long_alias); 541 else 542 opts = apr_psprintf(pool, "--%s", opt->name); 543 544 if (opt->has_arg) 545 opts = apr_pstrcat(pool, opts, _(" ARG"), SVN_VA_NULL); 546 547 if (doc) 548 opts = apr_psprintf(pool, "%-24s : %s", opts, _(opt->description)); 549 550 *string = opts; 551} 552 553/* Print the canonical command name for CMD, and all its aliases, to 554 STREAM. If HELP is set, print CMD's help string too, in which case 555 obtain option usage from OPTIONS_TABLE. */ 556static svn_error_t * 557print_command_info2(const svn_opt_subcommand_desc2_t *cmd, 558 const apr_getopt_option_t *options_table, 559 const int *global_options, 560 svn_boolean_t help, 561 apr_pool_t *pool, 562 FILE *stream) 563{ 564 svn_boolean_t first_time; 565 apr_size_t i; 566 567 /* Print the canonical command name. */ 568 SVN_ERR(svn_cmdline_fputs(cmd->name, stream, pool)); 569 570 /* Print the list of aliases. */ 571 first_time = TRUE; 572 for (i = 0; i < SVN_OPT_MAX_ALIASES; i++) 573 { 574 if (cmd->aliases[i] == NULL) 575 break; 576 577 if (first_time) { 578 SVN_ERR(svn_cmdline_fputs(" (", stream, pool)); 579 first_time = FALSE; 580 } 581 else 582 SVN_ERR(svn_cmdline_fputs(", ", stream, pool)); 583 584 SVN_ERR(svn_cmdline_fputs(cmd->aliases[i], stream, pool)); 585 } 586 587 if (! first_time) 588 SVN_ERR(svn_cmdline_fputs(")", stream, pool)); 589 590 if (help) 591 { 592 const apr_getopt_option_t *option; 593 const char *long_alias; 594 svn_boolean_t have_options = FALSE; 595 596 SVN_ERR(svn_cmdline_fprintf(stream, pool, ": %s", _(cmd->help))); 597 598 /* Loop over all valid option codes attached to the subcommand */ 599 for (i = 0; i < SVN_OPT_MAX_OPTIONS; i++) 600 { 601 if (cmd->valid_options[i]) 602 { 603 if (!have_options) 604 { 605 SVN_ERR(svn_cmdline_fputs(_("\nValid options:\n"), 606 stream, pool)); 607 have_options = TRUE; 608 } 609 610 /* convert each option code into an option */ 611 option = get_option_from_code(&long_alias, cmd->valid_options[i], 612 options_table, cmd, pool); 613 614 /* print the option's docstring */ 615 if (option && option->description) 616 { 617 const char *optstr; 618 format_option(&optstr, option, long_alias, TRUE, pool); 619 SVN_ERR(svn_cmdline_fprintf(stream, pool, " %s\n", 620 optstr)); 621 } 622 } 623 } 624 /* And global options too */ 625 if (global_options && *global_options) 626 { 627 SVN_ERR(svn_cmdline_fputs(_("\nGlobal options:\n"), 628 stream, pool)); 629 have_options = TRUE; 630 631 for (i = 0; global_options[i]; i++) 632 { 633 634 /* convert each option code into an option */ 635 option = get_option_from_code(&long_alias, global_options[i], 636 options_table, cmd, pool); 637 638 /* print the option's docstring */ 639 if (option && option->description) 640 { 641 const char *optstr; 642 format_option(&optstr, option, long_alias, TRUE, pool); 643 SVN_ERR(svn_cmdline_fprintf(stream, pool, " %s\n", 644 optstr)); 645 } 646 } 647 } 648 649 if (have_options) 650 SVN_ERR(svn_cmdline_fprintf(stream, pool, "\n")); 651 } 652 653 return SVN_NO_ERROR; 654} 655 656/* The body for svn_opt_print_generic_help2() function with standard error 657 * handling semantic. Handling of errors implemented at caller side. */ 658static svn_error_t * 659print_generic_help_body(const char *header, 660 const svn_opt_subcommand_desc2_t *cmd_table, 661 const apr_getopt_option_t *opt_table, 662 const char *footer, 663 apr_pool_t *pool, FILE *stream) 664{ 665 int i = 0; 666 667 if (header) 668 SVN_ERR(svn_cmdline_fputs(header, stream, pool)); 669 670 while (cmd_table[i].name) 671 { 672 SVN_ERR(svn_cmdline_fputs(" ", stream, pool)); 673 SVN_ERR(print_command_info2(cmd_table + i, opt_table, 674 NULL, FALSE, 675 pool, stream)); 676 SVN_ERR(svn_cmdline_fputs("\n", stream, pool)); 677 i++; 678 } 679 680 SVN_ERR(svn_cmdline_fputs("\n", stream, pool)); 681 682 if (footer) 683 SVN_ERR(svn_cmdline_fputs(footer, stream, pool)); 684 685 return SVN_NO_ERROR; 686} 687 |
|
416void | 688void |
689svn_opt_print_generic_help2(const char *header, 690 const svn_opt_subcommand_desc2_t *cmd_table, 691 const apr_getopt_option_t *opt_table, 692 const char *footer, 693 apr_pool_t *pool, FILE *stream) 694{ 695 svn_error_t *err; 696 697 err = print_generic_help_body(header, cmd_table, opt_table, footer, pool, 698 stream); 699 700 /* Issue #3014: 701 * Don't print anything on broken pipes. The pipe was likely 702 * closed by the process at the other end. We expect that 703 * process to perform error reporting as necessary. 704 * 705 * ### This assumes that there is only one error in a chain for 706 * ### SVN_ERR_IO_PIPE_WRITE_ERROR. See svn_cmdline_fputs(). */ 707 if (err && err->apr_err != SVN_ERR_IO_PIPE_WRITE_ERROR) 708 svn_handle_error2(err, stderr, FALSE, "svn: "); 709 svn_error_clear(err); 710} 711 712svn_boolean_t 713svn_opt_subcommand_takes_option3(const svn_opt_subcommand_desc2_t *command, 714 int option_code, 715 const int *global_options) 716{ 717 apr_size_t i; 718 719 for (i = 0; i < SVN_OPT_MAX_OPTIONS; i++) 720 if (command->valid_options[i] == option_code) 721 return TRUE; 722 723 if (global_options) 724 for (i = 0; global_options[i]; i++) 725 if (global_options[i] == option_code) 726 return TRUE; 727 728 return FALSE; 729} 730 731svn_boolean_t 732svn_opt_subcommand_takes_option2(const svn_opt_subcommand_desc2_t *command, 733 int option_code) 734{ 735 return svn_opt_subcommand_takes_option3(command, 736 option_code, 737 NULL); 738} 739 740svn_boolean_t 741svn_opt_subcommand_takes_option(const svn_opt_subcommand_desc_t *command, 742 int option_code) 743{ 744 apr_size_t i; 745 746 for (i = 0; i < SVN_OPT_MAX_OPTIONS; i++) 747 if (command->valid_options[i] == option_code) 748 return TRUE; 749 750 return FALSE; 751} 752 753void 754svn_opt_subcommand_help3(const char *subcommand, 755 const svn_opt_subcommand_desc2_t *table, 756 const apr_getopt_option_t *options_table, 757 const int *global_options, 758 apr_pool_t *pool) 759{ 760 const svn_opt_subcommand_desc2_t *cmd = 761 svn_opt_get_canonical_subcommand2(table, subcommand); 762 svn_error_t *err; 763 764 if (cmd) 765 err = print_command_info2(cmd, options_table, global_options, 766 TRUE, pool, stdout); 767 else 768 err = svn_cmdline_fprintf(stderr, pool, 769 _("\"%s\": unknown command.\n\n"), subcommand); 770 771 if (err) { 772 /* Issue #3014: Don't print anything on broken pipes. */ 773 if (err->apr_err != SVN_ERR_IO_PIPE_WRITE_ERROR) 774 svn_handle_error2(err, stderr, FALSE, "svn: "); 775 svn_error_clear(err); 776 } 777} 778 779void |
|
417svn_opt_subcommand_help2(const char *subcommand, 418 const svn_opt_subcommand_desc2_t *table, 419 const apr_getopt_option_t *options_table, 420 apr_pool_t *pool) 421{ 422 svn_opt_subcommand_help3(subcommand, table, options_table, 423 NULL, pool); 424} --- 91 unchanged lines hidden (view full) --- 516 } 517 } 518 519 *targets_p = output_targets; 520 return SVN_NO_ERROR; 521} 522 523svn_error_t * | 780svn_opt_subcommand_help2(const char *subcommand, 781 const svn_opt_subcommand_desc2_t *table, 782 const apr_getopt_option_t *options_table, 783 apr_pool_t *pool) 784{ 785 svn_opt_subcommand_help3(subcommand, table, options_table, 786 NULL, pool); 787} --- 91 unchanged lines hidden (view full) --- 879 } 880 } 881 882 *targets_p = output_targets; 883 return SVN_NO_ERROR; 884} 885 886svn_error_t * |
887svn_opt_print_help4(apr_getopt_t *os, 888 const char *pgm_name, 889 svn_boolean_t print_version, 890 svn_boolean_t quiet, 891 svn_boolean_t verbose, 892 const char *version_footer, 893 const char *header, 894 const svn_opt_subcommand_desc2_t *cmd_table, 895 const apr_getopt_option_t *option_table, 896 const int *global_options, 897 const char *footer, 898 apr_pool_t *pool) 899{ 900 apr_array_header_t *targets = NULL; 901 902 if (os) 903 SVN_ERR(svn_opt_parse_all_args(&targets, os, pool)); 904 905 if (os && targets->nelts) /* help on subcommand(s) requested */ 906 { 907 int i; 908 909 for (i = 0; i < targets->nelts; i++) 910 { 911 svn_opt_subcommand_help3(APR_ARRAY_IDX(targets, i, const char *), 912 cmd_table, option_table, 913 global_options, pool); 914 } 915 } 916 else if (print_version) /* just --version */ 917 { 918 SVN_ERR(svn_opt__print_version_info(pgm_name, version_footer, 919 svn_version_extended(verbose, pool), 920 quiet, verbose, pool)); 921 } 922 else if (os && !targets->nelts) /* `-h', `--help', or `help' */ 923 svn_opt_print_generic_help2(header, 924 cmd_table, 925 option_table, 926 footer, 927 pool, 928 stdout); 929 else /* unknown option or cmd */ 930 SVN_ERR(svn_cmdline_fprintf(stderr, pool, 931 _("Type '%s help' for usage.\n"), pgm_name)); 932 933 return SVN_NO_ERROR; 934} 935 936svn_error_t * |
|
524svn_opt_print_help3(apr_getopt_t *os, 525 const char *pgm_name, 526 svn_boolean_t print_version, 527 svn_boolean_t quiet, 528 const char *version_footer, 529 const char *header, 530 const svn_opt_subcommand_desc2_t *cmd_table, 531 const apr_getopt_option_t *option_table, --- 352 unchanged lines hidden (view full) --- 884 svn_io_stat_dirent2(dirent_p, 885 path, 886 FALSE, 887 ignore_enoent, 888 result_pool, 889 scratch_pool)); 890} 891 | 937svn_opt_print_help3(apr_getopt_t *os, 938 const char *pgm_name, 939 svn_boolean_t print_version, 940 svn_boolean_t quiet, 941 const char *version_footer, 942 const char *header, 943 const svn_opt_subcommand_desc2_t *cmd_table, 944 const apr_getopt_option_t *option_table, --- 352 unchanged lines hidden (view full) --- 1297 svn_io_stat_dirent2(dirent_p, 1298 path, 1299 FALSE, 1300 ignore_enoent, 1301 result_pool, 1302 scratch_pool)); 1303} 1304 |
1305svn_error_t * 1306svn_io_file_rename(const char *from_path, const char *to_path, 1307 apr_pool_t *pool) 1308{ 1309 return svn_error_trace(svn_io_file_rename2(from_path, to_path, 1310 FALSE, pool)); 1311} 1312 1313svn_error_t * 1314svn_io_write_atomic(const char *final_path, 1315 const void *buf, 1316 apr_size_t nbytes, 1317 const char *copy_perms_path, 1318 apr_pool_t *scratch_pool) 1319{ 1320 return svn_error_trace(svn_io_write_atomic2(final_path, buf, nbytes, 1321 copy_perms_path, TRUE, 1322 scratch_pool)); 1323} 1324 |
|
892/*** From constructors.c ***/ 893svn_log_changed_path_t * 894svn_log_changed_path_dup(const svn_log_changed_path_t *changed_path, 895 apr_pool_t *pool) 896{ 897 svn_log_changed_path_t *new_changed_path 898 = apr_palloc(pool, sizeof(*new_changed_path)); 899 --- 153 unchanged lines hidden (view full) --- 1053 1054svn_stream_t * 1055svn_stream_from_aprfile(apr_file_t *file, apr_pool_t *pool) 1056{ 1057 return svn_stream_from_aprfile2(file, TRUE, pool); 1058} 1059 1060svn_error_t * | 1325/*** From constructors.c ***/ 1326svn_log_changed_path_t * 1327svn_log_changed_path_dup(const svn_log_changed_path_t *changed_path, 1328 apr_pool_t *pool) 1329{ 1330 svn_log_changed_path_t *new_changed_path 1331 = apr_palloc(pool, sizeof(*new_changed_path)); 1332 --- 153 unchanged lines hidden (view full) --- 1486 1487svn_stream_t * 1488svn_stream_from_aprfile(apr_file_t *file, apr_pool_t *pool) 1489{ 1490 return svn_stream_from_aprfile2(file, TRUE, pool); 1491} 1492 1493svn_error_t * |
1494svn_stream_for_stdin(svn_stream_t **in, apr_pool_t *pool) 1495{ 1496 return svn_error_trace(svn_stream_for_stdin2(in, FALSE, pool)); 1497} 1498 1499svn_error_t * |
|
1061svn_stream_contents_same(svn_boolean_t *same, 1062 svn_stream_t *stream1, 1063 svn_stream_t *stream2, 1064 apr_pool_t *pool) 1065{ 1066 return svn_error_trace(svn_stream_contents_same2( 1067 same, 1068 svn_stream_disown(stream1, pool), --- 109 unchanged lines hidden (view full) --- 1178 s = svn_stream_create(baton, pool); 1179 svn_stream_set_read2(s, read_handler_md5, read_full_handler_md5); 1180 svn_stream_set_skip(s, skip_handler_md5); 1181 svn_stream_set_write(s, write_handler_md5); 1182 svn_stream_set_close(s, close_handler_md5); 1183 return s; 1184} 1185 | 1500svn_stream_contents_same(svn_boolean_t *same, 1501 svn_stream_t *stream1, 1502 svn_stream_t *stream2, 1503 apr_pool_t *pool) 1504{ 1505 return svn_error_trace(svn_stream_contents_same2( 1506 same, 1507 svn_stream_disown(stream1, pool), --- 109 unchanged lines hidden (view full) --- 1617 s = svn_stream_create(baton, pool); 1618 svn_stream_set_read2(s, read_handler_md5, read_full_handler_md5); 1619 svn_stream_set_skip(s, skip_handler_md5); 1620 svn_stream_set_write(s, write_handler_md5); 1621 svn_stream_set_close(s, close_handler_md5); 1622 return s; 1623} 1624 |
1625svn_error_t * 1626svn_string_from_stream(svn_string_t **result, 1627 svn_stream_t *stream, 1628 apr_pool_t *result_pool, 1629 apr_pool_t *scratch_pool) 1630{ 1631 return svn_error_trace(svn_string_from_stream2(result, stream, 0, 1632 result_pool)); 1633} 1634 |
|
1186/*** From path.c ***/ 1187 1188const char * 1189svn_path_internal_style(const char *path, apr_pool_t *pool) 1190{ 1191 if (svn_path_is_url(path)) 1192 return svn_uri_canonicalize(path, pool); 1193 else --- 52 unchanged lines hidden (view full) --- 1246svn_rangelist_merge(svn_rangelist_t **rangelist, 1247 const svn_rangelist_t *changes, 1248 apr_pool_t *pool) 1249{ 1250 SVN_ERR(svn_rangelist_merge2(*rangelist, changes, 1251 pool, pool)); 1252 1253 return svn_error_trace( | 1635/*** From path.c ***/ 1636 1637const char * 1638svn_path_internal_style(const char *path, apr_pool_t *pool) 1639{ 1640 if (svn_path_is_url(path)) 1641 return svn_uri_canonicalize(path, pool); 1642 else --- 52 unchanged lines hidden (view full) --- 1695svn_rangelist_merge(svn_rangelist_t **rangelist, 1696 const svn_rangelist_t *changes, 1697 apr_pool_t *pool) 1698{ 1699 SVN_ERR(svn_rangelist_merge2(*rangelist, changes, 1700 pool, pool)); 1701 1702 return svn_error_trace( |
1254 svn_rangelist__combine_adjacent_ranges(*rangelist, pool)); | 1703 svn_rangelist__canonicalize(*rangelist, pool)); |
1255} 1256 1257svn_error_t * 1258svn_mergeinfo_diff(svn_mergeinfo_t *deleted, svn_mergeinfo_t *added, 1259 svn_mergeinfo_t from, svn_mergeinfo_t to, 1260 svn_boolean_t consider_inheritance, 1261 apr_pool_t *pool) 1262{ --- 280 unchanged lines hidden (view full) --- 1543 FALSE, 1544 FALSE, 1545 FALSE, 1546 cfg, 1547 cancel_func, 1548 cancel_baton, 1549 pool)); 1550} | 1704} 1705 1706svn_error_t * 1707svn_mergeinfo_diff(svn_mergeinfo_t *deleted, svn_mergeinfo_t *added, 1708 svn_mergeinfo_t from, svn_mergeinfo_t to, 1709 svn_boolean_t consider_inheritance, 1710 apr_pool_t *pool) 1711{ --- 280 unchanged lines hidden (view full) --- 1992 FALSE, 1993 FALSE, 1994 FALSE, 1995 cfg, 1996 cancel_func, 1997 cancel_baton, 1998 pool)); 1999} |
2000 2001/*** From base64.c ***/ 2002svn_stream_t * 2003svn_base64_encode(svn_stream_t *output, apr_pool_t *pool) 2004{ 2005 return svn_base64_encode2(output, TRUE, pool); 2006} 2007 2008/*** From string.c ***/ 2009char * 2010svn_cstring_join(const apr_array_header_t *strings, 2011 const char *separator, 2012 apr_pool_t *pool) 2013{ 2014 return svn_cstring_join2(strings, separator, TRUE, pool); 2015} |
|