diff --git a/build/exe/doliwamp/Makefile b/build/exe/doliwamp/Makefile
new file mode 100644
index 0000000000000000000000000000000000000000..eeefdabcf7383c7431f3597b1125965af0ed462e
--- /dev/null
+++ b/build/exe/doliwamp/Makefile
@@ -0,0 +1,145 @@
+#-------------------------------------------------------------------#
+# Makefile
+#-------------------------------------------------------------------#
+#       1.0     Laurent Destailleur     Creation 
+#       1.1     Works with VC++ and gcc, Windows and Unix
+#-------------------------------------------------------------------#
+
+
+# Project options
+#-----------------
+
+# "GCC" to use GNU C++ compiler, "VC" to use Microsoft Visual C+
+COMP=GCC
+# DEBUG=1 for debug
+DEBUG=0
+
+# Directories
+SRCDIR  = ./
+RUNDIR  = ./
+INCDIR  = ./
+LIBDIR  = ./
+INCLUDES= -I$(INCDIR)
+LIBS    = -L$(LIBDIR) -L../lib
+
+# Program files to build        (Ex: $(RUNDIR)prog)
+PROGRAM = $(RUNDIR)UsedPort
+# Object files to build         (Ex: $(LIBDIR)yyy.o $(LIBDIR)zzz.o ...)
+OBJLIST = $(LIBDIR)UsedPort.o$(BJ)
+
+# Archive file for o files      (Ex: $(LIBDIR)libxxx.a)
+ifeq "$(OS)" "Windows_NT"
+ARCHIVE = "mylib.a"
+else
+ARCHIVE = "mylib.a"
+endif
+
+# Compiler options
+#-----------------
+# Compilation par gcc
+ifeq "$(COMP)" "GCC"
+CC              = gcc
+CPP             = g++
+RSC             = g++
+AR              = ar r
+OUT=-o
+ifeq "$(DEBUG)" "1"
+COPTIONS=-Wall -g -DDEBUG
+else
+COPTIONS=-O3
+endif
+ifeq "$(OS)" "Windows_NT"
+LOPTIONS=-lwsock32
+endif
+ifeq "$(MACHTYPE)" "sparc"
+LOPTIONS=-lsocket
+endif
+ifeq "$(PROCESSOR_ARCHITECTURE)" "x86"
+LOPTIONS2=-m486
+endif
+endif
+
+# Compilation par vc
+ifeq "$(COMP)" "VC"
+CC              = cl.exe
+CPP             = cl.exe
+RSC             = rc.exe
+ifeq "$(COMP)" "GCC"
+COPTIONS= /nologo /ML /W3 /O2 /Yd /D "DEBUG" /D "WIN32" /D "_CONSOLE" /c
+else
+COPTIONS= /nologo /G4 /D "NDEBUG" /D "WIN32" /D "_CONSOLE" /c
+endif
+LOPTIONS= /nologo kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib\
+ advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib\
+ odbccp32.lib wsock32.lib
+BJ              = bj
+OUT=/Fo
+endif
+
+
+
+# New rules
+#-----------------
+ifeq "$(OS)" "Windows_NT"
+RM              = rm -f
+CFLAGS  = $(COPTIONS) $(INCLUDES) -Ic:/langages/gcc/i386-mingw32/include/windows32
+else
+RM              = rm -f
+CFLAGS  = $(COPTIONS) $(INCLUDES)
+endif
+LDFLAGS = $(LOPTIONS) $(LOPTIONS2) $(LIBS)
+
+$(LIBDIR)%.o: %.cpp
+	@echo ----- Compilation C++ par $(COMP) - $@
+	$(CPP) -c $(CFLAGS) $(SRC)$< $(OUT)$@
+#       @echo ----- Archivage en $(ARCHIVE)
+#       $(AR) $(ARCHIVE) $@
+
+$(LIBDIR)%.obj: %.cpp
+	@echo ----- Compilation C++ par $(COMP) - $@
+	$(CPP) -c $(CFLAGS) $(SRC)$< $(OUT)$@
+#       @echo ----- Archivage en $(ARCHIVE)
+#       $(AR) $(ARCHIVE) $@
+ 
+$(LIBDIR)%.o: %.c
+	@echo ----- Compilation C   par $(COMP) - $@
+	$(CC) -c $(CFLAGS) $(SRC)$< $(OUT)$@
+#       @echo ----- Archivage en $(ARCHIVE)
+#       $(AR) $(ARCHIVE) $@
+
+$(LIBDIR)%.obj: %.c
+	@echo ----- Compilation C   par $(COMP) - $@
+	$(CC) -c $(CFLAGS) $(SRC)$< $(OUT)$@
+#       @echo ----- Archivage en $(ARCHIVE)
+#       $(AR) $(ARCHIVE) $@
+
+
+
+# Targets
+#-----------------
+
+# Default target                (Ex: $(PROGRAM) or $(OBJLIST))
+all:	$(PROGRAM)
+
+# Program (if PROGRAM is just one exe)
+#$(PROGRAM1): $(OBJLIST1)
+#	@echo ----- Link - $@
+#	rm -f $(RUNDIR)$@
+#	$(CC) -o $(RUNDIR)$@ $(OBJLIST) $(LDFLAGS) $(ARCHIVE)
+
+# Program (if PROGRAM are several exe)
+$(PROGRAM): $(OBJLIST)
+	@echo ----- Link - $@
+	rm -f $(RUNDIR)$@
+#	$(CC) -o $(RUNDIR)$@ $(LIBDIR)$@.o$(BJ) $(LDFLAGS) $(ARCHIVE)
+	$(CC) -o $(RUNDIR)$@ $(LIBDIR)$@.o$(BJ) $(LDFLAGS)
+
+# Clean
+clean:
+	@echo ----- Clean
+	$(RM) $(LIBDIR)*.a $(LIBDIR)*.o $(LIBDIR)*.obj $(RUNDIR)core $(OBJLIST)
+
+
+# Dependencies xxx.o: xxx.c xxxa.h xxxb.h
+#$(LIBDIR)UsedPort.o: $(SRCDIR)UsedPort.cpp
+#$(LIBDIR)SendMess.o: $(SRCDIR)SendMess.cpp
diff --git a/build/exe/doliwamp/UsedPort.cpp b/build/exe/doliwamp/UsedPort.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..1b334a8336c5afe6e8221d3aa2fba7999e65e13b
--- /dev/null
+++ b/build/exe/doliwamp/UsedPort.cpp
@@ -0,0 +1,371 @@
+//---------------------------------------------------------------------------
+// GetMess
+//
+// Get mails of POP3 account from command line or from a HTTP form (use CGI GET or POST method)
+// It applies to the RFC 821 and RFC 822 specs 
+// It supports MIME 1.0 encoding of European national characters.
+//
+// Tested with :
+// VC++ 4.0		(WIN32)
+// GCC 2.8.1	(WIN32)
+// GCC 2.7.3	(Aix 4.x)
+// GCC 2.9		(Linux 2.0.x)
+//---------------------------------------------------------------------------
+// 08/01/99	1.1		Laurent Destailleur	Creation
+// 15/10/99	1.2		Allow to delete several messages in action command
+// 29/12/99	1.8		Use now good fonctions base64_decode and quoted_decode
+//---------------------------------------------------------------------------
+// Required field if used as a CGI-BIN application:
+// HOST    = POP3 Server name
+// USER    = EMail POP3 account
+// PASSWD  = EMail POP3 password
+//
+// Optionnal fields if used as a CGI-BIN application:
+// ACTION  = Action to do (l,g,d)
+// LANG	   = Language of messages
+//---------------------------------------------------------------------------
+#define PROG	"UsedPort"
+#define VERSION	"1.0"
+
+#include <string.h>
+#include <stdio.h>
+#include <ctype.h>
+#include <stdlib.h>
+#include <time.h>
+#include <malloc.h>
+#include <memory.h>
+
+#ifndef _WIN32
+// Pour Unix
+#include <sys/socket.h>
+#include <netinet/in.h>
+#include <netdb.h>
+#include <unistd.h>
+#define SOCKET int			// Non defini sous Unix
+#define INVALID_SOCKET (SOCKET)(~0)	// Non defini sous Unix
+#define SOCKADDR_IN struct sockaddr_in	// Non defini sous Unix
+#define LPHOSTENT struct hostent *	// Non defini sous Unix
+#define MAXHOSTNAMELEN 256
+#endif
+#ifdef _WIN32
+#ifdef _MSC_VER
+// Pour VC++
+#include <direct.h>
+#include <winsock.h>
+#define MAXHOSTNAMELEN 256
+#endif
+#ifdef __GNUC__
+// Pour GCC WIN32 CYGWIN
+#include <winsock.h>
+#include <mingw32/dir.h>
+// Pour GCC WIN32 EGCS
+//#include <base.h>
+//#include <defines.h>
+//#include <structures.h>
+//#include <sockets.h>	// Fichier a modifier sous GCC WIN32 pour contourner bug !!!
+//#include <functions.h>
+#endif
+#endif
+
+
+
+#define MAX_ENTRIES 10					// SUBJECT, HOST, USER, PASSWD
+#define MAX_MAILS 	100					// Nb max of mails managed
+#define FILEINI "awmess.conf"
+#define SIZE_RECEIVE_BUFFER 4096		// Ko
+#define SIZE_BLOCK_FILELIST 256			// Size of block used to extend by alloc/realloc files list string
+
+#define UNKNOWN_ERROR 1
+#define BAD_ACTION 2
+#define BAD_PASSWORD  3
+#define FAILED_TO_START_SOCKETS 4
+#define FAILED_TO_RESOLVE_HOST 5
+#define FAILED_TO_OBTAIN_SOCKET_HANDLE 6
+#define FAILED_TO_CONNECT 7
+#define FAILED_TO_SEND 8
+#define FAILED_TO_RECEIVE 9
+#define SERVER_ERROR 10
+#define FAILED_TO_GET_HOSTNAME 11
+#define OUT_OF_MEMORY 12
+#define FAILED_TO_PARSE_CGI 13
+#define NB_OF_MAILS 14
+#define SIZE_OF_MAILS 15
+#define BAD_USER 16
+#define BAD_HOST 17
+#define TO_MANY_MAILS 18
+#define MAIL_UNKNOWN 19
+#define BAD_CGIEXE 20
+#define MAIL_DELETED 21
+#define BAD_FORMAT_MAIL 22
+
+#define SIZE_TEXT 23
+#define FROM_TEXT 24
+#define SUBJECT_TEXT 25
+#define ATTACHED_FILE_TEXT 26
+#define NONE_TEXT 27
+#define DELETE_TEXT 28
+
+
+// Types
+typedef struct {
+	char *mail;
+	unsigned long int size;
+	char *received_time;
+	char *subject;
+	char *return_path;
+	char *from;
+	char *status;
+	char *mime_version;
+	char *files;
+} mailentry;
+
+typedef struct {
+    char *name;
+    char *val;
+} entry;
+
+
+// Variables
+entry entries[MAX_ENTRIES];				// Tab of CGI entries		First=0
+mailentry tabmails[MAX_MAILS+1];		// Tab of mails entries		First=1
+
+
+int  iRet;
+int  iNbUnread;						// Nb of unread mails
+unsigned long int lSizeUnread;		// Size of all unread mails
+int  Port=0;					
+char Host[MAXHOSTNAMELEN]="";
+#ifdef _WIN32
+WSADATA Data;
+#endif
+
+// Functions
+void chartospace(char *str,char c);
+int mail_connect();
+int Ack(SOCKET sc);
+int Ack_Stat(SOCKET sc,int *iNbUnread,unsigned long int *lSizeUnread);
+int Ack_Mail(SOCKET sc,int mailcpt,const unsigned long int liMailSize);
+int DoQuit(int iRet);
+char *cgiLookup(char *tag,char *default_tag);
+
+
+
+
+void chartospace(char *str,char c)
+//---------------------------------------------------------------------------
+// Replace c char by space char in str string
+//---------------------------------------------------------------------------
+{
+    register int x;
+    for (x=0;str[x];x++) if(str[x] == c) str[x] = ' ';
+}
+
+char x2c(const char *what) 
+//---------------------------------------------------------------------------
+// Convert a string "XX" in a the char with XX ASCII value
+//---------------------------------------------------------------------------
+{
+    register char digit;
+    digit = (what[0] >= 'A' ? ((what[0] & 0xDF) - 'A')+10 : (what[0] - '0'));
+    digit = digit << 4;
+    digit += (what[1] >= 'A' ? ((what[1] & 0xDF) - 'A')+10 : (what[1] - '0'));
+    return(digit);
+}
+
+
+int printline(const char *s)
+//---------------------------------------------------------------------------
+// Print string s on stdout (Don't touch <> tags)
+//---------------------------------------------------------------------------
+{
+	int taghtml=0;
+	for (size_t i=0;i<strlen(s);i++) {
+		if (s[i]=='<') ++taghtml;
+		if (s[i]=='>') --taghtml;
+		else printf("%c",s[i]);
+	}
+	return(0);
+}
+
+
+int DoQuit(int iRet)
+//---------------------------------------------------------------------------
+// Show result
+//---------------------------------------------------------------------------
+{
+	printf("Return code = %d\n",iRet);
+	return(iRet);
+}
+
+
+int testConnect()
+//---------------------------------------------------------------------------
+// Init socket, get list of mails
+//---------------------------------------------------------------------------
+{
+	SOCKET sc;
+	char bold[4],unbold[5];
+	char s[2048],t[256];
+	int i,firstmail,lastmail,mailcpt;
+	
+	strcpy(bold,"");strcpy(unbold,"");
+
+startgetmess:
+
+	//***** Get mailfile
+#ifdef _WIN32
+	if (WSAStartup(MAKEWORD(1, 1), &Data) != 0) return(DoQuit(FAILED_TO_START_SOCKETS));
+#endif
+
+	//***** Create Socket
+	printf("Create socket: socket(PF_INET,SOCK_STREAM)\n");
+	if ((sc = socket(PF_INET,SOCK_STREAM,0)) == INVALID_SOCKET)
+	{
+		return(DoQuit(FAILED_TO_OBTAIN_SOCKET_HANDLE));
+	}
+
+	//***** Resolve the servers IP
+	printf("Resolve IP address for: %s\n",Host);
+	struct hostent *adr;
+	adr = gethostbyname(Host);
+	if (!adr)
+	{
+		return(DoQuit(FAILED_TO_RESOLVE_HOST));
+	}
+	
+	//***** Connect to server
+	SOCKADDR_IN sin;
+	sin.sin_port = htons((u_short) Port);
+	sin.sin_family = adr->h_addrtype;
+	memcpy((char *) &sin.sin_addr, adr->h_addr, adr->h_length);
+	char AddrHexa[9];
+	sprintf(AddrHexa,"%08lX",* (unsigned long int *) &sin.sin_addr);
+	AddrHexa[8]=0;
+	printf("Connect socket to: %s\n",AddrHexa);
+#ifdef _WIN32
+	if (connect(sc,(LPSOCKADDR) &sin,sizeof(sin)))
+#else
+	if (connect(sc,(const struct sockaddr *) &sin,sizeof(sin))) 
+#endif
+	{
+		return(DoQuit(FAILED_TO_CONNECT));
+	}
+
+	//***** Server welcome message
+//	if ((iRet=Ack(sc))) {
+//		return(DoQuit(iRet));
+//	}
+
+
+	//***** Disconect
+	return(DoQuit(0));
+}
+
+
+
+int Ack(SOCKET sc)
+//---------------------------------------------------------------------------
+// Function	: Get POP response from the server.
+// Input 	: sc
+// Return	: O = Ok, >0 = Error
+//---------------------------------------------------------------------------
+{
+	static char *buf;
+	unsigned long int liSizeOfMail=SIZE_RECEIVE_BUFFER;
+	int rlen;
+	int Received = 0;
+
+	if (!buf) 
+		if ((buf = (char *) malloc(liSizeOfMail+1)) == NULL) // The first time, create buf
+			return(OUT_OF_MEMORY);
+again:
+	if ((rlen = recv(sc,buf+Received,liSizeOfMail-Received,0)) < 1) {
+		return(FAILED_TO_RECEIVE);	// Possible when pop server refuses client
+	}
+
+	buf[Received+rlen] = 0;
+	Received += rlen;
+
+	// Check for newline
+	if ((buf[Received-2] != '\r') || (buf[Received-1] != '\n'))	{
+		goto again; 		// Incomplete data. Line must be terminated by CRLF
+	}
+	return((buf[0] == '-')?1:0);
+}
+
+
+
+int main(int argc, char **argv)
+//---------------------------------------------------------------------------
+// MAIN
+//---------------------------------------------------------------------------
+{
+
+// Exploite parametres
+//--------------------
+int noarg,curseurarg,help=0,invalide=0;
+char option;
+
+for (noarg=1;noarg<argc;noarg++) {
+	if (((argv[noarg][0])=='/') || ((argv[noarg][0])=='-')) {
+		option=(argv[noarg][1] | 0x20);
+		curseurarg=2;
+		if (strlen(argv[noarg]) < 3) { ++noarg; curseurarg=0; }
+		switch (option) {
+			case 's': strncpy(Host,argv[noarg]+curseurarg,sizeof(Host)); break;
+			case 'p': Port=atoi(argv[noarg]+curseurarg); break;
+			case '?': help=-1;break;											// Help
+			case 'h': help=-1;break;											// Help
+			case 'v': help=-1;break;											// Help
+			default: invalide=-1;break;
+		}
+	}
+}
+
+help=!(Port > 0);
+
+// Affiche en-tete
+//----------------
+Usage:
+if (help) {
+	printf("----- %s V%s (c)Laurent Destailleur -----\n",PROG,VERSION);
+	printf("%s is a software that allows you to know if a TCP/IP port is used\n",PROG);
+	printf("%s sources can be compiled for WIN32 (VC++ or GCC) or for Unix/Linux (GCC)\n",PROG);
+	printf("\n");
+}
+
+if (help|invalide) {
+	if (invalide) printf("----- %s V%s (c)Laurent Destailleur 2009 -----\n",PROG,VERSION);
+	printf("Usage: %s params [options]\n",PROG);
+	printf("Params:\n");
+	printf("  -s Host                Server to test\n");
+	printf("  -p Port                Port to test\n");
+	printf("Options:\n");
+	printf("  -v                     Print version and help information\n");
+	printf("  -help                  Print version and help information\n");
+	printf("\n");
+	exit(0);
+}
+	
+
+
+// If HTMLxxx is a file
+//---------------------
+printf("Port=%d\n",Port);
+printf("Host=%s\n",Host);
+
+
+// Check parameters
+//-----------------
+if (Host[0]==0) {
+	invalide=-1;
+	goto Usage;
+}
+
+
+// Action
+//-------
+iRet=testConnect();
+
+return(iRet);
+}
diff --git a/build/exe/doliwamp/UsedPort.exe b/build/exe/doliwamp/UsedPort.exe
new file mode 100644
index 0000000000000000000000000000000000000000..5ac48f19b4d0cebb2468d48ac635d36d7f465d32
Binary files /dev/null and b/build/exe/doliwamp/UsedPort.exe differ
diff --git a/build/exe/doliwamp/cygwin1.dll b/build/exe/doliwamp/cygwin1.dll
new file mode 100644
index 0000000000000000000000000000000000000000..0296b95d7fb65ca9475df4c28c9354f3e61ecf48
Binary files /dev/null and b/build/exe/doliwamp/cygwin1.dll differ