Use endianness functions from swap-bytes
authorStelian Ionescu <sionescu@cddr.org>
Thu, 11 Jul 2013 11:26:17 +0000 (11 13:26 +0200)
committerStelian Ionescu <sionescu@cddr.org>
Thu, 11 Jul 2013 11:26:17 +0000 (11 13:26 +0200)
iolib.asd
src/sockets/common.lisp
src/sockets/pkgdcl.lisp

index f2e0023..068191d 100644 (file)
--- a/iolib.asd
+++ b/iolib.asd
   :defsystem-depends-on (:iolib/asdf :iolib/conf :iolib/grovel)
   :depends-on (:iolib/base :iolib/syscalls :iolib/streams
                :babel :cffi :iolib/grovel :bordeaux-threads
-               :idna)
+               :idna :swap-bytes)
   :around-compile "iolib/asdf:compile-wrapper"
   :encoding :utf-8
   :pathname "src/sockets/"
index c7f0681..aeb3ce5 100644 (file)
 (deftype ipv4-array () '(ub8-sarray 4))
 (deftype ipv6-array () '(ub16-sarray 8))
 
-;;;; Byte-swap functions
-
-(defun htons (short)
-  #+little-endian
-  (logior (ash (logand (the ub16 short) #x00FF) 8)
-          (ash (logand (the ub16 short) #xFF00) -8))
-  #+big-endian short)
-
-(defun ntohs (short)
-  (htons short))
-
-(defun htonl (long)
-  #+little-endian
-  (logior (ash (logand (the ub32 long) #x000000FF) 24)
-          (ash (logand (the ub32 long) #x0000FF00) 8)
-          (ash (logand (the ub32 long) #x00FF0000) -8)
-          (ash (logand (the ub32 long) #xFF000000) -24))
-  #+big-endian long)
-
-(defun ntohl (long)
-  (htonl long))
-
 ;;;; Conversion between address formats
 
 (defun copy-simple-array-ub16-to-alien-vector (lisp-vec alien-vec)
index 995003d..b8f4f2b 100644 (file)
@@ -8,6 +8,8 @@
 (defpackage :iolib.sockets
   (:nicknames :sockets :iolib/sockets)
   (:use :iolib.base :iolib.streams :cffi)
+  (:import-from #:swap-bytes
+                #:htons #:ntohs #:htonl #:ntohl)
   (:import-from #:iolib.syscalls #:defsyscall
                 #:size-t #:ssize-t #:pid-t #:uid-t #:gid-t
                 #:timeval #:sec #:usec)