  	sigemptyset(&sa.sa_mask);
  	sa.sa_flags = SA_RESTART;
  	sigaction(SIGUSR1, &sa, NULL);
-+	*/
++#endif
  }
  
  #endif
-diff -ru source/git-compat-util.h source-new/git-compat-util.h
+diff -ruw source/git-compat-util.h source-new/git-compat-util.h
 --- source/git-compat-util.h	2017-06-04 19:08:11.000000000 -0600
-+++ source-new/git-compat-util.h	2018-12-02 16:07:24.788757117 -0700
-@@ -179,7 +179,6 @@
++++ source-new/git-compat-util.h	2018-12-26 19:11:00.598201504 -0700
+@@ -179,7 +179,9 @@
  #include <assert.h>
  #include <regex.h>
  #include <utime.h>
--#include <syslog.h>
++#if !defined(__redox__)
+ #include <syslog.h>
++#endif
  #ifndef NO_SYS_POLL_H
  #include <sys/poll.h>
  #else
-@@ -195,21 +194,16 @@
- #elif defined(_MSC_VER)
- #include "compat/msvc.h"
- #else
--#include <sys/utsname.h>
+@@ -199,13 +201,17 @@
  #include <sys/wait.h>
  #include <sys/resource.h>
  #include <sys/socket.h>
--#include <sys/ioctl.h>
--#include <termios.h>
++#if !defined(__redox__)
+ #include <sys/ioctl.h>
++#endif
+ #include <termios.h>
  #ifndef NO_SYS_SELECT_H
  #include <sys/select.h>
  #endif
  #include <netinet/in.h>
--#include <netinet/tcp.h>
++#if !defined(__redox__)
+ #include <netinet/tcp.h>
++#endif
  #include <arpa/inet.h>
  #include <netdb.h>
  #include <pwd.h>
--#include <sys/un.h>
- #ifndef NO_INTTYPES_H
- #include <inttypes.h>
- #else
-@@ -319,9 +313,7 @@
- #define PRIo32 "o"
+@@ -320,8 +326,20 @@
  #endif
  
--#ifndef PATH_SEP
--#define PATH_SEP ':'
--#endif
+ #ifndef PATH_SEP
++#if defined(__redox__)
 +#define PATH_SEP ';'
++#else
+ #define PATH_SEP ':'
+ #endif
++#endif
++
++#ifndef DEV_NULL
++#if defined(__redox__)
++#define DEV_NULL "null:"
++#else
++#define DEV_NULL "/dev/null"
++#endif
++#endif
  
  #ifdef HAVE_PATHS_H
  #include <paths.h>
-@@ -1123,4 +1115,7 @@
- 
- extern int cmd_main(int, const char **);
- 
-+#define utime(...) 0
-+#define shutdown(...) 0
-+
- #endif
-diff -ru source/Makefile source-new/Makefile
+diff -ruw source/Makefile source-new/Makefile
 --- source/Makefile	2017-06-04 19:08:11.000000000 -0600
-+++ source-new/Makefile	2018-12-02 16:07:24.788757117 -0700
++++ source-new/Makefile	2018-12-26 18:35:54.096906095 -0700
 @@ -1802,7 +1802,6 @@
  
  $(BUILT_INS): git$X

 	}
 
 	return &c;
@@ -1349,7 +1349,7 @@
 	}
 
 	if (log_syslog) {
-		openlog("git-daemon", LOG_PID, LOG_DAEMON);
+		//openlog("git-daemon", LOG_PID, LOG_DAEMON);
 		set_die_routine(daemon_die);
 	} else
 		/* avoid splitting a message in the middle */
diff -ru source/dir.c source-new/dir.c
--- source/dir.c	2017-06-04 19:08:11.000000000 -0600
+++ source-new/dir.c	2018-12-02 16:07:24.788757117 -0700
@@ -1891,14 +1891,14 @@
 static const char *get_ident_string(void)
 {
 	static struct strbuf sb = STRBUF_INIT;
-	struct utsname uts;
+	//struct utsname uts;
 
 	if (sb.len)
 		return sb.buf;
-	if (uname(&uts) < 0)
-		die_errno(_("failed to get kernel name and information"));
+	//if (uname(&uts) < 0)
+	//	die_errno(_("failed to get kernel name and information"));
 	strbuf_addf(&sb, "Location %s, system %s", get_git_work_tree(),
-		    uts.sysname);
+		    "Redox");
 	return sb.buf;
 }
 
diff -ru source/fast-import.c source-new/fast-import.c
--- source/fast-import.c	2017-06-04 19:08:11.000000000 -0600
+++ source-new/fast-import.c	2018-12-02 16:07:24.788757117 -0700
@@ -531,6 +531,7 @@
 
 static void set_checkpoint_signal(void)
 {
+	/*
 	struct sigaction sa;
 
 	memset(&sa, 0, sizeof(sa));

 
 	while (1) {
-		const char *end = strchrnul(p, ':');
+		const char *end = strchrnul(p, PATH_SEP);
 
 		strbuf_reset(&buf);
 
@@ -622,6 +622,7 @@
 	struct async *async = data;
 	intptr_t ret;
 
+#if !defined(__redox__)
 	if (async->isolate_sigpipe) {
 		sigset_t mask;
 		sigemptyset(&mask);
@@ -631,6 +632,7 @@
 			return (void *)ret;
 		}
 	}
+#endif
 
 	pthread_setspecific(async_key, async);
 	ret = async->proc(async->proc_in, async->proc_out, async->data);
diff -ruw source/setup.c source-new/setup.c
--- source/setup.c	2017-06-04 19:08:11.000000000 -0600
+++ source-new/setup.c	2018-12-26 18:52:50.070479933 -0700
@@ -1146,11 +1146,11 @@
 /* if any standard file descriptor is missing open it to /dev/null */
 void sanitize_stdfds(void)
 {
-	int fd = open("/dev/null", O_RDWR, 0);
+	int fd = open(DEV_NULL, O_RDWR, 0);
 	while (fd != -1 && fd < 2)
 		fd = dup(fd);
 	if (fd == -1)
-		die_errno("open /dev/null or dup failed");
+		die_errno("open %s or dup failed", DEV_NULL);
 	if (fd > 2)
 		close(fd);
 }
@@ -1169,8 +1169,10 @@
 		default:
 			exit(0);
 	}
+#if !defined(__redox__)
 	if (setsid() == -1)
 		die_errno("setsid failed");
+#endif
 	close(0);
 	close(1);
 	close(2);
diff -ruw source/strbuf.c source-new/strbuf.c
--- source/strbuf.c	2017-06-04 19:08:11.000000000 -0600
+++ source-new/strbuf.c	2018-12-26 18:53:39.586122270 -0700
@@ -446,6 +446,13 @@
 	for (;; guessed_len *= 2) {
 		strbuf_grow(sb, guessed_len);
 		if (getcwd(sb->buf, sb->alloc)) {
+#if defined(__redox__)
+			if (strncmp(sb->buf, "file:", 5) == 0) {
+			    char *x = strdup(sb->buf);
+			    strcpy(sb->buf, x+5);
+			    free(x);
+			}
+#endif
 			strbuf_setlen(sb, strlen(sb->buf));
 			return 0;
 		}
