summaryrefslogtreecommitdiff
path: root/recipes/mgetty
diff options
context:
space:
mode:
Diffstat (limited to 'recipes/mgetty')
-rw-r--r--recipes/mgetty/mgetty-1.1.30/00-g3_Makefile11
-rw-r--r--recipes/mgetty/mgetty-1.1.30/01-adjust-path113
-rw-r--r--recipes/mgetty/mgetty-1.1.30/02-pending-fix-includes49
-rw-r--r--recipes/mgetty/mgetty-1.1.30/03-callback_Makefile20
-rw-r--r--recipes/mgetty/mgetty-1.1.30/04-new_fax.pbm8
-rw-r--r--recipes/mgetty/mgetty-1.1.30/06-pending-contrib_g3tolj.c49
-rw-r--r--recipes/mgetty/mgetty-1.1.30/07-pending-contrib_g3toxwd.c46
-rw-r--r--recipes/mgetty/mgetty-1.1.30/09-doc_Makefile91
-rw-r--r--recipes/mgetty/mgetty-1.1.30/10-doc_faxrunqd.8in60
-rw-r--r--recipes/mgetty/mgetty-1.1.30/12-fax_faxrunqd.in178
-rw-r--r--recipes/mgetty/mgetty-1.1.30/13-fax_faxspool.in237
-rw-r--r--recipes/mgetty/mgetty-1.1.30/14-frontends_X11_viewfax-2.5_Makefile60
-rw-r--r--recipes/mgetty/mgetty-1.1.30/23-samples_new_fax.mime477
-rw-r--r--recipes/mgetty/mgetty-1.1.30/24-voice_include_paths.h15
-rw-r--r--recipes/mgetty/mgetty-1.1.30/26-voice_libpvf_usr.c16
-rw-r--r--recipes/mgetty/mgetty-1.1.30/36-voice_voice.conf-dist11
-rw-r--r--recipes/mgetty/mgetty-1.1.30/37-Makefile141
-rw-r--r--recipes/mgetty/mgetty-1.1.30/39-mgetty.cfg.in12
-rw-r--r--recipes/mgetty/mgetty-1.1.30/40-locks.c_bug15339460
-rw-r--r--recipes/mgetty/mgetty-1.1.30/41-ugly-redo-ring.c_bug12866827
-rw-r--r--recipes/mgetty/mgetty-1.1.30/42-voice_libvoice_detect.c28
-rw-r--r--recipes/mgetty/mgetty-1.1.30/43-moreinfo-cnd.c_bug11216336
-rw-r--r--recipes/mgetty/mgetty-1.1.30/44-pending-faxexpand.h_bug16945524
-rw-r--r--recipes/mgetty/mgetty-1.1.30/45-logfile.c52
-rw-r--r--recipes/mgetty/mgetty-1.1.30/47-doc_mgetty.texi-in14
-rw-r--r--recipes/mgetty/mgetty-1.1.30/50-pending-voice-zoom-2949l-c145
-rw-r--r--recipes/mgetty/mgetty-1.1.30/51-pending-faxq-time10
-rw-r--r--recipes/mgetty/mgetty-1.1.30/52-pending-metamail88
-rw-r--r--recipes/mgetty/mgetty-1.1.30/debian.patch913
-rw-r--r--recipes/mgetty/mgetty-1.1.30/install.patch133
-rw-r--r--recipes/mgetty/mgetty-1.1.30/policy.h602
-rw-r--r--recipes/mgetty/mgetty-1.1.30/voice-defs.h2
-rw-r--r--recipes/mgetty/mgetty_1.1.30.bb81
33 files changed, 3409 insertions, 0 deletions
diff --git a/recipes/mgetty/mgetty-1.1.30/00-g3_Makefile b/recipes/mgetty/mgetty-1.1.30/00-g3_Makefile
new file mode 100644
index 0000000000..d12ead44b4
--- /dev/null
+++ b/recipes/mgetty/mgetty-1.1.30/00-g3_Makefile
@@ -0,0 +1,11 @@
+--- mgetty-1.1.27.orig/g3/Makefile
++++ mgetty-1.1.27/g3/Makefile
+@@ -5,7 +5,7 @@
+ #
+
+ CC=gcc
+-CFLAGS=-O2 -I.. -g
++CFLAGS=-O2 -I.. #-g
+
+ G3_PROGRAMS=pbm2g3 g3cat g32pbm
+
diff --git a/recipes/mgetty/mgetty-1.1.30/01-adjust-path b/recipes/mgetty/mgetty-1.1.30/01-adjust-path
new file mode 100644
index 0000000000..9ea223f6d3
--- /dev/null
+++ b/recipes/mgetty/mgetty-1.1.30/01-adjust-path
@@ -0,0 +1,113 @@
+--- mgetty-1.1.27.orig/frontends/winword2/WinFaxServ.pl
++++ mgetty-1.1.27/frontends/winword2/WinFaxServ.pl
+@@ -11,8 +11,8 @@
+ # notice if redistributing.
+ #
+
+-$MAILER="/usr/lib/sendmail";
+-$DIR="/usr/spool/fax/winword";
++$MAILER="/usr/sbin/sendmail";
++$DIR="/var/spool/fax/winword";
+
+ open(LOG, ">>/usr/adm/errors");
+ select LOG; $| = 1;select STDOUT;
+--- mgetty-1.1.27.orig/voice/scripts/new_voice.craig_southern
++++ mgetty-1.1.27/voice/scripts/new_voice.craig_southern
+@@ -43,7 +43,7 @@
+ outputfn=$fn.$extension
+
+ # convert file into correct format
+-/usr/local/bin/rmdtopvf $fn | /usr/local/bin/pvftowav 2>/dev/null > $outputfn
++/usr/bin/rmdtopvf $fn | /usr/bin/pvftowav 2>/dev/null > $outputfn
+
+ echo --$seperator >> $tempfn
+ echo Content-Type: $contenttype\; name=\"$pagefn\" >> $tempfn
+--- mgetty-1.1.27.orig/samples/new_fax.all/new_fax
++++ mgetty-1.1.27/samples/new_fax.all/new_fax
+@@ -1,4 +1,4 @@
+-#!/bin/ksh
++#!/bin/sh
+ #
+ # Written 1996 by Darko Krizic
+ #
+@@ -6,10 +6,11 @@
+ # mgetty from Gert Doering. See the README file for more information.
+
+ # Do the settings here
+-home=/usr/local/newfax # The home directory
+-config=$home/faxlist # The configuration file
+-from="Fax Subsystem <faxadmin@xplor.ipf.de>" # From this user
+-log=/var/log/faxlog # logfile
++home=/etc/mgetty/newfax.d/ # The home directory
++config=/etc/mgetty/faxlist # The configuration file
++this_host=`hostname`
++from="Fax Subsystem <faxmaster@$this_host>" # From this user
++log=/var/log/mgetty/faxlog # logfile
+
+ # Usually nothing to configure beyond this line
+ PATH=/usr/bin:/bin:/usr/local/bin:/usr/bin/X11
+--- mgetty-1.1.27.orig/login.cfg.in
++++ mgetty-1.1.27/login.cfg.in
+@@ -30,7 +30,7 @@
+ # (Big advantage: tuucp can use the same passwd file for serial dial-in
+ # and tcp dial-in [uucico running as in.uucpd]). Works from 1.05 up.
+ #
+-#U* uucp @ /usr/lib/uucp/uucico -l -u @
++#U* uucp @ /usr/sbin/uucico -l -u @
+
+ #
+ # Use this one for fido calls (login name /FIDO/ is handled specially)
+@@ -39,7 +39,7 @@
+ # mgetty has to be compiled with "-DFIDO", otherwise a fido call won't
+ # be detected.
+ #
+-#/FIDO/ uucp fido /usr/local/lib/fnet/ifcico @
++#/FIDO/ uucp fido /usr/lib/fnet/ifcico @
+
+ #
+ # Automatic PPP startup on receipt of LCP configure request (AutoPPP).
+@@ -57,7 +57,7 @@
+ #
+ # NOTE4: max. 9 arguments allowed.
+ #
+-#/AutoPPP/ - a_ppp /usr/sbin/pppd auth -chap +pap login debug
++/AutoPPP/ - a_ppp /usr/sbin/pppd auth -chap +pap login debug
+
+ #
+ #
+--- mgetty-1.1.30.old/faxrunq.config 1998-11-12 10:26:00.000000000 -0500
++++ mgetty-1.1.30/faxrunq.config 2003-07-01 19:14:55.000000000 -0400
+@@ -42,7 +42,7 @@
+ #delete-sent-jobs y
+
+ # accounting log file (default: see beginning of faxrunq/faxrunqd script)
+-#acct-log /var/log/acct.log
++#acct-log /var/log/mgetty/fax/acct.log
+
+ # The following options are for faxrunqd only:
+
+@@ -51,11 +51,11 @@
+ #fax-devices ttyS0:ttyS1
+
+ # log file for faxrunqd (default: see beginning of faxrunqd script)
+-#faxrunqd-log /var/log/faxrunqd.log
++#faxrunqd-log /var/log/mgetty/fax/faxrunqd.log
+
+ # number of logfiles to keep around when rolling (default: 3)
+ #faxrunqd-keep-logs 5
+
+ # configuration file for policy routing, see faxrunqd man page for
+ # details (default: none, i.e. don't use policy routing)
+-#policy-config /usr/local/lib/mgetty+sendfax/policy.config
++#policy-config /etc/mgetty/policy.config
+--- mgetty-1.1.27.orig/callback/README
++++ mgetty-1.1.27/callback/README
+@@ -5,7 +5,7 @@
+ #
+ # callback experiments
+ #
+-cback-gert - - /usr/local/sbin/callback -S 11223344
++cback-gert - - /usr/sbin/callback -S 11223344
+
+ to call you back on "11223344" upon entering of a login name of
+ "cback-gert". If you don't specify a number on the command line,
diff --git a/recipes/mgetty/mgetty-1.1.30/02-pending-fix-includes b/recipes/mgetty/mgetty-1.1.30/02-pending-fix-includes
new file mode 100644
index 0000000000..8b27dddcd0
--- /dev/null
+++ b/recipes/mgetty/mgetty-1.1.30/02-pending-fix-includes
@@ -0,0 +1,49 @@
+--- mgetty-1.1.27.orig/g3/g3cat.c
++++ mgetty-1.1.27/g3/g3cat.c
+@@ -21,6 +21,7 @@
+ #endif
+ #include <unistd.h>
+ #include <fcntl.h>
++#include <string.h>
+
+ extern int optind;
+ extern char * optarg;
+--- mgetty-1.1.27.orig/compat/newslock.c
++++ mgetty-1.1.27/compat/newslock.c
+@@ -6,6 +6,7 @@
+ * TAKEN UNMODIFIED FROM C-NEWS BY Geoffrey Collyer AND Henry Spencer
+ */
+ #include <stdio.h>
++#include <stdlib.h>
+ #include <unistd.h>
+
+ int
+--- mgetty-1.1.27.orig/voice/libmgsm/code.c
++++ mgetty-1.1.27/voice/libmgsm/code.c
+@@ -8,13 +8,14 @@
+
+ #include "config.h"
+
+-
+ #ifdef HAS_STDLIB_H
+ #include <stdlib.h>
+ #else
+ # include "proto.h"
+ extern char * memcpy P((char *, char *, int));
+ #endif
++
++#include <string.h>
+
+ #include "private.h"
+ #include "gsm.h"
+--- mgetty-1.1.27.orig/voice/libutil/test_wildmat.c
++++ mgetty-1.1.27/voice/libutil/test_wildmat.c
+@@ -3,6 +3,8 @@
+ */
+
+ #include <stdio.h>
++#include <stdlib.h>
++#include <string.h>
+
+ extern int wildmat(char *text, char *p, int length);
+
diff --git a/recipes/mgetty/mgetty-1.1.30/03-callback_Makefile b/recipes/mgetty/mgetty-1.1.30/03-callback_Makefile
new file mode 100644
index 0000000000..4ef5e088f2
--- /dev/null
+++ b/recipes/mgetty/mgetty-1.1.30/03-callback_Makefile
@@ -0,0 +1,20 @@
+--- mgetty-1.1.27.orig/callback/Makefile
++++ mgetty-1.1.27/callback/Makefile
+@@ -5,7 +5,7 @@
+ #
+
+ CC=gcc
+-CFLAGS=-O2 -I.. -g
++CFLAGS=-O2 -I..
+
+ zigzag:
+ cd .. ; $(MAKE) call-back
+@@ -40,7 +40,7 @@
+ # install programs
+ #
+ install: all
+- $(INSTALL) -s -m 700 -o root callback $(SBINDIR)
++ $(INSTALL) -s -m 755 -o root callback $(SBINDIR)
+ $(INSTALL) -s -m 4711 -o root ct $(BINDIR)
+
+ # source modules
diff --git a/recipes/mgetty/mgetty-1.1.30/04-new_fax.pbm b/recipes/mgetty/mgetty-1.1.30/04-new_fax.pbm
new file mode 100644
index 0000000000..a3642482b9
--- /dev/null
+++ b/recipes/mgetty/mgetty-1.1.30/04-new_fax.pbm
@@ -0,0 +1,8 @@
+--- mgetty-1.1.30.orig/samples/new_fax.pbm Thu Jan 2 15:40:12 1997
++++ mgetty-1.1.30/samples/new_fax.pbm Sun Sep 28 16:46:09 2003
+@@ -1,4 +1,4 @@
+-#!/bin/sh
++#!/bin/bash
+ # From: michael@hal6000.thp.uni-duisburg.de (Michael Staats)
+ # Subject: Re: Fax notify without in/output redirection?
+ # To: mgetty@greenie.muc.de
diff --git a/recipes/mgetty/mgetty-1.1.30/06-pending-contrib_g3tolj.c b/recipes/mgetty/mgetty-1.1.30/06-pending-contrib_g3tolj.c
new file mode 100644
index 0000000000..d0ab83fe84
--- /dev/null
+++ b/recipes/mgetty/mgetty-1.1.30/06-pending-contrib_g3tolj.c
@@ -0,0 +1,49 @@
+--- mgetty-1.1.27.orig/contrib/g3tolj.c
++++ mgetty-1.1.27/contrib/g3tolj.c
+@@ -57,6 +57,7 @@
+ #include <sys/types.h>
+ #include <ctype.h>
+ #include <stdio.h>
++#include <stdlib.h>
+
+ typedef unsigned char bit;
+
+@@ -303,6 +304,8 @@
+
+ #endif /* _G3_H_ */
+
++void skiptoeol (void);
++
+ FILE *
+ pm_openr (name)
+ char *name;
+@@ -552,7 +555,7 @@
+ return (0);
+ }
+
+-skiptoeol ()
++void skiptoeol ()
+ {
+ while (rawzeros < 11)
+ (void) rawgetbit ();
+@@ -707,9 +710,9 @@
+ newpage (fd);
+ };
+
+-void main (argc, argv)
+- int argc;
+- char *argv[];
++int main (argc, argv)
++ int argc;
++ char *argv[];
+ {
+ int argn, rows, wrows, cols, wcols, row, wrow, col, wcol, i;
+ int vval, hval;
+@@ -864,5 +867,6 @@
+ break;
+ }
+ putrest ();
+- exit (0);
++
++ return 0;
+ }
diff --git a/recipes/mgetty/mgetty-1.1.30/07-pending-contrib_g3toxwd.c b/recipes/mgetty/mgetty-1.1.30/07-pending-contrib_g3toxwd.c
new file mode 100644
index 0000000000..97f59dd484
--- /dev/null
+++ b/recipes/mgetty/mgetty-1.1.30/07-pending-contrib_g3toxwd.c
@@ -0,0 +1,46 @@
+--- mgetty-1.1.27.orig/contrib/g3toxwd.c
++++ mgetty-1.1.27/contrib/g3toxwd.c
+@@ -26,6 +26,8 @@
+ #include <sys/types.h>
+ #include <ctype.h>
+ #include <stdio.h>
++#include <stdlib.h>
++#include <string.h>
+
+ typedef unsigned char bit;
+
+@@ -331,6 +333,8 @@
+
+ #endif /* _G3_H_ */
+
++void skiptoeol (void);
++
+ FILE *
+ pm_openr (name)
+ char *name;
+@@ -604,7 +608,7 @@
+ return (0);
+ }
+
+-skiptoeol ()
++void skiptoeol ()
+ {
+ while (rawzeros < 11)
+ (void) rawgetbit ();
+@@ -732,7 +736,7 @@
+ putchar (byte);
+ };
+
+-void main (argc, argv)
++int main (argc, argv)
+ int argc;
+ char *argv[];
+ {
+@@ -883,5 +887,6 @@
+ xwd_writerow (stdout, writerow, wcols);
+ wrow++;
+ }
+- exit (0);
++
++ return 0;
+ }
diff --git a/recipes/mgetty/mgetty-1.1.30/09-doc_Makefile b/recipes/mgetty/mgetty-1.1.30/09-doc_Makefile
new file mode 100644
index 0000000000..1af8ca4771
--- /dev/null
+++ b/recipes/mgetty/mgetty-1.1.30/09-doc_Makefile
@@ -0,0 +1,91 @@
+--- mgetty-1.1.28.copy/doc/Makefile 1997-11-27 15:33:26.000000000 -0500
++++ mgetty-1.1.28/doc/Makefile 2002-07-30 03:27:31.000000000 -0400
+@@ -4,6 +4,8 @@
+ #
+
+ NROFF=nroff
++
++INSTALL=install
+ #
+ #
+ MAN1PAGES=g32pbm.1 g3cat.1 pbm2g3.1 fax.1 \
+@@ -12,11 +14,11 @@
+ MAN5PAGES=faxqueue.5
+ MAN8PAGES=sendfax.8 mgetty.8 callback.8 faxrunqd.8
+ MANSRC=$(MAN1PAGES) $(MAN4PAGES) $(MAN5PAGES) $(MAN8PAGES)
+-MAN1DIR=/usr/local/man/man1
+-MAN4DIR=/usr/local/man/man4
+-MAN5DIR=/usr/local/man/man5
+-MAN8DIR=/usr/local/man/man8
+-INFODIR=/usr/local/info
++MAN1DIR=$(PREFIX)/usr/share/man/man1
++MAN4DIR=$(PREFIX)/usr/share/man/man4
++MAN5DIR=$(PREFIX)/usr/share/man/man5
++MAN8DIR=$(PREFIX)/usr/share/man/man8
++INFODIR=$(PREFIX)/usr/share/info
+
+ #
+ # formatted man pages
+@@ -26,18 +28,19 @@
+
+ all:
+
+-doc-all: mgetty.asc mgetty.info mgetty.dvi mgetty.ps fmt-manpages $(MANSRC)
++doc-all: mgetty.info mgetty.dvi mgetty.ps fmt-manpages $(MANSRC) # mgetty.asc
+
+ manpages: $(MANSRC)
+
+ fmt-manpages:
+ -$(MAKE) `for i in $(MANSRC) ; do echo \`expr $$i : "\([^.]*\)"\`.man ; done `
+
+-mgetty.asc: mgetty.ms
+- -$(NROFF) -ms mgetty.ms >mgetty.asc
++# commented out since I couldn't find texi2roff
++#mgetty.asc: mgetty.ms
++# -$(NROFF) -ms mgetty.ms >mgetty.asc
+
+-mgetty.ms: mgetty.texi
+- -texi2roff -ms <mgetty.texi >mgetty.ms
++#mgetty.ms: mgetty.texi
++# -texi2roff -ms <mgetty.texi >mgetty.ms
+
+ mgetty.html: mgetty.texi
+ -texi2html -verbose mgetty.texi
+@@ -62,10 +65,12 @@
+
+ fullclean: clean
+ rm -f mgetty.ps mgetty.dvi mgetty.aux mgetty.info* mgetty.ms \
+- *.man *.[1-9] mgetty.texi
++ *.man *.[1-9] mgetty.texi # mgetty.asc
++
++install: install.man install.info
+
+-install: $(MANSRC) mgetty.info
+- -mkdir `dirname $(MAN1DIR)` $(MAN1DIR) $(MAN4DIR) $(MAN5DIR) $(MAN8DIR) 2>/dev/null
++install.man: $(MANSRC)
++ -mkdir -p `dirname $(MAN1DIR)` $(MAN1DIR) $(MAN4DIR) $(MAN5DIR) $(MAN8DIR) 2>/dev/null
+ for i in $(MAN1PAGES) ; do \
+ $(INSTALL) -m 644 $$i $(MAN1DIR) ; \
+ done
+@@ -78,8 +83,10 @@
+ for i in $(MAN8PAGES) ; do \
+ $(INSTALL) -m 644 $$i $(MAN8DIR) ; \
+ done
++
++install.info:
+ if [ -f mgetty.info ] ; then\
+- test -d $(INFODIR) || mkdir $(INFODIR) 2>/dev/null ; \
++ test -d $(INFODIR) || mkdir -p $(INFODIR) 2>/dev/null ; \
+ for i in mgetty.info* ; do \
+ $(INSTALL) -m 644 $$i $(INFODIR) ; \
+ done ; \
+@@ -92,8 +99,8 @@
+ ../mgetty0$(VS)doc.tar.gz: doc-all mgetty.html
+ gtar cvvf ../mgetty0$(VS)doc.tar mgetty.texi mgetty.info* \
+ mgetty.dvi mgetty.ps \
+- mgetty.ms mgetty.asc \
+ mgetty.html *.man
++# mgetty.ms mgetty.asc
+ gzip -f -9 -v ../mgetty0$(VS)doc.tar
+
+ # explicit man page dependencies
diff --git a/recipes/mgetty/mgetty-1.1.30/10-doc_faxrunqd.8in b/recipes/mgetty/mgetty-1.1.30/10-doc_faxrunqd.8in
new file mode 100644
index 0000000000..5d29580c50
--- /dev/null
+++ b/recipes/mgetty/mgetty-1.1.30/10-doc_faxrunqd.8in
@@ -0,0 +1,60 @@
+--- mgetty-1.1.30.old/doc/faxrunqd.8in 2002-11-23 11:47:17.000000000 -0500
++++ mgetty-1.1.30/doc/faxrunqd.8in 2003-07-15 16:08:22.000000000 -0400
+@@ -3,7 +3,7 @@
+ .SH NAME
+ faxrunqd \- daemon to send fax jobs queued by faxspool(1)
+ .SH SYNOPSIS
+-.B faxrunqd [-v] [-d] [-l <ttys>] [-u <user>] [-V]
++.B faxrunqd [-v] [-d] [-D] [-l <ttys>] [-u <user or uid>] [ -g <group or gid> ] [-V]
+ .SH DESCRIPTION
+ Runs in the background, and regularily checks the fax queue set up by
+ faxspool(1). Sends all jobs that are due, records results, and takes
+@@ -59,7 +59,7 @@
+ would do (send a mail, delete the JOB directory, execute a named program,
+ etc.). Both programs are fully compatible in this respect.
+
+-.B faxrunqd [-v] [-d] [-l <ttys>] [-u <user>] [-V]
++.B faxrunqd [-v] [-d] [-D] [-l <ttys>] [-u <user or uid>] [ -g <group or gid> ] [-V]
+ .SH OPTIONS
+ .TP
+ .B -v
+@@ -67,17 +67,22 @@
+ .I faxrunqd
+ to write progress information to the log file.
+ .TP
++.B -D
++Tells
++.I faxrunqd
++to run in the background, as a daemon.
++.TP
+ .B -d
+ Tells
+ .I faxrunqd
+ to write debugging information to stdout and the log file (usually used
+-together with -v)
++together with -v).
+ .TP
+ .B -l <ttyS>
+ Specifies the list of modem devices to use. Multiple devices are
+ separated with ':', e.g. '-l ttyS0:ttyS1'.
+ .TP
+-.B -u <user>
++.B -u <user or uid>
+ .I faxrunqd
+ can now (since 1.1.29) run as unprivileged user. If you start it as root
+ from /etc/inittab or from one of the /etc/rc* scripts, it's strongly
+@@ -86,7 +91,13 @@
+ .I faxrunqd
+ drop all its privileges at startup, and run as the specified user. Running
+ .I faxrunqd
+-as root user might lead to security problems - don't do it.
++as root user might lead to security problems - don't do it. This
++parameter takes either a uid or a username as argument.
++.TP
++.B -g <group or gid>
++.I Same effect as above but for the group id. Indicates the group which
++should own the fax files. This parameter takes either a gid or a
++groupname as argument.
+ .TP
+ .B -V
+ print version number and exit
diff --git a/recipes/mgetty/mgetty-1.1.30/12-fax_faxrunqd.in b/recipes/mgetty/mgetty-1.1.30/12-fax_faxrunqd.in
new file mode 100644
index 0000000000..4d043de3b9
--- /dev/null
+++ b/recipes/mgetty/mgetty-1.1.30/12-fax_faxrunqd.in
@@ -0,0 +1,178 @@
+--- mgetty-1.1.30/fax/faxrunqd.in.orig 2003-09-13 11:04:12.000000000 +0000
++++ mgetty-1.1.30-5.1/fax/faxrunqd.in 2003-09-13 11:12:47.000000000 +0000
+@@ -13,6 +13,9 @@
+ #
+ # Change Log:
+ #
++# Debian 1.1.30-5.1 2003/07/20 Andreas Barth <aba@not.so.argh.org>
++# Can specify group per commandline.
++#
+ # $Log: faxrunqd.in,v $
+ # Revision 1.63 2002/11/23 16:52:18 gert
+ # make messages more clear, print warning if running as root
+@@ -45,6 +48,11 @@
+ # a "low prio" job for phone number 123 could be attached to a high prio
+ # job to 123, and thus be sent before a high prio job to 456)
+ #
++# Debian 1.1.28-4 2002/11/27 18:32:23 Wolfgang Sourdeau <was@debian.org>
++# Quit quietly when received signal TERM or HUP since it is expected the
++# user knows what is happening already. The quit message is still written
++# into the logfile.
++#
+ # Revision 1.56 2002/01/04 17:52:42 gert
+ # pass sendfax exit code as 2nd argument to success/failure program
+ #
+@@ -55,6 +63,9 @@
+ # Revision 1.54 2001/12/16 14:26:25 gert
+ # stop queue handling if a file named 'stop' exists
+ #
++# Add a -D option to allow for running in the background as a Daemon
++# Philip Hands <phil@hands.com>
++#
+ # Revision 1.53 2000/08/06 14:28:37 gert
+ # go from using $fax_spool_out/.last_run to VARRUNDIR/faxqueue_done
+ #
+@@ -129,6 +140,8 @@
+ #
+ #
+ require 5.004;
++
++use Fcntl;
+ use POSIX;
+ use IO::Handle;
+ use Getopt::Std;
+@@ -143,10 +156,10 @@
+ $mail='@MAILER@';
+
+ $faxrunq_cf='@CONFDIR@/faxrunq.config';
+-$fax_acct='@FAX_SPOOL@/acct.log';
+-$faxrd_log='@FAX_SPOOL@/faxrunqd.log';
++$fax_acct='/var/log/mgetty/fax/acct.log';
++$faxrd_log='/var/log/mgetty/fax/faxrunqd.log';
+
+-$faxrd_pid='@FAX_SPOOL_OUT@/faxrunqd.pid';
++$faxrd_pid='/var/run/mgetty-fax/faxrunqd.pid';
+ $last_run='@FAX_SPOOL_OUT@/faxqueue_done';
+
+ $policy_config='';
+@@ -189,8 +202,10 @@
+ $opt_V = 0; # print version number
+ $opt_l = ''; # ttys to use
+ $opt_u = ''; # user id to setuid() to
+-getopts( 'dvVl:u:' ) ||
+- die "Valid options: -d (debug), -v (verbose), -l tty<n>, -u uid, -V (version)\n";
++$opt_g = ''; # group id to setgid() to
++$opt_D = 0; # daemon
++getopts( 'DdvVl:u:g:' ) ||
++ die "Valid options: -D (daemon), -d (debug), -v (verbose), -l tty<n>, -u uid, -g uid, -V (version)\n";
+
+ if ( $opt_d ) { $opt_v=1; }
+
+@@ -201,32 +216,63 @@
+ mgetty+sendfax by Gert Doering
+ $rcs_id
+
+-config file read from '$faxrunq_cf'
++config read from '$faxrunq_cf'
+
+ EOF
+ exit 0;
+ }
+
++$uid=$>;
++$gid=$);
++
+ if ( $opt_u ne '' ) # set user ID to $opt_u
+ {
+- my ( $uid, $gid ) = ( getpwnam( $opt_u ) )[2,3];
++ ( $uid, $gid ) = ( ( $opt_u =~ /^[0-9]+$/ )
++ ? getpwuid( $opt_u )
++ : getpwnam( $opt_u ) )[2,3];
+
+ if ( !defined($uid) || !defined($gid) )
+ { die "$0: no such user: '$opt_u'\n"; }
+
+ print "change user ID to '$opt_u' (numeric uid: $uid, gid: $gid)\n"
+ if $opt_d;
+- $( = $) = $gid;
+- $< = $> = $uid;
+-
+- if ( $> != $uid || $) != $gid )
+- { die "$0: can't set uid to $uid / gid to $gid: $!\n"; }
+ }
++
++if ( $opt_g ne '' )
++ {
++ $gid = ( ( $opt_g =~ /^[0-9]+$/ )
++ ? getgrgid( $opt_g )
++ : getgrnam( $opt_g ) )[2];
++ die "$0: no such group: '$opt_g'\n" unless defined ($gid);
++ }
++
++$( = $) = $gid;
++$< = $> = $uid;
++
++if ( $> != $uid || $) != $gid )
++ { die "$0: can't set uid to $uid / gid to $gid: $!\n"; }
++
+ if ( $> == 0 ) # root check
+ {
+ print STDERR "$0: running with root privileges is not recommended\n";
+ }
+
++# fork as a daemon if invoked with -D
++if ( $opt_D ) {
++ $pid = fork ;
++ die "Cannot fork: $!" unless defined $pid ;
++ if (0 == $pid) {
++ # Child process: become leader of a new session, lose STDIN, log STDOUT/ERR
++ POSIX::setsid();
++ umask(022);
++ open(STDIN, "/dev/null") ;
++ open(STDOUT, ">&LOG") ;
++ open(STDERR, ">&LOG") ;
++ } else {
++ exit 0; # parent process
++ }
++}
++
+ #
+ # startup... write PID file, make sure no other faxrunqd runs
+ #
+@@ -262,7 +308,7 @@
+
+ $SIG{USR1} = \&signal_handler_USR1; # roll log file
+ $roll_log_file_requested = 0;
+-$roll_level=3; # keep 3 old files around
++$roll_level=7; # keep 7 old files around
+
+ $SIG{USR2} = \&signal_handler_USR2; # graceful exit
+ $graceful_exit_requested = 0;
+@@ -355,7 +401,7 @@
+ #
+ # open log file
+ #
+-open( LOG, ">>$faxrd_log" ) ||
++sysopen( LOG, "$faxrd_log", O_CREAT | O_APPEND | O_WRONLY, 0640 ) ||
+ die "can't write log file '$faxrd_log'";
+ LOG->autoflush(1);
+ print LOG "\n" . localtime() .": faxrunqd starting, pid=$$\n";
+@@ -552,7 +598,7 @@
+ $roll_log_file_requested=0;
+
+ # start new
+- open( LOG, ">$faxrd_log" ) ||
++ sysopen( LOG, "$faxrd_log", O_CREAT | O_APPEND | O_WRONLY, 0640 ) ||
+ die "can't re-open log file '$faxrd_log'";
+ LOG->autoflush(1);
+ print LOG localtime() .": -- new log file started --\n";
+@@ -1639,7 +1685,8 @@
+ {
+ my $sig = shift;
+
+- print "\nfaxrunqd: signal handler: got signal $sig, goodbye...\n";
++ print "\nfaxrunqd: signal handler: got signal $sig, goodbye...\n"
++ if ($sig ne 'TERM' && $sig ne 'HUP' && $sig ne 'USR2');
+ print LOG "\nfaxrunqd: signal handler: got signal $sig, goodbye...\n";
+
+ # save tty statistics
diff --git a/recipes/mgetty/mgetty-1.1.30/13-fax_faxspool.in b/recipes/mgetty/mgetty-1.1.30/13-fax_faxspool.in
new file mode 100644
index 0000000000..ba7a994258
--- /dev/null
+++ b/recipes/mgetty/mgetty-1.1.30/13-fax_faxspool.in
@@ -0,0 +1,237 @@
+--- mgetty-1.1.30.orig/fax/faxspool.in 2002-11-23 10:14:57.000000000 -0500
++++ mgetty-1.1.30/fax/faxspool.in 2003-04-27 23:48:56.000000000 -0400
+@@ -70,7 +70,7 @@
+ FAX_SPOOL=@FAX_SPOOL@
+ FAX_SPOOL_OUT=@FAX_SPOOL_OUT@
+ FAX_SEQ=$FAX_SPOOL_OUT/.Sequence
+-FAX_SEQ_LOCKDIR=$FAX_SPOOL_OUT/locks
++FAX_SEQ_LOCKDIR=/var/lock/fax
+ FAX_SEQ_LOCK=$FAX_SEQ_LOCKDIR/LCK..seq
+ LAST_RUN=@FAX_SPOOL_OUT@/faxqueue_done
+
+@@ -145,7 +145,7 @@
+ #
+ fs_cvt_pbm()
+ {
+- pbm2g3 $1 >$2.001
++ pbm2g3 "$1" >"$2".001
+ }
+
+ #
+@@ -153,7 +153,7 @@
+ #
+ fs_cvt_pgm()
+ {
+- pgmtopbm $1 | pbm2g3 >$2.001
++ pgmtopbm "$1" | pbm2g3 >"$2".001
+ }
+
+ #
+@@ -161,7 +161,7 @@
+ #
+ fs_cvt_ppm()
+ {
+- ppmtopgm $1 | pgmtopbm | pbm2g3 >$2.001
++ ppmtopgm "$1" | pgmtopbm | pbm2g3 >"$2".001
+ }
+
+ #
+@@ -171,7 +171,7 @@
+ #
+ fs_cvt_g3()
+ {
+- g3cat $1 >$2.001
++ g3cat "$1" >"$2".001
+ }
+
+ #
+@@ -183,14 +183,14 @@
+ fs_cvt_xwd()
+ {
+ REDUCE="cat"
+- test X$3 = X-n && REDUCE="pnmscale -yscale 0.5"
++ test X"$3" = X-n && REDUCE="pnmscale -yscale 0.5"
+
+- xwdtopnm $1 |\
++ xwdtopnm "$1" |\
+ pnmscale -xysize 1728 2000 |\
+ $REDUCE |\
+ ppmtopgm |\
+ pgmtopbm |\
+- pbm2g3 >$2.001
++ pbm2g3 >"$2".001
+ }
+
+ #
+@@ -201,14 +201,14 @@
+ fs_cvt_gif()
+ {
+ REDUCE="cat"
+- test X$3 = X-n && REDUCE="pnmscale -yscale 0.5"
++ test X"$3" = X-n && REDUCE="pnmscale -yscale 0.5"
+
+- giftoppm $1 |\
++ giftopnm "$1" |\
+ pnmscale -xysize 1728 2000 |\
+ $REDUCE |\
+ ppmtopgm |\
+ pgmtopbm |\
+- pbm2g3 >$2.001
++ pbm2g3 >"$2".001
+ }
+
+ #
+@@ -219,14 +219,14 @@
+ fs_cvt_tif()
+ {
+ REDUCE="cat"
+- test X$3 = X-n && REDUCE="pnmscale -yscale 0.5"
++ test X"$3" = X-n && REDUCE="pnmscale -yscale 0.5"
+
+- tifftopnm $1 |\
++ tifftopnm "$1" |\
+ pnmscale -xysize 1728 2000 |\
+ $REDUCE |\
+ ppmtopgm |\
+ pgmtopbm |\
+- pbm2g3 >$2.001
++ pbm2g3 >"$2".001
+ }
+
+ #
+@@ -235,11 +235,11 @@
+ #
+ fs_cvt_lj()
+ {
+- if [ X$3 = X-n ]
++ if [ X"$3" = X-n ]
+ then
+- hp2log3 -r$2 <$1
++ hp2log3 -r"$2" <"$1"
+ else
+- hp2hig3 -r$2 <$1
++ hp2hig3 -r"$2" <"$1"
+ fi
+ }
+
+@@ -251,10 +251,10 @@
+ fs_cvt_ps()
+ {
+ driver="$GS_DRIVER_HI"
+- test X$3 = X-n && driver="$GS_DRIVER_LO"
++ test X"$3" = X-n && driver="$GS_DRIVER_LO"
+
+- cat $1 |
+- gs $driver -sOutputFile=$2%03d -dNOPAUSE -q -dSAFER -
++ cat "$1" |
++ gs $driver -sOutputFile="$2"%03d -dNOPAUSE -q -dSAFER -
+ }
+
+ #
+@@ -268,19 +268,19 @@
+ # via Ghostscript:
+
+ driver="$GS_DRIVER_HI"
+- test X$3 = X-n && driver="$GS_DRIVER_LO"
++ test X"$3" = X-n && driver="$GS_DRIVER_LO"
+
+- gs $driver -sOutputFile=$2%03d -dNOPAUSE \
+- -- gslp.ps -fCourier-Bold10 -B $1
++ gs $driver -sOutputFile="$2"%03d -dNOPAUSE \
++ -- gslp.ps -fCourier-Bold10 -B "$1"
+
+ #####
+ # via hp2pbm:
+ # (convert "LF" to "CR+LF" via awk)
+
+ # pgm=hp2hig3
+-# test X$3 = X-n && pgm=hp2log3
++# test X"$3" = X-n && pgm=hp2log3
+ #
+-# $AWK '{ printf "%s\r\n", $0 }' $1 | $pgm -r$2
++# $AWK '{ printf "%s\r\n", $0 }' "$1" | $pgm -r"$2"
+
+ #####
+ # via pbmtext (not really recommended):
+@@ -288,13 +288,13 @@
+
+ ## Select appropriate font
+ # font=$PBMFONT_BODY_F
+-# test X$3 = X-n && font=$PBMFONT_BODY_N
++# test X"$3" = X-n && font=$PBMFONT_BODY_N
+ # Determine how many pages text will be split in to. Uses default pagelen.
+-# nr=`pgx < $1`
++# nr=`pgx < "$1"`
+ # Convert each page into a separate G3 file. Uses default pagelen (60).
+ # page=1
+ # while [ $page -le $nr ]; do
+-# pgx $page < $1 | pbmtext -font $font | pbm2g3 >$2.$page
++# pgx $page < "$1" | pbmtext -font $font | pbm2g3 >"$2".$page
+ # page=`expr $page + 1`
+ # done
+ }
+@@ -306,7 +306,7 @@
+ #
+ fs_cvt_dvi()
+ {
+- if [ X$3 = X-n ]
++ if [ X"$3" = X-n ]
+ then
+ driver="$GS_DRIVER_LO" ; dvipscfg="-P dfaxlo"
+ else
+@@ -316,18 +316,18 @@
+ # if you do not have the dfaxlo(w)/dfaxhigh dvips modes configured,
+ # remove "$dvipscfg" from the dvips command line below [or configure them!]
+
+- dvips $dvipscfg $1 -o \
+- !"gs $driver -sOutputFile=$2%03d -dNOPAUSE -dSAFER -q -"
++ dvips $dvipscfg "$1" -o \
++ !"gs $driver -sOutputFile="$2"%03d -dNOPAUSE -dSAFER -q -"
+
+ # for those that only have the old "dvialw":
+ #
+ # dvialw <$file |
+-# gs $driver -sOutputFile=$2%03d -dNOPAUSE -dSAFER -q -
++# gs $driver -sOutputFile="$2"%03d -dNOPAUSE -dSAFER -q -
+
+ # for those that have dvi2ps and not dvips:
+ #
+ # dvi2ps -r -q $q |
+-# gs $driver -sOutputFile=$2%03d -dNOPAUSE -dSAFER -q -
++# gs $driver -sOutputFile="$2"%03d -dNOPAUSE -dSAFER -q -
+
+ }
+
+@@ -341,11 +341,11 @@
+ fs_cvt_pdf()
+ {
+ driver="$GS_DRIVER_HI"
+- test X$3 = X-n && driver="$GS_DRIVER_LO"
++ test X"$3" = X-n && driver="$GS_DRIVER_LO"
+
+- cat $1 |
++ cat "$1" |
+ acroread -toPostScript |
+- gs $driver -sOutputFile=$2%03d -dNOPAUSE -q -dSAFER -
++ gs $driver -sOutputFile="$2"%03d -dNOPAUSE -q -dSAFER -
+ }
+
+
+@@ -487,7 +487,7 @@
+ then
+ user="$2"
+ else
+- $echo "not authorized to use \`\`-u $2'' switch." >&2
++ $echo "not authorized to use \`\`-u "$2"'' switch." >&2
+ exit 3
+ fi
+ shift ; shift
+@@ -547,7 +547,7 @@
+ exit 3
+ fi
+
+-phone=$1 ; shift
++phone="$1" ; shift
+ if expr "$phone" : "[-0-9TtPpWw,;]*$" >/dev/null ; then :
+ else
+ alias="$phone"
diff --git a/recipes/mgetty/mgetty-1.1.30/14-frontends_X11_viewfax-2.5_Makefile b/recipes/mgetty/mgetty-1.1.30/14-frontends_X11_viewfax-2.5_Makefile
new file mode 100644
index 0000000000..d218b6e7cc
--- /dev/null
+++ b/recipes/mgetty/mgetty-1.1.30/14-frontends_X11_viewfax-2.5_Makefile
@@ -0,0 +1,60 @@
+--- mgetty-1.1.28.old/frontends/X11/viewfax-2.5/Makefile 2002-08-03 17:26:26.000000000 -0400
++++ mgetty-1.1.28/frontends/X11/viewfax-2.5/Makefile 2002-08-03 17:30:26.000000000 -0400
+@@ -21,15 +21,15 @@
+
+ ####### Site-specific definitions #######
+ # Destination directories and installation program for make install
+-BINDIR = /usr/local/bin
+-LIBDIR = /usr/local/lib
+-MANDIR = /usr/local/man/man1
+-INSTALL = /usr/ucb/install
++BINDIR = $(DESTDIR)/usr/bin
++DOCDIR = $(DESTDIR)/usr/share/doc/mgetty-viewfax
++MANDIR = $(DESTDIR)/usr/share/man/man1
++INSTALL = /usr/bin/install
+ RM = rm -f
+ # Location of help file
+-HELP = \"$(LIBDIR)/viewfax.tif\"
++HELP = \"$(DOCDIR)/viewfax.tif\"
+ # optimisation level, debug etc
+-OPT = -g -O2 -Wno-uninitialized -ansi -pedantic
++OPT = -O2 -Wno-uninitialized -ansi -pedantic
+ # C compiler and libraries
+ # vanilla sysv
+ #CC = cc
+@@ -43,22 +43,22 @@
+ #LIBS =
+ # sun solaris2 with gcc on supersparc:
+ CC = gcc
+-CFLAGS = -Wall $(OPT) -DHELPFILE=$(HELP) -msupersparc -I/usr/openwin/include
+-LDFLAGS = $(OPT) -L/usr/openwin/lib -R/usr/openwin/lib
++CFLAGS = -Wall $(OPT) -DHELPFILE=$(HELP) -I/usr/openwin/include
++LDFLAGS = $(OPT) -L/usr/X11R6/lib -lX11
+ LIBS =
+
+ ####### End of configurable definitions #######
+ OBJS = viewfax.o faxinput.o faxinit.o faxexpand.o
+
+ viewfax: $(OBJS)
+- $(CC) $(LDFLAGS) -o viewfax $(OBJS) -lX11 $(LIBS)
++ $(CC) $(LDFLAGS) -o viewfax $(OBJS) $(LIBS)
+
+ g3hack: g3hack.c
+
+ install: viewfax
+ $(INSTALL) -s -m 755 viewfax $(BINDIR)
+ $(INSTALL) -m 644 viewfax.man $(MANDIR)/viewfax.1
+- $(INSTALL) -m 644 viewfax.tif $(LIBDIR)
++ $(INSTALL) -m 644 viewfax.tif $(DOCDIR)/
+
+ D = viewfax-$(VERS)
+ FILES = $D/README $D/COPYING $D/ChangeLog $D/Imakefile $D/Makefile \
+@@ -75,7 +75,7 @@
+
+ shar:; (cd ..; shar -a -n$D -M -sfdc@cliwe.ping.de -c -o $D/part -l64 $(FILES))
+
+-clean:; $(RM) *.o *~ core
++clean:; $(RM) *.o *~ core viewfax
+
+ viewfax.o: faxexpand.h
+ faxinput.o: faxexpand.h
diff --git a/recipes/mgetty/mgetty-1.1.30/23-samples_new_fax.mime4 b/recipes/mgetty/mgetty-1.1.30/23-samples_new_fax.mime4
new file mode 100644
index 0000000000..e5f3d0a061
--- /dev/null
+++ b/recipes/mgetty/mgetty-1.1.30/23-samples_new_fax.mime4
@@ -0,0 +1,77 @@
+--- mgetty-1.1.30.old/samples/new_fax.mime4 1999-04-17 06:38:50.000000000 -0400
++++ mgetty-1.1.30/samples/new_fax.mime4 2003-07-01 23:45:07.000000000 -0400
+@@ -37,13 +37,14 @@
+ PATH=/usr/sbin:/usr/local/bin:/usr/bin:/bin:$PATH
+
+ # Select image type by uncommenting one of the following lines:
+-#PBMTOX=pnmtopng ; MIME_TYPE="image/png" ; FILE_EXTN=png
+-PBMTOX=ppmtogif ; MIME_TYPE="image/gif" ; FILE_EXTN=gif
++PBMTOX=pnmtopng ; MIME_TYPE="image/png" ; FILE_EXTN=png
++#PBMTOX=ppmtogif ; MIME_TYPE="image/gif" ; FILE_EXTN=gif
+ #PBMTOX=pnmtotiff ; MIME_TYPE="image/tiff" ; FILE_EXTN=tif
+ # PBM files may be huge
+ #PBMTOX=cat ; MIME_TYPE="image/x-portable-bitmap" ; FILE_EXTN=pbm
+ # compressed PBM files
+ #PBMTOX=gzip ; MIME_TYPE="application/octet-stream"; FILE_EXTN=pbm.gz
++#PBMTOX=NONE ; MIME_TYPE="image/fax-g3"; FILE_EXTN=g3
+
+ # The binaries we need; please check carefully !!!
+ BASENAME=basename
+@@ -63,14 +64,23 @@
+
+ # Some miscellaneous data and filenames.
+ TMP=/tmp
+-MAIL_MESS=$TMP/MESS_$$
+-ERRO_MESS=$TMP/ERRO_$$
+-IMAG_FILE=$TMP/TIFF_$$
+-MIME_MESS=$TMP/MAIL_$$
++MAIL_MESS=`/bin/tempfile -pMESS_`
++ERRO_MESS=`/bin/tempfile -pERRO_`
++IMAG_FILE=`/bin/tempfile -pTIFF_`
++MIME_MESS=`/bin/tempfile -pMAIL_`
++if [ ! -f $MAIL_MESS ] ||\
++ [ ! -f $ERRO_MESS ] ||\
++ [ ! -f $IMAG_FILE ] ||\
++ [ ! -f $MIME_MESS ]
++then
++ echo "Could not create one of the temporary files. Aborting...";
++ exit 1;
++fi
++
+ umask 077
+
+ # Clean up from previous invocations and trap errors
+-$RM -f $MAIL_MESS $ERRO_MESS $IMAG_FILE $MIME_MESS
++# $RM -f $MAIL_MESS $ERRO_MESS $IMAG_FILE $MIME_MESS
+ trap "$RM -f $MAIL_MESS $ERRO_MESS $IMAG_FILE $MIME_MESS; exit" 0 1 2 15
+
+ # Essential lines to put into the header of a MIME mail.
+@@ -86,7 +96,7 @@
+ ATTACHMENT_ENDLINE="--attachment--"
+
+ # Now we build our MIME mailheader using commandline arguments.
+-$ECHO "Subject: incoming FAX from $2 with $3 pages" > $MAIL_MESS
++$ECHO "Subject: incoming FAX from $2 with $3 pages" >> $MAIL_MESS
+ $ECHO "$HEADERLINE_1" >> $MAIL_MESS
+ $ECHO "$HEADERLINE_2" >> $MAIL_MESS
+ $ECHO "" >> $MAIL_MESS
+@@ -109,6 +119,9 @@
+ #
+ for i in $@
+ do
++if [ "$PBMTOX" = "NONE" ]; then
++ IMAG_FILE=$i
++else
+ # We use the second character in the filename to identify the
+ # resolution of our incoming fax, so we can easily scale the fax for
+ # display on a screen.
+@@ -126,7 +139,8 @@
+ # handle standard input correctly.
+ $CAT $i 2>> $ERRO_MESS \
+ | $G3TOPBM $STRETCH 2>> $ERRO_MESS \
+- | $PBMTOX >> $IMAG_FILE 2>> $ERRO_MESS
++ | $PBMTOX > $IMAG_FILE 2>> $ERRO_MESS
++fi
+ #
+ # Now we put the header for each attachment into our MIME mail.
+ $ECHO "$ATTACHMENT_HEADERLINE_1" >> $MIME_MESS
diff --git a/recipes/mgetty/mgetty-1.1.30/24-voice_include_paths.h b/recipes/mgetty/mgetty-1.1.30/24-voice_include_paths.h
new file mode 100644
index 0000000000..3503080ad8
--- /dev/null
+++ b/recipes/mgetty/mgetty-1.1.30/24-voice_include_paths.h
@@ -0,0 +1,15 @@
+--- mgetty-1.1.27.orig/voice/include/paths.h
++++ mgetty-1.1.27/voice/include/paths.h
+@@ -19,10 +19,10 @@
+ * the device name.
+ */
+
+-#define VGETTY_LOG_PATH "/var/log/vgetty.%s"
++#define VGETTY_LOG_PATH "/var/log/mgetty/vg_%s.log"
+
+ /*
+ * Filename of the logfile for vm.
+ */
+
+-#define VM_LOG_PATH "/var/log/vm.log"
++#define VM_LOG_PATH "/var/log/mgetty/vm.log"
diff --git a/recipes/mgetty/mgetty-1.1.30/26-voice_libpvf_usr.c b/recipes/mgetty/mgetty-1.1.30/26-voice_libpvf_usr.c
new file mode 100644
index 0000000000..3396a5616f
--- /dev/null
+++ b/recipes/mgetty/mgetty-1.1.30/26-voice_libpvf_usr.c
@@ -0,0 +1,16 @@
+--- mgetty-1.1.27.orig/voice/libpvf/usr.c
++++ mgetty-1.1.27/voice/libpvf/usr.c
+@@ -103,9 +103,13 @@
+ }
+ }
+ gsm_encode(r, s, d);
++#if defined(old_USR_GSM_with_head_and_tail_bytes)
+ fwrite((char *)gsm_head, 2, 1, fd_out);
++#endif
+ fwrite((char *)d, sizeof(d), 1, fd_out);
++#if defined(old_USR_GSM_with_head_and_tail_bytes)
+ fwrite((char *)gsm_tail, 3, 1, fd_out);
++#endif
+ }
+ gsm_destroy(r);
+ return(OK);
diff --git a/recipes/mgetty/mgetty-1.1.30/36-voice_voice.conf-dist b/recipes/mgetty/mgetty-1.1.30/36-voice_voice.conf-dist
new file mode 100644
index 0000000000..854fbc12df
--- /dev/null
+++ b/recipes/mgetty/mgetty-1.1.30/36-voice_voice.conf-dist
@@ -0,0 +1,11 @@
+--- mgetty-1.1.30.orig/voice/voice.conf-dist 2002-12-15 14:43:49.000000000 -0500
++++ mgetty-1.1.30/voice/voice.conf-dist 2003-04-27 23:53:14.000000000 -0400
+@@ -51,7 +51,7 @@
+ #
+
+ phone_owner root
+-phone_group phone
++phone_group voice
+ phone_mode 0660
+
+ #
diff --git a/recipes/mgetty/mgetty-1.1.30/37-Makefile b/recipes/mgetty/mgetty-1.1.30/37-Makefile
new file mode 100644
index 0000000000..49219c1e14
--- /dev/null
+++ b/recipes/mgetty/mgetty-1.1.30/37-Makefile
@@ -0,0 +1,141 @@
+--- mgetty-1.1.30.orig/Makefile 2002-12-16 08:08:23.000000000 -0500
++++ mgetty-1.1.30/Makefile 2003-04-28 00:25:24.000000000 -0400
+@@ -107,7 +107,7 @@
+ # prompt first. Don't forget to activate the /AutoPPP/ line in login.config!
+ #
+ #CFLAGS=-Wall -O2 -pipe -DSECUREWARE -DUSE_POLL
+-CFLAGS=-O2 -Wall -pipe
++CFLAGS=-O2 -Wall -pipe -DAUTO_PPP -DFIDO
+ #CFLAGS=-O -DSVR4
+ #CFLAGS=-O -DSVR4 -DSVR42
+ #CFLAGS=-O -DUSE_POLL
+@@ -169,7 +169,7 @@
+ #
+ # if your systems doesn't have one, use the shell script that I provide
+ # in "inst.sh" (taken from X11R5). Needed on IRIX5.2
+-INSTALL=install -c -o bin -g bin
++INSTALL=install -c
+ #INSTALL=install -c -o root -g wheel # NeXT/BSD
+ #INSTALL=/usr/ucb/install -c -o bin -g bin # AIX, Solaris 2.x
+ #INSTALL=installbsd -c -o bin -g bin # OSF/1, AIX 4.1, 4.2
+@@ -177,11 +177,11 @@
+ #
+ # prefix, where most (all?) of the stuff lives, usually /usr/local or /usr
+ #
+-prefix=/usr/local
++prefix=$(DESTDIR)/usr
+ #
+ # prefix for all the spool directories (usually /usr/spool or /var/spool)
+ #
+-spool=/var/spool
++spool=$(DESTDIR)/var/spool
+ #
+ # where the mgetty + sendfax binaries live (used for "make install")
+ #
+@@ -193,11 +193,11 @@
+ #
+ # where the font+coverpage files go
+ #
+-LIBDIR=$(prefix)/lib/mgetty+sendfax
++LIBDIR=$(prefix)/lib/mgetty-fax
+ #
+ # where the configuration files (*.config, aliases, fax.allow/deny) go to
+ #
+-CONFDIR=$(prefix)/etc/mgetty+sendfax
++CONFDIR=$(DESTDIR)/etc/mgetty
+ #CONFDIR=/etc/default/
+ #
+ #
+@@ -220,31 +220,33 @@
+ # (it's possible to run faxrunq(d) as root, but the FAX_OUT_USER
+ # MUST NOT BE root or any other privileged account).
+ #
+-FAX_OUT_USER=fax
++FAX_OUT_USER=uucp
+ #
+ #
+ # Where section 1 manual pages should be placed
+-MAN1DIR=$(prefix)/man/man1
++MAN1DIR=$(prefix)/share/man/man1
+ #
+ # Where section 4 manual pages (mgettydefs.4) should be placed
+-MAN4DIR=$(prefix)/man/man4
++MAN4DIR=$(prefix)/share/man/man4
+ #
+ # Section 5 man pages (faxqueue.5)
+-MAN5DIR=$(prefix)/man/man5
++MAN5DIR=$(prefix)/share/man/man5
+ #
+ # Section 8 man pages (sendfax.8)
+-MAN8DIR=$(prefix)/man/man8
++MAN8DIR=$(prefix)/share/man/man8
+ #
+ # Where the GNU Info-Files are located
+ #
+-INFODIR=$(prefix)/info
++INFODIR=$(prefix)/share/info
+ #
+ #
+ # A shell that understands bourne-shell syntax
+ # Usually this will be /bin/sh or /usr/bin/sh, but bash or ksh are fine.
+ # (on some ultrix systems, you may need /bin/sh5 here)
+ #
+-SHELL=/bin/sh
++# On Debian GNU/Linux, bash is a required package so we can use it to solve
++# bug #149851.
++SHELL=/bin/bash
+ #
+ # If you have problems with the awk-programs in the fax/ shell scripts,
+ # try using "nawk" or "gawk" (or whatever works...) here
+@@ -274,7 +276,7 @@
+ # please use the "mg.echo" program provided in the compat/ subdirectory.
+ # Set ECHO="mg.echo" and INSTALL_MECHO to mg.echo
+ #
+-ECHO="echo"
++ECHO="echo -e"
+ #
+ # INSTALL_MECHO=mg.echo
+
+@@ -284,7 +286,7 @@
+
+ # To maintain security, I recommend creating a new group for
+ # users who are allowed to manipulate the recorded voice messages.
+-PHONE_GROUP=phone
++PHONE_GROUP=voice
+ PHONE_PERMS=770
+
+ # Add -DNO_STRSTR to CFLAGS if you don't have strstr().
+@@ -594,7 +596,7 @@
+ -test -d $(SBINDIR) || ( ./mkidirs $(SBINDIR) ; chmod 755 $(SBINDIR) )
+ -mv -f $(SBINDIR)/mgetty $(SBINDIR)/mgetty.old
+ -mv -f $(SBINDIR)/sendfax $(SBINDIR)/sendfax.old
+- $(INSTALL) -s -m 700 mgetty $(SBINDIR)
++ $(INSTALL) -s -m 755 mgetty $(SBINDIR)
+ $(INSTALL) -s -m 755 sendfax $(SBINDIR)
+ #
+ # data files + directories
+@@ -663,12 +665,15 @@
+ #
+ # documentation
+ #
+-install.doc:
+- cd doc ; $(MAKE) install INSTALL="$(INSTALL)" \
++install.man:
++ cd doc ; $(MAKE) install.man INSTALL="$(INSTALL)" \
+ MAN1DIR=$(MAN1DIR) \
+ MAN4DIR=$(MAN4DIR) \
+ MAN5DIR=$(MAN5DIR) \
+- MAN8DIR=$(MAN8DIR) \
++ MAN8DIR=$(MAN8DIR)
++
++install.info:
++ cd doc ; $(MAKE) install.info INSTALL="$(INSTALL)" \
+ INFODIR=$(INFODIR)
+
+ #
+@@ -736,3 +741,5 @@
+ conf_sf.h
+ tio.o : tio.c mgetty.h ugly.h tio.h
+ utmp.o : utmp.c mgetty.h ugly.h mg_utmp.h
++
++.PHONY: install install.bin install.man install.info
diff --git a/recipes/mgetty/mgetty-1.1.30/39-mgetty.cfg.in b/recipes/mgetty/mgetty-1.1.30/39-mgetty.cfg.in
new file mode 100644
index 0000000000..835ed08729
--- /dev/null
+++ b/recipes/mgetty/mgetty-1.1.30/39-mgetty.cfg.in
@@ -0,0 +1,12 @@
+--- mgetty-1.1.27.orig/mgetty.cfg.in
++++ mgetty-1.1.27/mgetty.cfg.in
+@@ -20,6 +20,9 @@
+ # access the modem(s) with @SPEED@ bps
+ speed @SPEED@
+
++# use an alternate issue file, to avoid being bitten by linuxlogo
++issue-file /etc/issue.mgetty
++
+ # use these options to make the /dev/tty-device owned by "uucp.uucp"
+ # and mode "rw-rw-r--" (0664). *LEADING ZERO NEEDED!*
+ #port-owner uucp
diff --git a/recipes/mgetty/mgetty-1.1.30/40-locks.c_bug153394 b/recipes/mgetty/mgetty-1.1.30/40-locks.c_bug153394
new file mode 100644
index 0000000000..0de2fb6b0f
--- /dev/null
+++ b/recipes/mgetty/mgetty-1.1.30/40-locks.c_bug153394
@@ -0,0 +1,60 @@
+--- mgetty-1.1.28.old/locks.c 2001-01-06 12:46:34.000000000 -0500
++++ mgetty-1.1.28/locks.c 2002-08-03 16:25:02.000000000 -0400
+@@ -394,9 +394,42 @@
+
+ #else /* not SVR4 */
+
++static char * unslash_name _P1 ( (device),
++ char *device )
++{
++ char *lock_device, *ldev_begin, *ldevice_orig;
++
++ ldevice_orig = malloc( strlen (device) + 1 );
++ sprintf( ldevice_orig, "%s", device );
++
++ lock_device = strchr( ldevice_orig, '/' );
++ while (lock_device)
++ {
++ *lock_device = '_';
++ lock_device = strchr( lock_device, '/' );
++ }
++
++ if ( *ldevice_orig == '_' )
++ {
++ lock_device = strchr( ldevice_orig + 1, '_' );
++ if (! lock_device)
++ lock_device = ldevice_orig;
++ lock_device++;
++ }
++ else
++ lock_device = ldevice_orig;
++
++ ldev_begin = malloc( strlen( lock_device ) + 1 );
++ sprintf( ldev_begin, "%s", lock_device );
++ free( ldevice_orig );
++
++ return ldev_begin;
++}
++
+ static char * get_lock_name _P2( (lock_name, device),
+ char * lock_name, char * device )
+ {
++ char *lock;
+ #ifdef LOCKS_LOWERCASE
+ /* sco locking convention -> change all device names to lowercase */
+
+@@ -425,10 +458,10 @@
+ #endif /* LOCKS_LOWERCASE */
+
+ /* throw out all directory prefixes */
+- if ( strchr( device, '/' ) != NULL )
+- device = strrchr( device, '/' ) +1;
+-
+- sprintf( lock_name, LOCK, device);
++
++ lock = unslash_name ( device );
++ sprintf( lock_name, LOCK, lock );
++ free ( lock );
+
+ return lock_name;
+ }
diff --git a/recipes/mgetty/mgetty-1.1.30/41-ugly-redo-ring.c_bug128668 b/recipes/mgetty/mgetty-1.1.30/41-ugly-redo-ring.c_bug128668
new file mode 100644
index 0000000000..fa07ee1b8e
--- /dev/null
+++ b/recipes/mgetty/mgetty-1.1.30/41-ugly-redo-ring.c_bug128668
@@ -0,0 +1,27 @@
+--- mgetty-1.1.30.orig/ring.c Thu Dec 5 21:29:10 2002
++++ mgetty-1.1.30/ring.c Mon Sep 29 20:30:23 2003
+@@ -219,6 +219,8 @@
+ char buf[BUFSIZE], ch, *p;
+ int i, w, r;
+ int rc = SUCCESS;
++boolean got_name = FALSE;
++boolean got_nmbr = FALSE;
+ boolean got_dle; /* for <DLE><char> events (voice mode) */
+
+ lprintf( L_MESG, "wfr: waiting for ``RING''" );
+@@ -321,7 +324,14 @@
+ * instead of waiting for the next "real" RING
+ * (but don't do this for V253 DRON/DROF modems!)
+ */
+- if ( strncmp( buf, "NMBR", 4 ) == 0 && drox_count == 0 ) { break; }
++ if ( strncmp( buf, "NMBR", 4 ) == 0 && drox_count == 0 ) { got_nmbr = TRUE; }
++ if ( strncmp( buf, "NAME", 4 ) == 0 ) { got_name = TRUE; }
++
++ if ( got_nmbr && got_name ) break; /* got both name & number */
++
++ /* special case -> break; do not expect caller name */
++ if ( got_nmbr && CallerId[0] == 'P' ) break; /* private */
++ if ( got_nmbr && CallerId[0] == 'O' ) break; /* out of area */
+
+ /* V.253 ring cadences */
+ if ( strncmp( buf, "DRON", 4 ) == 0 ||
diff --git a/recipes/mgetty/mgetty-1.1.30/42-voice_libvoice_detect.c b/recipes/mgetty/mgetty-1.1.30/42-voice_libvoice_detect.c
new file mode 100644
index 0000000000..eb414be7d1
--- /dev/null
+++ b/recipes/mgetty/mgetty-1.1.30/42-voice_libvoice_detect.c
@@ -0,0 +1,28 @@
+--- mgetty-1.1.30.orig/voice/libvoice/detect.c 2002-12-11 22:44:38.000000000 -0800
++++ mgetty-1.1.30/voice/libvoice/detect.c 2003-09-07 14:52:01.000000000 -0700
+@@ -86,6 +86,8 @@
+ {ati, "Venus V.90 USB U052099a", NULL, &Lucent},
+ {ati, "AEIGPM560LKTF1 Voice V2 V92cap", NULL, &V253modem},
+ {ati, "Zoom V.90 PCI I030100gV -H Z207",NULL, &Lucent},
++ {ati, "Zoom V.90 PCI I052099gV -G Z207",NULL, &Lucent},
++ {ati, "Zoom V.90 Serial s052099g -I Z207", NULL, &Lucent},
+ {ati, "28800", ati6, NULL},
+ {ati, "2886", NULL, &US_Robotics},
+ {ati, "336", NULL, &Rockwell},
+@@ -106,6 +108,7 @@
+ {ati, "3X WYSIWYF 628DBX", NULL, &Rockwell},
+ {ati, "56000", NULL, &Rockwell},
+ {ati, "5601", NULL, &US_Robotics},
++ {ati, "57600", NULL, &Multitech_2834ZDXv},
+ {ati, "961", NULL, &Rockwell},
+ {ati, "Digi RAS modem 56000", NULL, &Digi_RAS},
+ {ati, "Linux ISDN", NULL, &ISDN4Linux},
+@@ -114,6 +117,8 @@
+ NULL, &Multitech_5634ZPX},
+ {ati, "LT V.90 1.0 MT5634ZBAV Serial Data/Fax/Voice Modem Version 4.09a",
+ NULL, &Multitech_5634ZBAV},
++ {ati, "LT V.92 1.0 MT5634ZBAV-V92 Serial Data/Fax/Voice Modem Version 1.25p",
++ NULL, &Multitech_5634ZBAV},
+ {ati4, "33600bps Voice Modem For Italy",
+ NULL, &Rockwell},
+ {ati6, "RCV336DPFSP Rev 44BC",
diff --git a/recipes/mgetty/mgetty-1.1.30/43-moreinfo-cnd.c_bug112163 b/recipes/mgetty/mgetty-1.1.30/43-moreinfo-cnd.c_bug112163
new file mode 100644
index 0000000000..94a3ce66b0
--- /dev/null
+++ b/recipes/mgetty/mgetty-1.1.30/43-moreinfo-cnd.c_bug112163
@@ -0,0 +1,36 @@
+--- mgetty-1.1.30.orig/cnd.c 2002-11-05 16:43:04.000000000 -0500
++++ mgetty-1.1.30/cnd.c 2003-04-28 00:07:35.000000000 -0400
+@@ -94,6 +94,9 @@
+ /* Swedish Telia/ZyXEL Omni 52k - Torulf Lundgren, torulf@upsys.se */
+ {"Diverting number:", &CallerId},
+
++ /* FALCOM A2D gsm modem */
++ {"+CLIP: ", &CallerId},
++
+ {NULL}
+ };
+
+@@ -163,6 +166,23 @@
+ if ( *p == '\'' || *p == '\"' || !isprint(*p) ) *p = ' ';
+ p++;
+ }
++
++ if ( strcmp(cp->string,"+CLIP: ") == 0 ) {
++ char *q ;
++
++ p = *(cp->variable) ;
++ q = *(cp->variable) ;
++ /* strip non digit charaters */
++ while( ! isdigit(*p) ) p++;
++ /* shift only digit characters */
++ while( isdigit(*p) ) {
++ *q=*p ;
++ p++ ;
++ q++ ;
++ }
++ *q = 0;
++ }
++
+ }
+ lprintf(L_JUNK, "CND: found: %s", *(cp->variable));
+ return;
diff --git a/recipes/mgetty/mgetty-1.1.30/44-pending-faxexpand.h_bug169455 b/recipes/mgetty/mgetty-1.1.30/44-pending-faxexpand.h_bug169455
new file mode 100644
index 0000000000..9ccdf08287
--- /dev/null
+++ b/recipes/mgetty/mgetty-1.1.30/44-pending-faxexpand.h_bug169455
@@ -0,0 +1,24 @@
+--- mgetty-1.1.28.old/frontends/X11/viewfax-2.5/faxexpand.h 2000-08-26 07:08:22.000000000 -0400
++++ mgetty-1.1.28/frontends/X11/viewfax-2.5/faxexpand.h 2002-11-27 01:01:19.000000000 -0500
+@@ -17,6 +17,12 @@
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */
+
++/* Wed, 27 Nov 2002 00:59:35 -0500, Wolfgang Sourdeau
++ <Wolfgang@Contre.COM>:
++ - member "vres" of struct pagenode explicitly declared as "signed
++ char" instead of "char" for platforms where char is unsigned.
++ */
++
+ #include <limits.h>
+
+ #if ULONG_MAX == 4294967295UL
+@@ -69,7 +75,7 @@
+ char inverse; /* black <=> white */
+ char lsbfirst; /* bit order is lsb first */
+ char orient; /* orientation - upsidedown, landscape, mirrored */
+- char vres; /* vertical resolution: 1 = fine */
++ signed char vres; /* vertical resolution: 1 = fine */
+ void (*expander)(struct pagenode *, drawfunc);
+ void *extra; /* used for Ximage */
+ };
diff --git a/recipes/mgetty/mgetty-1.1.30/45-logfile.c b/recipes/mgetty/mgetty-1.1.30/45-logfile.c
new file mode 100644
index 0000000000..a14a380f7a
--- /dev/null
+++ b/recipes/mgetty/mgetty-1.1.30/45-logfile.c
@@ -0,0 +1,52 @@
+--- mgetty-1.1.30.orig/logfile.c 2002-11-25 08:08:26.000000000 -0500
++++ mgetty-1.1.30/logfile.c 2003-04-28 00:08:35.000000000 -0400
+@@ -56,10 +56,14 @@
+ /* Most systems have these variables but do not declare them. On many
+ of those systems that _do_ declare them, it won't hurt */
+
+-extern int sys_nerr;
+-#if !defined(__NetBSD__) && !defined( __FreeBSD__ ) && !defined(__OpenBSD__) && !defined(__GLIBC__) && !defined(__MACH__)
+-extern char *sys_errlist[];
+-#endif
++/* commented in by was@debian.org on Wed, 27 Nov 2002 01:15:11 -0500
++ because sys_nerr and sys_errlist are deprecated. strerror() is used
++ instead below.*/
++
++/* extern int sys_nerr; */
++/* #if !defined(__NetBSD__) && !defined( __FreeBSD__ ) && !defined(__OpenBSD__) && !defined(__GLIBC__) && !defined(__MACH__) */
++/* extern char *sys_errlist[]; */
++/* #endif */
+
+ /* Interactive Unix is a little bit braindead - does not have atexit(),
+ */
+@@ -209,6 +213,7 @@
+ va_list pvar;
+ int errnr;
+ char * p;
++char *error_string;
+ static int first_open = TRUE;
+
+ if ( level > log_level ) /* log level high enough? */
+@@ -325,12 +330,20 @@
+ }
+ else /* ERROR or FATAL */
+ {
++ error_string = strerror (errnr);
++ if ( error_string == NULL )
++ {
++ if ( errno == EINVAL )
++ error_string = "<error not in list>";
++ else
++ error_string = "<error calling strerror()>";
++ }
++
+ fprintf(log_fp, "\n%02d/%02d %02d:%02d:%02d %s %s: %s",
+ tm->tm_mon+1, tm->tm_mday,
+ tm->tm_hour, tm->tm_min, tm->tm_sec,
+ log_infix, ws,
+- ( errnr <= sys_nerr ) ? sys_errlist[errnr]:
+- "<error not in list>" );
++ strerror (errnr));
+ #ifdef SYSLOG
+ syslog( level == L_FATAL? LOG_ALERT: LOG_ERR, "%s: %m", ws );
+ #endif
diff --git a/recipes/mgetty/mgetty-1.1.30/47-doc_mgetty.texi-in b/recipes/mgetty/mgetty-1.1.30/47-doc_mgetty.texi-in
new file mode 100644
index 0000000000..3f6b6c6d1e
--- /dev/null
+++ b/recipes/mgetty/mgetty-1.1.30/47-doc_mgetty.texi-in
@@ -0,0 +1,14 @@
+--- mgetty-1.1.30.old/doc/mgetty.texi-in 2002-11-17 16:19:45.000000000 -0500
++++ mgetty-1.1.30/doc/mgetty.texi-in 2003-07-05 22:23:20.000000000 -0400
+@@ -7,6 +7,11 @@
+ @finalout
+
+ @ifinfo
++@dircategory Communication
++@direntry
++* Mgetty: (mgetty). A smart modem replacement for getty.
++@end direntry
++
+ This is the online documentation for the mgetty + sendfax
+ package.
+
diff --git a/recipes/mgetty/mgetty-1.1.30/50-pending-voice-zoom-2949l-c b/recipes/mgetty/mgetty-1.1.30/50-pending-voice-zoom-2949l-c
new file mode 100644
index 0000000000..1edfe3fd65
--- /dev/null
+++ b/recipes/mgetty/mgetty-1.1.30/50-pending-voice-zoom-2949l-c
@@ -0,0 +1,145 @@
+--- mgetty-1.1.30.orig/voice/libvoice/Lucent.c 2001-04-13 04:01:44.000000000 -0700
++++ mgetty-1.1.30/voice/libvoice/Lucent.c 2003-09-07 14:58:41.000000000 -0700
+@@ -66,6 +66,7 @@
+
+ static int Lucent_set_compression (int *compression, int *speed, int *bits)
+ {
++ char buffer[VOICE_BUF_LEN];
+ reset_watchdog();
+
+ if (*compression == 0)
+@@ -86,7 +87,8 @@
+ return(FAIL);
+ }
+
+- if (voice_command("AT+VSM=128", "OK") != VMA_USER_1)
++ sprintf(buffer, "AT+VSM=128,%d", *speed);
++ if (voice_command(buffer, "OK") != VMA_USER_1)
+ return(FAIL);
+
+ break;
+@@ -100,8 +102,8 @@
+ return(FAIL);
+ }
+
+-
+- if (voice_command("AT+VSM=129", "OK") != VMA_USER_1)
++ sprintf(buffer, "AT+VSM=129,%d", *speed);
++ if (voice_command(buffer, "OK") != VMA_USER_1)
+ return(FAIL);
+
+ break;
+@@ -115,8 +117,8 @@
+ return(FAIL);
+ }
+
+-
+- if (voice_command("AT+VSM=130,8000", "OK") != VMA_USER_1)
++ sprintf(buffer, "AT+VSM=130,%d", *speed);
++ if (voice_command(buffer, "OK") != VMA_USER_1)
+ return(FAIL);
+
+ break;
+@@ -130,24 +132,27 @@
+ voice_modem_name, *speed);
+ return(FAIL);
+ }
+- if (voice_command("AT+VSM=131,8000", "OK") != VMA_USER_1)
+- return(FAIL);
+-
+- break;
++ sprintf(buffer, "AT+VSM=131,%d", *speed);
++ if (voice_command(buffer, "OK") != VMA_USER_1)
++ return(FAIL);
++
++ break;
+
+ case 5:
+ *bits = 4;
+
+- if ( *speed != 8000 )
++ if ((*speed != 8000) && (*speed != 7200) && (*speed != 11025))
+ {
+ lprintf(L_WARN, "%s: Illegal sample rate (%d)",
+ voice_modem_name, *speed);
+ return(FAIL);
+ }
+- if (voice_command("AT+VSM=132,8000", "OK") != VMA_USER_1)
+- return(FAIL);
+
+- break;
++ sprintf(buffer, "AT+VSM=132,%d", *speed);
++ if (voice_command(buffer, "OK") != VMA_USER_1)
++ return(FAIL);
++
++ break;
+
+ default:
+ lprintf(L_WARN, "%s: Illegal voice compression method (%d)",
+--- mgetty-1.1.30.orig/voice/pvftools/pvftormd.c 2002-11-19 07:39:34.000000000 -0800
++++ mgetty-1.1.30/voice/pvftools/pvftormd.c 2003-09-07 14:11:26.000000000 -0700
+@@ -535,12 +535,13 @@
+ {
+ header_out.bits = 4;
+
+- if (header_in.speed != 8000)
++ if ((header_in.speed != 7200) && (header_in.speed != 8000) &&
++ (header_in.speed != 11025))
+ {
+ fprintf(stderr, "%s: Unsupported sample speed (%d)\n",
+ program_name, header_in.speed);
+ fprintf(stderr,
+- "%s: The Lucent only supports 8000 samples/second\n",
++ "%s: The Lucent only supports 7.2k, 8k and 11.025k samples/second\n",
+ program_name);
+ fclose(fd_out);
+
+--- mgetty-1.1.30.orig/voice/libvoice/V253modem.c 2002-11-25 13:14:51.000000000 -0800
++++ mgetty-1.1.30/voice/libvoice/V253modem.c 2003-09-11 08:40:51.000000000 -0700
+@@ -177,26 +177,26 @@
+ case 2: /* 2bit ADPCM for some ELSA-modems */
+ {
+ *bits = 2;
+- if (voice_command("AT+VSM=140,7200", "OK")!= VMA_USER_1)
+- {
++ sprintf(buffer, "AT+VSM=140,%d", *speed);
++ if (voice_command(buffer, "OK") != VMA_USER_1)
++ {
+ /* there are two diffrent implementations trying one first,
+ if this fails we try the other one later */
+- Kompressionmethod = 129;
+- }
+- else
+- {
+- Kompressionmethod = 140;
+- }
+- *speed=7200;
++ Kompressionmethod = 129;
++ }
++ else
++ {
++ Kompressionmethod = 140;
++ }
+ break;
+ }
+ case 4: /* 4bit ADPCM for some ELSA-modems */
+ {
+- if (voice_command("AT+VSM=141,7200", "OK")!= VMA_USER_1)
++ sprintf(buffer, "AT+VSM=141,%d", *speed);
++ if (voice_command(buffer, "OK")!= VMA_USER_1)
+ {
+ /* there are two diffrent implementations trying one first,
+ if this fails we try the other one later */
+-
+ Kompressionmethod = 131;
+ }
+ else
+@@ -204,7 +204,6 @@
+ Kompressionmethod = 141;
+ }
+ *bits=4;
+- *speed=7200;
+ break;
+ }
+ case 5:
+
diff --git a/recipes/mgetty/mgetty-1.1.30/51-pending-faxq-time b/recipes/mgetty/mgetty-1.1.30/51-pending-faxq-time
new file mode 100644
index 0000000000..f2538344b5
--- /dev/null
+++ b/recipes/mgetty/mgetty-1.1.30/51-pending-faxq-time
@@ -0,0 +1,10 @@
+--- mgetty-1.1.30.orig/fax/faxq.in Sat Nov 23 19:57:59 2002
++++ mgetty-1.1.30.orig/fax/faxq.in Sun Sep 28 17:59:40 2003
+@@ -100,6 +100,7 @@
+ }' -`
+ $echo "$i:"
+ $echo "\tQueued by: $USER"
++ $echo "\t at: "`find $(dirname $i)/${PAGES%% *} -printf "%Ax %AH:%AM\n"`
+ if [ -z "$VERBTO" ]
+ then
+ $echo "\t to: $PHONE"
diff --git a/recipes/mgetty/mgetty-1.1.30/52-pending-metamail b/recipes/mgetty/mgetty-1.1.30/52-pending-metamail
new file mode 100644
index 0000000000..37d0764745
--- /dev/null
+++ b/recipes/mgetty/mgetty-1.1.30/52-pending-metamail
@@ -0,0 +1,88 @@
+diff -urN mgetty-1.1.30~/samples/new_fax.mime3 mgetty-1.1.30/samples/new_fax.mime3
+--- mgetty-1.1.30~/samples/new_fax.mime3 2003-09-23 22:11:05.000000000 +1000
++++ mgetty-1.1.30/samples/new_fax.mime3 2003-09-23 22:20:41.000000000 +1000
+@@ -13,8 +13,8 @@
+ # image/x-fax-g3; viewfax -geometry +5+23 '%s'; test=test -n "$DISPLAY"
+ # image/x-fax-g3;; print=printfax '%s'
+ #
+-# You need the program mmencode for base64 encoding of the fax data,
+-# which you will find in your metamail distribution.
++# You need the program base64-encode for base64 encoding of the fax data,
++# which you will find in your mime-codecs package.
+ #
+ # (c) 1997-1998 Roland Rosenfeld <roland@spinnaker.rhein.de>
+ #
+@@ -65,7 +65,7 @@
+ echo "" >> $TMPMAIL
+
+ # base64 encoder:
+- mmencode -b $file >> $TMPMAIL
++ base64-encode < $file >> $TMPMAIL
+
+ echo "" >> $TMPMAIL
+ done
+@@ -75,4 +75,4 @@
+ # Send out the created mail:
+ sendmail $ADMIN < $TMPMAIL
+
+-exit 0
+\ No newline at end of file
++exit 0
+diff -urN mgetty-1.1.30~/samples/new_fax.mime4 mgetty-1.1.30/samples/new_fax.mime4
+--- mgetty-1.1.30~/samples/new_fax.mime4 2003-09-23 22:11:05.000000000 +1000
++++ mgetty-1.1.30/samples/new_fax.mime4 2003-09-23 22:21:09.000000000 +1000
+@@ -19,8 +19,8 @@
+ # MIME tools as possible.
+ #
+ # This 'new_fax' only needs ' g32pbm', 'pnmscale' and 'pnmtotiff' from the
+-# 'pbmplus' package, 'mmencode' from the 'multimail' packages, and the rest
+-# is standard Unix tools.
++# 'pbmplus' package, 'base64-encode' from the 'mime-codecs' packages, and
++# the rest is standard Unix tools.
+ # It was tested with thsmail under Linux and PMMail under OS/2 as frontends.
+
+ # This script is called when a message was recorded.
+@@ -50,8 +50,7 @@
+ CAT=cat
+ ECHO=echo
+ G3TOPBM=g32pbm
+-#MMENCODE=mmencode
+-MMENCODE=mimencode
++MMENCODE=base64-encode
+ RM=rm
+ SED=sed
+ SENDMAIL=sendmail
+@@ -136,7 +135,7 @@
+ #
+ # Here we do base64 encoding of out TIFF data and add the result
+ # into our MIME mail as attachment.
+- $MMENCODE -b $IMAG_FILE >> $MIME_MESS 2>> $ERRO_MESS
++ $MMENCODE < $IMAG_FILE >> $MIME_MESS 2>> $ERRO_MESS
+ #
+ # To clean up temporary TIFF data.
+ $RM -f $IMAG_FILE
+diff -urN mgetty-1.1.30~/samples/new_fax.tiff mgetty-1.1.30/samples/new_fax.tiff
+--- mgetty-1.1.30~/samples/new_fax.tiff 2003-09-23 22:11:05.000000000 +1000
++++ mgetty-1.1.30/samples/new_fax.tiff 2003-09-23 22:19:32.000000000 +1000
+@@ -12,7 +12,7 @@
+ # script. The following script combines all received pages to one
+ # tiff-file which is sent to all recipients beeing in the alias for fax.
+ # Reading the fax is quite easy with Netscape when the tiffsurf-plugin is
+-# installed.
++# installed. You need the metamail package for metasend.
+ #
+ # As the script may be usefull for someone I'll post it here. It's quite
+ # short (and perhaps not that elegant...), but for me it works great.
+diff -urN mgetty-1.1.30~/voice/scripts/new_voice.craig_southern mgetty-1.1.30/voice/scripts/new_voice.craig_southern
+--- mgetty-1.1.30~/voice/scripts/new_voice.craig_southern 2003-09-23 22:11:05.000000000 +1000
++++ mgetty-1.1.30/voice/scripts/new_voice.craig_southern 2003-09-23 22:13:28.000000000 +1000
+@@ -50,7 +50,7 @@
+ echo Content-Transfer-Encoding: base64 >> $tempfn
+ echo Content-Disposition: attachment\; filename=\"$pagefn\" >> $tempfn
+ echo "">> $tempfn
+-/usr/bin/mimencode $outputfn >> $tempfn
++/usr/bin/base64-encode < $outputfn >> $tempfn
+
+ #rm -f $fn
+ rm -f $outputfn
+
diff --git a/recipes/mgetty/mgetty-1.1.30/debian.patch b/recipes/mgetty/mgetty-1.1.30/debian.patch
new file mode 100644
index 0000000000..839fe44448
--- /dev/null
+++ b/recipes/mgetty/mgetty-1.1.30/debian.patch
@@ -0,0 +1,913 @@
+--- mgetty-1.1.30.orig/doc/faxrunqd.8in
++++ mgetty-1.1.30/doc/faxrunqd.8in
+@@ -276,23 +276,25 @@
+ behaviour, you can send it the following signals:
+
+ .TP
+-.B SIGHUP
+-.TP
+ .B SIGINT
+ .TP
+ .B SIGTERM
+ remove lock file, remove pid file, terminate immediately.
+
+ .TP
++.B SIGHUP
++finish all fax jobs that are currently being sent, then terminate (this
++is used to signal faxrunqd "I want you to terminate" without disturbing
++the normal flow of operation - SIGINT/TERM etc. can lead to some faxes being
++sent twice).
++
++.TP
+ .B SIGUSR1
+ close, roll, and re-open log file.
+
+ .TP
+ .B SIGUSR2
+-finish all fax jobs that are currently being sent, then terminate (this
+-is used to signal faxrunqd "I want you to terminate" without disturbing
+-the normal flow of operation - SIGHUP etc. can lead to some faxes being
+-sent twice).
++dump current modem success/failure statistics to log file.
+
+ .IX fax
+ .SH BUGS
+--- mgetty-1.1.30.orig/doc/mgetty.8in
++++ mgetty-1.1.30/doc/mgetty.8in
+@@ -42,10 +42,13 @@
+ .B -p <login prompt>
+ Use the given string to prompt users for their login names. Various
+ tokens are allowed in this string. These tokens are: @ for the system
+-name, \\n, \\r, \\g, \\v, \\f, \\t for newline, carriage return, bell,
+-vertical tab, form feed, and tab, respectively. \\P and \\L will expand to
+-the tty name ("ttyS0"). \\I will give the "CONNECT foobar" string returned
++name, \\n, \\r, \\g, \\b, \\v, \\f, \\t for newline, carriage return, bell,
++backspace, vertical tab, form feed, and tab, respectively.
++\\P and \\L will expand to the tty name ("ttyS0"). \\Y will give the Caller
++ID, \\I the "CONNECT foobar" string returned
+ by the modem, and \\S will output the port speed.
++\\s, \\m, \\V, \\R represent the operating system, the hardware name,
++the OS version, the OS release.
+ \\N and \\U give the number of users currently logged in.
+ \\C will be changed into the result of ctime(), and \\D and \\T will
+ output the date and time, respectively. Finally, \\<digit> will use digit
+--- mgetty-1.1.30.orig/doc/mgetty.texi-in
++++ mgetty-1.1.30/doc/mgetty.texi-in
+@@ -1,6 +1,6 @@
+ \input texinfo @c -*-texinfo-*-
+ @c %**start of header
+-@c $Id: mgetty.texi-in,v 4.58 2002/11/17 21:19:45 gert Exp $ (c) 1993-2000 Gert Doering and Klaus Weidner
++@c $Id: mgetty.texi-in,v 4.59 2003/04/06 14:09:09 gert Exp $ (c) 1993-2000 Gert Doering and Klaus Weidner
+ @setfilename mgetty.info
+ @settitle mgetty + sendfax
+ @c %**end of header
+@@ -1096,6 +1096,9 @@
+ @samp{/etc/issue}. Some special characters are substituted by connect
+ speed, date, etc. - see below (login-prompt) for a list.
+
++Note: maximum line length after substitution is 300 characters, so be
++careful with ASCII art banners with lots of color settings and such.
++
+ @item @code{prompt-waittime} @var{msecs}
+
+ This specifies how long @code{mgetty} will wait for modem and line to
+@@ -1117,6 +1120,10 @@
+ @item \b backspace (ascii 010)
+ @item \f form feed (ascii 013)
+ @item \t TAB
++@item \s operating system (OS)
++@item \m hardware name
++@item \V OS version
++@item \R OS release
+ @item \P (and \L) port name (e.g. ttyS0)
+ @item \C date and time, in "ctime()" format
+ @item \I Connection string (e.g. 2400/REL)
+@@ -1128,7 +1135,7 @@
+ @item \@var{digit} character with the specified octal code
+ @end itemize
+
+-The maximum lenght of the login prompt is limited to 140 characters (after
++The maximum lenght of the login prompt is limited to 300 characters (after
+ expansion).
+
+ @item @code{login-time} @var{secs}
+@@ -3039,11 +3046,22 @@
+ implemented since Linux 2.4.10, or in earlier Versions with Jan
+ Oberlaender's patch
+ (http://www.stud.uni-karlsruhe.de/~uslk/i4l-callednumber.tar.gz).
++(@strong{NOTE}: This doesn't seem to work for at least Linux 2.4.20
++as shipped by RedHat 8.0 - anyone with some details??!)
+
+ Alternatively, you can set @code{ATS23.0=1}. This will make i4l signal
+-the dialed MSN number as @code{RING/12345}. Unfortunately, it will be
+-recognized by mgetty as caller ID, not destination MSN, so you might need
+-to do some fiddling with 'ring.c' to get this fixed.
++the dialed MSN number as @code{RING/12345}. This was problematic in the
++past, as lots of other modems have a similar format to report the Caller ID
++(like @code{RING;4321} in ELSA modems) but recent mgetty versions handle
++this properly. With this, you can run a single mgetty instance for all
++your telephone numbers: just set @code{AT&L*} in your init string - this
++tells isnd4linux that @strong{all} incoming calls are to be signalled
++to mgetty, not only specific MSN.
++
++@c init-chat "" ATZ OK AT&L* OK ATS23.0=1S23.2=1S0=0 OK
++@c fax-only yes
++@c rings 2
++@c modem-quirks 1
+
+ For the full list of available AT commands, consult the i4l docs
+ (for example in @file{/usr/src/linux/Documentation/isdn/README}.
+@@ -3063,8 +3081,9 @@
+
+ There's a small catch: modem autodetection will make mgetty think that
+ your ttyI device doesn't support fax (because most cards can't do it). So
+-you need to set @code{modem-type c2.0} in @file{mgetty.config} and/or
+-@file{sendfax.config} to force class 2.0 mode.
++you need to set @code{modem-type cls} in @file{mgetty.config} and/or
++@file{sendfax.config} to force class 2 mode. Class 2.0 mode is not
++supported.
+
+ Voice support with @code{vgetty} should work (use your ttyI device
+ as an answering machine, etc.). I have not tried it yet - talk to the
+--- mgetty-1.1.30.orig/fax/faxspool.in
++++ mgetty-1.1.30/fax/faxspool.in
+@@ -3,7 +3,7 @@
+ # faxspool - sample script how to spool fax input data to a spool
+ # directory, creating jobs to be run by faxrunq
+ #
+-# sccsid: $Id: faxspool.in,v 4.22 2002/11/23 15:14:57 gert Exp $ (c) Gert Doering
++# sccsid: $Id: faxspool.in,v 4.25 2003/06/28 20:44:04 gert Exp $ (c) Gert Doering
+ #
+ # syntax: faxspool [flags] <phone-number> <job(s)>
+ #
+@@ -26,6 +26,15 @@
+ # 3.10.93: use "hp2hig3" for hp-pcl4-files (cl)
+ # 19.10.93: phone directories (caz)
+ # $Log: faxspool.in,v $
++# Revision 4.25 2003/06/28 20:44:04 gert
++# reset umask after creating temp directory
++#
++# Revision 4.24 2003/04/09 21:05:14 gert
++# fix case of "faxing without header" (-h -) - wasn't copying G3 files
++#
++# Revision 4.23 2003/01/21 13:27:12 gert
++# abort if input file names contain whitespace or quote characters
++#
+ # Revision 4.22 2002/11/23 15:14:57 gert
+ # revert 4.14 -> 4.15 change: faxqueue_done is now back in $FAX_SPOOL_OUT
+ # (new permission concept, faxrunq/faxrunqd no longer running as root)
+@@ -577,11 +586,15 @@
+ fi
+
+ #
+-# check, if all the files exist & are readable
++# check, if all the file names are "clean", that the files exist & are readable
+ #
+
+ for file
+ do
++ if [ `echo "$file" | tr -d ' \011\012\015\047\140"' ` != "$file" ]
++ then
++ $echo "$0: invalid characters in file name '$file'!" >&2 ; exit 5
++ fi
+ if [ ! -r $file -a x$file != x- ]
+ then
+ $echo "$0: cannot open '$file'!" >&2 ; exit 5
+@@ -617,12 +630,14 @@
+ #
+ spooldir=${TMP:-/tmp}/$new_seq.$$.`date +%S`
+
++oldumask=`umask`
+ umask 077
+ if mkdir $spooldir ; then
+ $echo "spooling to $spooldir (->$new_seq)..."
+ else
+ $echo "ERROR: can't create work dir '$spooldir', giving up" >&2 ; exit 6
+ fi
++umask $oldumask
+
+ #
+ # process all input files
+@@ -847,22 +862,23 @@
+ fi
+
+ #
+-# concatenate header with pages
++# concatenate header with pages (optionally) and copy over to spool dir
+ #
+-if [ -z "$FAX_HEADER" ]
++if [ -n "$FAX_HEADER" ]
+ then
+- finalpg="$pages" # don't :)
+-else
+ $echo "\nPutting Header lines on top of pages..."
+
+ hdrfont=$PBMFONT_HEADER_F
+ test -z "$normal_res" || hdrfont=$PBMFONT_HEADER_N
++fi
+
+- finalpg=""
+- for f in $pages
+- do
++finalpg=""
++for f in $pages
++do
+ nr=`expr $nr + 1`
+
++ if [ -n "$FAX_HEADER" ]
++ then
+ cat $FAX_HEADER | sed -e "s;@T@;$phone;g" -e "s;@P@;$nr;g" \
+ -e "s;@M@;$maxnr;g" -e "s;@U@;$USER;g" \
+ -e "s;@N@;$FULLNAME;g" \
+@@ -873,9 +889,13 @@
+ | g3cat - $f | \
+ $FAXQ_HELPER input $new_seq f$nr.g3 \
+ && rm $f
++ else
++ g3cat $f | \
++ $FAXQ_HELPER input $new_seq f$nr.g3 \
++ && rm $f
++ fi
+ finalpg="$finalpg f$nr.g3"
+- done
+-fi # end "if ! -z $FAX_HEADER"
++done
+
+ if [ -z "$finalpg" -a -z "$poll_req" ]
+ then
+--- mgetty-1.1.30.orig/fax/faxrunqd.in
++++ mgetty-1.1.30/fax/faxrunqd.in
+@@ -9,10 +9,19 @@
+ #
+ # initial version: Feb 17, 1997
+ #
+-$rcs_id='RCS: $Id: faxrunqd.in,v 1.63 2002/11/23 16:52:18 gert Exp $';
++$rcs_id='RCS: $Id: faxrunqd.in,v 1.65 2003/01/14 14:16:09 gert Exp $';
+ #
+ # Change Log:
++#
+ # $Log: faxrunqd.in,v $
++# Revision 1.65 2003/01/14 14:16:09 gert
++# include "total success" counter in the per_phone_statistics
++#
++# Revision 1.64 2003/01/07 14:48:52 gert
++# If a job is re-queued, heavily penalize previously used modem.
++# This way, a defective modem (or a modem that has problems connecting to
++# just a few destination numbers) has less impact on overall stability.
++#
+ # Revision 1.63 2002/11/23 16:52:18 gert
+ # make messages more clear, print warning if running as root
+ #
+@@ -608,6 +617,7 @@
+ # - no other job for this phone number already queued
+ # - this modem must be allowed for that job
+ # - if multiple queues allowed, take the shortest one
++# - the modem used previously is heavily penalized
+ #
+ # called whenever a job's $queue{$job}->{status} changes to 'active'
+ #
+@@ -661,6 +671,9 @@
+ @{$queue{$j}->{ttys}} : @standard_ttys;
+
+ # find tty with the shortest queue (among those that are allowed)
++ #
++ # the previously used modem always gets a queue len of "9998", and is
++ # thus only used if no other modem is available
+ my $min_l = 9999;
+ my $min_t = $ttys[0];
+
+@@ -674,9 +687,12 @@
+ $tty_in_use{$t}=0;
+ }
+
+- if ( $mq_length{$t}+$mq_badness{$t} < $min_l )
++ my $this_q_len = ( $t eq $queue{$j}->{last_modem} ) ? 9998 :
++ $mq_length{$t}+$mq_badness{$t};
++
++ if ( $this_q_len < $min_l )
+ {
+- $min_l = $mq_length{$t}+$mq_badness{$t}; $min_t = $t;
++ $min_l = $this_q_len; $min_t = $t;
+ }
+ }
+
+@@ -701,7 +717,7 @@
+ $queue{$j}->{weight} = 1 + scalar( @{$queue{$j}->{pages}} );
+ $mq_length{$min_t} += $queue{$j}->{weight};
+
+- print LOG "$j: possible ttys: " . join( ':', @ttys ) . " -> queue selected: $min_t (l: $min_l->" . $mq_length{$min_t} . ")\n" if $opt_d;
++ print LOG "$j: possible ttys: " . join( ':', @ttys ) . " last: ". $queue{$j}->{last_modem} . " -> queue selected: $min_t (l: $min_l->" . $mq_length{$min_t} . ")\n" if $opt_d;
+
+ # rotate @standard_ttys, to distribute load more evenly among modems
+ push @standard_ttys, (shift @standard_ttys);
+@@ -804,6 +820,7 @@
+ }
+
+ $queue{$job}->{'tries'} = $queue{$job}->{'tries_c'} = 0;
++ $queue{$job}->{'last_modem'} = 'unknown';
+
+ while( <J> )
+ {
+@@ -1264,15 +1281,13 @@
+ $tty_statistics{$t}{total}++;
+ $tty_statistics{$t}{$ex}++;
+
+- # and, in case of errors, for per-remote-phone statistics
+- if ( $ex > 0 )
+- {
++ # and for per-remote-phone statistics
+ my $ph = $queue{$j}->{'phone'};
+- if ( ! defined( $per_phone_statistics{$ph} ) ||
+- ! defined( $per_phone_statistics{$ph}{$ex} ) )
++ if ( ! defined( $per_phone_statistics{$ph} ) )
++ { $per_phone_statistics{$ph}{0} = 0; }
++ if ( ! defined( $per_phone_statistics{$ph}{$ex} ) )
+ { $per_phone_statistics{$ph}{$ex} = 0; }
+ $per_phone_statistics{$ph}{$ex}++;
+- }
+
+ # now handle return codes. This is tricky if multiple jobs have been
+ # combined into one sendfax call - might have failed in the middle...
+@@ -1443,6 +1458,9 @@
+ my $fstr = ( $ex<10 )? "failed" : "FATAL FAILURE";
+ &wstat( $j, "Status " . localtime() . " $fstr, exit($ex): $verb_ex\n");
+
++ # remember tty used (try to get another one for next call)
++ $queue{$j}->{last_modem} = $tty;
++
+ # write acct.log
+ &wacct($j, "fail $ex: $verb_ex");
+
+@@ -1704,7 +1722,7 @@
+ foreach $t (keys %tty_statistics)
+ {
+ print LOG "modem statistics for tty '$t'\n";
+- print LOG " total faxes sent: ${tty_statistics{$t}{'total'}}\n";
++ print LOG " total fax calls : ${tty_statistics{$t}{'total'}}\n";
+ print LOG " total success : ${tty_statistics{$t}{'0'}}\n";
+ foreach (sort(keys %{$tty_statistics{$t}}))
+ {
+@@ -1719,8 +1737,10 @@
+ foreach $t (sort (keys %per_phone_statistics))
+ {
+ print LOG "error statistics for remote number '$t'\n";
++ print LOG " total success : ${per_phone_statistics{$t}{'0'}}\n";
+ foreach (sort(keys %{$per_phone_statistics{$t}}))
+ {
++ next if ( $_ eq '0' );
+ printf LOG " error code %-2d : %d [%s]\n",
+ $_, $per_phone_statistics{$t}{$_},
+ $exitcodes[$_];
+--- mgetty-1.1.30.orig/fax/faxrm.in
++++ mgetty-1.1.30/fax/faxrm.in
+@@ -7,7 +7,7 @@
+ # There are still a lot rough edges - but it works, and should give you an
+ # idea how to improve it
+ #
+-# SCCS: $Id: faxrm.in,v 4.5 2002/11/16 22:16:51 gert Exp $ Copyright (C) 1994 Gert Doering
++# SCCS: $Id: faxrm.in,v 4.6 2003/02/04 16:46:36 gert Exp $ Copyright (C) 1994 Gert Doering
+
+ FAX_SPOOL=@FAX_SPOOL@
+ FAX_SPOOL_OUT=@FAX_SPOOL_OUT@
+@@ -16,7 +16,7 @@
+ echo="@ECHO@"
+ #
+ # helper program for privileged queue access
+-FAXQ_HELPER=/usr/local/lib/mgetty+sendfax/faxq-helper
++FAXQ_HELPER=@LIBDIR@/faxq-helper
+ #
+
+ if [ ! -d $FAX_SPOOL_OUT ]
+--- mgetty-1.1.30.orig/fax/faxq-helper.c
++++ mgetty-1.1.30/fax/faxq-helper.c
+@@ -71,6 +71,8 @@
+ int fax_out_uid; /* user ID to chown() fax jobs to */
+ int fax_out_gid; /* group ID ... */
+
++#define ROOT_UID 0 /* root's user ID - override checks */
++
+ #define FAX_SEQ_FILE ".Sequence"
+ #define FAX_SEQ_LOCK "LCK..seq"
+
+@@ -370,7 +372,7 @@
+
+ while( *p != '\0' )
+ {
+- if ( *p != '.' && *p != ':' && ! isalnum(*p) )
++ if ( *p == '/' || *p == '\\' || isspace(*p) || !isprint(*p) )
+ {
+ eout( "invalid char. '%c' in file name '%s', abort\n",
+ *p, outfilename );
+@@ -386,7 +388,7 @@
+
+ sprintf( pathbuf, "%s/%s", dir1, outfilename );
+
+- fd = open( pathbuf, O_WRONLY | O_CREAT | O_EXCL, 0600 );
++ fd = open( pathbuf, O_WRONLY | O_CREAT | O_EXCL, 0644 );
+ if ( fd < 0 )
+ {
+ eout( "can't open '%s' for writing: %s\n", pathbuf, strerror(errno));
+@@ -543,6 +545,9 @@
+
+ sprintf( buf, "%s/JOB", dir1 );
+
++ /* the JOB file has to be world-readable, relax umask */
++ umask( 0022 );
++
+ /* TODO: check if this portably catches symlinks to non-existant files! */
+ if ( ( fd = open( buf, O_WRONLY | O_CREAT | O_EXCL, 0644 ) ) < 0 )
+ {
+@@ -571,7 +576,8 @@
+
+ if ( strncmp(buf, "user ", 5) == 0 )
+ {
+- if ( strcmp( buf+5, real_user_name ) != 0 )
++ if ( real_user_id != ROOT_UID &&
++ strcmp( buf+5, real_user_name ) != 0 )
+ {
+ eout( "user name mismatch (%s <-> %s)\n", buf+5, real_user_name );
+ break;
+@@ -678,7 +684,8 @@
+
+ if ( strncmp(buf, "user ", 5) == 0 )
+ {
+- if ( strcmp( buf+5, real_user_name ) != 0 )
++ if ( real_user_id != ROOT_UID &&
++ strcmp( buf+5, real_user_name ) != 0 )
+ {
+ fprintf( stderr, "%s: not your job, can't do anything (%s <-> %s)\n", jfile, buf+5, real_user_name );
+ unlink( lfile );
+@@ -803,8 +810,11 @@
+
+ /* common things to check and prepare */
+
+- /* directories and JOB files have to be readable */
+- umask(0022);
++ /* make sure people do not play umask tricks on us - the only
++ * bits that are accepted in a user umask are "044" - permit/prevent
++ * read access by group/other. Write access is always denied.
++ */
++ umask( ( umask(0) & 0044 ) | 0022 );
+
+ /* get numeric uid/gid for fax user */
+ pw = getpwnam( FAX_OUT_USER );
+--- mgetty-1.1.30.orig/TODO
++++ mgetty-1.1.30/TODO
+@@ -352,6 +352,8 @@
+ 246) fix "RING/<msn>" handling for i4l
+
+ 248) include script to rotate/move log files on a regular basis
++ (base on contrib/mvlog, move to tools/, run through sedscript for
++ location and naming for the log files)
+
+ 250) move prototype for time() to mgetty.h, remove everywhere else
+
+@@ -373,3 +375,37 @@
+
+ 257) generalize calling $(MAKE) in subdirs - put all $(MAKE) arguments
+ in one common variable
++
++261) faxrunqd: don't count "modem locked" as "failure" for a given job
++ (but *do* delay by a certain time)
++ (hmmm - maybe not. If all modems are locked for a long period of
++ time, it might be useful to flag the fax as "failed" to get people to
++ notice. Combine with 259 - should resolve problem)
++
++262) faxrunqd: smarter algorithm for "modem is broken"
++ (locked = doesn't count, can't init = +1, NO CARRIER = +0.2)
++
++263) faxspool.rules: add sample mappings for PDF (via acroread, xpdf,
++ recent ghostscript versions)
++
++264) faxrunqd: timeout on "hanging" sendfax processes
++ (timeout > 15 min + 5 minutes * number of pages, or something like that)
++
++265) faxrunqd: write tty to acct.log (format change / WEB gui)
++
++260) faxrunqd: bump up priority of "exit 12" jobs
++266) faxunrqd: if a job fails half-way through (12), increase priority
++ to re-send missing parts quickly
++
++267) faxrunqd: sort per-modem statistics numerically (watchout: "total")
++
++268) faxrunq+faxrunqd: have configurable counters for
++ "send-a-warning after <x> tries, fail after <y>"
++ have separate counter for "modem-locked"
++ costing-failures tries-except-modem-locked total-tries
++ warning - 10 10
++ failure 5 30 100
++
++269) faxrunqd: have configurable threshold for "everything is broken"
++ -> if that threshold is reached, generate STOP file, warning e-mail,
++ and suspend itself (like "the local in-house PABX is broken")
+--- mgetty-1.1.30.orig/Makefile
++++ mgetty-1.1.30/Makefile
+@@ -1,6 +1,6 @@
+ # Makefile for the mgetty fax package
+ #
+-# SCCS-ID: $Id: Makefile,v 4.56 2002/12/16 13:08:23 gert Exp $ (c) Gert Doering
++# SCCS-ID: $Id: Makefile,v 4.58 2003/06/12 07:52:51 gert Exp $ (c) Gert Doering
+ #
+ # this is the C compiler to use (on SunOS, the standard "cc" does not
+ # grok my code, so please use gcc there. On ISC 4.0, use "icc".).
+@@ -213,6 +213,7 @@
+ FAX_SPOOL_OUT=$(FAX_SPOOL)/outgoing
+ #
+ # the user that owns the "outgoing fax queue" (FAX_SPOOL_OUT)
++# this user must exist in the system, otherwise faxspool will not work!
+ #
+ # faxrunq and faxrunqd should run under this user ID, and nothing else.
+ # This user needs access to the modems of course.
+@@ -300,8 +301,8 @@
+ # Nothing to change below this line ---------------------------------!
+ #
+ MR=1.1
+-SR=30
+-DIFFR=1.1.29
++SR=31
++DIFFR=1.1.30
+ #
+ #
+ OBJS=mgetty.o logfile.o do_chat.o locks.o utmp.o logname.o login.o \
+@@ -511,7 +512,7 @@
+ ssh home.leo.org -l doering 'cd $$HOME ; ./beta'
+
+ # send to Marc and Knarf
+- head -30 ChangeLog |mail -s "mgetty$(MR).$(SR).tar.gz on greenie/alpha" knarf@camelot.de marc marcs
++ head -30 ChangeLog |mail -s "mgetty$(MR).$(SR).tar.gz on greenie/alpha" mgetty@knarf.de marc marcs
+ # -./ftp.sh $(MR).$(SR) ftp.camelot.de /pub/incoming
+ # -./ftp.sh $(MR).$(SR) poseidon.thphy.uni-duesseldorf.de /incoming
+
+@@ -600,9 +601,9 @@
+ # data files + directories
+ #
+ test -d $(LIBDIR) || \
+- ( ./mkidirs $(LIBDIR) ; chmod 755 $(LIBDIR) )
++ ( ./mkidirs $(LIBDIR) && chmod 755 $(LIBDIR) )
+ test -d $(CONFDIR) || \
+- ( ./mkidirs $(CONFDIR); chmod 755 $(CONFDIR))
++ ( ./mkidirs $(CONFDIR) && chmod 755 $(CONFDIR))
+ test -f $(CONFDIR)/login.config || \
+ $(INSTALL) -o root -m 600 login.config $(CONFDIR)/
+ test -f $(CONFDIR)/mgetty.config || \
+@@ -627,17 +628,17 @@
+ # fax spool directories
+ #
+ test -d $(spool) || \
+- ( mkdir $(spool) ; chmod 755 $(spool) )
++ ( mkdir $(spool) && chmod 755 $(spool) )
+ test -d $(FAX_SPOOL) || \
+- ( mkdir $(FAX_SPOOL) ; \
+- chown $(FAX_OUT_USER) $(FAX_SPOOL) ; \
++ ( mkdir $(FAX_SPOOL) && \
++ chown $(FAX_OUT_USER) $(FAX_SPOOL) && \
+ chmod 755 $(FAX_SPOOL) )
+ test -d $(FAX_SPOOL_IN) || \
+- ( mkdir $(FAX_SPOOL_IN) ; chmod 755 $(FAX_SPOOL_IN) )
++ ( mkdir $(FAX_SPOOL_IN) && chmod 755 $(FAX_SPOOL_IN) )
+ test -d $(FAX_SPOOL_OUT) || \
+- ( mkdir $(FAX_SPOOL_OUT) ; \
+- chown $(FAX_OUT_USER) $(FAX_SPOOL_OUT) ; \
+- chmod 755 $(FAX_SPOOL_OUT) )
++ mkdir $(FAX_SPOOL_OUT)
++ chown $(FAX_OUT_USER) $(FAX_SPOOL_OUT)
++ chmod 755 $(FAX_SPOOL_OUT)
+ #
+ # g3 tool programs
+ #
+--- mgetty-1.1.30.orig/voice/libutil/access.c
++++ mgetty-1.1.30/voice/libutil/access.c
+@@ -5,7 +5,7 @@
+ * exactly one unnested call to voice_desimpersonify() for each
+ * voice_impersonify() because of the static umask below.
+ *
+- * $Id: access.c,v 1.2 1999/07/04 07:15:52 marcs Exp $
++ * $Id: access.c,v 1.3 2003/04/23 08:49:16 gert Exp $
+ *
+ */
+
+@@ -32,14 +32,14 @@
+ &gid);
+
+ if (setegid(gid)) {
+- lprintf(L_WARN, "%s: cannot set effective GID to %d",
+- program_name, gid);
++ lprintf(L_WARN, "%s: cannot set effective GID to %d: %s",
++ program_name, gid, strerror(errno));
+ return 0;
+ }
+
+ if (seteuid(uid)) {
+- lprintf(L_WARN, "%s: cannot set effective UID to %d",
+- program_name, uid);
++ lprintf(L_WARN, "%s: cannot set effective UID to %d: %s",
++ program_name, uid, strerror(errno));
+ return 0;
+ }
+
+@@ -52,14 +52,14 @@
+
+ int voice_desimpersonify(void) {
+ if (seteuid(getuid())) {
+- lprintf(L_WARN, "%s: cannot switch back to effective UID %d",
+- program_name, getuid());
++ lprintf(L_WARN, "%s: cannot switch back to effective UID %d: %s",
++ program_name, getuid(), strerror(errno));
+ return 0;
+ }
+
+ if (setegid(getgid())) {
+- lprintf(L_WARN, "%s: cannot switch back to effective GID %d",
+- program_name, getgid());
++ lprintf(L_WARN, "%s: cannot switch back to effective GID %d: %s",
++ program_name, getgid(), strerror(errno));
+ return 0;
+ }
+
+--- mgetty-1.1.30.orig/voice/libvoice/V253modem.c
++++ mgetty-1.1.30/voice/libvoice/V253modem.c
+@@ -16,7 +16,7 @@
+ Hint: Recorded voice files are in .ub format (refer to the sox manpage about this) except the header.
+ So you can use this files with sox.
+ *
+- * $Id: V253modem.c,v 1.6 2002/11/25 21:14:51 gert Exp $
++ * $Id: V253modem.c,v 1.7 2003/01/08 22:03:18 gert Exp $
+ *
+ */
+
+@@ -352,7 +352,7 @@
+
+ /* Only verifies the RMD name */
+ #define V253modem_RMD_NAME "V253modem"
+-#define ELSA_RMD_NAME "ELSA"
++#define ELSA_RMD_NAME "Elsa"
+ int V253_check_rmd_adequation(char *rmd_name)
+ {
+ return !strncmp(rmd_name,
+--- mgetty-1.1.30.orig/faxrecp.c
++++ mgetty-1.1.30/faxrecp.c
+@@ -94,13 +94,13 @@
+
+ #ifdef SHORT_FILENAMES
+ sprintf(temp, "%s/f%c%07x%s.%02d", directory,
+- fax_par_d.vr == 0? 'n': 'f',
++ (fax_par_d.vr == 0 || fax_par_d.vr == 8) ? 'n': 'f',
+ (int) call_start & 0xfffffff,
+ DevId, pagenum );
+ #else
+ /* include sender's fax id - if present - into filename */
+ sprintf(temp, "%s/f%c%07x%s-", directory,
+- fax_par_d.vr == 0? 'n': 'f',
++ (fax_par_d.vr == 0 || fax_par_d.vr == 8) ? 'n': 'f',
+ (int) call_start & 0xfffffff,
+ DevId );
+ i = strlen(temp);
+--- mgetty-1.1.30.orig/logfile.c
++++ mgetty-1.1.30/logfile.c
+@@ -3,13 +3,6 @@
+ #include <stdio.h>
+ #include <unistd.h>
+ #include <fcntl.h>
+-#ifdef USE_VARARGS
+-# if !defined(NeXT) || defined(NEXTSGTTY)
+-# include <varargs.h>
+-# endif
+-#else
+-# include <stdarg.h>
+-#endif
+ #include <sys/types.h>
+ #include <time.h>
+ #include <errno.h>
+@@ -19,6 +12,15 @@
+ #include "mgetty.h"
+ #include "policy.h"
+
++/* this must be included after ugly.h (sets USE_VARARGS on non-ANSI cc's) */
++#ifdef USE_VARARGS
++# if !defined(NeXT) || defined(NEXTSGTTY)
++# include <varargs.h>
++# endif
++#else
++# include <stdarg.h>
++#endif
++
+ #ifdef SYSLOG
+ #include <syslog.h>
+
+--- mgetty-1.1.30.orig/faxlib.c
++++ mgetty-1.1.30/faxlib.c
+@@ -178,8 +178,10 @@
+
+ if ( line[ix+1] == ',' && /* +FPS:s,lc,blc */
+ sscanf( &line[ix+2],
+- (modem_type==Mt_class2_0)?"%x,%x,%x,%x"
+- :"%d,%d,%d,%d",
++ ( modem_type == Mt_class2 ||
++ (modem_quirks & MQ_FPS_NOT_HEX) )
++ ?"%d,%d,%d,%d"
++ :"%x,%x,%x,%x",
+ &fhs_lc, &fhs_blc, &fhs_cblc, &fhs_lbc ) >= 2 )
+ {
+ lprintf( L_NOISE, "%d lines received, %d lines bad, %d bytes lost", fhs_lc, fhs_blc, fhs_lbc );
+@@ -636,7 +638,7 @@
+ case 1445:
+ lprintf( L_MESG, "USR Courier/Sportster v32bis detected (buggy fax implementation)" );
+ modem_type=Mt_class2_0;
+- modem_quirks |= MQ_USR_FMINSP;
++ modem_quirks |= MQ_USR_FMINSP | MQ_FPS_NOT_HEX;
+ break;
+ case 2886:
+ case 3361:
+@@ -645,17 +647,20 @@
+ case 3367:
+ lprintf( L_MESG, "USR Courier/Sportster V.34(+) detected" );
+ modem_type=Mt_class2_0;
++ modem_quirks |= MQ_FPS_NOT_HEX;
+ mis = mdm_get_idstring( "ATI3", 1, fd );
+ break;
+ case 5601:
+ case 5607:
+ lprintf( L_MESG, "USR Courier/Sportster 56k detected" );
+ modem_type=Mt_class2_0;
++ modem_quirks |= MQ_FPS_NOT_HEX;
+ mis = mdm_get_idstring( "ATI3", 1, fd );
+ break;
+ case 6401:
+ lprintf( L_MESG, "USR I-Modem detected" );
+ modem_type=Mt_class2_0;
++ modem_quirks |= MQ_FPS_NOT_HEX;
+ mis = mdm_get_idstring( "ATI3", 1, fd );
+ break;
+ case 62: /* sure? */
+@@ -813,6 +818,7 @@
+ {
+ lprintf( L_MESG, "USR Courier/Sportster V90 (national variant?) detected" );
+ modem_type=Mt_class2_0;
++ modem_quirks |= MQ_FPS_NOT_HEX;
+ mis = mdm_get_idstring( "ATI3", 1, fd );
+ }
+ /* grrr, another one of those - Bill Nugent <whn@topelo.lopi.com> */
+@@ -835,6 +841,12 @@
+ modem_type=Mt_class2;
+ modem_quirks |= MQ_NEED2;
+ }
++ else if ( strncmp( l, "LT V.92", 7 ) == 0 ) /* gert */
++ {
++ lprintf( L_MESG, "Multitech MT5634ZBA-V92 detected" );
++ modem_type=Mt_class2_0;
++ modem_quirks |= MQ_FPS_NOT_HEX;
++ }
+ }
+
+ if ( mis != NULL )
+--- mgetty-1.1.30.orig/faxrec.c
++++ mgetty-1.1.30/faxrec.c
+@@ -208,7 +208,7 @@
+ fprintf( pipe_fp, "\nModem device: %s\n", Device );
+ fprintf( pipe_fp, "\nCommunication parameters: %s\n", fax_param );
+ fprintf( pipe_fp, " Resolution : %s\n",
+- fax_par_d.vr == 0? "normal" :"fine");
++ (fax_par_d.vr == 0 || fax_par_d.vr == 8) ? "normal" :"fine");
+ fprintf( pipe_fp, " Bit Rate : %d\n", ( fax_par_d.br+1 ) * 2400 );
+ fprintf( pipe_fp, " Page Width : %d pixels\n", fax_par_d.wd == 0? 1728:
+ ( fax_par_d.wd == 1 ? 2048: 2432 ) );
+--- mgetty-1.1.30.orig/logname.c
++++ mgetty-1.1.30/logname.c
+@@ -51,7 +51,7 @@
+
+ char * ln_escape_prompt _P1( (ep), char * ep )
+ {
+-#define MAX_PROMPT_LENGTH 140
++#define MAX_PROMPT_LENGTH 300
+ static char * p = NULL;
+ int i;
+ static struct utsname un;
+@@ -191,7 +191,7 @@
+
+ if ( *ep != 0 )
+ {
+- lprintf( L_WARN, "buffer overrun - input prompt too long" );
++ lprintf( L_WARN, "ln_escape_prompt: input line too long - data truncated" );
+ }
+
+ return p;
+--- mgetty-1.1.30.orig/README.1st
++++ mgetty-1.1.30/README.1st
+@@ -72,7 +72,7 @@
+
+ Generic questions ("it doesn't work") should go to the mgetty mailing list
+ (mgetty@muc.de), because I just don't have time to explain it all again
+-and again.
++and again. (Un-)Subscription is done via mgetty-request@muc.de.
+
+ And... please do not forget that I'm doing this kind of support entirely
+ in my spare time - sometimes my answers will be very short, or it may
+--- mgetty-1.1.30.orig/ugly.h
++++ mgetty-1.1.30/ugly.h
+@@ -38,5 +38,10 @@
+ #define const
+ #define volatile
+
++/* <stdarg.h> and function(fmt,...) is incompatible with K&R protoypes */
++#ifndef USE_VARARGS
++# define USE_VARARGS
++#endif
++
+ #endif
+
+--- mgetty-1.1.30.orig/ChangeLog
++++ mgetty-1.1.30/ChangeLog
+@@ -1,3 +1,79 @@
++Wed Aug 20 12:39:53 MEST 2003 Gert Doering (gert@greenie.muc.de)
++
++ * fax/faxrunqd.in: change signal handling - use HUP for graceful
++ exit, and dump statistics to logfile upon receipt of USR2
++
++Sat Jun 28 22:14:35 MEST 2003 Gert Doering (gert@greenie.muc.de)
++
++ * fax/faxq-helper.c: honour user umask when spooling G3 files
++ (user decides whether group/other can read faxes)
++
++ * fax/faxspoool.in: reset umask after creating tmpdir (with umask 077)
++
++ * fax/faxq-helper.c: file name validation was overly strict -
++ accept anything that's printable, not a space, '/' or '\'
++
++Thu Jun 12 16:56:44 MEST 2003 Gert Doering (gert@greenie.muc.de)
++
++ * faxlib.c: Multitech and USR return class 2.0/2.1 +FPS:<x>,<lc>
++ values in decimal, not hex -> change +FPS: parser to do decimal
++ for those modems (via modem_quirks |= MQ_FPS_NOT_HEX)
++
++ * fax_lib.h: add MQ_FPS_NOT_HEX modem quirk bit
++
++ * faxrec.c, faxrecp.c: understand VR=8 for "normal mode" (200x100 dpi)
++
++Mon Apr 28 19:41:14 MEST 2003 Gert Doering (gert@greenie.muc.de)
++
++ * logname: make "buffer overrun" error message more precise
++
++Wed Apr 23 10:49:25 MEST 2003 John R. Jackson <jrj@purdue.edu>
++
++ * voice/libutil/access.c: more verbose error reporting
++
++Wed Apr 9 23:05:23 MEST 2003 Gert Doering (gert@greenie.muc.de)
++
++ * fax/faxspool.in: fix spooling without header line (-h -)
++
++Sun Apr 6 16:09:14 MEST 2003 Andreas Barth <aba@not.so.argh.org>
++
++ * mgetty.8in, mgetty.texi-in: document escape sequences for
++ /etc/issue and login prompt.
++
++Wed Mar 5 21:37:38 MET 2003 Gert Doering (gert@greenie.muc.de)
++
++ * Makefile: abort "make install" before installing faxspool
++ if fax user does not exist
++
++ * Makefile: unconditionally chown $FAX_SPOOL_OUT to fax user
++
++Tue Feb 4 17:46:45 MET 2003 Gert Doering (gert@greenie.muc.de)
++
++ * fax/faxq-helper.c: uid=0 overrides access permission checks
++
++ * fax/faxrm.in: bugfix: get faxq-helper path from sedscript
++
++Tue Jan 21 14:27:39 MET 2003 Gert Doering (gert@greenie.muc.de)
++
++ * fax/faxspool.in: abort with a proper error message on input file
++ names containing white space or quote characters
++
++Tue Jan 14 14:30:42 MET 2003 Gert Doering (gert@greenie.muc.de)
++
++ * fax/faxrunqd.in: include "success" counter in per_phone_statistics
++
++ * ugly.h: #define USE_VARARGS for non-Ansi C compilers
++
++ * logfile.c: change #include<> sequence to catch USE_VARARGS def.
++
++Wed Jan 8 23:03:26 MET 2003 Gert Doering (gert@greenie.muc.de)
++
++ * fax/faxrunqd.in: if a fax job fails, reschedule on different
++ modem (if possible)
++
++ * voice/libvoice/V253modem.c: fix ELSA_RMD_NAME (used for
++ V.253 modem <-> other modem RMD equivalency checks)
++
+ Mon Dec 16 14:08:06 MET 2002 Gert Doering (gert@greenie.muc.de)
+
+ * release 1.1.30
+--- mgetty-1.1.30.orig/version.h
++++ mgetty-1.1.30/version.h
+@@ -1 +1 @@
+-char * mgetty_version = "experimental test release 1.1.30-Dec16";
++char * mgetty_version = "experimental test release 1.1.31-Sep23";
+--- mgetty-1.1.30.orig/fax_lib.h
++++ mgetty-1.1.30/fax_lib.h
+@@ -102,3 +102,6 @@
+ #define MQ_NO_XON 0x08 /* do not wait for XON char when sending */
+ #define MQ_USR_FMINSP 0x20 /* USR: +FCC=1,<max> sets MIN speed instead */
+ #define MQ_SHOW_NSF 0x40 /* set AT+FNR=1,1,1,1 (with NSFs) */
++#define MQ_FPS_NOT_HEX 0x80 /* +FPS:<status>,<lc> reported as decimal */
++
++/* note: 0x100 and 0x200 currently used for teergrubing - faxrecp.c */
diff --git a/recipes/mgetty/mgetty-1.1.30/install.patch b/recipes/mgetty/mgetty-1.1.30/install.patch
new file mode 100644
index 0000000000..f5a81e6840
--- /dev/null
+++ b/recipes/mgetty/mgetty-1.1.30/install.patch
@@ -0,0 +1,133 @@
+
+#
+# Patch managed by http://www.mn-logistik.de/unsupported/pxa250/patcher
+#
+
+--- mgetty-1.1.30/Makefile~install
++++ mgetty-1.1.30/Makefile
+@@ -170,10 +170,13 @@
+ # if your systems doesn't have one, use the shell script that I provide
+ # in "inst.sh" (taken from X11R5). Needed on IRIX5.2
+ INSTALL=install -c
+-#INSTALL=install -c -o root -g wheel # NeXT/BSD
++#INSTALL=install -c -g wheel # NeXT/BSD
+ #INSTALL=/usr/ucb/install -c -o bin -g bin # AIX, Solaris 2.x
+ #INSTALL=installbsd -c -o bin -g bin # OSF/1, AIX 4.1, 4.2
+ #INSTALL=/usr/bin/X11/bsdinst -c -o bin # IRIX
++
++# tool to strip binaries
++STRIP=strip
+ #
+ # prefix, where most (all?) of the stuff lives, usually /usr/local or /usr
+ #
+@@ -586,6 +589,8 @@
+
+ install: install.bin install.doc
+
++install.doc: install.man install.info
++
+ install.bin: mgetty sendfax newslock \
+ login.config mgetty.config sendfax.config
+ #
+@@ -597,8 +602,10 @@
+ -test -d $(SBINDIR) || ( ./mkidirs $(SBINDIR) ; chmod 755 $(SBINDIR) )
+ -mv -f $(SBINDIR)/mgetty $(SBINDIR)/mgetty.old
+ -mv -f $(SBINDIR)/sendfax $(SBINDIR)/sendfax.old
+- $(INSTALL) -s -m 755 mgetty $(SBINDIR)
+- $(INSTALL) -s -m 755 sendfax $(SBINDIR)
++ $(INSTALL) -m 755 mgetty $(SBINDIR)
++ $(STRIP) $(SBINDIR)/mgetty
++ $(INSTALL) -m 755 sendfax $(SBINDIR)
++ $(STRIP) $(SBINDIR)/sendfax
+ #
+ # data files + directories
+ #
+@@ -607,15 +614,15 @@
+ test -d $(CONFDIR) || \
+ ( ./mkidirs $(CONFDIR) && chmod 755 $(CONFDIR))
+ test -f $(CONFDIR)/login.config || \
+- $(INSTALL) -o root -m 600 login.config $(CONFDIR)/
++ $(INSTALL) -m 600 login.config $(CONFDIR)/
+ test -f $(CONFDIR)/mgetty.config || \
+- $(INSTALL) -o root -m 600 mgetty.config $(CONFDIR)/
++ $(INSTALL) -m 600 mgetty.config $(CONFDIR)/
+ test -f $(CONFDIR)/sendfax.config || \
+- $(INSTALL) -o root -m 644 sendfax.config $(CONFDIR)/
++ $(INSTALL) -m 644 sendfax.config $(CONFDIR)/
+ test -f $(CONFDIR)/dialin.config || \
+- $(INSTALL) -o root -m 600 dialin.config $(CONFDIR)/
++ $(INSTALL) -m 600 dialin.config $(CONFDIR)/
+ test -f $(CONFDIR)/faxrunq.config || \
+- $(INSTALL) -o root -m 644 faxrunq.config $(CONFDIR)/
++ $(INSTALL) -m 644 faxrunq.config $(CONFDIR)/
+ #
+ # test for outdated stuff
+ #
+@@ -630,37 +637,36 @@
+ # fax spool directories
+ #
+ test -d $(spool) || \
+- ( mkdir $(spool) && chmod 755 $(spool) )
++ ( mkdir -p $(spool) && chmod 755 $(spool) )
+ test -d $(FAX_SPOOL) || \
+- ( mkdir $(FAX_SPOOL) && \
+- chown $(FAX_OUT_USER) $(FAX_SPOOL) && \
++ ( mkdir -p $(FAX_SPOOL) && \
+ chmod 755 $(FAX_SPOOL) )
+ test -d $(FAX_SPOOL_IN) || \
+- ( mkdir $(FAX_SPOOL_IN) && chmod 755 $(FAX_SPOOL_IN) )
++ ( mkdir -p $(FAX_SPOOL_IN) && chmod 755 $(FAX_SPOOL_IN) )
+ test -d $(FAX_SPOOL_OUT) || \
+- mkdir $(FAX_SPOOL_OUT)
+- chown $(FAX_OUT_USER) $(FAX_SPOOL_OUT)
++ mkdir -p $(FAX_SPOOL_OUT)
+ chmod 755 $(FAX_SPOOL_OUT)
+ #
+ # g3 tool programs
+ #
+ cd g3 ; $(MAKE) install INSTALL="$(INSTALL)" \
+ BINDIR=$(BINDIR) \
+- LIBDIR=$(LIBDIR) CONFDIR=$(CONFDIR)
++ LIBDIR=$(LIBDIR) CONFDIR=$(CONFDIR) STRIP=$(STRIP)
+ #
+ # fax programs / scripts / font file
+ #
+ cd fax ; $(MAKE) install INSTALL="$(INSTALL)" \
+ FAX_OUT_USER=$(FAX_OUT_USER) \
+ BINDIR=$(BINDIR) SBINDIR=$(SBINDIR) \
+- LIBDIR=$(LIBDIR) CONFDIR=$(CONFDIR)
++ LIBDIR=$(LIBDIR) CONFDIR=$(CONFDIR) STRIP=$(STRIP)
+ #
+ # compatibility
+ #
+ if [ ! -z "$(INSTALL_MECHO)" ] ; then \
+ cd compat ; \
+ $(CC) $(CFLAGS) -o mg.echo mg.echo.c && \
+- $(INSTALL) -s -m 755 mg.echo $(BINDIR) ; \
++ $(INSTALL) -m 755 mg.echo $(BINDIR) ; \
++ $(STRIP) $(BINDIR)/mg.echo ; \
+ fi
+
+ #
+--- mgetty-1.1.30/fax/Makefile~install
++++ mgetty-1.1.30/fax/Makefile
+@@ -61,7 +61,6 @@
+ done
+ $(INSTALL) -m 755 faxrunqd $(SBINDIR)
+ $(INSTALL) faxq-helper $(LIBDIR)
+- chown $(FAX_OUT_USER) $(LIBDIR)/faxq-helper
+ chmod 4711 $(LIBDIR)/faxq-helper
+ #
+ # data files
+--- mgetty-1.1.30/g3/Makefile~install
++++ mgetty-1.1.30/g3/Makefile
+@@ -37,7 +37,8 @@
+ # install programs
+ #
+ for f in $(G3_PROGRAMS) ; do \
+- $(INSTALL) -s -m 755 $$f $(BINDIR) ; \
++ $(INSTALL) -m 755 $$f $(BINDIR) ; \
++ $(STRIP) $(BINDIR)/$$f ; \
+ done
+ #
+ # make symlink for "g3topbm" (so third-party fax viewers won't fail)
diff --git a/recipes/mgetty/mgetty-1.1.30/policy.h b/recipes/mgetty/mgetty-1.1.30/policy.h
new file mode 100644
index 0000000000..8db0dff407
--- /dev/null
+++ b/recipes/mgetty/mgetty-1.1.30/policy.h
@@ -0,0 +1,602 @@
+#ident "@(#)policy.h 4.3 97/06/05 Copyright (c) Gert Doering"
+
+/* this is the file where all configuration defaults for mgetty / sendfax
+ * are specified.
+ *
+ * defaults are used if no values are given in the config file(s).
+ * config file values can be overridden by command line options.
+ *
+ * see mgetty.texi/mgetty.info for a description of the configuration files.
+ */
+
+/* main mgetty configuration file
+ */
+#define MGETTY_CONFIG "mgetty.config"
+
+/* sendfax configuration file
+ *
+ * if path doesn't start with "/", it's relative to CONFDIR (Makefile)
+ * if not defined, no configuration file is read (saves a few kbytes)
+ */
+#define SENDFAX_CONFIG "sendfax.config"
+
+
+/* login dispatcher config file (for mgetty)
+ *
+ * In this file, you can configure which "login" program (default /bin/login)
+ * to call for what user name.
+ *
+ * You could use it to call "uucico" for all users starting with "U*"
+ * (works only with Taylor UUCP 1.04 with my patch), or to call a fido
+ * mailer for fido calls (only if -DFIDO defined)...
+ * See the samples in the example login.config file (built from login.cfg.in).
+ *
+ * WARNING: make sure that this file isn't world-accessable (SECURITY!)
+ *
+ * If you want to call /bin/login in any case, do not define this
+ *
+ * If this doesn't start with "/", it's relative to CONFDIR.
+ */
+#define LOGIN_CFG_FILE "login.config"
+
+/* default login program
+ *
+ * If LOGIN_CFG_FILE is not defined, or does not exist, or doesn't
+ * have a default entry, this program is called for user logins.
+ * Normally, this is "/bin/login", just a few systems put "login"
+ * elsewhere (e.g. Free/NetBSD in "/usr/bin/login").
+ */
+#define DEFAULT_LOGIN_PROGRAM "/bin/login"
+
+
+/* callback config file
+ *
+ * this file controls the operation of the optional "callback" program.
+ * how callback works, is explained in detail in mgetty.texi. You need
+ * to set LOGIN_CFG_FILE (see above) to use callback from mgetty.
+ *
+ * If this path does not start with "/", it's relative to CONFDIR.
+ */
+#define CALLBACK_CONFIG "callback.config"
+
+
+/* if this file exists, it can be used to control what callers
+ * are allowed in. If undefined, the functionality is omitted.
+ * It will work only if your modem supports it. Check the modem manual.
+ * For Rockwell-Based modems, add #CID=1 to MODEM_INIT_STRING, for
+ * ZyXELs use S40.2=1.
+ * If the path doesn't start with "/", it's relative to CONFDIR.
+ */
+#define CNDFILE "dialin.config"
+
+
+/* If you want to use /etc/gettydefs to set tty flags, define this
+ * I recommend against it, I suspect some bugs lingering in that code
+ * (and one doesn't really need it in a normal setup anyway).
+ */
+/* #define USE_GETTYDEFS */
+
+/* Name of the "gettydefs" file (used only if USE_GETTYDEFS is set)
+ */
+#define GETTYDEFS "/etc/gettydefs"
+
+/* If no gettydefs "tag" is specified on the command line, use
+ * this setting (from GETTYDEFS) as default (only if compiled with
+ * USE_GETTYDEFS set)
+ */
+#define GETTYDEFS_DEFAULT_TAG "n"
+
+
+/* access modes */
+
+/* user id of the "uucp" user. The tty device will be owned by this user,
+ * so parallel dial-out of uucico will be possible
+ */
+#define DEVICE_OWNER "root"
+/* group id that the device is chown()ed to. If not defined, the
+ * primary group of "DEVICE_OWNER" is used.
+ */
+#define DEVICE_GROUP "dialout"
+
+/* access mode for the line while getty has it - it should be accessible
+ * by uucp / uucp, but not by others (imagine someone dialing into your
+ * system and using another modem to dial to another country...)
+ */
+#define FILE_MODE 0660
+
+/* security: optionally, mgetty can system() this, to kill any dangling
+ * processes on the current tty. A %s is replaced with the tty device.
+ * NOT NEEDED on SCO, SunOS 4 or Linux!
+ */
+/* #define EXEC_FUSER "exec fuser -k -f %s >/dev/null 2>&1" */
+
+
+/* logging */
+
+/* system console - if a severe error happens at startup, mgetty writes
+ * a message to this file and aborts
+ * On SCO, this may be /dev/syscon!
+ */
+#define CONSOLE "/dev/console"
+
+/* Name of the mgetty log file
+ * e.g. "/usr/spool/log/mgetty.log.%s" or "/tmp/log_mg.%s"
+ * a "%s" will be replaced by the device name, e.g. "tty2a"
+ *
+ * if the directory does not exist, the log file goes to CONSOLE (!)
+ */
+#define LOG_PATH "/var/log/mgetty/mg_%s.log"
+
+/* Default log error level threshold. Possible error levels are
+ * L_FATAL, L_ERROR, L_WARN, L_AUDIT, L_MESG, L_NOISE, L_JUNK (see mgetty.h)
+ */
+#define LOG_LEVEL L_MESG
+
+/* Whether "\n"s in the modem response should start a new line
+ * in the logfile
+ */
+/* #define LOG_CR_NEWLINE */
+
+/* System administrator - if a severe error happens (lprintf called
+ * with log_level L_FATAL) and writing to CONSOLE is not possible,
+ * the logfile will be mailed to him
+ */
+#define ADMIN "root"
+
+/* Syslog
+ *
+ * If you want logging messages of type L_AUDIT, L_ERROR and L_FATAL
+ * to go to the "syslog", define this.
+ * mgetty will use the facility "LOG_AUTH", and the priorities
+ * LOG_NOTICE, LOG_ERR and LOG_ALERT, respectively.
+ */
+#define SYSLOG
+
+/* Syslog facility
+ *
+ * This is the facility mgetty uses for logging. Ususally, this will be
+ * LOG_AUTH, but on some systems, this may not exist, try LOG_DAEMON
+ * instead (or look into the syslog manpage for available options)
+ */
+#define SYSLOG_FC LOG_AUTH
+
+/* login stuff */
+
+/* System name - printed at login prompt
+ * If you do not define this, the uname() call will be used
+ */
+/* #define SYSTEM "greenie" */
+
+/* Login prompt
+ * The "@", "\\D" and "\\T" escapes will be replaced by SYSTEM, the
+ * current date and time, respectively.
+ * override with "-p <prompt>" switch
+ */
+#define LOGIN_PROMPT "@ login: "
+
+/* On SVR4, maybe on other systems too, you can cause the 'login' program
+ * to prompt with the same string as mgetty did, instead of the standard
+ * "login:" prompt. The string will be passed to the 'login' program
+ * in the environment variable TTYPROMPT.
+ * This is done by putting "login" into a special (brain-dead) "ttymon"-
+ * compatibility mode. In that mode, mgetty doesn't ask for a login name
+ * at all, so mgetty won't work if you enable that feature and your
+ * login program doesn't support it. (You can see if it doesn't work
+ * if the user gets a double login prompt or none at all).
+ *
+ * This feature automatically disables FIDO and AutoPPP support!
+ *
+ * To use this feature, define ENV_TTYPROMPT.
+ */
+/* #define ENV_TTYPROMPT */
+
+/* Maximum time before login name has to be entered (in seconds)
+ * (after that time a warning will be issued, after that, the call is
+ * dropped). To disable that feature, do not define it.
+ */
+#define MAX_LOGIN_TIME 240
+
+/* nologin file
+ *
+ * If that file exists, a ringing phone won't be answered (see manual).
+ * "%s" will be replaced by the device name.
+ */
+#define NOLOGIN_FILE "/etc/nologin.%s"
+
+
+/* misc */
+
+/* how to find mgetty..
+ *
+ * If you define this, mgetty will create a file with the given name and
+ * put its process ID in it. A "%s" will be replaced by the device id.
+ *
+ * Depending on your system, "/var/run/mgetty.%d" might be a good place.
+ */
+#define MGETTY_PID_FILE "/var/run/mg-pid.%s"
+
+/* Path for the lock files. A %s will be replaced with the device name,
+ * e.g. tty2a -> /usr/spool/uucp/LCK..tty2a
+ * Make sure that this is the same file that your uucico uses for
+ * locking!
+ */
+
+/* for a few systems, you can just take those defaults and be happy */
+#if defined (SVR4) || defined(sunos4)
+# define LOCK_PATH "/var/spool/locks"
+# define LOCK "/var/spool/locks/LCK..%s"
+#else
+# ifdef sgi
+# define LOCK "/usr/spool/locks/LCK..%s"
+# endif
+# ifdef _AIX
+# define LOCK "/etc/locks/LCK..%s"
+# endif
+# ifdef NeXT
+# define LOCK "/usr/spool/uucp/LCK/LCK..%s"
+# endif
+# ifdef linux
+# define LOCK "/var/lock/LCK..%s"
+# endif
+#endif
+
+/* if your system isn't listed above, change that line here */
+#ifndef LOCK
+#define LOCK "/var/lock/LCK..%s"
+#endif
+
+/* Set this to "1" if your system uses binary lock files (i.e., the pid
+ * as four byte integer in host byte order written to the lock file)
+ * If it is "0", HDB locking will be used - the PID will be written as
+ * 10 byte ascii, with a trailing newline
+ * (Just check "LOCK" while uucico or pcomm or ... are running to find
+ * out what lock files are used on your system)
+ * On NeXT systems, you must set this to "1".
+ */
+#define LOCKS_BINARY 0
+
+/* Lower case locks - change the last character of the device name
+ * to lowercase for locking purposes.
+ *
+ * If you're using a SCO Unix system with those "tty1a/tty1A" device
+ * pairs, you'll have to define this.
+ */
+/* #define LOCKS_LOWERCASE */
+
+/* Change _all_ characters to lowercase (currently no system uses this) */
+/* #define LOCKS_ALL_LOWERCASE */
+
+
+/* the default speed used by mgetty - override it with "-s <speed>"
+ *
+ * WARNING: this is a bit tricky, since some modems insist on going to
+ * 19200 bps when in fax mode. So, if fax receiving with a port speed of
+ * something else doesn't work, try experimenting with FAX_RECV_SWITCHBD,
+ * and if that doesn't help, try DEFAULT_PORTSPEED 19200
+ *
+ * WARNING2: Speeds higher than 38400 aren't supported on all platforms,
+ * and sometimes you have to use "50" to get 57600 or so!
+ */
+#define DEFAULT_PORTSPEED 38400
+
+/* the modem initialization string
+ *
+ * the default string should set up most hayes compatible modems into a
+ * fairly sane state (echo on, verbose reports on, quiet off, reset on
+ * DTR toggle on), but it doesn't set any flow control options (because
+ * that's done differently on each modem, look into your manual for commands
+ * like &H3, &K4, \Q6 or similar things) or protocols.
+ *
+ * You can change the initialization sequence with the "init-chat" keyword
+ * in "mgetty.config".
+ *
+ * If you need delays, specify them as "\\d", if you want to send a
+ * backslash ('\'), give it as "\\\\".
+ *
+ * Very IMPORTANT: make sure that the modem assigns the DCD line properly,
+ * usually this is done with the AT&C1 command!
+ *
+ * The modem must answer with "OK" (!!!) - otherwise, use "init-chat".
+ */
+#define MODEM_INIT_STRING "AT"
+
+/* command termination string
+ *
+ * for most modems, terminating the AT... command with "\r" is
+ * sufficient and "\r\n" also works without doing harm.
+ * Unfortunately, for the Courier HST, you've to use *only* \r,
+ * otherwise ATA won't work (immediate NO CARRIER), and for some
+ * (old) ZyXELs, you have to use \r\n (no OK otherwise).
+ * So, try one, and if it doesn't work, try the other.
+ */
+#define MODEM_CMD_SUFFIX "\r"
+
+/* "keep alive"
+ *
+ * mgetty can periodically check whether the modem is still alive
+ * by issueing an "AT\r" command and checking for the "OK"
+ * Define here, in seconds, how often mgetty should check. For normal
+ * reliable modems, once an hour should be sufficient...
+ * If you use "-1", or don't define this at all, mgetty won't check.
+ */
+#define MODEM_CHECK_TIME 3600
+
+
+/* modem mode
+ *
+ * DEFAULT_MODEMTYPE specifies the default way mgetty+sendfax handle a
+ * faxmodem. You have four choices:
+ * "data" - data only, no faxing available (for sendfax, equal to "auto")
+ * "cls2" - use AT+FCLASS=2
+ * "c2.0" - use AT+FCLASS=2.0
+ * "auto" - try "2.0", then "2", then fall to "data".
+ *
+ * Normally, you can leave this to "auto", but if you have a modem that
+ * can do class 2.0 and class 2, and 2.0 doesn't work, then you could try
+ * setting it to "cls2".
+ * You can override this define with the "-C <mode>" switch.
+ */
+#define DEFAULT_MODEMTYPE "auto"
+
+
+/* some modems are a little bit slow - after sending a response (OK)
+ * to the host, it will take some time before they can accept the next
+ * command - specify the amount needed in data mode here (in
+ * milliseconds). Normally, 50 ms should be sufficient. (On a slow
+ * machine it may even work without any delay at all)
+ *
+ * Be warned: if your machine isn't able to sleep for less than one
+ * second, this may cause problems.
+ */
+#define DO_CHAT_SEND_DELAY 50
+ /* and this is the delay before sending each command while in fax mode
+ */
+#define FAX_COMMAND_DELAY 50
+
+/* incoming faxes will be chown()ed to this uid and gid.
+ * if FAX_IN_GROUP is undefined, the group of ...OWNER is used.
+ */
+#define FAX_IN_OWNER "root"
+#define FAX_IN_GROUP "fax"
+
+/* incoming faxes will be chmod()ed to this mode
+ * (if you do not define this, the file mode will be controlled by
+ * mgetty's umask)
+ */
+#define FAX_FILE_MODE 0660
+
+/* FLOW CONTROL
+ *
+ * There are basically two types of flow control:
+ * - hardware flow control: pull the RTS/CTS lines low to stop the other
+ * side from spilling out data too fast
+ * - sofware flow control: send an Xoff-Character to tell the other
+ * side to stop sending, send an Xon to restart
+ * obviously, use of Xon/Xoff has the disadvantage that you cannot send
+ * those characters in your data anymore, but additionally, hardware flow
+ * control is normally faster and more reliable
+ *
+ * mgetty can use multiple flow control variants:
+ * FLOW_NONE - no flow control at all (absolutely not recommended)
+ * FLOW_HARD - use RTS/CTS flow control (if available on your machine)
+ * FLOW_SOFT - use Xon/Xoff flow control, leave HW lines alone
+ * FLOW_BOTH - use both types simultaneously, if possible
+ *
+ * Note that few operating systems allow both types to be used together.
+ *
+ * mgetty won't (cannot!) notice if your settings don't work, but you'll
+ * see it yourself: you'll experience character losses, garbled faxes,
+ * low data throughput,..., if the flow control settings are wrong
+ *
+ * If in doubt what to use, try both and compare results.
+ * (if you use FAS or SAS with the recommended settings, FLOW_HARD is a
+ * "don't care" since the driver will use RTS/CTS anyway)
+ *
+ * If you use an atypical system, check whether tio_set_flow_control in
+ * tio.c does the right thing for your system.
+ */
+
+/* This is the flow control used for normal data (login) connections
+ * Set it to FLOW_HARD except in very special cases.
+ */
+#define DATA_FLOW FLOW_HARD
+
+/* This is the flow control used for incoming fax connections
+ * Wrong settings will result in missing lines or erroneous lines
+ * in most of the received faxes.
+ * Most faxmodems expect Xon/Xoff, few honour the RTS line.
+ */
+#define FAXREC_FLOW FLOW_HARD | FLOW_SOFT
+
+/* And this is for sending faxes
+ *
+ * Wrong settings here will typically result in that the first few
+ * centimeters of a transmitted fax look perfect, and then (the buffer
+ * has filled up), the rest is more or less illegible junk.
+ * For most faxes, this has to be FLOW_SOFT, though the Supra and ZyXEL
+ * modems will (sometimes) do hardware flow control, too. Try it.
+ *
+ * If you see a large number of [11] and [13] characters in the sendfax
+ * log file, your modem is propably doing software flow control - and
+ * you've definitely set FAXSEND_FLOW to FLOW_HARD...
+ *
+ * Some versions of SCO Unix have a "weird" serial driver that will only
+ * do half duplex hardware flow control. You will then run into the problem
+ * that fax sending will time out after the first page sent (no ACK received)
+ * and fail if FLOW_HARD is used. Use FLOW_SOFT instead.
+ */
+#define FAXSEND_FLOW FLOW_HARD | FLOW_SOFT
+
+/* if your faxmodem switches port bit rate just after sending the "+FCON"
+ * message to the host, define this to contain the baudrate used. (Not
+ * important if you have the portspeed set to this value anyway).
+ *
+ * Most Rockwell-based modems need FAX_RECV_SWITCHBD 19200.
+ * ZyXELs do *not* need this, except if explicitely told to do so.
+ *
+ * You can see if this is set wrong if mgetty gets the "+FCON" response,
+ * starts the fax receiver, and times out waiting for OK, receiving
+ * nothing or just junk.
+ */
+/* #define FAX_RECV_SWITCHBD 19200 */
+
+/* some genius at US Robotics obviously decided that the above method
+ * of switching baud rates is broken, and came up with something new
+ * --- broken as well (why bother switching rates at all?) --- this
+ * and other USR Courier Fax follies will be handled by enabling the
+ * following define (if you have an USR faxmodem that does *not* need
+ * this, please send me a mail!)
+ * It seems as if the newest V.34 modems do not need this anymore, please
+ * try it out...
+ */
+/* #define FAX_USRobotics */
+
+/* name of the logfile for outgoing faxes (e.g. /var/log/sendfax.log)
+ */
+#define FAX_LOG "/var/log/mgetty/fax/sendfax.log"
+
+/* local station ID (your fax number)
+ * 20 character string, most faxmodem allow all ascii characters 32..127,
+ * but some do only allow digits and blank
+ * AT+FLID=? should tell you what's allowed and what not.
+ */
+#define FAX_STATION_ID " "
+
+/* ------ sendfax-specific stuff follows here -------- */
+
+/* the baudrate used for *sending* faxes. ZyXELs can handle 38400,
+ * SUPRAs (and many other rockwell-based faxmodems) can not.
+ * I recommend 38400, since 19200 may be to slow for 14400 bps faxmodems!
+ */
+#define FAX_SEND_BAUD 38400
+
+/* switch baud rate after +FCLASS=2
+ *
+ * some weird modems require that you initialize the modem with one
+ * baud rate (e.g. 2400 or 9600 for cheap 2400+fax modems, or `smart'
+ * modems that insist on staying locked to 38400 (ELSA!)), but switch
+ * to another baud rate, typically 19200, immediately after receiving
+ * the "AT+FCLASS=2" command.
+ *
+ * If the following is defined, sendfax will switch to the speed given
+ * here after sending AT+FCLASS=2.
+ *
+ * Only try fiddling with this if sendfax times out during modem
+ * initialization, receiving junk instead of "OK" or "ERROR" (logfile!)
+ */
+/* #define FAX_SEND_SWITCHBD 19200 */
+
+/* this is the command to set the modem to use the desired flow control.
+ * For hardware handshake, this could be AT&H3 for the ZyXEL, &K3 for
+ * Rockwell-Based modems or AT\\Q3&S0 for Exar-Based Modems (i.e. some GVC's)
+ * If you don't want extra initalization, do not define it.
+ * Don't forget the "AT"!
+ */
+/* #define FAX_MODEM_HANDSHAKE "AT&H3" */
+
+/* This is the modem command used for dialing. The phone number will
+ * get appended right after the string. Normally, "ATD" or "ATDP" should
+ * suffice, but in some situations (company telephone systems) you might
+ * need something like "ATx0DT0wP" (switch of dial-tone recognition, tone-
+ * dial a "0", wait for dial-tone, pulse dial the rest)
+ */
+#define FAX_DIAL_PREFIX "ATD"
+
+/* When sending a fax, if the other side says "page bad, retrain
+ * requested", sendfax will retry the page. Specifiy here the maximum
+ * number of retries (I recommend 3) before hanging up.
+ *
+ * If you set it to "0", sendfax will *never* retransmit a page (only
+ * do this if you know that your modem returns +FPTS:2 even if the
+ * page arrived properly, but be warned - you wont' be able to react
+ * properly to transmission errors!)
+ *
+ * See also the description of the "max-tries" and "max-tries-continue"
+ * settings in the sendfax config file.
+ */
+#define FAX_SEND_MAX_TRIES 3
+
+/* the device(s) used for faxing
+ * multiple devices can be separated by ":", e.g. "tty1a:tty2a"
+ * (with or without leading /dev/)
+ * If you don't adapt this for your needs, sendfax won't run (you can
+ * set it from the sendfax.config file, though)!
+ */
+#define FAX_MODEM_TTYS "ttyS1"
+
+/* some modems, notably some GVC modems, all USR models, and the german
+ * telecom approved ZyXEL EG+ have the annoying behaviour of lowering
+ * and raising the DCD line during the pre- and post-page handshake
+ * (when sending faxes).
+ *
+ * If your modem does this, sendfax will terminate immediately after
+ * starting to send the first page, or between the first and second
+ * page, and the fax log file will show something like
+ * "read failed, I/O error".
+ *
+ * If you define this, sendfax will (try to) ignore that line
+ */
+
+/* #define FAX_SEND_IGNORE_CARRIER */
+
+/* Xon or not?
+ *
+ * the first issues of the class 2 drafts required that the program waits
+ * for an Xon character before sending the page data. Later versions
+ * removed that. Sendfax can do both, default is to wait for it.
+ *
+ * If you get an error message "... waiting for XON" when trying to
+ * send a fax, try this one. Some ELSA modems are know to need it.
+ */
+/* #define FAXSEND_NO_XON */
+
+
+/* define mailer that accepts destination on command line and mail text
+ * on stdin. For mailers with user friendly interfaces, (such as mail,
+ * mailx, elm), include an appropriate subject line in the command
+ * definition. If using a mail agent (such as sendmail), that reads
+ * mail headers, define NEED_MAIL_HEADERS.
+ */
+#ifdef SVR4
+# define MAILER "/usr/bin/mailx -s 'Incoming facsimile message'"
+#else
+# ifdef _AIX
+# define MAILER "/usr/sbin/sendmail"
+# define NEED_MAIL_HEADERS
+# endif
+# ifdef M_UNIX /* SCO */
+# define MAILER "/usr/lib/mail/execmail"
+# define NEED_MAIL_HEADERS
+# endif
+#endif
+
+#ifndef MAILER
+# define MAILER "/usr/sbin/sendmail"
+# define NEED_MAIL_HEADERS
+#endif
+
+/* where to send notify mail about incoming faxes to
+ * (remember to create an mail alias if no such user exists!)
+ */
+#define MAIL_TO "root"
+
+/* after a fax has arrived, mgetty can call a program for further
+ * processing of this fax.
+ *
+ * (e.g.: printing of the fax, sending as MIME mail, displaying in an X
+ * window (the latter one could be tricky) ...)
+ *
+ * It will be called as:
+ * <program> <result code> "<sender_id>" <#pgs> <pg1> <pg2>...
+ *
+ * Define the name of this program here
+ * If you don't want this type of service, do not define it at all
+ * Absolute path name has to be used here!
+ */
+#define FAX_NOTIFY_PROGRAM "/etc/mgetty/new_fax"
+
+/* default minimum space required on spooling partition for receiving a FAX
+ * (in KILObytes)
+ */
+#define MINFREESPACE 1024
+
diff --git a/recipes/mgetty/mgetty-1.1.30/voice-defs.h b/recipes/mgetty/mgetty-1.1.30/voice-defs.h
new file mode 100644
index 0000000000..6fa17c9c44
--- /dev/null
+++ b/recipes/mgetty/mgetty-1.1.30/voice-defs.h
@@ -0,0 +1,2 @@
+/* auto-generated from voice/include/default.h */
+#define VOICE_DIR "/var/spool/voice"
diff --git a/recipes/mgetty/mgetty_1.1.30.bb b/recipes/mgetty/mgetty_1.1.30.bb
new file mode 100644
index 0000000000..375ea90f0d
--- /dev/null
+++ b/recipes/mgetty/mgetty_1.1.30.bb
@@ -0,0 +1,81 @@
+SECTION = "base"
+DESCRIPTION = "The mgetty package contains an intelligent \
+getty for allowing logins over a serial line (such as \
+through a modem) and receiving incoming faxes."
+LICENSE = "GPL"
+PR ="r3"
+
+# The source can no longer be found at ${DEBIAN_MIRROR}/main/m/mgetty/mgetty_${PV}.orig.tar.gz
+# so the nslu2-linux project has mirrored it until someone updates this package to a newer version.
+SRC_URI = "http://nslu.sf.net/downloads/mgetty_1.1.30.orig.tar.gz \
+ file://debian.patch;patch=1 \
+ file://00-g3_Makefile;patch=1 \
+ file://01-adjust-path;patch=1 \
+ file://02-pending-fix-includes;patch=1 \
+ file://03-callback_Makefile;patch=1 \
+ file://04-new_fax.pbm;patch=1 \
+ file://06-pending-contrib_g3tolj.c;patch=1 \
+ file://07-pending-contrib_g3toxwd.c;patch=1 \
+ file://09-doc_Makefile;patch=1 \
+ file://10-doc_faxrunqd.8in;patch=1 \
+ file://12-fax_faxrunqd.in;patch=1 \
+ file://13-fax_faxspool.in;patch=1 \
+ file://14-frontends_X11_viewfax-2.5_Makefile;patch=1 \
+ file://23-samples_new_fax.mime4;patch=1 \
+ file://24-voice_include_paths.h;patch=1 \
+ file://26-voice_libpvf_usr.c;patch=1 \
+ file://36-voice_voice.conf-dist;patch=1 \
+ file://37-Makefile;patch=1 \
+ file://39-mgetty.cfg.in;patch=1 \
+ file://40-locks.c_bug153394;patch=1 \
+ file://41-ugly-redo-ring.c_bug128668;patch=1 \
+ file://42-voice_libvoice_detect.c;patch=1 \
+ file://43-moreinfo-cnd.c_bug112163;patch=1 \
+ file://44-pending-faxexpand.h_bug169455;patch=1 \
+ file://45-logfile.c;patch=1 \
+ file://47-doc_mgetty.texi-in;patch=1 \
+ file://50-pending-voice-zoom-2949l-c;patch=1 \
+ file://51-pending-faxq-time;patch=1 \
+ file://52-pending-metamail;patch=1 \
+ file://install.patch;patch=1 \
+ file://policy.h \
+ file://voice-defs.h"
+
+CFLAGS_prepend = "-DAUTO_PPP -DFIDO "
+
+# This is necessary because of the way the mgetty Makefile works,
+# it effectively recursively makes . - without passing MAKE the -e
+# flag. Oops.
+export MAKE = "make -e"
+
+do_compile () {
+ cp ${WORKDIR}/policy.h ${WORKDIR}/voice-defs.h .
+ ${BUILD_CC} ${BUILD_CFLAGS} ${BUILD_LDFLAGS} \
+ -I.. -DBINDIR=\"${bindir}\" -DSBINDIR=\"${sbindir}\" \
+ -DLIBDIR=\"${libdir}/mgetty-fax\" \
+ -DCONFDIR=\"${sysconfdir}/mgetty\" \
+ -DFAX_SPOOL=\"/var/spool/fax\" \
+ -DFAX_SPOOL_IN=\"/var/spool/fax/incoming\" \
+ -DFAX_SPOOL_OUT=\"/var/spool/fax/outgoing\" \
+ -DFAX_OUT_USER=\"uucp\" \
+ -DVARRUNDIR=\"/var/run\" \
+ -DAWK=\"awk\" \
+ -DPERL=\""${bindir}/perl -w"\" -DTKPERL=\"${bindir}/tkperl\" \
+ -DECHO=\""printf"\" \
+ -DSHELL=\"/bin/bash\" \
+ -o mksed mksed.c
+ ./mksed >sedscript
+ chmod u+x sedscript
+ oe_runmake
+ oe_runmake vgetty
+# cd doc; $(MAKE) manpages mgetty.info $(GCC)
+# cd contrib; $(MAKE) g3toxwd g3tolj
+# cd $(VFDIR); $(MAKE)
+}
+
+do_install () {
+ oe_runmake install DESTDIR="${D}" prefix="${D}${prefix}"
+}
+
+CONFFILES_${PN} = "${sysconfdir}/mgetty/mgetty.config \
+ ${sysconfdir}/mgetty/login.config ${sysconfdir}/mgetty/sendfax.config"