1: #ifndef lint
   2: static char sccsid[] = "@(#)subdir.c	5.1 (Berkeley) 7/2/83";
   3: #endif
   4: 
   5: #include "uucp.h"
   6: #ifdef  UUDIR
   7: /*
   8:  * By Tom Truscott, March 1983
   9:  * THIS VERSION OF SYSKLUDGE IS FOR USE ONLY
  10:  * WITH THE 'UUDIR' VERSION OF UUCP.
  11:  *
  12:  * There once was a separate 'uudir' package to retrofit
  13:  * versions of uucp, but that is no longer recommended.
  14:  *
  15:  * Prefix table.
  16:  * If a prefix is "abc", for example,
  17:  * then any file Spool/abc... is mapped to Spool/abc/abc... .
  18:  * The first prefix found is used, so D.foo should preceed D. in table.
  19:  *
  20:  * Each prefix must be a subdirectory of Spool, owned by uucp!
  21:  * Remember: use cron to uuclean these directories daily,
  22:  * and check them manual every now and then.  Beware complacency!
  23:  */
  24: 
  25: static char *prefix[] = {
  26:     DLocalX,    /* Outbound 'xqt' request files */
  27:     DLocal,     /* Outbound data files */
  28:     "D.",       /* Other "D." files (remember the "."!) */
  29:     "C.",       /* "C." subdirectory */
  30:     "X.",       /* "X." subdirectory */
  31:     "TM.",      /* Temporaries for inbound files */
  32:     0
  33: };
  34: 
  35: /*
  36:  * filename mapping kludges to put uucp work files in other directories.
  37:  */
  38: 
  39: #define BUFLEN  50
  40: /* assert(strlen(Spool)+1+14+1+14 <= BUFLEN) */
  41: 
  42: static  char fn1[BUFLEN], fn2[BUFLEN];  /* remapped filename areas */
  43: static  int inspool;        /* true iff working dir is Spool */
  44: 
  45: /*
  46:  * return (possibly) remapped string s
  47:  */
  48: char *
  49: SubFile(as)
  50: char *as;
  51: {
  52:     register char *s, **p;
  53:     register int n;
  54:     static char *tptr = NULL;
  55: 
  56:     /* Alternate buffers so "link(subfile(a), subfile(b))" works */
  57:     if (tptr != fn1)
  58:         tptr = fn1;
  59:     else
  60:         tptr = fn2;
  61: 
  62:     s = as;
  63:     tptr[0] = '\0';
  64: 
  65:     /* if s begins with Spool/, copy that to tptr and advance s */
  66:     if (strncmp(s, Spool, n = strlen(Spool)) == 0 && s[n] == '/') {
  67:         if (!inspool) {
  68:             strcpy(tptr, Spool);
  69:             strcat(tptr, "/");
  70:         }
  71:         s += n + 1;
  72:     }
  73:     else
  74:         if (!inspool)
  75:             return(as);
  76: 
  77:     /* look for first prefix which matches, and make subdirectory */
  78:     for (p = &prefix[0]; *p; p++) {
  79:         if (strncmp(s, *p, n = strlen(*p))==0 && s[n] && s[n] != '/') {
  80:             strcat(tptr, *p);
  81:             strcat(tptr, "/");
  82:             strcat(tptr, s);
  83:             return(tptr);
  84:         }
  85:     }
  86:     return(as);
  87: }
  88: 
  89: /*
  90:  * save away filename
  91:  */
  92: SubChDir(s)
  93: register char *s;
  94: {
  95:     inspool = (strcmp(s, Spool) == 0);
  96:     return(chdir(s));
  97: }
  98: 
  99: /*
 100:  * return possibly corrected directory for searching
 101:  */
 102: char *
 103: SubDir(d, pre)
 104: register char *d, pre;
 105: {
 106:     if (strcmp(d, Spool) == 0)
 107:         if (pre == CMDPRE)
 108:             return("/usr/spool/uucp/C.");
 109:         else if (pre == XQTPRE)
 110:             return("/usr/spool/uucp/X.");
 111:     return(d);
 112: }
 113: #else
 114: static int subdir_here;     /* quiet 'ranlib' command */
 115: #endif

Defined functions

SubChDir defined in line 92; used 1 times
SubDir defined in line 102; used 2 times
SubFile defined in line 48; used 2 times

Defined variables

fn1 defined in line 42; used 2 times
fn2 defined in line 42; used 1 times
  • in line 60
inspool defined in line 43; used 3 times
prefix defined in line 25; used 1 times
  • in line 78
sccsid defined in line 2; never used
subdir_here defined in line 114; never used

Defined macros

BUFLEN defined in line 39; used 2 times
  • in line 42(2)
Last modified: 1983-07-03
Generated: 2016-12-26
Generated by src2html V0.67
page hit count: 751
Valid CSS Valid XHTML 1.0 Strict