You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
27 lines
748 B
Racket
27 lines
748 B
Racket
#lang racket/base
|
|
(require racket/port)
|
|
(provide (all-defined-out) (all-from-out racket/port))
|
|
|
|
(define (port-position ip [where #f])
|
|
(cond
|
|
[where (file-position ip where)
|
|
ip]
|
|
[else (file-position ip)]))
|
|
|
|
(define (set-port-position! ip where)
|
|
(file-position ip where))
|
|
|
|
(module+ test
|
|
(require rackunit)
|
|
(define ip (open-input-bytes (bytes 1 2 3 4)))
|
|
(port-count-lines! ip)
|
|
(check-equal? (port-position ip) 0)
|
|
(check-equal? (read-byte ip) 1)
|
|
(check-equal? (port-position ip) 1)
|
|
(check-equal? (read-byte ip) 2)
|
|
(set-port-position! ip 4)
|
|
(check-equal? (port-position ip) 4)
|
|
(check-equal? (read-byte ip) eof)
|
|
(set-port-position! ip 0)
|
|
(check-equal? (port-position ip) 0)
|
|
(check-equal? (read-byte ip) 1)) |