This is utmp.c in view mode; [Download] [Up]
/* utmp.c: * * these routines are for manipulating the utmp file. these were written * by Phil Budne (budd@bu-it.bu.edu) originally. */ #include "config.h" #include "msend.h" static FILE *uf; /* utmp file */ static char *utmpfile = "/etc/utmp"; /* utmp file name */ /* open the utmp file if necessary and read one entry at a time */ struct utmp *getutent() { static struct utmp ubuf; struct stat stb; /* verify that utmp file is a reasonable size */ if (uf == NULL) { if (stat(utmpfile,&stb) == 0 ) { if ((stb.st_size % sizeof(struct utmp)) != 0) { return(NULL); } } else return(NULL); /* open utmp */ if ((uf= fopen(utmpfile,"r")) == NULL) /* was '< 0' -20 Mar 89-composer */ return(NULL); } /* read next utmp entry and return it if we can */ if (fread(&ubuf,sizeof(ubuf),1,uf) == 0 ) { fseek(uf,0L,0); return(NULL); } /* fix for problem with ut_name containing both ut_name and ut_host */ /* when the size of ut_name = 8 .. - 20 Mar 89 - composer */ /* one slight side effect - kills 1st char of ut_host */ ubuf.ut_name[8] = '\0'; return(&ubuf); } /* close utmp file */ void endutent() { if(uf != NULL) { fclose(uf); uf= NULL; } }
These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.