Diff for /embedaddon/sudo/compat/closefrom.c between versions 1.1.1.1 and 1.1.1.2

version 1.1.1.1, 2012/02/21 16:23:02 version 1.1.1.2, 2013/07/22 10:46:11
Line 1 Line 1
 /*  /*
 * Copyright (c) 2004-2005, 2007, 2010 * Copyright (c) 2004-2005, 2007, 2010, 2012-2013
  *      Todd C. Miller <Todd.Miller@courtesan.com>   *      Todd C. Miller <Todd.Miller@courtesan.com>
  *   *
  * Permission to use, copy, modify, and distribute this software for any   * Permission to use, copy, modify, and distribute this software for any
Line 17 Line 17
   
 #include <config.h>  #include <config.h>
   
   #ifndef HAVE_CLOSEFROM
   
 #include <sys/types.h>  #include <sys/types.h>
 #include <sys/param.h>  
 #include <unistd.h>  #include <unistd.h>
 #include <stdio.h>  #include <stdio.h>
 #ifdef STDC_HEADERS  #ifdef STDC_HEADERS
Line 30 Line 31
 # endif  # endif
 #endif /* STDC_HEADERS */  #endif /* STDC_HEADERS */
 #include <fcntl.h>  #include <fcntl.h>
#ifdef HAVE_DIRENT_H#ifdef HAVE_PSTAT_GETPROC
# include <dirent.h># include <sys/param.h>
define NAMLEN(dirent) strlen((dirent)->d_name)include <sys/pstat.h>
 #else  #else
# define dirent direct# ifdef HAVE_DIRENT_H
define NAMLEN(dirent) (dirent)->d_namlen#  include <dirent.h>
ifdef HAVE_SYS_NDIR_H#  define NAMLEN(dirent) strlen((dirent)->d_name)
#  include <sys/ndir.h> # endif
 #  define dirent direct
 #  define NAMLEN(dirent) (dirent)->d_namlen
 #  ifdef HAVE_SYS_NDIR_H
 #   include <sys/ndir.h>
 #  endif
 #  ifdef HAVE_SYS_DIR_H
 #   include <sys/dir.h>
 #  endif
 #  ifdef HAVE_NDIR_H
 #   include <ndir.h>
 #  endif
 # endif  # endif
 # ifdef HAVE_SYS_DIR_H  
 #  include <sys/dir.h>  
 # endif  
 # ifdef HAVE_NDIR_H  
 #  include <ndir.h>  
 # endif  
 #endif  #endif
   
 #include "missing.h"  #include "missing.h"
Line 85  closefrom_fallback(int lowfd) Line 91  closefrom_fallback(int lowfd)
  * Close all file descriptors greater than or equal to lowfd.   * Close all file descriptors greater than or equal to lowfd.
  * We try the fast way first, falling back on the slow method.   * We try the fast way first, falling back on the slow method.
  */   */
#ifdef HAVE_FCNTL_CLOSEM#if defined(HAVE_FCNTL_CLOSEM)
 void  void
 closefrom(int lowfd)  closefrom(int lowfd)
 {  {
     if (fcntl(lowfd, F_CLOSEM, 0) == -1)      if (fcntl(lowfd, F_CLOSEM, 0) == -1)
         closefrom_fallback(lowfd);          closefrom_fallback(lowfd);
 }  }
#else#elif defined(HAVE_PSTAT_GETPROC)
# ifdef HAVE_DIRFD 
 void  void
 closefrom(int lowfd)  closefrom(int lowfd)
 {  {
       struct pst_status pstat;
       int fd;
   
       if (pstat_getproc(&pstat, sizeof(pstat), 0, getpid()) != -1) {
           for (fd = lowfd; fd <= pstat.pst_highestfd; fd++)
               (void) close(fd);
       } else {
           closefrom_fallback(lowfd);
       }
   }
   #elif defined(HAVE_DIRFD)
   void
   closefrom(int lowfd)
   {
     struct dirent *dent;      struct dirent *dent;
     DIR *dirp;      DIR *dirp;
     char *endp;      char *endp;
Line 114  closefrom(int lowfd) Line 133  closefrom(int lowfd)
     } else      } else
         closefrom_fallback(lowfd);          closefrom_fallback(lowfd);
 }  }
 #endif /* HAVE_DIRFD */  
 #endif /* HAVE_FCNTL_CLOSEM */  #endif /* HAVE_FCNTL_CLOSEM */
   #endif /* HAVE_CLOSEFROM */

Removed from v.1.1.1.1  
changed lines
  Added in v.1.1.1.2


FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>