1 |
Signed-off-by: Michał Górny <mgorny@g.o> |
2 |
--- |
3 |
eclass/user.eclass | 16 ++++++++++++++-- |
4 |
1 file changed, 14 insertions(+), 2 deletions(-) |
5 |
|
6 |
diff --git a/eclass/user.eclass b/eclass/user.eclass |
7 |
index a24920af13f1..0577df81ae78 100644 |
8 |
--- a/eclass/user.eclass |
9 |
+++ b/eclass/user.eclass |
10 |
@@ -71,12 +71,15 @@ egetent() { |
11 |
} |
12 |
|
13 |
# @FUNCTION: enewuser |
14 |
-# @USAGE: <user> [uid] [shell] [homedir] [groups] |
15 |
+# @USAGE: <user> [-M] [uid] [shell] [homedir] [groups] |
16 |
# @DESCRIPTION: |
17 |
# Same as enewgroup, you are not required to understand how to properly add |
18 |
# a user to the system. The only required parameter is the username. |
19 |
# Default uid is (pass -1 for this) next available, default shell is |
20 |
# /bin/false, default homedir is /dev/null, and there are no default groups. |
21 |
+# |
22 |
+# If -M is passed, enewuser does not create the home directory if it does not |
23 |
+# exist. |
24 |
enewuser() { |
25 |
if [[ ${EUID} != 0 ]] ; then |
26 |
einfo "Insufficient privileges to execute ${FUNCNAME[0]}" |
27 |
@@ -84,6 +87,15 @@ enewuser() { |
28 |
fi |
29 |
_assert_pkg_ebuild_phase ${FUNCNAME} |
30 |
|
31 |
+ local create_home=1 |
32 |
+ while [[ $1 == -* ]]; do |
33 |
+ case $1 in |
34 |
+ -M) create_home=;; |
35 |
+ *) die "${FUNCNAME}: invalid option ${1}";; |
36 |
+ esac |
37 |
+ shift |
38 |
+ done |
39 |
+ |
40 |
# get the username |
41 |
local euser=$1; shift |
42 |
if [[ -z ${euser} ]] ; then |
43 |
@@ -213,7 +225,7 @@ enewuser() { |
44 |
;; |
45 |
esac |
46 |
|
47 |
- if [[ ! -e ${ROOT}/${ehome} ]] ; then |
48 |
+ if [[ -n ${create_home} && ! -e ${ROOT}/${ehome} ]] ; then |
49 |
einfo " - Creating ${ehome} in ${ROOT}" |
50 |
mkdir -p "${ROOT}/${ehome}" |
51 |
chown "${euser}" "${ROOT}/${ehome}" |
52 |
-- |
53 |
2.22.0.rc3 |