/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/plymouth.c

  • Committer: Teddy Hogeborn
  • Date: 2011-12-31 20:07:11 UTC
  • mfrom: (535.1.9 wireless-network-hook)
  • Revision ID: teddy@recompile.se-20111231200711-6dli3r8drftem57r
Merge new wireless network hook.  Fix bridge network hook to use
hardware addresses instead of interface names.  Implement and document
new "CONNECT" environment variable for network hooks.

Show diffs side-by-side

added added

removed removed

Lines of Context:
218
218
int is_plymouth(const struct dirent *proc_entry){
219
219
  int ret;
220
220
  {
221
 
    uintmax_t maxvalue;
 
221
    uintmax_t proc_id;
222
222
    char *tmp;
223
223
    errno = 0;
224
 
    maxvalue = strtoumax(proc_entry->d_name, &tmp, 10);
 
224
    proc_id = strtoumax(proc_entry->d_name, &tmp, 10);
225
225
 
226
226
    if(errno != 0 or *tmp != '\0'
227
 
       or maxvalue != (uintmax_t)((pid_t)maxvalue)){
 
227
       or proc_id != (uintmax_t)((pid_t)proc_id)){
228
228
      return 0;
229
229
    }
230
230
  }
265
265
 
266
266
pid_t get_pid(void){
267
267
  int ret;
268
 
  uintmax_t maxvalue = 0;
 
268
  uintmax_t proc_id = 0;
269
269
  FILE *pidfile = fopen(plymouth_pid, "r");
270
270
  /* Try the new pid file location */
271
271
  if(pidfile != NULL){
272
 
    ret = fscanf(pidfile, "%" SCNuMAX, &maxvalue);
 
272
    ret = fscanf(pidfile, "%" SCNuMAX, &proc_id);
273
273
    if(ret != 1){
274
 
      maxvalue = 0;
 
274
      proc_id = 0;
275
275
    }
276
276
    fclose(pidfile);
277
277
  }
278
278
  /* Try the old pid file location */
279
 
  if(maxvalue == 0){
 
279
  if(proc_id == 0){
280
280
    pidfile = fopen(plymouth_pid, "r");
281
281
    if(pidfile != NULL){
282
 
      ret = fscanf(pidfile, "%" SCNuMAX, &maxvalue);
 
282
      ret = fscanf(pidfile, "%" SCNuMAX, &proc_id);
283
283
      if(ret != 1){
284
 
        maxvalue = 0;
 
284
        proc_id = 0;
285
285
      }
286
286
      fclose(pidfile);
287
287
    }
288
288
  }
289
289
  /* Look for a plymouth process */
290
 
  if(maxvalue == 0){
 
290
  if(proc_id == 0){
291
291
    struct dirent **direntries = NULL;
292
292
    ret = scandir("/proc", &direntries, is_plymouth, alphasort);
293
293
    if (ret == -1){
294
294
      error_plus(0, errno, "scandir");
295
295
    }
296
296
    if (ret > 0){
297
 
      ret = sscanf(direntries[0]->d_name, "%" SCNuMAX, &maxvalue);
 
297
      ret = sscanf(direntries[0]->d_name, "%" SCNuMAX, &proc_id);
298
298
      if (ret < 0){
299
299
        error_plus(0, errno, "sscanf");
300
300
      }
304
304
    free(direntries);
305
305
  }
306
306
  pid_t pid;
307
 
  pid = (pid_t)maxvalue;
308
 
  if((uintmax_t)pid == maxvalue){
 
307
  pid = (pid_t)proc_id;
 
308
  if((uintmax_t)pid == proc_id){
309
309
    return pid;
310
310
  }
311
311