int Door_InitHandler();
int Door_CanDispense(int User, int Item);
int Door_DoDispense(int User, int Item);
int Door_InitHandler();
int Door_CanDispense(int User, int Item);
int Door_DoDispense(int User, int Item);
#if DEBUG
printf("Door_DoDispense: (User=%i,Item=%i)\n", User, Item);
#if DEBUG
printf("Door_DoDispense: (User=%i,Item=%i)\n", User, Item);
// Close write end of stdin, and set it to #0
close(stdin_pair[1]); dup2(stdin_pair[0], 0);
// Close read end of stdout, and set it to #1
close(stdout_pair[0]); dup2(stdout_pair[1], 1);
execl("/bin/sh", "sh", "-c", "llogin door -w-", NULL);
// Close write end of stdin, and set it to #0
close(stdin_pair[1]); dup2(stdin_pair[0], 0);
// Close read end of stdout, and set it to #1
close(stdout_pair[0]); dup2(stdout_pair[1], 1);
execl("/bin/sh", "sh", "-c", "llogin door -w-", NULL);
- #else
- // llogin or other
- child_stdin = popen("llogin door -w -", "w");
- if( !child_stdin || child_stdin == (void*)-1 ) {
+ if( giDoor_ChildStatus || read(stdout_pair[0], buf, 512) < 0) {