User Tools

Site Tools


user:jbrant:systems:who1
/*who1.c - a first version of the who program
pen read UTMP file, and show results
 */
#include    <stdio.h>
#include    <stdlib.h>
#include    <utmp.h>
#include    <fcntl.h>
#include    <unistd.h>

#define SHOWHOST    /* include remote machine on output */

int main()
{
        struct utmp   current_record; /* read info into here */
        int           utmpfd;
        int           reclen = sizeof(current_record);

        if ( (utmpfd = open(UTMP_FILE, O_RDONLY)) == -1)
        {
                perror( UTMP_FILE );    /* UTMP_FILE is in  utmp.h */
                exit(1);
        }
        while (read(utmpfd, &current_record, reclen) == reclen)
                show_info(&current_record);
        close(utmpfd);
        return 0;      /* went ok */
}

/*
 * show info()
 *      displays contents of the utmp struct in human readable form
 */
show_info( struct utmp *utbufp )
{
        printf("%-8.8s", utbufp->ut_name);
        printf(" ");
        printf("%-8.8s", utbufp->ut_line);
        printf(" ");
        printf("%10ld", utbufp->ut_time);
        printf(" ");
#ifdef SHOWHOST
        printf("(%s)", utbufp->ut_host);
#endif
        printf("\n");
}

 *           open read UTMP file, and show results
 */
#include    <stdio.h>
#include    <stdlib.h>
#include    <utmp.h>
#include    <fcntl.h>
#include    <unistd.h>

#define SHOWHOST    /* include remote machine on output */

int main()
{
        struct utmp   current_record; /* read info into here */
        int           utmpfd;
        int           reclen = sizeof(current_record);

        if ( (utmpfd = open(UTMP_FILE, O_RDONLY)) == -1)
{
                perror( UTMP_FILE );    /* UTMP_FILE is in  utmp.h */
                exit(1);
        }
        while (read(utmpfd, &current_record, reclen) == reclen)
                show_info(&current_record);
        close(utmpfd);
        return 0;      /* went ok */
}

/*
 * show info()
 *      displays contents of the utmp struct in human readable form
 */
show_info( struct utmp *utbufp )
{
        printf("%-8.8s", utbufp->ut_name);
        printf(" ");
        printf("%-8.8s", utbufp->ut_line);
        printf(" ");
        printf("%10ld", utbufp->ut_time);
        printf(" ");
#ifdef SHOWHOST
        printf("(%s)", utbufp->ut_host);
#endif
        printf("\n");
}
user/jbrant/systems/who1.txt · Last modified: 2010/11/29 10:46 by jbrant