# Header files

Header files access header information using normal D3
utilities.

Through the OSFI, it is possible to access information
about an item such as update stamps, permissions, ownership, and driver-specific
data. The header driver translates this information into a format
that looks like a standard D3 item.

Note: Access to the header
information via this driver is read-only. The only way to modify the
header information is through the normal update routines. This is
enabled via the Y correlative for D3 files. With the Y correlative,
the user, PIB, and/or timedate can be stamped by appending a u, p,
and/or t to the y character. No other information is currently available
for normal items. Header information updates on non-D3 items depend
on the behavior of the remote file system to which those items belong.

Any utility that physically moves the data (such as copy) changes the header information.

The save and restore utilities save and restore the header
information as well.

## Raw attribute definitions

When reading items
via the header driver, the items are returned as a dynamic array with
the following raw attribute definitions:

Note: Attributes 11-14
apply only for UNIX.

| Attribute | Description | md Entry |
| --- | --- | --- |
| 1 User-ID | D3 user name or the UNIX user number in hexadecimal of the last user to update this item. | hdr.user |
| 2 PIB | D3 PIB (in hexadecimal) of the last user to update this item. This field is undefined for non-D3 drivers. | hdr.pib |
| 3 Time/date | Hexadecimal representation of the number of seconds elapsed since 12:00 AM December 31, 1967 and the time the item was last updated. | hdr.date and hdr.time |
| 4 Permissions | Hexadecimal number representing the permissions on the item. This currently only applies to non-D3 items. | N/A |
| 5 GroupID | Group ID (in hexadecimal). Currently used only by the UNIX driver, but may be used by other drivers in the future. | N/A |
| 6 - 10 | Reserved | N/A |
| 11 | File type: d directory b block special file c character special file m multiplexor file l symbolic link p fifo - regular file ? unknown file type | hdr:unix:type |
| 12 | Size in decimal. | hdr:unix:bytes |
| 13 | Mode in octal. | hdr:unix:omode |
| 14 | Mode in text format (-rwxrwxrwx). | hdr:unix:mode |
| 15 | User-ID in decimal. | hdr:unix:uid |
| 16 | User-ID name. | hdr:unix:user |
| 17 | Group ID in decimal. | hdr:unix:gid |
| 18 | Group ID name. | hdr:unix:group |
| 19 | Creation date in decimal. | hdr:unix:cdate |
| 20 | Creation time in decimal. | hdr:unix:ctime |
| 21 | Modification date in decimal. | hdr:unix:mdate |
| 22 | Modification time in decimal. | hdr:unix:mtime |
| 23 | Access date in decimal. | hdr:unix:adate |
| 24 | Access time in decimal. | hdr:unix:atime |

## Q-pointer format

The format of the header
Q-pointer is:

| file.name | | |
| --- | --- | --- |
| | 001 | Q |
| | 002 | |
| | 003 | hdr:filename |
where

| hdr | Name of the hdr host in the dm,hosts, file. |
| --- | --- |
| filename | Name of the target file to examine. This can be a local D3 file (assuming the Y correlative has been added to the D-pointer), or a remote file (UNIX or MS-DOS). |
The file can also be opened by pre-pending the file name
with the string "hdr:".

Warning: Because the hdr:
driver is read-only, it does not make sense to create a QS-pointer
to it (to attempt to save the header data). Any attempt to do this
will have no effect upon a restore. Note that it is not necessary
to save header information since it is implicitly saved and restored
using the save and restore utilities.
Header information is *not* recorded on a t-dump since the succeeding t-load is considered to
be a batch of new updates which change the header information in a
driver-specific manner. Note that updates performed to a file from
a remote site will always show the updated user as dm.

## See also

- [copy command](https://d3codex.com/tcl/copy-command/)
- [hosts file](https://d3codex.com/systemfiles/hosts-file/)
- [Open Systems File interface](https://d3codex.com/definitions/open-systems-file-interface/)
- [QS-pointer](https://d3codex.com/definitions/qs-pointer/)
- [save command](https://d3codex.com/tcl/save-command/)
- [Super Q-pointer](https://d3codex.com/definitions/super-q-pointer/)
- [Synonym-defining items](https://d3codex.com/definitions/synonym-defining-items/)

---
Source: https://d3codex.com/definitions/header-files/ - part of the D3Codex reference.
