⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 getut.c

📁 KPIT GNU Tools is a set of GNU development tools for Renesas microcontrollers.
💻 C
字号:
#include <stdlib.h>#include <string.h>#include <fcntl.h>#include <unistd.h>#include <utmp.h>#include <_syslist.h>#include <_ansi.h>static int utmp_fd = -2;static char *utmp_file = UTMP_FILE;static struct utmp utmp_data;voidsetutent (){  if (utmp_fd == -2)    {      utmp_fd = open (utmp_file, O_RDONLY);    }  lseek (utmp_fd, 0, SEEK_SET);}voidendutent (){  close (utmp_fd);  utmp_fd = -2;}voidutmpname (_CONST char *file){  utmp_file = strdup (file);}struct utmp *getutent (){  if (utmp_fd == -2)    setutent ();  if (read (utmp_fd, &utmp_data, sizeof (utmp_data)) < sizeof (utmp_data))    return 0;  return &utmp_data;}struct utmp *getutid (struct utmp *id){  while (read (utmp_fd, &utmp_data, sizeof (utmp_data)) == sizeof (utmp_data))    {      switch (id->ut_type)	{	case RUN_LVL:	case BOOT_TIME:	case OLD_TIME:	case NEW_TIME:	  if (id->ut_type == utmp_data.ut_type)	    return &utmp_data;	case INIT_PROCESS:	case LOGIN_PROCESS:	case USER_PROCESS:	case DEAD_PROCESS:	  if (id->ut_id == utmp_data.ut_id)	    return &utmp_data;	default:	  abort ();	}    }  return 0;}struct utmp *getutline (struct utmp *line){  while (read (utmp_fd, &utmp_data, sizeof (utmp_data)) == sizeof (utmp_data))    {      if ((utmp_data.ut_type == LOGIN_PROCESS ||	   utmp_data.ut_type == USER_PROCESS) &&	  !strncmp (utmp_data.ut_line, line->ut_line,		    sizeof (utmp_data.ut_line)))	return &utmp_data;    }  return 0;}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -