r4981: Auto commit for Debian build
[kmrcl.git] / strings.lisp
index b3a3d018a7cb557099df5137a89564329424472f..da39d48edd98a1b56cbd1153944cd0d7630a2d83 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.32 2003/05/16 12:51:11 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)))
-       (declare (character ch))
-       (if (alphanumericp ch)
-           (unless in-word
-             (incf n-words)
-             (setq in-word t))
-         (setq in-word nil))))
-    n-words))
+    (do* ((len (length str))
+         (i 0 (1+ i)))
+       ((= i len) n-words)
+      (declare (fixnum i))
+      (if (alphanumericp (schar str i))
+         (unless in-word
+           (incf n-words)
+           (setq in-word t))
+       (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 +280,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 +287,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))