/mandos/trunk

To get this branch, use:
bzr branch http://bzr.recompile.se/loggerhead/mandos/trunk

« back to all changes in this revision

Viewing changes to plugins.d/passprompt.c

  • Committer: Teddy Hogeborn
  • Date: 2008-07-31 19:51:44 UTC
  • mfrom: (24.1.5 mandos)
  • Revision ID: teddy@fukt.bsnet.se-20080731195144-yb37wz2sr1e6b3m4
Merge.

Show diffs side-by-side

added added

removed removed

Lines of Context:
49
49
volatile bool quit_now = false;
50
50
bool debug = false;
51
51
 
52
 
static void termination_handler(__attribute__((unused))int signum){
 
52
void termination_handler(__attribute__((unused))int signum){
53
53
  quit_now = true;
54
54
}
55
55
 
102
102
  
103
103
  sigemptyset(&new_action.sa_mask);
104
104
  sigaddset(&new_action.sa_mask, SIGINT);
 
105
  sigaddset(&new_action.sa_mask, SIGQUIT);
105
106
  sigaddset(&new_action.sa_mask, SIGHUP);
106
107
  sigaddset(&new_action.sa_mask, SIGTERM);
107
108
  sigaction(SIGINT, NULL, &old_action);
108
109
  if (old_action.sa_handler != SIG_IGN)
109
110
    sigaction(SIGINT, &new_action, NULL);
 
111
  sigaction(SIGQUIT, NULL, &old_action);
 
112
  if (old_action.sa_handler != SIG_IGN)
 
113
    sigaction(SIGQUIT, &new_action, NULL);
110
114
  sigaction(SIGHUP, NULL, &old_action);
111
115
  if (old_action.sa_handler != SIG_IGN)
112
116
    sigaction(SIGHUP, &new_action, NULL);
146
150
      status = EXIT_SUCCESS;
147
151
      break;
148
152
    }
 
153
    // ret == 0 makes no other sence than to retry to read from stdin
149
154
    if (ret < 0){
150
155
      if (errno != EINTR and not feof(stdin)){
151
156
        perror("getline");
153
158
        break;
154
159
      }
155
160
    }
156
 
    /* if(ret == 0), then the only sensible thing to do is to retry to
157
 
       read from stdin */
158
161
    fputc('\n', stderr);
159
162
  }
160
 
  
 
163
 
161
164
  if (debug){
162
165
    fprintf(stderr, "Restoring terminal attributes\n");
163
166
  }
164
167
  if (tcsetattr(STDIN_FILENO, TCSAFLUSH, &t_old) != 0){
165
168
    perror("tcsetattr+echo");
166
169
  }
167
 
  
 
170
 
168
171
  if (debug){
169
172
    fprintf(stderr, "%s is exiting\n", argv[0]);
170
173
  }