;;; System dependent functions

;; Author: Milan Zamazal <pdm@brailcom.org>

;; Copyright (C) 2004 Brailcom, o.p.s.

;; COPYRIGHT NOTICE

;; This program is free software; you can redistribute it and/or modify
;; it under the terms of the GNU Lesser General Public License as published by
;; the Free Software Foundation; either version 2.1 of the License, or
;; (at your option) any later version.

;; This program is distributed in the hope that it will be useful, but
;; WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
;; or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU Lesser General Public License
;; for more details.

;; You should have received a copy of the GNU Lesser General Public License
;; along with this program.  If not, see <https://www.gnu.org/licenses/>.


(in-package :ssip)


(defun getenv (var)
  #+SBCL
  (sb-ext:posix-getenv var)
  #+CLISP
  (ext:getenv var))


#+CLISP
(defparameter +encoding+
  (ext:make-encoding :charset 'charset:utf-8 :line-terminator :unix))

(defun open-network-stream (host port)
  #+CLISP
  (socket:socket-connect port host :external-format +encoding+)
  #+SBCL
  (let ((s (make-instance 'sb-bsd-sockets:inet-socket :type :stream
                          :protocol :tcp)))
    (sb-bsd-sockets:socket-connect
     s
     (sb-bsd-sockets:host-ent-address (sb-bsd-sockets:get-host-by-name host))
     port)
    (sb-bsd-sockets:socket-make-stream s :input t :output t :buffering :none))
  )

(defun close-network-stream (stream)
  #+(or SBCL CLISP)
  (close stream))

