config is in uswsusp 1.0+20120915-6.1build1.
This file is a maintainer script. It is executed when installing (*inst) or removing (*rm) the package.
The actual contents of the file can be viewed below.
| 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 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 | #!/bin/bash
set -e
# uswsusp.config -- configure script for uswsusp debian package
#
# Copyright 2006, 2007	Tim Dijkstra <tim@famdijkstra.org>
# Copyright 2012	Rodolfo García Peñas <kix@kix.es>
#  04-2012 Full rewrited
# Released under GPLv2
CONFIGNAME=uswsusp.conf
CONFIGFILE=/etc/$CONFIGNAME
SWAPOFFSET=/usr/sbin/swap-offset
# If we don't have /proc or /sys we can't work, this will probably
# be a chroot or so.
function check_filesystems
{
	mountpoint -q /sys || {
		echo "/sys not mounted. Can't create $CONFIGNAME" >> /dev/stderr;
		exit 0; }
	mountpoint -q /proc || {
		echo "/proc not mounted. Can't create $CONFIGNAME" >> /dev/stderr;
		exit 0; }
}
# This function returns the full path in /dev/disk/by-uuid
# for a given /dev device. If not found, returns the /dev device.
function dev_to_uuid
{
	local link
	local path
	local uuid
	if [ -d /dev/disk/by-uuid ]; then
		uuid=$tmpswap
		for path in /dev/disk/by-uuid/*; do
			link=$(readlink -f "$path")
			if [ "$link" = "$tmpswap" ]; then
				uuid=${path}
				break;
			fi
		done
		tmpswap=$uuid
	fi
}
function get_list_of_swaps
{
	SWAPLIST=
	SWAPFIRST=
	KOMMA=
	tmpswap=
	# Swap file support is from 2.6.20
	if dpkg --compare-versions `uname -r` lt 2.6.20; then
		NO_FILE=' && $2!="file"'
	fi
	# List of swaps, listed by size
	for tmpswap in `sort -nr -k 3 /proc/swaps | awk '$2!="Type" '"$NO_FILE"' {print $1}'`; do
		dev_to_uuid
		SWAPLIST=${SWAPLIST}${KOMMA}${tmpswap}
		if [ -z "$KOMMA" ]; then
			SWAPFIRST=${tmpswap}
			KOMMA=", "
		fi
	done
}
# This function checks snapshot support
function check_snapshot_support
{
	if [ ! -e /sys/class/misc/snapshot/dev ]; then
		db_input critical uswsusp/no_snapshot || true
		db_fset uswsusp/no_snapshot hit true
		db_go || true
		exit 0
	fi
}
# This function sets the max size of image
function set_image_size
{
	IMAGESIZE=`awk '$1 == "MemTotal:" {printf("%lu\n", $2*1024*0.46)}' /proc/meminfo 2> /dev/null`
	if [ -n "$IMAGESIZE" ]; then
		db_set uswsusp/image_size $IMAGESIZE
	fi
}
# Read the configuration file
function read_config_file
{
# Luckily the parser in s2disk is quite strict
	for i in $LOWQ $MEDQ $HIGHQ $NOTQ; do
		VAL=`sed -n 's/^[[:space:]]*'"${i//_/ }"'[[:space:]]*[=:][[:space:]]*\([^[:space:]]*\)/\1/ p' $CONFIGFILE`
		# For boolean values it only checks for [yY]
		db_metaget uswsusp/${i} type
		TYPE=$RET
		if [ "boolean" = "$TYPE" ]; then
			if [ "$VAL" = "y" -o "$VAL" = "Y" ];  then
				db_set uswsusp/${i} true
			else
				db_set uswsusp/${i} false
			fi
		else
			db_set uswsusp/${i} "$VAL"
		fi
	done
}
function get_partition_to_use
{
	if [ -z "$USERSWAP" ]; then
		# The user didn't set one: Set the first as default
		SWAPDEFAULT=$SWAPFIRST
	elif echo "$SWAPLIST" | grep -q -e '\(^\|, \)'$USERSWAP'\(,\|$\)'; then
		# Valid swap partition
		SWAPDEFAULT=$USERSWAP
	elif [ -n "$USEROFFSET" ] && [ -x $SWAPOFFSET ]; then
		# Offset was specified
		# If we don't have swap-offset, this probably means uswsusp
		# was removed before, leaving the config file. Now we don't
		# have a way to check the offset. Best is to ask if this is OK
		devid=`printf "%x%02x" $(stat -c "0x%t 0x%T" $USERSWAP 2> /dev/null)`
		while read name type rest; do
			[ "$type" == "file" ]  || continue;
			[ "$(stat -c '%D' $name)" == "$devid" ] || continue;
			[ "$USEROFFSET" == "$(swap-offset $name | cut -c17- )" ] || continue;
			SWAPDEFAULT=$name
			break
		done < /proc/swaps
	fi
}
# Some people want to use a swap partition that is only mounted
# during suspend. This means we can't find it in /proc/swaps, but
# it is a valid option non the less. To not remove their changes
# we add it to the SWAPLIST, but not after we confirmed this is
# what they want.
function get_partition_mounted_to_use
{
	# This can be:
	#   Offset is given, no sbin/swap-offset
	#   Offset is given, USERSWAP:USEROFFSET not in /proc/swaps
	#   No offset, USERSWAP not in /proc/swaps
	db_input critical uswsusp/continue_without_swap || true
	db_get uswsusp/continue_without_swap
	if [ "$RET" = "true" ]; then
		SWAPLIST=${SWAPLIST}${KOMMA}${USERSWAP} ;
		SWAPDEFAULT=${USERSWAP}
		db_fset uswsusp/continue_without_swap hit true
	fi
}
function setup_priority_questions
{
	for i in $LOWQ; do
		db_input low uswsusp/${i} || true
	done
	for i in $MEDQ; do
		db_input medium uswsusp/${i} || true
	done
	for i in $HIGHQ; do
		db_input high uswsusp/${i} || true
	done
	# Ask questions
	db_go || true
}
function set_encryption
{
	# First ask filename
	while [ 1 ] ; do
		db_input low uswsusp/RSA_key_file || true
		db_go || true
		db_get uswsusp/RSA_key_file || true
		KEYFILE=$RET
		if [ -n "$KEYFILE" ]; then
			break
		fi
		db_reset uswsusp/RSA_key_file
	done
	# Then ask if we should generate it, default to yes if they don't have one yet
	if [ -e "$KEYFILE" ]; then
		db_set uswsusp/create_RSA_key false
	else
		db_set uswsusp/create_RSA_key true
	fi
	db_input low uswsusp/create_RSA_key || true
	db_go || true
	# If they want it created, ask nr bits and passphrase (twice)
	db_get uswsusp/create_RSA_key
	if [ "$RET" = "true" ]; then
		while [ 1 ]; do
			db_input low uswsusp/RSA_key_bits || true
			db_go || true
			db_get uswsusp/RSA_key_bits
			if [ -z "$RET" ] || [ $RET -ge 1024 -a $RET -le 4096 ]; then
				break;
			fi
			db_reset uswsusp/RSA_key_bits
		done
		P1=A; P2=B;
		while [ "$P1" != "$P2" ]; do
			db_input critical uswsusp/RSA_passphrase || true
			db_input critical uswsusp/RSA_passphrase_v || true
			db_go || true
			db_get uswsusp/RSA_passphrase
			if [ -n "$RET" ]; then
				P1=$RET;
			fi
			db_get uswsusp/RSA_passphrase_v
			if [ -n "$RET" ]; then
				P2=$RET;
			fi
		done
	fi
}
# MAIN SCRIPT #
. /usr/share/debconf/confmodule
LOWQ="snapshot_device compute_checksum compress early_writeout image_size suspend_loglevel max_loglevel shutdown_method"
MEDQ="resume_device encrypt"
HIGHQ=""
NOTQ="RSA_key_file shutdown_method resume_offset"
# Check if filesystems /proc and /sys are mounted
check_filesystems
# Reset these flags
db_fset uswsusp/no_swap hit false
db_fset uswsusp/no_snapshot hit false
db_fset uswsusp/continue_without_swap hit false
# Try to detect snapshot support
check_snapshot_support
# Get the list of swap devices
get_list_of_swaps
# Set the maximum size for image
set_image_size
# If config file, read it
if [ -e "$CONFIGFILE" ]; then
	read_config_file
fi
# Check resume_device and resume_offset from the config file
db_get uswsusp/resume_device
# If the file is a device file, translate to uuid file
# Else we can get an error about file is not active.
# debconf error uswsusp/continue_without_swap
tmpswap=$RET
dev_to_uuid
USERSWAP=$tmpswap
db_get uswsusp/resume_offset
USEROFFSET=$RET
# Get the swap partition to use
get_partition_to_use
# Some people want to use a swap partition that is only mounted
# during suspend. This means we can't find it in /proc/swaps, but
# it is a valid option non the less. To not remove their changes
# we add it to the SWAPLIST, but not after we confirmed this is
# what they want.
if [ -z "$SWAPDEFAULT" ]; then
	get_partition_mounted_to_use
fi
# If we still do not have a SWAPLIST, something is wrong
if [ -z "$SWAPLIST" ]; then
	db_input critical uswsusp/no_swap || true
	db_fset uswsusp/no_swap hit true
	db_go || true
	exit 0
fi
db_subst uswsusp/resume_device list $SWAPLIST
db_set uswsusp/resume_device $SWAPDEFAULT
# If we're still here, reset the seen flags on error messages
# Maybe they had problems before, but not anymore...
db_fset uswsusp/no_swap seen false
db_fset uswsusp/no_snapshot seen false
# Stetup questions according to  priority
setup_priority_questions
# Only if they want encryption, ask the RSA question
db_get uswsusp/encrypt
if [ "$RET" = "false" ]; then
	db_set uswsusp/create_RSA_key false
elif [ "$RET" = "true" ]; then
	set_encryption
fi
 |