diff --git a/src/xdiff/xemit.c b/src/xdiff/xemit.c
index dfc1d51..dae7f80 100644
--- a/src/xdiff/xemit.c
+++ b/src/xdiff/xemit.c
@@ -95,6 +95,7 @@
 }
 
 
+#if 0
 static long def_ff(const char *rec, long len, char *buf, long sz, void *priv UNUSED)
 {
 	if (len > 0 &&
@@ -110,7 +111,9 @@
 	}
 	return -1;
 }
+#endif
 
+#if 0
 static long match_func_rec(xdfile_t *xdf, xdemitconf_t const *xecfg, long ri,
 			   char *buf, long sz)
 {
@@ -120,18 +123,22 @@
 		return def_ff(rec, len, buf, sz, xecfg->find_func_priv);
 	return xecfg->find_func(rec, len, buf, sz, xecfg->find_func_priv);
 }
+#endif
 
+#if 0
 static int is_func_rec(xdfile_t *xdf, xdemitconf_t const *xecfg, long ri)
 {
 	char dummy[1];
 	return match_func_rec(xdf, xecfg, ri, dummy, sizeof(dummy)) >= 0;
 }
+#endif
 
 struct func_line {
 	long len;
 	char buf[80];
 };
 
+#if 0
 static long get_func_line(xdfenv_t *xe, xdemitconf_t const *xecfg,
 			  struct func_line *func_line, long start, long limit)
 {
@@ -151,7 +158,9 @@
 	}
 	return -1;
 }
+#endif
 
+#if 0
 static int is_empty_rec(xdfile_t *xdf, long ri)
 {
 	const char *rec;
@@ -163,12 +172,15 @@
 	}
 	return !len;
 }
+#endif
 
 int xdl_emit_diff(xdfenv_t *xe, xdchange_t *xscr, xdemitcb_t *ecb,
 		  xdemitconf_t const *xecfg) {
 	long s1, s2, e1, e2, lctx;
 	xdchange_t *xch, *xche;
+#if 0
 	long funclineprev = -1;
+#endif
 	struct func_line func_line;
 
 	func_line.len = 0;
@@ -181,6 +193,7 @@
 		s1 = XDL_MAX(xch->i1 - xecfg->ctxlen, 0);
 		s2 = XDL_MAX(xch->i2 - xecfg->ctxlen, 0);
 
+#if 0
 		if (xecfg->flags & XDL_EMIT_FUNCCONTEXT) {
 			long fs1, i1 = xch->i1;
 
@@ -218,6 +231,7 @@
 		}
 
  post_context_calculation:
+#endif
 		lctx = xecfg->ctxlen;
 		lctx = XDL_MIN(lctx, xe->xdf1.nrec - (xche->i1 + xche->chg1));
 		lctx = XDL_MIN(lctx, xe->xdf2.nrec - (xche->i2 + xche->chg2));
@@ -225,6 +239,7 @@
 		e1 = xche->i1 + xche->chg1 + lctx;
 		e2 = xche->i2 + xche->chg2 + lctx;
 
+#if 0
 		if (xecfg->flags & XDL_EMIT_FUNCCONTEXT) {
 			long fe1 = get_func_line(xe, xecfg, NULL,
 						 xche->i1 + xche->chg1,
@@ -253,16 +268,19 @@
 				}
 			}
 		}
+#endif
 
 		/*
 		 * Emit current hunk header.
 		 */
 
+#if 0
 		if (xecfg->flags & XDL_EMIT_FUNCNAMES) {
 			get_func_line(xe, xecfg, &func_line,
 				      s1 - 1, funclineprev);
 			funclineprev = s1 - 1;
 		}
+#endif
 		if (xdl_emit_hunk_hdr(s1 + 1, e1 - s1, s2 + 1, e2 - s2,
 				      func_line.buf, func_line.len, ecb) < 0)
 			return -1;
