1: /*
   2:  * Copyright (c) 1983 Regents of the University of California.
   3:  * All rights reserved.  The Berkeley software License Agreement
   4:  * specifies the terms and conditions for redistribution.
   5:  *
   6:  *	@(#)restore.h	5.1 (Berkeley) 5/28/85
   7:  */
   8: 
   9: #include <stdio.h>
  10: #include <sys/param.h>
  11: #include <sys/inode.h>
  12: #include <sys/fs.h>
  13: #include <sys/dir.h>
  14: 
  15: /*
  16:  * Flags
  17:  */
  18: extern int  cvtflag;    /* convert from old to new tape format */
  19: extern int  bflag;      /* set input block size */
  20: extern int  dflag;      /* print out debugging info */
  21: extern int  hflag;      /* restore heirarchies */
  22: extern int  mflag;      /* restore by name instead of inode number */
  23: extern int  vflag;      /* print out actions taken */
  24: extern int  yflag;      /* always try to recover from tape errors */
  25: /*
  26:  * Global variables
  27:  */
  28: extern char *dumpmap;   /* map of inodes on this dump tape */
  29: extern char *clrimap;   /* map of inodes to be deleted */
  30: extern ino_t    maxino;     /* highest numbered inode in this file system */
  31: extern long dumpnum;    /* location of the dump on this tape */
  32: extern long volno;      /* current volume being read */
  33: extern long ntrec;      /* number of TP_BSIZE records per tape block */
  34: extern time_t   dumptime;   /* time that this dump begins */
  35: extern time_t   dumpdate;   /* time that this dump was made */
  36: extern char command;    /* opration being performed */
  37: extern FILE *terminal;  /* file descriptor for the terminal input */
  38: 
  39: /*
  40:  * Each file in the file system is described by one of these entries
  41:  */
  42: struct entry {
  43:     char    *e_name;        /* the current name of this entry */
  44:     u_char  e_namlen;       /* length of this name */
  45:     char    e_type;         /* type of this entry, see below */
  46:     short   e_flags;        /* status flags, see below */
  47:     ino_t   e_ino;          /* inode number in previous file sys */
  48:     long    e_index;        /* unique index (for dumpped table) */
  49:     struct  entry *e_parent;    /* pointer to parent directory (..) */
  50:     struct  entry *e_sibling;   /* next element in this directory (.) */
  51:     struct  entry *e_links;     /* hard links to this inode */
  52:     struct  entry *e_entries;   /* for directories, their entries */
  53:     struct  entry *e_next;      /* hash chain list */
  54: };
  55: /* types */
  56: #define LEAF 1          /* non-directory entry */
  57: #define NODE 2          /* directory entry */
  58: #define LINK 4          /* synthesized type, stripped by addentry */
  59: /* flags */
  60: #define EXTRACT     0x0001  /* entry is to be replaced from the tape */
  61: #define NEW     0x0002  /* a new entry to be extracted */
  62: #define KEEP        0x0004  /* entry is not to change */
  63: #define REMOVED     0x0010  /* entry has been removed */
  64: #define TMPNAME     0x0020  /* entry has been given a temporary name */
  65: #define EXISTED     0x0040  /* directory already existed during extract */
  66: /*
  67:  * functions defined on entry structs
  68:  */
  69: extern struct entry *lookupino();
  70: extern struct entry *lookupname();
  71: extern struct entry *lookupparent();
  72: extern struct entry *addentry();
  73: extern char *myname();
  74: extern char *savename();
  75: extern char *gentempname();
  76: extern char *flagvalues();
  77: extern ino_t lowerbnd();
  78: extern ino_t upperbnd();
  79: extern DIR *rst_opendir();
  80: extern struct direct *rst_readdir();
  81: #define NIL ((struct entry *)(0))
  82: /*
  83:  * Constants associated with entry structs
  84:  */
  85: #define HARDLINK    1
  86: #define SYMLINK     2
  87: #define TMPHDR      "RSTTMP"
  88: 
  89: /*
  90:  * The entry describes the next file available on the tape
  91:  */
  92: struct context {
  93:     char    *name;      /* name of file */
  94:     ino_t   ino;        /* inumber of file */
  95:     struct  dinode *dip;    /* pointer to inode */
  96:     char    action;     /* action being taken on this file */
  97: } curfile;
  98: /* actions */
  99: #define USING   1   /* extracting from the tape */
 100: #define SKIP    2   /* skipping */
 101: #define UNKNOWN 3   /* disposition or starting point is unknown */
 102: 
 103: /*
 104:  * Other exported routines
 105:  */
 106: extern ino_t psearch();
 107: extern ino_t dirlookup();
 108: extern long listfile();
 109: extern long deletefile();
 110: extern long addfile();
 111: extern long nodeupdates();
 112: extern long verifyfile();
 113: extern char *rindex();
 114: extern char *index();
 115: extern char *strcat();
 116: extern char *strncat();
 117: extern char *strcpy();
 118: extern char *strncpy();
 119: extern char *fgets();
 120: extern char *mktemp();
 121: extern char *malloc();
 122: extern char *calloc();
 123: extern char *realloc();
 124: extern long lseek();
 125: 
 126: /*
 127:  * Useful macros
 128:  */
 129: #define MWORD(m,i) (m[(unsigned)(i-1)/NBBY])
 130: #define MBIT(i) (1<<((unsigned)(i-1)%NBBY))
 131: #define BIS(i,w)    (MWORD(w,i) |=  MBIT(i))
 132: #define BIC(i,w)    (MWORD(w,i) &= ~MBIT(i))
 133: #define BIT(i,w)    (MWORD(w,i) & MBIT(i))
 134: 
 135: #define dprintf     if (dflag) fprintf
 136: #define vprintf     if (vflag) fprintf
 137: 
 138: #define GOOD 1
 139: #define FAIL 0

Defined variables

curfile defined in line 97; used 60 times

Defined struct's

context defined in line 92; never used
entry defined in line 42; used 164 times

Defined macros

BIC defined in line 132; never used
BIS defined in line 131; never used
HARDLINK defined in line 85; used 2 times
KEEP defined in line 62; used 11 times
LINK defined in line 58; used 8 times
MBIT defined in line 130; used 3 times
MWORD defined in line 129; used 3 times
TMPHDR defined in line 87; used 1 times
UNKNOWN defined in line 101; used 2 times
USING defined in line 99; used 5 times

Usage of this include

Last modified: 1985-05-29
Generated: 2016-12-26
Generated by src2html V0.67
page hit count: 972
Valid CSS Valid XHTML 1.0 Strict