home *** CD-ROM | disk | FTP | other *** search
/ Usenet 1994 October / usenetsourcesnewsgroupsinfomagicoctober1994disk2.iso / misc / volume6 / shadow-2.pt2 / log.c < prev    next >
C/C++ Source or Header  |  1989-02-03  |  888b  |  47 lines

  1. #include <sys/types.h>
  2. #include <utmp.h>
  3. #include <pwd.h>
  4. #include <fcntl.h>
  5. #include <time.h>
  6. #include <string.h>
  7. #include "config.h"
  8.  
  9. extern    struct    utmp    utent;
  10. extern    struct    passwd    pwent;
  11. extern    struct    lastlog    lastlog;
  12. extern    char    **environ;
  13.  
  14. long    lseek ();
  15. time_t    time ();
  16.  
  17. #ifdef    LASTLOG
  18.  
  19. #include "lastlog.h"
  20.  
  21. void    log ()
  22. {
  23.     int    fd;
  24.     long    offset;
  25.     struct    lastlog    newlog;
  26.  
  27.     if ((fd = open ("/usr/adm/lastlog", O_RDWR)) == -1)
  28.         return;
  29.  
  30.     offset = pwent.pw_uid * sizeof lastlog;
  31.  
  32.     if (lseek (fd, offset, 0) != offset)
  33.         return;
  34.  
  35.     if (read (fd, (char *) &lastlog, sizeof lastlog) != sizeof lastlog)
  36.         memset ((char *) &lastlog, sizeof lastlog, 0);
  37.  
  38.     newlog = lastlog;
  39.  
  40.     (void) time (&newlog.ll_time);
  41.     (void) strncpy (newlog.ll_line, utent.ut_line, sizeof newlog.ll_line);
  42.     (void) lseek (fd, offset, 0);
  43.     (void) write (fd, (char *) &newlog, sizeof newlog);
  44.     (void) close (fd);
  45. }
  46. #endif
  47.