X-Git-Url: http://git.kpe.io/?a=blobdiff_plain;f=tests%2Fgethostname.cl;h=49ed9dec6c1141e7c092d16128790d72ab9f46c2;hb=acdc714a0b8ea9c0df0c9ffc56699fa010bd549e;hp=dc318225ecf76090cd885b2b310b1a7fb208b596;hpb=bf5c7e7c36474375604bcbcedea8794a68dd1784;p=uffi.git diff --git a/tests/gethostname.cl b/tests/gethostname.cl index dc31822..49ed9de 100644 --- a/tests/gethostname.cl +++ b/tests/gethostname.cl @@ -7,7 +7,7 @@ ;;;; Programmer: Kevin M. Rosenberg ;;;; Date Started: Feb 2002 ;;;; -;;;; $Id: gethostname.cl,v 1.5 2002/03/14 21:03:12 kevin Exp $ +;;;; $Id: gethostname.cl,v 1.11 2002/04/02 21:42:11 kevin Exp $ ;;;; ;;;; This file, part of UFFI, is Copyright (c) 2002 by Kevin M. Rosenberg ;;;; @@ -22,7 +22,7 @@ ;;; This example is inspired by the example on the CL-Cookbook web site (uffi:def-function ("gethostname" c-gethostname) - ((name :cstring) + ((name (* :unsigned-char)) (len :int)) :returning :int) @@ -35,7 +35,31 @@ (uffi:convert-from-foreign-string name) (error "gethostname() failed.")) (uffi:free-foreign-object name)))) - + +(defun gethostname2 () + "Returns the hostname" + (uffi:with-foreign-object (name '(:array :unsigned-char 256)) + (if (zerop (c-gethostname (uffi:char-array-to-pointer name) 256)) + (uffi:convert-from-foreign-string name) + (error "gethostname() failed.")))) + +#+examples-uffi +(progn + (format t "~&Hostname (technique 1): ~A" (gethostname)) + (format t "~&Hostname (technique 2): ~A" (gethostname2))) + #+test-uffi -(format t "~&Hostname: ~A" (gethostname)) +(progn + (let ((hostname1 (gethostname)) + (hostname2 (gethostname2))) + + (util.test:test (and (stringp hostname1) (stringp hostname2)) t + :fail-info "gethostname not string") + (util.test:test (and (not (zerop (length hostname1))) + (not (zerop (length hostname2)))) t + :fail-info "gethostname length 0") + (util.test:test (string= hostname1 hostname1) (length hostname1) + :fail-info "gethostname techniques don't match")) + ) +