13e12c5d1SDavid du Colombier #include "common.h"
23e12c5d1SDavid du Colombier #include "send.h"
33e12c5d1SDavid du Colombier
43e12c5d1SDavid du Colombier /* pipe an address through a command to translate it */
53e12c5d1SDavid du Colombier extern dest *
translate(dest * dp)63e12c5d1SDavid du Colombier translate(dest *dp)
73e12c5d1SDavid du Colombier {
83e12c5d1SDavid du Colombier process *pp;
93e12c5d1SDavid du Colombier String *line;
103e12c5d1SDavid du Colombier dest *rv;
11*7dd7cddfSDavid du Colombier char *cp;
12*7dd7cddfSDavid du Colombier int n;
133e12c5d1SDavid du Colombier
14bd389b36SDavid du Colombier pp = proc_start(s_to_c(dp->repl1), (stream *)0, outstream(), outstream(), 1, 0);
153e12c5d1SDavid du Colombier if (pp == 0) {
163e12c5d1SDavid du Colombier dp->status = d_resource;
173e12c5d1SDavid du Colombier return 0;
183e12c5d1SDavid du Colombier }
193e12c5d1SDavid du Colombier line = s_new();
20*7dd7cddfSDavid du Colombier for(;;) {
21*7dd7cddfSDavid du Colombier cp = Brdline(pp->std[1]->fp, '\n');
22*7dd7cddfSDavid du Colombier if(cp == 0)
23*7dd7cddfSDavid du Colombier break;
24*7dd7cddfSDavid du Colombier if(strncmp(cp, "_nosummary_", 11) == 0){
25*7dd7cddfSDavid du Colombier nosummary = 1;
26*7dd7cddfSDavid du Colombier continue;
27*7dd7cddfSDavid du Colombier }
28*7dd7cddfSDavid du Colombier n = Blinelen(pp->std[1]->fp);
29*7dd7cddfSDavid du Colombier cp[n-1] = ' ';
30*7dd7cddfSDavid du Colombier s_nappend(line, cp, n);
31*7dd7cddfSDavid du Colombier }
323e12c5d1SDavid du Colombier rv = s_to_dest(s_restart(line), dp);
333e12c5d1SDavid du Colombier s_restart(line);
343e12c5d1SDavid du Colombier while(s_read_line(pp->std[2]->fp, line))
353e12c5d1SDavid du Colombier ;
363e12c5d1SDavid du Colombier if ((dp->pstat = proc_wait(pp)) != 0) {
373e12c5d1SDavid du Colombier dp->repl2 = line;
383e12c5d1SDavid du Colombier rv = 0;
393e12c5d1SDavid du Colombier } else
403e12c5d1SDavid du Colombier s_free(line);
413e12c5d1SDavid du Colombier proc_free(pp);
423e12c5d1SDavid du Colombier return rv;
433e12c5d1SDavid du Colombier }
44