|
|
1.1 root 1: #ifndef lint
2: static char *sccsid="@(#)map.c 2.5 (smail) 9/15/87";
3: #endif
4:
5: # include <stdio.h>
6: # include <sys/types.h>
7: # include "defs.h"
8:
9: extern int queuecost;
10:
11: /*
12: **
13: ** map(): map addresses into <host, user, form, cost> sets.
14: **
15: ** Calls resolve() for each address of argv. The result is hostv and
16: ** userv arrays (pointing into buffers userz and hostz), and formv array.
17: **
18: */
19:
20: map(argc, argv, hostv, userv, formv, costv)
21: int argc; /* address count */
22: char **argv; /* address vector */
23: char *hostv[]; /* remote host vector */
24: char *userv[]; /* user name vector */
25: enum eform formv[]; /* address format vector */
26: int costv[]; /* cost vector */
27: {
28: int i, cost;
29: enum eform resolve();
30: char *c;
31: static char userbuf[BIGBUF], *userz;
32: static char hostbuf[BIGBUF], *hostz;
33:
34: userz = userbuf;
35: hostz = hostbuf;
36:
37: for( i=0; i<argc; i++ ) {
38: #ifdef DEFQUEUE
39: cost = queuecost+1; /* default is queueing */
40: #else
41: cost = queuecost-1; /* default is no queueing */
42: #endif
43: userv[i] = userz; /* put results here */
44: hostv[i] = hostz;
45: if ( **argv == '(' ) { /* strip () */
46: ++*argv;
47: c = index( *argv, ')' );
48: if (c)
49: *c = '\0';
50: }
51: /* here it comes! */
52: formv[i] = resolve(*argv++, hostz, userz, &cost);
53: costv[i] = cost;
54: userz += strlen( userz ) + 1; /* skip past \0 */
55: hostz += strlen( hostz ) + 1;
56: }
57: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.