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

📄 pwdgrp.h

📁 cygwin, 著名的在win32下模拟unix操作系统的东东
💻 H
字号:
/* pwdgrp.h   Copyright 2001 Red Hat inc.   Stuff common to pwd and grp handling.This file is part of Cygwin.This software is a copyrighted work licensed under the terms of theCygwin license.  Please consult the file "CYGWIN_LICENSE" fordetails. */enum pwdgrp_state {  uninitialized = 0,  initializing,  emulated,  loaded};class pwdgrp_check {  pwdgrp_state	state;  FILETIME	last_modified;  char		file_w32[MAX_PATH];public:  pwdgrp_check () : state (uninitialized) {}  operator pwdgrp_state ()    {      if (state != uninitialized && file_w32[0] && cygheap->etc_changed ())	{	  HANDLE h;	  WIN32_FIND_DATA data;	  if ((h = FindFirstFile (file_w32, &data)) != INVALID_HANDLE_VALUE)	    {	      if (CompareFileTime (&data.ftLastWriteTime, &last_modified) > 0)		state = uninitialized;	      FindClose (h);	    }	}      return state;    }  void operator = (pwdgrp_state nstate)    {      state = nstate;    }  void set_last_modified (HANDLE fh, const char *name)    {      if (!file_w32[0])	strcpy (file_w32, name);      GetFileTime (fh, NULL, NULL, &last_modified);    }};class pwdgrp_read {  path_conv pc;  HANDLE fh;  char *buf;  char *lptr, *eptr;public:  bool open (const char *posix_fname)  {    if (buf)      free (buf);    buf = lptr = eptr = NULL;    pc.check (posix_fname);    if (pc.error || !pc.exists () || !pc.isdisk () || pc.isdir ())      return false;    fh = CreateFile (pc, GENERIC_READ, wincap.shared (), NULL, OPEN_EXISTING,		     FILE_ATTRIBUTE_NORMAL, 0);    if (fh != INVALID_HANDLE_VALUE)      {	DWORD size = GetFileSize (fh, NULL), read_bytes;	buf = (char *) malloc (size + 1);	if (!ReadFile (fh, buf, size, &read_bytes, NULL))	  {	    if (buf)	      free (buf);	    buf = NULL;	    CloseHandle (fh);	    fh = NULL;	    return false;	  }	buf[read_bytes] = '\0';	return true;      }    return false;  }  char *gets ()  {    if (!buf)      return NULL;    if (!lptr)      lptr = buf;    else if (!eptr)      return lptr = NULL;    else      lptr = eptr;    eptr = strchr (lptr, '\n');    if (eptr)      *eptr++ = '\0';    return lptr;  }  inline HANDLE get_fhandle () { return fh; }  inline const char *get_fname () { return pc; }  void close ()  {    if (fh)      CloseHandle (fh);    fh = NULL;  }};

⌨️ 快捷键说明

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