summaryrefslogtreecommitdiff
path: root/dh_suidregister
blob: 4ca72a1cf0ab97491720ec8bad1c048cc3fa7936 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
#!/bin/sh -e
#
# If no parameters are given, and no debian/suid files exists, scan for 
# suid/sgid files and suidregister them. 
#
# If there are parameters, or there is a debian/suid, register the files
# listed there.

PATH=debian:$PATH:/usr/lib/debhelper
. dh_lib

for PACKAGE in $DH_DOPACKAGES; do
	TMP=`tmpdir $PACKAGE`
	EXT=`pkgext $PACKAGE`

	files=""

	if [ -e debian/${EXT}suid ]; then
		files=`tr "\n" " " < debian/${EXT}suid`
	fi

	if [ "$PACKAGE" = "$MAINPACKAGE" -a "$*" ]; then
		files="$* $files"
	fi

	if [ ! "$files" -a ! -e debian/${EXT}suid ]; then
		# No files specified (and no empty debian/suid file), so
		# guess what files to process.
		files=`find debian/$TMP -type f -perm +6000`

		# We will strip the debian working directory off of the
		# filenames.
		tostrip="debian/$TMP/"
	else
		# We will strip leading /'s, so the user can feed this
		# program either absolute filenames, or relative filenames,
		# and it will do the right thing either way.
		tostrip="/"
	fi

	if [ "$files" ]; then
		for file in $files; do
			# Strip leading $tostrip from $file. If not there,
			# leave $file untouched.
			if [ `expr "$file" : "$tostrip\\(.*\\)"` ]; then
				file=`expr "$file" : "$tostrip\\(.*\\)"`
			fi
			
			# Create the sed string that will be used to 
			# fill in the blanks in the autoscript files.
			# Fill with the owner, group, and perms of the file.
			sedstr=`find debian/$TMP/$file -printf "s:#FILE#:$file:;s/#PACKAGE#/$PACKAGE/;s/#OWNER#/%u/;s/#GROUP#/%g/;s/#PERMS#/%m/"`
			
			autoscript "postinst" "postinst-suid" "$sedstr"
			autoscript "postrm" "postrm-suid" "$sedstr"
		done
	fi
done