r4980: Auto commit for Debian build
[kmrcl.git] / strings.lisp
index b3a3d018a7cb557099df5137a89564329424472f..046b357db1739e5ba6c64bd152952a2f8d4dcec6 100644 (file)
@@ -7,7 +7,7 @@
 ;;;; Programmer:    Kevin M. Rosenberg
 ;;;; Date Started:  Apr 2000
 ;;;;
 ;;;; Programmer:    Kevin M. Rosenberg
 ;;;; Date Started:  Apr 2000
 ;;;;
-;;;; $Id: strings.lisp,v 1.29 2003/05/16 08:32:10 kevin Exp $
+;;;; $Id: strings.lisp,v 1.31 2003/05/16 12:50:05 kevin Exp $
 ;;;;
 ;;;; This file, part of KMRCL, is Copyright (c) 2002 by Kevin M. Rosenberg
 ;;;;
 ;;;;
 ;;;; This file, part of KMRCL, is Copyright (c) 2002 by Kevin M. Rosenberg
 ;;;;
 
 (defun count-string-words (str)
   (declare (simple-string str)
 
 (defun count-string-words (str)
   (declare (simple-string str)
-          (optimize (speed 3) (safety 0)))
+          (optimize (speed 3) (safety 0) (space 0)))
   (let ((n-words 0)
        (in-word nil))
     (declare (fixnum n-words))
   (let ((n-words 0)
        (in-word nil))
     (declare (fixnum n-words))
-    (dotimes (i (length str))
-      (let ((ch (char str i)))
+    (do* ((len (length str))
+         (i 0 (1+ i)))
+       ((= i len) n-words)
+      (declare (fixnum i))
+      (let ((ch (schar str i)))
        (declare (character ch))
        (if (alphanumericp ch)
            (unless in-word
              (incf n-words)
              (setq in-word t))
        (declare (character ch))
        (if (alphanumericp ch)
            (unless in-word
              (incf n-words)
              (setq in-word t))
-         (setq in-word nil))))
-    n-words))
+         (setq in-word nil))))))
 
 ;; From Larry Hunter with modifications
 (defun position-char (char string start max)
 
 ;; From Larry Hunter with modifications
 (defun position-char (char string start max)
@@ -280,8 +282,6 @@ Leading zeros are present."
 Leading zeros are present."
   (declare (optimize (speed 3) (safety 0) (space 0))
           (type fixnum len) (type integer num))
 Leading zeros are present."
   (declare (optimize (speed 3) (safety 0) (space 0))
           (type fixnum len) (type integer num))
-  (when pchar
-    (incf len))
   (do* ((zero-code (char-code #\0))
        (result (make-string len :initial-element #\0))
        (minus? (minusp num))
   (do* ((zero-code (char-code #\0))
        (result (make-string len :initial-element #\0))
        (minus? (minusp num))
@@ -289,8 +289,6 @@ Leading zeros are present."
        (pos (1- len) (1- pos))
        (mod (mod val 10) (mod val 10)))
       ((or (zerop val) (minusp pos))
        (pos (1- len) (1- pos))
        (mod (mod val 10) (mod val 10)))
       ((or (zerop val) (minusp pos))
-       (when pchar
-        (setf (schar result 0) pchar))
        (when minus? (setf (schar result (if pchar 1 0)) #\-))
        result)
     (declare (fixnum mod zero-code pos) (simple-string result) (integer val))
        (when minus? (setf (schar result (if pchar 1 0)) #\-))
        result)
     (declare (fixnum mod zero-code pos) (simple-string result) (integer val))