#!/usr/bin/perl # format is fixscript.pl $UPDATERC=$ARGV[2]; # updaterc open STDIN, $ARGV[0]; # input file #open STDOUT,$ARGV[1]; # output file if ($ARGV[1] =~ /rm$/) { @opt=("erase","upgrade"); } else { @opt=("upgrade","install"); } while() { # strip out /etc/init.d/functions reference s#.*/init.d/functions#status() { (pidof \$1 >/dev/null); }# ; s#(\s+)success .+#$1 echo "OK"#; s#(\s+)failure .+#$1 echo "FAILED"#; s#service\s+#/etc/init.d/#; if (s#/sbin/chkconfig\s+##) { s#--del (\S+)#update-rc.d -f $1 remove#; s#--add.*#$UPDATERC#; } # Ugly fugly convert $1 = 0 to "$1" = "install" if (/\[.+\$1[\" ]+(\S+) (\S+).+\]/) { $cmd=$1; $foo=@opt[$2]; s#\$1 (\S+) \S+#"\$1" $cmd "$foo"#; } s#/etc/rc.d/init.d/#/etc/init.d/#; s#\s+daemon (.*)#start-stop-daemon --start --exec $1# ; s#killproc (.*)#start-stop-daemon --stop --exec $1# ; s#echo_success#echo -ne "[OK]\n"# ; s#echo_failure#echo -ne "[FAILED]\n"# ; if (/usleep (\S+)/) { $value = ($1 / 100000) + 1; s#usleep \S+#sleep $value#; } print $_ ; }