more fixes, should work now
This commit is contained in:
		| @@ -17,11 +17,13 @@ add_library(libircclient | ||||
| 	./libircclient/src/errors.c | ||||
| 	./libircclient/src/libircclient.c | ||||
| 	./libircclient/src/params.h | ||||
| 	./libircclient/src/portable.h | ||||
| 	./libircclient/src/portable.c | ||||
| 	./libircclient/src/session.h | ||||
| 	./libircclient/src/sockets.c | ||||
| 	./libircclient/src/sockets.h | ||||
| 	./libircclient/src/ssl.h | ||||
| 	./libircclient/src/ssl.c | ||||
| 	./libircclient/src/utils.c | ||||
| 	./libircclient/src/utils.h | ||||
| ) | ||||
|  | ||||
| target_include_directories(libircclient PUBLIC ./libircclient/include) | ||||
|   | ||||
| @@ -16,6 +16,11 @@ | ||||
| #define LIBIRC_DCC_SENDFILE		2 | ||||
| #define LIBIRC_DCC_RECVFILE		3 | ||||
|  | ||||
| #include "./session.h" | ||||
| #include "./utils.h" | ||||
|  | ||||
| #include <stdio.h> | ||||
| #include <string.h> | ||||
|  | ||||
| static irc_dcc_session_t * libirc_find_dcc_session (irc_session_t * session, irc_dcc_t dccid, int lock_list) | ||||
| { | ||||
| @@ -54,7 +59,7 @@ static void libirc_dcc_destroy_nolock (irc_session_t * session, irc_dcc_t dccid) | ||||
| } | ||||
|  | ||||
|  | ||||
| static void libirc_remove_dcc_session (irc_session_t * session, irc_dcc_session_t * dcc, int lock_list) | ||||
| void libirc_remove_dcc_session (irc_session_t * session, irc_dcc_session_t * dcc, int lock_list) | ||||
| { | ||||
| 	if ( dcc->sock >= 0 ) | ||||
| 		socket_close (&dcc->sock); | ||||
| @@ -91,7 +96,7 @@ static void libirc_remove_dcc_session (irc_session_t * session, irc_dcc_session_ | ||||
| } | ||||
|  | ||||
|  | ||||
| static void libirc_dcc_add_descriptors (irc_session_t * ircsession, fd_set *in_set, fd_set *out_set, int * maxfd) | ||||
| void libirc_dcc_add_descriptors (irc_session_t * ircsession, fd_set *in_set, fd_set *out_set, int * maxfd) | ||||
| { | ||||
| 	irc_dcc_session_t * dcc, *dcc_next; | ||||
| 	time_t now = time (0); | ||||
| @@ -208,7 +213,7 @@ static void libirc_dcc_add_descriptors (irc_session_t * ircsession, fd_set *in_s | ||||
| } | ||||
|  | ||||
|  | ||||
| static void libirc_dcc_process_descriptors (irc_session_t * ircsession, fd_set *in_set, fd_set *out_set) | ||||
| void libirc_dcc_process_descriptors (irc_session_t * ircsession, fd_set *in_set, fd_set *out_set) | ||||
| { | ||||
| 	irc_dcc_session_t * dcc; | ||||
|  | ||||
| @@ -710,7 +715,7 @@ int irc_dcc_msg	(irc_session_t * session, irc_dcc_t dccid, const char * text) | ||||
| } | ||||
|  | ||||
|  | ||||
| static void libirc_dcc_request (irc_session_t * session, const char * nick, const char * req) | ||||
| void libirc_dcc_request (irc_session_t * session, const char * nick, const char * req) | ||||
| { | ||||
| 	char filenamebuf[256]; | ||||
| 	unsigned long ip, size; | ||||
|   | ||||
| @@ -15,6 +15,13 @@ | ||||
| #ifndef INCLUDE_IRC_DCC_H | ||||
| #define INCLUDE_IRC_DCC_H | ||||
|  | ||||
| #include <stdio.h> | ||||
|  | ||||
| #include "../include/libircclient.h" | ||||
|  | ||||
| #include "./sockets.h" | ||||
| #include "./portable.h" | ||||
| #include "./params.h" | ||||
|  | ||||
| /* | ||||
|  * This structure keeps the state of a single DCC connection. | ||||
| @@ -50,5 +57,9 @@ struct irc_dcc_session_s | ||||
| 	irc_dcc_callback_t		cb; | ||||
| }; | ||||
|  | ||||
| void libirc_remove_dcc_session (irc_session_t * session, irc_dcc_session_t * dcc, int lock_list); | ||||
| void libirc_dcc_add_descriptors (irc_session_t * ircsession, fd_set *in_set, fd_set *out_set, int * maxfd); | ||||
| void libirc_dcc_request (irc_session_t * session, const char * nick, const char * req); | ||||
| void libirc_dcc_process_descriptors (irc_session_t * ircsession, fd_set *in_set, fd_set *out_set); | ||||
|  | ||||
| #endif /* INCLUDE_IRC_DCC_H */ | ||||
|   | ||||
| @@ -12,6 +12,9 @@ | ||||
|  * License for more details. | ||||
|  */ | ||||
|  | ||||
| #include "../include/libircclient.h" | ||||
| #include "./session.h" | ||||
|  | ||||
| static const char * libirc_strerror[LIBIRC_ERR_MAX] = | ||||
| { | ||||
| 	"No error", | ||||
|   | ||||
| @@ -14,17 +14,19 @@ | ||||
|  | ||||
| #define IS_DEBUG_ENABLED(s)	((s)->options & LIBIRC_OPTION_DEBUG) | ||||
|  | ||||
| #include "portable.c" | ||||
| #include "sockets.c" | ||||
| #include "./portable.h" | ||||
| #include "./sockets.h" | ||||
|  | ||||
| #include "libircclient.h" | ||||
| #include "session.h" | ||||
| #include "../include/libircclient.h" | ||||
| #include "./session.h" | ||||
|  | ||||
| #include "utils.c" | ||||
| #include "errors.c" | ||||
| #include "colors.c" | ||||
| #include "dcc.c" | ||||
| #include "ssl.c" | ||||
| #include "./utils.h" | ||||
| /*#include "errors.c"*/ | ||||
| /*#include "colors.c"*/ | ||||
| #include "./dcc.h" | ||||
| /*#include "dcc.c"*/ | ||||
| /*#include "ssl.c"*/ | ||||
| #include "./ssl.h" | ||||
|  | ||||
|  | ||||
| #ifdef _MSC_VER | ||||
|   | ||||
| @@ -12,121 +12,7 @@ | ||||
|  * License for more details. | ||||
|  */ | ||||
|  | ||||
| #if !defined (_WIN32) | ||||
| 	#include "config.h" | ||||
| 	#include <stdio.h> | ||||
| 	#include <stdarg.h> | ||||
| 	#include <unistd.h> | ||||
| 	#include <string.h> | ||||
| 	#include <stdlib.h> | ||||
| 	#include <sys/stat.h> | ||||
| 	#include <sys/types.h> | ||||
| 	#include <sys/socket.h> | ||||
| 	#include <netdb.h> | ||||
| 	#include <arpa/inet.h>	 | ||||
| 	#include <netinet/in.h> | ||||
| 	#include <fcntl.h> | ||||
| 	#include <errno.h> | ||||
| 	#include <ctype.h> | ||||
| 	#include <time.h> | ||||
|  | ||||
| 	#if defined (ENABLE_THREADS) | ||||
| 		#include <pthread.h> | ||||
| 		typedef pthread_mutex_t		port_mutex_t; | ||||
|  | ||||
| 		#if !defined (PTHREAD_MUTEX_RECURSIVE) && defined (PTHREAD_MUTEX_RECURSIVE_NP) | ||||
| 			#define PTHREAD_MUTEX_RECURSIVE		PTHREAD_MUTEX_RECURSIVE_NP | ||||
| 		#endif | ||||
| 	#endif  | ||||
| #else | ||||
| 	#include <winsock2.h> | ||||
| 	#include <ws2tcpip.h> | ||||
| 	#include <windows.h> | ||||
| 	#include <time.h> | ||||
| 	#include <stdio.h> | ||||
| 	#include <stdarg.h> | ||||
| 	#include <string.h> | ||||
| 	#include <stdlib.h> | ||||
| 	#include <sys/stat.h> | ||||
|  | ||||
| 	#if defined (ENABLE_THREADS) | ||||
| 		typedef CRITICAL_SECTION	port_mutex_t; | ||||
| 	#endif | ||||
|  | ||||
| 	#define inline | ||||
| 	#define snprintf			_snprintf | ||||
| 	#define vsnprintf			_vsnprintf | ||||
| 	#define strncasecmp			_strnicmp | ||||
| #endif | ||||
|  | ||||
|  | ||||
| #if defined (ENABLE_SSL) | ||||
| 	#include <openssl/ssl.h> | ||||
| 	#include <openssl/err.h> | ||||
| 	#include <openssl/rand.h> | ||||
| #endif | ||||
|  | ||||
|  | ||||
| #if defined (ENABLE_THREADS) | ||||
| static inline int libirc_mutex_init (port_mutex_t * mutex) | ||||
| { | ||||
| #if defined (_WIN32) | ||||
| 	InitializeCriticalSection (mutex); | ||||
| 	return 0; | ||||
| #elif defined (PTHREAD_MUTEX_RECURSIVE) | ||||
| 	pthread_mutexattr_t	attr; | ||||
|  | ||||
| 	return (pthread_mutexattr_init (&attr) | ||||
| 		|| pthread_mutexattr_settype (&attr, PTHREAD_MUTEX_RECURSIVE) | ||||
| 		|| pthread_mutex_init (mutex, &attr)); | ||||
| #else /* !defined (PTHREAD_MUTEX_RECURSIVE) */ | ||||
|  | ||||
| 	return pthread_mutex_init (mutex, 0); | ||||
|  | ||||
| #endif /* defined (_WIN32) */ | ||||
| } | ||||
|  | ||||
|  | ||||
| static inline void libirc_mutex_destroy (port_mutex_t * mutex) | ||||
| { | ||||
| #if defined (_WIN32) | ||||
| 	DeleteCriticalSection (mutex); | ||||
| #else | ||||
| 	pthread_mutex_destroy (mutex); | ||||
| #endif | ||||
| } | ||||
|  | ||||
|  | ||||
| static inline void libirc_mutex_lock (port_mutex_t * mutex) | ||||
| { | ||||
| #if defined (_WIN32) | ||||
| 	EnterCriticalSection (mutex); | ||||
| #else | ||||
| 	pthread_mutex_lock (mutex); | ||||
| #endif | ||||
| } | ||||
|  | ||||
|  | ||||
| static inline void libirc_mutex_unlock (port_mutex_t * mutex) | ||||
| { | ||||
| #if defined (_WIN32) | ||||
| 	LeaveCriticalSection (mutex); | ||||
| #else | ||||
| 	pthread_mutex_unlock (mutex); | ||||
| #endif | ||||
| } | ||||
|  | ||||
| #else | ||||
|  | ||||
| 	typedef void *	port_mutex_t; | ||||
|  | ||||
| 	static inline int libirc_mutex_init (port_mutex_t * mutex) { return 0; } | ||||
| 	static inline void libirc_mutex_destroy (port_mutex_t * mutex) {} | ||||
| 	static inline void libirc_mutex_lock (port_mutex_t * mutex) {} | ||||
| 	static inline void libirc_mutex_unlock (port_mutex_t * mutex) {} | ||||
|  | ||||
| #endif | ||||
|  | ||||
| #include "./portable.h" | ||||
|  | ||||
| /* | ||||
|  * Stub for WIN32 dll to initialize winsock API | ||||
|   | ||||
							
								
								
									
										133
									
								
								libircclient/src/portable.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										133
									
								
								libircclient/src/portable.h
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,133 @@ | ||||
| /*  | ||||
|  * Copyright (C) 2004-2012 George Yunaev gyunaev@ulduzsoft.com | ||||
|  * | ||||
|  * This library is free software; you can redistribute it and/or modify it  | ||||
|  * under the terms of the GNU Lesser General Public License as published by  | ||||
|  * the Free Software Foundation; either version 3 of the License, or (at your  | ||||
|  * option) any later version. | ||||
|  * | ||||
|  * This library is distributed in the hope that it will be useful, but WITHOUT  | ||||
|  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or  | ||||
|  * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU Lesser General Public  | ||||
|  * License for more details. | ||||
|  */ | ||||
|  | ||||
| #ifndef INCLUDE_IRC_PORTABLE_H | ||||
| #define INCLUDE_IRC_PORTABLE_H | ||||
|  | ||||
| #if !defined (_WIN32) | ||||
| 	//#include "config.h" | ||||
| 	#include <stdio.h> | ||||
| 	#include <stdarg.h> | ||||
| 	#include <unistd.h> | ||||
| 	#include <string.h> | ||||
| 	#include <stdlib.h> | ||||
| 	#include <sys/stat.h> | ||||
| 	#include <sys/types.h> | ||||
| 	#include <sys/socket.h> | ||||
| 	#include <netdb.h> | ||||
| 	#include <arpa/inet.h>	 | ||||
| 	#include <netinet/in.h> | ||||
| 	#include <fcntl.h> | ||||
| 	#include <errno.h> | ||||
| 	#include <ctype.h> | ||||
| 	#include <time.h> | ||||
|  | ||||
| 	#if defined (ENABLE_THREADS) | ||||
| 		#include <pthread.h> | ||||
| 		typedef pthread_mutex_t		port_mutex_t; | ||||
|  | ||||
| 		#if !defined (PTHREAD_MUTEX_RECURSIVE) && defined (PTHREAD_MUTEX_RECURSIVE_NP) | ||||
| 			#define PTHREAD_MUTEX_RECURSIVE		PTHREAD_MUTEX_RECURSIVE_NP | ||||
| 		#endif | ||||
| 	#endif  | ||||
| #else | ||||
| 	#include <winsock2.h> | ||||
| 	#include <ws2tcpip.h> | ||||
| 	#include <windows.h> | ||||
| 	#include <time.h> | ||||
| 	#include <stdio.h> | ||||
| 	#include <stdarg.h> | ||||
| 	#include <string.h> | ||||
| 	#include <stdlib.h> | ||||
| 	#include <sys/stat.h> | ||||
|  | ||||
| 	#if defined (ENABLE_THREADS) | ||||
| 		typedef CRITICAL_SECTION	port_mutex_t; | ||||
| 	#endif | ||||
|  | ||||
| 	#define inline | ||||
| 	#define snprintf			_snprintf | ||||
| 	#define vsnprintf			_vsnprintf | ||||
| 	#define strncasecmp			_strnicmp | ||||
| #endif | ||||
|  | ||||
|  | ||||
| #if defined (ENABLE_SSL) | ||||
| 	#include <openssl/ssl.h> | ||||
| 	#include <openssl/err.h> | ||||
| 	#include <openssl/rand.h> | ||||
| #endif | ||||
|  | ||||
|  | ||||
| #if defined (ENABLE_THREADS) | ||||
| static inline int libirc_mutex_init (port_mutex_t * mutex) | ||||
| { | ||||
| #if defined (_WIN32) | ||||
| 	InitializeCriticalSection (mutex); | ||||
| 	return 0; | ||||
| #elif defined (PTHREAD_MUTEX_RECURSIVE) | ||||
| 	pthread_mutexattr_t	attr; | ||||
|  | ||||
| 	return (pthread_mutexattr_init (&attr) | ||||
| 		|| pthread_mutexattr_settype (&attr, PTHREAD_MUTEX_RECURSIVE) | ||||
| 		|| pthread_mutex_init (mutex, &attr)); | ||||
| #else /* !defined (PTHREAD_MUTEX_RECURSIVE) */ | ||||
|  | ||||
| 	return pthread_mutex_init (mutex, 0); | ||||
|  | ||||
| #endif /* defined (_WIN32) */ | ||||
| } | ||||
|  | ||||
|  | ||||
| static inline void libirc_mutex_destroy (port_mutex_t * mutex) | ||||
| { | ||||
| #if defined (_WIN32) | ||||
| 	DeleteCriticalSection (mutex); | ||||
| #else | ||||
| 	pthread_mutex_destroy (mutex); | ||||
| #endif | ||||
| } | ||||
|  | ||||
|  | ||||
| static inline void libirc_mutex_lock (port_mutex_t * mutex) | ||||
| { | ||||
| #if defined (_WIN32) | ||||
| 	EnterCriticalSection (mutex); | ||||
| #else | ||||
| 	pthread_mutex_lock (mutex); | ||||
| #endif | ||||
| } | ||||
|  | ||||
|  | ||||
| static inline void libirc_mutex_unlock (port_mutex_t * mutex) | ||||
| { | ||||
| #if defined (_WIN32) | ||||
| 	LeaveCriticalSection (mutex); | ||||
| #else | ||||
| 	pthread_mutex_unlock (mutex); | ||||
| #endif | ||||
| } | ||||
|  | ||||
| #else | ||||
|  | ||||
| 	typedef void *	port_mutex_t; | ||||
|  | ||||
| 	static inline int libirc_mutex_init (port_mutex_t * mutex) { return 0; } | ||||
| 	static inline void libirc_mutex_destroy (port_mutex_t * mutex) {} | ||||
| 	static inline void libirc_mutex_lock (port_mutex_t * mutex) {} | ||||
| 	static inline void libirc_mutex_unlock (port_mutex_t * mutex) {} | ||||
|  | ||||
| #endif | ||||
|  | ||||
| #endif /* INCLUDE_IRC_PORTABLE_H */ | ||||
| @@ -17,9 +17,9 @@ | ||||
| #define INCLUDE_IRC_SESSION_H | ||||
|  | ||||
|  | ||||
| #include "params.h" | ||||
| #include "dcc.h" | ||||
| #include "libirc_events.h" | ||||
| #include "./params.h" | ||||
| #include "./dcc.h" | ||||
| #include "../include/libirc_events.h" | ||||
|  | ||||
|  | ||||
| // Session flags | ||||
|   | ||||
| @@ -12,6 +12,9 @@ | ||||
|  * License for more details. | ||||
|  */ | ||||
| 
 | ||||
| #ifndef INCLUDE_IRC_SOCKET_H | ||||
| #define INCLUDE_IRC_SOCKET_H | ||||
| 
 | ||||
| /*
 | ||||
|  * The sockets interface was moved out to simplify going OpenSSL integration. | ||||
|  */ | ||||
| @@ -159,3 +162,5 @@ static int socket_send (socket_t * sock, const void *buf, size_t len) | ||||
| 
 | ||||
| 	return length; | ||||
| } | ||||
| 
 | ||||
| #endif /* INCLUDE_IRC_SOCKET_H */ | ||||
| @@ -12,6 +12,10 @@ | ||||
|  * License for more details. | ||||
|  */ | ||||
|  | ||||
| #include "./ssl.h" | ||||
|  | ||||
| #include "../include/libircclient.h" | ||||
| #include "./session.h" | ||||
|  | ||||
| #if defined (ENABLE_SSL) | ||||
|  | ||||
| @@ -331,7 +335,7 @@ static int ssl_send( irc_session_t * session ) | ||||
| // Returns -1 in case there is an error and socket should be closed/connection terminated | ||||
| // Returns 0 in case there is a temporary error and the call should be retried (SSL_WANTS_WRITE case) | ||||
| // Returns a positive number if we actually read something | ||||
| static int session_socket_read( irc_session_t * session ) | ||||
| int session_socket_read( irc_session_t * session ) | ||||
| { | ||||
| 	int length; | ||||
|  | ||||
| @@ -365,7 +369,7 @@ static int session_socket_read( irc_session_t * session ) | ||||
| // Returns -1 in case there is an error and socket should be closed/connection terminated | ||||
| // Returns 0 in case there is a temporary error and the call should be retried (SSL_WANTS_WRITE case) | ||||
| // Returns a positive number if we actually sent something | ||||
| static int session_socket_write( irc_session_t * session ) | ||||
| int session_socket_write( irc_session_t * session ) | ||||
| { | ||||
| 	int length; | ||||
|  | ||||
|   | ||||
							
								
								
									
										23
									
								
								libircclient/src/ssl.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										23
									
								
								libircclient/src/ssl.h
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,23 @@ | ||||
| /* | ||||
|  * Copyright (C) 2004-2012 George Yunaev gyunaev@ulduzsoft.com | ||||
|  * | ||||
|  * This library is free software; you can redistribute it and/or modify it | ||||
|  * under the terms of the GNU Lesser General Public License as published by | ||||
|  * the Free Software Foundation; either version 3 of the License, or (at your | ||||
|  * option) any later version. | ||||
|  * | ||||
|  * This library is distributed in the hope that it will be useful, but WITHOUT | ||||
|  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or | ||||
|  * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU Lesser General Public | ||||
|  * License for more details. | ||||
|  */ | ||||
|  | ||||
| #include "./session.h" | ||||
|  | ||||
| #ifndef INCLUDE_IRC_SSL_H | ||||
| #define INCLUDE_IRC_SSL_H | ||||
|  | ||||
| int session_socket_read( irc_session_t * session ); | ||||
| int session_socket_write( irc_session_t * session ); | ||||
|  | ||||
| #endif /* INCLUDE_IRC_SSL_H */ | ||||
| @@ -12,6 +12,17 @@ | ||||
|  * License for more details. | ||||
|  */ | ||||
| 
 | ||||
| #ifndef INCLUDE_IRC_UTILS_H | ||||
| #define INCLUDE_IRC_UTILS_H | ||||
| 
 | ||||
| //#include <sys/select.h>
 | ||||
| 
 | ||||
| #include <stdio.h> | ||||
| #include <time.h> | ||||
| #include <string.h> | ||||
| 
 | ||||
| #include "./session.h" | ||||
| 
 | ||||
| static void libirc_add_to_set (int fd, fd_set *set, int * maxfd) | ||||
| { | ||||
| 	FD_SET (fd, set); | ||||
| @@ -128,3 +139,5 @@ static void libirc_event_ctcp_internal (irc_session_t * session, const char * ev | ||||
| 		} | ||||
| 	} | ||||
| } | ||||
| 
 | ||||
| #endif /* INCLUDE_IRC_UTILS_H */ | ||||
		Reference in New Issue
	
	Block a user