-
- /* Check the file name and put it in the block. */
-
- if (strlen (name) >= (size_t) NAME_FIELD_SIZE)
- write_long (name, GNUTYPE_LONGNAME);
- header = find_next_block ();
- memset (header->buffer, 0, sizeof (union block));
-
- assign_string (¤t_file_name, name);
-
- strncpy (header->header.name, name, NAME_FIELD_SIZE);
- header->header.name[NAME_FIELD_SIZE - 1] = '\0';
-
- /* Override some stat fields, if requested to do so. */
-
- if (owner_option != (uid_t) -1)
- st->st_uid = owner_option;
- if (group_option != (gid_t) -1)
- st->st_gid = group_option;
- if (mode_option)
- st->st_mode = ((st->st_mode & S_IFMT)
- | mode_adjust (st->st_mode, mode_option));
-
- /* Paul Eggert tried the trivial test ($WRITER cf a b; $READER tvf a)
- for a few tars and came up with the following interoperability
- matrix:
-
- WRITER
- 1 2 3 4 5 6 7 8 9 READER
- . . . . . . . . . 1 = SunOS 4.2 tar
- # . . # # . . # # 2 = NEC SVR4.0.2 tar
- . . . # # . . # . 3 = Solaris 2.1 tar
- . . . . . . . . . 4 = GNU tar 1.11.1
- . . . . . . . . . 5 = HP-UX 8.07 tar
- . . . . . . . . . 6 = Ultrix 4.1
- . . . . . . . . . 7 = AIX 3.2
- . . . . . . . . . 8 = Hitachi HI-UX 1.03
- . . . . . . . . . 9 = Omron UNIOS-B 4.3BSD 1.60Beta
-
- . = works
- # = ``impossible file type''
-
- The following mask for old archive removes the `#'s in column 4
- above, thus making GNU tar both a universal donor and a universal
- acceptor for Paul's test. */
-
- if (archive_format == V7_FORMAT)
- to_oct ((long) st->st_mode & 07777, 8, header->header.mode);