File: restart

package info (click to toggle)
pennmush 1.8.0p4-1
  • links: PTS
  • area: main
  • in suites: sarge
  • size: 8,068 kB
  • ctags: 6,319
  • sloc: ansic: 68,221; sh: 7,056; perl: 1,150; makefile: 284
file content (142 lines) | stat: -rwxr-xr-x 3,981 bytes parent folder | download
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
#!/bin/sh
#
# usage: restart
#
# REQUIRED: You must set this to the path to your game directory.
# E.g.: /home/mush/game
GAMEDIR=

# OPTIONAL things that you may want to tweak.

# Uncomment the line below to attempt to allow crashes to produce
# core dumps. If you're getting crashes, this is the best way
# to debug them.
#ulimit -c unlimited

# Internationalization stuff
# Set LANG here to get international character sets and, if someone's
# done it, translation of messages.
# Vaild locales are usually <lang_code>_<COUNTRY CODE>
# Example (uncomment to use):
#LANG=fr_FR

# Time zone stuff
# If you want your MUSH to run in a different timezone than the one
# you're in, you need to identify the target time zone file in 
# /usr/share/zoneinfo or /usr/lib/zoneinfo. Then uncomment the next
# two lines and set TZ to the desired timezone file, as shown, with
# an initial colon:
#TZ=:EST5EDT
#export TZ


# The config file. Best to keep this as is. If you must change
# the name, make it a link to mush.cnf.
CONF_FILE=mush.cnf

#######################################################################

if [ -z $GAMEDIR ]; then
  echo "You must set GAMEDIR in the restart script."
  exit 1
fi

if [ ! -d $GAMEDIR ]; then
  echo "GAMEDIR doesn't appear to be a directory. It's: $GAMEDIR"
  exit 1
fi

cd $GAMEDIR
echo Running from `pwd`

if [ ! -f $CONF_FILE ]; then
  echo "CONF_FILE doesn't exist. It's: $CONF_FILE"
  echo "Create $CONF_FILE from $GAMEDIR/mushcnf.dst"
  exit 1
fi

# If netmush isn't here, they probably didn't make install
# In any case, we'd better not proceed.
if [ ! -e netmush ]; then
  echo "I don't see $GAMEDIR/netmush. Did you remember to make install?"
  exit 1
fi 

#
# Read the cnf file and set some variables.
#
INDB=`egrep "^input_database" $CONF_FILE | sed "s/.*[ 	][ 	]*.*\/\(.*\)/\1/"`
OUTDB=`egrep "^output_database" $CONF_FILE | sed "s/.*[ 	][ 	]*.*\/\(.*\)/\1/"`
PANICDB=`egrep "^crash_database" $CONF_FILE | sed "s/.*[ 	][ 	]*.*\/\(.*\)/\1/"`
PANICDIR=`egrep "^crash_database" $CONF_FILE | sed "s/.*[ 	][ 	]*\(.*\)\/.*/\1/"`
COMPRESSOR="cat"
SUFFIX=""

# Find out what the compression program is, if any
egrep -s "^compress_program[ 	]*[A-Za-z0-9]" $CONF_FILE
nocompress=$?
if [ $nocompress -eq 0 ]; then
    COMPRESSOR=`egrep "^compress_program" $CONF_FILE | sed "s/[^ 	]*[ 	]*\(.*\)/\1/"`
    SUFFIX=`egrep "^compress_suffix" $CONF_FILE | sed "s/[^ 	]*[ 	]*\(.*\)/\1/"`
fi
  

#-- start up everything

# Prevent double-starting things. You may need to provide a pathname for
#  some of the commands. System V flavors need "ps -f" instead of "ps uwx".
mush=`ps uwwx | grep " $GAMEDIR/$CONF_FILE" | grep -v grep | wc -l`


if [ $mush -gt 0 ]; then
  echo Mush already active or some other process is using $GAMEDIR/$CONF_FILE.
  exit 0
fi

echo Building text file indexes.
(cd txt; make)

echo Restarting Mush.

if [ -r $PANICDIR/$PANICDB ]; then
   end="`tail -1 $PANICDIR/$PANICDB`"
   if [ "$end" = "***END OF DUMP***" ]; then
      echo "Recovering PANIC dump."
      cat $PANICDIR/$PANICDB | $COMPRESSOR > data/$OUTDB$SUFFIX
      rm $PANICDIR/$PANICDB
      echo "PANIC dump successfully recovered."
   else
      mv $PANICDIR/$PANICDB save/$PANICDB.corrupt
      echo "Warning: PANIC dump corrupt. Using older db."
   fi
fi

rm -f log/*.log

if [ -r data/$OUTDB$SUFFIX ]; then
   rm -f save/$INDB$SUFFIX.old
   mv -f data/$INDB$SUFFIX save/$INDB$SUFFIX.old
   mv data/$OUTDB$SUFFIX data/$INDB$SUFFIX
else
   echo "No $OUTDB$SUFFIX found."
   if [ -r data/$INDB$SUFFIX ]; then
      echo "Using $INDB$SUFFIX."
   else
      echo "No $INDB$SUFFIX found."
      if [ -r save/$INDB$SUFFIX.old ]; then
	 echo "Using save/$INDB$SUFFIX.old."
	 cp save/$INDB$SUFFIX.old data/$INDB$SUFFIX
      else
	echo "No database found. Mush will start with a minimal world."
     fi
   fi
fi

if [ -r reboot.db ]; then
  rm -f reboot.db
fi

DATEMSK="${GAMEDIR}/getdate.template"
export DATEMSK

LC_ALL=$LANG LANG=$LANG ./netmush $GAMEDIR/$CONF_FILE &