sockets.lisp is now C++ clean.

This commit is contained in:
jgarcia 2006-09-26 08:12:32 +00:00
parent 6d1143aab4
commit 049dbfde41
2 changed files with 16 additions and 12 deletions

View file

@ -437,7 +437,7 @@ safe_buffer_pointer(cl_object x, cl_index size)
if (t == t_base_string) {
ok = (size < x->base_string.dim);
} else if (t == t_vector) {
cl_elttype aet = x->vector.elttype;
cl_elttype aet = (cl_elttype)x->vector.elttype;
if (aet == aet_b8 || aet == aet_i8 || aet == aet_bc) {
ok = (size < x->vector.dim);
} else if (aet == aet_fix || aet == aet_index) {
@ -566,7 +566,7 @@ static void fill_inet_sockaddr(struct sockaddr_in *sockaddr, int port,
(c-inline (sfd) (:int) (values :int :object)
"{
struct sockaddr_in sockaddr;
int addr_len = sizeof(struct sockaddr_in);
socklen_t addr_len = (socklen_t)sizeof(struct sockaddr_in);
int new_fd = accept(#0, (struct sockaddr*)&sockaddr, &addr_len);
@(return 0) = new_fd;
@ -769,10 +769,10 @@ also known as unix-domain sockets."))
sockaddr.sun_len = sizeof(struct sockaddr_un);
#endif
sockaddr.sun_family = #2;
strncpy(&sockaddr.sun_path,#1,sizeof(sockaddr.sun_path));
strncpy(sockaddr.sun_path,#1,sizeof(sockaddr.sun_path));
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"))))
@ -781,10 +781,10 @@ also known as unix-domain sockets."))
(c-inline ((socket-file-descriptor socket)) (:int) (values :int :object)
"{
struct sockaddr_un sockaddr;
int addr_len = sizeof(struct sockaddr_un);
int new_fd = accept(#0, &sockaddr, &addr_len);
socklen_t addr_len = (socklen_t)sizeof(struct sockaddr_un);
int new_fd = accept(#0, (struct sockaddr *)&sockaddr, &addr_len);
@(return 0) = new_fd;
@(return 1) = (new_fd == -1) ? Cnil : make_base_string_copy(&sockaddr.sun_path);
@(return 1) = (new_fd == -1) ? Cnil : make_base_string_copy(sockaddr.sun_path);
}")
(cond
((= fd -1)
@ -812,10 +812,10 @@ also known as unix-domain sockets."))
sockaddr.sun_len = sizeof(struct sockaddr_un);
#endif
sockaddr.sun_family = #1;
strncpy(&sockaddr.sun_path,#2,sizeof(sockaddr.sun_path));
strncpy(sockaddr.sun_path,#2,sizeof(sockaddr.sun_path));
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"))))
@ -826,10 +826,10 @@ also known as unix-domain sockets."))
{
struct sockaddr_un name;
socklen_t len = sizeof(struct sockaddr_un);
int ret = getpeername(#0,&name,&len);
int ret = getpeername(#0,(struct sockaddr*)&name,&len);
if (ret == 0) {
@(return) = make_base_string_copy(&name.sun_path);
@(return) = make_base_string_copy(name.sun_path);
} else {
@(return) = Cnil;
}
@ -1104,7 +1104,7 @@ also known as unix-domain sockets."))
buffering)
(t :int :int :object)
t
"si_set_buffering_mode(ecl_make_stream_from_fd(#0,#1,#2), #3)"
"si_set_buffering_mode(ecl_make_stream_from_fd(#0,#1,(ecl_smmode)#2), #3)"
:one-liner t))
(defmethod socket-make-stream ((socket socket) &rest args &key (buffering-mode NIL))

View file

@ -64,6 +64,10 @@ ECL 1.0:
(directory "foo*") => ("foo")
(directory "foo*.*") => ("foo" "foo.log")
- The code in contrib/sockets.lisp was not compatible with C++ because of
multiple implicit pointer conversions, and additionally it had some pointer
miscalculations.
;;; Local Variables: ***
;;; mode:text ***
;;; fill-column:79 ***