=================================================================== RCS file: /home/cvs/OpenXM_contrib2/asir2018/io/sio.c,v retrieving revision 1.1 retrieving revision 1.5 diff -u -p -r1.1 -r1.5 --- OpenXM_contrib2/asir2018/io/sio.c 2018/09/19 05:45:08 1.1 +++ OpenXM_contrib2/asir2018/io/sio.c 2021/03/24 14:03:09 1.5 @@ -44,7 +44,7 @@ * OF THE SOFTWARE HAS BEEN DEVELOPED BY A THIRD PARTY, THE THIRD PARTY * DEVELOPER SHALL HAVE NO LIABILITY IN CONNECTION WITH THE USE, * PERFORMANCE OR NON-PERFORMANCE OF THE SOFTWARE. - * $OpenXM$ + * $OpenXM: OpenXM_contrib2/asir2018/io/sio.c,v 1.4 2020/10/06 06:31:20 noro Exp $ */ #include "ca.h" #include @@ -79,6 +79,9 @@ struct IOFP iofp[MAXIOFP]; void init_socket(void); +#if defined(VISUAL) +typedef int socklen_t; +#endif #if !defined(VISUAL) && !defined(__MINGW32__) #define closesocket(s) (close((s))) #endif @@ -95,7 +98,7 @@ void getremotename(int s,char *name) int peerlen; peerlen = sizeof(peer); - getpeername(getremotesocket(s),(struct sockaddr *)&peer,&peerlen); + getpeername(getremotesocket(s),(struct sockaddr *)&peer,(socklen_t *)&peerlen); hp = gethostbyaddr((char *)&peer.sin_addr,sizeof(struct in_addr),AF_INET); if ( hp ) strcpy(name,hp->h_name); @@ -109,12 +112,18 @@ void generate_port(int use_unix,char *port_str) unsigned long mt_genrand(); unsigned int port; static int count=0; + int fd; #if !defined(VISUAL) && !defined(__MINGW32__) if ( use_unix ) { +#if defined(ANDROID) + sprintf(port_str,"/data/data/com.termux/files/usr/tmp/ox%02x.XXXXXX",count); +#else sprintf(port_str,"/tmp/ox%02x.XXXXXX",count); +#endif count++; - mktemp(port_str); + fd = mkstemp(port_str); + unlink(port_str); } else #endif { @@ -166,7 +175,7 @@ int try_bind_listen(int use_unix,char *port_str) closesocket(service); return -1; } - if (getsockname(service,saddr, &len) < 0) { + if (getsockname(service,saddr, (socklen_t *)&len) < 0) { perror("in getsockname"); closesocket(service); return -1; @@ -203,14 +212,14 @@ int try_accept(int af_unix,int s) if ( af_unix ) { len = sizeof(s_un); for ( c = -1, i = 0; (c < 0)&&(i = 10) ; i++ ) - c = accept(s, (struct sockaddr *) &s_un, &len); + c = accept(s, (struct sockaddr *) &s_un, (socklen_t *)&len); } else #endif { len = sizeof(sin); for ( c = -1, i = 0; (c < 0)&&(i = 10) ; i++ ) - c = accept(s, (struct sockaddr *) &sin, &len); + c = accept(s, (struct sockaddr *) &sin, (socklen_t *)&len); } if ( i == 10 ) c = -1;