Merge branch 'master' into wip/win32-port2
This commit is contained in:
@@ -329,7 +329,7 @@ main(int argc, char **argv)
|
||||
#endif
|
||||
|
||||
if(interactive_flag)
|
||||
mini_inetd (port);
|
||||
mini_inetd(port, NULL);
|
||||
|
||||
/*
|
||||
* LOG_NDELAY sets up the logging connection immediately,
|
||||
|
@@ -1252,7 +1252,7 @@ main(int argc, char **argv)
|
||||
err(1, "error opening %s", lf);
|
||||
}
|
||||
|
||||
mini_inetd(htons(port));
|
||||
mini_inetd(htons(port), NULL);
|
||||
fprintf(logfile, "connected\n");
|
||||
|
||||
{
|
||||
|
@@ -284,7 +284,7 @@ static int
|
||||
doit (int port, const char *service)
|
||||
{
|
||||
if (do_inetd)
|
||||
mini_inetd(port);
|
||||
mini_inetd(port, NULL);
|
||||
return proto (STDIN_FILENO, service);
|
||||
}
|
||||
|
||||
|
@@ -772,7 +772,7 @@ main (int argc, char **argv)
|
||||
}
|
||||
|
||||
if (!inetd_flag)
|
||||
mini_inetd (port);
|
||||
mini_inetd (port, NULL);
|
||||
|
||||
signal (SIGCHLD, childhandler);
|
||||
return doit(STDIN_FILENO, tcp_flag);
|
||||
|
@@ -301,7 +301,7 @@ pop_init(POP *p,int argcount,char **argmessage)
|
||||
portnum = p->kerberosp ?
|
||||
pop_getportbyname(p, "kpop", "tcp", 1109) :
|
||||
pop_getportbyname(p, "pop", "tcp", 110);
|
||||
mini_inetd (portnum);
|
||||
mini_inetd (portnum, NULL);
|
||||
}
|
||||
|
||||
/* Get the address and socket of the client to whom I am speaking */
|
||||
|
@@ -961,7 +961,7 @@ main(int argc, char **argv)
|
||||
errx (1, "getaddrinfo: %s", gai_strerror (error));
|
||||
}
|
||||
}
|
||||
mini_inetd_addrinfo (ai);
|
||||
mini_inetd_addrinfo (ai, NULL);
|
||||
freeaddrinfo(ai);
|
||||
}
|
||||
|
||||
|
@@ -370,7 +370,7 @@ main(int argc, char **argv)
|
||||
port = k_getportbyname("telnet", "tcp", htons(23));
|
||||
#endif
|
||||
}
|
||||
mini_inetd (port);
|
||||
mini_inetd (port, NULL);
|
||||
} else if (argc > 0) {
|
||||
usage(1);
|
||||
/* NOT REACHED */
|
||||
|
@@ -155,7 +155,7 @@ proto (int sock, const char *service)
|
||||
static int
|
||||
doit (int port, const char *service)
|
||||
{
|
||||
mini_inetd (port);
|
||||
mini_inetd (port, NULL);
|
||||
|
||||
return proto (STDIN_FILENO, service);
|
||||
}
|
||||
|
@@ -136,7 +136,6 @@ check_directory(krb5_context context,
|
||||
if((d = opendir(dirname)) == NULL)
|
||||
return errno;
|
||||
|
||||
#ifdef HAVE_DIRFD
|
||||
{
|
||||
int fd;
|
||||
struct stat st2;
|
||||
@@ -151,7 +150,6 @@ check_directory(krb5_context context,
|
||||
return EACCES;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
while((dent = readdir(d)) != NULL) {
|
||||
if(strcmp(dent->d_name, ".") == 0 ||
|
||||
|
66
lib/roken/dirent.hin
Normal file
66
lib/roken/dirent.hin
Normal file
@@ -0,0 +1,66 @@
|
||||
/***********************************************************************
|
||||
* Copyright (c) 2009, Secure Endpoints Inc.
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
*
|
||||
* - Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
*
|
||||
* - Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in
|
||||
* the documentation and/or other materials provided with the
|
||||
* distribution.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
|
||||
* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
|
||||
* COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
|
||||
* INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
|
||||
* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
|
||||
* STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
||||
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
|
||||
* OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*
|
||||
**********************************************************************/
|
||||
|
||||
#ifndef __DIRENT_H__
|
||||
#define __DIRENT_H__
|
||||
|
||||
#ifndef ROKEN_LIB_FUNCTION
|
||||
#ifdef _WIN32
|
||||
#define ROKEN_LIB_FUNCTION
|
||||
#define ROKEN_LIB_CALL __cdecl
|
||||
#else
|
||||
#define ROKEN_LIB_FUNCTION
|
||||
#define ROKEN_LIB_CALL
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#include<sys/types.h>
|
||||
|
||||
struct dirent {
|
||||
ino_t d_ino;
|
||||
char d_name[1];
|
||||
};
|
||||
|
||||
typedef struct _dirent_dirinfo DIR;
|
||||
|
||||
ROKEN_LIB_FUNCTION int ROKEN_LIB_CALL closedir(DIR *);
|
||||
|
||||
ROKEN_LIB_FUNCTION DIR * ROKEN_LIB_CALL opendir(const char *);
|
||||
|
||||
ROKEN_LIB_FUNCTION struct dirent * ROKEN_LIB_CALL readdir(DIR *);
|
||||
|
||||
ROKEN_LIB_FUNCTION void ROKEN_LIB_CALL rewinddir(DIR *);
|
||||
|
||||
ROKEN_LIB_FUNCTION void ROKEN_LIB_CALL seekdir(DIR *, long);
|
||||
|
||||
ROKEN_LIB_FUNCTION long ROKEN_LIB_CALL telldir(DIR *);
|
||||
|
||||
#endif
|
@@ -40,7 +40,11 @@
|
||||
|
||||
#include <ifaddrs.h>
|
||||
|
||||
<<<<<<< HEAD
|
||||
void
|
||||
=======
|
||||
static void
|
||||
>>>>>>> master
|
||||
print_addr(const char *s, struct sockaddr *sa)
|
||||
{
|
||||
int i;
|
||||
@@ -55,7 +59,11 @@ print_addr(const char *s, struct sockaddr *sa)
|
||||
printf("\n");
|
||||
}
|
||||
|
||||
<<<<<<< HEAD
|
||||
void
|
||||
=======
|
||||
static void
|
||||
>>>>>>> master
|
||||
print_ifaddrs(struct ifaddrs *x)
|
||||
{
|
||||
struct ifaddrs *p;
|
||||
@@ -79,7 +87,11 @@ main(int argc, char **argv)
|
||||
struct ifaddrs *addrs = NULL;
|
||||
int ret;
|
||||
|
||||
<<<<<<< HEAD
|
||||
if (SOCK_INIT)
|
||||
=======
|
||||
if (rk_SOCK_INIT())
|
||||
>>>>>>> master
|
||||
errx(1, "Couldn't initialize sockets. Err=%d\n", rk_SOCK_ERRNO);
|
||||
|
||||
ret = getifaddrs(&addrs);
|
||||
@@ -94,7 +106,7 @@ main(int argc, char **argv)
|
||||
/* Check that freeifaddrs doesn't crash */
|
||||
freeifaddrs(addrs);
|
||||
|
||||
if (SOCK_EXIT)
|
||||
if (rk_SOCK_EXIT())
|
||||
errx(1, "Couldn't uninitialize sockets. Err=%d\n", rk_SOCK_ERRNO);
|
||||
|
||||
return 0;
|
||||
|
@@ -63,7 +63,7 @@ accept_it (rk_socket_t s, rk_socket_t *ret_socket)
|
||||
dup2(fd, STDIN_FILENO);
|
||||
dup2(fd, STDOUT_FILENO);
|
||||
|
||||
closesocket(fd);
|
||||
rk_closesocket(as);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -114,13 +114,21 @@ mini_inetd_addrinfo (struct addrinfo *ai, rk_socket_t *ret_socket)
|
||||
socket_set_ipv6only(fds[i], 1);
|
||||
if (rk_IS_SOCKET_ERROR(bind (fds[i], a->ai_addr, a->ai_addrlen))) {
|
||||
warn ("bind af = %d", a->ai_family);
|
||||
<<<<<<< HEAD
|
||||
closesocket(fds[i]);
|
||||
=======
|
||||
rk_closesocket(fds[i]);
|
||||
>>>>>>> master
|
||||
fds[i] = rk_INVALID_SOCKET;
|
||||
continue;
|
||||
}
|
||||
if (rk_IS_SOCKET_ERROR(listen (fds[i], SOMAXCONN))) {
|
||||
warn ("listen af = %d", a->ai_family);
|
||||
<<<<<<< HEAD
|
||||
closesocket(fds[i]);
|
||||
=======
|
||||
rk_closesocket(fds[i]);
|
||||
>>>>>>> master
|
||||
fds[i] = rk_INVALID_SOCKET;
|
||||
continue;
|
||||
}
|
||||
@@ -148,7 +156,11 @@ mini_inetd_addrinfo (struct addrinfo *ai, rk_socket_t *ret_socket)
|
||||
if (FD_ISSET (fds[i], &read_set)) {
|
||||
accept_it (fds[i], ret_socket);
|
||||
for (i = 0; i < n; ++i)
|
||||
<<<<<<< HEAD
|
||||
closesocket(fds[i]);
|
||||
=======
|
||||
rk_closesocket(fds[i]);
|
||||
>>>>>>> master
|
||||
free(fds);
|
||||
return;
|
||||
}
|
||||
@@ -173,7 +185,11 @@ mini_inetd_addrinfo (struct addrinfo *ai, rk_socket_t *ret_socket)
|
||||
* @see mini_inetd_addrinfo()
|
||||
*/
|
||||
ROKEN_LIB_FUNCTION void ROKEN_LIB_CALL
|
||||
<<<<<<< HEAD
|
||||
mini_inetd (int port, rk_socket_t * ret_socket)
|
||||
=======
|
||||
mini_inetd(int port, rk_socket_t * ret_socket)
|
||||
>>>>>>> master
|
||||
{
|
||||
int error;
|
||||
struct addrinfo *ai, hints;
|
||||
|
@@ -56,6 +56,11 @@
|
||||
|
||||
#include<ws2tcpip.h>
|
||||
|
||||
/*
|
||||
* error codes for inet_ntop/inet_pton
|
||||
*/
|
||||
#define EAFNOSUPPORT WSAEAFNOSUPPORT
|
||||
|
||||
typedef SOCKET rk_socket_t;
|
||||
|
||||
#define rk_IS_BAD_SOCKET(s) ((s) == INVALID_SOCKET)
|
||||
@@ -84,8 +89,13 @@ typedef int rk_socket_t;
|
||||
#define rk_SOCK_ERRNO errno
|
||||
#define rk_INVALID_SOCKET (-1)
|
||||
|
||||
<<<<<<< HEAD
|
||||
#define rk_SOCK_INIT 0
|
||||
#define rk_SOCK_EXIT 0
|
||||
=======
|
||||
#define rk_SOCK_INIT() 0
|
||||
#define rk_SOCK_EXIT() 0
|
||||
>>>>>>> master
|
||||
|
||||
#endif
|
||||
|
||||
@@ -923,7 +933,11 @@ extern const char *__progname;
|
||||
#endif
|
||||
|
||||
ROKEN_LIB_FUNCTION void ROKEN_LIB_CALL
|
||||
<<<<<<< HEAD
|
||||
mini_inetd_addrinfo (struct addrinfo*, rk_socket *);
|
||||
=======
|
||||
mini_inetd_addrinfo (struct addrinfo*, rk_socket_t *);
|
||||
>>>>>>> master
|
||||
|
||||
ROKEN_LIB_FUNCTION void ROKEN_LIB_CALL
|
||||
mini_inetd (int, rk_socket_t *);
|
||||
|
@@ -303,7 +303,7 @@ socket_set_ipv6only (rk_socket_t sock, int val)
|
||||
*
|
||||
* While the socket handle in \a sock can be used with WinSock
|
||||
* functions after calling socket_to_fd(), it should not be closed
|
||||
* with closesocket(). The socket will be closed when the associated
|
||||
* with rk_closesocket(). The socket will be closed when the associated
|
||||
* file descriptor is closed.
|
||||
*/
|
||||
ROKEN_LIB_FUNCTION int ROKEN_LIB_CALL
|
||||
|
@@ -218,7 +218,7 @@ openlog( char* ident, int option, int facility )
|
||||
sa_local.sin_family = AF_INET;
|
||||
if( bind( syslog_socket, (SOCKADDR*) &sa_local, sizeof(SOCKADDR_IN) ) == 0 )
|
||||
break;
|
||||
closesocket( syslog_socket );
|
||||
rk_closesocket( syslog_socket );
|
||||
syslog_socket = INVALID_SOCKET;
|
||||
if( n == 100 )
|
||||
goto done;
|
||||
@@ -243,7 +243,7 @@ openlog( char* ident, int option, int facility )
|
||||
done:
|
||||
if( failed ) {
|
||||
if( syslog_socket != INVALID_SOCKET )
|
||||
closesocket( syslog_socket );
|
||||
rk_closesocket( syslog_socket );
|
||||
}
|
||||
syslog_opened = !failed;
|
||||
|
||||
|
@@ -87,7 +87,11 @@ get_connected_socket(rk_socket_t * s_ret)
|
||||
|
||||
done:
|
||||
if (!rk_IS_BAD_SOCKET(s))
|
||||
<<<<<<< HEAD
|
||||
closesocket(s);
|
||||
=======
|
||||
rk_closesocket(s);
|
||||
>>>>>>> master
|
||||
|
||||
if (ai)
|
||||
freeaddrinfo(ai);
|
||||
@@ -125,7 +129,11 @@ test_simple_echo_client(void)
|
||||
if (rk_IS_SOCKET_ERROR(rv)) {
|
||||
fprintf(stderr, "[%s] send() failure (%s)\n",
|
||||
getprogname(), strerror(rk_SOCK_ERRNO));
|
||||
<<<<<<< HEAD
|
||||
closesocket(s);
|
||||
=======
|
||||
rk_closesocket(s);
|
||||
>>>>>>> master
|
||||
return 1;
|
||||
}
|
||||
|
||||
@@ -133,25 +141,41 @@ test_simple_echo_client(void)
|
||||
if (rk_IS_SOCKET_ERROR(rv)) {
|
||||
fprintf (stderr, "[%s] recv() failure (%s)\n",
|
||||
getprogname(), strerror(rk_SOCK_ERRNO));
|
||||
<<<<<<< HEAD
|
||||
closesocket(s);
|
||||
=======
|
||||
rk_closesocket(s);
|
||||
>>>>>>> master
|
||||
return 1;
|
||||
}
|
||||
|
||||
if (rv == 0) {
|
||||
fprintf (stderr, "[%s] No data received\n", prog);
|
||||
<<<<<<< HEAD
|
||||
closesocket(s);
|
||||
=======
|
||||
rk_closesocket(s);
|
||||
>>>>>>> master
|
||||
return 1;
|
||||
}
|
||||
|
||||
if (rv != strlen(test_strings[i])) {
|
||||
fprintf (stderr, "[%s] Data length mismatch %d != %d\n", prog, rv, strlen(test_strings[i]));
|
||||
<<<<<<< HEAD
|
||||
closesocket(s);
|
||||
=======
|
||||
rk_closesocket(s);
|
||||
>>>>>>> master
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
|
||||
fprintf (stderr, "[%s] Done\n", prog);
|
||||
<<<<<<< HEAD
|
||||
closesocket(s);
|
||||
=======
|
||||
rk_closesocket(s);
|
||||
>>>>>>> master
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -198,7 +222,11 @@ test_simple_echo_socket(void)
|
||||
if (!strcmp(buf, "exit")) {
|
||||
fprintf(stderr, "[%s] Exiting...\n", prog);
|
||||
shutdown(s, SD_SEND);
|
||||
<<<<<<< HEAD
|
||||
closesocket(s);
|
||||
=======
|
||||
rk_closesocket(s);
|
||||
>>>>>>> master
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
@@ -208,7 +236,11 @@ test_simple_echo_socket(void)
|
||||
strerror(rk_SOCK_ERRNO));
|
||||
}
|
||||
|
||||
<<<<<<< HEAD
|
||||
closesocket(s);
|
||||
=======
|
||||
rk_closesocket(s);
|
||||
>>>>>>> master
|
||||
}
|
||||
|
||||
return 1;
|
||||
|
Reference in New Issue
Block a user