| #include "common.h" |
| #include "send.h" |
| |
| /* |
| * Run a command to authorize or refuse entry. Return status 0 means |
| * authorize, -1 means refuse. |
| */ |
| void |
| authorize(dest *dp) |
| { |
| process *pp; |
| String *errstr; |
| |
| dp->authorized = 1; |
| pp = proc_start(s_to_c(dp->repl1), (stream *)0, (stream *)0, outstream(), 1, 0); |
| if (pp == 0){ |
| dp->status = d_noforward; |
| return; |
| } |
| errstr = s_new(); |
| while(s_read_line(pp->std[2]->fp, errstr)) |
| ; |
| if ((dp->pstat = proc_wait(pp)) != 0) { |
| dp->repl2 = errstr; |
| dp->status = d_noforward; |
| } else |
| s_free(errstr); |
| proc_free(pp); |
| } |