Reformat socket functions.

git-svn-id: svn+ssh://svn.berlios.de/svnroot/repos/libssh/trunk@464 7dcaeef0-15fb-0310-b436-a5af3365683c
This commit is contained in:
Andreas Schneider
2009-04-14 13:59:18 +00:00
parent 639e924ef5
commit e29ef25cdd

View File

@@ -199,47 +199,60 @@ int ssh_socket_is_open(struct socket *s) {
* \brief read len bytes from socket into buffer * \brief read len bytes from socket into buffer
*/ */
static int ssh_socket_unbuffered_read(struct socket *s, void *buffer, u32 len) { static int ssh_socket_unbuffered_read(struct socket *s, void *buffer, u32 len) {
int r; int rc = -1;
if(s->data_except)
if (s->data_except) {
return -1; return -1;
r=recv(s->fd,buffer,len,0); }
#ifndef _WIN32
s->last_errno=errno; rc = recv(s->fd,buffer, len, 0);
#ifdef _WIN32
s->last_errno = WSAGetLastError();
#else #else
s->last_errno=WSAGetLastError(); s->last_errno = errno;
#endif #endif
s->data_to_read=0; s->data_to_read = 0;
if(r<0)
s->data_except=1; if (rc < 0) {
return r; s->data_except = 1;
}
return rc;
} }
/* \internal /* \internal
* \brief writes len bytes from buffer to socket * \brief writes len bytes from buffer to socket
*/ */
static int ssh_socket_unbuffered_write(struct socket *s,const void *buffer, static int ssh_socket_unbuffered_write(struct socket *s, const void *buffer,
u32 len) { u32 len) {
int w; int w = -1;
if(s->data_except)
if (s->data_except) {
return -1; return -1;
w=send(s->fd,buffer,len,0); }
#ifndef _WIN32
s->last_errno=errno; w = send(s->fd,buffer, len, 0);
#ifdef _WIN32
s->last_errno = WSAGetLastError();
#else #else
s->last_errno=WSAGetLastError(); s->last_errno = errno;
#endif #endif
s->data_to_write=0; s->data_to_write = 0;
if(w<0)
s->data_except=1; if (w < 0) {
s->data_except = 1;
}
return w; return w;
} }
/* \internal /* \internal
* \brief returns nonzero if the current socket is in the fd_set * \brief returns nonzero if the current socket is in the fd_set
*/ */
int ssh_socket_fd_isset(struct socket *s, fd_set *set){ int ssh_socket_fd_isset(struct socket *s, fd_set *set) {
if(s->fd==-1) if(s->fd == -1) {
return 0; return 0;
}
return FD_ISSET(s->fd,set); return FD_ISSET(s->fd,set);
} }
@@ -247,35 +260,42 @@ int ssh_socket_fd_isset(struct socket *s, fd_set *set){
* \brief sets the current fd in a fd_set and updates the fd_max * \brief sets the current fd in a fd_set and updates the fd_max
*/ */
void ssh_socket_fd_set(struct socket *s, fd_set *set, int *fd_max){ void ssh_socket_fd_set(struct socket *s, fd_set *set, int *fd_max) {
if(s->fd==-1) if (s->fd == -1)
return; return;
FD_SET(s->fd,set); FD_SET(s->fd,set);
if(s->fd>= *fd_max){ if (s->fd >= *fd_max) {
*fd_max=s->fd+1; *fd_max = s->fd + 1;
} }
} }
/** \internal /** \internal
* \brief reads blocking until len bytes have been read * \brief reads blocking until len bytes have been read
*/ */
int ssh_socket_completeread(struct socket *s, void *buffer, u32 len){ int ssh_socket_completeread(struct socket *s, void *buffer, u32 len) {
int r; int r = -1;
u32 total=0; u32 total = 0;
u32 toread=len; u32 toread = len;
if(!ssh_socket_is_open(s)) if(! ssh_socket_is_open(s)) {
return SSH_ERROR; return SSH_ERROR;
while((r=ssh_socket_unbuffered_read(s,buffer+total,toread))){ }
if(r==-1)
while((r = ssh_socket_unbuffered_read(s, buffer + total, toread))) {
if (r < 0) {
return SSH_ERROR; return SSH_ERROR;
}
total += r; total += r;
toread-=r; toread -= r;
if(total==len) if (total == len) {
return len; return len;
if(r==0) }
if (r == 0) {
return 0; return 0;
} }
return total ; /* connection closed */ }
/* connection closed */
return total;
} }
/** \internal /** \internal