start_time = time (NULL);
main (int argc, char **argv){  int remaining;  /* Set locale via LC_ALL.  */  setlocale (LC_ALL, "");  /* Set the text message domain.  */  textdomain (PACKAGE);  /* Parse and process arguments.  */  argp_parse (&argp, argc, argv, 0, &remaining, NULL);  if (remaining != argc)    {      error (0, 0, gettext ("wrong number of arguments"));      argp_help (&argp, stdout, ARGP_HELP_SEE, program_invocation_short_name);      exit (EXIT_FAILURE);    }  /* Check if we are already running. */  if (check_pid (_PATH_NSCDPID))    error (EXIT_FAILURE, 0, _("already running"));  /* Behave like a daemon.  */  if (go_background)    {      int i;      if (fork ())	exit (0);      int nullfd = open (_PATH_DEVNULL, O_RDWR);      if (nullfd != -1)	{	  struct stat64 st;	  if (fstat64 (nullfd, &st) == 0 && S_ISCHR (st.st_mode) != 0#if defined DEV_NULL_MAJOR && defined DEV_NULL_MINOR	      && st.st_rdev == makedev (DEV_NULL_MAJOR, DEV_NULL_MINOR)#endif	      )	    {	      /* It is the /dev/null special device alright.  */	      (void) dup2 (nullfd, STDIN_FILENO);	      (void) dup2 (nullfd, STDOUT_FILENO);	      (void) dup2 (nullfd, STDERR_FILENO);	      if (nullfd > 2)		close (nullfd);	    }	  else	    {	      /* Ugh, somebody is trying to play a trick on us.  */	      close (nullfd);	      nullfd = -1;	    }	}      int min_close_fd = nullfd == -1 ? 0 : STDERR_FILENO + 1;      DIR *d = opendir ("/proc/self/fd");      if (d != NULL)	{	  struct dirent64 *dirent;	  int dfdn = dirfd (d);	  while ((dirent = readdir64 (d)) != NULL)	    {	      char *endp;	      long int fdn = strtol (dirent->d_name, &endp, 10);	      if (*endp == '\0' && fdn != dfdn && fdn >= min_close_fd)		close ((int) fdn);	    }	  closedir (d);	}      else	for (i = min_close_fd; i < getdtablesize (); i++)	  close (i);      if (fork ())	exit (0);      setsid ();      chdir ("/");      openlog ("nscd", LOG_CONS | LOG_ODELAY, LOG_DAEMON);      if (write_pid (_PATH_NSCDPID) < 0)        dbg_log ("%s: %s", _PATH_NSCDPID, strerror (errno));      /* Ignore job control signals.  */      signal (SIGTTOU, SIG_IGN);      signal (SIGTTIN, SIG_IGN);      signal (SIGTSTP, SIG_IGN);    }  signal (SIGINT, termination_handler);  signal (SIGQUIT, termination_handler);  signal (SIGTERM, termination_handler);  signal (SIGPIPE, SIG_IGN);  /* Cleanup files created by a previous `bind'.  */  unlink (_PATH_NSCDSOCKET);  /* Make sure we do not get recursive calls.  */  __nss_disable_nscd ();  /* Init databases.  */  nscd_init (conffile);  /* Handle incoming requests */  start_threads ();  return 0;}