#!/bin/sh
: ; exec klone $0 "$@"
; The above line finds the klone executable in the $PATH
;;Skeleton of a typical klone script
(setq args (getopts "USAGE: %0 [options] oldpath newpath files...
Examines files and fixes first line to point to the path of the executable
Paths can be = to mean /usr/local/bin/klone
e.g.:
%0 = /new/temp/test/bin/klone *
"
("-v" () verbose "verbose operation")
))
(defun main (&aux
)
(setq oldpath (get args 0))
(if (= "=" oldpath) (setq oldpath "/usr/local/bin/klone"))
(if (not (match "^#!" oldpath)) (setq oldpath (+ "#!" oldpath)))
(setq newpath (get args 1))
(if (= "=" newpath) (setq newpath "/usr/local/bin/klone"))
(if (not (match "^#!" newpath)) (setq newpath (+ "#!" newpath)))
(dolist (file (subseq args 2))
(do-file file)
))
(defun do-file (f &aux
(fd (open f))
(line (read-line fd))
buffer
)
(if (= oldpath line) (progn
(setq buffer (String fd))
(verbose? "patching file %0" f)
(close fd)
(setq fd (open f :direction :output :if-exists :supersede))
(write-line newpath fd)
(write-string buffer fd)
))
)
(main)
;;; EMACS MODES
;;; Local Variables: ***
;;; mode:lisp ***
;;; End: ***
syntax highlighted by Code2HTML, v. 0.9.1