58
58
#Make sure that all variables are there, and also create the file if
61
for VAR in REMOTE REMOTE_MODULES REMOTE_DRIVER REMOTE_DEVICE REMOTE_SOCKET REMOTE_LIRCD_CONF REMOTE_LIRCD_ARGS TRANSMITTER TRANSMITTER_MODULES TRANSMITTER_DRIVER TRANSMITTER_DEVICE TRANSMITTER_SOCKET TRANSMITTER_LIRCD_CONF TRANSMITTER_LIRCD_ARGS START_LIRCD START_LIRCMD LOAD_MODULES LIRCMD_CONF FORCE_NONINTERACTIVE_RECONFIGURATION
61
for VAR in REMOTE REMOTE_MODULES REMOTE_DRIVER REMOTE_DEVICE REMOTE_LIRCD_CONF REMOTE_LIRCD_ARGS TRANSMITTER TRANSMITTER_MODULES TRANSMITTER_DRIVER TRANSMITTER_DEVICE TRANSMITTER_LIRCD_CONF TRANSMITTER_LIRCD_ARGS START_LIRCD START_LIRCMD LOAD_MODULES LIRCMD_CONF FORCE_NONINTERACTIVE_RECONFIGURATION
63
63
# Patch provided by Robert Bihlmeyer <robbe@orcus.priv.at>
64
64
# See http://bugs.debian.org/303078
127
127
#Present the user with some choices
128
128
#To later explain what this is actually doing without man pages:
129
129
#First, only grab lines with a ;
130
131
#Now, remove all commas from streams
131
132
#Now, Remove all remaining comments or ['s
132
133
#Now, Print the remote name
133
#Next, sort the list and remove duplicates
134
134
#Now, Affix a comma and space to all starts of lines
135
135
#Lastly, change the newline to a null character
136
REMOTES=`cat /usr/share/lirc/lirc.hwdb /usr/share/lirc/extras/more_remotes.hwdb 2>/dev/null | grep ";" | sed 's/,//g' | awk -F ";" '$0!~/^#|^\[/{print $1}' | sort -u | sed 's/^/,\ /' | tr '\n' '\0'`
136
REMOTES=`grep ";" /usr/share/lirc/lirc.hwdb | sort | sed 's/,//g' | awk -F ";" '$0!~/^#|^\[/{print $1}' | sed 's/^/,\ /' | tr '\n' '\0'`
137
TRANSMITTERS=`grep ";" /usr/share/lirc/transmitter.hwdb | sort | sed 's/,//g' | awk -F ";" '$0!~/^#|^\[/{print $1}' | sed 's/^/,\ /' | tr '\n' '\0'`
137
138
db_subst lirc/remote REMOTES $REMOTES
139
if [ -f /usr/share/lirc/extras/transmitter.hwdb ]; then
140
TRANSMITTERS=`grep ";" /usr/share/lirc/extras/transmitter.hwdb | sort | sed 's/,//g' | awk -F ";" '$0!~/^#|^\[/{print $1}' | sed 's/^/,\ /' | tr '\n' '\0'`
141
db_subst lirc/transmitter TRANSMITTERS $TRANSMITTERS
139
db_subst lirc/transmitter TRANSMITTERS $TRANSMITTERS
144
141
#If we are forcing a reconfigure, then our old remote and new ones are the same
145
142
if [ "$FORCE_NONINTERACTIVE_RECONFIGURATION" = "true" ]; then
146
143
CHOSEN_REMOTE="${OLDREMOTE}"
148
144
db_set lirc/remote $CHOSEN_REMOTE
150
146
db_input high lirc/remote || true
151
if [ -f /usr/share/lirc/extras/transmitter.hwdb ]; then
152
db_input high lirc/transmitter || true
147
db_input high lirc/transmitter || true
156
150
#Populate remote information (remote is our primary device at all times)
161
155
if [ "$CHOSEN_REMOTE" != "None" -a "$CHOSEN_REMOTE" != "Custom" ] && [ "$OLDREMOTE" != "$CHOSEN_REMOTE" -o "$FORCE_NONINTERACTIVE_RECONFIGURATION" = "true" ]; then
162
#To later explain what this is actually doing without man pages:
163
#First, only grab lines with a ;
164
#Now, remove all commas from streams
165
#Lastly, take the last matching entry found (so remotes.hwdb overrides lirc.hwdb)
166
REMOTE_LINE=`cat /usr/share/lirc/lirc.hwdb /usr/share/lirc/extras/more_remotes.hwdb 2>/dev/null | grep ";" | sed 's/,//g' | grep "${CHOSEN_REMOTE}" | tail -1`
167
#Remove all remaining comments or ['s
168
#then print the remote name
169
REMOTE_MODULES=`echo $REMOTE_LINE | awk -F ";" '$0!~/^#|^\[/{print $3}'`
170
REMOTE_DRIVER=`echo $REMOTE_LINE | awk -F ";" '$0!~/^#|^\[/{print $2}'`
171
REMOTE_LIRCD_CONF=`echo $REMOTE_LINE | awk -F ";" '$0!~/^#|^\[/{print $5}'`
156
REMOTE_MODULES=`grep ";" /usr/share/lirc/lirc.hwdb | sort | sed 's/,//g' | grep "${CHOSEN_REMOTE}" | awk -F ";" '$0!~/^#|^\[/{print $3}'`
157
REMOTE_DRIVER=`grep ";" /usr/share/lirc/lirc.hwdb | sort | sed 's/,//g' | grep "${CHOSEN_REMOTE}" | awk -F ";" '$0!~/^#|^\[/{print $2}'`
158
REMOTE_LIRCD_CONF=`grep ";" /usr/share/lirc/lirc.hwdb | sort | sed 's/,//g' | grep "${CHOSEN_REMOTE}" | awk -F ";" '$0!~/^#|^\[/{print $5}'`
172
159
SUPPORTED_DRIVERS=`lircd -H help 2>&1 | awk '$0!~/^S|^D/{print $1}' | tr '\n' '\ '`
174
161
#/dev/input/eventX is a weird case: filter it
258
245
#If we are forcing a reconfigure, then our old remote and new ones are the same
259
246
if [ "$FORCE_NONINTERACTIVE_RECONFIGURATION" = "true" ]; then
260
247
CHOSEN_TRANSMITTER="${OLDTRANSMITTER}"
262
248
db_set lirc/transmitter $CHOSEN_TRANSMITTER
264
250
#populate transmitter information (transmitter is secondary device)
266
252
CHOSEN_TRANSMITTER="${RET}"
269
if [ -f /usr/share/lirc/extras/transmitter.hwdb ] && [ "$CHOSEN_TRANSMITTER" != "None" -a "$CHOSEN_TRANSMITTER" != "Custom" ] && [ "$OLDTRANSMITTER" != "$CHOSEN_TRANSMITTER" -o "$FORCE_NONINTERACTIVE_RECONFIGURATION" = "true" ]; then
270
TRANSMITTER_LINE=`grep ";" /usr/share/lirc/extras/transmitter.hwdb | sed 's/,//g' | grep "${CHOSEN_TRANSMITTER}" | tail -1`
271
TRANSMITTER_MODULES=`echo $TRANSMITTER_LINE | awk -F ";" '$0!~/^#|^\[/{print $3}'`
272
TRANSMITTER_DRIVER=`echo $TRANSMITTER_LINE | awk -F ";" '$0!~/^#|^\[/{print $2}'`
273
TRANSMITTER_LIRCD_CONF=`echo $TRANSMITTER_LINE | awk -F ";" '$0!~/^#|^\[/{print $5}'`
255
if [ "$CHOSEN_TRANSMITTER" != "None" -a "$CHOSEN_TRANSMITTER" != "Custom" ] && [ "$OLDTRANSMITTER" != "$CHOSEN_TRANSMITTER" -o "$FORCE_NONINTERACTIVE_RECONFIGURATION" = "true" ]; then
256
TRANSMITTER_MODULES=`grep ";" /usr/share/lirc/transmitter.hwdb | sort | sed 's/,//g' | grep "${CHOSEN_TRANSMITTER}" | awk -F ";" '$0!~/^#|^\[/{print $3}'`
257
TRANSMITTER_DRIVER=`grep ";" /usr/share/lirc/transmitter.hwdb | sort | sed 's/,//g' | grep "${CHOSEN_TRANSMITTER}" | awk -F ";" '$0!~/^#|^\[/{print $2}'`
258
TRANSMITTER_LIRCD_CONF=`grep ";" /usr/share/lirc/transmitter.hwdb | sort | sed 's/,//g' | grep "${CHOSEN_TRANSMITTER}" | awk -F ";" '$0!~/^#|^\[/{print $5}'`
274
259
#transmitter.hwdb puts none rather than ;;
275
260
if [ "$TRANSMITTER_MODULES" != "none" ]; then
276
261
#if we have a module in use, don't use a driver too
302
287
#Choose a serial port if we are using serial
303
if [ "$REMOTE_MODULES" = "lirc_dev lirc_serial" ] || [ "$TRANSMITTER_MODULES" = "lirc_dev lirc_serial" ]; then
288
if [ "$REMOTE_MODULES" = "lirc_dev lirc_serial" ] || [ "$TRANSMITTER_MODULES" = "lirc_dev lirc_serial" ] || \
289
[ "$REMOTE_MODULES" = "lirc_dev lirc_serial_igor" ] || [ "$TRANSMITTER_MODULES" = "lirc_dev lirc_serial_igor" ]; then
304
290
db_input high lirc/serialport || true
306
292
#if we aren't using serial, then go back to default
327
313
if [ ! -z "TRANSMITTER_MODULES" -a "$TRANSMITTER_MODULES" = "$REMOTE_MODULES" ] || [ ! -z "$TRANSMITTER_DRIVER" -a "$TRANSMITTER_DRIVER" = "$REMOTE_DRIVER" ]; then
328
314
TRANSMITTER_DEVICE=""
329
315
TRANSMITTER_DRIVER=""
316
#corner case for pvr-150's transmitter
317
elif [ "$REMOTE_MODULES" = "lirc_dev lirc_i2c" ] && [ "$TRANSMITTER_MODULES" = "lirc_dev lirc_pvr150" ]; then
318
REMOTE_MODULES="$TRANSMITTER_MODULES"
319
TRANSMITTER_DEVICE=""
320
TRANSMITTER_DRIVER=""
321
TRANSMITTER_MODULES=""
330
322
#if they aren't the same driver/device, we needed a remote module and we need a transmitter kernel module
331
323
elif [ "$REMOTE_DEVICE" = "/dev/lirc0" ] && [ ! -z "$TRANSMITTER_MODULES" ]; then
332
324
TRANSMITTER_DEVICE="/dev/lirc1"
407
399
REMOTE_MODULES=$RET
408
400
db_get lirc/transmitter_modules
409
401
TRANSMITTER_MODULES=$RET
410
if [ "$REMOTE_MODULES" = "lirc_dev lirc_serial" ] || [ "$TRANSMITTER_MODULES" = "lirc_dev lirc_serial" ]; then
402
if [ "$REMOTE_MODULES" = "lirc_dev lirc_serial" ] || [ "$TRANSMITTER_MODULES" = "lirc_dev lirc_serial" ] || \
403
[ "$REMOTE_MODULES" = "lirc_dev lirc_serial_igor" ] || [ "$TRANSMITTER_MODULES" = "lirc_dev lirc_serial_igor" ]; then
412
405
#if we chose ttyS0 or ttyS1, add it to modprobe.d
413
406
db_get lirc/serialport
415
408
if [ "$SERIAL" = "/dev/ttyS0" ]; then
416
cat > /etc/modprobe.d/lirc-serial.conf <<EOF
409
cat > /etc/modprobe.d/lirc-serial <<EOF
417
410
#COM1 equivalent, /dev/ttyS0
418
411
options lirc_serial irq=4 io=0x3f8
419
412
#COM2 equivalent, /dev/ttyS1
423
416
elif [ "$SERIAL" = "/dev/ttyS1" ]; then
424
cat > /etc/modprobe.d/lirc-serial.conf <<EOF
417
cat > /etc/modprobe.d/lirc-serial <<EOF
425
418
#COM1 equivalent, /dev/ttyS0
426
419
#options lirc_serial irq=4 io=0x3f8
427
420
#COM2 equivalent, /dev/ttyS1
462
455
#if we have a remote, include it's config
463
if [ -f "/usr/share/lirc/extras/more_remotes/$REMOTE_LIRCD_CONF" ];then
464
cat >> /etc/lirc/lircd.conf <<EOF
465
#Configuration for the $REMOTE remote:
466
include "/usr/share/lirc/extras/more_remotes/$REMOTE_LIRCD_CONF"
469
elif [ -f "/usr/share/lirc/remotes/$REMOTE_LIRCD_CONF" ];then
470
cat >> /etc/lirc/lircd.conf <<EOF
471
#Configuration for the $REMOTE remote:
472
include "/usr/share/lirc/remotes/$REMOTE_LIRCD_CONF"
456
if [ -f "/usr/share/lirc/remotes/$REMOTE_LIRCD_CONF" ];then
457
cat >> /etc/lirc/lircd.conf <<EOF
458
#Configuration for the $REMOTE remote:
459
include /usr/share/lirc/remotes/$REMOTE_LIRCD_CONF
475
462
elif [ -f "$REMOTE_LIRCD_CONF" ]; then
476
463
cat >> /etc/lirc/lircd.conf <<EOF
477
464
#Configuration for the $REMOTE remote:
478
include "$REMOTE_LIRCD_CONF"
465
include $REMOTE_LIRCD_CONF
481
468
elif [ "$REMOTE" != "None" ]; then
490
477
#if we have a transmitter, include it's config
491
if [ -f "/usr/share/lirc/extras/transmitters/$TRANSMITTER_LIRCD_CONF" ];then
478
if [ -f "/usr/share/lirc/transmitters/$TRANSMITTER_LIRCD_CONF" ];then
492
479
cat >> /etc/lirc/lircd.conf <<EOF
493
480
#Configuration for the $TRANSMITTER transmitter:
494
include "/usr/share/lirc/extras/transmitters/$TRANSMITTER_LIRCD_CONF"
481
include /usr/share/lirc/transmitters/$TRANSMITTER_LIRCD_CONF
496
483
elif [ -f "$TRANSMITTER_LIRCD_CONF" ]; then
497
484
cat >> /etc/lirc/lircd.conf <<EOF
498
485
#Configuration for the $TRANSMITTER transmitter:
499
include "$TRANSMITTER_LIRCD_CONF"
486
include $TRANSMITTER_LIRCD_CONF
502
489
elif [ "$TRANSMITTER" != "None" ]; then
527
sed -i 's/\(^include\ \/.*$\)/\1\"/; s/^include\ \//include\ \"\//' $1
531
511
. /usr/share/debconf/confmodule
533
513
if [ "$1" = "configure" ]; then
535
#0.8.6 got rid of mceusb2 so users need to repick remotes
536
if dpkg --compare-versions "$2" le-nl "0.8.6-0ubuntu1"; then
537
db_fset lirc/remote seen false
538
db_fset lirc/transmitter seen false
541
if [ -e "/etc/modprobe.d/lirc-serial" ]; then
542
echo "Preserving user changes to /etc/modprobe.d/lirc-serial.conf ..."
543
if [ -e "/etc/modprobe.d/lirc-serial.conf" ]; then
544
mv -f "/etc/modprobe.d/lirc-serial.conf" "/etc/modprobe.d/lirc-serial.conf.dpkg-new"
546
mv -f "/etc/modprobe.d/lirc-serial" "/etc/modprobe.d/lirc-serial.conf"
550
#migrate syntax from older lirc version that might have included
551
#an older variant of the include patch in intrepid and earlier
552
if [ -n "$2" ] && dpkg --compare-versions "$2" lt "0.8.4a-0ubuntu2"; then
553
migrate_include /etc/lirc/lircd.conf
557
515
[ -x /sbin/udevd ] && invoke-rc.d udev reload >&2
559
517
#unload any old modules before starting
598
556
# if there is a misplaced config file it is ok to move it to
599
557
# the right place
600
if [ -f /etc/lircmd.conf ];then
558
if [ -f /etc/lircmd.conf ];then
601
559
echo moving /etc/lircmd.conf to /etc/lirc/
602
560
mv /etc/lircmd.conf /etc/lirc/
604
562
# we don't restore the file unless the user is (re)configuring
605
563
elif $CONFIG_CHANGED \
606
&& [ -f "/usr/share/lirc/extras/more_remotes/$RET" ];then
607
echo trying default lircmd.conf
608
cp /usr/share/lirc/extras/more_remotes/$RET \
609
/etc/lirc/lircmd.conf
610
elif $CONFIG_CHANGED \
611
564
&& [ -f "/usr/share/lirc/remotes/$RET" ];then
612
565
echo trying default lircmd.conf
613
566
cp /usr/share/lirc/remotes/$RET \