diff --git a/Makefile.in b/Makefile.in index f00f3ccce3..c2cf0bf2d1 100644 --- a/Makefile.in +++ b/Makefile.in @@ -93,7 +93,7 @@ ifeq ($(shell if test -f config.cache; then echo 1; fi), 1) @echo " Going to reconfigure with last known settings..." @echo "----------------" # Make sure we don't lock config.cache - @$(shell cat config.cache | sed 's~\\ ~\\\\ ~g') || exit 1 + @$(shell cat config.cache | sed 's@\\ @\\\\ @g') || exit 1 @echo "----------------" @echo "Reconfig done. Please re-execute make." @echo "----------------" diff --git a/Makefile.msvc b/Makefile.msvc index 826ff8543b..0d88f6685c 100644 --- a/Makefile.msvc +++ b/Makefile.msvc @@ -20,7 +20,7 @@ SRC_DIR = "$(ROOT_DIR)/src" BUNDLE_DIR = "$(ROOT_DIR)/bundle" BUNDLES_DIR = "$(ROOT_DIR)/bundles" TTD = "openttd.exe" -TARGET := $(shell echo $(PLATFORM) | sed "s~win64~x64~;s~win32~Win32~") +TARGET := $(shell echo $(PLATFORM) | sed "s@win64@x64@;s@win32@Win32@") all: $(Q)cp objs/$(TARGET)/Release/$(TTD) $(BIN_DIR)/$(TTD) diff --git a/Makefile.src.in b/Makefile.src.in index 2aa45744a1..897f8ba784 100644 --- a/Makefile.src.in +++ b/Makefile.src.in @@ -57,7 +57,7 @@ ENDIAN_TARGETS := endian_target.h $(ENDIAN_CHECK) # For more information, please check: # http://maillist.openttd.org/pipermail/devs/2007-April/000284.html # http://maillist.openttd.org/pipermail/devs/2007-February/000248.html -GCC295_FIX=sed -r 's~^(\t*)(.*)( const )([A-Za-z0-9_ ]+(\[.*\]){2,})(( = \{)|(;))(.*)$$~\1\2 \4\6\8\9~g' +GCC295_FIX=sed -r 's@^(\t*)(.*)( const )([A-Za-z0-9_ ]+(\[.*\]){2,})(( = \{)|(;))(.*)$$@\1\2 \4\6\8\9@g' # This 'sed' removes the 3rd '4' in the # lines of the -E output of # gcc 2.95.3 and lower, as it should indicate that it is a C-linkage, but the # compiler can't handle that information (just don't ask). So we remove it @@ -65,7 +65,7 @@ GCC295_FIX=sed -r 's~^(\t*)(.*)( const )([A-Za-z0-9_ ]+(\[.*\]){2,})(( = \{)|(;) # Furthermore gcc 2.95 has some trouble with protected and private when # accessing the protected/private stuff of the enclosing class (or the # super class of the enclosing class). -GCC295_FIX_2=sed -e 's~\(^\# [0-9][0-9]* "[^"]*"[ 0-9]*\) 4$$~\1~g;s~private:~public:~g;s~protected:~public:~g' +GCC295_FIX_2=sed -e 's@\(^\# [0-9][0-9]* "[^"]*"[ 0-9]*\) 4$$@\1@g;s@private:@public:@g;s@protected:@public:@g' # Check if we want to show what we are doing ifdef VERBOSE @@ -98,7 +98,7 @@ MODIFIED := $(shell echo "$(VERSIONS)" | cut -f 3 -d' ') ifdef REVISION # Use specified revision (which should be of the form "r000"). REV := $(REVISION) -REV_NR := $(shell echo $(REVISION) | sed "s~[^0-9]~~g") +REV_NR := $(shell echo $(REVISION) | sed "s@[^0-9]@@g") else # Use autodetected revisions REV := $(shell echo "$(VERSIONS)" | cut -f 1 -d' ') @@ -143,15 +143,15 @@ endif $(OBJS_C:%.o=%.d): %.d: $(SRC_DIR)/%.c $(FILE_DEP) $(E) '$(STAGE) DEP $(<:$(SRC_DIR)/%.c=%.c)' - $(Q)$(CC_HOST) $(CC_CFLAGS) $(CFLAGS) -MM $< | sed 's~^$(@F:%.d=%.o):~$@ $(@:%.d=%.o):~' > $@ + $(Q)$(CC_HOST) $(CC_CFLAGS) $(CFLAGS) -MM $< | sed 's@^$(@F:%.d=%.o):@$@ $(@:%.d=%.o):@' > $@ $(OBJS_CPP:%.o=%.d): %.d: $(SRC_DIR)/%.cpp $(FILE_DEP) $(E) '$(STAGE) DEP $(<:$(SRC_DIR)/%.cpp=%.cpp)' - $(Q)$(CXX_HOST) $(CFLAGS) -MM $< | sed 's~^$(@F:%.d=%.o):~$@ $(@:%.d=%.o):~' > $@ + $(Q)$(CXX_HOST) $(CFLAGS) -MM $< | sed 's@^$(@F:%.d=%.o):@$@ $(@:%.d=%.o):@' > $@ $(OBJS_MM:%.o=%.d): %.d: $(SRC_DIR)/%.mm $(FILE_DEP) $(E) '$(STAGE) DEP $(<:$(SRC_DIR)/%.mm=%.mm)' - $(Q)$(CC_HOST) $(CFLAGS) -MM $< | sed 's~^$(@F:%.d=%.o):~$@ $(@:%.d=%.o):~' > $@ + $(Q)$(CC_HOST) $(CFLAGS) -MM $< | sed 's@^$(@F:%.d=%.o):@$@ $(@:%.d=%.o):@' > $@ $(OBJS_RC:%.o=%.d): %.d: $(SRC_DIR)/%.rc $(FILE_DEP) $(E) '$(STAGE) DEP $(<:$(SRC_DIR)/%.mm=%.mm)' @@ -182,7 +182,7 @@ endif # Convert x:/... paths to /x/... for mingw ifeq ($(OS), MINGW) - @cat Makefile.dep.tmp | sed 's~\([a-zA-Z]\):\/~\/\1\/~g' > Makefile.dep.tmp.mingw + @cat Makefile.dep.tmp | sed 's@\([a-zA-Z]\):\/@\/\1\/@g' > Makefile.dep.tmp.mingw @cp Makefile.dep.tmp.mingw Makefile.dep.tmp @rm -f Makefile.dep.tmp.mingw endif @@ -211,7 +211,7 @@ endif { \ print $$0 \ } \ - ' < Makefile.dep.tmp | sed 's~ *~ ~g;s~ $$~~' | $(SORT) > Makefile.dep + ' < Makefile.dep.tmp | sed 's@ *@ @g;s@ $$@@' | $(SORT) > Makefile.dep $(Q)rm -f Makefile.dep.tmp Makefile.dep.tmp.bak @@ -280,10 +280,10 @@ $(ENDIAN_CHECK): $(SRC_DIR)/endian_check.cpp # Revision files $(SRC_DIR)/rev.cpp: $(CONFIG_CACHE_VERSION) $(SRC_DIR)/rev.cpp.in - $(Q)cat $(SRC_DIR)/rev.cpp.in | sed "s~@@REVISION@@~$(REV_NR)~g;s~@@VERSION@@~$(REV)~g;s~@@MODIFIED@@~$(MODIFIED)~g;s~@@DATE@@~`date +%d.%m.%y`~g" > $(SRC_DIR)/rev.cpp + $(Q)cat $(SRC_DIR)/rev.cpp.in | sed "s@\!\!REVISION\!\!@$(REV_NR)@g;s@!!VERSION!!@$(REV)@g;s@!!MODIFIED!!@$(MODIFIED)@g;s@!!DATE!!@`date +%d.%m.%y`@g" > $(SRC_DIR)/rev.cpp $(SRC_DIR)/ottdres.rc: $(CONFIG_CACHE_VERSION) $(SRC_DIR)/ottdres.rc.in - $(Q)cat $(SRC_DIR)/ottdres.rc.in | sed "s~@@REVISION@@~$(REV_NR)~g;s~@@VERSION@@~$(REV)~g;s~@@DATE@@~`date +%d.%m.%y`~g" > $(SRC_DIR)/ottdres.rc + $(Q)cat $(SRC_DIR)/ottdres.rc.in | sed "s@\!\!REVISION\!\!@$(REV_NR)@g;s@!!VERSION!!@$(REV)@g;s@!!DATE!!@`date +%d.%m.%y`@g" > $(SRC_DIR)/ottdres.rc FORCE: diff --git a/bin/ai/regression/regression.txt b/bin/ai/regression/regression.txt index 2f5613f3b4..d19c93605a 100644 --- a/bin/ai/regression/regression.txt +++ b/bin/ai/regression/regression.txt @@ -1072,7 +1072,7 @@ GetAutoRenewStatus(); true SetAutoRenewStatus(true); false SetAutoRenewStatus(false); true - GetAutoRenewMonths(); -6 + GetAutoRenewMonths(); 6 SetAutoRenewMonths(-12); true GetAutoRenewMonths(); -12 SetAutoRenewMonths(-12); false diff --git a/config.lib b/config.lib index 53f3752b34..301039d3db 100644 --- a/config.lib +++ b/config.lib @@ -415,7 +415,7 @@ save_params() { configure="$CONFIGURE_EXECUTABLE --ignore-extra-parameters" for p in $save_params_array; do eval "v=\"\$$p\"" - p=`echo "$p" | sed 's~_~-~g;s~\n~~g;s~ ~\\ ~g'` + p=`echo "$p" | sed 's@_@-@g;s@\n@@g;s@ @\\ @g'` # Only save those params that aren't empty configure="$configure --$p=\"$v\"" done @@ -904,7 +904,7 @@ check_params() { doc_dir="$data_dir/docs" fi else - doc_dir="`echo $doc_dir | sed 's~\([^\]\)\\\\ ~\1\\\\\\\\ ~g;s~\([^\]\) ~\1\\\\\\\\ ~g'`" + doc_dir="`echo $doc_dir | sed 's@\([^\]\)\\\\ @\1\\\\\\\\ @g;s@\([^\]\) @\1\\\\\\\\ @g'`" fi if [ "$icon_theme_dir" = "1" ]; then @@ -914,7 +914,7 @@ check_params() { icon_theme_dir="" fi else - icon_theme_dir="`echo $icon_theme_dir | sed 's~\([^\]\)\\\\ ~\1\\\\\\\\ ~g;s~\([^\]\) ~\1\\\\\\\\ ~g'`" + icon_theme_dir="`echo $icon_theme_dir | sed 's@\([^\]\)\\\\ @\1\\\\\\\\ @g;s@\([^\]\) @\1\\\\\\\\ @g'`" fi if [ "$personal_dir" = "1" ]; then @@ -926,7 +926,7 @@ check_params() { personal_dir=".openttd" fi else - personal_dir="`echo $personal_dir | sed 's~\([^\]\)\\\\ ~\1\\\\\\\\ ~g;s~\([^\]\) ~\1\\\\\\\\ ~g'`" + personal_dir="`echo $personal_dir | sed 's@\([^\]\)\\\\ @\1\\\\\\\\ @g;s@\([^\]\) @\1\\\\\\\\ @g'`" fi if [ "$shared_dir" = "1" ]; then @@ -937,7 +937,7 @@ check_params() { shared_dir="" fi else - shared_dir="`echo $shared_dir | sed 's~\([^\]\)\\\\ ~\1\\\\\\\\ ~g;s~\([^\]\) ~\1\\\\\\\\ ~g'`" + shared_dir="`echo $shared_dir | sed 's@\([^\]\)\\\\ @\1\\\\\\\\ @g;s@\([^\]\) @\1\\\\\\\\ @g'`" fi if [ "$man_dir" = "1" ]; then @@ -948,7 +948,7 @@ check_params() { man_dir="" fi else - man_dir="`echo $man_dir | sed 's~\([^\]\)\\\\ ~\1\\\\\\\\ ~g;s~\([^\]\) ~\1\\\\\\\\ ~g'`" + man_dir="`echo $man_dir | sed 's@\([^\]\)\\\\ @\1\\\\\\\\ @g;s@\([^\]\) @\1\\\\\\\\ @g'`" fi if [ "$menu_dir" = "1" ]; then @@ -959,7 +959,7 @@ check_params() { menu_dir="" fi else - menu_dir="`echo $menu_dir | sed 's~\([^\]\)\\\\ ~\1\\\\\\\\ ~g;s~\([^\]\) ~\1\\\\\\\\ ~g'`" + menu_dir="`echo $menu_dir | sed 's@\([^\]\)\\\\ @\1\\\\\\\\ @g;s@\([^\]\) @\1\\\\\\\\ @g'`" fi # "set_universal_binary_flags" needs to be before "detect_iconv" @@ -1207,7 +1207,7 @@ make_cflags_and_ldflags() { if [ -n "$sdl_config" ]; then CFLAGS="$CFLAGS -DWITH_SDL" # SDL must not add _GNU_SOURCE as it breaks many platforms - CFLAGS="$CFLAGS `$sdl_config --cflags | sed 's~-D_GNU_SOURCE[^ ]*~~'`" + CFLAGS="$CFLAGS `$sdl_config --cflags | sed 's@-D_GNU_SOURCE[^ ]*@@'`" if [ "$os" != "MINGW" ] && [ "$os" != "CYGWIN" ] && [ "$os" != "WINCE" ]; then if [ "$enable_static" != "0" ]; then LIBS="$LIBS `$sdl_config --static-libs`" @@ -1269,7 +1269,7 @@ make_cflags_and_ldflags() { if [ "$os" = "OSX" ]; then # fontconfig_config goes via pkg-config on all systems, which doesn't know --prefix # Also, despite the reason we link to the .a file ourself (because we can't use -static), we do need to ask pkg-config about possible other deps - LIBS="$LIBS `$fontconfig_config --variable=prefix`/lib/libfontconfig.a `$fontconfig_config --libs --static | sed s~-lfontconfig~~`" + LIBS="$LIBS `$fontconfig_config --variable=prefix`/lib/libfontconfig.a `$fontconfig_config --libs --static | sed s@-lfontconfig@@`" else LIBS="$LIBS `$fontconfig_config --libs --static | tr '\n\r' ' '`" fi @@ -1401,8 +1401,10 @@ make_cflags_and_ldflags() { # Lovely hackish, not? # Btw, this almost always comes from outside the configure, so it is # not something we can control. + # Also make makedepend aware of compiler's built-in defines. if [ "$with_makedepend" != "0" ]; then - cflags_makedep="` echo "$CFLAGS" | sed 's~ /~ -~g;s~-I[ ]*[^ ]*~~g'`" + cflags_makedep="`echo | $cxx_host -E -x c++ -dM - | sed 's@.define @-D@g;s@ .*@ @g;s@(.*)@@g' | tr -d '\r\n'`" + cflags_makedep="$cflags_makedep `echo "$CFLAGS" | sed 's@ /@ -@g;s@-I[ ]*[^ ]*@@g'`" else makedepend="" fi @@ -2562,104 +2564,104 @@ make_sed() { # use multiple OBJS_DIR, because all in-between # binaries are stored in there, and nowhere else. SRC_REPLACE=" - s~!!CC_HOST!!~$cc_host~g; - s~!!CXX_HOST!!~$cxx_host~g; - s~!!CC_BUILD!!~$cc_build~g; - s~!!CXX_BUILD!!~$cxx_build~g; - s~!!WINDRES!!~$windres~g; - s~!!STRIP!!~$strip $strip_arg~g; - s~!!LIPO!!~$lipo~g; - s~!!CC_CFLAGS!!~$CC_CFLAGS~g; - s~!!CFLAGS!!~$T_CFLAGS~g; - s~!!CFLAGS_BUILD!!~$CFLAGS_BUILD~g; - s~!!STRGEN_FLAGS!!~$strgen_flags~g; - s~!!LIBS!!~$LIBS~g; - s~!!LDFLAGS!!~$T_LDFLAGS~g; - s~!!BIN_DIR!!~$BIN_DIR~g; - s~!!ROOT_DIR!!~$ROOT_DIR~g; - s~!!MEDIA_DIR!!~$MEDIA_DIR~g; - s~!!SOURCE_LIST!!~$SOURCE_LIST~g; - s~!!SRC_OBJS_DIR!!~$SRC_OBJS_DIR~g; - s~!!LANG_OBJS_DIR!!~$LANG_OBJS_DIR~g; - s~!!SRC_DIR!!~$SRC_DIR~g; - s~!!SCRIPT_SRC_DIR!!~$SCRIPT_SRC_DIR~g; - s~!!OSXAPP!!~$OSXAPP~g; - s~!!LANG_DIR!!~$LANG_DIR~g; - s~!!TTD!!~$TTD~g; - s~!!BINARY_DIR!!~$prefix_dir/$binary_dir~g; - s~!!DATA_DIR!!~$prefix_dir/$data_dir~g; - s~!!DOC_DIR!!~$prefix_dir/$doc_dir~g; - s~!!MAN_DIR!!~$prefix_dir/$man_dir~g; - s~!!ICON_DIR!!~$prefix_dir/$icon_dir~g; - s~!!ICON_THEME_DIR!!~$prefix_dir/$icon_theme_dir~g; - s~!!PERSONAL_DIR!!~$personal_dir~g; - s~!!SHARED_DIR!!~$shared_dir~g; - s~!!INSTALL_DIR!!~$install_dir~g; - s~!!BINARY_NAME!!~$binary_name~g; - s~!!STRGEN!!~$STRGEN~g; - s~!!ENDIAN_CHECK!!~$ENDIAN_CHECK~g; - s~!!ENDIAN_FORCE!!~$endian~g; - s~!!STAGE!!~$STAGE~g; - s~!!MAKEDEPEND!!~$makedepend~g; - s~!!CFLAGS_MAKEDEP!!~$cflags_makedep~g; - s~!!SORT!!~$sort~g; - s~!!CONFIG_CACHE_COMPILER!!~config.cache.compiler~g; - s~!!CONFIG_CACHE_LINKER!!~config.cache.linker~g; - s~!!CONFIG_CACHE_ENDIAN!!~config.cache.endian~g; - s~!!CONFIG_CACHE_SOURCE!!~config.cache.source~g; - s~!!CONFIG_CACHE_VERSION!!~config.cache.version~g; - s~!!CONFIG_CACHE_SOURCE_LIST!!~config.cache.source.list~g; - s~!!CONFIG_CACHE_PWD!!~config.cache.pwd~g; - s~!!LANG_SUPPRESS!!~$lang_suppress~g; - s~!!OBJS_C!!~$OBJS_C~g; - s~!!OBJS_CPP!!~$OBJS_CPP~g; - s~!!OBJS_MM!!~$OBJS_MM~g; - s~!!OBJS_RC!!~$OBJS_RC~g; - s~!!SRCS!!~$SRCS~g; - s~!!OS!!~$os~g; - s~!!CONFIGURE_FILES!!~$CONFIGURE_FILES~g; - s~!!REVISION!!~$revision~g; - s~!!AWK!!~$awk~g; - s~!!GCC295!!~$gcc295~g; - s~!!DISTCC!!~$distcc~g; + s@!!CC_HOST!!@$cc_host@g; + s@!!CXX_HOST!!@$cxx_host@g; + s@!!CC_BUILD!!@$cc_build@g; + s@!!CXX_BUILD!!@$cxx_build@g; + s@!!WINDRES!!@$windres@g; + s@!!STRIP!!@$strip $strip_arg@g; + s@!!LIPO!!@$lipo@g; + s@!!CC_CFLAGS!!@$CC_CFLAGS@g; + s@!!CFLAGS!!@$T_CFLAGS@g; + s@!!CFLAGS_BUILD!!@$CFLAGS_BUILD@g; + s@!!STRGEN_FLAGS!!@$strgen_flags@g; + s@!!LIBS!!@$LIBS@g; + s@!!LDFLAGS!!@$T_LDFLAGS@g; + s@!!BIN_DIR!!@$BIN_DIR@g; + s@!!ROOT_DIR!!@$ROOT_DIR@g; + s@!!MEDIA_DIR!!@$MEDIA_DIR@g; + s@!!SOURCE_LIST!!@$SOURCE_LIST@g; + s@!!SRC_OBJS_DIR!!@$SRC_OBJS_DIR@g; + s@!!LANG_OBJS_DIR!!@$LANG_OBJS_DIR@g; + s@!!SRC_DIR!!@$SRC_DIR@g; + s@!!SCRIPT_SRC_DIR!!@$SCRIPT_SRC_DIR@g; + s@!!OSXAPP!!@$OSXAPP@g; + s@!!LANG_DIR!!@$LANG_DIR@g; + s@!!TTD!!@$TTD@g; + s@!!BINARY_DIR!!@$prefix_dir/$binary_dir@g; + s@!!DATA_DIR!!@$prefix_dir/$data_dir@g; + s@!!DOC_DIR!!@$prefix_dir/$doc_dir@g; + s@!!MAN_DIR!!@$prefix_dir/$man_dir@g; + s@!!ICON_DIR!!@$prefix_dir/$icon_dir@g; + s@!!ICON_THEME_DIR!!@$prefix_dir/$icon_theme_dir@g; + s@!!PERSONAL_DIR!!@$personal_dir@g; + s@!!SHARED_DIR!!@$shared_dir@g; + s@!!INSTALL_DIR!!@$install_dir@g; + s@!!BINARY_NAME!!@$binary_name@g; + s@!!STRGEN!!@$STRGEN@g; + s@!!ENDIAN_CHECK!!@$ENDIAN_CHECK@g; + s@!!ENDIAN_FORCE!!@$endian@g; + s@!!STAGE!!@$STAGE@g; + s@!!MAKEDEPEND!!@$makedepend@g; + s@!!CFLAGS_MAKEDEP!!@$cflags_makedep@g; + s@!!SORT!!@$sort@g; + s@!!CONFIG_CACHE_COMPILER!!@config.cache.compiler@g; + s@!!CONFIG_CACHE_LINKER!!@config.cache.linker@g; + s@!!CONFIG_CACHE_ENDIAN!!@config.cache.endian@g; + s@!!CONFIG_CACHE_SOURCE!!@config.cache.source@g; + s@!!CONFIG_CACHE_VERSION!!@config.cache.version@g; + s@!!CONFIG_CACHE_SOURCE_LIST!!@config.cache.source.list@g; + s@!!CONFIG_CACHE_PWD!!@config.cache.pwd@g; + s@!!LANG_SUPPRESS!!@$lang_suppress@g; + s@!!OBJS_C!!@$OBJS_C@g; + s@!!OBJS_CPP!!@$OBJS_CPP@g; + s@!!OBJS_MM!!@$OBJS_MM@g; + s@!!OBJS_RC!!@$OBJS_RC@g; + s@!!SRCS!!@$SRCS@g; + s@!!OS!!@$os@g; + s@!!CONFIGURE_FILES!!@$CONFIGURE_FILES@g; + s@!!REVISION!!@$revision@g; + s@!!AWK!!@$awk@g; + s@!!GCC295!!@$gcc295@g; + s@!!DISTCC!!@$distcc@g; " if [ "$icon_theme_dir" != "" ]; then SRC_REPLACE="$SRC_REPLACE - s~!!ICON_THEME_DIR!!~$prefix_dir/$icon_theme_dir~g; + s@!!ICON_THEME_DIR!!@$prefix_dir/$icon_theme_dir@g; " else SRC_REPLACE="$SRC_REPLACE - s~!!ICON_THEME_DIR!!~~g; + s@!!ICON_THEME_DIR!!@@g; " fi if [ "$man_dir" != "" ]; then SRC_REPLACE="$SRC_REPLACE - s~!!MAN_DIR!!~$prefix_dir/$man_dir~g; + s@!!MAN_DIR!!@$prefix_dir/$man_dir@g; " else SRC_REPLACE="$SRC_REPLACE - s~!!MAN_DIR!!~~g; + s@!!MAN_DIR!!@@g; " fi if [ "$menu_dir" != "" ]; then SRC_REPLACE="$SRC_REPLACE - s~!!MENU_DIR!!~$prefix_dir/$menu_dir~g; + s@!!MENU_DIR!!@$prefix_dir/$menu_dir@g; " else SRC_REPLACE="$SRC_REPLACE - s~!!MENU_DIR!!~~g; + s@!!MENU_DIR!!@@g; " fi } generate_menu_item() { MENU_REPLACE=" - s~!!TTD!!~$TTD~g; - s~!!MENU_GROUP!!~$menu_group~g; - s~!!MENU_NAME!!~$menu_name~g + s@!!TTD!!@$TTD@g; + s@!!MENU_GROUP!!@$menu_group@g; + s@!!MENU_NAME!!@$menu_name@g " log 1 "Generating menu item..." mkdir -p media diff --git a/configure b/configure index 64cac16e40..b34d85e589 100755 --- a/configure +++ b/configure @@ -37,7 +37,7 @@ if [ "$1" = "--reconfig" ] || [ "$1" = "--reconfigure" ]; then exit 1 fi # Make sure we don't lock config.cache - cat config.cache | sed 's~\\ ~\\\\ ~g' > cache.tmp + cat config.cache | sed 's@\\ @\\\\ @g' > cache.tmp sh cache.tmp rm -f cache.tmp exit $? @@ -59,7 +59,7 @@ STRGEN="strgen$EXE" ENDIAN_CHECK="endian_check$EXE" if [ -z "$sort" ]; then - PIPE_SORT="sed s~a~a~" + PIPE_SORT="sed s@a@a@" else PIPE_SORT="$sort" fi @@ -125,7 +125,7 @@ SRCS="` echo \"$SRCS\" | $awk ' { ORS = " " } { print $0; }'`" # In makefiles, we always use -u for sort if [ -z "$sort" ]; then - sort="sed s~a~a~" + sort="sed s@a@a@" else sort="$sort -u" fi diff --git a/findversion.sh b/findversion.sh index d2f0f7f1ee..f9ddd1bcb8 100755 --- a/findversion.sh +++ b/findversion.sh @@ -86,8 +86,8 @@ elif [ -d "$ROOT_DIR/.git" ]; then fi HASH=`LC_ALL=C git rev-parse --verify HEAD 2>/dev/null` REV="g`echo $HASH | cut -c1-8`" - BRANCH=`git branch|grep '[*]' | sed 's~\* ~~;s~^master$~~'` - REV_NR=`LC_ALL=C git log --pretty=format:%s "$SRC_DIR" | grep "^(svn r[0-9]*)" | head -n 1 | sed "s~.*(svn r\([0-9]*\)).*~\1~"` + BRANCH=`git branch|grep '[*]' | sed 's@\* @@;s@^master$@@'` + REV_NR=`LC_ALL=C git log --pretty=format:%s "$SRC_DIR" | grep "^(svn r[0-9]*)" | head -n 1 | sed "s@.*(svn r\([0-9]*\)).*@\1@"` elif [ -d "$ROOT_DIR/.hg" ]; then # We are a hg checkout if [ -n "`hg status \"$SRC_DIR\" | grep -v '^?'`" ]; then @@ -95,8 +95,8 @@ elif [ -d "$ROOT_DIR/.hg" ]; then fi HASH=`LC_ALL=C hg parents 2>/dev/null | head -n 1 | cut -d: -f3` REV="h`echo $HASH | cut -c1-8`" - BRANCH=`hg branch | sed 's~^default$~~'` - REV_NR=`LC_ALL=C hg log -r $HASH:0 -k "svn" -l 1 --template "{desc}\n" "$SRC_DIR" | grep "^(svn r[0-9]*)" | head -n 1 | sed "s~.*(svn r\([0-9]*\)).*~\1~"` + BRANCH=`hg branch | sed 's@^default$@@'` + REV_NR=`LC_ALL=C hg log -r $HASH:0 -k "svn" -l 1 --template "{desc}\n" "$SRC_DIR" | grep "^(svn r[0-9]*)" | head -n 1 | sed "s@.*(svn r\([0-9]*\)).*@\1@"` else # We don't know MODIFIED="1" diff --git a/projects/determineversion.vbs b/projects/determineversion.vbs index bcc68456c2..1a9fd4a68a 100755 --- a/projects/determineversion.vbs +++ b/projects/determineversion.vbs @@ -16,10 +16,10 @@ End Sub Sub UpdateFile(modified, revision, version, cur_date, filename) FSO.CopyFile filename & ".in", filename - FindReplaceInFile filename, "@@MODIFIED@@", modified - FindReplaceInFile filename, "@@REVISION@@", revision - FindReplaceInFile filename, "@@VERSION@@", version - FindReplaceInFile filename, "@@DATE@@", cur_date + FindReplaceInFile filename, "!!MODIFIED!!", modified + FindReplaceInFile filename, "!!REVISION!!", revision + FindReplaceInFile filename, "!!VERSION!!", version + FindReplaceInFile filename, "!!DATE!!", cur_date End Sub Sub UpdateFiles(version) diff --git a/src/ai/api/ai_rail.cpp b/src/ai/api/ai_rail.cpp index 7719d55762..b067b09040 100644 --- a/src/ai/api/ai_rail.cpp +++ b/src/ai/api/ai_rail.cpp @@ -203,6 +203,7 @@ if (IsRailWaypointTile(tile)) return ::GetRailWaypointBits(tile); if (IsRailStationTile(tile)) return ::TrackToTrackBits(::GetRailStationTrack(tile)); if (IsLevelCrossingTile(tile)) return ::GetCrossingRailBits(tile); + if (IsRailDepotTile(tile)) return ::TRACK_BIT_NONE; return ::GetTrackBits(tile); } diff --git a/src/ai/api/ai_rail.hpp b/src/ai/api/ai_rail.hpp index 0044d56a9e..867d72a5da 100644 --- a/src/ai/api/ai_rail.hpp +++ b/src/ai/api/ai_rail.hpp @@ -293,6 +293,7 @@ public: /** * Get all RailTracks on the given tile. + * @note A depot has no railtracks. * @param tile The tile to check. * @pre IsRailTile(tile). * @return A bitmask of RailTrack with all RailTracks on the tile. diff --git a/src/company_cmd.cpp b/src/company_cmd.cpp index e8d3040c1b..f9daab2fe6 100644 --- a/src/company_cmd.cpp +++ b/src/company_cmd.cpp @@ -445,6 +445,12 @@ Company *DoStartupNewCompany(bool is_ai) c->inaugurated_year = _cur_year; RandomCompanyManagerFaceBits(c->face, (GenderEthnicity)Random(), false); // create a random company manager face + /* Settings for non-ai companies are copied from the client settings later. */ + if (is_ai) { + c->engine_renew_money = 100000; + c->engine_renew_months = 6; + } + GeneratePresidentName(c); InvalidateWindow(WC_GRAPH_LEGEND, 0); diff --git a/src/newgrf_house.cpp b/src/newgrf_house.cpp index 816ea513b9..3179edbfdf 100644 --- a/src/newgrf_house.cpp +++ b/src/newgrf_house.cpp @@ -255,7 +255,7 @@ static uint32 HouseGetVariable(const ResolverObject *object, byte variable, byte case 0x40: return (IsTileType(tile, MP_HOUSE) ? GetHouseBuildingStage(tile) : 0) | TileHash2Bit(TileX(tile), TileY(tile)) << 2; /* Building age. */ - case 0x41: return GetHouseAge(tile); + case 0x41: return IsTileType(tile, MP_HOUSE) ? GetHouseAge(tile) : 0; /* Town zone */ case 0x42: return GetTownRadiusGroup(town, tile); diff --git a/src/ottdres.rc.in b/src/ottdres.rc.in index 4652a51738..4a2dead450 100644 --- a/src/ottdres.rc.in +++ b/src/ottdres.rc.in @@ -64,8 +64,8 @@ END // VS_VERSION_INFO VERSIONINFO - FILEVERSION 0,7,0,@@REVISION@@ - PRODUCTVERSION 0,7,0,@@REVISION@@ + FILEVERSION 0,7,0,!!REVISION!! + PRODUCTVERSION 0,7,0,!!REVISION!! FILEFLAGSMASK 0x3fL #ifdef _DEBUG FILEFLAGS 0x1L @@ -83,14 +83,14 @@ BEGIN VALUE "Comments", "This program is licensed under the GNU General Public License.\0" VALUE "CompanyName", "OpenTTD Development Team\0" VALUE "FileDescription", "OpenTTD\0" - VALUE "FileVersion", "Development @@VERSION@@\0" + VALUE "FileVersion", "Development !!VERSION!!\0" VALUE "InternalName", "openttd\0" VALUE "LegalCopyright", "Copyright \xA9 OpenTTD Developers 2002-2009. All Rights Reserved.\0" VALUE "LegalTrademarks", "\0" VALUE "OriginalFilename", "openttd.exe\0" VALUE "PrivateBuild", "\0" VALUE "ProductName", "OpenTTD\0" - VALUE "ProductVersion", "Development @@VERSION@@\0" + VALUE "ProductVersion", "Development !!VERSION!!\0" VALUE "SpecialBuild", "-\0" END END diff --git a/src/rail_cmd.cpp b/src/rail_cmd.cpp index e8db60414d..81e651dfb9 100644 --- a/src/rail_cmd.cpp +++ b/src/rail_cmd.cpp @@ -321,6 +321,8 @@ CommandCost CmdBuildSingleRail(TileIndex tile, DoCommandFlag flags, uint32 p1, u case MP_RAILWAY: if (!CheckTileOwnership(tile)) return CMD_ERROR; + if (!IsPlainRailTile(tile)) return CMD_ERROR; + if (!IsCompatibleRail(GetRailType(tile), railtype)) return_cmd_error(STR_1001_IMPOSSIBLE_TRACK_COMBINATION); if (!CheckTrackCombination(tile, trackbit, flags) || @@ -554,6 +556,8 @@ CommandCost CmdRemoveSingleRail(TileIndex tile, DoCommandFlag flags, uint32 p1, */ bool FloodHalftile(TileIndex t) { + assert(IsPlainRailTile(t)); + bool flooded = false; if (GetRailGroundType(t) == RAIL_GROUND_WATER) return flooded; @@ -1043,7 +1047,7 @@ static CommandCost CmdSignalTrackHelper(TileIndex tile, DoCommandFlag flags, uin end_tile = p1; if (signal_density == 0 || signal_density > 20) return CMD_ERROR; - if (!IsTileType(tile, MP_RAILWAY)) return CMD_ERROR; + if (!IsTileType(tile, MP_RAILWAY) || !IsPlainRailTile(tile)) return CMD_ERROR; /* for vertical/horizontal tracks, double the given signals density * since the original amount will be too dense (shorter tracks) */ @@ -1169,6 +1173,7 @@ CommandCost CmdRemoveSingleSignal(TileIndex tile, DoCommandFlag flags, uint32 p1 if (!ValParamTrackOrientation(track) || !IsTileType(tile, MP_RAILWAY) || + !IsPlainRailTile(tile) || !HasTrack(tile, track) || !EnsureNoTrainOnTrack(tile, track) || !HasSignalOnTrack(tile, track)) { @@ -2175,7 +2180,7 @@ static void TileLoop_Track(TileIndex tile) (rail & TRACK_BIT_X) )) { TileIndex n = tile + TileDiffXY(0, -1); - TrackBits nrail = GetTrackBits(n); + TrackBits nrail = (IsTileType(n, MP_RAILWAY) && IsPlainRailTile(n) ? GetTrackBits(n) : TRACK_BIT_NONE); if (!IsTileType(n, MP_RAILWAY) || !IsTileOwner(n, owner) || @@ -2190,7 +2195,7 @@ static void TileLoop_Track(TileIndex tile) (rail & TRACK_BIT_X) )) { TileIndex n = tile + TileDiffXY(0, 1); - TrackBits nrail = GetTrackBits(n); + TrackBits nrail = (IsTileType(n, MP_RAILWAY) && IsPlainRailTile(n) ? GetTrackBits(n) : TRACK_BIT_NONE); if (!IsTileType(n, MP_RAILWAY) || !IsTileOwner(n, owner) || @@ -2206,7 +2211,7 @@ static void TileLoop_Track(TileIndex tile) (rail & TRACK_BIT_Y) )) { TileIndex n = tile + TileDiffXY(-1, 0); - TrackBits nrail = GetTrackBits(n); + TrackBits nrail = (IsTileType(n, MP_RAILWAY) && IsPlainRailTile(n) ? GetTrackBits(n) : TRACK_BIT_NONE); if (!IsTileType(n, MP_RAILWAY) || !IsTileOwner(n, owner) || @@ -2221,7 +2226,7 @@ static void TileLoop_Track(TileIndex tile) (rail & TRACK_BIT_Y) )) { TileIndex n = tile + TileDiffXY(1, 0); - TrackBits nrail = GetTrackBits(n); + TrackBits nrail = (IsTileType(n, MP_RAILWAY) && IsPlainRailTile(n) ? GetTrackBits(n) : TRACK_BIT_NONE); if (!IsTileType(n, MP_RAILWAY) || !IsTileOwner(n, owner) || diff --git a/src/rail_map.h b/src/rail_map.h index 7c8c31f85f..195aef9f57 100644 --- a/src/rail_map.h +++ b/src/rail_map.h @@ -141,6 +141,7 @@ static inline void SetRailType(TileIndex t, RailType r) */ static inline TrackBits GetTrackBits(TileIndex tile) { + assert(IsPlainRailTile(tile)); return (TrackBits)GB(_m[tile].m5, 0, 6); } @@ -151,6 +152,7 @@ static inline TrackBits GetTrackBits(TileIndex tile) */ static inline void SetTrackBits(TileIndex t, TrackBits b) { + assert(IsPlainRailTile(t)); SB(_m[t].m5, 0, 6, b); } diff --git a/src/rev.cpp.in b/src/rev.cpp.in index bae5c6085b..0edb98bb7b 100644 --- a/src/rev.cpp.in +++ b/src/rev.cpp.in @@ -20,7 +20,7 @@ * norev000 is for non-releases that are made on systems without * subversion or sources that are not a checkout of subversion. */ -const char _openttd_revision[] = "@@VERSION@@"; +const char _openttd_revision[] = "!!VERSION!!"; /** * Let us know if current build was modified. This detection @@ -30,7 +30,7 @@ const char _openttd_revision[] = "@@VERSION@@"; * (compiling from sources without any version control software) * and 2 is for modified revision. */ -const byte _openttd_revision_modified = @@MODIFIED@@; +const byte _openttd_revision_modified = !!MODIFIED!!; /** * The NewGRF revision of OTTD: @@ -45,11 +45,11 @@ const byte _openttd_revision_modified = @@MODIFIED@@; * final release will always have a lower version number than the released * version, thus making comparisions on specific revisions easy. */ -const uint32 _openttd_newgrf_version = 0 << 28 | 7 << 24 | 0 << 20 | 0 << 19 | (@@REVISION@@ & ((1 << 19) - 1)); +const uint32 _openttd_newgrf_version = 0 << 28 | 7 << 24 | 0 << 20 | 0 << 19 | (!!REVISION!! & ((1 << 19) - 1)); #ifdef __MORPHOS__ /** * Variable used by MorphOS to show the version. */ -extern const char morphos_versions_tag[] = "$VER: OpenTTD @@VERSION@@ (@@DATE@@) OpenTTD Team [MorphOS, PowerPC]"; +extern const char morphos_versions_tag[] = "$VER: OpenTTD !!VERSION!! (!!DATE!!) OpenTTD Team [MorphOS, PowerPC]"; #endif diff --git a/src/road.cpp b/src/road.cpp index 01f777d23a..597098a2e9 100644 --- a/src/road.cpp +++ b/src/road.cpp @@ -18,7 +18,7 @@ bool IsPossibleCrossing(const TileIndex tile, Axis ax) { return (IsTileType(tile, MP_RAILWAY) && - !HasSignals(tile) && + GetRailTileType(tile) == RAIL_TILE_NORMAL && GetTrackBits(tile) == (ax == AXIS_X ? TRACK_BIT_Y : TRACK_BIT_X) && GetFoundationSlope(tile, NULL) == SLOPE_FLAT); } diff --git a/src/road_cmd.cpp b/src/road_cmd.cpp index 7b34560f4a..fe363c23a0 100644 --- a/src/road_cmd.cpp +++ b/src/road_cmd.cpp @@ -321,6 +321,7 @@ static CommandCost RemoveRoad(TileIndex tile, DoCommandFlag flags, RoadBits piec if (rt == ROADTYPE_ROAD && HasTileRoadType(tile, ROADTYPE_TRAM) && (flags & DC_EXEC || crossing_check)) return CMD_ERROR; if (flags & DC_EXEC) { + Track railtrack = GetCrossingRailTrack(tile); RoadTypes rts = GetRoadTypes(tile) & ComplementRoadTypes(RoadTypeToRoadTypes(rt)); if (rts == ROADTYPES_NONE) { TrackBits tracks = GetCrossingRailBits(tile); @@ -332,7 +333,7 @@ static CommandCost RemoveRoad(TileIndex tile, DoCommandFlag flags, RoadBits piec /* If we ever get HWAY and it is possible without road then we will need to promote ownership and invalidate town index here, too */ } MarkTileDirtyByTile(tile); - YapfNotifyTrackLayoutChange(tile, FindFirstTrack(GetTrackBits(tile))); + YapfNotifyTrackLayoutChange(tile, railtrack); } return CommandCost(EXPENSES_CONSTRUCTION, _price.remove_road * 2); } @@ -549,9 +550,10 @@ CommandCost CmdBuildRoad(TileIndex tile, DoCommandFlag flags, uint32 p1, uint32 if (!EnsureNoVehicleOnGround(tile)) return CMD_ERROR; if (flags & DC_EXEC) { - YapfNotifyTrackLayoutChange(tile, FindFirstTrack(GetTrackBits(tile))); + Track railtrack = AxisToTrack(OtherAxis(roaddir)); + YapfNotifyTrackLayoutChange(tile, railtrack); /* Always add road to the roadtypes (can't draw without it) */ - bool reserved = HasBit(GetTrackReservation(tile), AxisToTrack(OtherAxis(roaddir))); + bool reserved = HasBit(GetTrackReservation(tile), railtrack); MakeRoadCrossing(tile, _current_company, _current_company, GetTileOwner(tile), roaddir, GetRailType(tile), RoadTypeToRoadTypes(rt) | ROADTYPES_ROAD, p2); SetCrossingReservation(tile, reserved); UpdateLevelCrossing(tile, false); diff --git a/src/saveload/order_sl.cpp b/src/saveload/order_sl.cpp index 0ec506f1d5..ac87c75e63 100644 --- a/src/saveload/order_sl.cpp +++ b/src/saveload/order_sl.cpp @@ -138,8 +138,8 @@ static void Load_ORDR() free(orders); } else if (CheckSavegameVersionOldStyle(5, 2)) { - len /= sizeof(uint16); - uint16 *orders = MallocT(len + 1); + len /= sizeof(uint32); + uint32 *orders = MallocT(len + 1); SlArray(orders, len, SLE_UINT32); diff --git a/src/toolbar_gui.cpp b/src/toolbar_gui.cpp index de616ba4e3..af3f9d5ac5 100644 --- a/src/toolbar_gui.cpp +++ b/src/toolbar_gui.cpp @@ -784,8 +784,8 @@ static void ToolbarScenDateBackward(Window *w) w->HandleButtonClick(TBSE_DATEBACKWARD); w->SetDirty(); - _settings_newgame.game_creation.starting_year = Clamp(_settings_newgame.game_creation.starting_year - 1, MIN_YEAR, MAX_YEAR); - SetDate(ConvertYMDToDate(_settings_newgame.game_creation.starting_year, 0, 1)); + _settings_game.game_creation.starting_year = Clamp(_settings_game.game_creation.starting_year - 1, MIN_YEAR, MAX_YEAR); + SetDate(ConvertYMDToDate(_settings_game.game_creation.starting_year, 0, 1)); } _left_button_clicked = false; } @@ -797,8 +797,8 @@ static void ToolbarScenDateForward(Window *w) w->HandleButtonClick(TBSE_DATEFORWARD); w->SetDirty(); - _settings_newgame.game_creation.starting_year = Clamp(_settings_newgame.game_creation.starting_year + 1, MIN_YEAR, MAX_YEAR); - SetDate(ConvertYMDToDate(_settings_newgame.game_creation.starting_year, 0, 1)); + _settings_game.game_creation.starting_year = Clamp(_settings_game.game_creation.starting_year + 1, MIN_YEAR, MAX_YEAR); + SetDate(ConvertYMDToDate(_settings_game.game_creation.starting_year, 0, 1)); } _left_button_clicked = false; } @@ -1233,8 +1233,8 @@ public: virtual void OnPaint() { - this->SetWidgetDisabledState(TBSE_DATEBACKWARD, _settings_newgame.game_creation.starting_year <= MIN_YEAR); - this->SetWidgetDisabledState(TBSE_DATEFORWARD, _settings_newgame.game_creation.starting_year >= MAX_YEAR); + this->SetWidgetDisabledState(TBSE_DATEBACKWARD, _settings_game.game_creation.starting_year <= MIN_YEAR); + this->SetWidgetDisabledState(TBSE_DATEFORWARD, _settings_game.game_creation.starting_year >= MAX_YEAR); /* Draw brown-red toolbar bg. */ GfxFillRect(0, 0, this->width - 1, this->height - 1, 0xB2); @@ -1242,7 +1242,7 @@ public: this->DrawWidgets(); - SetDParam(0, ConvertYMDToDate(_settings_newgame.game_creation.starting_year, 0, 1)); + SetDParam(0, ConvertYMDToDate(_settings_game.game_creation.starting_year, 0, 1)); DrawStringCenteredTruncated(this->widget[TBSE_DATEBACKWARD].right, this->widget[TBSE_DATEFORWARD].left, 6, STR_00AF, TC_FROMSTRING); /* We hide this panel when the toolbar space gets too small */ diff --git a/src/train_cmd.cpp b/src/train_cmd.cpp index e31b4a2214..6853aec1cc 100644 --- a/src/train_cmd.cpp +++ b/src/train_cmd.cpp @@ -2383,6 +2383,15 @@ static bool CheckTrainStayInDepot(Vehicle *v) seg_state = _settings_game.pf.reserve_paths ? SIGSEG_PBS : UpdateSignalsOnSegment(v->tile, INVALID_DIAGDIR, v->owner); } + /* We are leaving a depot, but have to go to the exact same one; re-enter */ + if (v->tile == v->dest_tile) { + /* We need to have a reservation for this to work. */ + if (GetDepotWaypointReservation(v->tile)) return true; + SetDepotWaypointReservation(v->tile, true); + VehicleEnterDepot(v); + return true; + } + /* Only leave when we can reserve a path to our destination. */ if (seg_state == SIGSEG_PBS && !TryPathReserve(v) && v->u.rail.force_proceed == 0) { /* No path and no force proceed. */ diff --git a/src/yapf/yapf_costrail.hpp b/src/yapf/yapf_costrail.hpp index 81ef6a82a0..b4792db872 100644 --- a/src/yapf/yapf_costrail.hpp +++ b/src/yapf/yapf_costrail.hpp @@ -54,6 +54,10 @@ protected: }; protected: + /** + * @note maximum cost doesn't work with caching enabled + * @todo fix maximum cost failing with caching (e.g. FS#2900) + */ int m_max_cost; CBlobT m_sig_look_ahead_costs; bool m_disable_cache; @@ -111,7 +115,7 @@ public: FORCEINLINE int SwitchCost(TileIndex tile1, TileIndex tile2, DiagDirection exitdir) { - if (IsTileType(tile1, MP_RAILWAY) && IsTileType(tile2, MP_RAILWAY)) { + if (IsTileType(tile1, MP_RAILWAY) && IsTileType(tile2, MP_RAILWAY) && IsPlainRailTile(tile1) && IsPlainRailTile(tile2)) { bool t1 = KillFirstBit(GetTrackBits(tile1) & DiagdirReachesTracks(ReverseDiagDir(exitdir))) != TRACK_BIT_NONE; bool t2 = KillFirstBit(GetTrackBits(tile2) & DiagdirReachesTracks(exitdir)) != TRACK_BIT_NONE; if (t1 && t2) return Yapf().PfGetSettings().rail_doubleslip_penalty; diff --git a/src/yapf/yapf_rail.cpp b/src/yapf/yapf_rail.cpp index 884b82ca27..d65c143785 100644 --- a/src/yapf/yapf_rail.cpp +++ b/src/yapf/yapf_rail.cpp @@ -198,6 +198,16 @@ public: static bool stFindNearestDepotTwoWay(const Vehicle *v, TileIndex t1, Trackdir td1, TileIndex t2, Trackdir td2, int max_distance, int reverse_penalty, TileIndex *depot_tile, bool *reversed) { Tpf pf1; + /* + * With caching enabled it simply cannot get a reliable result when you + * have limited the distance a train may travel. This means that the + * cached result does not match uncached result in all cases and that + * causes desyncs. So disable caching when finding for a depot that is + * nearby. This only happens with automatic servicing of vehicles, + * so it will only impact performance when you do not manually set + * depot orders and you do not disable automatic servicing. + */ + if (max_distance != 0) pf1.DisableCache(true); bool result1 = pf1.FindNearestDepotTwoWay(v, t1, td1, t2, td2, max_distance, reverse_penalty, depot_tile, reversed); #if DEBUG_YAPF_CACHE