BSD 4_1c_2 release
[unix-history] / usr / src / usr.bin / uucp / syskludge / syskludge.c
CommitLineData
e804469b
C
1/* @(#)syskludge.c 4.1 (Berkeley) 1/1/83 */
2
3#include <sys/param.h>
4
5/*
6 * Prefix table.
7 * If a prefix is "xyz", for example,
8 * then any file Spool/xyz... is mapped to Spool/xyz/xyz... .
9 * The first prefix found is used, so D.foo should preceed D. in table.
10 * Should be tuned on a per-system basis.
11 *
12 * Each prefix must be a subdirectory of Spool, owned by uucp!
13 */
14
15static char *prefix[] = {
16 "D.decvax",
17 "D.ucsfcgl",
18 "D.npois",
19 "D.ihnss",
20 "D.cbosgd",
21 "D.cbosg",
22 "D.ucbvaxB",
23 "D.ucbvax",
24 "D.ucb",
25 "LOG.",
26 "LTMP.",
27 "STST.",
28 "D.", /* "D." subdirectory (remember the "."!) */
29 "C.", /* "C." subdirectory */
30 "X.",
31 0
32};
33
34/*
35 * filename mapping kludges to put uucp work files in other directories.
36 */
37
38char fn1[MAXPATHLEN], fn2[MAXPATHLEN]; /* remapped filename areas */
39char sfn[MAXPATHLEN]; /* most recent filename passed to chdir */
40
41extern char *Spool;
42
43char *strcpy(), *strcat();
44
45/*
46 * return (possibly) remapped string s,
47 * using buffer area t if necessary.
48 */
49static char *
50_dofix(s, t)
51register char *s, *t;
52{
53 register char **p;
54 register int n;
55 char *os;
56
57 os = s;
58 t[0] = '\0';
59
60 /* if s begins with Spool/, copy that to t and advance s */
61 if (strncmp(s, Spool, n = strlen(Spool)) == 0 && s[n] == '/') {
62 strcpy(t, Spool);
63 strcat(t, "/");
64 s += n + 1;
65 }
66 else
67 if (strcmp(sfn, Spool))
68 return(os);
69
70 /* look for first prefix which matches, and make subdirectory */
71 for (p = &prefix[0]; *p; p++) {
72 if (strncmp(s, *p, n = strlen(*p))==0 && s[n] && s[n] != '/') {
73 strcat(t, *p);
74 strcat(t, "/");
75 strcat(t, s);
76 return(t);
77 }
78 }
79 return(os);
80}
81
82char *
83_fixf(s)
84char *s;
85{
86 return(_dofix(s, fn1));
87}
88
89char *
90_fixf2(s)
91char *s;
92{
93 return(_dofix(s, fn2));
94}
95
96
97/*
98 * save away filename
99 */
100char *
101_savfile(s)
102char *s;
103{
104 return(strcpy(sfn, s));
105}