head	1.3;
access;
symbols
	pkgsrc-2026Q1:1.3.0.154
	pkgsrc-2026Q1-base:1.3
	pkgsrc-2025Q4:1.3.0.152
	pkgsrc-2025Q4-base:1.3
	pkgsrc-2025Q3:1.3.0.150
	pkgsrc-2025Q3-base:1.3
	pkgsrc-2025Q2:1.3.0.148
	pkgsrc-2025Q2-base:1.3
	pkgsrc-2025Q1:1.3.0.146
	pkgsrc-2025Q1-base:1.3
	pkgsrc-2024Q4:1.3.0.144
	pkgsrc-2024Q4-base:1.3
	pkgsrc-2024Q3:1.3.0.142
	pkgsrc-2024Q3-base:1.3
	pkgsrc-2024Q2:1.3.0.140
	pkgsrc-2024Q2-base:1.3
	pkgsrc-2024Q1:1.3.0.138
	pkgsrc-2024Q1-base:1.3
	pkgsrc-2023Q4:1.3.0.136
	pkgsrc-2023Q4-base:1.3
	pkgsrc-2023Q3:1.3.0.134
	pkgsrc-2023Q3-base:1.3
	pkgsrc-2023Q2:1.3.0.132
	pkgsrc-2023Q2-base:1.3
	pkgsrc-2023Q1:1.3.0.130
	pkgsrc-2023Q1-base:1.3
	pkgsrc-2022Q4:1.3.0.128
	pkgsrc-2022Q4-base:1.3
	pkgsrc-2022Q3:1.3.0.126
	pkgsrc-2022Q3-base:1.3
	pkgsrc-2022Q2:1.3.0.124
	pkgsrc-2022Q2-base:1.3
	pkgsrc-2022Q1:1.3.0.122
	pkgsrc-2022Q1-base:1.3
	pkgsrc-2021Q4:1.3.0.120
	pkgsrc-2021Q4-base:1.3
	pkgsrc-2021Q3:1.3.0.118
	pkgsrc-2021Q3-base:1.3
	pkgsrc-2021Q2:1.3.0.116
	pkgsrc-2021Q2-base:1.3
	pkgsrc-2021Q1:1.3.0.114
	pkgsrc-2021Q1-base:1.3
	pkgsrc-2020Q4:1.3.0.112
	pkgsrc-2020Q4-base:1.3
	pkgsrc-2020Q3:1.3.0.110
	pkgsrc-2020Q3-base:1.3
	pkgsrc-2020Q2:1.3.0.106
	pkgsrc-2020Q2-base:1.3
	pkgsrc-2020Q1:1.3.0.86
	pkgsrc-2020Q1-base:1.3
	pkgsrc-2019Q4:1.3.0.108
	pkgsrc-2019Q4-base:1.3
	pkgsrc-2019Q3:1.3.0.104
	pkgsrc-2019Q3-base:1.3
	pkgsrc-2019Q2:1.3.0.102
	pkgsrc-2019Q2-base:1.3
	pkgsrc-2019Q1:1.3.0.100
	pkgsrc-2019Q1-base:1.3
	pkgsrc-2018Q4:1.3.0.98
	pkgsrc-2018Q4-base:1.3
	pkgsrc-2018Q3:1.3.0.96
	pkgsrc-2018Q3-base:1.3
	pkgsrc-2018Q2:1.3.0.94
	pkgsrc-2018Q2-base:1.3
	pkgsrc-2018Q1:1.3.0.92
	pkgsrc-2018Q1-base:1.3
	pkgsrc-2017Q4:1.3.0.90
	pkgsrc-2017Q4-base:1.3
	pkgsrc-2017Q3:1.3.0.88
	pkgsrc-2017Q3-base:1.3
	pkgsrc-2017Q2:1.3.0.84
	pkgsrc-2017Q2-base:1.3
	pkgsrc-2017Q1:1.3.0.82
	pkgsrc-2017Q1-base:1.3
	pkgsrc-2016Q4:1.3.0.80
	pkgsrc-2016Q4-base:1.3
	pkgsrc-2016Q3:1.3.0.78
	pkgsrc-2016Q3-base:1.3
	pkgsrc-2016Q2:1.3.0.76
	pkgsrc-2016Q2-base:1.3
	pkgsrc-2016Q1:1.3.0.74
	pkgsrc-2016Q1-base:1.3
	pkgsrc-2015Q4:1.3.0.72
	pkgsrc-2015Q4-base:1.3
	pkgsrc-2015Q3:1.3.0.70
	pkgsrc-2015Q3-base:1.3
	pkgsrc-2015Q2:1.3.0.68
	pkgsrc-2015Q2-base:1.3
	pkgsrc-2015Q1:1.3.0.66
	pkgsrc-2015Q1-base:1.3
	pkgsrc-2014Q4:1.3.0.64
	pkgsrc-2014Q4-base:1.3
	pkgsrc-2014Q3:1.3.0.62
	pkgsrc-2014Q3-base:1.3
	pkgsrc-2014Q2:1.3.0.60
	pkgsrc-2014Q2-base:1.3
	pkgsrc-2014Q1:1.3.0.58
	pkgsrc-2014Q1-base:1.3
	pkgsrc-2013Q4:1.3.0.56
	pkgsrc-2013Q4-base:1.3
	pkgsrc-2013Q3:1.3.0.54
	pkgsrc-2013Q3-base:1.3
	pkgsrc-2013Q2:1.3.0.52
	pkgsrc-2013Q2-base:1.3
	pkgsrc-2013Q1:1.3.0.50
	pkgsrc-2013Q1-base:1.3
	pkgsrc-2012Q4:1.3.0.48
	pkgsrc-2012Q4-base:1.3
	pkgsrc-2012Q3:1.3.0.46
	pkgsrc-2012Q3-base:1.3
	pkgsrc-2012Q2:1.3.0.44
	pkgsrc-2012Q2-base:1.3
	pkgsrc-2012Q1:1.3.0.42
	pkgsrc-2012Q1-base:1.3
	pkgsrc-2011Q4:1.3.0.40
	pkgsrc-2011Q4-base:1.3
	pkgsrc-2011Q3:1.3.0.38
	pkgsrc-2011Q3-base:1.3
	pkgsrc-2011Q2:1.3.0.36
	pkgsrc-2011Q2-base:1.3
	pkgsrc-2011Q1:1.3.0.34
	pkgsrc-2011Q1-base:1.3
	pkgsrc-2010Q4:1.3.0.32
	pkgsrc-2010Q4-base:1.3
	pkgsrc-2010Q3:1.3.0.30
	pkgsrc-2010Q3-base:1.3
	pkgsrc-2010Q2:1.3.0.28
	pkgsrc-2010Q2-base:1.3
	pkgsrc-2010Q1:1.3.0.26
	pkgsrc-2010Q1-base:1.3
	pkgsrc-2009Q4:1.3.0.24
	pkgsrc-2009Q4-base:1.3
	pkgsrc-2009Q3:1.3.0.22
	pkgsrc-2009Q3-base:1.3
	pkgsrc-2009Q2:1.3.0.20
	pkgsrc-2009Q2-base:1.3
	pkgsrc-2009Q1:1.3.0.18
	pkgsrc-2009Q1-base:1.3
	pkgsrc-2008Q4:1.3.0.16
	pkgsrc-2008Q4-base:1.3
	pkgsrc-2008Q3:1.3.0.14
	pkgsrc-2008Q3-base:1.3
	cube-native-xorg:1.3.0.12
	cube-native-xorg-base:1.3
	pkgsrc-2008Q2:1.3.0.10
	pkgsrc-2008Q2-base:1.3
	cwrapper:1.3.0.8
	pkgsrc-2008Q1:1.3.0.6
	pkgsrc-2008Q1-base:1.3
	pkgsrc-2007Q4:1.3.0.4
	pkgsrc-2007Q4-base:1.3
	pkgsrc-2007Q3:1.3.0.2
	pkgsrc-2007Q3-base:1.3
	pkgsrc-2007Q2:1.2.0.8
	pkgsrc-2007Q2-base:1.2
	pkgsrc-2007Q1:1.2.0.6
	pkgsrc-2007Q1-base:1.2
	jlam-pkgviews:1.2.0.4
	jlam-pkgviews-base:1.2
	pkgsrc-2006Q4:1.2.0.2
	pkgsrc-2006Q4-base:1.2
	pkgsrc-2006Q3:1.1.0.4
	pkgsrc-2006Q3-base:1.1
	pkgsrc-2006Q2:1.1.0.2
	pkgsrc-2006Q2-base:1.1;
locks; strict;
comment	@# @;


1.3
date	2007.07.12.19.41.46;	author jlam;	state Exp;
branches;
next	1.2;

1.2
date	2006.12.15.13.15.06;	author martti;	state Exp;
branches;
next	1.1;

1.1
date	2006.05.21.23.50.15;	author jlam;	state Exp;
branches;
next	;


desc
@@


1.3
log
@* Add a user-settable variable to tune the default verbosity of the
  +INSTALL and +DEINSTALL scripts:

  PKGINSTALL_VERBOSE
	A list of scriptlets that will be verbose and output a message
	noting the actions taken.

	* "all" is a special value that implies all of the other items
	* "fonts" for +FONTS
	* "info-files" for +INFO_FILES

	Default value: "all" for PKG_DEVELOPERs, empty otherwise.

* Be "one-liner brief" when doing the default actions.  For example,
  the info files output now looks like:

	gmake-3.81: registering info file /usr/pkg/info/make.info

  We retain the current verbosity for the CHECK-* actions.
@
text
@# $NetBSD: usergroupfuncs.DragonFly,v 1.2 2006/12/15 13:15:06 martti Exp $
#
# Platform-specific adduser and addgroup functionality
# on top of pw(8).

# group_exists group [groupid]
#	Returns 0 if $group exists and has gid $groupid
#	Returns 1 if neither $group nor $groupid exist
#	Returns 2 if $group or $groupid exist but don't match
#	Returns 3 for all errors
#
group_exists()
{
	_group="$1"; _groupid="$2"
	${TEST} -n "$_group" || return 3

	# Check using chgrp to work properly in an NSS/NIS environment.
	_tmpdir="./.pkginstall.$$"
	${MKDIR} -p $_tmpdir 2>/dev/null || return 3
	${CHMOD} 0700 $_tmpdir
	_testpath="$_tmpdir/group_exists"
	${ECHO} > $_testpath
	if ${CHGRP} $_group $_testpath >/dev/null 2>&1; then
		# $_group exists
		_id=`${LS} -ln $_testpath 2>/dev/null | ${AWK} '{ print $4 }'`
		${TEST} -n "$_groupid" || _groupid=$_id
		if ${TEST} "$_groupid" = "$_id"; then
			${RM} -fr $_tmpdir; return 0
		fi
		${RM} -fr $_tmpdir; return 2
	elif ${TEST} -z "$_groupid"; then
		# $_group doesn't exist and $_groupid is not set
		${RM} -fr $_tmpdir; return 1
	elif ${CHGRP} $_groupid $_testpath >/dev/null 2>&1; then
		_name=`${LS} -l $_testpath 2>/dev/null | ${AWK} '{ print $4 }'`
		if ${TEST} "$_name" != "$_groupid"; then
			# $_group doesn't exist, but $_groupid exists
			${RM} -fr $_tmpdir; return 2
		fi
		# neither $_group nor $_groupid exist
		${RM} -fr $_tmpdir; return 1
	fi
	${RM} -fr $_tmpdir; return 3
}

# user_exists user [userid]
#	Returns 0 if $user exists and has uid $userid
#	Returns 1 if neither $user nor $userid exist
#	Returns 2 if $user or $userid exist but don't match
#	Returns 3 for all errors
#
user_exists()
{
	_user="$1"; _userid="$2"
	${TEST} -n "$_user" || return 3

	# Check using chown to work properly in an NSS/NIS environment.
	_tmpdir="./.pkginstall.$$"
	${MKDIR} -p $_tmpdir 2>/dev/null || return 3
	${CHMOD} 0700 $_tmpdir
	_testpath="$_tmpdir/user_exists"
	${ECHO} > $_testpath
	if ${CHOWN} $_user $_testpath >/dev/null 2>&1; then
		# $_user exists
		_id=`${LS} -ln $_testpath 2>/dev/null | ${AWK} '{ print $3 }'`
		${TEST} -n "$_userid" || _userid=$_id
		if ${TEST} "$_userid" = "$_id"; then
			${RM} -fr $_tmpdir; return 0
		fi
		${RM} -fr $_tmpdir; return 2
	elif ${TEST} -z "$_userid"; then
		# $_user doesn't exist and $_user is not set
		${RM} -fr $_tmpdir; return 1
	elif ${CHOWN} $_userid $_testpath >/dev/null 2>&1; then
		_name=`${LS} -l $_testpath 2>/dev/null | ${AWK} '{ print $3 }'`
		if ${TEST} "$_name" != "$_userid"; then
			# $_user doesn't exist, but $_userid exists
			${RM} -fr $_tmpdir; return 2
		fi
		# neither $_user nor $_userid exist
		${RM} -fr $_tmpdir; return 1
	fi
	${RM} -fr $_tmpdir; return 3
}

# adduser user group [userid] [descr] [home] [shell]
adduser()
{
	user="$1"; group="$2"; userid="$3"
	descr="$4"; home="$5" shell="$6"
	${TEST} $# -eq 6 || return 1
	${TEST} -n "$user" || return 2
	${TEST} -n "$group" || return 2

	PW="@@PW@@"

	case $user in
	${PKGNAME%-[0-9]*})	descr_dflt="$user user" ;;
	*)			descr_dflt="${PKGNAME%-[0-9]*} $user user" ;;
	esac
	: ${descr:="$descr_dflt"}
	: ${home:="@@PKG_USER_HOME@@"}
	: ${shell:="@@PKG_USER_SHELL@@"}

	if ${TEST} -n "${PW}" -a -x "${PW}"; then
		${ECHO} "${PKGNAME}: Creating user \`\`$user''"
		case $userid in
		"")
			${PW} useradd					\
				$user					\
				-c "$descr" -d "$home" -s "$shell"	\
				-g $group
			;;
		*)
			${PW} useradd					\
				$user					\
				-c "$descr" -d "$home" -s "$shell"	\
				-g $group -u $userid
			;;
		esac
	fi
	return 0
}

# adduser group [groupid]
addgroup()
{
	group="$1"; groupid="$2"
	${TEST} $# -eq 2 || return 1
	${TEST} -n "$group" || return 2

	PW="@@PW@@"

	if ${TEST} -n "${PW}" -a -x "${PW}"; then
		${ECHO} "${PKGNAME}: Creating group \`\`$group''"
		case $groupid in
		"")	${PW} groupadd $group ;;
		*)	${PW} groupadd $group -g $groupid ;;
		esac
	fi
	return 0
}
@


1.2
log
@Remove trailing tabs.
@
text
@d1 1
a1 1
# $NetBSD: usergroupfuncs.DragonFly,v 1.1 2006/05/21 23:50:15 jlam Exp $
d106 1
a106 1
		${ECHO} "Creating user: $user"
d135 1
a135 1
		${ECHO} "Creating group: $group";
@


1.1
log
@Move mk/install to mk/pkginstall to better reflect the contents (the
pkginstall framework).
@
text
@d1 1
a1 1
# $NetBSD: usergroupfuncs.DragonFly,v 1.7 2006/05/01 14:56:23 jlam Exp $
d11 1
a11 1
#	
d51 1
a51 1
#	
@

