--- config.ml.orig	2003-04-09 23:32:54 UTC
+++ config.ml
@@ -381,7 +381,7 @@ class configure ~defaults ~files ~required =
       let len = in_channel_length file in
       let data = String.create len in
       really_input file data 0 len;
-      let tokens = tokenize data in
+      let tokens = tokenize (Bytes.to_string data) in
       if not default then
 	self#parse_tokens tokens
       else self#parse_tokens_default tokens
--- fcp.ml.orig	2003-04-09 23:32:54 UTC
+++ fcp.ml
@@ -82,7 +82,7 @@ class transact connect = object (self)
       begin try really_input in_chan data 0 len
       with Sys_error _ -> raise Io_error
       end;
-      data
+      Bytes.to_string data
     end
   method private recv_soft len =
     if not opened then raise Closed
@@ -91,7 +91,7 @@ class transact connect = object (self)
       let rlen =
 	try input in_chan data 0 len
 	with Sys_error _ -> raise Io_error
-      in String.sub data 0 rlen
+      in Bytes.sub_string data 0 rlen
   method private recv_line =
     if not opened then raise Closed
     else try input_line in_chan
--- fstream.ml.orig	2003-04-09 23:32:54 UTC
+++ fstream.ml
@@ -18,8 +18,8 @@ class virtual fstream_in =
     method virtual input_line : string
     method virtual input : int -> string
     method virtual really_input : int -> string
-    method virtual input_buf : string -> int -> int -> int
-    method virtual really_input_buf : string -> int -> int -> unit
+    method virtual input_buf : bytes -> int -> int -> int
+    method virtual really_input_buf : bytes -> int -> int -> unit
     method virtual seek : int -> unit
     method virtual pos : int
   end
@@ -34,7 +34,7 @@ class fstream_in_channel chan =
       let buf = String.create len in
       let len_read = input chan buf 0 len in
       if len_read > 0 then
-	String.sub buf 0 len_read
+	Bytes.sub_string buf 0 len_read
       else
 	if self#pos = self#length then
 	  raise End_of_file
@@ -42,7 +42,7 @@ class fstream_in_channel chan =
     method really_input len =
       let buf = String.create len in
       really_input chan buf 0 len;
-      buf
+      Bytes.to_string buf
     method input_buf buf off len =
       try input chan buf off len
       with Invalid_argument _ ->
@@ -165,7 +165,7 @@ class fstream_out_channel chan =
     inherit fstream_out
     method output_char ch = output_char chan ch
     method output_string data = output_string chan data
-    method output_buf buf off len = output chan buf off len
+    method output_buf buf off len = output chan (Bytes.of_string buf) off len
     method output_byte byte = output_byte chan byte
     method clear = seek_out chan 0
   end
--- fstream.mli.orig	2003-04-09 23:32:54 UTC
+++ fstream.mli
@@ -17,8 +17,8 @@ class virtual fstream_in : object
   method virtual input_line : string
   method virtual input : int -> string
   method virtual really_input : int -> string
-  method virtual input_buf : string -> int -> int -> int
-  method virtual really_input_buf : string -> int -> int -> unit
+  method virtual input_buf : bytes -> int -> int -> int
+  method virtual really_input_buf : bytes -> int -> int -> unit
   method virtual seek : int -> unit
   method virtual pos : int
 end
@@ -29,8 +29,8 @@ class fstream_in_channel : in_channel -> object
   method input_line : string
   method input : int -> string
   method really_input : int -> string
-  method input_buf : string -> int -> int -> int
-  method really_input_buf : string -> int -> int -> unit
+  method input_buf : bytes -> int -> int -> int
+  method really_input_buf : bytes -> int -> int -> unit
   method seek : int -> unit
   method pos : int
 end
@@ -42,8 +42,8 @@ class fstream_in_string : string -> object
   method input_line : string
   method input : int -> string
   method really_input : int -> string
-  method input_buf : string -> int -> int -> int
-  method really_input_buf : string -> int -> int -> unit
+  method input_buf : bytes -> int -> int -> int
+  method really_input_buf : bytes -> int -> int -> unit
   method seek : int -> unit
   method pos : int
 end
--- hlfreenet.ml.orig	2003-04-09 23:32:54 UTC
+++ hlfreenet.ml
@@ -653,8 +653,8 @@ let rec insert node_info uri htl map stream =
 	  let len = stream#input_buf buf 0 node_info.nin_block_len in
 	  if len > 0 then begin
 	    if len = node_info.nin_block_len then
-	      transact#block buf
-	    else transact#block (String.sub buf 0 len);
+	      transact#block (Bytes.to_string buf)
+	    else transact#block (Bytes.sub_string buf 0 len);
 	    step ()
 	  end else ()
 	with
@@ -820,8 +820,8 @@ let generate_chk node_info map (stream : fstream_in) =
       let len = stream#input_buf buf 0 node_info.nin_block_len in
       if len > 0 then begin
 	if len = node_info.nin_block_len then
-	  transact#block buf
-	else transact#block (String.sub buf 0 len);
+	  transact#block (Bytes.to_string buf)
+	else transact#block (Bytes.sub_string buf 0 len);
 	step ()
       end else ()
     with
--- liber.ml.orig	2003-04-09 23:32:54 UTC
+++ liber.ml
@@ -463,7 +463,7 @@ let basic_metadata conf (log : Log.log_type) =
 	let buf = String.create len in
 	really_input channel buf 0 len;
 	close_in channel;
-	fields_parse buf
+	fields_parse (Bytes.to_string buf)
       with Sys_error _ ->
 	raise (Die_msg ("cannot open or read metadata file " ^ file))
       end
