/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

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