summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--include/apr_user.h12
-rw-r--r--user/unix/userinfo.c15
2 files changed, 27 insertions, 0 deletions
diff --git a/include/apr_user.h b/include/apr_user.h
index 3c70da037..ac781bd6d 100644
--- a/include/apr_user.h
+++ b/include/apr_user.h
@@ -90,6 +90,18 @@ typedef gid_t apr_gid_t;
#if APR_HAS_USER
/***
+ * Get the userid (and groupid) of the calling process
+ * @param userid Returns the user id
+ * @param groupid Returns the user's group id
+ * @param p The pool from which to allocate working space
+ * @tip This function is available only if APR_HAS_USER is defined.
+ * @deffunc apr_status_t apr_current_userid(apr_uid_t *userid, apr_gid_t *groupid, apr_pool_t *p)
+ */
+APR_DECLARE(apr_status_t) apr_current_userid(apr_uid_t *userid,
+ apr_gid_t *groupid,
+ apr_pool_t *p);
+
+/***
* Get the user name for a specified userid
* @param username Pointer to new string containing user name (on output)
* @param userid The userid
diff --git a/user/unix/userinfo.c b/user/unix/userinfo.c
index 4dade21a0..27445e4ee 100644
--- a/user/unix/userinfo.c
+++ b/user/unix/userinfo.c
@@ -111,6 +111,21 @@ APR_DECLARE(apr_status_t) apr_get_home_directory(char **dirname,
return APR_SUCCESS;
}
+
+
+APR_DECLARE(apr_status_t) apr_current_userid(apr_uid_t *uid,
+ apr_gid_t *gid,
+ apr_pool_t *p)
+{
+ *uid = getuid();
+ *gid = getgid();
+
+ return APR_SUCCESS;
+}
+
+
+
+
APR_DECLARE(apr_status_t) apr_get_userid(apr_uid_t *uid, apr_gid_t *gid,
const char *username, apr_pool_t *p)
{