URI:
       tauth_getkey.c - plan9port - [fork] Plan 9 from user space
  HTML git clone git://src.adamsgaard.dk/plan9port
   DIR Log
   DIR Files
   DIR Refs
   DIR README
   DIR LICENSE
       ---
       tauth_getkey.c (704B)
       ---
            1 #include <u.h>
            2 #include <libc.h>
            3 #include <auth.h>
            4 
            5 int
            6 auth_getkey(char *params)
            7 {
            8         char *name;
            9         int pid;
           10         Waitmsg *w;
           11 
           12         /* start /factotum to query for a key */
           13         name = unsharp("#9/bin/factotum");
           14         if(name == nil || access(name, AEXEC) < 0){
           15                 werrstr("auth_getkey: no $PLAN9/bin/factotum: didn't get key %s", params);
           16                 return -1;
           17         }
           18         switch(pid = fork()){
           19         case -1:
           20                 werrstr("can't fork for %s: %r", name);
           21                 return -1;
           22         case 0:
           23                 execl(name, "getkey", "-g", params, nil);
           24                 exits(0);
           25         default:
           26                 free(name);
           27                 for(;;){
           28                         w = wait();
           29                         if(w == nil)
           30                                 break;
           31                         if(w->pid == pid){
           32                                 if(w->msg[0] != '\0'){
           33                                         free(w);
           34                                         return -1;
           35                                 }
           36                                 free(w);
           37                                 return 0;
           38                         }
           39                 }
           40         }
           41         return 0;
           42 }