1 ;;; -*- Mode: Lisp; Syntax: Common-Lisp; Package: CL-USER; -*-
2 ;;; ---------------------------------------------------------------------------
3 ;;; Title: [Originally CMUCL dependent stuff + fixups], probably for SCL
4 ;;; Created: 1999-05-25 22:32
5 ;;; Author: Gilbert Baumann <gilbert@base-engineering.com>
6 ;;; License: MIT style (see below)
7 ;;; ---------------------------------------------------------------------------
8 ;;; (c) copyright 1999 by Gilbert Baumann
10 ;;; Permission is hereby granted, free of charge, to any person obtaining
11 ;;; a copy of this software and associated documentation files (the
12 ;;; "Software"), to deal in the Software without restriction, including
13 ;;; without limitation the rights to use, copy, modify, merge, publish,
14 ;;; distribute, sublicense, and/or sell copies of the Software, and to
15 ;;; permit persons to whom the Software is furnished to do so, subject to
16 ;;; the following conditions:
18 ;;; The above copyright notice and this permission notice shall be
19 ;;; included in all copies or substantial portions of the Software.
21 ;;; THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
22 ;;; EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
23 ;;; MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
24 ;;; IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
25 ;;; CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
26 ;;; TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
27 ;;; SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
29 (export 'glisp
::read-byte-sequence
:glisp
)
30 (export 'glisp
::read-char-sequence
:glisp
)
31 (export 'glisp
::run-unix-shell-command
:glisp
)
33 (export 'glisp
::getenv
:glisp
)
35 (defun glisp::read-byte-sequence
(&rest ap
)
36 (apply #'read-sequence ap
))
38 (defun glisp::read-char-sequence
(&rest ap
)
39 (apply #'read-sequence ap
))
41 (defun glisp::read-byte-sequence
(sequence input
&key
(start 0) (end (length sequence
)))
44 (cond ((= i end
) (return i
)))
45 (setq c
(read-byte input nil
:eof
))
46 (cond ((eql c
:eof
) (return i
)))
47 (setf (aref sequence i
) c
)
50 (defun glisp::read-byte-sequence
(sequence input
&key
(start 0) (end (length sequence
)))
51 (let ((r (read-sequence sequence input
:start start
:end end
)))
52 (cond ((and (= r start
) (> end start
))
53 (let ((byte (read-byte input nil
:eof
)))
57 (setf (aref sequence start
) byte
)
60 (glisp::read-byte-sequence sequence input
:start start
:end end
)
65 (defmacro glisp
::with-timeout
((&rest ignore
) &body body
)
66 (declare (ignore ignore
))
70 (defun glisp::open-inet-socket
(hostname port
)
71 (let ((fd (extensions:connect-to-inet-socket hostname port
)))
73 (sys:make-fd-stream fd
76 :element-type
'(unsigned-byte 8)
77 :name
(format nil
"Network connection to ~A:~D" hostname port
))
80 (defun glisp::g
/make-string
(length &rest options
)
81 (apply #'make-array length
:element-type
'base-char options
))
83 (defun glisp:run-unix-shell-command
(command)
84 (ext:process-exit-code
(ext:run-program
"/bin/sh" (list "-c" command
) :wait t
:input nil
:output nil
)))
86 (defun glisp::getenv
(string)
87 (cdr (assoc string ext
:*environment-list
* :test
#'string-equal
)))