1 /*********************************************************************** 2 * * 3 * This software is part of the ast package * 4 * Copyright (c) 1987-2011 AT&T Intellectual Property * 5 * and is licensed under the * 6 * Eclipse Public License, Version 1.0 * 7 * by AT&T Intellectual Property * 8 * * 9 * A copy of the License is available at * 10 * http://www.eclipse.org/org/documents/epl-v10.html * 11 * (with md5 checksum b35adb5213ca9657e911e9befb180842) * 12 * * 13 * Information and Software Systems Research * 14 * AT&T Research * 15 * Florham Park NJ * 16 * * 17 * Glenn Fowler <gsf@research.att.com> * 18 * * 19 ***********************************************************************/ 20 #pragma prototyped 21 22 /* 23 * pax option table 24 */ 25 26 #include "pax.h" 27 28 Option_t options[] = 29 { 30 { 31 0, 32 }, 33 { 34 "action", 35 'A', 36 OPT_action, 37 "Input/output file path match and filter command. \acommand\a\ 38 is applied to each file that matches \apattern\a as it is read\ 39 from or written to the archive. \bX\b is any delimiter not occurring\ 40 in \apattern\a. \acommand\a is split into space separated arguments,\ 41 and is executed with the pathname of the file to be processed as the\ 42 last argument. The standard output of the resulting command is read\ 43 by \bpax\b.", 44 "\bX\bpattern\bX\bcommand", 45 }, 46 { 47 "append", 48 'a', 49 OPT_append, 50 "Append to end of archive.", 51 }, 52 { 53 "atime", 54 0, 55 OPT_atime, 56 "Preserve or set file access times.", 57 "time", 58 0, 59 OPT_HEADER|OPT_OPTIONAL, 60 4 61 }, 62 { 63 "base", 64 'z', 65 OPT_base, 66 "Two archives are required for delta operations. \b--file\b names\ 67 the delta archive and \b--base\b names the delta base archive.\ 68 If \aarchive\a is \b-\b then the base is ignored (the actual delta\ 69 sizes are reported and restored) on input and the delta is\ 70 compressed on output.", 71 "archive", 72 }, 73 { 74 "blocksize", 75 'b', 76 OPT_blocksize, 77 "Input/output block size. The default is format specific.", 78 "size", 79 0, 80 OPT_NUMBER, 81 }, 82 { 83 "blok", 84 0, 85 OPT_blok, 86 "Input/output BLOK format for tapes on file.", 87 "i|o", 88 0, 89 OPT_OPTIONAL, 90 }, 91 { 92 "charset", 93 0, 94 OPT_charset, 95 "Data character set name. The character set names are:", 96 "charset", 97 "\fcharsets\f", 98 0, 99 OPT_HEADER, 100 }, 101 { 102 "checksum", 103 0, 104 OPT_checksum, 105 "Generate a \amethod\a checksum file for each archive member and add\ 106 the resulting file as the archive member \apath\a. See \bsum\b(1) for\ 107 supported checksum methods; \bmd5\b is a good candidate. The generated\ 108 file is suitable for input to \bsum --check --permissions\b.", 109 "method::path", 110 }, 111 { 112 "chksum", 113 0, 114 OPT_chksum, 115 "The header checksum string; empty if not supported.", 116 0, 117 0, 118 OPT_READONLY, 119 }, 120 { 121 "chmod", 122 'C', 123 OPT_chmod, 124 "Apply the \bchmod\b(1) \amode\a expression to file modes\ 125 written to archive headers.", 126 "mode" 127 }, 128 { 129 "clobber", 130 'k', 131 OPT_clobber, 132 "Overwrite output files.", 133 0, 134 0, 135 OPT_INVERT, 136 }, 137 { 138 "comment", 139 0, 140 OPT_comment, 141 "Comment text.", 142 "text", 143 0, 144 OPT_HEADER, 145 }, 146 { 147 "complete", 148 0, 149 OPT_complete, 150 "Complete archive must fit in one media part.", 151 }, 152 { 153 "crossdevice", 154 'X', 155 OPT_crossdevice, 156 "Directory traversal may cross device boundaries.", 157 0, 158 0, 159 OPT_INVERT, 160 }, 161 { 162 "ctime", 163 0, 164 OPT_ctime, 165 "Preserve or set file change times.", 166 "time", 167 0, 168 OPT_HEADER|OPT_OPTIONAL, 169 }, 170 { 171 "debug", 172 'D', 173 OPT_debug, 174 "Set debug trace level. Higher levels produce more output.", 175 "level", 176 0, 177 OPT_NUMBER, 178 }, 179 { 180 "delete", 181 0, 182 OPT_delete, 183 "\bdelete\b=\apattern\a ignores all global and extended header keywords\ 184 matching the \bksh\b(1) \apattern\a.", 185 "pattern", 186 }, 187 { 188 "delta.base.checksum", 189 0, 190 OPT_delta_base_checksum, 191 "The delta base archive checksum.", 192 "checksum", 193 0, 194 OPT_GLOBAL|OPT_READONLY|OPT_NUMBER|OPT_VENDOR, 195 }, 196 { 197 "delta.base.size", 198 0, 199 OPT_delta_base_size, 200 "The delta base archive size.", 201 "size", 202 0, 203 OPT_GLOBAL|OPT_READONLY|OPT_NUMBER|OPT_VENDOR, 204 }, 205 { 206 "delta.checksum", 207 0, 208 OPT_delta_checksum, 209 "The delta archive checksum not including the current entry.", 210 "checksum", 211 0, 212 OPT_GLOBAL|OPT_READONLY|OPT_NUMBER|OPT_VENDOR, 213 }, 214 { 215 "delta.compress", 216 0, 217 OPT_delta_compress, 218 "The delta base archive is \b/dev/null\b.", 219 0, 220 0, 221 OPT_GLOBAL|OPT_READONLY|OPT_VENDOR, 222 }, 223 { 224 "delta.index", 225 0, 226 OPT_delta_index, 227 "The base file index (ordinal) of the current delta archive entry.", 228 "index", 229 0, 230 OPT_GLOBAL|OPT_READONLY|OPT_NUMBER|OPT_VENDOR, 231 }, 232 { 233 "delta.method", 234 0, 235 OPT_delta_method, 236 "The delta method. Supported methods are:", 237 "method", 238 "\fDELTA\f", 239 OPT_GLOBAL|OPT_VENDOR, 240 }, 241 { 242 "delta.op", 243 0, 244 OPT_delta_op, 245 "The current delta archive entry read mode operation:", 246 "op", 247 "[c:create?The file is not in the base archive and will be created.]\ 248 [d:delete?The file will be deleted.]\ 249 [p:pass?The file is not a delta and will be copied verbatim.]\ 250 [u:update?The file is a delta and will be updated against the\ 251 corresponding base archive entry.]\ 252 [v:verify?No data change but the file metatdata will be updated\ 253 to match the delta archive.]\ 254 ", 255 OPT_GLOBAL|OPT_READONLY|OPT_VENDOR, 256 }, 257 { 258 "delta.ordered", 259 0, 260 OPT_delta_ordered, 261 "The base and delta archive members are ordered (sorted) by name.", 262 0, 263 0, 264 OPT_GLOBAL|OPT_READONLY|OPT_VENDOR, 265 }, 266 { 267 "delta.update", 268 0, 269 OPT_delta_update, 270 "Only update files in the delta -- do not update files in the base that are not in the delta.", 271 0, 272 0, 273 OPT_GLOBAL|OPT_VENDOR, 274 }, 275 { 276 "delta.version", 277 0, 278 OPT_delta_version, 279 "The delta method version.", 280 "version", 281 0, 282 OPT_GLOBAL|OPT_READONLY|OPT_VENDOR, 283 }, 284 { 285 "descend", 286 'd', 287 OPT_descend, 288 "Command line directories name themselves and descendents.", 289 0, 290 0, 291 OPT_INVERT, 292 }, 293 { 294 "device", 295 0, 296 OPT_device, 297 "The device major and minor number string, empty if not a device file.", 298 0, 299 0, 300 OPT_READONLY, 301 }, 302 { 303 "devmajor", 304 0, 305 OPT_devmajor, 306 "The major device number, 0 if not supported.", 307 0, 308 0, 309 OPT_READONLY, 310 }, 311 { 312 "devminor", 313 0, 314 OPT_devminor, 315 "The minor device number, 0 if not supported.", 316 0, 317 0, 318 OPT_READONLY, 319 }, 320 { 321 "different", 322 'U', 323 OPT_different, 324 "Only copy archive members that have different modify time, mode, or size\ 325 than the target files. Target file names are checked after \b--edit\b\ 326 options are applied.", 327 }, 328 { 329 "dir", 330 0, 331 OPT_dir, 332 "File directory name (base elided).", 333 0, 334 0, 335 OPT_READONLY, 336 }, 337 { 338 "dots", 339 0, 340 OPT_dots, 341 "Print a dot on the standard error for each block transferred.", 342 }, 343 { 344 "edit", 345 's', 346 OPT_edit, 347 "Pathname substitution from \aold\a to \anew\a.\ 348 The first character is the expression delimiter.\ 349 There may be more than one edit expression;\ 350 each is applied in order from left to right.", 351 ",old,new,[glpsu]][i]]", 352 "[+g?All \aold\a patterns.]\ 353 [+l?Convert \anew\a to lower case.]\ 354 [+p?Print the edit result on the standard error.]\ 355 [+s?Stop edits on path if this edit succeeds.]\ 356 [+u?Convert \anew\a to upper case.]\ 357 [+i?Append member index to pathname in \b.%04d format\b.]", 358 }, 359 { 360 "entry", 361 0, 362 OPT_entry, 363 "File entry ordinal.", 364 0, 365 0, 366 OPT_HEADER, 367 }, 368 { 369 "eom", 370 0, 371 OPT_eom, 372 "End of media prompt or !\acommand\a. Processing terminates if\ 373 \b!\b\acommand\a returns non-zero exit status or if \b!\b is\ 374 specified.", 375 "[!]][prompt]]", 376 }, 377 { 378 "exact", 379 'n', 380 OPT_exact, 381 "Exit after each file arg matches exactly once.", 382 }, 383 { 384 "exthdr.name", 385 0, 386 OPT_extended_name, 387 "Equivalent to \bheader\b:=\aformat\a.", 388 "format", 389 }, 390 { 391 "file", 392 'f', 393 OPT_file, 394 "The main archive file name.", 395 "path", 396 }, 397 { 398 "filter", 399 0, 400 OPT_filter, 401 "Input/output file filter command. \acommand\a is applied to each\ 402 file as it is read from or written to the archive. \acommand\a is\ 403 split into space separated arguments, and is executed with the\ 404 pathname of the file to be processed as the last argument.\ 405 The standard output of the resulting command is read by \bpax\b.\ 406 \b--nodescend\b is implied by \b--filter\b. If \acommand\a is \b-\b\ 407 and the archive is being written and there are no command line\ 408 \afile\a arguments, then each line on the standard input is\ 409 interpreted as a delimiter separated command:\ 410 \bX\b\aoptions\a\bX\b\acommand\a\bX\b\aphysical\a\bX\b\alogical\a,\ 411 where:", 412 "command", 413 "[+X?A delimiter character that does not appear outside quotes.]\ 414 [+options?\b,\b separated [\bno\b]]\aname\a[=\avalue\a]] options:]{\ 415 [+logical?Override the command line \b--logical\b and\ 416 \b--physical\b options for this file.]\ 417 [+physical?Override the command line \b--logical\b and\ 418 \b--physical\b options for this file.]\ 419 }\ 420 [+command?A shell command that reads the physical file and writes\ 421 the filtered contents to the standard output. If \acommand\a\ 422 is empty then the file contents are copied unchanged.]\ 423 [+physical?The actual file path, used for archive status.]\ 424 [+logical?The file path as it will appear in the archive. If\ 425 \alogical\a is empty then the \aphysical\a path is used. The\ 426 resulting path is still subject to any \b--edit\b options.]" 427 }, 428 { 429 "forceconvert", 430 0, 431 OPT_forceconvert, 432 "Force \b--from\b conversion even if the data contains control\ 433 characters in the first 256 bytes.", 434 }, 435 { 436 "format", 437 'x', 438 OPT_format, 439 "The archive format. Formats are automatically detected on read. A\ 440 basic, compress and delta format may be combined, separated by \b:\b.\ 441 Each format may be followed by =\bdetails\b; details are format\ 442 specific. The supported formats are:", 443 "format:=" FMT_DEFAULT, 444 "\fformats\f", 445 }, 446 { 447 "from", 448 0, 449 OPT_from, 450 "File data input character set name.\ 451 Only files that have no control characters in the first 256 bytes\ 452 are converted. See \b--charset\b for supported character set names.", 453 "charset", 454 "\fcharsets\f", 455 }, 456 { 457 "gid", 458 0, 459 OPT_gid, 460 "Group id. The default is the group id of the invoking process.", 461 "group", 462 0, 463 OPT_HEADER|OPT_NUMBER, 464 }, 465 { 466 "globexthdr.name", 467 0, 468 OPT_global_name, 469 "Equivalent to \bheader\b=\aformat\a.", 470 "format", 471 }, 472 { 473 "gname", 474 0, 475 OPT_gname, 476 "Group name. The default is the group name of the invoking process.", 477 "group", 478 0, 479 OPT_HEADER, 480 }, 481 { 482 "hdrcharset", 483 0, 484 OPT_hdrcharset, 485 "The name of the character set used to encode text fields in pax extended\ 486 header record text fields. See \b--charset\b for supported character\ 487 set names.", 488 "charset", 489 0, 490 OPT_HEADER, 491 }, 492 { 493 "header", 494 0, 495 OPT_header, 496 "\bheader\b=\aformat\a sets the global header path name format to the\ 497 \blistopt\b \aformat\a. The default is \b" HEADER_EXTENDED_STD "\b\ 498 when strict conformance is in effect (see \bgetconf\b(1) CONFORMANCE)\ 499 and \b" HEADER_EXTENDED "\b otherwise. \bheader\b:=\aformat\a\ 500 sets the extended header path name format to the \blistopt\b\ 501 \aformat\a. The default is \b" HEADER_GLOBAL_STD "\b when strict\ 502 conformance is in effect and \b" HEADER_GLOBAL "\b otherwise.\ 503 The strict conformance defaults are prone to global header filename\ 504 collisions and are ill-defined when extended header names exceed the\ 505 underlying header format limits.", 506 "format", 507 }, 508 { 509 "ignore", 510 0, 511 OPT_ignore, 512 "\bignore\b=\apattern\a ignores all global and extended header keywords\ 513 matching the \bksh\b(1) \apattern\a; \bignore\b:=\apattern\a ignores\ 514 all extended header keywords matching \apattern\a.", 515 "pattern", 516 }, 517 { 518 "ino", 519 0, 520 OPT_ino, 521 "The file serial number, 0 if not supported.", 522 0, 523 0, 524 OPT_READONLY, 525 }, 526 { 527 "install", 528 0, 529 OPT_install, 530 "Generate an installation \bsh\b(1) script file that contains\ 531 \bchmod\b(1), \bchgrp\b(1) and \bchown\b(1) commands to restore\ 532 file modes and ownership not supported by standard \bcpio\b(1)\ 533 and \btar\b(1). Only files with user or group specific\ 534 read/execute/setuid permissions are included in the script.\ 535 The script is added to the archive with member name \apath\a.", 536 "path", 537 }, 538 { 539 "intermediate", 540 'I', 541 OPT_intermediate, 542 "Copy each file to an intermediate name and rename to the\ 543 real name if the intermediate copy succeeds; otherwise retain\ 544 the original file and issue a diagnostic.", 545 }, 546 { 547 "invalid", 548 0, 549 OPT_invalid, 550 "Invalid path action:", 551 "action", 552 "[b:binary?hdrcharset=BINARY extended header record for unencodable data.]\ 553 [i:bypass|ignore?Silently ignore.]\ 554 [p:rename|prompt?Prompt for new name.]\ 555 [t:write|translate?Automatically translate and/or truncate\ 556 to local specifications.]\ 557 [u:utf-8|UTF-8?Convert to UTF-8.]", 558 }, 559 { 560 "invert", 561 'c', 562 OPT_invert, 563 "Invert pattern match sense. The !(...) construct is more general.", 564 }, 565 { 566 "keepgoing", 567 'K', 568 OPT_keepgoing, 569 "Attempt to skip over damaged input archive data.", 570 }, 571 { 572 "label", 573 0, 574 OPT_label, 575 "Append \astring\a to the volume label; \blabel\b:=\astring\a\ 576 prepends \astring\a.", 577 "string", 578 }, 579 { 580 "link", 581 'l', 582 OPT_link, 583 "Hard link files on output if possible.", 584 }, 585 { 586 "linkdata", 587 0, 588 OPT_linkdata, 589 "Output data with each hard link. The default outputs the\ 590 data only with the first link in the archive.", 591 }, 592 { 593 "linkop", 594 0, 595 OPT_linkop, 596 "The link operation string, \b==\b for hard links, \b->\b for\ 597 symbolic links, otherwise empty.", 598 0, 599 0, 600 OPT_READONLY, 601 }, 602 { 603 "linkpath", 604 0, 605 OPT_linkpath, 606 "Symbolic link pathname.", 607 "path", 608 0, 609 OPT_HEADER, 610 }, 611 { 612 "listformat|listopt", 613 0, 614 OPT_listformat, 615 "Append to the member listing format string. \aformat\a follows\ 616 \bprintf\b(3) conventions, except that \bsfio\b(3) inline ids\ 617 are used instead of arguments:\ 618 %[-+]][\awidth\a[.\aprecis\a[.\abase\a]]]]]](\aid\a[:\asubformat\a]])\achar\a.\ 619 If \achar\a is \bs\b then the string form of the item is listed,\ 620 otherwise the corresponding numeric form is listed. \asubformat\a\ 621 overrides the default formatting for \aid\a. All of the file related\ 622 options are supported as \aid\as, along with the following:", 623 "format", 624 "\flistformat\f", 625 }, 626 { 627 "listmacro", 628 0, 629 OPT_listmacro, 630 "Define a \b--listformat\b macro.", 631 "name[=value]]", 632 }, 633 { 634 "local", 635 0, 636 OPT_local, 637 "Reject files and links that traverse outside the current directory.", 638 }, 639 { 640 "logical|follow", 641 'L', 642 OPT_logical, 643 "Follow symbolic links. The default is determined by\ 644 \bgetconf PATH_RESOLVE\b.", 645 }, 646 { 647 "magic", 648 0, 649 OPT_magic, 650 "The header magic string; empty if not supported.", 651 0, 652 0, 653 OPT_READONLY, 654 }, 655 { 656 "mark", 657 0, 658 OPT_mark, 659 "The file type mark character string:", 660 0, 661 "[+=?hard link]\ 662 [+@?symbolic link]\ 663 [+/?directory]\ 664 [+|?fifo]\ 665 [+=?socket]\ 666 [+$?block or character special]\ 667 [+*?executable]", 668 OPT_READONLY, 669 }, 670 { 671 "maxout", 672 0, 673 OPT_maxout, 674 "Output media size limit.", 675 "size", 676 0, 677 OPT_NUMBER, 678 }, 679 { 680 "metaphysical", 681 'H', 682 OPT_metaphysical, 683 "Follow command argument symbolic links, otherwise don't follow.\ 684 The default is determined by \bgetconf PATH_RESOLVE\b.", 685 }, 686 { 687 "meter", 688 'm', 689 OPT_meter, 690 "Display a one line text meter showing archive read progress.\ 691 The input must be seekable. \bcompress\b and \bbzip\b uncompressed\ 692 input size is estimated.", 693 }, 694 { 695 "mkdir", 696 0, 697 OPT_mkdir, 698 "Create intermediate directories on output. On by default.", 699 }, 700 { 701 "mode", 702 0, 703 OPT_mode, 704 "The file type and acces mode.", 705 0, 706 0, 707 OPT_READONLY, 708 }, 709 { 710 "mtime", 711 0, 712 OPT_mtime, 713 "Preserve or set file modify times.", 714 "time", 715 0, 716 OPT_HEADER|OPT_OPTIONAL, 717 }, 718 { 719 "name", 720 0, 721 OPT_name, 722 "File base name (directory elided).", 723 0, 724 0, 725 OPT_HEADER, 726 }, 727 { 728 "newer", 729 'N', 730 OPT_newer, 731 "Only copy archive members that are newer than the target files.\ 732 Target file names are checked after \b--edit\b options are applied.", 733 }, 734 { 735 "nlink", 736 0, 737 OPT_nlink, 738 "The hard link count.", 739 0, 740 0, 741 OPT_READONLY, 742 }, 743 { 744 "options", 745 'o', 746 OPT_options, 747 "Set options without leading -- from \astring\a.", 748 "string", 749 }, 750 { 751 "ordered", 752 'O', 753 OPT_ordered, 754 "Input files and base are ordered by name.", 755 }, 756 { 757 "owner", 758 0, 759 OPT_owner, 760 "Change output file owner to current user or to \auid\a\ 761 if specified.", 762 "uid", 763 }, 764 { 765 "passphrase", 766 'E', 767 OPT_passphrase, 768 "Passphrase for formats that support encryption. The default value is" 769 " prompted on and read from \b/dev/tty\b.", 770 "passphrase", 771 }, 772 { 773 "path", 774 0, 775 OPT_path, 776 "File path name.", 777 "path", 778 0, 779 OPT_HEADER, 780 }, 781 { 782 "physical", 783 'P', 784 OPT_physical, 785 "Don't follow symbolic links.\ 786 The default is determined by \bgetconf PATH_RESOLVE\b.", 787 }, 788 { 789 "pid", 790 0, 791 OPT_pid, 792 "\bpax\b process id.", 793 }, 794 { 795 "preserve", 796 'p', 797 OPT_preserve, 798 "Preserve selected file attributes:", 799 "aemops", 800 "[+a?Don't preserve access time.]\ 801 [+e?Preserve everything permissible.]\ 802 [+m?Don't preserve modify time.]\ 803 [+o?Preserve user, group, setuid and setgid.]\ 804 [+p?Preserve mode.]\ 805 [+s?Preserve setuid and setgid.]", 806 OPT_OPTIONAL, 807 }, 808 { 809 "read", 810 'r', 811 OPT_read, 812 "Read files from the archive.", 813 }, 814 { 815 "record-charset", 816 0, 817 OPT_record_charset, 818 "Enable character set translation. On by default.", 819 }, 820 { 821 "record-delimiter", 822 0, 823 OPT_record_delimiter, 824 "\bvdb\b format record delimiter character.\ 825 No delimiter if omitted. The default is ; .", 826 "char", 827 }, 828 { 829 "record-format", 830 0, 831 OPT_record_format, 832 "Labeled tape record format:", 833 "DFSUV", 834 "[+D?decimal variable]\ 835 [+F?fixed length]\ 836 [+S?spanned]\ 837 [+U?input block size]\ 838 [+B?binary variable]", 839 }, 840 { 841 "record-header", 842 0, 843 OPT_record_header, 844 "Member header, NULL if omitted. The default value is format specific.", 845 }, 846 { 847 "record-line", 848 0, 849 OPT_record_line, 850 "Records are lines. The default is format specific.", 851 }, 852 { 853 "record-match", 854 0, 855 OPT_record_match, 856 "Select record formats that match \apattern\a.", 857 "pattern", 858 }, 859 { 860 "record-pad", 861 0, 862 OPT_record_pad, 863 "Pad records. The default is format specific.", 864 }, 865 { 866 "record-size", 867 0, 868 OPT_record_size, 869 "Fixed length record size. The default is format specific.", 870 "size", 871 0, 872 OPT_NUMBER, 873 }, 874 { 875 "record-trailer", 876 0, 877 OPT_record_trailer, 878 "Member trailer, NULL if omitted. The default is format specific.", 879 "string", 880 }, 881 { 882 "release", 883 0, 884 OPT_release, 885 "The \bpax\b implementation release stamp.", 886 "string", 887 0, 888 OPT_GLOBAL|OPT_READONLY|OPT_IGNORE|OPT_VENDOR, 889 }, 890 { 891 "reset-atime", 892 't', 893 OPT_reset_atime, 894 "Reset the file access times of copied files.", 895 }, 896 { 897 "sequence", 898 0, 899 OPT_sequence, 900 "The archive member sequence number. Numbers for volumes >1 are of the\ 901 form \avolume\a.\asequence\a.", 902 0, 903 0, 904 OPT_READONLY, 905 }, 906 { 907 "size", 908 0, 909 OPT_size, 910 "File size.", 911 "size", 912 0, 913 OPT_HEADER|OPT_OPTIONAL, 914 4 915 }, 916 { 917 "strict", 918 'S', 919 OPT_strict, 920 "Disable non-standard extensions. The default is determined\ 921 by the \bgetconf\b(1) CONFORMANCE setting.", 922 }, 923 { 924 "summary", 925 0, 926 OPT_summary, 927 "List summary information for each archive. On by default.", 928 }, 929 { 930 "symlink", 931 0, 932 OPT_symlink, 933 "symlink files if possible.", 934 }, 935 { 936 "sync|fsync", 937 'F', 938 OPT_sync, 939 "\bfsync\b(2) each file after it is copied.", 940 }, 941 { 942 "tape", 943 0, 944 OPT_tape, 945 "Canonical tape unit name and operations.", 946 "[#]][lmhcu]][n]][bv]][s[#]]]][k[#]]]]", 947 "[+#?unit number [0-9]]]\ 948 [+l?low density]\ 949 [+m?medium density]\ 950 [+h?high density]\ 951 [+c?compressed]\ 952 [+u?uncompressed]\ 953 [+n?don't rewind on close]\ 954 [+b?bsd behavior]\ 955 [+v?system V behavior]\ 956 [+s[#]]?skip all [#]] volumes]\ 957 [+k[#]]?keep all [#]] volumes after skip]", 958 }, 959 { 960 "test", 961 'T', 962 OPT_test, 963 "Test mask for debugging. Multiple values are or'ed together.", 964 "mask", 965 0, 966 OPT_NUMBER, 967 }, 968 { 969 "testdate", 970 0, 971 OPT_testdate, 972 "\b--listformat\b time values newer than \adate\a will be printed\ 973 as \adate\a. Used for regression testing.", 974 "date", 975 }, 976 { 977 "times", 978 0, 979 OPT_times, 980 "Preserve \batime\b, \bctime\b, and \bmtime\b.", 981 }, 982 { 983 "tmp", 984 0, 985 OPT_tmp, 986 "The value of the \bTMPDIR\b environment variable if defined,\ 987 otherwise \b/tmp\b.", 988 }, 989 { 990 "to", 991 0, 992 OPT_to, 993 "Output character set. See \b--charset\b for supported\ 994 character set names.", 995 "name", 996 }, 997 { 998 "typeflag", 999 0, 1000 OPT_typeflag, 1001 "The header type flag string; empty if not supported.", 1002 0, 1003 0, 1004 OPT_READONLY, 1005 }, 1006 { 1007 "uid", 1008 0, 1009 OPT_uid, 1010 "User id. The default is the user id of the invoking process.", 1011 "user", 1012 0, 1013 OPT_HEADER|OPT_NUMBER, 1014 }, 1015 { 1016 "uname", 1017 0, 1018 OPT_uname, 1019 "User name. The default is the user name of the invoking process.", 1020 "user", 1021 0, 1022 OPT_HEADER, 1023 }, 1024 { 1025 "unblocked", 1026 0, 1027 OPT_unblocked, 1028 "Force unblocked input/output. The default is format specific.\ 1029 Both input and output are unblocked if the value is omitted.", 1030 "i|o", 1031 }, 1032 { 1033 "uncompressed|delta.size", 1034 0, 1035 OPT_uncompressed, 1036 "The uncompressed size of the current archive entry, 0 if the\ 1037 entry is not compressed.", 1038 "size", 1039 0, 1040 OPT_GLOBAL|OPT_READONLY|OPT_NUMBER|OPT_VENDOR, 1041 }, 1042 { 1043 "update", 1044 'u', 1045 OPT_update, 1046 "Only copy archive members that are newer than the target files.\ 1047 Target file names are checked before \b--edit\b options are applied.", 1048 }, 1049 { 1050 "verbose", 1051 'v', 1052 OPT_verbose, 1053 "Produce long listings or list each file name as it is processed.", 1054 }, 1055 { 1056 "verify", 1057 'i', 1058 OPT_verify, 1059 "Prompt for verification and/or rename.", 1060 }, 1061 { 1062 "version", 1063 0, 1064 OPT_version, 1065 "The header version string; empty if not supported.", 1066 0, 1067 0, 1068 OPT_READONLY, 1069 }, 1070 { 1071 "warn", 1072 'W', 1073 OPT_warn, 1074 "Enable archive format specific warnings.", 1075 }, 1076 { 1077 "write", 1078 'w', 1079 OPT_write, 1080 "Write files to the archive.", 1081 }, 1082 { 1083 "yes", 1084 'y', 1085 OPT_yes, 1086 "Prompt for yes/no file verification.", 1087 }, 1088 { 0 } 1089 }; 1090