((editpid = fork())) { 310 case -‐1: 311 return (-‐1); 312 case 0: 313 sigacMon(SIGINT, &sa_int, NULL); 314 sigacMon(SIGQUIT, &sa_quit, NULL); 315 sigprocmask(SIG_SETMASK, &oldsigset, NULL); 316 if (notsetuid) { 317 (void)setgid(getgid()); 318 (void)setuid(getuid()); 319 } 320 errno = 0; 321 execlp(editor, basename(editor), tempname, (char *)NULL); 322 _exit(errno); 323 default: 324 /* parent */ 325 break; 326 } master.passwdをコピーした一時 ファイル(tempname)を引数にし てエディタ(editor)を開く. 104 switch (pw_edit(0)) { 105 case -‐1: 106 pw_fini(); 107 err(1, "pw_edit()"); <snip> 113 } vipw.c 後述