From eb32acbf41fa5dd33233d77c93e2f4c9c40305ce Mon Sep 17 00:00:00 2001
From: Tibor Nagy <xnagytibor@gmail.com>
Date: Mon, 4 Mar 2019 21:23:35 +0100
Subject: [PATCH] openttd: Fix assertion failures due to the mishandling of
 schemes in the file browser, open links with NetSurf

---
 recipes/openttd/01_redox.patch | 80 ++++++++++++++++++++++++++--------
 1 file changed, 61 insertions(+), 19 deletions(-)

diff --git a/recipes/openttd/01_redox.patch b/recipes/openttd/01_redox.patch
index 944d7ba95..11387c56e 100644
--- a/recipes/openttd/01_redox.patch
+++ b/recipes/openttd/01_redox.patch
@@ -1,7 +1,7 @@
-diff -ruwN source/config.lib source-new/config.lib
---- source/config.lib	2018-12-29 07:28:58.975290421 -0700
-+++ source-new/config.lib	2019-01-06 17:30:43.830146522 -0700
-@@ -1486,7 +1486,7 @@
+diff -rupNw source/config.lib source-new/config.lib
+--- source/config.lib	2019-03-04 21:01:49.523053923 +0100
++++ source-new/config.lib	2019-03-04 21:00:15.870317336 +0100
+@@ -1486,7 +1486,7 @@ make_cflags_and_ldflags() {
  	# Special CXXFlags for HOST
  	CXXFLAGS="$CXXFLAGS"
  	# Libs to compile. In fact this is just LDFLAGS
@@ -10,10 +10,10 @@ diff -ruwN source/config.lib source-new/config.lib
  	# LDFLAGS used for HOST
  	LDFLAGS="$LDFLAGS"
  	# FEATURES for HOST (lto)
-diff -ruwN source/src/music/extmidi.cpp source-new/src/music/extmidi.cpp
---- source/src/music/extmidi.cpp	2018-12-29 07:28:59.143295501 -0700
-+++ source-new/src/music/extmidi.cpp	2018-12-29 10:14:06.637357598 -0700
-@@ -115,7 +115,11 @@
+diff -rupNw source/src/music/extmidi.cpp source-new/src/music/extmidi.cpp
+--- source/src/music/extmidi.cpp	2019-03-04 21:01:49.899056924 +0100
++++ source-new/src/music/extmidi.cpp	2019-03-04 21:00:15.886317459 +0100
+@@ -115,7 +115,11 @@ void MusicDriver_ExtMidi::DoPlay()
  	switch (this->pid) {
  		case 0: {
  			close(0);
@@ -25,10 +25,52 @@ diff -ruwN source/src/music/extmidi.cpp source-new/src/music/extmidi.cpp
  			if (d != -1 && dup2(d, 1) != -1 && dup2(d, 2) != -1) {
  				execvp(this->params[0], this->params);
  			}
-diff -ruwN source/src/rev.cpp.in source-new/src/rev.cpp.in
---- source/src/rev.cpp.in	2018-12-29 07:28:59.167296226 -0700
-+++ source-new/src/rev.cpp.in	2018-12-29 10:11:42.314241804 -0700
-@@ -57,7 +57,7 @@
+diff -rupNw source/src/os/unix/unix.cpp source-new/src/os/unix/unix.cpp
+--- source/src/os/unix/unix.cpp	2019-03-04 21:01:49.915057051 +0100
++++ source-new/src/os/unix/unix.cpp	2019-03-04 20:20:35.800062835 +0100
+@@ -69,12 +69,12 @@ ULONG __stack = (1024*1024)*2; // maybe
+ 
+ bool FiosIsRoot(const char *path)
+ {
+-#if !defined(__MORPHOS__) && !defined(__AMIGAOS__)
++#if !defined(__redox__)
+ 	return path[1] == '\0';
+ #else
+-	/* On MorphOS or AmigaOS paths look like: "Volume:directory/subdirectory" */
++	/* On Redox paths look like: "scheme:/directory/subdirectory" */
+ 	const char *s = strchr(path, ':');
+-	return s != NULL && s[1] == '\0';
++	return (s != NULL) && (strlen(s) == 2) && (s[1] == '/') && (s[2] == '\0');
+ #endif
+ }
+ 
+@@ -106,10 +106,10 @@ bool FiosIsValidFile(const char *path, c
+ {
+ 	char filename[MAX_PATH];
+ 	int res;
+-#if defined(__MORPHOS__) || defined(__AMIGAOS__)
+-	/* On MorphOS or AmigaOS paths look like: "Volume:directory/subdirectory" */
++#if defined(__redox__)
++	/* On Redox paths look like: "scheme:/directory/subdirectory" */
+ 	if (FiosIsRoot(path)) {
+-		res = seprintf(filename, lastof(filename), "%s:%s", path, ent->d_name);
++		res = seprintf(filename, lastof(filename), "%s%s", path, ent->d_name);
+ 	} else // XXX - only next line!
+ #else
+ 	assert(path[strlen(path) - 1] == PATHSEPCHAR);
+@@ -370,7 +370,7 @@ void OSOpenBrowser(const char *url)
+ 	if (child_pid != 0) return;
+ 
+ 	const char *args[3];
+-	args[0] = "xdg-open";
++	args[0] = "netsurf-fb";
+ 	args[1] = url;
+ 	args[2] = NULL;
+ 	execvp(args[0], const_cast<char * const *>(args));
+diff -rupNw source/src/rev.cpp.in source-new/src/rev.cpp.in
+--- source/src/rev.cpp.in	2019-03-04 21:01:49.923057115 +0100
++++ source-new/src/rev.cpp.in	2019-03-04 21:00:15.922317739 +0100
+@@ -57,7 +57,7 @@ const char _openttd_build_date[] = __DAT
   * (compiling from sources without any version control software)
   * and 2 is for modified revision.
   */
@@ -37,9 +79,9 @@ diff -ruwN source/src/rev.cpp.in source-new/src/rev.cpp.in
  
  /**
   * The NewGRF revision of OTTD:
-diff -ruwN source/src/stdafx.h source-new/src/stdafx.h
---- source/src/stdafx.h	2018-12-29 07:28:59.203297314 -0700
-+++ source-new/src/stdafx.h	2018-12-29 10:11:42.314241804 -0700
+diff -rupNw source/src/stdafx.h source-new/src/stdafx.h
+--- source/src/stdafx.h	2019-03-04 21:01:49.955057370 +0100
++++ source-new/src/stdafx.h	2019-03-04 21:00:15.930317800 +0100
 @@ -12,6 +12,9 @@
  #ifndef STDAFX_H
  #define STDAFX_H
@@ -50,10 +92,10 @@ diff -ruwN source/src/stdafx.h source-new/src/stdafx.h
  #if defined(__APPLE__)
  	#include "os/macosx/osx_stdafx.h"
  #endif /* __APPLE__ */
-diff -ruwN source/src/string.cpp source-new/src/string.cpp
---- source/src/string.cpp	2018-12-29 07:28:59.207297436 -0700
-+++ source-new/src/string.cpp	2018-12-29 10:11:42.314241804 -0700
-@@ -528,7 +528,7 @@
+diff -rupNw source/src/string.cpp source-new/src/string.cpp
+--- source/src/string.cpp	2019-03-04 21:01:49.955057370 +0100
++++ source-new/src/string.cpp	2019-03-04 21:00:15.938317862 +0100
+@@ -528,7 +528,7 @@ size_t Utf8TrimString(char *s, size_t ma
  	return length;
  }
  
-- 
GitLab