Группа :: Система/Основа
Пакет: xinetd
Главная Изменения Спек Патчи Загрузить Bugs and FR
Патч: xinetd-2.3.14-rh-ssize_t.patch
--- xinetd-2.3.14/libs/src/sio/impl.h 2006-10-27 12:33:29 -0400
+++ xinetd-2.3.14/libs/src/sio/impl.h 2006-10-27 12:40:21 -0400
@@ -142,9 +142,9 @@
* Internal functions that are visible
*/
int __sio_writef( __sio_od_t *odp, int fd ) ;
-int __sio_extend_buffer( __sio_id_t *idp, int fd, int b_left ) ;
+ssize_t __sio_extend_buffer( __sio_id_t *idp, int fd, ssize_t b_left ) ;
int __sio_init( __sio_descriptor_t *dp, int fd, enum __sio_stream stream_type );
-int __sio_more( __sio_id_t *idp, int fd ) ;
+ssize_t __sio_more( __sio_id_t *idp, int fd ) ;
sio_status_e __sio_switch( __sio_id_t *idp, int fd ) ;
--- xinetd-2.3.14/libs/src/sio/siosup.c 2003-09-06 10:41:59 -0400
+++ xinetd-2.3.14/libs/src/sio/siosup.c 2006-10-27 12:40:23 -0400
@@ -599,9 +599,9 @@
* If it does not return SIO_ERR, it sets start, nextb, end
* If it returns SIO_ERR, it does not change anything
*/
-static int __sio_readf( __sio_id_t *idp, int fd )
+static ssize_t __sio_readf( __sio_id_t *idp, int fd )
{
- int cc ;
+ ssize_t cc ;
/*
* First check for a tied fd and flush the stream if necessary
@@ -634,7 +634,7 @@
{
if ( __sio_switch( idp, fd ) == FAILURE )
return( SIO_ERR ) ;
- cc = -1 ;
+ cc = (ssize_t)-1 ;
}
}
else
@@ -680,7 +680,7 @@
for ( ;; )
{
cc = read( fd, idp->buf, (int) idp->buffer_size ) ;
- if ( cc == -1 )
+ if ( cc == (ssize_t)-1 )
if ( errno == EINTR )
continue ;
else
@@ -705,9 +705,9 @@
* auxiliary buffer)
* Also, if successful, idp->nextb is set to idp->buf, idp->end is modified.
*/
-int __sio_extend_buffer( __sio_id_t *idp, int fd, int b_left )
+ssize_t __sio_extend_buffer( __sio_id_t *idp, int fd, ssize_t b_left )
{
- int b_read ;
+ ssize_t b_read ;
/*
* copy to auxiliary buffer
@@ -733,10 +733,10 @@
*
* Return value: the number of bytes read.
*/
-int __sio_more( __sio_id_t *idp, int fd )
+ssize_t __sio_more( __sio_id_t *idp, int fd )
{
int b_left = &idp->buf[ idp->buffer_size ] - idp->end ;
- int cc ;
+ ssize_t cc ;
if ( b_left <= 0 )
return( 0 ) ;
--- xinetd-2.3.14/libs/src/sio/sprint.c 2006-10-27 13:14:49 -0400
+++ xinetd-2.3.14/libs/src/sio/sprint.c 2006-10-27 13:14:51 -0400
@@ -18,7 +18,7 @@
typedef unsigned long long u_wide_int ;
typedef int bool_int ;
-static char *conv_10( wide_int num, bool_int is_unsigned, bool_int *is_negative, char *buf_end, int *len );
+static char *conv_10( wide_int num, bool_int is_unsigned, bool_int *is_negative, char *buf_end, size_t *len );
#define S_NULL_LEN 6
static char S_NULL[S_NULL_LEN+1] = "(null)";
@@ -69,7 +69,7 @@
} \
if ( __SIO_MUST_FLUSH( *odp, c ) && fd >= 0 ) \
{ \
- int b_in_buffer = sp - odp->start ; \
+ ssize_t b_in_buffer = sp - odp->start ; \
\
odp->nextb = sp ; \
if ( __sio_writef( odp, fd ) != b_in_buffer ) \
@@ -122,11 +122,11 @@
* - all floating point arguments are passed as doubles
*/
/* VARARGS2 */
-int Sprint( int fd, const char *fmt, ...)
+ssize_t Sprint( int fd, const char *fmt, ...)
{
__sio_descriptor_t *dp ;
__sio_od_t *odp ;
- int cc ;
+ ssize_t cc ;
va_list ap ;
if( sio_setup( fd, &dp, __SIO_OUTPUT_STREAM ) == SIO_ERR )
@@ -143,7 +143,7 @@
/*
* This is the equivalent of vfprintf for SIO
*/
-int Sprintv( int fd, const char *fmt, va_list ap)
+ssize_t Sprintv( int fd, const char *fmt, va_list ap)
{
__sio_descriptor_t *dp ;
__sio_od_t *odp ;
@@ -162,7 +162,7 @@
* in buf).
*/
static char *conv_fp( char format, double num, boolean_e add_dp,
- int precision, bool_int *is_negative, char buf[], int *len )
+ size_t precision, bool_int *is_negative, char buf[], size_t *len )
/* always add decimal point if YES */
{
char *s = buf ;
@@ -220,7 +220,7 @@
if ( format != 'f' )
{
char temp[ EXPONENT_LENGTH ] ; /* for exponent conversion */
- int t_len ;
+ size_t t_len ;
bool_int exponent_is_negative ;
*s++ = format ; /* either e or E */
@@ -261,7 +261,7 @@
* which is a pointer to the END of the buffer + 1 (i.e. if the buffer
* is declared as buf[ 100 ], buf_end should be &buf[ 100 ])
*/
-static char *conv_p2( u_wide_int num, int nbits, char format, char *buf_end, int *len )
+static char *conv_p2( u_wide_int num, int nbits, char format, char *buf_end, size_t *len )
{
int mask = ( 1 << nbits ) - 1 ;
char *p = buf_end ;
@@ -292,7 +292,7 @@
* which is a pointer to the END of the buffer + 1 (i.e. if the buffer
* is declared as buf[ 100 ], buf_end should be &buf[ 100 ])
*/
-static char *conv_10( wide_int num, bool_int is_unsigned, bool_int *is_negative, char *buf_end, int *len )
+static char *conv_10( wide_int num, bool_int is_unsigned, bool_int *is_negative, char *buf_end, size_t *len )
{
char *p = buf_end ;
u_wide_int magnitude ;
@@ -346,19 +346,19 @@
* Do format conversion placing the output in odp.
* Note: we do not support %n for security reasons.
*/
-int __sio_converter( __sio_od_t *odp, int fd, const char *fmt, va_list ap )
+ssize_t __sio_converter( __sio_od_t *odp, int fd, const char *fmt, va_list ap )
{
char *sp = NULL;
char *bep = NULL;
- int cc = 0 ;
- int i ;
+ ssize_t cc = 0 ;
+ size_t i ;
char *s = NULL;
char *q = NULL;
- int s_len ;
+ size_t s_len ;
int min_width = 0 ;
- int precision = 0 ;
+ size_t precision = 0 ;
enum { LEFT, RIGHT } adjust ;
char pad_char ;
char prefix_char ;
--- xinetd-2.3.14/libs/src/sio/sio.c 2006-10-27 12:35:12 -0400
+++ xinetd-2.3.14/libs/src/sio/sio.c 2006-10-27 13:28:09 -0400
@@ -28,17 +28,17 @@
/*
* Stream write call: arguments same as those of write(2)
*/
-int Swrite( int fd, const char *addr, unsigned int nbytes )
+ssize_t Swrite( int fd, const char *addr, size_t nbytes )
{
__sio_descriptor_t *dp ;
__sio_od_t *odp ;
- unsigned int b_transferred ;
- unsigned int b_avail ;
- int total_b_transferred ;
- int b_written ;
- int b_in_buffer ;
+ size_t b_transferred ;
+ size_t b_avail ;
+ ssize_t total_b_transferred ;
+ ssize_t b_written ;
+ ssize_t b_in_buffer ;
- if ( nbytes > INT_MAX )
+ if ( nbytes > SSIZE_MAX )
return( SIO_ERR );
if( sio_setup( fd, &dp, __SIO_OUTPUT_STREAM ) == SIO_ERR )
return( SIO_ERR );
@@ -62,7 +62,7 @@
b_in_buffer = odp->buf_end - odp->start ;
b_written = __sio_writef( odp, fd ) ;
if ( b_written != b_in_buffer )
- return( (b_written >= (int)nbytes) ? (int)nbytes : b_written ) ;
+ return( (b_written >= (ssize_t)nbytes) ? (ssize_t)nbytes : b_written ) ;
total_b_transferred = b_transferred ;
addr += b_transferred ;
@@ -83,7 +83,7 @@
* the buffer is full
*/
b_written = __sio_writef( odp, fd ) ;
- if ( b_written != (int)odp->buffer_size )
+ if ( b_written != (ssize_t)odp->buffer_size )
{
if ( b_written != SIO_ERR )
{
@@ -157,8 +157,8 @@
__sio_id_t *idp ;
char *cp ;
char *line_start ;
- int b_left ;
- int extension ;
+ ssize_t b_left ;
+ ssize_t extension ;
if( sio_setup( fd, &dp, __SIO_INPUT_STREAM ) == SIO_ERR )
return( NULL );
@@ -361,7 +361,7 @@
#ifndef sio_memscan
-static char *sio_memscan( const char *from, int how_many, char ch )
+static char *sio_memscan( const char *from, size_t how_many, char ch )
{
char *p ;
char *last = from + how_many ;
@@ -377,7 +377,7 @@
#ifdef NEED_MEMCOPY
-void __sio_memcopy( const char *from, char *to, int nbytes )
+void __sio_memcopy( const char *from, char *to, size_t nbytes )
{
while ( nbytes-- )
*to++ = *from++ ;
--- xinetd-2.3.14/xinetd/udpint.c 2005-10-05 13:20:11 -0400
+++ xinetd-2.3.14/xinetd/udpint.c 2006-10-27 12:17:10 -0400
@@ -226,7 +226,7 @@
{
char *p ;
int left ;
- int cc ;
+ ssize_t cc ;
const char *func = "send_data" ;
for ( p = buf, left = len ; left > 0 ; left -= cc, p+= cc )
@@ -236,7 +236,7 @@
else
cc = sendto( sd, p, left, 0, SA( addr ), sizeof( *addr ) ) ;
- if ( cc == -1 ) {
+ if ( cc == (ssize_t)-1 ) {
if ( errno == EINTR )
{
cc = 0 ;
@@ -264,12 +264,12 @@
for ( ;; )
{
- int cc ;
+ ssize_t cc ;
from_len = sizeof( pp->from ) ;
cc = recvfrom( INT_REMOTE( ip ), pp->data, pp->size,
0, SA( &pp->from ), &from_len ) ;
- if ( cc == -1 )
+ if ( cc == (ssize_t)-1 )
{
if ( errno != EINTR )
{
@@ -306,14 +306,14 @@
static status_e udp_local_to_remote( channel_s *chp )
{
char buf[ MAX_DATAGRAM_SIZE ] ;
- int cc ;
+ ssize_t cc ;
const char *func = "udp_local_to_remote" ;
for ( ;; )
{
cc = recv( chp->ch_local_socket, buf, sizeof( buf ), 0 ) ;
- if ( cc == -1 )
+ if ( cc == (ssize_t)-1 )
{
if ( errno != EINTR )
{
--- xinetd-2.3.14/xinetd/service.c 2006-10-27 12:17:10 -0400
+++ xinetd-2.3.14/xinetd/service.c 2006-10-27 12:17:10 -0400
@@ -610,7 +610,7 @@
/* print the banner regardless of access control */
if ( SC_BANNER(scp) != NULL ) {
char tmpbuf[TMPSIZE];
- int retval;
+ ssize_t retval;
int bannerfd = open(SC_BANNER(scp), O_RDONLY);
if( bannerfd < 0 ) {
@@ -620,7 +620,7 @@
}
while( (retval = read(bannerfd, tmpbuf, sizeof(tmpbuf))) ) {
- if (retval == -1)
+ if (retval == (ssize_t)-1)
{
if (errno == EINTR)
continue;
--- xinetd-2.3.14/xinetd/signals.c 2003-12-23 10:30:10 -0500
+++ xinetd-2.3.14/xinetd/signals.c 2006-10-27 12:17:10 -0400
@@ -402,7 +402,7 @@
*/
static void my_handler( int sig )
{
- int ret_val;
+ ssize_t ret_val;
int saved_errno = errno;
#if NSIG < 256
unsigned char sig_byte;
@@ -412,13 +412,13 @@
do
{
ret_val = write(signals_pending[1], &sig_byte, 1);
- } while (ret_val == -1 && errno == EINTR);
+ } while (ret_val == (ssize_t)-1 && errno == EINTR);
#else
if (signals_pending[1] < 0) return;
do
{
ret_val = write(signals_pending[1], &sig, sizeof(int));
- } while (ret_val == -1 && errno == EINTR);
+ } while (ret_val == (ssize_t)-1 && errno == EINTR);
#endif
errno = saved_errno;
}
@@ -470,12 +470,12 @@
#endif
while( --i >= 0 ) {
- int ret_val;
+ ssize_t ret_val;
do
{
ret_val = read(signals_pending[0], &sig, sizeof(sig));
- } while (ret_val == -1 && errno == EINTR);
- if (ret_val != sizeof(sig) ) {
+ } while (ret_val == (ssize_t)-1 && errno == EINTR);
+ if (ret_val != (ssize_t)sizeof(sig) ) {
msg(LOG_ERR, func, "Error retrieving pending signal: %m");
return;
}
--- xinetd-2.3.14/xinetd/connection.c 2005-10-05 13:20:11 -0400
+++ xinetd-2.3.14/xinetd/connection.c 2006-10-27 12:17:10 -0400
@@ -96,13 +96,15 @@
if ( SVC_SOCKET_TYPE( sp ) == SOCK_DGRAM )
{
char t_ch ;
+ ssize_t val;
/*
* This trick is done to get the remote address.
* select(2) guaranteed that we won't block on the recvfrom
*/
- if ( recvfrom( SVC_FD( sp ), &t_ch, 1, MSG_PEEK,
- &cp->co_remote_address.sa, &sin_len ) == -1 )
+ val = recvfrom( SVC_FD( sp ), &t_ch, 1, MSG_PEEK,
+ &cp->co_remote_address.sa, &sin_len );
+ if ( val == (ssize_t)-1 )
{
msg( LOG_ERR, func, "service %s, recvfrom: %m", SVC_ID( sp ) ) ;
return( FAILED ) ;
--- xinetd-2.3.14/xinetd/util.c 2005-10-05 17:45:41 -0400
+++ xinetd-2.3.14/xinetd/util.c 2006-10-27 12:17:10 -0400
@@ -198,7 +198,8 @@
*/
status_e write_buf( int fd, const char *buf, int len )
{
- int cc, i ;
+ int i ;
+ ssize_t cc;
for ( i = 0 ; len > 0 ; i += cc, len -= cc )
{
@@ -234,7 +235,7 @@
void drain( int sd )
{
char buf[ 256 ] ; /* This size is arbitrarily chosen */
- int ret ;
+ ssize_t ret ;
int old_val ;
/* Put in non-blocking mode so we don't hang. */
--- xinetd-2.3.14/xinetd/redirect.c 2003-08-06 02:12:10 -0400
+++ xinetd-2.3.14/xinetd/redirect.c 2006-10-27 12:17:10 -0400
@@ -58,7 +58,8 @@
struct service *sp = SERVER_SERVICE( serp );
struct service_config *scp = SVC_CONF( sp );
int RedirDescrip = SERVER_FD( serp );
- int maxfd, num_read, num_wrote=0, ret=0;
+ int maxfd;
+ ssize_t num_read, num_wrote=0, ret=0;
unsigned int sin_len = 0;
unsigned long bytes_in = 0, bytes_out = 0;
int no_to_nagle = 1;
@@ -156,7 +157,7 @@
do {
num_read = read(RedirDescrip,
buff, sizeof(buff));
- if (num_read == -1 && errno == EINTR)
+ if (num_read == (ssize_t)-1 && errno == EINTR)
continue;
if (num_read <= 0)
goto REDIROUT;
--- xinetd-2.3.14/xinetd/tcpint.c 2005-10-05 13:20:11 -0400
+++ xinetd-2.3.14/xinetd/tcpint.c 2006-10-27 12:17:10 -0400
@@ -273,7 +273,7 @@
static stream_status_e tcp_local_to_remote( channel_s *chp )
{
char buf[ DATAGRAM_SIZE ] ;
- int rcc, wcc ;
+ ssize_t rcc, wcc ;
char *p ;
int left ;
const char *func = "tcp_local_to_remote" ;
@@ -283,7 +283,7 @@
rcc = recv( chp->ch_local_socket, buf, sizeof( buf ), 0 ) ;
if ( rcc == 0 )
return( S_SERVER_ERR ) ;
- else if ( rcc == -1 )
+ else if ( rcc == (ssize_t)-1 )
{
if ( errno != EINTR )
{
@@ -300,7 +300,7 @@
wcc = send( chp->ch_remote_socket, p, left, 0 ) ;
if ( wcc == 0 )
return( S_CLIENT_ERR ) ;
- else if ( wcc == -1 )
+ else if ( wcc == (ssize_t)-1 )
{
if ( errno == EINTR )
wcc = 0 ;
@@ -326,7 +326,7 @@
static stream_status_e tcp_remote_to_local( channel_s *chp )
{
char buf[ DATAGRAM_SIZE ] ;
- int rcc, wcc ;
+ ssize_t rcc, wcc ;
int left ;
char *p ;
const char *func = "tcp_remote_to_local" ;
@@ -336,7 +336,7 @@
rcc = recv( chp->ch_remote_socket, buf, sizeof( buf ), 0 ) ;
if ( rcc == 0 )
return( S_CLIENT_ERR ) ;
- else if ( rcc == -1 )
+ else if ( rcc == (ssize_t)-1 )
{
if ( errno != EINTR )
{
@@ -353,7 +353,7 @@
wcc = send( chp->ch_local_socket, p, left, 0 ) ;
if ( wcc == 0 ) {
return( S_SERVER_ERR ) ;
- } else if ( wcc == -1 ) {
+ } else if ( wcc == (ssize_t)-1 ) {
if ( errno == EINTR ) {
rcc = 0 ;
} else {
--- xinetd-2.3.14/xinetd/builtins.c 2005-10-06 11:38:04 -0400
+++ xinetd-2.3.14/xinetd/builtins.c 2006-10-27 12:17:10 -0400
@@ -129,7 +129,7 @@
static void stream_echo( const struct server *serp )
{
char buf[ BUFFER_SIZE ] ;
- int cc ;
+ ssize_t cc ;
int descriptor = SERVER_FD( serp ) ;
struct service *svc = SERVER_SERVICE( serp ) ;;
@@ -149,7 +149,7 @@
cc = read( descriptor, buf, sizeof( buf ) ) ;
if ( cc == 0 )
break ;
- if ( cc == -1 ) {
+ if ( cc == (ssize_t)-1 ) {
if ( errno == EINTR )
continue ;
else
@@ -167,7 +167,7 @@
{
char buf[ DATAGRAM_SIZE ] ;
union xsockaddr lsin;
- int cc ;
+ ssize_t cc ;
socklen_t sin_len = 0;
int descriptor = SERVER_FD( serp ) ;
const char *func = "dgram_echo";
@@ -178,16 +178,16 @@
sin_len = sizeof( struct sockaddr_in6 );
cc = recvfrom( descriptor, buf, sizeof( buf ), 0, SA( &lsin ), &sin_len ) ;
- if ( cc != -1 ) {
+ if ( cc != (ssize_t)-1 ) {
if( bad_port_check(&lsin, func) != 0 ) return;
- (void) sendto( descriptor, buf, cc, 0, SA( &lsin ), sizeof( lsin ) ) ;
+ (void) sendto( descriptor, buf, (size_t)cc, 0, SA( &lsin ), sizeof( lsin ) ) ;
}
}
static void stream_discard( const struct server *serp )
{
char buf[ BUFFER_SIZE ] ;
- int cc ;
+ ssize_t cc ;
int descriptor = SERVER_FD( serp ) ;
struct service *svc = SERVER_SERVICE( serp ) ;;
@@ -204,7 +204,7 @@
for ( ;; )
{
cc = read( descriptor, buf, sizeof( buf ) ) ;
- if ( (cc == 0) || ((cc == -1) && (errno != EINTR)) )
+ if ( (cc == 0) || ((cc == (ssize_t)-1) && (errno != EINTR)) )
break ;
}
if( SVC_WAITS( svc ) ) /* Service forks, so close it */
@@ -293,14 +293,16 @@
unsigned int buflen = sizeof( time_buf ) ;
int descriptor = SERVER_FD( serp ) ;
const char *func = "dgram_daytime";
+ ssize_t val;
if ( SC_IPV4( SVC_CONF( SERVER_SERVICE( serp ) ) ) )
sin_len = sizeof( struct sockaddr_in );
else if ( SC_IPV6( SVC_CONF( SERVER_SERVICE( serp ) ) ) )
sin_len = sizeof( struct sockaddr_in6 );
- if ( recvfrom( descriptor, time_buf, sizeof( time_buf ), 0,
- SA( &lsin ), &sin_len ) == -1 )
+ val = recvfrom( descriptor, time_buf, sizeof( time_buf ), 0,
+ SA( &lsin ), &sin_len );
+ if ( val == (ssize_t)-1 )
return ;
daytime_protocol( time_buf, &buflen ) ;
@@ -359,13 +361,15 @@
socklen_t sin_len = 0 ;
int fd = SERVER_FD( serp ) ;
const char *func = "dgram_daytime";
+ ssize_t val;
if ( SC_IPV4( SVC_CONF( SERVER_SERVICE( serp ) ) ) )
sin_len = sizeof( struct sockaddr_in );
else if ( SC_IPV6( SVC_CONF( SERVER_SERVICE( serp ) ) ) )
sin_len = sizeof( struct sockaddr_in6 );
- if ( recvfrom( fd, buf, sizeof( buf ), 0, SA( &lsin ), &sin_len ) == -1 )
+ val = recvfrom( fd, buf, sizeof( buf ), 0, SA( &lsin ), &sin_len );
+ if ( val == (ssize_t)-1 )
return ;
time_protocol( time_buf ) ;
@@ -465,13 +469,15 @@
int fd = SERVER_FD( serp ) ;
unsigned int left = sizeof( buf ) ;
const char *func = "dgram_chargen";
+ ssize_t val;
if ( SC_IPV4( SVC_CONF( SERVER_SERVICE( serp ) ) ) )
sin_len = sizeof( struct sockaddr_in );
else if ( SC_IPV6( SVC_CONF( SERVER_SERVICE( serp ) ) ) )
sin_len = sizeof( struct sockaddr_in6 );
- if ( recvfrom( fd, buf, sizeof( buf ), 0, SA( &lsin ), &sin_len ) == -1 )
+ val = recvfrom( fd, buf, sizeof( buf ), 0, SA( &lsin ), &sin_len );
+ if ( val == (ssize_t)-1 )
return ;
#if BUFFER_SIZE < LINE_LENGTH+2
--- xinetd-2.3.14/xinetd/ident.c 2005-10-05 13:20:11 -0400
+++ xinetd-2.3.14/xinetd/ident.c 2006-10-27 12:17:10 -0400
@@ -267,7 +267,7 @@
static char *get_line( int sd, char *buf, unsigned bufsize )
{
int size ;
- int cc ;
+ ssize_t cc ;
char *p ;
char *s ;
const char *func = "get_line" ;
@@ -275,7 +275,7 @@
for ( p = buf, size = bufsize ; size > 0 ; p += cc, size -= cc )
{
cc = read( sd, p, size ) ;
- if ( cc == -1 ) {
+ if ( cc == (ssize_t)-1 ) {
if ( errno == EINTR )
{
cc = 0 ;
--- xinetd-2.3.14/libs/src/sio/sio.h 2003-06-10 09:15:44 -0400
+++ xinetd-2.3.14/libs/src/sio/sio.h 2006-10-27 15:47:37 -0400
@@ -12,6 +12,8 @@
#define __SIO_H
#include <errno.h>
+#include <string.h>
+#include <unistd.h>
#include <stdarg.h>
/*
@@ -56,7 +58,7 @@
* buffer is right below buf and is of the same size.
*/
char *buf ;
- unsigned buffer_size ;
+ size_t buffer_size ;
char *start ; /* start of valid buffer contents */
char *end ; /* end of valid buffer contents + 1 */
@@ -163,15 +165,15 @@
/*
* The Write functions
*/
-int Swrite ( int fd, const char *buf, unsigned int nbytes );
-int Sprint ( int fd, const char *format, ... )
+ssize_t Swrite ( int fd, const char *buf, size_t );
+ssize_t Sprint ( int fd, const char *format, ... )
#ifdef __GNUC__
__attribute__ ((format (printf, 2, 3)));
#else
;
#endif
int Sputchar( int fd, char c );
-int Sprintv ( int fd, const char *format, va_list ap )
+ssize_t Sprintv ( int fd, const char *format, va_list ap )
#ifdef __GNUC__
__attribute__ ((format (printf, 2, 0)));
#else
@@ -186,7 +188,7 @@
int Sclose ( int fd ) ;
int Sbuftype ( int fd, int type ) ;
int Smorefds ( int ) ;
-int __sio_converter( __sio_od_t *, int , const char *, va_list );
+ssize_t __sio_converter( __sio_od_t *, int , const char *, va_list );
int sio_setup(int fd, __sio_descriptor_t **dp, unsigned int type );
#ifdef __GNUC__