diff -u5Nr binkd.orig/!README.ASO4D.rus binkd.aso/!README.ASO4D.rus
--- binkd.orig/!README.ASO4D.rus	1970-01-01 00:00:00.000000000 +0000
+++ binkd.aso/!README.ASO4D.rus	2002-08-18 20:20:10.000000000 +0000
@@ -0,0 +1,48 @@
+    Readme для ASO-4D (AmigaDOS style outbound, 4D)
+
+    Awesome Walrus <walrus@amur.ru>, 2:5042/7@FIDOnet
+
+    Стал ставить новый ifmail (ветка Сергея Оскина), заметил в нем новую фичу
+- Amigados-4d-outbound - описание см. ниже. Hа вид понравилась, включил,
+перенес имеющийся outbound, новый ifmail зажужжал. Тут вдруг вспоминаю --
+у меня же и binkd работает, а откуда ему знать про такое? А откатываться уже
+трудно, пришлось избрать легкий путь: привинтить такую же возможность
+к binkd :)
+
+    Вот ее описание из самого ifmail:
+
+--- cut ../ifmail-2.14.os-p7-tma/ifmail-p7-Amigados-4d-outbound ---
+From: Sergey <Sergey@p500.f1354.n5020.z2.fidonet.org>
+Date: Fri, 11 Jun 99 15:40:53 +0400
+Subject: Amigados 4d outbound
+
+Всем желающим предлагается опробовать вариант BSO для мейлеров
+под AmigaDOS. IMHO он намного удобнее чем классический BSO:
+используется только _одна_ директория для outbound, в ней лежат
+файлы вида `z.n.f.p.ext', например:
+
+2.5020.1354.0.flo
+2.5020.1354.0.mo0
+999.9999.9999.0.sts
+
+и т.д.
+
+Патч взят из патча ifmail.sc (Автор -- Alexey Gretchaninov, 2:5010/81)
+с некоторыми изменениями. Hакладывается на ifmail-2.14.os-p7
+--- end cut ---
+
+    Патч сделан для binkd 0.9.2. Для задействования возможности добавьте
+-DAMIGADOS_4D_OUTBOUND в Makefile к DEFINES.
+
+    Об удачном, равно как и неудачном, опыте использования патча просьба
+ сообщать мне: walrus@amur.ru, 2:5042/7.
+
+/Awesome Walrus                                             12 июля 1999 г.
+
+* Mon Sep 27 1999
+- Поправил досадный глюк в формировании сетевого имени передаваемого файла.
+/Awesome Walrus
+
+* Mon Aug 19 2002
+- Патч наложен на binkd 0.9.5 текущей версии
+/Stas Degteff 2:5080/102@FIDOnet, <stas@grumbler.org>
diff -u5Nr binkd.orig/!README.FIX binkd.aso/!README.FIX
--- binkd.orig/!README.FIX	2002-08-18 21:07:06.000000000 +0000
+++ binkd.aso/!README.FIX	2002-08-18 19:37:46.000000000 +0000
@@ -493,5 +493,8 @@
 	New option deletedirs in binkd.cfg - delete empty point dirs in BSO.
 
 	Do not send empty (60-bytes) pkt files.
 
 	New option overwrite in binkd.cfg - overwrite older file by newer.
+
+	AmigaDOS-4D outbound support - enable on compile-time using parameter
+        -DAMIGADOS_4D_OUTBOUND for DEFINES macro in Makefile
diff -u5Nr binkd.orig/Config.h binkd.aso/Config.h
--- binkd.orig/Config.h	2001-12-25 17:13:16.000000000 +0000
+++ binkd.aso/Config.h	2002-08-18 20:15:04.000000000 +0000
@@ -52,13 +52,17 @@
 
 /* Please, no spaces here! */
 #define PRTCLNAME "binkp"
 #define PRTCLVER "1.1"
 #define MYNAME "binkd"
+#ifndef AMIGADOS_4D_OUTBOUND
 #define MYVER "0.9.5a"
+#else
+#define MYVER "0.9.5a/ASO-4D"
+#endif
 
-/* Enveronment */
+/* Environment */
 #define MAX_ENV_VAR_NAME 256
 #if defined(OS2) || defined(WIN32)
   #define PATH_SEPARATOR "\\"
 #else
   #define PATH_SEPARATOR "/"
diff -u5Nr binkd.orig/ftnaddr.c binkd.aso/ftnaddr.c
--- binkd.orig/ftnaddr.c	2001-01-10 12:12:38.000000000 +0000
+++ binkd.aso/ftnaddr.c	2002-08-18 19:31:58.000000000 +0000
@@ -227,10 +227,20 @@
   {
     *s = 0;
   }
   else
   {
+#ifdef AMIGADOS_4D_OUTBOUND
+#ifdef HAVE_SNPRINTF
+    snprintf(s, MAXPATHLEN,
+#else
+    sprintf(s,
+#endif
+       "%s%s%s%s%d.%d.%d.%d",
+       d->path, PATH_SEPARATOR, d->dir, PATH_SEPARATOR,
+       fa->z, fa->net, fa->node, fa->p);
+#else /* AMIGADOS_4D_OUTBOUND */
     char ext[] = "\0ext";	       /* ".ext" */
     char pnt[] = "\0pnt/0000xxxx";     /* ".pnt..." */
 
     if (fa->z != d->z[0])
       sprintf (ext, ".%03x", fa->z);
@@ -244,7 +254,8 @@
     sprintf(s,
 #endif
        "%s%s%s%s%s%04x%04x%s",
        d->path, PATH_SEPARATOR, d->dir, ext, PATH_SEPARATOR,
        fa->net, fa->node, pnt);
+#endif /* AMIGADOS_4D_OUTBOUND */
   }
 }
diff -u5Nr binkd.orig/ftnq.c binkd.aso/ftnq.c
--- binkd.orig/ftnq.c	2002-03-15 15:49:30.000000000 +0000
+++ binkd.aso/ftnq.c	2002-08-18 19:51:06.000000000 +0000
@@ -359,11 +359,11 @@
           strnzcat (buf, brakeExt[j].ext, sizeof (buf));
           q = q_scan_box (q, fa+i, buf, brakeExt[j].flv, deleteablebox);
           *s = '\0';
         }
       }
-        
+
       if (tfilebox[0]) {
         strnzcpy ( buf, tfilebox, sizeof (buf));
         strnzcat ( buf, PATH_SEPARATOR, sizeof (buf));
 #ifdef HAVE_SNPRINTF
         snprintf(buf + strlen(buf), sizeof(buf) - strlen(buf),
@@ -463,19 +463,67 @@
 static FTNQ *q_add_dir (FTNQ *q, char *dir, FTN_ADDR *fa1)
 {
   DIR *dp;
   FTN_ADDR fa2;
   char buf[MAXPATHLEN + 1];
+#ifndef AMIGADOS_4D_OUTBOUND
   int j;
+#endif
   char *s;
 
   if ((dp = opendir (dir)) != 0)
   {
     struct dirent *de;
 
     while ((de = readdir (dp)) != 0)
     {
+#ifdef AMIGADOS_4D_OUTBOUND
+      char ext[4];
+      int matched = 0;
+      size_t nlen = strlen(s = de->d_name);
+
+      for (; *s && isgraph(*s) != 0; s++);
+      if (s - de->d_name != nlen)
+       continue;
+
+      memcpy (&fa2, fa1, sizeof(FTN_ADDR));
+
+      if (sscanf(s = de->d_name, "%d.%d.%d.%d.%3s%n",
+                &fa2.z, &fa2.net, &fa2.node, &fa2.p, ext, &matched) != 5 ||
+         matched != nlen || strlen(ext) != 3)
+       continue;
+
+      if( fa1->z != fa2.z ||
+          (fa1->net != -1 && fa1->net != fa2.net) ||
+         (fa1->node != -1 && fa1->node != fa2.node) ||
+         (fa1->p != -1 && fa1->p != fa2.p) )
+       continue;
+
+      strnzcpy(buf, dir, sizeof(buf));
+      strnzcpy(buf + strlen(buf), PATH_SEPARATOR, sizeof(buf) - strlen(buf));
+      strnzcpy(buf + strlen(buf), s, sizeof(buf) - strlen(buf));
+
+      if (!STRICMP(ext, "bsy") || !STRICMP(ext, "csy"))
+       process_bsy(&fa2, buf);
+
+      if (!(get_node_info(&fa2) || is5D(fa1)))
+        continue;
+
+      if (strchr(out_flvrs, ext[0]) &&
+               tolower(ext[1]) == 'u' && tolower(ext[2]) == 't')
+       /* Adding *.?ut */
+       q = q_add_file(q, buf, &fa2, ext[0], 'd', 'm');
+      else if (!STRICMP(ext, "req"))
+       /* Adding *.req */
+       q = q_add_file(q, buf, &fa2, 'h', 's', 'r');
+      else if (!STRICMP(ext, "hld"))
+       process_hld(&fa2, buf);
+      else if (strchr(flo_flvrs, ext[0]) &&
+                     tolower(ext[1]) == 'l' && tolower(ext[2]) == 'o')
+       /* Adding *.?lo */
+       q = q_add_file(q, buf, &fa2, ext[0], 'd', 'l');
+#else /* AMIGADOS_4D_OUTBOUND */
       s = de->d_name;
 
       for (j = 0; j < 8; ++j)
 	if (!isxdigit (s[j]))
 	  break;
@@ -544,10 +592,11 @@
 	      }
 	    }
 	  }
 	}
       }
+#endif /* AMIGADOS_4D_OUTBOUND */
     }
     closedir (dp);
   }
   else
     Log (1, "cannot opendir %s: %s", dir, strerror (errno));
diff -u5Nr binkd.orig/mkfls/amiga/Makefile binkd.aso/mkfls/amiga/Makefile
--- binkd.orig/mkfls/amiga/Makefile	2001-02-14 18:00:00.000000000 +0000
+++ binkd.aso/mkfls/amiga/Makefile	2002-08-18 19:40:10.000000000 +0000
@@ -1,9 +1,13 @@
 # $Id: Makefile,v 2.1 2001/02/15 11:03:19 gul Exp $
 #
 CC=gcc
 DEFINES=-DHAVE_FORK -DAMIGA -DHAVE_SNPRINTF -DHAVE_UNISTD_H -DOS="\"Amiga\"" -DHAVE_WAITPID
+
+# Enable this for ASO-4D, not BSO
+#DEFINES+=-DAMIGADOS_4D_OUTBOUND
+
 CFLAGS=$(DEFINES) -Wall -resident -O
 SRCS=binkd.c readcfg.c tools.c ftnaddr.c ftnq.c client.c server.c protocol.c bsy.c inbound.c breaksig.c branch.c amiga/rename.c amiga/getfree.c ftndom.c ftnnode.c srif.c pmatch.c readflo.c prothlp.c iptools.c run.c binlog.c amiga/sem.c exitproc.c getw.c xalloc.c setpttl.c https.c md5b.c crypt.c
 OBJS=binkd.o readcfg.o tools.o ftnaddr.o ftnq.o client.o server.o protocol.o bsy.o inbound.o breaksig.o branch.o rename.o       getfree.o       ftndom.o ftnnode.o srif.o pmatch.o readflo.o prothlp.o iptools.o run.o binlog.o sem.o       exitproc.o getw.o xalloc.o setpttl.o https.o md5b.o crypt.o
 all: binkd
 .c.o:
diff -u5Nr binkd.orig/mkfls/nt95-mingw/Makefile binkd.aso/mkfls/nt95-mingw/Makefile
--- binkd.orig/mkfls/nt95-mingw/Makefile	2002-08-18 20:27:58.000000000 +0000
+++ binkd.aso/mkfls/nt95-mingw/Makefile	2002-08-18 20:27:40.000000000 +0000
@@ -2,10 +2,14 @@
 #
 SHELL=bash.exe
 
 CC=gcc
 DEFINES=-DHAVE_THREADS -DHAVE_SNPRINTF -DHAVE_UNISTD -DWIN32 -DHAVE_IO_H -DHAVE_WAITPID -DHTTPS -DNTLM
+
+# Enable this for ASO-4D, not BSO
+#DEFINES+=-DAMIGADOS_4D_OUTBOUND
+
 CFLAGS=$(DEFINES) -mno-cygwin -mthreads -Wall -funsigned-char -Wno-char-subscripts -s -O2
 NTLM_SRC=ntlm/des_enc.c ntlm/helpers.c ntlm/ecb_enc.c ntlm/md4_dgst.c ntlm/set_key.c
 SRCS=binkd.c readcfg.c tools.c ftnaddr.c ftnq.c client.c server.c protocol.c bsy.c inbound.c nt/breaksig.c branch.c nt/sem.c  ftndom.c ftnnode.c nt/getfree.c srif.c pmatch.c readflo.c prothlp.c iptools.c run.c binlog.c exitproc.c getw.c xalloc.c setpttl.c https.c md5b.c crypt.c nt/TCPErr.c nt/WSock.c nt/service.c $(NTLM_SRC)
 OBJS=${SRCS:.c=.o}
 
@@ -18,11 +22,11 @@
 	$(CC) $(CFLAGS) -o binkd.exe $(OBJS) -lwsock32
 
 install: all clean
 
 clean:
-	-del /n *.RES *.obj *.o nt\*.o *.map *~ *.bak *.b *.ini *.err core >nul 2> nul
+	-rm *.RES *.obj *.o ntlm/*.o  nt/*.o *.map *~ *.bak *.b *.ini *.err core >nul 2> nul
 
 depend	Makefile.dep:
 	gcc -MM $(CFLAGS) $(SRCS) | tee Makefile.dep
 
 include Makefile.dep
diff -u5Nr binkd.orig/mkfls/nt95-msvc/Makefile binkd.aso/mkfls/nt95-msvc/Makefile
--- binkd.orig/mkfls/nt95-msvc/Makefile	2001-07-27 18:00:00.000000000 +0000
+++ binkd.aso/mkfls/nt95-msvc/Makefile	2002-08-18 19:41:56.000000000 +0000
@@ -1,32 +1,32 @@
 # Microsoft Developer Studio Generated NMAKE File, Based on binkd.dsp
 # $Id: Makefile,v 2.4 2001/07/28 10:43:28 gul Exp $
 !IF "$(CFG)" == ""
 CFG=binkd - Win32 Release
 !MESSAGE No configuration specified. Defaulting to binkd - Win32 Release.
-!ENDIF 
+!ENDIF
 
 !IF "$(CFG)" != "binkd - Win32 Debug" && "$(CFG)" != "binkd - Win32 Release"
 !MESSAGE Invalid configuration "$(CFG)" specified.
 !MESSAGE You can specify a configuration when running NMAKE
 !MESSAGE by defining the macro CFG on the command line. For example:
-!MESSAGE 
+!MESSAGE
 !MESSAGE NMAKE CFG="binkd - Win32 Debug"
-!MESSAGE 
+!MESSAGE
 !MESSAGE Possible choices for configuration are:
-!MESSAGE 
-!MESSAGE "binkd - Win32 Debug"   
+!MESSAGE
+!MESSAGE "binkd - Win32 Debug"
 !MESSAGE "binkd - Win32 Release" (default)
-!MESSAGE 
+!MESSAGE
 !ERROR An invalid configuration is specified.
-!ENDIF 
+!ENDIF
 
 !IF "$(OS)" == "Windows_NT"
 NULL=
-!ELSE 
+!ELSE
 NULL=nul
-!ENDIF 
+!ENDIF
 
 !IF  "$(CFG)" == "binkd - Win32 Debug"
 
 OUTDIR=.\Debug
 INTDIR=.\Debug
@@ -117,25 +117,25 @@
 
 "$(OUTDIR)" :
     if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
 
 CPP=cl.exe
-CPP_PROJ=/nologo /MTd /W3 /Gm /GX /ZI /Od /D "HTTPS" /D "_DEBUG" /D "WIN32" /D "_CONSOLE" /D "HAVE_THREADS" /D "HAVE_IO_H" /D "VISUALCPP" /FR"$(INTDIR)\\" /Fp"$(INTDIR)\binkd.pch" /YX /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /c 
+CPP_PROJ=/nologo /MTd /W3 /Gm /GX /ZI /Od /D "HTTPS" /D "_DEBUG" /D "WIN32" /D "_CONSOLE" /D "HAVE_THREADS" /D "HAVE_IO_H" /D "VISUALCPP" /FR"$(INTDIR)\\" /Fp"$(INTDIR)\binkd.pch" /YX /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /c
 
 .c{$(INTDIR)}.obj:
    $(CPP) @<<
-   $(CPP_PROJ) $< 
+   $(CPP_PROJ) $<
 <<
 
 .c{$(INTDIR)}.sbr:
    $(CPP) @<<
-   $(CPP_PROJ) $< 
+   $(CPP_PROJ) $<
 <<
 
 RSC=rc.exe
 BSC32=bscmake.exe
-BSC32_FLAGS=/nologo /o"$(OUTDIR)\binkd.bsc" 
+BSC32_FLAGS=/nologo /o"$(OUTDIR)\binkd.bsc"
 BSC32_SBRS= \
 	"$(INTDIR)\BINKD.SBR" \
 	"$(INTDIR)\binlog.sbr" \
 	"$(INTDIR)\branch.sbr" \
 	"$(INTDIR)\breaksig.sbr" \
@@ -170,11 +170,11 @@
     $(BSC32) @<<
   $(BSC32_FLAGS) $(BSC32_SBRS)
 <<
 
 LINK32=link.exe
-LINK32_FLAGS=kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib wsock32.lib /nologo /subsystem:console /incremental:yes /pdb:"$(OUTDIR)\binkd.pdb" /map:"$(INTDIR)\binkd.map" /debug /machine:I386 /out:"$(OUTDIR)\binkd.exe" 
+LINK32_FLAGS=kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib wsock32.lib /nologo /subsystem:console /incremental:yes /pdb:"$(OUTDIR)\binkd.pdb" /map:"$(INTDIR)\binkd.map" /debug /machine:I386 /out:"$(OUTDIR)\binkd.exe"
 LINK32_OBJS= \
 	"$(INTDIR)\service.obj" \
 	"$(INTDIR)\https.obj" \
 	"$(INTDIR)\helpers.obj" \
 	"$(INTDIR)\ecb_enc.obj" \
@@ -277,29 +277,33 @@
 
 "$(OUTDIR)" :
     if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
 
 CPP=cl.exe
-CPP_PROJ=/nologo /MT /W3 /GX /Ox /D "HTTPS" /D "WIN32" /D "_CONSOLE" /D "HAVE_THREADS" /D "HAVE_IO_H" /D "VISUALCPP" /Fp"$(INTDIR)\binkd.pch" /YX /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /c 
+CPP_PROJ=/nologo /MT /W3 /GX /Ox /D "HTTPS" /D "WIN32" /D "_CONSOLE" /D "HAVE_THREADS" /D "HAVE_IO_H" /D "VISUALCPP" /Fp"$(INTDIR)\binkd.pch" /YX /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /c
+
+# Enable this for ASO-4D, not BSO
+CPP_PROJ=/nologo /MT /W3 /GX /Ox /D "HTTPS" /D "WIN32" /D "_CONSOLE" /D "HAVE_THREADS" /D "HAVE_IO_H" /D "VISUALCPP" /Fp"$(INTDIR)\binkd.pch" /YX /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /c /D "AMIGADOS_4D_OUTBOUND"
+
 
 .c{$(INTDIR)}.obj:
    $(CPP) @<<
-   $(CPP_PROJ) $< 
+   $(CPP_PROJ) $<
 <<
 
 .c{$(INTDIR)}.sbr:
    $(CPP) @<<
-   $(CPP_PROJ) $< 
+   $(CPP_PROJ) $<
 <<
 
 RSC=rc.exe
 BSC32=bscmake.exe
-BSC32_FLAGS=/nologo /o"$(OUTDIR)\binkd.bsc" 
+BSC32_FLAGS=/nologo /o"$(OUTDIR)\binkd.bsc"
 BSC32_SBRS= \
 	
 LINK32=link.exe
-LINK32_FLAGS=kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib wsock32.lib /nologo /subsystem:console /pdb:"$(OUTDIR)\binkd.pdb" /machine:I386 /out:"$(OUTDIR)\binkd.exe" 
+LINK32_FLAGS=kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib wsock32.lib /nologo /subsystem:console /pdb:"$(OUTDIR)\binkd.pdb" /machine:I386 /out:"$(OUTDIR)\binkd.exe"
 LINK32_OBJS= \
 	"$(INTDIR)\service.obj" \
 	"$(INTDIR)\https.obj" \
 	"$(INTDIR)\helpers.obj" \
 	"$(INTDIR)\ecb_enc.obj" \
@@ -342,20 +346,20 @@
 "$(OUTDIR)\binkd.exe" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS)
     $(LINK32) @<<
   $(LINK32_FLAGS) $(LINK32_OBJS)
 <<
 
-!ENDIF 
+!ENDIF
 
 
 !IF "$(NO_EXTERNAL_DEPS)" != "1"
 !IF EXISTS("Makefile.dep")
 !INCLUDE "Makefile.dep"
-!ELSE 
+!ELSE
 !MESSAGE Warning: cannot find "Makefile.dep"
-!ENDIF 
-!ENDIF 
+!ENDIF
+!ENDIF
 
 
 !IF "$(CFG)" == "binkd - Win32 Debug" || "$(CFG)" == "binkd - Win32 Release"
 SOURCE=.\BINKD.C
 
@@ -369,11 +373,11 @@
 
 
 "$(INTDIR)\BINKD.OBJ" : $(SOURCE) "$(INTDIR)"
 
 
-!ENDIF 
+!ENDIF
 
 SOURCE=.\binlog.c
 
 !IF  "$(CFG)" == "binkd - Win32 Debug"
 
@@ -385,11 +389,11 @@
 
 
 "$(INTDIR)\binlog.obj" : $(SOURCE) "$(INTDIR)"
 
 
-!ENDIF 
+!ENDIF
 
 SOURCE=.\branch.c
 
 !IF  "$(CFG)" == "binkd - Win32 Debug"
 
@@ -401,11 +405,11 @@
 
 
 "$(INTDIR)\branch.obj" : $(SOURCE) "$(INTDIR)"
 
 
-!ENDIF 
+!ENDIF
 
 SOURCE=.\nt\breaksig.c
 
 !IF  "$(CFG)" == "binkd - Win32 Debug"
 
@@ -419,11 +423,11 @@
 
 "$(INTDIR)\breaksig.obj" : $(SOURCE) "$(INTDIR)"
 	$(CPP) $(CPP_PROJ) $(SOURCE)
 
 
-!ENDIF 
+!ENDIF
 
 SOURCE=.\BSY.C
 
 !IF  "$(CFG)" == "binkd - Win32 Debug"
 
@@ -435,11 +439,11 @@
 
 
 "$(INTDIR)\BSY.OBJ" : $(SOURCE) "$(INTDIR)"
 
 
-!ENDIF 
+!ENDIF
 
 SOURCE=.\CLIENT.C
 
 !IF  "$(CFG)" == "binkd - Win32 Debug"
 
@@ -451,11 +455,11 @@
 
 
 "$(INTDIR)\CLIENT.OBJ" : $(SOURCE) "$(INTDIR)"
 
 
-!ENDIF 
+!ENDIF
 
 SOURCE=.\nt\dirwin32.c
 
 !IF  "$(CFG)" == "binkd - Win32 Debug"
 
@@ -469,11 +473,11 @@
 
 "$(INTDIR)\dirwin32.obj" : $(SOURCE) "$(INTDIR)"
 	$(CPP) $(CPP_PROJ) $(SOURCE)
 
 
-!ENDIF 
+!ENDIF
 
 SOURCE=.\exitproc.c
 
 !IF  "$(CFG)" == "binkd - Win32 Debug"
 
@@ -485,11 +489,11 @@
 
 
 "$(INTDIR)\exitproc.obj" : $(SOURCE) "$(INTDIR)"
 
 
-!ENDIF 
+!ENDIF
 
 SOURCE=.\FTNADDR.C
 
 !IF  "$(CFG)" == "binkd - Win32 Debug"
 
@@ -501,11 +505,11 @@
 
 
 "$(INTDIR)\FTNADDR.OBJ" : $(SOURCE) "$(INTDIR)"
 
 
-!ENDIF 
+!ENDIF
 
 SOURCE=.\ftndom.c
 
 !IF  "$(CFG)" == "binkd - Win32 Debug"
 
@@ -517,11 +521,11 @@
 
 
 "$(INTDIR)\ftndom.obj" : $(SOURCE) "$(INTDIR)"
 
 
-!ENDIF 
+!ENDIF
 
 SOURCE=.\ftnnode.c
 
 !IF  "$(CFG)" == "binkd - Win32 Debug"
 
@@ -533,11 +537,11 @@
 
 
 "$(INTDIR)\ftnnode.obj" : $(SOURCE) "$(INTDIR)"
 
 
-!ENDIF 
+!ENDIF
 
 SOURCE=.\FTNQ.C
 
 !IF  "$(CFG)" == "binkd - Win32 Debug"
 
@@ -549,11 +553,11 @@
 
 
 "$(INTDIR)\FTNQ.OBJ" : $(SOURCE) "$(INTDIR)"
 
 
-!ENDIF 
+!ENDIF
 
 SOURCE=.\nt\getfree.c
 
 !IF  "$(CFG)" == "binkd - Win32 Debug"
 
@@ -567,11 +571,11 @@
 
 "$(INTDIR)\getfree.obj" : $(SOURCE) "$(INTDIR)"
 	$(CPP) $(CPP_PROJ) $(SOURCE)
 
 
-!ENDIF 
+!ENDIF
 
 SOURCE=.\getw.c
 
 !IF  "$(CFG)" == "binkd - Win32 Debug"
 
@@ -583,11 +587,11 @@
 
 
 "$(INTDIR)\getw.obj" : $(SOURCE) "$(INTDIR)"
 
 
-!ENDIF 
+!ENDIF
 
 SOURCE=.\INBOUND.C
 
 !IF  "$(CFG)" == "binkd - Win32 Debug"
 
@@ -599,11 +603,11 @@
 
 
 "$(INTDIR)\INBOUND.OBJ" : $(SOURCE) "$(INTDIR)"
 
 
-!ENDIF 
+!ENDIF
 
 SOURCE=.\iptools.c
 
 !IF  "$(CFG)" == "binkd - Win32 Debug"
 
@@ -615,11 +619,11 @@
 
 
 "$(INTDIR)\iptools.obj" : $(SOURCE) "$(INTDIR)"
 
 
-!ENDIF 
+!ENDIF
 
 SOURCE=.\pmatch.c
 
 !IF  "$(CFG)" == "binkd - Win32 Debug"
 
@@ -631,11 +635,11 @@
 
 
 "$(INTDIR)\pmatch.obj" : $(SOURCE) "$(INTDIR)"
 
 
-!ENDIF 
+!ENDIF
 
 SOURCE=.\prothlp.c
 
 !IF  "$(CFG)" == "binkd - Win32 Debug"
 
@@ -647,11 +651,11 @@
 
 
 "$(INTDIR)\prothlp.obj" : $(SOURCE) "$(INTDIR)"
 
 
-!ENDIF 
+!ENDIF
 
 SOURCE=.\PROTOCOL.C
 
 !IF  "$(CFG)" == "binkd - Win32 Debug"
 
@@ -663,11 +667,11 @@
 
 
 "$(INTDIR)\PROTOCOL.OBJ" : $(SOURCE) "$(INTDIR)"
 
 
-!ENDIF 
+!ENDIF
 
 SOURCE=.\READCFG.C
 
 !IF  "$(CFG)" == "binkd - Win32 Debug"
 
@@ -679,11 +683,11 @@
 
 
 "$(INTDIR)\READCFG.OBJ" : $(SOURCE) "$(INTDIR)"
 
 
-!ENDIF 
+!ENDIF
 
 SOURCE=.\readflo.c
 
 !IF  "$(CFG)" == "binkd - Win32 Debug"
 
@@ -695,11 +699,11 @@
 
 
 "$(INTDIR)\readflo.obj" : $(SOURCE) "$(INTDIR)"
 
 
-!ENDIF 
+!ENDIF
 
 SOURCE=.\run.c
 
 !IF  "$(CFG)" == "binkd - Win32 Debug"
 
@@ -711,11 +715,11 @@
 
 
 "$(INTDIR)\run.obj" : $(SOURCE) "$(INTDIR)"
 
 
-!ENDIF 
+!ENDIF
 
 SOURCE=.\nt\sem.c
 
 !IF  "$(CFG)" == "binkd - Win32 Debug"
 
@@ -729,11 +733,11 @@
 
 "$(INTDIR)\sem.obj" : $(SOURCE) "$(INTDIR)"
 	$(CPP) $(CPP_PROJ) $(SOURCE)
 
 
-!ENDIF 
+!ENDIF
 
 SOURCE=.\SERVER.C
 
 !IF  "$(CFG)" == "binkd - Win32 Debug"
 
@@ -745,11 +749,11 @@
 
 
 "$(INTDIR)\SERVER.OBJ" : $(SOURCE) "$(INTDIR)"
 
 
-!ENDIF 
+!ENDIF
 
 SOURCE=.\setpttl.c
 
 !IF  "$(CFG)" == "binkd - Win32 Debug"
 
@@ -761,11 +765,11 @@
 
 
 "$(INTDIR)\setpttl.obj" : $(SOURCE) "$(INTDIR)"
 
 
-!ENDIF 
+!ENDIF
 
 SOURCE=.\srif.c
 
 !IF  "$(CFG)" == "binkd - Win32 Debug"
 
@@ -777,11 +781,11 @@
 
 
 "$(INTDIR)\srif.obj" : $(SOURCE) "$(INTDIR)"
 
 
-!ENDIF 
+!ENDIF
 
 SOURCE=.\nt\TCPErr.c
 
 !IF  "$(CFG)" == "binkd - Win32 Debug"
 
@@ -795,11 +799,11 @@
 
 "$(INTDIR)\TCPErr.obj" : $(SOURCE) "$(INTDIR)"
 	$(CPP) $(CPP_PROJ) $(SOURCE)
 
 
-!ENDIF 
+!ENDIF
 
 SOURCE=.\TOOLS.C
 
 !IF  "$(CFG)" == "binkd - Win32 Debug"
 
@@ -811,11 +815,11 @@
 
 
 "$(INTDIR)\TOOLS.OBJ" : $(SOURCE) "$(INTDIR)"
 
 
-!ENDIF 
+!ENDIF
 
 SOURCE=.\nt\WSock.c
 
 !IF  "$(CFG)" == "binkd - Win32 Debug"
 
@@ -829,11 +833,11 @@
 
 "$(INTDIR)\WSock.obj" : $(SOURCE) "$(INTDIR)"
 	$(CPP) $(CPP_PROJ) $(SOURCE)
 
 
-!ENDIF 
+!ENDIF
 
 SOURCE=.\xalloc.c
 
 !IF  "$(CFG)" == "binkd - Win32 Debug"
 
@@ -845,11 +849,11 @@
 
 
 "$(INTDIR)\xalloc.obj" : $(SOURCE) "$(INTDIR)"
 
 
-!ENDIF 
+!ENDIF
 
 
 SOURCE=.\https.c
 
 !IF  "$(CFG)" == "binkd - Win32 Debug"
@@ -863,11 +867,11 @@
 
 "$(INTDIR)\https.obj" : $(SOURCE) "$(INTDIR)"
 	$(CPP) /DNTLM $(CPP_PROJ) $(SOURCE)
 
 
-!ENDIF 
+!ENDIF
 
 SOURCE=.\md5b.c
 
 !IF  "$(CFG)" == "binkd - Win32 Debug"
 
@@ -879,11 +883,11 @@
 
 
 "$(INTDIR)\md5b.obj" : $(SOURCE) "$(INTDIR)"
 
 
-!ENDIF 
+!ENDIF
 
 
 SOURCE=.\crypt.c
 
 !IF  "$(CFG)" == "binkd - Win32 Debug"
@@ -896,11 +900,11 @@
 
 
 "$(INTDIR)\crypt.obj" : $(SOURCE) "$(INTDIR)"
 
 
-!ENDIF 
+!ENDIF
 
 
 SOURCE=.\nt\service.c
 
 !IF  "$(CFG)" == "binkd - Win32 Debug"
@@ -910,11 +914,11 @@
 !ELSEIF  "$(CFG)" == "binkd - Win32 Release"
 
 "$(INTDIR)\service.obj" : $(SOURCE) "$(INTDIR)"
 	$(CPP) $(CPP_PROJ) $(SOURCE)
 
-!ENDIF 
+!ENDIF
 
 
 SOURCE=.\ntlm\ecb_enc.c
 
 !IF  "$(CFG)" == "binkd - Win32 Debug"
@@ -925,11 +929,11 @@
 !ELSEIF  "$(CFG)" == "binkd - Win32 Release"
 
 "$(INTDIR)\ecb_enc.obj" : $(SOURCE) "$(INTDIR)"
 	$(CPP) $(CPP_PROJ) $(NTLM_FLAGS) $(SOURCE)
 
-!ENDIF 
+!ENDIF
 
 
 SOURCE=.\ntlm\helpers.c
 
 !IF  "$(CFG)" == "binkd - Win32 Debug"
@@ -940,11 +944,11 @@
 !ELSEIF  "$(CFG)" == "binkd - Win32 Release"
 
 "$(INTDIR)\helpers.obj" : $(SOURCE) "$(INTDIR)"
 	$(CPP) $(CPP_PROJ) $(NTLM_FLAGS) $(SOURCE)
 
-!ENDIF 
+!ENDIF
 
 
 SOURCE=.\ntlm\md4_dgst.c
 
 !IF  "$(CFG)" == "binkd - Win32 Debug"
@@ -955,11 +959,11 @@
 !ELSEIF  "$(CFG)" == "binkd - Win32 Release"
 
 "$(INTDIR)\md4_dgst.obj" : $(SOURCE) "$(INTDIR)"
 	$(CPP) $(CPP_PROJ) $(NTLM_FLAGS) $(SOURCE)
 
-!ENDIF 
+!ENDIF
 
 
 SOURCE=.\ntlm\des_enc.c
 
 !IF  "$(CFG)" == "binkd - Win32 Debug"
@@ -970,11 +974,11 @@
 !ELSEIF  "$(CFG)" == "binkd - Win32 Release"
 
 "$(INTDIR)\des_enc.obj" : $(SOURCE) "$(INTDIR)"
 	$(CPP) $(CPP_PROJ) $(NTLM_FLAGS) $(SOURCE)
 
-!ENDIF 
+!ENDIF
 
 
 SOURCE=.\ntlm\set_key.c
 
 !IF  "$(CFG)" == "binkd - Win32 Debug"
@@ -985,10 +989,10 @@
 !ELSEIF  "$(CFG)" == "binkd - Win32 Release"
 
 "$(INTDIR)\set_key.obj" : $(SOURCE) "$(INTDIR)"
 	$(CPP) $(CPP_PROJ) $(NTLM_FLAGS) $(SOURCE)
 
-!ENDIF 
+!ENDIF
 
 
-!ENDIF 
+!ENDIF
 
diff -u5Nr binkd.orig/mkfls/os2-emx/Makefile binkd.aso/mkfls/os2-emx/Makefile
--- binkd.orig/mkfls/os2-emx/Makefile	2002-08-18 20:28:46.000000000 +0000
+++ binkd.aso/mkfls/os2-emx/Makefile	2002-08-18 19:42:20.000000000 +0000
@@ -1,9 +1,13 @@
 # $Id: Makefile,v 2.4 2002/03/14 12:56:54 gul Exp $
 #
 CC=gcc
 DEFINES=-DHAVE_FORK -DHAVE_SNPRINTF -DHAVE_UNISTD -DOS2 -DHAVE_IO_H -DHAVE_ARPA_INET_H -DEMX -DEMXSIGNALS -DHAVE_WAITPID -DHTTPS -DNTLM
+
+# Enable this for ASO-4D, not BSO
+#DEFINES+=-DAMIGADOS_4D_OUTBOUND
+
 CFLAGS=$(DEFINES) -Wall -Zcrtdll -funsigned-char -Wno-char-subscripts
 NTLM_SRC=ntlm/des_enc.c ntlm/helpers.c ntlm/ecb_enc.c ntlm/md4_dgst.c ntlm/set_key.c
 SRCS=binkd.c readcfg.c tools.c ftnaddr.c ftnq.c client.c server.c protocol.c bsy.c inbound.c breaksig.c branch.c os2/gettid.c os2/sem.c  ftndom.c ftnnode.c os2/getfree.c srif.c pmatch.c readflo.c prothlp.c iptools.c run.c binlog.c exitproc.c getw.c xalloc.c setpttl.c https.c md5b.c crypt.c ${NTLM_SRC}
 OBJS=${SRCS:.c=.o}
 
diff -u5Nr binkd.orig/mkfls/os2-wc/Makefile binkd.aso/mkfls/os2-wc/Makefile
--- binkd.orig/mkfls/os2-wc/Makefile	2002-03-14 17:50:00.000000000 +0000
+++ binkd.aso/mkfls/os2-wc/Makefile	2002-08-18 19:42:50.000000000 +0000
@@ -9,10 +9,15 @@
 
 AFLAGS  = /Mx -t -z
 ASM     = ml /c /Zm
 LFLAGS  = /bm /k1024k
 CFLAGS  = -DOS2 -DHAVE_THREADS -DHAVE_IO_H -DHAVE_SNPRINTF -Dsnprintf=_bprintf -Dvsnprintf=_vbprintf -DIBMTCPIP -DVOID_SLEEP -DHTTPS -DNTLM /w4 /ox /bm # -DWATCOMC_CLOSEDIR_BUG
+
+# Enable this for ASO-4D, not BSO
+#CFLAGS+= -DAMIGADOS_4D_OUTBOUND
+
+
 LINK    = wcl386
 NTLM_SRC=ntlm/des_enc.c ntlm/helpers.c ntlm/ecb_enc.c ntlm/md4_dgst.c ntlm/set_key.c
 NTLM_OBJS=    des_enc.obj    helpers.obj    ecb_enc.obj    md4_dgst.obj    set_key.obj
 SRCS=binkd.c   readcfg.c   tools.c   ftnaddr.c   ftnq.c   client.c   server.c   protocol.c   bsy.c   os2\gettid.c os2\tcperr.c inbound.c   os2\sem.c breaksig.c   branch.c   ftndom.c   ftnnode.c   getfree.c   srif.c   pmatch.c   readflo.c   prothlp.c   iptools.c   run.c   binlog.c   exitproc.c   getw.c   xalloc.c   setpttl.c   https.c   md5b.c   crypt.c   $(NTLM_SRC)
 OBJS=binkd.obj readcfg.obj tools.obj ftnaddr.obj ftnq.obj client.obj server.obj protocol.obj bsy.obj gettid.obj   tcperr.obj   inbound.obj sem.obj   breaksig.obj branch.obj ftndom.obj ftnnode.obj getfree.obj srif.obj pmatch.obj readflo.obj prothlp.obj iptools.obj run.obj binlog.obj exitproc.obj getw.obj xalloc.obj setpttl.obj https.obj md5b.obj crypt.obj $(NTLM_OBJS)
diff -u5Nr binkd.orig/mkfls/unix/Makefile.in binkd.aso/mkfls/unix/Makefile.in
--- binkd.orig/mkfls/unix/Makefile.in	2001-07-27 18:00:00.000000000 +0000
+++ binkd.aso/mkfls/unix/Makefile.in	2002-08-18 19:43:32.000000000 +0000
@@ -7,14 +7,18 @@
 
 # prepend PREFIX to installed program names
 PREFIX=@prefix@
 
 SRCS=md5b.c binkd.c readcfg.c tools.c ftnaddr.c ftnq.c client.c server.c protocol.c bsy.c inbound.c breaksig.c branch.c unix/rename.c unix/getfree.c ftndom.c ftnnode.c srif.c pmatch.c readflo.c prothlp.c iptools.c run.c binlog.c exitproc.c getw.c xalloc.c crypt.c unix/setpttl.c unix/daemonize.c @HTTPS_SRC@
-OBJS=${SRCS:.c=.o} 
+OBJS=${SRCS:.c=.o}
 AUTODEFS=@DEFS@
 AUTOLIBS=@LIBS@
 DEFINES=$(AUTODEFS) -DHAVE_FORK -DUNIX -DOS="\"UNIX\""
+
+# Enable this for ASO-4D, not BSO
+#DEFINES+=-DAMIGADOS_4D_OUTBOUND
+
 CFLAGS=$(DEFINES) -Wall -Wno-char-subscripts
 LIBS=$(AUTOLIBS)
 
 all: compile banner
 
@@ -55,19 +59,19 @@
 	$(INSTALL) -m 644 $(APPL).8 $(PREFIX)/man/man8/$(APPL).8
 	./mkinstalldirs $(PREFIX)/etc
 	$(INSTALL) -m 644 $(APPL).cfg $(PREFIX)/etc/$(APPL).conf-dist
 
 clean:
-	rm -f *.[bo] unix/*.[bo] ntlm/*.[bo] *.BAK *.core *.obj *.err 
+	rm -f *.[bo] unix/*.[bo] ntlm/*.[bo] *.BAK *.core *.obj *.err
 	rm -f *~ core config.cache config.log config.status
 
 cleanall: clean
 	rm -f $(APPL) Makefile Makefile.dep Makefile.in
 	rm -f configure configure.in .version install-sh mkinstalldirs
 
 # targets for compatibility
-mostlyclean: clean  
+mostlyclean: clean
 distclean: cleanall
 realclean: cleanall
 
 .c.o:
 	@echo Compiling $*.c...
diff -u5Nr binkd.orig/prothlp.c binkd.aso/prothlp.c
--- binkd.orig/prothlp.c	2001-01-10 12:12:38.000000000 +0000
+++ binkd.aso/prothlp.c	2002-08-18 20:21:28.000000000 +0000
@@ -32,10 +32,11 @@
 #include <sys/types.h>
 #include <time.h>
 #include <string.h>
 #include <stdio.h>
 #include <stdlib.h>
+#include <ctype.h>
 
 #include "Config.h"
 #include "sys.h"
 #include "ftnq.h"
 #include "prothlp.h"
@@ -138,12 +139,27 @@
     strnzcpy (s, z, MAX_NETNAME);
 
     /* gul: bt+ arcshield */
     if ((z = strrchr (s, '.')) != NULL)
       if (strlen (++z) == 3)
+      {
 	if ((*z >= '0') && (*z < '7') && (z[1] == '#'))
 	  memcpy (z, weekext[*z - '0'], 2);
+#ifdef AMIGADOS_4D_OUTBOUND
+        else
+        {
+           int n;
+           for (n = 0; n < 7 && STRNICMP(z, weekext[n], 2); n++);
+           if (n != 7)
+           {
+               char last = z[2];
+               sprintf(s, "%08lx.%c%c%c",
+                       rnd(), tolower(weekext[n][0]), weekext[n][1], last);
+           }
+        }
+#endif
+      }
 
     z = strquote(s, SQ_CNTRL | SQ_SPACE);
     strnzcpy (s, z, MAX_NETNAME);
     free (z);
   }
