#! /usr/local/bin/ocamlrun ocaml
#load "unix.cma" ;;
open Printf ;;

let _ =
  if (Array.length Sys.argv) < 4 then begin
    printf "Usage:\n %s file.xcf 'old comment' 'new comment'\n" Sys.argv.(0);
    exit 1
  end;

  let filename = Sys.argv.(1)
  in
  let old_comment = Sys.argv.(2)
  and new_comment = Sys.argv.(3)
  in
  let old_com_len = succ (String.length old_comment)
  and new_com_len = succ (String.length new_comment)
  in
  let old_prefix = sprintf "%c" (char_of_int  old_com_len)
  and new_prefix = sprintf "%c" (char_of_int  new_com_len)
  in
  let old_comment = old_prefix ^ old_comment
  and new_comment = new_prefix ^ new_comment
  in
  let regexp = sprintf "s/%s/%s/g" old_comment  new_comment
  in
  let command_line = sprintf "sed -i %s -e '%s'" filename regexp in
  print_endline  command_line;

  let process_status = Unix.system  command_line
  in
  match process_status with
  | Unix.WEXITED  return_code -> printf " return code: %d\n" return_code
  | Unix.WSIGNALED sig_number -> printf " killed by the signal %d\n" sig_number
  | Unix.WSTOPPED  sig_number -> printf " stopped by signal: %d\n" sig_number
;;

(* vim: sw=2 sts=2 ts=2 et fdm=marker
 *)