;;;; Programmer: Kevin M. Rosenberg
;;;; Date Started: Apr 2000
;;;;
-;;;; $Id: strings.lisp,v 1.23 2003/05/08 19:19:08 kevin Exp $
+;;;; $Id: strings.lisp,v 1.24 2003/05/08 23:35:18 kevin Exp $
;;;;
;;;; This file, part of KMRCL, is Copyright (c) 2002 by Kevin M. Rosenberg
;;;;
(setq string (subseq string 0 (1- len))))))
(excl:delimited-string-to-list string separator))
+;; From Larry Hunter with modifications
+(defun position-char (char string start max)
+ (declare (optimize (speed 3) (safety 0))
+ (fixnum start max) (simple-string string))
+ (do* ((i start (1+ i)))
+ ((= i max) nil)
+ (declare (fixnum i))
+ (when (char= char (schar string i)) (return i))))
+
(defun #-allegro delimited-string-to-list
#+allegro my-delimited-string-to-list
(string &optional (separator #\space) skip-terminal)
(do* ((len (length string))
(output '())
(pos 0)
- (end (position separator string :start pos :end len)
- (position separator string :start pos :end len)))
+ (end (position-char separator string pos len)
+ (position-char separator string pos len)))
((null end)
(if (< pos len)
(push (subseq string pos) output)