13e12c5d1SDavid du Colombier #include "common.h" 23e12c5d1SDavid du Colombier #include "send.h" 33e12c5d1SDavid du Colombier 43e12c5d1SDavid du Colombier /* 53e12c5d1SDavid du Colombier * Run a command to authorize or refuse entry. Return status 0 means 63e12c5d1SDavid du Colombier * authorize, -1 means refuse. 73e12c5d1SDavid du Colombier */ 83e12c5d1SDavid du Colombier void authorize(dest * dp)93e12c5d1SDavid du Colombierauthorize(dest *dp) 103e12c5d1SDavid du Colombier { 113e12c5d1SDavid du Colombier process *pp; 123e12c5d1SDavid du Colombier String *errstr; 133e12c5d1SDavid du Colombier 143e12c5d1SDavid du Colombier dp->authorized = 1; 15bd389b36SDavid du Colombier pp = proc_start(s_to_c(dp->repl1), (stream *)0, (stream *)0, outstream(), 1, 0); 16*7dd7cddfSDavid du Colombier if (pp == 0){ 17*7dd7cddfSDavid du Colombier dp->status = d_noforward; 183e12c5d1SDavid du Colombier return; 19*7dd7cddfSDavid du Colombier } 203e12c5d1SDavid du Colombier errstr = s_new(); 213e12c5d1SDavid du Colombier while(s_read_line(pp->std[2]->fp, errstr)) 223e12c5d1SDavid du Colombier ; 233e12c5d1SDavid du Colombier if ((dp->pstat = proc_wait(pp)) != 0) { 243e12c5d1SDavid du Colombier dp->repl2 = errstr; 253e12c5d1SDavid du Colombier dp->status = d_noforward; 263e12c5d1SDavid du Colombier } else 273e12c5d1SDavid du Colombier s_free(errstr); 283e12c5d1SDavid du Colombier proc_free(pp); 293e12c5d1SDavid du Colombier } 30