summaryrefslogtreecommitdiffstats
path: root/winsup/cygwin/external.cc
diff options
context:
space:
mode:
authorCorinna Vinschen <corinna@vinschen.de>2014-02-22 19:38:12 +0000
committerCorinna Vinschen <corinna@vinschen.de>2014-02-22 19:38:12 +0000
commitb211f4c17e1939f2bd00c07af2d30a8f1fec67df (patch)
tree3975b6ccdeeb0a623059395d88c26c5d827d38a7 /winsup/cygwin/external.cc
parent98cc373860377673c6634edcb529b21e10807618 (diff)
downloadcygnal-b211f4c17e1939f2bd00c07af2d30a8f1fec67df.tar.gz
cygnal-b211f4c17e1939f2bd00c07af2d30a8f1fec67df.tar.bz2
cygnal-b211f4c17e1939f2bd00c07af2d30a8f1fec67df.zip
* external.cc (cygwin_internal): Add cases for CW_GETNSSSEP,
CW_GETPWSID and CW_GETGRSID. * grp.cc (internal_getgrsid_from_db): New function. * passwd.cc (internal_getpwsid_from_db): New function. (pg_ent::setent): Add special case for call from mkpasswd/mkgroup. * pwdgrp.h (internal_getpwsid_from_db): Declare. (internal_getgrsid_from_db): Declare. (enum nss_enum_t): Move to include/sys/cygwin.h. (class pg_ent): Add comment. * uinfo.cc (pwdgrp::fetch_account_from_windows): Fix typo in comment. Change "UNIX" to "Unix" in domain name. * include/sys/cygwin.h (cygwin_getinfo_types): Add CW_GETNSSSEP, CW_GETPWSID and CW_GETGRSID. (enum nss_enum_t): Define here.
Diffstat (limited to 'winsup/cygwin/external.cc')
-rw-r--r--winsup/cygwin/external.cc24
1 files changed, 24 insertions, 0 deletions
diff --git a/winsup/cygwin/external.cc b/winsup/cygwin/external.cc
index eb602fbf6..a99cfef33 100644
--- a/winsup/cygwin/external.cc
+++ b/winsup/cygwin/external.cc
@@ -595,6 +595,30 @@ cygwin_internal (cygwin_getinfo_types t, ...)
}
break;
+ case CW_GETNSSSEP:
+ res = (uintptr_t) cygheap->pg.nss_separator ();
+ break;
+
+ case CW_GETPWSID:
+ {
+ int db_only = va_arg (arg, int);
+ PSID psid = va_arg (arg, PSID);
+ cygpsid sid (psid);
+ res = (uintptr_t) (db_only ? internal_getpwsid_from_db (sid)
+ : internal_getpwsid (sid));
+ }
+ break;
+
+ case CW_GETGRSID:
+ {
+ int db_only = va_arg (arg, int);
+ PSID psid = va_arg (arg, PSID);
+ cygpsid sid (psid);
+ res = (uintptr_t) (db_only ? internal_getgrsid_from_db (sid)
+ : internal_getgrsid (sid));
+ }
+ break;
+
default:
set_errno (ENOSYS);
}