diff options
Diffstat (limited to 'mgetty/mgetty-1.1.30/debian.patch')
-rw-r--r-- | mgetty/mgetty-1.1.30/debian.patch | 923 |
1 files changed, 923 insertions, 0 deletions
diff --git a/mgetty/mgetty-1.1.30/debian.patch b/mgetty/mgetty-1.1.30/debian.patch index e69de29bb2..1dd9ff2b9d 100644 --- a/mgetty/mgetty-1.1.30/debian.patch +++ b/mgetty/mgetty-1.1.30/debian.patch @@ -0,0 +1,923 @@ +--- 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$ (c) 1993-2000 Gert Doering and Klaus Weidner ++@c $Id$ (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$ (c) Gert Doering ++# sccsid: $Id$ (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$ + # Revision 1.3 2004-11-09 00:36:47 handhelds.org!kergoth + # Turn off EOLN_NATIVE flag + # + # (Logical change 1.4593) + # ++# 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$'; ++$rcs_id='RCS: $Id$'; + # + # Change Log: ++# + # $Log$ + # Revision 1.3 2004-11-09 00:36:47 handhelds.org!kergoth + # Turn off EOLN_NATIVE flag + # + # (Logical change 1.4593) + # ++# 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$ Copyright (C) 1994 Gert Doering ++# SCCS: $Id$ 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$ (c) Gert Doering ++# SCCS-ID: $Id$ (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$ ++ * $Id$ + * + */ + +@@ -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$ ++ * $Id$ + * + */ + +@@ -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 */ |