1231200Smm/*- 2231200Smm * Copyright (c) 2011 Michihiro NAKAJIMA 3231200Smm * All rights reserved. 4231200Smm * 5231200Smm * Redistribution and use in source and binary forms, with or without 6231200Smm * modification, are permitted provided that the following conditions 7231200Smm * are met: 8231200Smm * 1. Redistributions of source code must retain the above copyright 9231200Smm * notice, this list of conditions and the following disclaimer. 10231200Smm * 2. Redistributions in binary form must reproduce the above copyright 11231200Smm * notice, this list of conditions and the following disclaimer in the 12231200Smm * documentation and/or other materials provided with the distribution. 13231200Smm * 14231200Smm * THIS SOFTWARE IS PROVIDED BY THE AUTHOR(S) ``AS IS'' AND ANY EXPRESS OR 15231200Smm * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES 16231200Smm * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 17231200Smm * IN NO EVENT SHALL THE AUTHOR(S) BE LIABLE FOR ANY DIRECT, INDIRECT, 18231200Smm * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 19231200Smm * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 20231200Smm * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 21231200Smm * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 22231200Smm * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 23231200Smm * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 24231200Smm */ 25231200Smm#include "test.h" 26231200Smm__FBSDID("$FreeBSD"); 27231200Smm 28231200Smm#include <locale.h> 29231200Smm 30231200Smmstatic void 31231200Smmtest_read_format_cpio_filename_eucJP_UTF8(const char *refname) 32231200Smm{ 33231200Smm struct archive *a; 34231200Smm struct archive_entry *ae; 35231200Smm 36231200Smm /* 37231200Smm * Read eucJP filename in en_US.UTF-8 with "hdrcharset=eucJP" option. 38231200Smm */ 39231200Smm if (NULL == setlocale(LC_ALL, "en_US.UTF-8")) { 40231200Smm skipping("en_US.UTF-8 locale not available on this system."); 41231200Smm return; 42231200Smm } 43231200Smm 44231200Smm assert((a = archive_read_new()) != NULL); 45231200Smm assertEqualIntA(a, ARCHIVE_OK, archive_read_support_filter_all(a)); 46231200Smm assertEqualIntA(a, ARCHIVE_OK, archive_read_support_format_all(a)); 47231200Smm if (ARCHIVE_OK != archive_read_set_options(a, "hdrcharset=eucJP")) { 48231200Smm skipping("This system cannot convert character-set" 49231200Smm " from eucJP to UTF-8."); 50231200Smm goto cleanup; 51231200Smm } 52231200Smm assertEqualIntA(a, ARCHIVE_OK, 53231200Smm archive_read_open_filename(a, refname, 10240)); 54231200Smm 55231200Smm /* Verify regular file. */ 56231200Smm assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae)); 57231200Smm assertEqualString("\xe6\xbc\xa2\xe5\xad\x97.txt", 58231200Smm archive_entry_pathname(ae)); 59231200Smm assertEqualInt(8, archive_entry_size(ae)); 60231200Smm 61231200Smm /* Verify regular file. */ 62231200Smm assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae)); 63231200Smm assertEqualString("\xe8\xa1\xa8.txt", archive_entry_pathname(ae)); 64231200Smm assertEqualInt(4, archive_entry_size(ae)); 65231200Smm 66231200Smm 67231200Smm /* End of archive. */ 68231200Smm assertEqualIntA(a, ARCHIVE_EOF, archive_read_next_header(a, &ae)); 69231200Smm 70231200Smm /* Verify archive format. */ 71248616Smm assertEqualIntA(a, ARCHIVE_FILTER_NONE, archive_filter_code(a, 0)); 72231200Smm assertEqualIntA(a, ARCHIVE_FORMAT_CPIO_POSIX, archive_format(a)); 73231200Smm 74231200Smm /* Close the archive. */ 75231200Smm assertEqualInt(ARCHIVE_OK, archive_read_close(a)); 76231200Smmcleanup: 77231200Smm assertEqualInt(ARCHIVE_OK, archive_read_free(a)); 78231200Smm} 79231200Smm 80231200Smmstatic void 81231200Smmtest_read_format_cpio_filename_UTF8_eucJP(const char *refname) 82231200Smm{ 83231200Smm struct archive *a; 84231200Smm struct archive_entry *ae; 85231200Smm 86231200Smm /* 87231200Smm * Read UTF-8 filename in ja_JP.eucJP with "hdrcharset=UTF-8" option. 88231200Smm */ 89231200Smm if (NULL == setlocale(LC_ALL, "ja_JP.eucJP")) { 90231200Smm skipping("ja_JP.eucJP locale not available on this system."); 91231200Smm return; 92231200Smm } 93231200Smm assert((a = archive_read_new()) != NULL); 94231200Smm assertEqualIntA(a, ARCHIVE_OK, archive_read_support_filter_all(a)); 95231200Smm assertEqualIntA(a, ARCHIVE_OK, archive_read_support_format_all(a)); 96231200Smm if (ARCHIVE_OK != archive_read_set_options(a, "hdrcharset=UTF-8")) { 97231200Smm skipping("This system cannot convert character-set" 98231200Smm " from UTF-8 to eucJP."); 99231200Smm goto cleanup; 100231200Smm } 101231200Smm 102231200Smm assertEqualIntA(a, ARCHIVE_OK, 103231200Smm archive_read_open_filename(a, refname, 10240)); 104231200Smm 105231200Smm /* Verify regular file. */ 106231200Smm assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae)); 107231200Smm assertEqualInt(AE_IFREG, archive_entry_filetype(ae)); 108231200Smm assertEqualString("\xb4\xc1\xbb\xfa.txt", archive_entry_pathname(ae)); 109231200Smm assertEqualInt(8, archive_entry_size(ae)); 110231200Smm 111231200Smm /* Verify regular file. */ 112231200Smm assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae)); 113231200Smm assertEqualInt(AE_IFREG, archive_entry_filetype(ae)); 114231200Smm assertEqualString("\xc9\xbd.txt", archive_entry_pathname(ae)); 115231200Smm assertEqualInt(4, archive_entry_size(ae)); 116231200Smm 117231200Smm 118231200Smm /* End of archive. */ 119231200Smm assertEqualIntA(a, ARCHIVE_EOF, archive_read_next_header(a, &ae)); 120231200Smm 121231200Smm /* Verify archive format. */ 122248616Smm assertEqualIntA(a, ARCHIVE_FILTER_NONE, archive_filter_code(a, 0)); 123231200Smm assertEqualIntA(a, ARCHIVE_FORMAT_CPIO_POSIX, archive_format(a)); 124231200Smm 125231200Smm /* Close the archive. */ 126231200Smm assertEqualInt(ARCHIVE_OK, archive_read_close(a)); 127231200Smmcleanup: 128231200Smm assertEqualInt(ARCHIVE_OK, archive_read_free(a)); 129231200Smm} 130231200Smm 131231200Smmstatic void 132231200Smmtest_read_format_cpio_filename_UTF8_UTF8_jp(const char *refname) 133231200Smm{ 134231200Smm struct archive *a; 135231200Smm struct archive_entry *ae; 136231200Smm 137231200Smm /* 138231200Smm * Read UTF-8 filename in en_US.UTF-8 without "hdrcharset=UTF-8" option. 139231200Smm */ 140231200Smm if (NULL == setlocale(LC_ALL, "en_US.UTF-8")) { 141231200Smm skipping("en_US.UTF-8 locale not available on this system."); 142231200Smm return; 143231200Smm } 144231200Smm 145231200Smm assert((a = archive_read_new()) != NULL); 146231200Smm assertEqualIntA(a, ARCHIVE_OK, archive_read_support_filter_all(a)); 147231200Smm assertEqualIntA(a, ARCHIVE_OK, archive_read_support_format_all(a)); 148231200Smm assertEqualIntA(a, ARCHIVE_OK, 149231200Smm archive_read_open_filename(a, refname, 10240)); 150231200Smm 151231200Smm /* Verify regular file. */ 152231200Smm assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae)); 153231200Smm assertEqualInt(AE_IFREG, archive_entry_filetype(ae)); 154231200Smm assertEqualString("\xe6\xbc\xa2\xe5\xad\x97.txt", 155231200Smm archive_entry_pathname(ae)); 156231200Smm assertEqualInt(8, archive_entry_size(ae)); 157231200Smm 158231200Smm /* Verify regular file. */ 159231200Smm assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae)); 160231200Smm assertEqualInt(AE_IFREG, archive_entry_filetype(ae)); 161231200Smm assertEqualString("\xe8\xa1\xa8.txt", archive_entry_pathname(ae)); 162231200Smm assertEqualInt(4, archive_entry_size(ae)); 163231200Smm 164231200Smm 165231200Smm /* End of archive. */ 166231200Smm assertEqualIntA(a, ARCHIVE_EOF, archive_read_next_header(a, &ae)); 167231200Smm 168231200Smm /* Verify archive format. */ 169248616Smm assertEqualIntA(a, ARCHIVE_FILTER_NONE, archive_filter_code(a, 0)); 170231200Smm assertEqualIntA(a, ARCHIVE_FORMAT_CPIO_POSIX, archive_format(a)); 171231200Smm 172231200Smm /* Close the archive. */ 173231200Smm assertEqualInt(ARCHIVE_OK, archive_read_close(a)); 174231200Smm assertEqualInt(ARCHIVE_OK, archive_read_free(a)); 175231200Smm} 176231200Smm 177231200Smmstatic void 178231200Smmtest_read_format_cpio_filename_CP866_KOI8R(const char *refname) 179231200Smm{ 180231200Smm struct archive *a; 181231200Smm struct archive_entry *ae; 182231200Smm 183231200Smm /* 184231200Smm * Read CP866 filename in ru_RU.KOI8-R with "hdrcharset=CP866" option. 185231200Smm */ 186231200Smm if (NULL == setlocale(LC_ALL, "Russian_Russia.20866") && 187231200Smm NULL == setlocale(LC_ALL, "ru_RU.KOI8-R")) { 188231200Smm skipping("ru_RU.KOI8-R locale not available on this system."); 189231200Smm return; 190231200Smm } 191231200Smm 192231200Smm assert((a = archive_read_new()) != NULL); 193231200Smm assertEqualIntA(a, ARCHIVE_OK, archive_read_support_filter_all(a)); 194231200Smm assertEqualIntA(a, ARCHIVE_OK, archive_read_support_format_all(a)); 195231200Smm if (ARCHIVE_OK != archive_read_set_options(a, "hdrcharset=CP866")) { 196231200Smm skipping("This system cannot convert character-set" 197231200Smm " from CP866 to KOI8-R."); 198231200Smm goto cleanup; 199231200Smm } 200231200Smm assertEqualIntA(a, ARCHIVE_OK, 201231200Smm archive_read_open_filename(a, refname, 10240)); 202231200Smm 203231200Smm /* Verify regular file. */ 204231200Smm assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae)); 205231200Smm assertEqualString("\xf0\xf2\xe9\xf7\xe5\xf4", 206231200Smm archive_entry_pathname(ae)); 207231200Smm assertEqualInt(6, archive_entry_size(ae)); 208231200Smm 209231200Smm /* Verify regular file. */ 210231200Smm assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae)); 211231200Smm assertEqualString("\xd0\xd2\xc9\xd7\xc5\xd4", 212231200Smm archive_entry_pathname(ae)); 213231200Smm assertEqualInt(6, archive_entry_size(ae)); 214231200Smm 215231200Smm 216231200Smm /* End of archive. */ 217231200Smm assertEqualIntA(a, ARCHIVE_EOF, archive_read_next_header(a, &ae)); 218231200Smm 219231200Smm /* Verify archive format. */ 220248616Smm assertEqualIntA(a, ARCHIVE_FILTER_NONE, archive_filter_code(a, 0)); 221231200Smm assertEqualIntA(a, ARCHIVE_FORMAT_CPIO_POSIX, archive_format(a)); 222231200Smm 223231200Smm /* Close the archive. */ 224231200Smm assertEqualInt(ARCHIVE_OK, archive_read_close(a)); 225231200Smmcleanup: 226231200Smm assertEqualInt(ARCHIVE_OK, archive_read_free(a)); 227231200Smm} 228231200Smm 229231200Smmstatic void 230231200Smmtest_read_format_cpio_filename_CP866_UTF8(const char *refname) 231231200Smm{ 232231200Smm struct archive *a; 233231200Smm struct archive_entry *ae; 234231200Smm 235231200Smm /* 236231200Smm * Read CP866 filename in en_US.UTF-8 with "hdrcharset=CP866" option. 237231200Smm */ 238231200Smm if (NULL == setlocale(LC_ALL, "en_US.UTF-8")) { 239231200Smm skipping("en_US.UTF-8 locale not available on this system."); 240231200Smm return; 241231200Smm } 242231200Smm 243231200Smm assert((a = archive_read_new()) != NULL); 244231200Smm assertEqualIntA(a, ARCHIVE_OK, archive_read_support_filter_all(a)); 245231200Smm assertEqualIntA(a, ARCHIVE_OK, archive_read_support_format_all(a)); 246231200Smm if (ARCHIVE_OK != archive_read_set_options(a, "hdrcharset=CP866")) { 247231200Smm skipping("This system cannot convert character-set" 248231200Smm " from CP866 to UTF-8."); 249231200Smm goto cleanup; 250231200Smm } 251231200Smm assertEqualIntA(a, ARCHIVE_OK, 252231200Smm archive_read_open_filename(a, refname, 10240)); 253231200Smm 254231200Smm /* Verify regular file. */ 255231200Smm assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae)); 256231200Smm assertEqualString("\xd0\x9f\xd0\xa0\xd0\x98\xd0\x92\xd0\x95\xd0\xa2", 257231200Smm archive_entry_pathname(ae)); 258231200Smm assertEqualInt(6, archive_entry_size(ae)); 259231200Smm 260231200Smm /* Verify regular file. */ 261231200Smm assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae)); 262231200Smm assertEqualString("\xd0\xbf\xd1\x80\xd0\xb8\xd0\xb2\xd0\xb5\xd1\x82", 263231200Smm archive_entry_pathname(ae)); 264231200Smm assertEqualInt(6, archive_entry_size(ae)); 265231200Smm 266231200Smm 267231200Smm /* End of archive. */ 268231200Smm assertEqualIntA(a, ARCHIVE_EOF, archive_read_next_header(a, &ae)); 269231200Smm 270231200Smm /* Verify archive format. */ 271248616Smm assertEqualIntA(a, ARCHIVE_FILTER_NONE, archive_filter_code(a, 0)); 272231200Smm assertEqualIntA(a, ARCHIVE_FORMAT_CPIO_POSIX, archive_format(a)); 273231200Smm 274231200Smm /* Close the archive. */ 275231200Smm assertEqualInt(ARCHIVE_OK, archive_read_close(a)); 276231200Smmcleanup: 277231200Smm assertEqualInt(ARCHIVE_OK, archive_read_free(a)); 278231200Smm} 279231200Smm 280231200Smmstatic void 281231200Smmtest_read_format_cpio_filename_KOI8R_CP866(const char *refname) 282231200Smm{ 283231200Smm struct archive *a; 284231200Smm struct archive_entry *ae; 285231200Smm 286231200Smm /* 287231200Smm * Read KOI8-R filename in ru_RU.CP866 with "hdrcharset=KOI8-R" option. 288231200Smm */ 289231200Smm if (NULL == setlocale(LC_ALL, "Russian_Russia.866") && 290231200Smm NULL == setlocale(LC_ALL, "ru_RU.CP866")) { 291231200Smm skipping("ru_RU.CP866 locale not available on this system."); 292231200Smm return; 293231200Smm } 294231200Smm 295231200Smm assert((a = archive_read_new()) != NULL); 296231200Smm assertEqualIntA(a, ARCHIVE_OK, archive_read_support_filter_all(a)); 297231200Smm assertEqualIntA(a, ARCHIVE_OK, archive_read_support_format_all(a)); 298231200Smm if (ARCHIVE_OK != archive_read_set_options(a, "hdrcharset=KOI8-R")) { 299231200Smm skipping("This system cannot convert character-set" 300231200Smm " from KOI8-R to CP866."); 301231200Smm goto cleanup; 302231200Smm } 303231200Smm assertEqualIntA(a, ARCHIVE_OK, 304231200Smm archive_read_open_filename(a, refname, 10240)); 305231200Smm 306231200Smm /* Verify regular file. */ 307231200Smm assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae)); 308231200Smm assertEqualString("\x8f\x90\x88\x82\x85\x92", 309231200Smm archive_entry_pathname(ae)); 310231200Smm assertEqualInt(6, archive_entry_size(ae)); 311231200Smm 312231200Smm /* Verify regular file. */ 313231200Smm assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae)); 314231200Smm assertEqualString("\xaf\xe0\xa8\xa2\xa5\xe2", 315231200Smm archive_entry_pathname(ae)); 316231200Smm assertEqualInt(6, archive_entry_size(ae)); 317231200Smm 318231200Smm 319231200Smm /* End of archive. */ 320231200Smm assertEqualIntA(a, ARCHIVE_EOF, archive_read_next_header(a, &ae)); 321231200Smm 322231200Smm /* Verify archive format. */ 323248616Smm assertEqualIntA(a, ARCHIVE_FILTER_NONE, archive_filter_code(a, 0)); 324231200Smm assertEqualIntA(a, ARCHIVE_FORMAT_CPIO_POSIX, archive_format(a)); 325231200Smm 326231200Smm /* Close the archive. */ 327231200Smm assertEqualInt(ARCHIVE_OK, archive_read_close(a)); 328231200Smmcleanup: 329231200Smm assertEqualInt(ARCHIVE_OK, archive_read_free(a)); 330231200Smm} 331231200Smm 332231200Smmstatic void 333231200Smmtest_read_format_cpio_filename_KOI8R_UTF8(const char *refname) 334231200Smm{ 335231200Smm struct archive *a; 336231200Smm struct archive_entry *ae; 337231200Smm 338231200Smm /* 339231200Smm * Read KOI8-R filename in en_US.UTF-8 with "hdrcharset=KOI8-R" option. 340231200Smm */ 341231200Smm if (NULL == setlocale(LC_ALL, "en_US.UTF-8")) { 342231200Smm skipping("en_US.UTF-8 locale not available on this system."); 343231200Smm return; 344231200Smm } 345231200Smm 346231200Smm assert((a = archive_read_new()) != NULL); 347231200Smm assertEqualIntA(a, ARCHIVE_OK, archive_read_support_filter_all(a)); 348231200Smm assertEqualIntA(a, ARCHIVE_OK, archive_read_support_format_all(a)); 349231200Smm if (ARCHIVE_OK != archive_read_set_options(a, "hdrcharset=KOI8-R")) { 350231200Smm skipping("This system cannot convert character-set" 351231200Smm " from KOI8-R to UTF-8."); 352231200Smm goto cleanup; 353231200Smm } 354231200Smm assertEqualIntA(a, ARCHIVE_OK, 355231200Smm archive_read_open_filename(a, refname, 10240)); 356231200Smm 357231200Smm /* Verify regular file. */ 358231200Smm assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae)); 359231200Smm assertEqualString("\xd0\x9f\xd0\xa0\xd0\x98\xd0\x92\xd0\x95\xd0\xa2", 360231200Smm archive_entry_pathname(ae)); 361231200Smm assertEqualInt(6, archive_entry_size(ae)); 362231200Smm 363231200Smm /* Verify regular file. */ 364231200Smm assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae)); 365231200Smm assertEqualString("\xd0\xbf\xd1\x80\xd0\xb8\xd0\xb2\xd0\xb5\xd1\x82", 366231200Smm archive_entry_pathname(ae)); 367231200Smm assertEqualInt(6, archive_entry_size(ae)); 368231200Smm 369231200Smm 370231200Smm /* End of archive. */ 371231200Smm assertEqualIntA(a, ARCHIVE_EOF, archive_read_next_header(a, &ae)); 372231200Smm 373231200Smm /* Verify archive format. */ 374248616Smm assertEqualIntA(a, ARCHIVE_FILTER_NONE, archive_filter_code(a, 0)); 375231200Smm assertEqualIntA(a, ARCHIVE_FORMAT_CPIO_POSIX, archive_format(a)); 376231200Smm 377231200Smm /* Close the archive. */ 378231200Smm assertEqualInt(ARCHIVE_OK, archive_read_close(a)); 379231200Smmcleanup: 380231200Smm assertEqualInt(ARCHIVE_OK, archive_read_free(a)); 381231200Smm} 382231200Smm 383231200Smmstatic void 384231200Smmtest_read_format_cpio_filename_UTF8_KOI8R(const char *refname) 385231200Smm{ 386231200Smm struct archive *a; 387231200Smm struct archive_entry *ae; 388231200Smm 389231200Smm /* 390231200Smm * Read UTF-8 filename in ru_RU.KOI8-R with "hdrcharset=UTF-8" option. 391231200Smm */ 392231200Smm if (NULL == setlocale(LC_ALL, "Russian_Russia.20866") && 393231200Smm NULL == setlocale(LC_ALL, "ru_RU.KOI8-R")) { 394231200Smm skipping("ru_RU.KOI8-R locale not available on this system."); 395231200Smm return; 396231200Smm } 397231200Smm 398231200Smm assert((a = archive_read_new()) != NULL); 399231200Smm assertEqualIntA(a, ARCHIVE_OK, archive_read_support_filter_all(a)); 400231200Smm assertEqualIntA(a, ARCHIVE_OK, archive_read_support_format_all(a)); 401231200Smm if (ARCHIVE_OK != archive_read_set_options(a, "hdrcharset=UTF-8")) { 402231200Smm skipping("This system cannot convert character-set" 403231200Smm " from UTF-8 to KOI8-R."); 404231200Smm goto cleanup; 405231200Smm } 406231200Smm assertEqualIntA(a, ARCHIVE_OK, 407231200Smm archive_read_open_filename(a, refname, 10240)); 408231200Smm 409231200Smm /* Verify regular file. */ 410231200Smm assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae)); 411231200Smm assertEqualString("\xf0\xf2\xe9\xf7\xe5\xf4", 412231200Smm archive_entry_pathname(ae)); 413231200Smm assertEqualInt(6, archive_entry_size(ae)); 414231200Smm 415231200Smm /* Verify regular file. */ 416231200Smm assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae)); 417231200Smm assertEqualString("\xd0\xd2\xc9\xd7\xc5\xd4", 418231200Smm archive_entry_pathname(ae)); 419231200Smm assertEqualInt(6, archive_entry_size(ae)); 420231200Smm 421231200Smm 422231200Smm /* End of archive. */ 423231200Smm assertEqualIntA(a, ARCHIVE_EOF, archive_read_next_header(a, &ae)); 424231200Smm 425231200Smm /* Verify archive format. */ 426248616Smm assertEqualIntA(a, ARCHIVE_FILTER_NONE, archive_filter_code(a, 0)); 427231200Smm assertEqualIntA(a, ARCHIVE_FORMAT_CPIO_POSIX, archive_format(a)); 428231200Smm 429231200Smm /* Close the archive. */ 430231200Smm assertEqualInt(ARCHIVE_OK, archive_read_close(a)); 431231200Smmcleanup: 432231200Smm assertEqualInt(ARCHIVE_OK, archive_read_free(a)); 433231200Smm} 434231200Smm 435231200Smmstatic void 436231200Smmtest_read_format_cpio_filename_UTF8_CP866(const char *refname) 437231200Smm{ 438231200Smm struct archive *a; 439231200Smm struct archive_entry *ae; 440231200Smm 441231200Smm /* 442231200Smm * Read UTF-8 filename in ru_RU.CP866 with "hdrcharset=UTF-8" option. 443231200Smm */ 444231200Smm if (NULL == setlocale(LC_ALL, "Russian_Russia.866") && 445231200Smm NULL == setlocale(LC_ALL, "ru_RU.CP866")) { 446231200Smm skipping("ru_RU.CP866 locale not available on this system."); 447231200Smm return; 448231200Smm } 449231200Smm 450231200Smm assert((a = archive_read_new()) != NULL); 451231200Smm assertEqualIntA(a, ARCHIVE_OK, archive_read_support_filter_all(a)); 452231200Smm assertEqualIntA(a, ARCHIVE_OK, archive_read_support_format_all(a)); 453231200Smm if (ARCHIVE_OK != archive_read_set_options(a, "hdrcharset=UTF-8")) { 454231200Smm skipping("This system cannot convert character-set" 455231200Smm " from UTF-8 to CP866."); 456231200Smm goto cleanup; 457231200Smm } 458231200Smm assertEqualIntA(a, ARCHIVE_OK, 459231200Smm archive_read_open_filename(a, refname, 10240)); 460231200Smm 461231200Smm /* Verify regular file. */ 462231200Smm assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae)); 463231200Smm assertEqualString("\x8f\x90\x88\x82\x85\x92", 464231200Smm archive_entry_pathname(ae)); 465231200Smm assertEqualInt(6, archive_entry_size(ae)); 466231200Smm 467231200Smm /* Verify regular file. */ 468231200Smm assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae)); 469231200Smm assertEqualString("\xaf\xe0\xa8\xa2\xa5\xe2", 470231200Smm archive_entry_pathname(ae)); 471231200Smm assertEqualInt(6, archive_entry_size(ae)); 472231200Smm 473231200Smm 474231200Smm /* End of archive. */ 475231200Smm assertEqualIntA(a, ARCHIVE_EOF, archive_read_next_header(a, &ae)); 476231200Smm 477231200Smm /* Verify archive format. */ 478248616Smm assertEqualIntA(a, ARCHIVE_FILTER_NONE, archive_filter_code(a, 0)); 479231200Smm assertEqualIntA(a, ARCHIVE_FORMAT_CPIO_POSIX, archive_format(a)); 480231200Smm 481231200Smm /* Close the archive. */ 482231200Smm assertEqualInt(ARCHIVE_OK, archive_read_close(a)); 483231200Smmcleanup: 484231200Smm assertEqualInt(ARCHIVE_OK, archive_read_free(a)); 485231200Smm} 486231200Smm 487231200Smmstatic void 488231200Smmtest_read_format_cpio_filename_UTF8_UTF8_ru(const char *refname) 489231200Smm{ 490231200Smm struct archive *a; 491231200Smm struct archive_entry *ae; 492231200Smm 493231200Smm /* 494231200Smm * Read UTF-8 filename in en_US.UTF-8 without "hdrcharset=UTF-8" option. 495231200Smm */ 496231200Smm if (NULL == setlocale(LC_ALL, "en_US.UTF-8")) { 497231200Smm skipping("en_US.UTF-8 locale not available on this system."); 498231200Smm return; 499231200Smm } 500231200Smm 501231200Smm assert((a = archive_read_new()) != NULL); 502231200Smm assertEqualIntA(a, ARCHIVE_OK, archive_read_support_filter_all(a)); 503231200Smm assertEqualIntA(a, ARCHIVE_OK, archive_read_support_format_all(a)); 504231200Smm assertEqualIntA(a, ARCHIVE_OK, 505231200Smm archive_read_open_filename(a, refname, 10240)); 506231200Smm 507231200Smm /* Verify regular file. */ 508231200Smm assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae)); 509231200Smm assertEqualString("\xd0\x9f\xd0\xa0\xd0\x98\xd0\x92\xd0\x95\xd0\xa2", 510231200Smm archive_entry_pathname(ae)); 511231200Smm assertEqualInt(6, archive_entry_size(ae)); 512231200Smm 513231200Smm /* Verify regular file. */ 514231200Smm assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae)); 515231200Smm assertEqualString("\xd0\xbf\xd1\x80\xd0\xb8\xd0\xb2\xd0\xb5\xd1\x82", 516231200Smm archive_entry_pathname(ae)); 517231200Smm assertEqualInt(6, archive_entry_size(ae)); 518231200Smm 519231200Smm 520231200Smm /* End of archive. */ 521231200Smm assertEqualIntA(a, ARCHIVE_EOF, archive_read_next_header(a, &ae)); 522231200Smm 523231200Smm /* Verify archive format. */ 524248616Smm assertEqualIntA(a, ARCHIVE_FILTER_NONE, archive_filter_code(a, 0)); 525231200Smm assertEqualIntA(a, ARCHIVE_FORMAT_CPIO_POSIX, archive_format(a)); 526231200Smm 527231200Smm /* Close the archive. */ 528231200Smm assertEqualInt(ARCHIVE_OK, archive_read_close(a)); 529231200Smm assertEqualInt(ARCHIVE_OK, archive_read_free(a)); 530231200Smm} 531231200Smm 532231200Smmstatic void 533231200Smmtest_read_format_cpio_filename_eucJP_CP932(const char *refname) 534231200Smm{ 535231200Smm struct archive *a; 536231200Smm struct archive_entry *ae; 537231200Smm 538231200Smm /* 539231200Smm * Read eucJP filename in CP932/SJIS with "hdrcharset=eucJP" option. 540231200Smm */ 541231200Smm if (NULL == setlocale(LC_ALL, "Japanese_Japan") && 542231200Smm NULL == setlocale(LC_ALL, "ja_JP.SJIS")) { 543231200Smm skipping("CP932 locale not available on this system."); 544231200Smm return; 545231200Smm } 546231200Smm 547231200Smm assert((a = archive_read_new()) != NULL); 548231200Smm assertEqualIntA(a, ARCHIVE_OK, archive_read_support_filter_all(a)); 549231200Smm assertEqualIntA(a, ARCHIVE_OK, archive_read_support_format_all(a)); 550231200Smm if (ARCHIVE_OK != archive_read_set_options(a, "hdrcharset=eucJP")) { 551231200Smm skipping("This system cannot convert character-set" 552231200Smm " from eucJP."); 553231200Smm goto cleanup; 554231200Smm } 555231200Smm assertEqualIntA(a, ARCHIVE_OK, 556231200Smm archive_read_open_filename(a, refname, 10240)); 557231200Smm 558231200Smm /* Verify regular file. */ 559231200Smm assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae)); 560231200Smm assertEqualString("\x8a\xbf\x8e\x9a.txt", archive_entry_pathname(ae)); 561231200Smm assertEqualInt(8, archive_entry_size(ae)); 562231200Smm 563231200Smm /* Verify regular file. */ 564231200Smm assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae)); 565231200Smm assertEqualString("\x95\x5c.txt", archive_entry_pathname(ae)); 566231200Smm assertEqualInt(4, archive_entry_size(ae)); 567231200Smm 568231200Smm 569231200Smm /* End of archive. */ 570231200Smm assertEqualIntA(a, ARCHIVE_EOF, archive_read_next_header(a, &ae)); 571231200Smm 572231200Smm /* Verify archive format. */ 573248616Smm assertEqualIntA(a, ARCHIVE_FILTER_NONE, archive_filter_code(a, 0)); 574231200Smm assertEqualIntA(a, ARCHIVE_FORMAT_CPIO_POSIX, archive_format(a)); 575231200Smm 576231200Smm /* Close the archive. */ 577231200Smm assertEqualInt(ARCHIVE_OK, archive_read_close(a)); 578231200Smmcleanup: 579231200Smm assertEqualInt(ARCHIVE_OK, archive_read_free(a)); 580231200Smm} 581231200Smm 582231200Smmstatic void 583231200Smmtest_read_format_cpio_filename_UTF8_CP932(const char *refname) 584231200Smm{ 585231200Smm struct archive *a; 586231200Smm struct archive_entry *ae; 587231200Smm 588231200Smm /* 589231200Smm * Read UTF-8 filename in CP932/SJIS with "hdrcharset=UTF-8" option. 590231200Smm */ 591231200Smm if (NULL == setlocale(LC_ALL, "Japanese_Japan") && 592231200Smm NULL == setlocale(LC_ALL, "ja_JP.SJIS")) { 593231200Smm skipping("CP932 locale not available on this system."); 594231200Smm return; 595231200Smm } 596231200Smm 597231200Smm assert((a = archive_read_new()) != NULL); 598231200Smm assertEqualIntA(a, ARCHIVE_OK, archive_read_support_filter_all(a)); 599231200Smm assertEqualIntA(a, ARCHIVE_OK, archive_read_support_format_all(a)); 600231200Smm if (ARCHIVE_OK != archive_read_set_options(a, "hdrcharset=UTF-8")) { 601231200Smm skipping("This system cannot convert character-set" 602231200Smm " from UTF-8 to CP932."); 603231200Smm goto cleanup; 604231200Smm } 605231200Smm assertEqualIntA(a, ARCHIVE_OK, 606231200Smm archive_read_open_filename(a, refname, 10240)); 607231200Smm 608231200Smm /* Verify regular file. */ 609231200Smm assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae)); 610231200Smm assertEqualInt(AE_IFREG, archive_entry_filetype(ae)); 611231200Smm assertEqualString("\x8a\xbf\x8e\x9a.txt", archive_entry_pathname(ae)); 612231200Smm assertEqualInt(8, archive_entry_size(ae)); 613231200Smm 614231200Smm /* Verify regular file. */ 615231200Smm assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae)); 616231200Smm assertEqualInt(AE_IFREG, archive_entry_filetype(ae)); 617231200Smm assertEqualString("\x95\x5c.txt", archive_entry_pathname(ae)); 618231200Smm assertEqualInt(4, archive_entry_size(ae)); 619231200Smm 620231200Smm /* End of archive. */ 621231200Smm assertEqualIntA(a, ARCHIVE_EOF, archive_read_next_header(a, &ae)); 622231200Smm 623231200Smm /* Verify archive format. */ 624248616Smm assertEqualIntA(a, ARCHIVE_FILTER_NONE, archive_filter_code(a, 0)); 625231200Smm assertEqualIntA(a, ARCHIVE_FORMAT_CPIO_POSIX, archive_format(a)); 626231200Smm 627231200Smm /* Close the archive. */ 628231200Smm assertEqualInt(ARCHIVE_OK, archive_read_close(a)); 629231200Smmcleanup: 630231200Smm assertEqualInt(ARCHIVE_OK, archive_read_free(a)); 631231200Smm} 632231200Smm 633231200Smmstatic void 634231200Smmtest_read_format_cpio_filename_CP866_CP1251(const char *refname) 635231200Smm{ 636231200Smm struct archive *a; 637231200Smm struct archive_entry *ae; 638231200Smm 639231200Smm /* 640231200Smm * Read CP866 filename in CP1251 with "hdrcharset=CP866" option. 641231200Smm */ 642231200Smm if (NULL == setlocale(LC_ALL, "Russian_Russia") && 643231200Smm NULL == setlocale(LC_ALL, "ru_RU.CP1251")) { 644231200Smm skipping("CP1251 locale not available on this system."); 645231200Smm return; 646231200Smm } 647231200Smm 648231200Smm assert((a = archive_read_new()) != NULL); 649231200Smm assertEqualIntA(a, ARCHIVE_OK, archive_read_support_filter_all(a)); 650231200Smm assertEqualIntA(a, ARCHIVE_OK, archive_read_support_format_all(a)); 651231200Smm if (ARCHIVE_OK != archive_read_set_options(a, "hdrcharset=CP866")) { 652231200Smm skipping("This system cannot convert character-set" 653231200Smm " from CP866 to CP1251."); 654231200Smm goto cleanup; 655231200Smm } 656231200Smm assertEqualIntA(a, ARCHIVE_OK, 657231200Smm archive_read_open_filename(a, refname, 10240)); 658231200Smm 659231200Smm /* Verify regular file. */ 660231200Smm assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae)); 661231200Smm assertEqualString("\xcf\xd0\xc8\xc2\xc5\xd2", 662231200Smm archive_entry_pathname(ae)); 663231200Smm assertEqualInt(6, archive_entry_size(ae)); 664231200Smm 665231200Smm /* Verify regular file. */ 666231200Smm assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae)); 667231200Smm assertEqualString("\xef\xf0\xe8\xe2\xe5\xf2", 668231200Smm archive_entry_pathname(ae)); 669231200Smm assertEqualInt(6, archive_entry_size(ae)); 670231200Smm 671231200Smm 672231200Smm /* End of archive. */ 673231200Smm assertEqualIntA(a, ARCHIVE_EOF, archive_read_next_header(a, &ae)); 674231200Smm 675231200Smm /* Verify archive format. */ 676248616Smm assertEqualIntA(a, ARCHIVE_FILTER_NONE, archive_filter_code(a, 0)); 677231200Smm assertEqualIntA(a, ARCHIVE_FORMAT_CPIO_POSIX, archive_format(a)); 678231200Smm 679231200Smm /* Close the archive. */ 680231200Smm assertEqualInt(ARCHIVE_OK, archive_read_close(a)); 681231200Smmcleanup: 682231200Smm assertEqualInt(ARCHIVE_OK, archive_read_free(a)); 683231200Smm} 684231200Smm 685231200Smm/* 686231200Smm * This test only for Windows platform because other archiver 687231200Smm * applications on Windows translate CP1251 filenames into CP866 688231200Smm * filenames and store it in the cpio file and so we should read 689231200Smm * it by default on Windows. 690231200Smm */ 691231200Smmstatic void 692231200Smmtest_read_format_cpio_filename_CP866_CP1251_win(const char *refname) 693231200Smm{ 694231200Smm struct archive *a; 695231200Smm struct archive_entry *ae; 696231200Smm 697231200Smm /* 698231200Smm * Read CP866 filename in CP1251 without "hdrcharset=CP866" option. 699231200Smm */ 700231200Smm if (NULL == setlocale(LC_ALL, "Russian_Russia")) { 701231200Smm skipping("Russian_Russia locale not available on this system."); 702231200Smm return; 703231200Smm } 704231200Smm 705231200Smm assert((a = archive_read_new()) != NULL); 706231200Smm assertEqualIntA(a, ARCHIVE_OK, archive_read_support_filter_all(a)); 707231200Smm assertEqualIntA(a, ARCHIVE_OK, archive_read_support_format_all(a)); 708231200Smm assertEqualIntA(a, ARCHIVE_OK, 709231200Smm archive_read_open_filename(a, refname, 10240)); 710231200Smm 711231200Smm /* Verify regular file. */ 712231200Smm assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae)); 713231200Smm assertEqualString("\xcf\xd0\xc8\xc2\xc5\xd2", 714231200Smm archive_entry_pathname(ae)); 715231200Smm assertEqualInt(6, archive_entry_size(ae)); 716231200Smm 717231200Smm /* Verify regular file. */ 718231200Smm assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae)); 719231200Smm assertEqualString("\xef\xf0\xe8\xe2\xe5\xf2", 720231200Smm archive_entry_pathname(ae)); 721231200Smm assertEqualInt(6, archive_entry_size(ae)); 722231200Smm 723231200Smm 724231200Smm /* End of archive. */ 725231200Smm assertEqualIntA(a, ARCHIVE_EOF, archive_read_next_header(a, &ae)); 726231200Smm 727231200Smm /* Verify archive format. */ 728248616Smm assertEqualIntA(a, ARCHIVE_FILTER_NONE, archive_filter_code(a, 0)); 729231200Smm assertEqualIntA(a, ARCHIVE_FORMAT_CPIO_POSIX, archive_format(a)); 730231200Smm 731231200Smm /* Close the archive. */ 732231200Smm assertEqualInt(ARCHIVE_OK, archive_read_close(a)); 733231200Smm assertEqualInt(ARCHIVE_OK, archive_read_free(a)); 734231200Smm} 735231200Smm 736231200Smmstatic void 737231200Smmtest_read_format_cpio_filename_KOI8R_CP1251(const char *refname) 738231200Smm{ 739231200Smm struct archive *a; 740231200Smm struct archive_entry *ae; 741231200Smm 742231200Smm /* 743231200Smm * Read KOI8-R filename in CP1251 with "hdrcharset=KOI8-R" option. 744231200Smm */ 745231200Smm if (NULL == setlocale(LC_ALL, "Russian_Russia") && 746231200Smm NULL == setlocale(LC_ALL, "ru_RU.CP1251")) { 747231200Smm skipping("CP1251 locale not available on this system."); 748231200Smm return; 749231200Smm } 750231200Smm 751231200Smm assert((a = archive_read_new()) != NULL); 752231200Smm assertEqualIntA(a, ARCHIVE_OK, archive_read_support_filter_all(a)); 753231200Smm assertEqualIntA(a, ARCHIVE_OK, archive_read_support_format_all(a)); 754231200Smm if (ARCHIVE_OK != archive_read_set_options(a, "hdrcharset=KOI8-R")) { 755231200Smm skipping("This system cannot convert character-set" 756231200Smm " from KOI8-R to CP1251."); 757231200Smm goto cleanup; 758231200Smm } 759231200Smm assertEqualIntA(a, ARCHIVE_OK, 760231200Smm archive_read_open_filename(a, refname, 10240)); 761231200Smm 762231200Smm /* Verify regular file. */ 763231200Smm assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae)); 764231200Smm assertEqualString("\xcf\xd0\xc8\xc2\xc5\xd2", 765231200Smm archive_entry_pathname(ae)); 766231200Smm assertEqualInt(6, archive_entry_size(ae)); 767231200Smm 768231200Smm /* Verify regular file. */ 769231200Smm assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae)); 770231200Smm assertEqualString("\xef\xf0\xe8\xe2\xe5\xf2", 771231200Smm archive_entry_pathname(ae)); 772231200Smm assertEqualInt(6, archive_entry_size(ae)); 773231200Smm 774231200Smm 775231200Smm /* End of archive. */ 776231200Smm assertEqualIntA(a, ARCHIVE_EOF, archive_read_next_header(a, &ae)); 777231200Smm 778231200Smm /* Verify archive format. */ 779248616Smm assertEqualIntA(a, ARCHIVE_FILTER_NONE, archive_filter_code(a, 0)); 780231200Smm assertEqualIntA(a, ARCHIVE_FORMAT_CPIO_POSIX, archive_format(a)); 781231200Smm 782231200Smm /* Close the archive. */ 783231200Smm assertEqualInt(ARCHIVE_OK, archive_read_close(a)); 784231200Smmcleanup: 785231200Smm assertEqualInt(ARCHIVE_OK, archive_read_free(a)); 786231200Smm} 787231200Smm 788231200Smmstatic void 789231200Smmtest_read_format_cpio_filename_UTF8_CP1251(const char *refname) 790231200Smm{ 791231200Smm struct archive *a; 792231200Smm struct archive_entry *ae; 793231200Smm 794231200Smm /* 795231200Smm * Read KOI8-R filename in CP1251 with "hdrcharset=KOI8-R" option. 796231200Smm */ 797231200Smm if (NULL == setlocale(LC_ALL, "Russian_Russia") && 798231200Smm NULL == setlocale(LC_ALL, "ru_RU.CP1251")) { 799231200Smm skipping("CP1251 locale not available on this system."); 800231200Smm return; 801231200Smm } 802231200Smm 803231200Smm assert((a = archive_read_new()) != NULL); 804231200Smm assertEqualIntA(a, ARCHIVE_OK, archive_read_support_filter_all(a)); 805231200Smm assertEqualIntA(a, ARCHIVE_OK, archive_read_support_format_all(a)); 806231200Smm if (ARCHIVE_OK != archive_read_set_options(a, "hdrcharset=UTF-8")) { 807231200Smm skipping("This system cannot convert character-set" 808231200Smm " from UTF-8 to CP1251."); 809231200Smm goto cleanup; 810231200Smm } 811231200Smm assertEqualIntA(a, ARCHIVE_OK, 812231200Smm archive_read_open_filename(a, refname, 10240)); 813231200Smm 814231200Smm /* Verify regular file. */ 815231200Smm assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae)); 816231200Smm assertEqualString("\xcf\xd0\xc8\xc2\xc5\xd2", 817231200Smm archive_entry_pathname(ae)); 818231200Smm assertEqualInt(6, archive_entry_size(ae)); 819231200Smm 820231200Smm /* Verify regular file. */ 821231200Smm assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae)); 822231200Smm assertEqualString("\xef\xf0\xe8\xe2\xe5\xf2", 823231200Smm archive_entry_pathname(ae)); 824231200Smm assertEqualInt(6, archive_entry_size(ae)); 825231200Smm 826231200Smm 827231200Smm /* End of archive. */ 828231200Smm assertEqualIntA(a, ARCHIVE_EOF, archive_read_next_header(a, &ae)); 829231200Smm 830231200Smm /* Verify archive format. */ 831248616Smm assertEqualIntA(a, ARCHIVE_FILTER_NONE, archive_filter_code(a, 0)); 832231200Smm assertEqualIntA(a, ARCHIVE_FORMAT_CPIO_POSIX, archive_format(a)); 833231200Smm 834231200Smm /* Close the archive. */ 835231200Smm assertEqualInt(ARCHIVE_OK, archive_read_close(a)); 836231200Smmcleanup: 837231200Smm assertEqualInt(ARCHIVE_OK, archive_read_free(a)); 838231200Smm} 839231200Smm 840231200Smm 841231200SmmDEFINE_TEST(test_read_format_cpio_filename) 842231200Smm{ 843231200Smm const char *refname1 = "test_read_format_cpio_filename_eucjp.cpio"; 844231200Smm const char *refname2 = "test_read_format_cpio_filename_utf8_jp.cpio"; 845231200Smm const char *refname3 = "test_read_format_cpio_filename_cp866.cpio"; 846231200Smm const char *refname4 = "test_read_format_cpio_filename_koi8r.cpio"; 847231200Smm const char *refname5 = "test_read_format_cpio_filename_utf8_ru.cpio"; 848231200Smm 849231200Smm extract_reference_file(refname1); 850231200Smm test_read_format_cpio_filename_eucJP_UTF8(refname1); 851231200Smm test_read_format_cpio_filename_eucJP_CP932(refname1); 852231200Smm 853231200Smm extract_reference_file(refname2); 854231200Smm test_read_format_cpio_filename_UTF8_eucJP(refname2); 855231200Smm test_read_format_cpio_filename_UTF8_UTF8_jp(refname2); 856231200Smm test_read_format_cpio_filename_UTF8_CP932(refname2); 857231200Smm 858231200Smm extract_reference_file(refname3); 859231200Smm test_read_format_cpio_filename_CP866_KOI8R(refname3); 860231200Smm test_read_format_cpio_filename_CP866_UTF8(refname3); 861231200Smm test_read_format_cpio_filename_CP866_CP1251(refname3); 862231200Smm test_read_format_cpio_filename_CP866_CP1251_win(refname3); 863231200Smm 864231200Smm extract_reference_file(refname4); 865231200Smm test_read_format_cpio_filename_KOI8R_CP866(refname4); 866231200Smm test_read_format_cpio_filename_KOI8R_UTF8(refname4); 867231200Smm test_read_format_cpio_filename_KOI8R_CP1251(refname4); 868231200Smm 869231200Smm extract_reference_file(refname5); 870231200Smm test_read_format_cpio_filename_UTF8_KOI8R(refname5); 871231200Smm test_read_format_cpio_filename_UTF8_CP866(refname5); 872231200Smm test_read_format_cpio_filename_UTF8_UTF8_ru(refname5); 873231200Smm test_read_format_cpio_filename_UTF8_CP1251(refname5); 874231200Smm} 875