Time args to SELECT and SET-FILE-TIMES can now be reals.
This commit is contained in:
		
							parent
							
								
									05df0d4773
								
							
						
					
					
						commit
						dce0dc36cd
					
				|  | @ -33,7 +33,16 @@ | |||
| 
 | ||||
| (define (select!/copyback/errno read-vec write-vec | ||||
| 				exception-vec . maybe-timeout) | ||||
|   (let ((timeout (optional-arg maybe-timeout #f)) | ||||
|   (let ((timeout (and (pair? maybe-timeout) | ||||
| 		      (if (pair? (cdr maybe-timeout)) | ||||
| 			  (apply error "Too many arguments" | ||||
| 				 select!/copyback/errno | ||||
| 				 read-vec write-vec exception-vec | ||||
| 				 maybe-timeout) | ||||
| 			  (real->exact-integer (check-arg real? | ||||
| 							  (car maybe-timeout) | ||||
| 							  select!/copyback/errno))))) | ||||
| 		      | ||||
| 	(vec-ok? (lambda (v) | ||||
| 		   (vector-every? (lambda (elt) | ||||
| 				    (or (and (integer? elt) (>= elt 0)) | ||||
|  | @ -86,7 +95,16 @@ | |||
| 	 (values nr nw ne)))) | ||||
| 
 | ||||
| (define (select!/errno read-vec write-vec exception-vec . maybe-timeout) | ||||
|   (let ((timeout (optional-arg maybe-timeout #f)) | ||||
|   (let ((timeout (and (pair? maybe-timeout) | ||||
| 		      (if (pair? (cdr maybe-timeout)) | ||||
| 			  (apply error "Too many arguments" | ||||
| 				 select!/copyback/errno | ||||
| 				 read-vec write-vec exception-vec | ||||
| 				 maybe-timeout) | ||||
| 			  (real->exact-integer (check-arg real? | ||||
| 							  (car maybe-timeout) | ||||
| 							  select!/copyback/errno))))) | ||||
| 		      | ||||
| 	(vec-ok? (lambda (v) | ||||
| 		   (vector-every? (lambda (elt) | ||||
| 				    (or (and (integer? elt) (>= elt 0)) | ||||
|  |  | |||
|  | @ -157,7 +157,7 @@ | |||
| 
 | ||||
| (define (date . args)	; Optional args [time zone] | ||||
|   (let ((time (if (pair? args) | ||||
| 		  (integerize-time (check-arg real? (car args) date)) | ||||
| 		  (real->exact-integer (check-arg real? (car args) date)) | ||||
| 		  (time))) | ||||
| 	(zone (check-arg time-zone? | ||||
| 			 (and (pair? args) (optional-arg (cdr args) #f)) | ||||
|  | @ -219,7 +219,7 @@ | |||
| ;;; | ||||
| ;(define (utc-offset . args) ; Optional args [time tz] | ||||
| ;  (let ((tim (if (pair? args) | ||||
| ;		 (integerize-time (check-arg real? (car args) utc-offset)) | ||||
| ;		 (real->exact-integer (check-arg real? (car args) utc-offset)) | ||||
| ;		 (time))) | ||||
| ;	(tz (and (pair? args) | ||||
| ;		 (check-arg time-zone? (optional-arg (cdr args) #f) utc-offset)))) | ||||
|  | @ -233,7 +233,7 @@ | |||
| ;    (if (integer? tz) | ||||
| ;	(deintegerize-time-zone tz) | ||||
| ;	(let* ((summer? (if (pair? args) (car args) (time))) | ||||
| ;	       (summer? (if (real? summer?) (integerize-time summer?) summer?))) | ||||
| ;	       (summer? (if (real? summer?) (real->exact-integer summer?) summer?))) | ||||
| ;	  (receive (err zone) (%time-zone/errno summer? tz) | ||||
| ;		   (if err (errno-error err time-zone summer? tz) | ||||
| ;	    zone)))))) | ||||
|  | @ -297,9 +297,3 @@ | |||
| 			  sign (two-digits h) (two-digits m))) | ||||
| 	      (format #f "~a~a~a:~a:~a"			; name+hh:mm:ss | ||||
| 		      sign (two-digits h) (two-digits m) (two-digits s))))))) | ||||
| 
 | ||||
| ;;; (floor x), as an exact int. | ||||
| (define (integerize-time x) | ||||
|   (let ((f (floor x))) | ||||
|     (if (inexact? f) (inexact->exact f) f))) | ||||
| 
 | ||||
|  |  | |||
|  | @ -209,3 +209,9 @@ | |||
| 		    name | ||||
| 		    maybe-preferred-msg))) | ||||
|       (apply proc args)))) | ||||
| 
 | ||||
| 
 | ||||
| (define (real->exact-integer x) | ||||
|   (let ((f (round x))) | ||||
|     (if (inexact? f) (inexact->exact f) f))) | ||||
| 
 | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue
	
	 shivers
						shivers