[cl-pdf-devel] patch for contrib/zlib-clisp.lisp
Marc Battyani
marc.battyani at fractalconcept.com
Thu Nov 17 14:29:07 UTC 2005
Yaroslav Kavenchuk <kavenchuk at jenty.by>
> at clisp there is module "zlib"
>
> zlib-clisp.diff
> =======================================
> --- zlib-clisp.lisp.orig Mon Oct 10 11:36:10 2005
> +++ zlib-clisp.lisp Thu Nov 17 11:22:30 2005
> @@ -35,6 +35,7 @@
>
> #-CLISP (error "This code should be loaded in CLISP.")
>
> +#-:zlib
> (use-package "FFI")
>
> #|
> @@ -49,6 +50,7 @@
> (:return-type ffi:int))
> |#
>
> +#-:zlib
> (defvar *zlib-path*
> (or #+WIN32 "zlib.dll"
> ;; TODO how to deal with cygwin (#+UNIX on MS-Windows)? -- it
> wants zlib.dll
> @@ -58,7 +60,9 @@
> "Set this variable to point to the location of the zlib library
> (libz.so or zlib.dll) on your system.")
>
> +#-:zlib
> (defvar *zlib*)
> +#-:zlib
> (unless (and (boundp '*zlib*)
> (ffi:validp *zlib*))
> (setq *zlib* (user::foreign-library *zlib-path*)))
> @@ -73,6 +77,7 @@
> ;; ffi:c-string (or ffi:c-array-ptr character), since it receives the
> ;; buffer length as an extra argument.
>
> +#-:zlib
> (ffi:def-lib-call-out zlib-compress-string *zlib*
> (:name "compress")
> (:arguments (dest ffi:c-pointer :in)
> @@ -82,6 +87,7 @@
> (:return-type ffi:int)
> (:language :stdc))
>
> +#-:zlib
> (defun compress-string (source)
> "Compress the string SOURCE. Returns an array of bytes
> representing the compressed data."
> @@ -97,6 +103,8 @@
> (ffi:offset dest 0 `(c-array uint8 ,actual))
> (error "zlib error, code ~d" status))))))
>
> +#+:zlib
> +(setf (symbol-function 'compress-string) #'zlib:compress)
>
> (defmethod write-object ((obj pdf-stream) &optional root-level &aux
> compressed)
> #+(or Lispworks allegro CMU CLISP)
> ===========================================
Thanks.
Is this for windows only or portable on every clisp supported OS ?
Marc
More information about the cl-pdf-devel
mailing list