/* @(#)table.h 1.8 02/05/09 Copyright 1994 J. Schilling */ /* * Conversion table definitions for efficient conversion * of different file type representations * * Copyright (c) 1994 J. Schilling */ /* * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2, or (at your option) * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; see the file COPYING. If not, write to * the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */ /* * Unix uses the following file types */ #ifdef comment 0000000 /* Unallocated */ S_IFIFO 0010000 FIFO /* Named pipe */ S_IFCHR 0020000 CHR /* Character special */ S_IFMPC 0030000 /* UNUSED multiplexed c */ S_IFDIR 0040000 DIR /* Directory */ S_IFNAM 0050000 NAM /* Named file (XENIX) */ S_IFBLK 0060000 BLK /* Block special */ S_IFMPB 0070000 /* UNUSED multiplexed b */ S_IFREG 0100000 REG /* Regular file */ S_IFCNT 0110000 CTG /* Contiguous file */ S_IFLNK 0120000 SLNK /* Symbolic link */ S_IFSHAD 0130000 /* Solaris shadow inode */ S_IFSOCK 0140000 SOCK /* UNIX domain socket */ S_IFDOOR 0150000 /* Solaris DOOR */ S_IFWHT 0160000 /* BSD whiteout */ 0160200 /* Solaris cpio acl */ 0170000 /* UNUSED on UNIX */ S_IFEVC 0170000 /* UNOS event count */ /* UNOS/UNIX compat only*/ #endif /* * Internal table of file types. * * N.B. The order in this table is not important, * new real file types may be added before XT_DUMPDIR, * new symbolic file types may be added before XT_BAD. */ #define XT_NONE 0 /* unallocated file */ #define XT_FILE 1 /* regular file */ #define XT_CONT 2 /* contiguous file */ #define XT_LINK 3 /* hard link (needed for internal use) */ #define XT_SLINK 4 /* symbolic link */ #define XT_DIR 5 /* directory */ #define XT_CHR 6 /* character special */ #define XT_BLK 7 /* block special */ #define XT_FIFO 8 /* fifo (named pipe) */ #define XT_SOCK 9 /* unix domain socket */ #define XT_MPC 10 /* multiplexed character special */ #define XT_MPB 11 /* multiplexed block special */ #define XT_NSEM 12 /* XENIX named semaphore */ #define XT_NSHD 13 /* XENIX named shared data */ #define XT_DOOR 14 /* Solaris DOOR */ #define XT_EVENT 15 /* UNOS Event Count */ #define XT_WHT 16 /* BSD whiteout */ /* ... Reserved ... */ #define XT_DUMPDIR 20 /* Dir entry containing filenames */ #define XT_LONGLINK 21 /* Next file on tape has a long link */ #define XT_LONGNAME 22 /* Next file on tape has a long name */ #define XT_MULTIVOL 23 /* Continuation of a file from another tape*/ #define XT_NAMES 24 /* OLD */ #define XT_SPARSE 25 /* for files with holes in it */ #define XT_VOLHDR 26 /* Tape Volume header */ #define XT_META 27 /* Inode meta data only */ #define XT_BAD 31 /* illegal file type */ extern char iftoxt_tab[]; extern char ustoxt_tab[]; extern char vttoxt_tab[]; extern int xttoif_tab[]; extern char xttost_tab[]; extern char xttous_tab[]; extern char xttar_tab[]; extern char xtstar_tab[]; extern char xtustar_tab[]; extern char xtexustar_tab[]; extern char *xttostr_tab[]; extern char *xttoname_tab[]; #define IFTOXT(t) (iftoxt_tab[((t)&S_IFMT) >> 12])/* UNIX to XT */ #define USTOXT(t) (ustoxt(t)) /* ustar to XT */ #define _USTOXT(t) (ustoxt_tab[(t)-REGTYPE]) /* ustar to XT */ #define _VTTOXT(t) (vttoxt_tab[(t)-'A']) /* vendor to XT */ #define XTTOIF(t) (xttoif_tab[(t)]) /* XT to UNIX */ #define XTTOST(t) (xttost_tab[(t)]) /* XT to star */ #define XTTOUS(t) (xttous_tab[(t)]) /* XT to ustar */ #define XTTOSTR(t) (xttostr_tab[(t)]) /* XT to string */ #define XTTONAME(t) (xttoname_tab[(t)]) /* XT to name */