| 1 |
#!/bin/sh |
|---|
| 2 |
|
|---|
| 3 |
|
|---|
| 4 |
|
|---|
| 5 |
|
|---|
| 6 |
|
|---|
| 7 |
GAMEDIR= |
|---|
| 8 |
|
|---|
| 9 |
|
|---|
| 10 |
|
|---|
| 11 |
|
|---|
| 12 |
|
|---|
| 13 |
PIDFILE=netmush.pid |
|---|
| 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 |
CONF_FILE=mush.cnf |
|---|
| 40 |
|
|---|
| 41 |
|
|---|
| 42 |
|
|---|
| 43 |
if [ -z "$GAMEDIR" ]; then |
|---|
| 44 |
echo "You must set GAMEDIR in the restart script." |
|---|
| 45 |
exit 1 |
|---|
| 46 |
fi |
|---|
| 47 |
|
|---|
| 48 |
if [ ! -d "$GAMEDIR" ]; then |
|---|
| 49 |
echo "GAMEDIR doesn't appear to be a directory. It's: $GAMEDIR" |
|---|
| 50 |
exit 1 |
|---|
| 51 |
fi |
|---|
| 52 |
|
|---|
| 53 |
cd $GAMEDIR |
|---|
| 54 |
echo Running from `pwd` |
|---|
| 55 |
|
|---|
| 56 |
if [ ! -f "$CONF_FILE" ]; then |
|---|
| 57 |
echo "CONF_FILE doesn't exist. It's: $CONF_FILE" |
|---|
| 58 |
echo "Create $CONF_FILE from $GAMEDIR/mushcnf.dst and run 'make update'" |
|---|
| 59 |
exit 1 |
|---|
| 60 |
fi |
|---|
| 61 |
|
|---|
| 62 |
|
|---|
| 63 |
|
|---|
| 64 |
if [ ! -e netmush ]; then |
|---|
| 65 |
echo "I don't see $GAMEDIR/netmush. Did you remember to make install?" |
|---|
| 66 |
exit 1 |
|---|
| 67 |
fi |
|---|
| 68 |
|
|---|
| 69 |
|
|---|
| 70 |
|
|---|
| 71 |
|
|---|
| 72 |
INDB=`egrep "^input_database" $CONF_FILE | sed "s/.*[ ][ ]*.*\/\(.*\)/\1/" | sed 's/\r$//'` |
|---|
| 73 |
OUTDB=`egrep "^output_database" $CONF_FILE | sed "s/.*[ ][ ]*.*\/\(.*\)/\1/" | sed 's/\r$//'` |
|---|
| 74 |
PANICDB=`egrep "^crash_database" $CONF_FILE | sed "s/.*[ ][ ]*.*\/\(.*\)/\1/" | sed 's/\r$//'` |
|---|
| 75 |
PANICDIR=`egrep "^crash_database" $CONF_FILE | sed "s/.*[ ][ ]*\(.*\)\/.*/\1/" | sed 's/\r$//'` |
|---|
| 76 |
COMPRESSOR="cat" |
|---|
| 77 |
SUFFIX="" |
|---|
| 78 |
|
|---|
| 79 |
|
|---|
| 80 |
egrep -s "^compress_program[ ]*[A-Za-z0-9]" $CONF_FILE |
|---|
| 81 |
nocompress=$? |
|---|
| 82 |
if [ "$nocompress" -eq 0 ]; then |
|---|
| 83 |
COMPRESSOR=`egrep "^compress_program" $CONF_FILE | sed "s/[^ ]*[ ]*\(.*\)/\1/" | sed 's/\r$//'` |
|---|
| 84 |
SUFFIX=`egrep "^compress_suffix" $CONF_FILE | sed "s/[^ ]*[ ]*\(.*\)/\1/" | sed 's/\r$//'` |
|---|
| 85 |
fi |
|---|
| 86 |
|
|---|
| 87 |
|
|---|
| 88 |
|
|---|
| 89 |
|
|---|
| 90 |
|
|---|
| 91 |
|
|---|
| 92 |
|
|---|
| 93 |
|
|---|
| 94 |
|
|---|
| 95 |
|
|---|
| 96 |
|
|---|
| 97 |
|
|---|
| 98 |
if [ -f $PIDFILE ]; then |
|---|
| 99 |
foo=`kill -0 \`cat $PIDFILE\` 2>/dev/null` |
|---|
| 100 |
mush=$? |
|---|
| 101 |
else |
|---|
| 102 |
mush=1; |
|---|
| 103 |
fi |
|---|
| 104 |
|
|---|
| 105 |
if [ "$mush" -eq 0 ]; then |
|---|
| 106 |
echo Mush already active or some other process is using $GAMEDIR/$CONF_FILE. |
|---|
| 107 |
exit 0 |
|---|
| 108 |
fi |
|---|
| 109 |
|
|---|
| 110 |
echo Building text file indexes. |
|---|
| 111 |
(cd txt; make) |
|---|
| 112 |
|
|---|
| 113 |
echo Restarting Mush. |
|---|
| 114 |
|
|---|
| 115 |
if [ -r "$PANICDIR/$PANICDB" ]; then |
|---|
| 116 |
end="`tail -1 $PANICDIR/$PANICDB`" |
|---|
| 117 |
if [ "$end" = "***END OF DUMP***" ]; then |
|---|
| 118 |
echo "Recovering PANIC dump." |
|---|
| 119 |
cat $PANICDIR/$PANICDB | $COMPRESSOR > data/$OUTDB$SUFFIX |
|---|
| 120 |
rm $PANICDIR/$PANICDB |
|---|
| 121 |
echo "PANIC dump successfully recovered." |
|---|
| 122 |
else |
|---|
| 123 |
mv $PANICDIR/$PANICDB save/$PANICDB.corrupt |
|---|
| 124 |
echo "Warning: PANIC dump corrupt. Using older db." |
|---|
| 125 |
fi |
|---|
| 126 |
fi |
|---|
| 127 |
|
|---|
| 128 |
|
|---|
| 129 |
mv -f log/*.log save/ |
|---|
| 130 |
|
|---|
| 131 |
if [ -r "data/$OUTDB$SUFFIX" ]; then |
|---|
| 132 |
rm -f save/$INDB$SUFFIX.old |
|---|
| 133 |
mv -f data/$INDB$SUFFIX save/$INDB$SUFFIX.old |
|---|
| 134 |
mv data/$OUTDB$SUFFIX data/$INDB$SUFFIX |
|---|
| 135 |
else |
|---|
| 136 |
echo "No $OUTDB$SUFFIX found." |
|---|
| 137 |
if [ -r "data/$INDB$SUFFIX" ]; then |
|---|
| 138 |
echo "Using $INDB$SUFFIX." |
|---|
| 139 |
else |
|---|
| 140 |
echo "No $INDB$SUFFIX found." |
|---|
| 141 |
if [ -r "save/$INDB$SUFFIX.old" ]; then |
|---|
| 142 |
echo "Using save/$INDB$SUFFIX.old." |
|---|
| 143 |
cp save/$INDB$SUFFIX.old data/$INDB$SUFFIX |
|---|
| 144 |
else |
|---|
| 145 |
echo "No database found. Mush will start with a minimal world." |
|---|
| 146 |
fi |
|---|
| 147 |
fi |
|---|
| 148 |
fi |
|---|
| 149 |
|
|---|
| 150 |
if [ -r reboot.db ]; then |
|---|
| 151 |
rm -f reboot.db |
|---|
| 152 |
fi |
|---|
| 153 |
|
|---|
| 154 |
DATEMSK="${GAMEDIR}/getdate.template" |
|---|
| 155 |
export DATEMSK |
|---|
| 156 |
|
|---|
| 157 |
LC_ALL=$LANG LANG=$LANG ./netmush $@ $GAMEDIR/$CONF_FILE & |
|---|