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

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

?? idcache.c

?? Linux下文件工具。
?? C
字號:
/* idcache.c -- map user and group IDs, cached for speed   Copyright (C) 1985, 1988, 1989, 1990, 1997, 1998 Free Software   Foundation, Inc.   This program is free software; you can redistribute it and/or modify   it under the terms of the GNU General Public License as published by   the Free Software Foundation; either version 2, or (at your option)   any later version.   This program is distributed in the hope that it will be useful,   but WITHOUT ANY WARRANTY; without even the implied warranty of   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the   GNU General Public License for more details.   You should have received a copy of the GNU General Public License   along with this program; if not, write to the Free Software Foundation,   Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  */#if HAVE_CONFIG_H# include <config.h>#endif#include <stdio.h>#include <sys/types.h>#include <pwd.h>#include <grp.h>#if STDC_HEADERS || HAVE_STRING_H# include <string.h>#else# include <strings.h>#endif#if HAVE_UNISTD_H# include <unistd.h>#endif#ifndef _POSIX_VERSIONstruct passwd *getpwuid ();struct passwd *getpwnam ();struct group *getgrgid ();struct group *getgrnam ();#endifchar *xmalloc ();char *xstrdup ();#ifdef __DJGPP__static char digits[] = "0123456789";#endifstruct userid{  union    {      uid_t u;      gid_t g;    } id;  char *name;  struct userid *next;};static struct userid *user_alist;/* The members of this list have names not in the local passwd file.  */static struct userid *nouser_alist;/* Translate UID to a login name, with cache, or NULL if unresolved.  */char *getuser (uid_t uid){  register struct userid *tail;  struct passwd *pwent;  for (tail = user_alist; tail; tail = tail->next)    if (tail->id.u == uid)      return tail->name;  pwent = getpwuid (uid);  tail = (struct userid *) xmalloc (sizeof (struct userid));  tail->id.u = uid;  tail->name = pwent ? xstrdup (pwent->pw_name) : NULL;  /* Add to the head of the list, so most recently used is first.  */  tail->next = user_alist;  user_alist = tail;  return tail->name;}/* Translate USER to a UID, with cache.   Return NULL if there is no such user.   (We also cache which user names have no passwd entry,   so we don't keep looking them up.)  */uid_t *getuidbyname (const char *user){  register struct userid *tail;  struct passwd *pwent;  for (tail = user_alist; tail; tail = tail->next)    /* Avoid a function call for the most common case.  */    if (*tail->name == *user && !strcmp (tail->name, user))      return &tail->id.u;  for (tail = nouser_alist; tail; tail = tail->next)    /* Avoid a function call for the most common case.  */    if (*tail->name == *user && !strcmp (tail->name, user))      return 0;  pwent = getpwnam (user);#ifdef __DJGPP__  /* We need to pretend to be the user USER, to make     pwd functions know about an arbitrary user name.  */  if (!pwent && strspn (user, digits) < strlen (user))    {      setenv ("USER", user, 1);      pwent = getpwnam (user);	/* now it will succeed */    }#endif  tail = (struct userid *) xmalloc (sizeof (struct userid));  tail->name = xstrdup (user);  /* Add to the head of the list, so most recently used is first.  */  if (pwent)    {      tail->id.u = pwent->pw_uid;      tail->next = user_alist;      user_alist = tail;      return &tail->id.u;    }  tail->next = nouser_alist;  nouser_alist = tail;  return 0;}/* Use the same struct as for userids.  */static struct userid *group_alist;static struct userid *nogroup_alist;/* Translate GID to a group name, with cache, or NULL if unresolved.  */char *getgroup (gid_t gid){  register struct userid *tail;  struct group *grent;  for (tail = group_alist; tail; tail = tail->next)    if (tail->id.g == gid)      return tail->name;  grent = getgrgid (gid);  tail = (struct userid *) xmalloc (sizeof (struct userid));  tail->id.g = gid;  tail->name = grent ? xstrdup (grent->gr_name) : NULL;  /* Add to the head of the list, so most recently used is first.  */  tail->next = group_alist;  group_alist = tail;  return tail->name;}/* Translate GROUP to a GID, with cache.   Return NULL if there is no such group.   (We also cache which group names have no group entry,   so we don't keep looking them up.)  */gid_t *getgidbyname (const char *group){  register struct userid *tail;  struct group *grent;  for (tail = group_alist; tail; tail = tail->next)    /* Avoid a function call for the most common case.  */    if (*tail->name == *group && !strcmp (tail->name, group))      return &tail->id.g;  for (tail = nogroup_alist; tail; tail = tail->next)    /* Avoid a function call for the most common case.  */    if (*tail->name == *group && !strcmp (tail->name, group))      return 0;  grent = getgrnam (group);#ifdef __DJGPP__  /* We need to pretend to belong to group GROUP, to make     grp functions know about any arbitrary group name.  */  if (!grent && strspn (group, digits) < strlen (group))    {      setenv ("GROUP", group, 1);      grent = getgrnam (group);	/* now it will succeed */    }#endif  tail = (struct userid *) xmalloc (sizeof (struct userid));  tail->name = xstrdup (group);  /* Add to the head of the list, so most recently used is first.  */  if (grent)    {      tail->id.g = grent->gr_gid;      tail->next = group_alist;      group_alist = tail;      return &tail->id.g;    }  tail->next = nogroup_alist;  nogroup_alist = tail;  return 0;}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲v中文字幕| 久久这里都是精品| 一区二区三区免费网站| 久久久久久免费网| 亚洲男人天堂av网| 亚洲v日本v欧美v久久精品| 亚洲日本青草视频在线怡红院 | 麻豆久久久久久久| 国产suv一区二区三区88区| 国产91综合网| 久久精品一区二区三区不卡牛牛| 国产精品色在线观看| 亚洲国产sm捆绑调教视频| 午夜精品视频在线观看| 日本不卡高清视频| www.欧美精品一二区| 日韩欧美国产1| 免费美女久久99| 日韩欧美亚洲另类制服综合在线| 国产蜜臀av在线一区二区三区| 日韩综合在线视频| 欧美日韩中字一区| 亚洲乱码国产乱码精品精可以看| 久久99精品久久久久久久久久久久| 91久久一区二区| 五月激情综合色| 欧美午夜免费电影| 亚洲综合激情另类小说区| a美女胸又www黄视频久久| 国产日韩欧美精品综合| 国产a久久麻豆| 日韩精品一区二区三区中文不卡| 性感美女久久精品| 日韩三级高清在线| 精品伊人久久久久7777人| 国产丝袜欧美中文另类| 成人动漫一区二区三区| 亚洲天堂精品视频| 色婷婷狠狠综合| 国产麻豆91精品| 国产精品久久久一区麻豆最新章节| 久久99国产乱子伦精品免费| 成人av集中营| 亚洲精选在线视频| 欧美精品一区二区三区很污很色的 | 欧美一区二区在线观看| 国产精品88888| 亚洲高清免费视频| 国产精品嫩草影院com| 在线不卡一区二区| 丁香激情综合国产| 久久国产精品无码网站| 亚洲色图欧美在线| 日韩限制级电影在线观看| 99久久精品免费看| 婷婷成人激情在线网| 中国av一区二区三区| 91精品国产色综合久久不卡蜜臀| 色哟哟精品一区| 欧美三级韩国三级日本一级| 天天色天天爱天天射综合| 久久丁香综合五月国产三级网站| 欧美性猛交xxxxxxxx| 91精品国产一区二区| 国产精品电影一区二区三区| 亚洲一级不卡视频| 国产美女av一区二区三区| 亚洲成人激情社区| 国产精品免费久久久久| 日韩一级免费一区| 精品国免费一区二区三区| 欧美久久久一区| 91激情在线视频| 欧美日韩一区久久| 欧美一卡二卡三卡四卡| 欧美性三三影院| 8x8x8国产精品| 欧美日韩精品免费| 日韩女优电影在线观看| 久久色.com| 国产精品成人午夜| 亚洲精选免费视频| 偷拍一区二区三区四区| 麻豆一区二区在线| 91精品国产福利| 精品国产三级电影在线观看| 亚洲成人在线观看视频| 国产精品一二三四区| 精品国产乱码久久久久久免费| 国产精品久久夜| 亚洲色图自拍偷拍美腿丝袜制服诱惑麻豆 | 欧洲生活片亚洲生活在线观看| 久久婷婷一区二区三区| 久久99精品视频| 欧美大黄免费观看| 蜜桃av一区二区三区| 8v天堂国产在线一区二区| 亚洲一区二区三区在线| 91精品1区2区| 亚洲高清一区二区三区| 欧美综合视频在线观看| 亚洲第一会所有码转帖| 99久久精品免费观看| 国产精品国产三级国产aⅴ入口| 国产综合色在线视频区| 欧美精品一区二区在线播放| 极品销魂美女一区二区三区| 久久网站热最新地址| 成人黄色av电影| 中文字幕亚洲区| 亚洲黄色在线视频| 精品国产一区二区三区忘忧草 | 欧美精品精品一区| 国产一区视频在线看| 久久精品人人爽人人爽| 99久久精品99国产精品| 视频一区二区中文字幕| 国产精品第一页第二页第三页 | av一区二区三区在线| 亚洲国产成人va在线观看天堂| 欧美一区日本一区韩国一区| 成人激情免费电影网址| 亚洲国产精品视频| 国产午夜精品一区二区三区嫩草| 91色porny| 成人精品视频一区| 日韩一区精品字幕| 中文字幕亚洲视频| 久久久噜噜噜久久人人看| 欧美色图激情小说| 91在线看国产| 国产一区二区美女| 美女精品自拍一二三四| 亚洲狼人国产精品| 国产欧美精品日韩区二区麻豆天美| 欧美日韩在线播放| 日本高清不卡在线观看| 国产风韵犹存在线视精品| 国内精品久久久久影院薰衣草| 国产精品日韩成人| 欧美电影一区二区三区| 91精品福利视频| 欧美三级一区二区| 欧美福利视频一区| 精品国产电影一区二区| 久久久99精品免费观看不卡| 精品国产91久久久久久久妲己| 欧美日韩成人一区二区| 日韩一区二区在线免费观看| 欧美久久婷婷综合色| 久久免费国产精品| 亚洲天堂av老司机| 婷婷成人综合网| 激情小说亚洲一区| 成人午夜激情片| 91网上在线视频| 欧美日韩精品电影| 亚洲国产精品激情在线观看| 亚洲欧美日韩一区| 国产一区二区三区综合| 99re这里只有精品视频首页| 欧美日韩在线亚洲一区蜜芽| 91精品国产91久久久久久一区二区| 欧美一区二区三区四区高清| 国产精品乱人伦中文| 青娱乐精品视频在线| 在线免费观看一区| 欧美电影精品一区二区| 久久久99精品免费观看不卡| 樱花影视一区二区| 成人精品视频一区二区三区尤物| 欧美老女人第四色| 亚洲欧美日本韩国| caoporm超碰国产精品| 久久亚洲综合色| 日韩福利电影在线| 在线影视一区二区三区| 亚洲欧洲美洲综合色网| 国产真实精品久久二三区| 欧美一区二区在线视频| 毛片av一区二区三区| 欧美高清性hdvideosex| 五月天婷婷综合| 欧美三片在线视频观看| 亚洲一二三四区| 欧美精品vⅰdeose4hd| 蜜臀av一区二区在线免费观看| 欧美日韩日日摸| 国产乱理伦片在线观看夜一区| 欧美tickling网站挠脚心| 国产一区二区三区日韩| 国产日韩影视精品| 色婷婷亚洲综合| 石原莉奈在线亚洲三区| 久久久亚洲精品一区二区三区 | 99国产精品99久久久久久| 一区二区三区中文字幕在线观看| 欧美日韩中文字幕一区二区| 久久精品国产一区二区| 亚洲欧洲精品一区二区精品久久久|