|  | #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); | 
|  | } |