rem: int updays;
add: long int updays;
context: print_uptime (int n, const STRUCT_UTMP *this){  register int entries = 0;  time_t boot_time = 0;  time_t time_now;  time_t uptime = 0;  int updays;  int uphours;  int upmins;  struct tm *tmn;  double avg[3];  int loads;#ifdef HAVE_PROC_UPTIME  FILE *fp;  double upsecs;  fp = fopen ("/proc/uptime", "r");  if (fp != NULL)    {      char buf[BUFSIZ];      int res;      char *b = fgets (buf, BUFSIZ, fp);      if (b == buf)	{	  /* The following sscanf must use the C locale.  */	  setlocale (LC_NUMERIC, "C");	  res = sscanf (buf, "%lf", &upsecs);	  setlocale (LC_NUMERIC, "");	  if (res == 1)	    uptime = (time_t) upsecs;	}      fclose (fp);    }#endif /* HAVE_PROC_UPTIME */#if HAVE_SYSCTL && defined CTL_KERN && defined KERN_BOOTTIME  {    /* FreeBSD specific: fetch sysctl "kern.boottime".  */    static int request[2] = { CTL_KERN, KERN_BOOTTIME };    struct timeval result;    size_t result_len = sizeof result;    if (sysctl (request, 2, &result, &result_len, NULL, 0) >= 0)      boot_time = result.tv_sec;  }#endif  /* Loop through all the utmp entries we just read and count up the valid     ones, also in the process possibly gleaning boottime. */  while (n--)    {      if (UT_USER (this) [0]#ifdef USER_PROCESS	  && this->ut_type == USER_PROCESS#endif	  )	{	  ++entries;	}      /* If BOOT_MSG is defined, we can get boottime from utmp.  This avoids	 possibly needing special privs to read /dev/kmem. */#ifdef BOOT_MSG# if HAVE_PROC_UPTIME      if (uptime == 0)# endif /* HAVE_PROC_UPTIME */	if (STREQ (this->ut_line, BOOT_MSG))	  boot_time = UT_TIME_MEMBER (this);#endif /* BOOT_MSG */      ++this;    }  time_now = time (0);#if defined HAVE_PROC_UPTIME  if (uptime == 0)#endif    {      if (boot_time == 0)	error (EXIT_FAILURE, errno, _("couldn't get boot time"));      uptime = time_now - boot_time;    }  updays = uptime / 86400;  uphours = (uptime - (updays * 86400)) / 3600;  upmins = (uptime - (updays * 86400) - (uphours * 3600)) / 60;  tmn = localtime (&time_now);  printf (_(" %2d:%02d%s  up "), ((tmn->tm_hour % 12) == 0				  ? 12 : tmn->tm_hour % 12),	  /* FIXME: use strftime, not am, pm.  Uli reports that	     the german translation is meaningless.  */	  tmn->tm_min, (tmn->tm_hour < 12 ? _("am") : _("pm")));  if (updays > 0)    printf (ngettext("%d day", "%d days", updays), updays);  printf (" %2d:%02d,  ", uphours, upmins);  printf (ngettext ("%d user", "%d users", entries), entries);#if defined (HAVE_GETLOADAVG) || defined (C_GETLOADAVG)  loads = getloadavg (avg, 3);#else  loads = -1;#endif  if (loads == -1)    putchar ('\n');  else    {      if (loads > 0)	printf (_(",  load average: %.2f"), avg[0]);      if (loads > 1)	printf (", %.2f", avg[1]);      if (loads > 2)	printf (", %.2f", avg[2]);      if (loads > 0)	putchar ('\n');    }}