View | Details | Raw Unified
Collapse All | Expand All

(-) ecl-0.9h.orig/contrib/sockets/sockets.lisp (-12 / +12 lines)
 Lines 1-5    Link Here 
;; -*- Mode: Lisp; Syntax: Common-Lisp -*-
;; -*- Mode: Lisp; Syntax: Common-Lisp -*-
;; $Id$
;; $Id: sockets.lisp,v 1.17 2005/12/05 09:21:30 goffioul Exp $
;; This file is based on SBCL's SB-BSD-SOCKET module and has been
;; This file is based on SBCL's SB-BSD-SOCKET module and has been
;; heavily modified to work with ECL by Julian Stecklina.
;; heavily modified to work with ECL by Julian Stecklina.
 Lines 518-524    Link Here 
"{
"{
        struct sockaddr_in sockaddr;
        struct sockaddr_in sockaddr;
        int addr_len = sizeof(struct sockaddr_in);
        int addr_len = sizeof(struct sockaddr_in);
        int new_fd = accept(#0, (struct sockaddr*)&sockaddr, &addr_len);
        int new_fd = accept(#0, (struct sockaddr*)&sockaddr, (socklen_t *) &addr_len);
	@(return 0) = new_fd;
	@(return 0) = new_fd;
	@(return 1) = Cnil;
	@(return 1) = Cnil;
 Lines 651-660    Link Here 
        sockaddr.sun_len = sizeof(struct sockaddr_un);
        sockaddr.sun_len = sizeof(struct sockaddr_un);
#endif
#endif
        sockaddr.sun_family = #2;
        sockaddr.sun_family = #2;
        strncpy(&sockaddr.sun_path,#1,sizeof(sockaddr.sun_path));
        strncpy((char *) &sockaddr.sun_path,#1,sizeof(sockaddr.sun_path));
	sockaddr.sun_path[sizeof(sockaddr.sun_path)-1] = '\0';
	sockaddr.sun_path[sizeof(sockaddr.sun_path)-1] = '\0';
        @(return) = bind(#0,&sockaddr, sizeof(struct sockaddr_un));
        @(return) = bind(#0,(struct sockaddr *) &sockaddr, sizeof(struct sockaddr_un));
}"))
}"))
	(socket-error "bind"))))
	(socket-error "bind"))))
 Lines 664-672    Link Here 
"{
"{
        struct sockaddr_un sockaddr;
        struct sockaddr_un sockaddr;
        int addr_len = sizeof(struct sockaddr_un);
        int addr_len = sizeof(struct sockaddr_un);
        int new_fd = accept(#0, &sockaddr, &addr_len);
        int new_fd = accept(#0, (struct sockaddr *) &sockaddr, (socklen_t *) &addr_len);
	@(return 0) = new_fd;
	@(return 0) = new_fd;
	@(return 1) = (new_fd == -1) ? Cnil : make_string_copy(&sockaddr.sun_path);
	@(return 1) = (new_fd == -1) ? Cnil : make_string_copy((char *) &sockaddr.sun_path);
}")
}")
    (cond
    (cond
      ((= fd -1)
      ((= fd -1)
 Lines 694-703    Link Here 
        sockaddr.sun_len = sizeof(struct sockaddr_un);
        sockaddr.sun_len = sizeof(struct sockaddr_un);
#endif
#endif
        sockaddr.sun_family = #1;
        sockaddr.sun_family = #1;
        strncpy(&sockaddr.sun_path,#2,sizeof(sockaddr.sun_path));
        strncpy((char *) &sockaddr.sun_path,#2,sizeof(sockaddr.sun_path));
	sockaddr.sun_path[sizeof(sockaddr.sun_path)-1] = '\0';
	sockaddr.sun_path[sizeof(sockaddr.sun_path)-1] = '\0';
        @(return) = connect(#0,&sockaddr, sizeof(struct sockaddr_un));
        @(return) = connect(#0,(struct sockaddr *) &sockaddr, sizeof(struct sockaddr_un));
}"))
}"))
	(socket-error "connect"))))
	(socket-error "connect"))))
 Lines 708-717    Link Here 
{
{
        struct sockaddr_un name;
        struct sockaddr_un name;
        socklen_t len = sizeof(struct sockaddr_un);
        socklen_t len = sizeof(struct sockaddr_un);
        int ret = getpeername(#0,&name,&len);
        int ret = getpeername(#0,(struct sockaddr *) &name,&len);
        if (ret == 0) {
        if (ret == 0) {
                @(return) = make_string_copy(&name.sun_path);
                @(return) = make_string_copy((char *) &name.sun_path);
        } else {
        } else {
                @(return) = Cnil;
                @(return) = Cnil;
        }
        }
 Lines 985-991    Link Here 
		       ))
		       ))
	    (t :int :int)
	    (t :int :int)
	    t
	    t
	    "ecl_make_stream_from_fd(#0,#1,#2)"
	    "ecl_make_stream_from_fd(#0,#1,(enum ecl_smmode) #2)"
	    :one-liner t))
	    :one-liner t))
(defgeneric socket-make-stream (socket  &rest args)
(defgeneric socket-make-stream (socket  &rest args)
 Lines 1017-1023    Link Here 
	cl_object in_strm, out_strm;
	cl_object in_strm, out_strm;
	in_strm = ecl_make_stream_from_fd(make_simple_string(\"FD-STREAM\"), #0, smm_input);
	in_strm = ecl_make_stream_from_fd(make_simple_string(\"FD-STREAM\"), #0, smm_input);
	out_strm = ecl_make_stream_from_fd(make_simple_string(\"FD-STREAM\"), #0, smm_output);
	out_strm = ecl_make_stream_from_fd(make_simple_string(\"FD-STREAM\"), #0, smm_output);
	@(return) = make_two_way_stream(in_strm, out_strm);
	@(return) = cl_make_two_way_stream(in_strm, out_strm);
}"
}"
                               :one-liner nil)))
                               :one-liner nil)))
      (setf (slot-value socket 'stream) stream)
      (setf (slot-value socket 'stream) stream)