diff options
Diffstat (limited to 'winsup/cygwin/pwdgrp.h')
-rw-r--r-- | winsup/cygwin/pwdgrp.h | 115 |
1 files changed, 0 insertions, 115 deletions
diff --git a/winsup/cygwin/pwdgrp.h b/winsup/cygwin/pwdgrp.h deleted file mode 100644 index 530adf6..0000000 --- a/winsup/cygwin/pwdgrp.h +++ /dev/null @@ -1,115 +0,0 @@ -/* 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 the -Cygwin license. Please consult the file "CYGWIN_LICENSE" for -details. */ - -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) - { - 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; - } -}; |