If str ends with any of the strings in string-list, trim that string off and return the base string. E.g., (trim-string "filename.sgm" (".sgm" ".xml" ".sgml")) returns "filename".
(define (trim-string str string-list)
;; Trims the tail off of a string
(let ((strlen (string-length str)))
(let loop ((sl string-list))
(if (null? sl)
str
(if (equal?
(substring str (- strlen (string-length (car sl))) strlen)
(car sl))
(substring str 0 (- strlen (string-length (car sl))))
(loop (cdr sl)))))))