diff options
-rw-r--r-- | geoip/ip.lisp | 48 |
1 files changed, 24 insertions, 24 deletions
diff --git a/geoip/ip.lisp b/geoip/ip.lisp index 2b69233..7d0b3af 100644 --- a/geoip/ip.lisp +++ b/geoip/ip.lisp @@ -120,39 +120,39 @@ (prog1 (mem-uint db-ptr size) (incf-pointer db-ptr size)))) -(defun mread-int32 (db-ptr length) - (let ((uval (mread-unsigned db-ptr length))) +(defun mread-int32 (reader length) + (let ((uval (mread-unsigned reader length))) (if (and (= length 4) (logbitp 31 uval)) (- uval #.(expt 2 32)) uval))) -(defun mread-datafield-metadata (db-ptr) - (let* ((control-byte (read-db-char db-ptr)) +(defun mread-datafield-metadata (reader) + (let* ((control-byte (read-db-char reader)) (type (ldb (byte 3 5) control-byte)) (length (ldb (byte 5 0) control-byte))) (when (zerop type) - (setf type (+ 7 (read-db-char db-ptr)))) + (setf type (+ 7 (read-db-char reader)))) (list type (cond ((or (= type 1) (< length 29)) length) ((= length 29) - (+ 29 (read-db-char db-ptr))) + (+ 29 (read-db-char reader))) ((= length 30) - (+ 285 (mread-unsigned db-ptr 2))) + (+ 285 (mread-unsigned reader 2))) ((= length 31) - (+ 65821 (mread-unsigned db-ptr 3))))))) + (+ 65821 (mread-unsigned reader 3))))))) -(defun mread-map (db-ptr length) +(defun mread-map (reader length) (loop repeat length collect (cons - (intern (string-upcase (substitute #\- #\_ (mread-data db-ptr))) :keyword) - (mread-data db-ptr)))) + (intern (string-upcase (substitute #\- #\_ (mread-data reader))) :keyword) + (mread-data reader)))) -(defun mread-list (db-ptr length) - (loop repeat length collect (mread-data db-ptr))) +(defun mread-list (reader length) + (loop repeat length collect (mread-data reader))) (defun read-pointer (reader length) (let ((size-bits (ldb (byte 2 3) length)) @@ -171,19 +171,19 @@ (prog1 (mread-data reader) (setf db-ptr curr-ptr))))) -(defun mread-data (db-ptr) - (destructuring-bind (type length) (mread-datafield-metadata db-ptr) +(defun mread-data (reader) + (destructuring-bind (type length) (mread-datafield-metadata reader) (ecase type - (1 (mread-pointer db-ptr length)) - (2 (mread-uft8 db-ptr length)) - (3 (ieee-floats:decode-float64 (mread-unsigned db-ptr 8))) - (4 (bytes-from-foreign db-ptr length)) - ((5 6 9 10) (mread-unsigned db-ptr length)) - (7 (mread-map db-ptr length)) - (8 (mread-int32 db-ptr length)) - (11 (mread-list db-ptr length)) + (1 (mread-pointer reader length)) + (2 (mread-uft8 reader length)) + (3 (ieee-floats:decode-float64 (mread-unsigned reader 8))) + (4 (bytes-from-foreign reader length)) + ((5 6 9 10) (mread-unsigned reader length)) + (7 (mread-map reader length)) + (8 (mread-int32 reader length)) + (11 (mread-list reader length)) (14 (< 0 length)) ; bool - (15 (ieee-floats:decode-float32 (mread-unsigned db-ptr 4))) + (15 (ieee-floats:decode-float32 (mread-unsigned reader 4))) ))) (defun read-node-record (mmdb node-number bit) |