Index: makefile.in
--- makefile.in.orig	2008-09-14 01:27:17 +0200
+++ makefile.in	2010-01-11 13:37:32 +0100
@@ -31,7 +31,7 @@
 	$(CC) $(CFLAGS) -O0 -c mem.c
 
 svn.c:	$(SRCS)
-	echo 'char* SVN = "('`svnversion|tr -d '\r'`')";' > svn.c
+	echo 'char* SVN = "('`echo r0|tr -d '\r'`')";' > svn.c
 
 tags:	$(SRCS)
 	ctags --format=1 -N $(SRCS) $(HDRS)
@@ -70,14 +70,14 @@
 #	cd emacs; $(MAKE) ship
 	cd docs; $(MAKE) ship
 
-install: all
+install:
 	for d in $(BINDIR) $(LIBLOC) $(LIBLOC)/logolib $(LIBLOC)/helpfiles $(LIBLOC)/csls; do [ -d $$d ] || mkdir -p $$d || exit 1; done
 	cp logo $(BINDIR)/.
 	cp -f logolib/* $(LIBLOC)/logolib/.
 	cp -f helpfiles/* $(LIBLOC)/helpfiles/.
 	cp -f csls/* $(LIBLOC)/csls/.
 #	(cd emacs; prefix=$(prefix) LIBLOC=$(LIBLOC) BINDIR=$(BINDIR) $(MAKE) install)
-	(cd docs; prefix=$(prefix) LIBLOC=$(LIBLOC) BINDIR=$(BINDIR) $(MAKE) install)
+#	(cd docs; prefix=$(prefix) LIBLOC=$(LIBLOC) BINDIR=$(BINDIR) $(MAKE) install)
 #	prefix=$(prefix); LIBLOC=$(LIBLOC); BINDIR=$(BINDIR); export prefix LIBLOC BINDIR; cd emacs; $(MAKE) install
 
 logo-mode: 
Index: term.c
--- term.c.orig	2008-09-14 06:57:09 +0200
+++ term.c	2010-01-11 13:36:39 +0100
@@ -30,6 +30,9 @@
 #include <console.h>
 #endif
 
+#ifdef __FreeBSD__
+#include <termios.h>
+#else
 #ifdef HAVE_TERMIO_H
 #ifdef HAVE_WX
 #include <termios.h>
@@ -41,6 +44,7 @@
 #include <sgtty.h>
 #endif
 #endif
+#endif
 
 #undef TRUE
 #undef FALSE
@@ -78,6 +82,9 @@
 char so_arr[40];
 char se_arr[40];
 
+#ifdef __FreeBSD__
+struct termios tty_cooked, tty_cbreak;
+#else
 #ifdef HAVE_TERMIO_H
 struct termio tty_cooked, tty_cbreak;
 #else
@@ -85,6 +92,7 @@
 struct sgttyb tty_cooked, tty_cbreak;
 #endif
 #endif
+#endif
 
 int interactive, tty_charmode;
 
@@ -92,7 +100,11 @@
 
 char *termcap_ptr;
 
+#ifdef __FreeBSD__
+int termcap_putter(int ch) {
+#else
 int termcap_putter(char ch) {
+#endif
     *termcap_ptr++ = ch;
     return 0;
 }
@@ -132,6 +144,13 @@
 #endif /* WIN32 */
 #else
     if (interactive) {
+#ifdef __FreeBSD__
+	tcgetattr(0, &tty_cooked);
+	tty_cbreak = tty_cooked;
+	tty_cbreak.c_cc[VMIN] = '\01';
+	tty_cbreak.c_cc[VTIME] = '\0';
+	tty_cbreak.c_lflag &= ~(ECHO|ICANON);
+#else
 #ifdef HAVE_TERMIO_H
 	ioctl(0,TCGETA,(char *)(&tty_cooked));
 	tty_cbreak = tty_cooked;
@@ -144,6 +163,7 @@
 	tty_cbreak.sg_flags |= CBREAK;
 	tty_cbreak.sg_flags &= ~ECHO;
 #endif
+#endif
     }
     tty_charmode = 0;
     tgetent(bp, getenv("TERM"));
@@ -188,11 +208,15 @@
 void charmode_on() {
 #ifdef unix
     if ((readstream == stdin) && interactive && !tty_charmode) {
+#ifdef __FreeBSD__
+	tcsetattr(0, TCSANOW, &tty_cbreak);
+#else
 #ifdef HAVE_TERMIO_H
 	ioctl(0,TCSETA,(char *)(&tty_cbreak));
 #else /* !HAVE_TERMIO_H */
 	ioctl(0,TIOCSETP,(char *)(&tty_cbreak));
 #endif /* HAVE_TERMIO_H */
+#endif
 	tty_charmode++;
     }
 #endif /* unix */
@@ -204,11 +228,15 @@
 void charmode_off() {
 #ifdef unix
     if (tty_charmode) {
+#ifdef __FreeBSD__
+	tcsetattr(0, TCSANOW, &tty_cooked);
+#else
 #ifdef HAVE_TERMIO_H
 	ioctl(0,TCSETA,(char *)(&tty_cooked));
 #else /* !HAVE_TERMIO_H */
 	ioctl(0,TIOCSETP,(char *)(&tty_cooked));
 #endif /* HAVE_TERMIO_H */
+#endif
 	tty_charmode = 0;
     }
 #endif /* unix */
