Merge branch 'master' into wip/win32-port2

This commit is contained in:
Love Hornquist Astrand
2009-11-24 21:46:10 -08:00
16 changed files with 153 additions and 15 deletions

View File

@@ -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,

View File

@@ -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");
{

View File

@@ -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);
}

View File

@@ -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);

View File

@@ -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 */

View File

@@ -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);
}

View File

@@ -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 */

View File

@@ -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);
}

View File

@@ -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
View 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

View File

@@ -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;

View File

@@ -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;

View File

@@ -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 *);

View File

@@ -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

View File

@@ -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;

View File

@@ -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;