summaryrefslogtreecommitdiff
path: root/runtime/serv.bat
diff options
context:
space:
mode:
Diffstat (limited to 'runtime/serv.bat')
-rw-r--r--runtime/serv.bat59
1 files changed, 59 insertions, 0 deletions
diff --git a/runtime/serv.bat b/runtime/serv.bat
new file mode 100644
index 000000000..cc7d37e20
--- /dev/null
+++ b/runtime/serv.bat
@@ -0,0 +1,59 @@
+@ECHO OFF
+IF "%1"=="" GOTO DIRECT
+IF "%2"=="" GOTO DIRECT
+IF NOT EXIST "%1" GOTO NOTFOUND
+GOTO START
+
+REM == How RESTART_9X and RESTART_NT works =========================
+REM On Windows 9x only the first 8 characters are significant for
+REM labels, and the first matching one is called (RESTART_(9X)).
+REM Windows NT calls the exact named label (RESTART_NT).
+REM Separation between 9X and NT is required, because CHOICE has
+REM different syntax on these platforms or does not exist as all.
+REM ================================================================
+
+REM Windows 95, 98, ME
+:RESTART_9X
+REM Old Ctrl+C in PING does not work, because that only stops ping,
+REM not the batch file.
+CHOICE /C:rc /N /T:R,15 Restarting in 15 seconds, press 'C' to cancel.
+IF NOT ERRORLEVEL 2 GOTO START
+GOTO END
+
+REM Windows 2000, XP, Vista, 7
+:RESTART_NT
+REM There is no CHOICE in 2000 and XP, but you get asked whether to
+REM abort the batch file, when pressing Ctrl+C in PING.
+ECHO Restarting in 15 seconds, press Ctrl+C to cancel.
+PING -n 15 127.0.0.1 > NUL
+
+:START
+%1
+ECHO.
+REM Return value > 1 is exception&~0xC0000000
+IF ERRORLEVEL 2 GOTO CRASHED
+REM Return value 1 is EXIT_FAILURE
+IF ERRORLEVEL 1 GOTO EXIT1
+REM Return value 0 is EXIT_SUCCESS
+ECHO %2 has shutdown successfully.
+GOTO RESTART_NT
+
+:EXIT1
+ECHO %2 has terminated abnormally.
+GOTO RESTART_NT
+
+:CRASHED
+ECHO %2 has crashed!
+GOTO RESTART_NT
+
+:DIRECT
+ECHO Do not run this file directly. It is used by login-server.bat, char-server.bat,
+ECHO and map-server.bat
+GOTO END
+
+:NOTFOUND
+ECHO %1 was not found. Make sure, that you have compiled the %2.
+GOTO END
+
+:END
+PAUSE