亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? getpwent.c

?? RTEMS (Real-Time Executive for Multiprocessor Systems) is a free open source real-time operating sys
?? C
字號:
/* *  POSIX 1003.1b - 9.2.2 - User Database Access Routines * *  The license and distribution terms for this file may be *  found in the file LICENSE in this distribution or at *  http://www.rtems.com/license/LICENSE. * *  $Id: getpwent.c,v 1.9.2.1 2003/09/04 18:46:58 joel Exp $ */#if HAVE_CONFIG_H#include "config.h"#endif#include <stdio.h>#include <sys/types.h>#include <pwd.h>#include <grp.h>#include <errno.h>#include <unistd.h>#include <stdlib.h>#include <string.h>#include <limits.h>#include <ctype.h>#include <rtems/libio_.h>/* * Static, thread-unsafe, buffers */static FILE *passwd_fp;static char pwbuf[200];static struct passwd pwent;static FILE *group_fp;static char grbuf[200];static struct group grent;/* * Initialize useable but dummy databases */void init_etc_passwd_group(void){  FILE *fp;  static char etc_passwd_initted = 0;  if (etc_passwd_initted)    return;  etc_passwd_initted = 1;  mkdir("/etc", 0777);  /*   *  Initialize /etc/passwd   */  if ((fp = fopen("/etc/passwd", "r")) != NULL) {    fclose(fp);  }  else if ((fp = fopen("/etc/passwd", "w")) != NULL) {    fprintf(fp, "root:*:0:0:root::/:/bin/sh\n"                 "rtems:*:1:1:RTEMS Application::/:/bin/sh\n"                 "tty:!:2:2:tty owner::/:/bin/false\n" );    fclose(fp);  }  /*   *  Initialize /etc/group   */  if ((fp = fopen("/etc/group", "r")) != NULL) {    fclose(fp);  }  else if ((fp = fopen("/etc/group", "w")) != NULL) {    fprintf( fp, "root:x:0:root\n"                 "rtems:x:1:rtems\n"                 "tty:x:2:tty\n" );    fclose(fp);  }}/* * Extract a string value from the database */static intscanString(FILE *fp, char **name, char **bufp, size_t *nleft, int nlFlag){  int c;  *name = *bufp;  for (;;) {    c = getc(fp);    if (c == ':') {        if (nlFlag)            return 0;        break;    }    if (c == '\n') {        if (!nlFlag)            return 0;        break;    }    if (c == EOF)      return 0;    if (*nleft < 2)      return 0;    **bufp = c;    ++(*bufp);    --(*nleft);  }  **bufp = '\0';  ++(*bufp);  --(*nleft);  return 1;}/* * Extract an integer value from the database */static intscanInt(FILE *fp, int *val){  int c;  unsigned int i = 0;  unsigned int limit = INT_MAX;  int sign = 0;  int d;  for (;;) {    c = getc(fp);    if (c == ':')      break;    if (sign == 0) {      if (c == '-') {        sign = -1;        limit++;        continue;      }      sign = 1;    }    if (!isdigit(c))      return 0;    d = c - '0';    if ((i > (limit / 10))     || ((i == (limit / 10)) && (d > (limit % 10))))      return 0;    i = i * 10 + d;  }  if (sign == 0)    return 0;  *val = i * sign;  return 1;}/* * Extract a single password record from the database */static int scanpw(  FILE *fp,  struct passwd *pwd,  char *buffer,  size_t bufsize){  int pwuid, pwgid;  if (!scanString(fp, &pwd->pw_name, &buffer, &bufsize, 0)   || !scanString(fp, &pwd->pw_passwd, &buffer, &bufsize, 0)   || !scanInt(fp, &pwuid)   || !scanInt(fp, &pwgid)   || !scanString(fp, &pwd->pw_comment, &buffer, &bufsize, 0)   || !scanString(fp, &pwd->pw_gecos, &buffer, &bufsize, 0)   || !scanString(fp, &pwd->pw_dir, &buffer, &bufsize, 0)   || !scanString(fp, &pwd->pw_shell, &buffer, &bufsize, 1))    return 0;  pwd->pw_uid = pwuid;  pwd->pw_gid = pwgid;  return 1;}static int getpw_r(  const char     *name,  int             uid,  struct passwd  *pwd,  char           *buffer,  size_t          bufsize,  struct passwd **result){  FILE *fp;  int match;  init_etc_passwd_group();  if ((fp = fopen("/etc/passwd", "r")) == NULL) {    errno = EINVAL;    return -1;  }  for(;;) {    if (!scanpw(fp, pwd, buffer, bufsize)) {      errno = EINVAL;      fclose(fp);      return -1;    }    if (name) {      match = (strcmp(pwd->pw_name, name) == 0);    }    else {      match = (pwd->pw_uid == uid);    }    if (match) {      fclose(fp);      *result = pwd;      return 0;    }  }  fclose(fp);  errno = EINVAL;  return -1;}int getpwnam_r(  const char     *name,  struct passwd  *pwd,  char           *buffer,  size_t          bufsize,  struct passwd **result){  return getpw_r(name, 0, pwd, buffer, bufsize, result);}struct passwd *getpwnam(   const char *name){  struct passwd *p;  if(getpwnam_r(name, &pwent, pwbuf, sizeof pwbuf, &p))    return NULL;  return p;}int getpwuid_r(  uid_t           uid,  struct passwd  *pwd,  char           *buffer,  size_t          bufsize,  struct passwd **result){  return getpw_r(NULL, uid, pwd, buffer, bufsize, result);}struct passwd *getpwuid(  uid_t uid){  struct passwd *p;  if(getpwuid_r(uid, &pwent, pwbuf, sizeof pwbuf, &p))    return NULL;  return p;}struct passwd *getpwent(){  if (passwd_fp == NULL)    return NULL;  if (!scanpw(passwd_fp, &pwent, pwbuf, sizeof pwbuf))    return NULL;  return &pwent;}void setpwent(void){  init_etc_passwd_group();  if (passwd_fp != NULL)    fclose(passwd_fp);  passwd_fp = fopen("/etc/passwd", "r");}void endpwent(void){  if (passwd_fp != NULL)    fclose(passwd_fp);}/* * Extract a single group record from the database */static int scangr(  FILE *fp,  struct group *grp,  char *buffer,  size_t bufsize){  int grgid;  char *grmem, *cp;  int memcount;  if (!scanString(fp, &grp->gr_name, &buffer, &bufsize, 0)   || !scanString(fp, &grp->gr_passwd, &buffer, &bufsize, 0)   || !scanInt(fp, &grgid)   || !scanString(fp, &grmem, &buffer, &bufsize, 1))    return 0;  grp->gr_gid = grgid;  /*   * Determine number of members   */  for (cp = grmem, memcount = 1 ; *cp != 0 ; cp++) {    if(*cp == ',')      memcount++;  }  /*   * Hack to produce (hopefully) a suitably-aligned array of pointers   */  if (bufsize < (((memcount+1)*sizeof(char *)) + 15))    return 0;  grp->gr_mem = (char **)(((unsigned long)buffer + 15) & ~15);  /*   * Fill in pointer array   */  grp->gr_mem[0] = grmem;  for (cp = grmem, memcount = 1 ; *cp != 0 ; cp++) {    if(*cp == ',') {      *cp = '\0';      grp->gr_mem[memcount++] = cp + 1;    }  }  grp->gr_mem[memcount] = NULL;  return 1;}static int getgr_r(  const char     *name,  int             gid,  struct group   *grp,  char           *buffer,  size_t          bufsize,  struct group  **result){  FILE *fp;  int match;  init_etc_passwd_group();  if ((fp = fopen("/etc/group", "r")) == NULL) {    errno = EINVAL;    return -1;  }  for(;;) {    if (!scangr(fp, grp, buffer, bufsize)) {      errno = EINVAL;      fclose(fp);      return -1;    }    if (name) {      match = (strcmp(grp->gr_name, name) == 0);    }    else {      match = (grp->gr_gid == gid);    }    if (match) {      fclose(fp);      *result = grp;      return 0;    }  }  fclose(fp);  errno = EINVAL;  return -1;}int getgrnam_r(  const char     *name,  struct group   *grp,  char           *buffer,  size_t          bufsize,  struct group  **result){  return getgr_r(name, 0, grp, buffer, bufsize, result);}struct group *getgrnam(   const char *name){  struct group *p;  if(getgrnam_r(name, &grent, grbuf, sizeof grbuf, &p))    return NULL;  return p;}int getgrgid_r(  gid_t           gid,  struct group   *grp,  char           *buffer,  size_t          bufsize,  struct group  **result){  return getgr_r(NULL, gid, grp, buffer, bufsize, result);}struct group *getgrgid(  gid_t gid){  struct group *p;  if(getgrgid_r(gid, &grent, grbuf, sizeof grbuf, &p))    return NULL;  return p;}struct group *getgrent(){  if (group_fp == NULL)    return NULL;  if (!scangr(group_fp, &grent, grbuf, sizeof grbuf))    return NULL;  return &grent;}void setgrent(void){  init_etc_passwd_group();  if (group_fp != NULL)    fclose(group_fp);  group_fp = fopen("/etc/group", "r");}void endgrent(void){  if (group_fp != NULL)    fclose(group_fp);}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲v日本v欧美v久久精品| 日精品一区二区三区| 国产精品日产欧美久久久久| 中文字幕日本不卡| 亚洲综合激情网| 欧美aaa在线| 大胆欧美人体老妇| 欧美日韩精品电影| 久久精品一区八戒影视| 亚洲精品国产a久久久久久| 美女爽到高潮91| 一本久久精品一区二区| 日韩精品在线网站| 亚洲一区在线观看免费| 成人一级片在线观看| 欧美日韩不卡在线| 国产精品灌醉下药二区| 激情五月婷婷综合网| 欧美夫妻性生活| 亚洲欧洲三级电影| 美女视频一区二区| 宅男在线国产精品| 亚洲尤物视频在线| 91久久一区二区| 亚洲伦理在线免费看| av综合在线播放| 欧美国产精品专区| 波多野结衣中文字幕一区| 久久久久久免费网| 国产一区二区美女| 久久综合狠狠综合久久激情| 久久99精品国产| 久久综合色一综合色88| 久久精品噜噜噜成人88aⅴ| 欧美日韩国产成人在线91| 亚洲va欧美va人人爽| 欧美精品久久久久久久多人混战| 午夜精品久久久久久久| 8x8x8国产精品| 欧美aaaaaa午夜精品| 久久综合色天天久久综合图片| 麻豆freexxxx性91精品| 中文字幕 久热精品 视频在线| 白白色 亚洲乱淫| 亚洲国产视频a| 欧美xxxxx裸体时装秀| 国产成人免费在线观看| 亚洲免费观看高清完整版在线| 欧美日韩夫妻久久| 狠狠色狠狠色合久久伊人| 国产精品丝袜一区| 欧美高清视频www夜色资源网| 久久99精品久久久久婷婷| 国产精品久久久久影院老司| 91精品国产综合久久香蕉的特点 | 久久er99热精品一区二区| 国产精品久久久久婷婷二区次| 欧美日韩中文字幕精品| 国产成a人亚洲精| 日韩和欧美一区二区三区| 国产视频一区二区在线观看| 欧美伊人久久大香线蕉综合69 | 7777精品伊人久久久大香线蕉的| 国产成人8x视频一区二区| 午夜精品福利一区二区三区av| 中文字幕一区二区三区视频| 欧美videossexotv100| 7777精品伊人久久久大香线蕉| 97久久精品人人爽人人爽蜜臀 | 欧美日韩激情一区二区三区| 国产91精品久久久久久久网曝门| 青青草精品视频| 麻豆精品在线看| 麻豆久久久久久久| 精品制服美女丁香| 韩国视频一区二区| 国内成人自拍视频| 懂色av一区二区夜夜嗨| 成人激情文学综合网| 不卡av在线免费观看| aaa欧美日韩| 欧美在线一区二区三区| 欧美日韩国产免费一区二区| 69堂国产成人免费视频| 日韩一区二区影院| 久久久蜜臀国产一区二区| 久久久久久亚洲综合影院红桃| 国产性色一区二区| 亚洲欧洲99久久| 日韩国产欧美三级| 国产成人精品www牛牛影视| aa级大片欧美| 欧美电影免费观看完整版| 国产精品午夜在线观看| 一区二区日韩av| 极品少妇xxxx精品少妇偷拍 | 日韩理论电影院| 五月婷婷激情综合| 国产成人综合在线观看| 色噜噜久久综合| 久久人人爽爽爽人久久久| 一个色综合av| 高清不卡一区二区| 日韩美女在线视频 | 欧美日韩一区中文字幕| 国产精品系列在线| 久久99国产精品麻豆| 欧美色涩在线第一页| 亚洲欧美自拍偷拍| 国产精品亚洲视频| 2020国产精品自拍| 国产专区欧美精品| 精品国产百合女同互慰| 蜜臀91精品一区二区三区 | 亚洲精品视频免费观看| 国产成人av一区二区三区在线观看| 日韩一区二区三区免费看 | 日韩欧美一区二区不卡| 日韩影视精彩在线| 91精品国产高清一区二区三区| 亚洲一区二区三区美女| 91麻豆国产自产在线观看| 国产精品色一区二区三区| 国产福利91精品一区二区三区| 26uuu精品一区二区三区四区在线| 欧美bbbbb| 久久精品这里都是精品| 国产福利一区二区三区在线视频| 国产色一区二区| 成人免费高清在线| 亚洲区小说区图片区qvod| 日本韩国欧美在线| 日韩激情av在线| 精品国产百合女同互慰| 国产成人精品影院| 亚洲欧洲日韩一区二区三区| 欧美日韩在线电影| 国产美女一区二区| 一区二区日韩av| 日韩欧美在线不卡| 成人avav影音| 午夜视频一区二区| 日本一区二区在线不卡| 欧美自拍丝袜亚洲| 国产一区二区在线影院| 一区二区三区**美女毛片| 久久先锋影音av| 欧美日韩高清在线播放| gogo大胆日本视频一区| 奇米精品一区二区三区四区| 成人免费一区二区三区视频| 欧美tickling挠脚心丨vk| 欧美亚洲国产bt| www.色精品| 国模大尺度一区二区三区| 天天av天天翘天天综合网色鬼国产| 精品福利在线导航| 在线播放91灌醉迷j高跟美女 | 久久99精品国产.久久久久| 亚洲成a人在线观看| 日韩理论电影院| 中文字幕av一区二区三区高 | 国产福利一区二区三区| 精品一区二区三区在线观看| 亚洲午夜私人影院| 午夜视频一区在线观看| 亚洲妇熟xx妇色黄| 亚洲成人一区二区| 免费观看30秒视频久久| 日本午夜精品一区二区三区电影 | 91国偷自产一区二区开放时间| 99久久99久久久精品齐齐| 99久久精品久久久久久清纯| av日韩在线网站| 色婷婷国产精品综合在线观看| 99国产精品久久| 日韩区在线观看| 久久久精品国产免费观看同学| 久久精品一区二区三区四区| 日韩美女在线视频| 国产成人精品aa毛片| 天天免费综合色| 日韩综合在线视频| 欧美日韩一本到| 综合激情网...| 99热这里都是精品| 久久中文娱乐网| 国产一区二区毛片| 久久综合狠狠综合久久综合88| 视频一区二区三区入口| 国产麻豆视频一区| 日韩视频永久免费| 一个色妞综合视频在线观看| av福利精品导航| 26uuu久久综合| 狠狠色狠狠色合久久伊人| 欧美人与z0zoxxxx视频| 亚洲一区二区五区| 91一区一区三区| 一区二区三区自拍|