home *** CD-ROM | disk | FTP | other *** search
Text File | 1989-03-05 | 62.5 KB | 1,933 lines |
- Subject: v18i002: Fido/Usenet gateway, Part01/05
- Newsgroups: comp.sources.unix
- Sender: sources
- Approved: rsalz@uunet.UU.NET
-
- Submitted-by: Heikki Suonsivu <hsu@santra.hut.fi>
- Posting-number: Volume 18, Issue 2
- Archive-name: fnet/part01
-
- This code implements a gateway between Usenet/UUCP/Mail and Fido.
- I haven't tried it. It's in ALPHA test.
-
- ---- Cut Here and unpack ----
- #!/bin/sh
- # shar: Shell Archiver (v1.22)
- #
- # This is part 1 of a multipart archive
- # do not concatenate these parts, unpack them in order with /bin/sh
- #
- # Run the following text with /bin/sh to create:
- # README
- # HISTORY
- # INSTALL
- # LICENCE
- # NOTES
- # PROBLEMS
- # TODO
- # Alias
- # fnews.cf
- # notes
- # de
- # d
- # fcaller
- # Makefile
- # getdate.y
- # rfmail.c
- # funcs.c
- # rfnews.c
- # rmail.c
- # fpack.c
- # funpack.c
- # fcall.c
- # fio.c
- # xtsend.c
- # xtrec.c
- # nodelist.c
- # gethostname.c
- # dateconv.c
- # address.c
- # crc.c
- # lintlib.c
- # sprintfs.c
- # strempty.c
- # listscan.c
- # ftime.c
- # fnet.h
- # config.h
- # fpack.h
- # rmail.h
- # fio.h
- # crc.h
- # hsu.h
- # shuffle.h
- # sysexits.h
- # nodelist.h
- # fnews.h
- #
- if test -r s2_seq_.tmp
- then echo "Must unpack archives in sequence!"
- next=`cat s2_seq_.tmp`; echo "Please unpack part $next next"
- exit 1; fi
- echo "x - extracting README (Text)"
- sed 's/^X//' << 'SHAR_EOF' > README &&
- XNOTE: I don't speak/write English very well so there are probably
- Xlots of strange sentences, feel free to mail me at mcvax!santra!hsu
- Xor mcvax!clinet!hsu to ask if you can't understand what I meant.
- X
- XThis program has been originally written by Teemu Torma. Teemu gave up
- Xdeveloping this for something like a year ago so I have continued his
- Xwork. Most of work probably is still from Teemu, I have done
- Xfidonet-pickup, nodelist indices (rewrote) some work on news-echo
- Xconversions, and most of debugging on receiver, news-echo-stuff and to
- Xget both directions to work with binkley. The only other mailer
- XI have tested this with is Dutchie.
- X
- XThis is still in alpha-state, I haven't done much testing on
- Xerror conditions, somewhere it may exit if something is wrong, somewhere
- Xit sends mail to root/uucp etc :)
- X
- XIf you think this is for you, check TODO for what you could
- Xdo for it, for partial (I'm lazy!) version-history you can check
- XHISTORY. For some info about what it does in certain conditions, you
- Xshould see NOTES. For installation, check INSTALL, but do it
- XAFTER reading all the other files.
- X
- XIf you find 'notes' in the archive, it's my comment file for my internal
- Xuse. Probably it doesn't help much unless you speak Finnish :-)
- X
- X
- XAbout testing
- X-------------
- X
- X*IMPORTANT*
- X
- XI have never tested this in a real news-environment, as getting news
- Xto local machine here in Finland is quite expensive and price is
- Xper-site, not per-feed. Plus the extra hard disk I would need to get
- Xnews fit on my machine. Currently I just have fidonet echomails.
- XBecause of this, be extremely careful when installing this thing, as
- Xsome mistake I or you made when installing could cause flood of
- Xunwanted stuff worldwide, and a big bill for you! I take no
- Xreponsibility whatever.
- X
- X
- SHAR_EOF
- chmod 0644 README || echo "restore of README fails"
- echo "x - extracting HISTORY (Text)"
- sed 's/^X//' << 'SHAR_EOF' > HISTORY &&
- X0.3.3
- X
- X- WAITCLEAR.
- X- PREWAIT, WAITCLEAR, MAX_SEND_RETRIES. Makes it more configureable, though
- Xconfiguration file would be far better for this kind of purpose.
- X
- X- Fixed bugs in sealink, which caused transfers on bad lines
- Xto stop with too many retries message.
- X
- X- Fixed bug in funpack which could cause terminating too early. It was
- Xa bug in get_string, which didn't read the terminating null char if
- Xstring was too long just equal to maximum length (someone had 35 char
- Xname :-), and it read one null more, thought it had no subject, sent
- Xsubject as message body to mail and got something else than message magic (2),
- Xand thought here is the end. Also now reports if it got something else
- Xthan 2, and stops then.
- X
- X0.3.2
- X
- X- Receiver is now Sealink capable (if that means just adding blocknum
- Xand its complement after naks and acks?). It seems to work? I did it
- Xbecause I had problems when communicating with Binkley, which says
- X'timeout' in long transfers, with no apparent reason, message appears
- Xwithout any delay which could be the reason for such message? Maybe
- Xthis works better? Sender is not capable of Sealink, though it
- Xwouldn't be difficult?
- X
- X- Some minor changes.
- X
- X0.3.1
- X
- X- Line wrap now according to FSC-0001.TXT.
- X
- X- rnews can be replaced by command in fnews.cf. This makes possible
- Xforwarding sysop-echos and such restricted echos to selected users or
- Xconverting echos to mailing lists.
- X
- X- 'of (node-specification)' will be now removed from name if it is
- Xthere and node-specification specified an existing node. This node-spec
- Xwill be saved and used if originator cannot be found for some reason
- Xfor reply-to path. Order to use is nodelist, orig in name, origin line
- Xin message, echo feed.
- X
- X- Zone support has gone giant step forward. For points I need more info,
- Xie where they are located in fidonet structures. There shouldn't be
- Xnet-node combinations anywhere, its all Node structures.
- X
- X- Packet names have been changed to a very strange format, and files
- Xare stored in in and out directories. Specially the name format may change
- Xin future again, now its really strange.
- X
- X- Special characters will be removed user names and scandinavian chars will
- Xbe converted to a and o. Neither conversion happens in usenet format
- Xmessages, but I'll work on it (news software may take care if it itself?).
- X
- X- REMOVE_ID_IN_PARENTHESIS and SEARCH_NAME_IN_NODELIST are no more
- Xoptions, they will be forced in this version.
- X
- X- Some bug fixes.
- X
- X- Maybe something else too but I dont remember what.
- X
- X0.2.3
- X
- X- Echomail origin, seenby and so on will be partially printed by
- Xprogram, makes maintaining easier as admin doesn't need to change
- Xnode numbers in many places, and version number will be up to date.
- X
- X- Some bugs fixed.
- SHAR_EOF
- chmod 0644 HISTORY || echo "restore of HISTORY fails"
- echo "x - extracting INSTALL (Text)"
- sed 's/^X//' << 'SHAR_EOF' > INSTALL &&
- XKind of an installation manual...
- X
- Xcopy/untar/unshar all the stuff in /usr/lib/fnet or any directory
- Xyou would like to use as lib dir.
- X
- XIf you haven't got any publicdomain dial package, I would recommend
- Xgetting one, I have never seen working version of SVR* dial package.
- XI tried using HDB, but its configuration happens same way the
- Xlogin handshake in Systems (expect-send-expect), which doesn't give
- Xmuch chance for regognizing different kind of responses etc, I would
- Xlike to continue redialing continuously if system is busy and so on.
- XI have been using dial package from Gene H. Olson, ihnp4!quest!gene,
- Xthanks for his nice work! I picked it up from local pay-unix-bbs
- X(City Lines Oy/mcvax!clinet, Teemu works there), so it may be
- Xa bit old version.
- X
- X
- Xconfig.h
- X--------
- X
- XEdit config.h. It should (but maybe not) include all necessary
- Xinformation.
- X
- XNote: Use full pathnames, with no trailing slash!
- X
- X#define USG
- Xleave it there, unless you are on BSD, in which case you have
- Xlots of work to do, as both Teemu and me have to work on SYSV.* (which
- XI don't like at all, an operating system which cannot change file size
- Xto nothing else than 0? and more...:-).
- X
- X#define MY_ZONE 2
- X#define MY_REGION 22
- X#define MY_NET 504
- X#define MY_NODE 7
- X#define MY_POINT 0
- XThis specifies your fidonet address.
- X
- XIf you don't know what should be here, you should contact with nearest
- XFidonet system and try to find out from sysop (fidonet)address of
- Xnearest fidonet network/region coordinator, who will assing you a node
- Xnumber, and ask him about how to arrange routing. He probably gives
- Xyou list of sysops to whom you should contact and ask if you can
- Xpoll echomails from, or tells you who to poll. It might be good
- Xidea if you get FSC*.TXT documents and bunch of fidonews which would
- Xgive you better idea what fidonet is. (Ok, I guess you know it already
- Xif you have come this far :-).
- X
- XAnd, the most important, you can contact IFNA, International FidoNet
- XAssociation, if you need more info. I recommend you to become a member
- Xif you have interest in this hobby.
- X
- X#define PREWAIT 2
- XThis is time to be waited between connect and sending TSYNCH, ie start
- Xof fidonet handshake. Originally it was 5 but some binkleyterm users
- Xsqueeze time too short and this causes problems, so I have it as 2.
- X
- X#define WAITCLEAR 4
- XAfter sending cr+sps to line, protocol waits for line to be cleared. This
- Xtime often depends on the modems, as some modems wait for error correction
- Xtimeout for long time.
- X
- X#define MAXBAUD 1200
- XThis is used in creating packets and in dial, where dial baud/speed is
- Xset to either it or to speed of the system we are dialing at.
- X
- X#define MINBAUD 300
- XIf speed of systems to be called is less than this, this will be
- Xused instead. I haven't used this, It's for people with constant-speed
- Xmodems.
- X
- X#define MAX_LINELEN 72
- XThis tells the program how wide it should format the messages. Fidonet
- Xhas hairy message format, which varies a lot, as people use lots of
- Xdifferent 'soft' carriage returns for message formatting. Its nice for
- Xsome environments (like commode-64 :-), though.
- X
- X#define RECEIVE_PATH "emma"
- XThis will be added in the beginning of news messages, to make news
- Xnot to echo it back. This is same system name you must add to
- XNEWSLIB/sys file, I have the following in /usr/lib/news/sys
- Xemma:fidonet,to.emma::/usr/lib/fnet/rfnews
- X
- X#define DOMAIN ".UUCP"
- X.UUCP if not there. I haven't checked this out, but I guess its ok.
- X
- X#define SPOOL "/usr/spool/fnet"
- XPrepacked messages, send- and receive-bundles go here.
- X
- X#define LIBDIR "/usr/lib/fnet"
- XThis is where you have all the source and binaries. This should be
- Xchanged so that sources would be somewhere else.
- X
- X#define RNEWS "/usr/bin/rnews"
- XThis is rnews from news package. If you can't find it, you either
- Xaren't running news, or you are running some other news-handling
- Xprogram. This program should be capable of getting a message in
- Xnormal mail format, there is Newsgroups: line and so on, which would
- Xtell it to which newsgroup it belongs, and then put the message where
- Xit should be put. It also forwards the message to other systems if
- Xthey are redistributed, in which case it should check out the path so
- Xit won't send it back to fidonet, as that would produce a loop, which
- Xwouln't be funny for the sysop running the fido system :-) Remeber
- Xthat messages sent back to fidonet aren't probably any more so much
- Xlike originals that confmail etc would regognize them as duplicates!
- X
- X#define LOGFILE "/usr/lib/fnet/log"
- XLog file in which all kinds of messages are appended. You should check
- Xit out sometimes and clean it up, it grows for ever.
- X
- X#define IDSEQUENCE "/usr/lib/fnet/idseq"
- XThis is a file which includes seqence number for creating unique message
- Xid.
- X
- X#define USERUID 50
- XI haven't checked out what this does?
- X
- X#define ALIAS "/usr/lib/fnet/Alias
- XSee comments in the file itself (should be in the distribution).
- X
- X#define RMAIL "/bin/rmail"
- XThis is probably ok for you system, it should be mail sender, just don't
- Xset it to mailer which can loop back to rfmail :-)
- XIf you dont want to be a gateway, just make it local-mailer.
- X
- X/* #define HAVE_SYSEXITS
- XDefine this if you have <sysexits.h>
- X
- X#define INT16 short
- XThis isn't used in all places where 16-bit int is wanted, so be
- Xcareful with this! Due to alignment problems I run into, I
- Xremoved structure writes and reads.
- X
- X#define SWAB_BYTES
- XDefine this on MC68* and so on which have most significant byte at
- Xlowest memory address (a mess dos has least significant byte there).
- XRemeber that if that one filler-long in header structure will be
- Xused some day, there is no swapper for that yet! (I hope I remember
- Xit too).
- X
- X#define RETURN_FAILED_MAIL
- XDefine this if you want rfmail to return underlivered mail. You do
- Xnot need this if you are running sendmail or similiar which returns
- Xundelivered mail.
- X
- XShortnames.
- XThis is for those idiot SV machines which don't accept more than 8
- Xchars per name. You also need gnu cpp if your cpp doesn't have more
- Xthan 8 chars either. I have got a miniframe, so I need this. Note,
- Xthere might be more of those problem-causers crept in during time I
- Xhave been developing this on 386 microport machine now.
- X
- X#define DIALTABLE "358-0-", "", "358-", "9", "", "990"
- X
- XThis is for dialing, I did just a quick hack but it probably
- Xworks on most cases, originally it wanted phone number as a parameter,
- Xnow it picks up it from nodelist, so I needed some kind of
- Xtable here.
- XTrick is to compare string to the beginning of the phone number,
- Xand if it matches, replace it with string following. Last one,
- Xin which empty string would be checked for, must be there.
- X
- X
- XMakefile
- X--------
- XENA should be something which allows you to change ownerships to something
- Xelse. I found it easier to make this work running under ena shell (I know,
- XI'm trying to commit a suicide :-),
- X
- XSHELL should be /bin/sh, ksh might work also if you have it. In fact, in
- Xthis Microport version of 386 I have there is a bug in /bin/sh which
- Xcauses problems when using it.
- X
- XCFLAGS
- X------
- X-DLOCK_LOCKF means that this machine has lock function called lockf,
- Xotherwise it calls it locking (like in miniframe CTIX). If you don't
- Xhave either, you are in trouble.
- X
- XOWNER
- XGROUP
- XUucp and daemon or uucp and mail are good candidates?
- X
- XCheck out chmod's in Makefile, I have been probably too open with them.
- X(Single user 386 with no external logins :-)
- X
- XI don't use SCCS either, but maybe I start using it, I just have had
- Xso many things to think about so reading the manual is still waiting.
- X
- X
- XFiles and rest of work
- X----------------------
- X
- Xchown all files for same groups you specified in Makefile, make the
- Xspool directory and other directories under it and chown them too.
- X
- XEdit the Areas, Aliases files following the instructions in them.
- XYou need to generate newsgroups for echomails using inews -C.
- XI have names groups as fidonet.something.
- X
- Xinstall it to crontab/etc so that it calls to fidonet host you
- Xshould be polling at. It should do
- X
- Xfpack -f your_boss_fidonet_address
- Xfcall -l /dev/ttysomething -m -d -f your_boss_fidonet_address
- Xfunpack
- X
- Xand put output to log (note: Log will be enormous if you don't
- Xcut debug values in distributed config.h, this alpha-version
- Xwill have debugs on ready for you to debug, as it probably won't
- Xrun as is anyway :-).
- X
- XGet new nodelist. Best place to hunt for it is nearest fidonet system.
- XConvert it to unix format before using it (just lfs, no cr+lf, no ^Z).
- X
- XModifying rn common.h (line 559 in version 4.3 I have) from
- X
- X# define NEWSHEADER "Newsgroups: %(%F=^$?%C:%F)\nSubject: %
- (%S=^$?%\"\n\nSubject: \":Re: %S)\nSummary: \nExpires: \n%(%R=^$?:References:
- %R\n)Sender: \nReply-To: %L@%H.UUCP (%N)\nFollowup-To: \nDistribution: %
- (%i=^$?%\"Distribution: \":%D)\nOrganization: %o\nKeywords: %[keywords]\n\n"
- X
- Xto
- X# define NEWSHEADER "Newsgroups: %(%F=^$?%C:%F)\nSubject: %
- (%S=^$?%\"\n\nSubject: \":Re: %S)\nSummary: \nExpires: \n%(%R=^$?:References:
- %R\n)Sender: \nReply-To: %L@%H.UUCP (%N)\nFollowup-To: \nDistribution: %
- (%i=^$?%\"Distribution: \":%D)\nOrganization: %o\nKeywords:
- %[keywords]\nComment-To: %t\n\n"
- X
- X(Just added Comment-To: %t\n in the end!)
- XIt adds name of recipent to news messsages, so it will be in fidonet
- Xecho replies, otherwise you need to type it hand or leave it out in which
- Xcase to-field be set to All.
- X
- XYou should arrange addresses which look like fidonet addresses,
- Xprobably everything of format huu@something.fidonet to be passed to
- Xrfmail. You could try rmail which comes with this software, though I
- Xhaven't tried it yet, better choice would be to use sendmail or
- Xanything which can forward certain kind of addresses to other mailer.
- X
- SHAR_EOF
- chmod 0644 INSTALL || echo "restore of INSTALL fails"
- echo "x - extracting LICENCE (Text)"
- sed 's/^X//' << 'SHAR_EOF' > LICENCE &&
- XIf there is a COPYRIGHT file also, check it out.
- X
- XI have used getdate.y and ftime.c from news package, thanks for Steven
- XM. Bellovin (unc!smb) and Chapel Hill. I hope they don't mind even
- Xthough I didn't ask for it!
- X
- X-------------------------------------------------------------------------
- XThis software should be used in friendly and lawful manner!
- X
- XIf using this in Finland, I personally recommend joining network 504.
- X
- XYou may not sell this software, you must give it free! Idea is to keep
- Xthis and all derived versions as free and source-distributed.
- X
- XWe take absolutely no responsibility on any trouble caused by using this,
- Xso you are on your own risk if you use this.
- X
- XComments, new features and bug fixes can be sent to hsu@clinet,
- Xhsu@santra, 2:504/1, 2:504/7, ...!mcvax!santra!hsu, HSU@FINGATE.BITNET
- XHeikki Suonsivu / Kuutamokatu 5 A 7 / 02210 Espoo / FINLAND
- X
- X
- SHAR_EOF
- chmod 0644 LICENCE || echo "restore of LICENCE fails"
- echo "x - extracting NOTES (Text)"
- sed 's/^X//' << 'SHAR_EOF' > NOTES &&
- XProblems with porting
- X---------------------
- X
- XWhy all people can't make standards? Even names can be messed up with
- Xall kinds of fields, someone puts linefeeds there, fills it up with blanks,
- Xadds 'of net/node' or '(USERID)' or something like that. Linefeeds in
- Xmessages have several versions, cr+lf, lf, cr+seadogsoftcr, seadogsoftcr,
- Xcr+lf+cr_with_8bit_on and all other combinations of those :-)
- X
- X
- XChanges in message format
- X-------------------------
- X
- XFrom 0.3.1 line wraps should be correctly handled.
- X
- XSubject will be set to 'No subject' if its empty, as news doesn't accept
- Xmissing subject, it ignores the message without one.
- X
- XFSC controls (^Axxxx) are converted to FSC-control:xxxx, which
- Xprobably works better in ascii-environments line news. It also
- Xprevents terminals going nuts if there are terminals which do
- Xsomething about ^A.
- X
- XNeither is converted back when sending the message out, thouch making
- XNo subject back to empty string maybe would be reasonable?
- X
- XNumber of headers will be added to messages.
- X
- X
- XProgram structure
- X-----------------
- X
- XLooks like spaghetti?
- SHAR_EOF
- chmod 0644 NOTES || echo "restore of NOTES fails"
- echo "x - extracting PROBLEMS (Text)"
- sed 's/^X//' << 'SHAR_EOF' > PROBLEMS &&
- XUsers in fidonet are allowed to enter private messages in echos,
- Xwhich causes trouble, how to handle those messages?
- X
- XPacket name can be longer than maximum filename length in system V,
- Xcould there be some really fancy idea of creating names or just make
- Xthem fido compatible, though that doesn't show zone and point in
- Xpacket name?
- SHAR_EOF
- chmod 0644 PROBLEMS || echo "restore of PROBLEMS fails"
- echo "x - extracting TODO (Text)"
- sed 's/^X//' << 'SHAR_EOF' > TODO &&
- XIt probably needs complete rewrite :-)
- X
- XProtocol module seems to need improvement, specially startup sometimes
- Xseems to be rough. I also tried to work with opus without any kind of
- Xfront end as v32 modem I had took too long time to time out and
- Xbinkley started to opus, but protocol startup failed, it got one
- Xpacket but then started complaining about funny packet numbers and I
- Xhavent had time to check it out.
- X
- XBatching news would improve performance a lot, though I guess rewriting
- Xfunpack would save even more.
- X
- XPoint and zone addressing should be done. It knows zones but looses
- Xthe info when packing. I'll rewrite packer to get some routing stuff
- Xin and I try to get that done same time. If zones are important you might
- Xget around limitations with sendmail or customizing smail or like.
- X
- XForwarding to other fidonet nodes should be implemented? It would be
- Xbetter to pick message as is, just change from and destination node
- Xaddresses and stick it to packets needed, which would create blazing
- Xfast redistribution. Going through news would be cpu hogger never seen
- Xas theres very little advantage.
- X
- XFfgets still does need more tuneup: Sometimes I received messages with
- Xsoft crs and no blank. So, if lines get combined, a blank should be
- Xinserted if soft cr is found. I think according to fsc-001 its really
- Xthe problem in someone elses software, as fsc-001 says that soft crs
- Xetc should be ignored, not replaced with (single) blank. but I think
- Xit would be better to accept that format also.
- X
- XMessage-id should really be something which could allow noticing
- Xduplicates. maybe date and node number could be used.
- X
- XDate length problem is still open, is it 20 chars like in fsc-001 or
- X19 like in all messages I receive (via confmail)?
- X
- XFcall xmodem receive is horrible cpu hog. I have to profile it and see
- Xwhats happening, probably readline?
- X
- XI/P packets could be in subdirectories or even node structure
- X
- Xcould be built for spool directory like
- X
- X...fnet/I/2/504/1/0 2:504/1.0
- X...fnet/I/2/504/26/0 2:504/26.0
- X...fnet/I/2/504/26/2 2:504/26.2
- X
- XMessage body should be checked out for control chars and ibmscii. I have
- Xa separate filter which takes care of that, I just have
- Xto install it, so wait for the next version.
- X
- XRECEIVE_PATH could be fidonet path, not symbolic as it is now, I have
- Xto check out if news, mail etc accept addresses which start with a number.
- X
- XIf fnews.cf has errors in newsgroup flags, it will coredump. One should
- Xcheck those strtoks there.
- X
- XWhen receiving new echo area, it should be automatically added
- Xto fnews.cf, and su newsuser /usr/lib/news/inews -C fidonet.echoareaname
- Xshould be called.
- X
- XHDB uucp seems to be able to kill fcall calling out? Lock file is uucp
- Xmail, is in /usr/spool/locks (svr3) and has process id in it with 10 chars
- Xand \n at end.
- X
- Xrfmail could accept any kind of fidonet address, like
- Xsysop-name.fidonet, system-name.fidonet and such things. Though, this
- Xwould require some artifical intelligence!
- X
- XProcessing private echo messages could be changed, now it tries to send
- Xthem to local user, failing in parsing address and sending the stuff to
- Xuucp or root. Use accept-private and trash-private to get around this.
- X
- XConfigure-script? have to check out it there is public domain one?
- XYes there is, it just came over usenet but I haven't tried it yet.
- X
- XThere should be a configuration file for everything, not it needs
- Xrecompilation for just about everything.
- X
- XNodelist and Index files are in memory, this will break up the roof in
- Xbrain-damaged architectures. There should be an option for making
- Xindices disk-resident if user wants it. Biggest problem is the name
- Xlist, it could be rewritten to use char * for names insted of
- Xconstant-length name. With current nodelist of about 4000 nodes, it
- Xwill be > 150 k. Disk-resident would be nice but I haven't got
- Xmergesort/disky qsort/disky bsearch around so I skipped it.
- X
- XFrom: field should really be identical to Reply-To: field and latter
- Xcould be removed. On the other hand, there would be info about from
- Xwhich echo feed it came from, but that should be separate field. I'll
- Xleave it as is now, comments?
- X
- XI will try to build routine capable of reading list of names with
- Xfidonet numbers to use for finding out mail address, so lists like
- XFFUA (Finnish Fido Users Association) membership list could be used.
- X
- XGenerally all fields could follow rfc822 spec from FSC documentation
- Xbut it has some problems with news: No spec for newsgroups statement
- Xand areas conversion. Most echomail names still are just names, like
- XC_ECHO and so on, if people had been using fidonet.something from the
- Xbeginning, things would be easier. I tried to push it through, so its
- Xused in Finland, and in some conferences in Europe, most notably in
- XEnet.sysop I started in Europe when I first time got my hands on
- Xechomail :-)
- X
- XIn-Reply-To: could be set to what is in FSC-Control: EID: xxxx , but I
- Xhave to find out more about EID: mechanism before I get into it.
- X
- XNow it uses Comment-To: to set up receiver field, node address is
- Xeither the one in nodelist or * origin. Origin probably bad guess but
- Xthat's all we have got! For this reason, storing information about
- Xreceved fidonet addresses would be good idea.
- X
- XSome people may get theirs reply-to field to point to node first found
- Xin nodelist, even if they want to get mail to some other node.
- X
- XThere would be another solution for reply-via mail. If it doesn't find
- Xcorrect node from origin line or nodelist, it should send the mail
- Xback to original echo as private message. clumsy, though.
- X
- XMan pages are completely missing, I haven't got experience on writing
- Xroff but maybe I have time to open the manual next week!
- X
- XFile requests and other fancy stuff. Never heard of :-)
- Xmodem7/telink is there, but haven't tried it yet.
- X
- XThere should be some kind of locking-mechanish using lock files, as
- Xnot all machines have lockf or locking. I try to hack on other things
- Xmyself as I have locking/lockf.
- X
- Xfgets in funpack.c looks for * Origin in both mails and echos, only
- Xechos are needed.
- X
- Xfcall should be modified to be capable of being slave like uucico. It
- Xcould try slave mode if no node is specified, but I need a getty which
- Xnotices TSYNC when someone calls in.
- X
- XAREA: fields and FSC-controls might be moved to message header, as
- Xthey could be removed when reading news easily with rn parameters, but
- Xconverting them back to their original places is a bit nasty, maybe I
- Xshould include some kind of line-number? On the other hand, is it
- Xnecessary to have them at their original places anyway, message format
- Xwill be changed a bit always?
- X
- Xfunpack: opens and closes config file for every message. Lots of other
- Xinefficiences all around. Parsing headers should really be rewritten,
- Xnow it makes number of passes through the message.
- X
- Xreaction to incorrect permissions etc can be fatal, rfmail just
- Xignores the message if log file could not be opened, though it says
- Xerror but cannot log it. It should at least send message to news admin
- Xand then maybe loop until it can read write log file... ok, getting too
- Xfancy.
- X
- XCurrently only one fidonet mail/echo feed is supported as receiver,
- Xbut several systems can be polled for mail. This could be reasonably
- Xeasy to correct, just make fpack ignore messages not destined to
- Xsystem specified, or even better, pack messages according to routing
- Xfiles, which could be simple.
- X
- XArcmail capability should be build, even one-directional
- Xwould be help, I just have to compile arc for this machine, running
- X(pk)arc under dosmerge isn't reliable with my beta-version of
- Xdosmerge, and people without 386 couldn't run it at all.
- X
- XNow there are routines in some programs which could be used (and be
- Xhelpful and cleaner) in other programs also, and sometimes code
- Xis really quick-hack-style.
- X
- XKeep in touch!
- X
- SHAR_EOF
- chmod 0644 TODO || echo "restore of TODO fails"
- echo "x - extracting Alias (Text)"
- sed 's/^X//' << 'SHAR_EOF' > Alias &&
- X#
- X# @(#)%M% %I% Teemu Torma %H%
- X#
- X# File for aliases.
- X#
- X# Each line contains alias-name, followed by optional net/node information.
- X# If alias is followed by net/node information, alias is used only if
- X# mail is going to that net/node. There may be more than one net/node
- X# spesification for one alias, in that case they are separated by commas.
- X#
- X# If net is missing from net/node spesification, e.g. net/node is only
- X# single number, node is to be considered on our net. If node is missing,
- X# e.g. it is empty string, all nodes in that net are valid.
- X#
- X# First alias found will be used, so if there are aliases with same name,
- X# that alias that doesn't have net/node limits or has wider limits that
- X# some other alias, should ba after later alias.
- X#
- X# NOTE: sysop-aliases are not necessary, because rfmail uses normally
- X# name found from nodelist if mail is to sysop and alias settings
- X# overrides that. Only on some cases sysop-alias might be useful, e.g.
- X# if there are more than one sysop, you may want to use just Sysop or
- X# one of the sysops.
- X#
- X# These aliases are used when receiving mail from fidonet, to
- X# handle incoming news with private flag set. If no alias exist,
- X# forget about message.
- X#
- X# Alias for sysop in node 1 (our net, 504)
- Xsysop,1 Heikki Suonsivu
- X# Mail to tot in net 504 will be send to Teemu Torma
- Xtot,504/ Teemu Torma
- Xhsu,504/ Heikki Suonsivu
- SHAR_EOF
- chmod 0644 Alias || echo "restore of Alias fails"
- echo "x - extracting fnews.cf (Text)"
- sed 's/^X//' << 'SHAR_EOF' > fnews.cf &&
- X#
- X# @(#)%M% %I% Teemu Torma %H%
- X#
- X# Configuration file for Usenet News <-> echomail programs.
- X# Each Section is separated by *-character at the first column.
- X# Lines beginning with #-character are considered as comments.
- X#
- X# Net/Node to send this article. Format is Net/Node, e.g 504/8.
- X#
- X504/26
- X*
- X#
- X# Newsgroup -> echomail area conversions. First is newsgroup followed
- X# by area name to send it. If article is send to multiple newsgroups,
- X# it is send to first echomail area found.
- X#
- Xfidonet.504.sysop 504.SYSOP
- Xfidonet.binkley BINKLEY
- Xfidonet.c_echo C_ECHO
- Xfidonet.eech EECH
- Xfidonet.enet.sysop ENET.SYSOP
- Xfidonet.fin.airways FIN.AIRWAYS
- Xfidonet.fin.bbshelp FIN.BBSHELP
- Xfidonet.fin.computer FIN.COMPUTER
- Xfidonet.fin.culture FIN.CULTURE
- Xfidonet.fin.food FIN.FOOD
- Xfidonet.fin.sysop FIN.SYSOP
- Xfidonet.fin.general FIN.GENERAL
- Xfidonet.fin.bbs FIN.BBS
- Xfidonet.fin.games FIN.GAMES
- Xfidonet.fin.ham FIN.HAM
- Xfidonet.fin.market FIN.MARKET
- Xfidonet.fin.scifi FIN.SCIFI
- Xfidonet.fin.unix FIN.UNIX
- Xfidonet.fin.koulut FIN.KOULUT
- Xfidonet.ham HAM
- Xfidonet.hst HST
- Xfidonet.ifna IFNA
- Xfidonet.internat INTERNAT
- Xfidonet.net_dev NET_DEV
- Xfidonet.newopus NEWOPUS
- Xfidonet.penpal PENPAL
- Xfidonet.sffan SFFAN
- Xfidonet.zone2 ZONE2
- X*
- X#
- X# Header field spesifications. Here are header-fields, one by line,
- X# and only those header-lines are put in the beginning of fidonet
- X# message.
- X#
- X# Newsgroups:
- XFrom:
- XDate:
- XSubject:
- XKeywords:
- XSummary:
- XLines:
- XComment-To:
- X# Organization:
- X*
- X#
- X# Information to put at the end of message, e.g. Origin-message and
- X# seen-by;s. Text is copied literally until *-character is found
- X# at the first column. You should have your echo feed there, even though
- X# news path mechanism will take care of its being posted just once.
- X# Fri Oct 28 02:42:08 1988 Version 0.2.3
- X# First line should be Origin text, next line seen-by row without my node
- X#
- X# --- rfmail 0.2.2
- X# * Origin: Missing Link (between usenet and fidonet) (2:504/7)
- X# SEEN-BY: 504/7 504/26
- X# PATH: 504/7
- XMissing Link (between usenet and fidonet)
- X504/7 26
- X*
- X#
- X# Echomail -> newsgroup conversions. First field is area name, second
- X# is newsgroup and third distribution for that newsgroup. If distribution
- X# begins with "/" (slash), it is to be taken as program name to pipe
- X# this article. Article will contain all From, To and subject-lines,
- X# also Newsgroups: line will be present.
- X# Other flags whould follow, they include:
- X# accept-private private messages will be saved as news-articles,
- X# otherwise they will go to mail or /dev/null,
- X# depending if receiver exists is this system or not.
- X# command rest of line is interpreted as command to be
- X# execute, message text in stdin.
- X#
- X504.SYSOP fidonet.504.sysop fidonet accept-private
- XBINKLEY fidonet.binkley fidonet trash-private
- XC_ECHO fidonet.c_echo fidonet trash-private
- XEECH fidonet.eech fidonet accept-private
- XENET.SYSOP fidonet.enet.sysop fidonet accept-private
- XFIN.AIRWAYS fidonet.fin.airways fidonet trash-private
- XFIN.BBSHELP fidonet.fin.bbshelp fidonet trash-private
- XFIN.COMPUTER fidonet.fin.computer fidonet trash-private
- XFIN.CULTURE fidonet.fin.culture fidonet trash-private
- XFIN.FOOD fidonet.fin.food fidonet trash-private
- XFIN.SYSOP fidonet.fin.sysop fidonet accept-private
- XFIN.GENERAL fidonet.fin.general fidonet trash-private
- XFIN.BBS fidonet.fin.bbs fidonet trash-private
- XFIN.GAMES fidonet.fin.games fidonet trash-private
- XFIN.HAM fidonet.fin.ham fidonet trash-private
- XFIN.MARKET fidonet.fin.market fidonet trash-private
- XFIN.SCIFI fidonet.fin.scifi fidonet trash-private
- XFIN.UNIX fidonet.fin.unix fidonet trash-private
- XFIN.KOULUT fidonet.fin.koulut fidonet trash-private
- XHAM fidonet.ham fidonet trash-private
- XHST fidonet.hst fidonet trash-private
- XIFNA fidonet.ifna fidonet accept-private
- XINTERNAT fidonet.internat fidonet trash-private
- XNET_DEV fidonet.net_dev fidonet accept-private
- XNEWOPUS fidonet.newopus fidonet trash-private
- XPENPAL fidonet.penpal fidonet trash-private
- XSFFAN fidonet.sffan fidonet trash-private
- XZONE2 fidonet.zone2 fidonet accept-private
- X*
- SHAR_EOF
- chmod 0644 fnews.cf || echo "restore of fnews.cf fails"
- echo "x - extracting notes (Text)"
- sed 's/^X//' << 'SHAR_EOF' > notes &&
- Xtsekkaa tuo sekvenssointi tarkkaan lapi, eli miten getsequence palauttaa
- Xja LAITA kaikkialle kutsut siihen, niita ei ole viela!!!
- X
- XNimen parsinta ei pelaa vielakaan, jos ei ole From rivia niin se
- Xluulee ekaa rivia nimeksi!
- X
- XNimesta pois (JJAZZ)
- X
- XMailin lahetys ei toimi, vaittaa ettei ole datea ja Reply-to pathia
- Xei ilmeisesti huomioida.
- X
- Xfunpack: Jos se toteaa etta kyseessa on newssi, se tunkee fileen
- Xsenderin sijaa temppifileeseen. Sitten kun se on siella, se etsii
- Xsielta ' * Origin: ... (z:n/n)' rivia, joista osoite etsitaan, ensisijaisesti
- XKummastakin huomioidaan Viimeinen rivi, eli koko viesti pitaa lukea
- Xlavitse. Homma tehdaan itse asiasssa fgetsissa, jos se huomee jomman
- Xkumman niin se asettaa Node originnode struktuuriin oikeat tiedot.
- XLopuksi looppi joka kirjoittaa viestin senderille ja muuttaa ohimennessaan
- XReply-To noden oikeaksi. Pirunmoinen homma ikaankuin turhan takia, mutta
- Xsellaista on elama.
- X
- XJuu, tuo yllaoleva on kokonaan pielessa, news-artikkeileissa ei saa
- Xparsia osoitetta vaan se from jne pitaa ottaa viestista itsestaan,
- Xdestination-osoite on vaan routtausta varten, keskustelijoitten
- Xnimilla ei valttamatta ole mitaan tekemista sen kanssa!!!
- X
- Xjos senderia ei loydy / ei aliasta euid, niin tutkippa real uid
- X
- X=-------
- X
- Xfunpackissa ja rfmailissa lgetdatet muutettava sellaisiksi
- Xetta ne kayttavat getdatea ja siten ehka tajuavat dateformaatit
- Xoikein, nyt syntyy hamminkia!
- X
- XMan page miniframesta.
- X
- XHamminkia mailin kanssa, miten vitussa ne newssit saadaan jakoon!! Tutki
- Xse vitun perkeleen sendbatch ja jos ei muu auta niin sitten ei voi
- Xmuuta kuin rakentaa se batch siihen rfnewssiin. readnewssin -c:ta
- Xei voi kayttaa kun se panee kaiken yhteen fileeseen. Milla vitulla se
- Xnormaalisti kaivaa esille sen mita pitaa lahettaa ja mita ei?????
- X
- X
- X
- SHAR_EOF
- chmod 0644 notes || echo "restore of notes fails"
- echo "x - extracting de (Text)"
- sed 's/^X//' << 'SHAR_EOF' > de &&
- X: use /bin/sh
- Xfunpack > loki 2>&1
- SHAR_EOF
- chmod 0755 de || echo "restore of de fails"
- echo "x - extracting d (Text)"
- sed 's/^X//' << 'SHAR_EOF' > d &&
- X: use /bin/sh
- XDIALDEBUG=a
- Xexport DIALDEBUG
- Xfpack -f 504/26 2>&1 | tee loki
- Xfcall -l /dev/tty00 -m -d -s 1200 -b 1200 -f 2:504/26 2>&1 | tee -a loki
- X
- SHAR_EOF
- chmod 0755 d || echo "restore of d fails"
- echo "x - extracting fcaller (Text)"
- sed 's/^X//' << 'SHAR_EOF' > fcaller &&
- X: use /bin/sh
- Xcd /u2/lib/fnet
- XDIALDEBUG=a
- Xexport DIALDEBUG
- Xfpack -f 504/26 > loki 2>&1
- Xfcall -l /dev/tty00 -m -s 1200 -b 1200 -d -f 504/26 >> loki 2>&1
- Xfunpack >> loki 2>&1
- X
- SHAR_EOF
- chmod 0751 fcaller || echo "restore of fcaller fails"
- echo "x - extracting Makefile (Text)"
- sed 's/^X//' << 'SHAR_EOF' > Makefile &&
- X#
- X# @(#)%M% %I% Teemu Torma %H%
- X#
- X# Makefile for FidoNet routines
- X#
- X# @(#)Copyright (C) Teemu Torma 1987
- X#
- X# Use tab stops at every 4 columns.
- X#
- XENA =
- XSHELL = /bin/sh
- XINCLUDE = /usr/include
- XCFLAGS = -DLOCK_LOCKF -g
- XLNFLAGS = -DLOCK_LOCKF
- X# removed -O
- XFUNPACK = funpack.o funcs.o nodelist.o gethostname.o address.o \
- X getdate.o ftime.o sprintfs.o listscan.o strempty.o
- XLFUNPACK= funpack.ln funcs.ln nodelist.ln gethostname.ln address.ln \
- X ftime.ln sprintfs.ln listscan.ln strempty.ln
- XRMAIL = rmail.o address.o funcs.o sprintfs.o
- XLRMAIL = rmail.ln address.ln funcs.ln sprintfs.ln
- XRFMAIL = rfmail.o funcs.o nodelist.o gethostname.o address.o getdate.o \
- X ftime.o sprintfs.o strempty.o
- XLRFMAIL = rfmail.ln funcs.ln nodelist.ln gethostname.ln address.ln \
- X ftime.ln sprintfs.ln strempty.ln
- XRFNEWS = rfnews.o funcs.o nodelist.o address.o sprintfs.o
- XLRFNEWS = rfnews.ln funcs.ln nodelist.ln address.ln sprintfs.ln
- XFPACK = fpack.o funcs.o nodelist.o address.o sprintfs.o
- XLFPACK = fpack.ln funcs.ln nodelist.ln address.ln sprintfs.ln
- XFCALL = fcall.o funcs.o fio.o xtsend.o xtrec.o crc.o nodelist.o \
- X address.o sprintfs.o
- XLFCALL = fcall.ln funcs.ln fio.ln xtsend.ln xtrec.ln crc.ln \
- X nodelist.ln address.ln sprintfs.ln
- XCFILES = rfmail.c funcs.c rfnews.c rmail.c fpack.c funpack.c fcall.c \
- X fio.c xtsend.c xtrec.c nodelist.c gethostname.c dateconv.c \
- X address.c crc.c lintlib.c sprintfs.c \
- X strempty.c listscan.c ftime.c
- XHFILES = fnet.h config.h fpack.h rmail.h fio.h crc.h hsu.h shuffle.h \
- X sysexits.h nodelist.h fnews.h
- XOTHERFILES = README HISTORY INSTALL LICENCE NOTES PROBLEMS \
- X TODO Alias fnews.cf notes de d fcaller Makefile \
- X getdate.y
- XLIBS = -lPW -ldial
- XALL = funpack fcall fpack rfmail rfnews rmail hsu.h
- XOWNER = uucp
- XGROUP = mail
- X
- X.c.ln: $<
- X lint -c $(LNFLAGS) $<
- X
- X.SUFFIXES: .ln
- X
- Xall: ${ALL}
- X touch all
- X
- Xgetdate.o: getdate.y
- X @echo "expect 8 shift/reduce conflicts"
- X yacc getdate.y
- X mv y.tab.c getdate.c
- X $(CC) $(CFLAGS) -c getdate.c
- X -rm -f getdate.c
- X
- Xfunpack: ${FUNPACK}
- X cc ${LDFLAGS} -o funpack ${FUNPACK} ${LIBS}
- X $(ENA) chown ${OWNER} funpack
- X $(ENA) chgrp ${GROUP} funpack
- X $(ENA) chmod 4711 funpack
- X
- Xrfmail: ${RFMAIL}
- X cc ${LDFLAGS} -o rfmail ${RFMAIL} ${LIBS}
- X $(ENA) chown ${OWNER} rfmail
- X $(ENA) chgrp ${GROUP} rfmail
- X $(ENA) chmod 4711 rfmail
- X
- Xrfnews: ${RFNEWS}
- X cc ${LDFLAGS} -o rfnews ${RFNEWS} ${LIBS}
- X $(ENA) chown ${OWNER} rfnews
- X $(ENA) chgrp ${GROUP} rfnews
- X $(ENA) chmod 4711 rfnews
- X
- Xfpack: ${FPACK}
- X cc ${LDFLAGS} -o fpack ${FPACK} ${LIBS}
- X $(ENA) chown ${OWNER} fpack
- X $(ENA) chgrp ${GROUP} fpack
- X $(ENA) chmod 4711 fpack
- X
- Xfcall: ${FCALL}
- X cc ${LDFLAGS} -o fcall ${FCALL} ${LIBS}
- X $(ENA) chown ${OWNER} fcall
- X $(ENA) chgrp ${GROUP} fcall
- X $(ENA) chmod 4711 fcall
- X
- Xrmail: ${RMAIL}
- X cc ${LDFLAGS} -o rmail ${RMAIL} ${LIBS}
- X
- Xinstall: all
- X @for i in ${ALL}; \
- X do \
- X echo "Moving $$i into ${LIBDIR} ... \c"; \
- X cp $$i ${LIBDIR}; \
- X $(ENA) chown ${OWNER} ${LIBDIR}/$$i; \
- X $(ENA) chgrp ${GROUP} ${LIBDIR}/$$i; \
- X $(ENA) chmod 4111 ${LIBDIR}/$$i; \
- X echo "done."; \
- X done
- X
- Xlintlib.ln: lintlib.c
- X lint -c -x lintlib.c
- X
- Xlfunpack: $(LFUNPACK) lintlib.ln
- X lint $(LFUNPACK) lintlib.ln
- X touch lfunpack
- X
- Xlrmail: $(LRMAIL) lintlib.ln
- X lint $(LRMAIL) lintlib.ln
- X touch lrmail
- X
- Xlrfmail: $(LRFMAIL) lintlib.ln
- X lint $(LRFMAIL) lintlib.ln
- X touch lrfmail
- X
- Xlrfnews: $(LRFNEWS) lintlib.ln
- X lint $(LRFNEWS) lintlib.ln
- X touch lrfnews
- X
- Xlfpack: $(LFPACK) lintlib.ln
- X lint $(LFPACK) lintlib.ln
- X touch lfpack
- X
- Xlfcall: $(LFCALL) lintlib.ln
- X lint $(LFCALL) lintlib.ln
- X touch lfcall
- X
- Xlint: lfunpack lrmail lrfmail lrfnews lfpack lfcall
- X
- Xtar:
- X tar cvf - $(OTHERFILES) $(CFILES) $(HFILES) | compress > fnet.tar.Z
- X
- Xinitsccs:
- X @if [ -d SCCS ]; \
- X then \
- X echo "Directory SCCS/ already exist."; \
- X exit 1; \
- X fi; \
- X echo "Creating directory SCCS/..."; \
- X mkdir SCCS; \
- X for file in ${SCCS}; \
- X do \
- X echo "Creating SCCS/s.$$file..."; \
- X admin -i$$file SCCS/s.$$file; \
- X if [ $$? -eq 0 ]; \
- X then \
- X echo "Getting file SCCS/s.$$file..."; \
- X rm -f $$file; \
- X get SCCS/s.$$file; \
- X fi; \
- X done
- X
- Xedit:
- X get -e $(OTHERFILES) $(CFILES) $(HFILES)
- X
- Xlook:
- X get $(OTHERFILES) $(CFILES) $(HFILES)
- X
- Xdelta:
- X delta $(OTHERFILES) $(CFILES) $(HFILES)
- X
- Xshar:
- X shar -v -c -l60 -ofnetdist. $(OTHERFILES) ${CFILES} ${HFILES}
- X
- Xclean:
- X -rm lfunpack lrmail lrfmail lrfnews lfpack lfcall
- X -rm funpack rfmail rfnews fpack fcall rmail
- X -rm *.ln *.o .make .funpack .lint log loki
- X -rm *.idx
- X
- Xdepend:
- X @echo '/^# DO NOT/+1,$$d\nw\nq' | ed - Makefile; \
- X echo '# DEPENDENCIES MUST END AT END OF FILE' >> Makefile; \
- X for i in ${CFILES} ; \
- X do \
- X if [ -r $$i ]; \
- X then \
- X echo "Finding dependences for $$i ... \c"; \
- X for j in `grep '^#[ ]*include[ ]*"[^"]*"' < $$i | \
- X sed 's/^#[ ]*include[ ]*"\([^"]*\)".*/\1/'`; \
- X do \
- X if [ -r $$j ]; \
- X then \
- X echo "`basename $$i .c`.o: $$j" >> Makefile; \
- X echo "`basename $$i .c`.ln: $$j" >> Makefile; \
- X else \
- X echo "`basename $$i .c`.o: ${HEADERS}/$$j" \
- X >> Makefile; \
- X echo "`basename $$i .c`.ln: ${HEADERS}/$$j" \
- X >> Makefile; \
- X fi; \
- X done; \
- X echo "done."; \
- X else \
- X echo "Can not open $$i." 1>&2; \
- X fi; \
- X done; \
- X echo '# DEPENDENCIES MUST END AT END OF FILE' >> Makefile; \
- X echo '# IF YOU PUT STUFF HERE IT WILL GO AWAY' >> Makefile; \
- X echo '# see make depend above' >> Makefile
- X
- X# DO NOT DELETE THIS LINE -- make depend uses it
- X# DEPENDENCIES MUST END AT END OF FILE
- Xrfmail.o: hsu.h
- Xrfmail.ln: hsu.h
- Xrfmail.o: config.h
- Xrfmail.ln: config.h
- Xrfmail.o: fnet.h
- Xrfmail.ln: fnet.h
- Xrfmail.o: nodelist.h
- Xrfmail.ln: nodelist.h
- Xfuncs.o: hsu.h
- Xfuncs.ln: hsu.h
- Xfuncs.o: config.h
- Xfuncs.ln: config.h
- Xfuncs.o: fnet.h
- Xfuncs.ln: fnet.h
- Xfuncs.o: sysexits.h
- Xfuncs.ln: sysexits.h
- Xfuncs.o: nodelist.h
- Xfuncs.ln: nodelist.h
- Xfuncs.o: shuffle.h
- Xfuncs.ln: shuffle.h
- Xrfnews.o: hsu.h
- Xrfnews.ln: hsu.h
- Xrfnews.o: config.h
- Xrfnews.ln: config.h
- Xrfnews.o: fnet.h
- Xrfnews.ln: fnet.h
- Xrfnews.o: fnews.h
- Xrfnews.ln: fnews.h
- Xrfnews.o: nodelist.h
- Xrfnews.ln: nodelist.h
- Xrmail.o: hsu.h
- Xrmail.ln: hsu.h
- Xrmail.o: rmail.h
- Xrmail.ln: rmail.h
- Xrmail.o: config.h
- Xrmail.ln: config.h
- Xrmail.o: sysexits.h
- Xrmail.ln: sysexits.h
- Xrmail.o: nodelist.h
- Xrmail.ln: nodelist.h
- Xrmail.o: fnet.h
- Xrmail.ln: fnet.h
- Xfpack.o: hsu.h
- Xfpack.ln: hsu.h
- Xfpack.o: config.h
- Xfpack.ln: config.h
- Xfpack.o: fnet.h
- Xfpack.ln: fnet.h
- Xfpack.o: fpack.h
- Xfpack.ln: fpack.h
- Xfpack.o: nodelist.h
- Xfpack.ln: nodelist.h
- Xfunpack.o: hsu.h
- Xfunpack.ln: hsu.h
- Xfunpack.o: config.h
- Xfunpack.ln: config.h
- Xfunpack.o: fnet.h
- Xfunpack.ln: fnet.h
- Xfunpack.o: fpack.h
- Xfunpack.ln: fpack.h
- Xfunpack.o: nodelist.h
- Xfunpack.ln: nodelist.h
- Xfunpack.o: sysexits.h
- Xfunpack.ln: sysexits.h
- Xfunpack.o: fnews.h
- Xfunpack.ln: fnews.h
- Xfcall.o: hsu.h
- Xfcall.ln: hsu.h
- Xfcall.o: config.h
- Xfcall.ln: config.h
- Xfcall.o: fnet.h
- Xfcall.ln: fnet.h
- Xfcall.o: fio.h
- Xfcall.ln: fio.h
- Xfcall.o: nodelist.h
- Xfcall.ln: nodelist.h
- Xfio.o: fnet.h
- Xfio.ln: fnet.h
- Xfio.o: fio.h
- Xfio.ln: fio.h
- Xxtsend.o: fnet.h
- Xxtsend.ln: fnet.h
- Xxtsend.o: fio.h
- Xxtsend.ln: fio.h
- Xxtsend.o: crc.h
- Xxtsend.ln: crc.h
- Xxtrec.o: hsu.h
- Xxtrec.ln: hsu.h
- Xxtrec.o: fnet.h
- Xxtrec.ln: fnet.h
- Xxtrec.o: fio.h
- Xxtrec.ln: fio.h
- Xxtrec.o: crc.h
- Xxtrec.ln: crc.h
- Xnodelist.o: hsu.h
- Xnodelist.ln: hsu.h
- Xnodelist.o: config.h
- Xnodelist.ln: config.h
- Xnodelist.o: fnet.h
- Xnodelist.ln: fnet.h
- Xnodelist.o: nodelist.h
- Xnodelist.ln: nodelist.h
- Xdateconv.o: fnet.h
- Xdateconv.ln: fnet.h
- Xaddress.o: hsu.h
- Xaddress.ln: hsu.h
- Xaddress.o: config.h
- Xaddress.ln: config.h
- Xaddress.o: fnet.h
- Xaddress.ln: fnet.h
- Xaddress.o: nodelist.h
- Xaddress.ln: nodelist.h
- Xaddress.o: shuffle.h
- Xaddress.ln: shuffle.h
- Xsprintfs.o: hsu.h
- Xsprintfs.ln: hsu.h
- Xlintlib.o: hsu.h
- Xlintlib.ln: hsu.h
- Xlintlib.o: config.h
- Xlintlib.ln: config.h
- Xgetdate.y.o: config.h
- Xgetdate.y.ln: config.h
- Xsprintfs.o: hsu.h
- Xsprintfs.ln: hsu.h
- Xstrempty.o: hsu.h
- Xstrempty.ln: hsu.h
- X# DEPENDENCIES MUST END AT END OF FILE
- X# IF YOU PUT STUFF HERE IT WILL GO AWAY
- X# see make depend above
- SHAR_EOF
- chmod 0644 Makefile || echo "restore of Makefile fails"
- echo "x - extracting getdate.y (Text)"
- sed 's/^X//' << 'SHAR_EOF' > getdate.y &&
- X%token ID MONTH DAY MERIDIAN NUMBER UNIT MUNIT SUNIT ZONE DAYZONE AGO
- X%{
- X /* Originally from: Steven M. Bellovin (unc!smb) */
- X /* Dept. of Computer Science */
- X /* University of North Carolina at Chapel Hill */
- X /* @(#)getdate.y 2.17 11/30/87 */
- X
- X#include <sys/types.h>
- X#include "config.h"
- X#ifdef NEEDED
- X/* This is now in config.h */
- X#ifdef USG
- Xstruct timeb
- X{
- X time_t time;
- X unsigned short millitm;
- X short timezone;
- X short dstflag;
- X};
- X#else
- X#include <sys/timeb.h>
- X#endif
- X#include <ctype.h>
- X#endif
- X
- X#if defined(BSD4_2) || defined (BSD4_1C)
- X#include <sys/time.h>
- X#else /* sane */
- X#include <time.h>
- X#endif /* sane */
- X
- X#define NULL 0
- X#define daysec (24L*60L*60L)
- X static int timeflag, zoneflag, dateflag, dayflag, relflag;
- X static time_t relsec, relmonth;
- X static int hh, mm, ss, merid, daylight;
- X static int dayord, dayreq;
- X static int month, day, year;
- X static int ourzone;
- X#define AM 1
- X#define PM 2
- X#define DAYLIGHT 1
- X#define STANDARD 2
- X#define MAYBE 3
- X%}
- X
- X%%
- Xtimedate: /* empty */
- X | timedate item;
- X
- Xitem: tspec =
- X {timeflag++;}
- X | zone =
- X {zoneflag++;}
- X | dtspec =
- X {dateflag++;}
- X | dyspec =
- X {dayflag++;}
- X | rspec =
- X {relflag++;}
- X | nspec;
- X
- Xnspec: NUMBER =
- X {if (timeflag && dateflag && !relflag) year = $1;
- X else {timeflag++;hh = $1/100;mm = $1%100;ss = 0;merid = 24;}};
- X
- Xtspec: NUMBER MERIDIAN =
- X {hh = $1; mm = 0; ss = 0; merid = $2;}
- X | NUMBER ':' NUMBER =
- X {hh = $1; mm = $3; merid = 24;}
- X | NUMBER ':' NUMBER MERIDIAN =
- X {hh = $1; mm = $3; merid = $4;}
- X | NUMBER ':' NUMBER NUMBER =
- X {hh = $1; mm = $3; merid = 24;
- X daylight = STANDARD; ourzone = -($4%100 + 60*($4/100));}
- X | NUMBER ':' NUMBER ':' NUMBER =
- X {hh = $1; mm = $3; ss = $5; merid = 24;}
- X | NUMBER ':' NUMBER ':' NUMBER MERIDIAN =
- X {hh = $1; mm = $3; ss = $5; merid = $6;}
- X | NUMBER ':' NUMBER ':' NUMBER NUMBER =
- X {hh = $1; mm = $3; ss = $5; merid = 24;
- X daylight = STANDARD; ourzone = -($6%100 + 60*($6/100));};
- X
- Xzone: ZONE =
- X {ourzone = $1; daylight = STANDARD;}
- X | DAYZONE =
- X {ourzone = $1; daylight = DAYLIGHT;};
- X
- Xdyspec: DAY =
- X {dayord = 1; dayreq = $1;}
- X | DAY ',' =
- X {dayord = 1; dayreq = $1;}
- X | NUMBER DAY =
- X {dayord = $1; dayreq = $2;};
- X
- Xdtspec: NUMBER '/' NUMBER =
- X {month = $1; day = $3;}
- X | NUMBER '/' NUMBER '/' NUMBER =
- X {month = $1; day = $3; year = $5;}
- X | MONTH NUMBER =
- X {month = $1; day = $2;}
- X | MONTH NUMBER ',' NUMBER =
- X {month = $1; day = $2; year = $4;}
- X | NUMBER MONTH =
- X {month = $2; day = $1;}
- X | NUMBER MONTH NUMBER =
- X {month = $2; day = $1; year = $3;};
- X
- X
- Xrspec: NUMBER UNIT =
- X {relsec += 60L * $1 * $2;}
- X | NUMBER MUNIT =
- X {relmonth += $1 * $2;}
- X | NUMBER SUNIT =
- X {relsec += $1;}
- X | UNIT =
- X {relsec += 60L * $1;}
- X | MUNIT =
- X {relmonth += $1;}
- X | SUNIT =
- X {relsec++;}
- X | rspec AGO =
- X {relsec = -relsec; relmonth = -relmonth;};
- X%%
- X
- Xstatic int mdays[12] =
- X {31, 0, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
- X#define epoch 1970
- X
- Xextern struct tm *localtime();
- X
- Xtime_t
- Xdateconv(mm, dd, yy, h, m, s, mer, zone, dayflag)
- Xint mm, dd, yy, h, m, s, mer, zone, dayflag;
- X{
- X time_t tod, jdate;
- X register int i;
- X time_t timeconv();
- X
- X if (yy < 0) yy = -yy;
- X if (yy < 100) yy += 1900;
- X mdays[1] = 28 + (yy%4 == 0 && (yy%100 != 0 || yy%400 == 0));
- X if (yy < epoch || yy > 1999 || mm < 1 || mm > 12 ||
- X dd < 1 || dd > mdays[--mm]) return (-1);
- X jdate = dd-1;
- X for (i=0; i<mm; i++) jdate += mdays[i];
- X for (i = epoch; i < yy; i++) jdate += 365 + (i%4 == 0);
- X jdate *= daysec;
- X jdate += zone * 60L;
- X if ((tod = timeconv(h, m, s, mer)) < 0) return (-1);
- X jdate += tod;
- X if (dayflag==DAYLIGHT || (dayflag==MAYBE&&localtime(&jdate)->tm_isdst))
- X jdate += -1*60*60;
- X return (jdate);
- X}
- X
- Xtime_t
- Xdayconv(ord, day, now)
- Xint ord, day; time_t now;
- X{
- X register struct tm *loctime;
- X time_t tod;
- X time_t daylcorr();
- X
- X tod = now;
- X loctime = localtime(&tod);
- X tod += daysec * ((day - loctime->tm_wday + 7) % 7);
- X tod += 7*daysec*(ord<=0?ord:ord-1);
- X return daylcorr(tod, now);
- X}
- X
- Xtime_t
- Xtimeconv(hh, mm, ss, mer)
- Xregister int hh, mm, ss, mer;
- X{
- X if (mm < 0 || mm > 59 || ss < 0 || ss > 59) return (-1);
- X switch (mer) {
- X case AM: if (hh < 1 || hh > 12) return(-1);
- X return (60L * ((hh%12)*60L + mm)+ss);
- X case PM: if (hh < 1 || hh > 12) return(-1);
- X return (60L * ((hh%12 +12)*60L + mm)+ss);
- X case 24: if (hh < 0 || hh > 23) return (-1);
- X return (60L * (hh*60L + mm)+ss);
- X default: return (-1);
- X }
- X}
- Xtime_t
- Xmonthadd(sdate, relmonth)
- Xtime_t sdate, relmonth;
- X{
- X struct tm *ltime;
- X time_t dateconv();
- X time_t daylcorr();
- X int mm, yy;
- X
- X if (relmonth == 0) return 0;
- X ltime = localtime(&sdate);
- X mm = 12*ltime->tm_year + ltime->tm_mon + relmonth;
- X yy = mm/12;
- X mm = mm%12 + 1;
- X return daylcorr(dateconv(mm, ltime->tm_mday, yy, ltime->tm_hour,
- X ltime->tm_min, ltime->tm_sec, 24, ourzone, MAYBE), sdate);
- X}
- X
- Xtime_t
- Xdaylcorr(future, now)
- Xtime_t future, now;
- X{
- X int fdayl, nowdayl;
- X
- X nowdayl = (localtime(&now)->tm_hour+1) % 24;
- X fdayl = (localtime(&future)->tm_hour+1) % 24;
- X return (future-now) + 60L*60L*(nowdayl-fdayl);
- X}
- X
- Xstatic char *lptr;
- X
- Xyylex()
- X{
- X extern int yylval;
- X int sign;
- X register char c;
- X register char *p;
- X char idbuf[20];
- X int pcnt;
- X
- X for (;;) {
- X while (isspace(*lptr))
- X lptr++;
- X
- X if (isdigit(c = *lptr) || c == '-' || c == '+') {
- X if (c== '-' || c == '+') {
- X if (c=='-') sign = -1;
- X else sign = 1;
- X if (!isdigit(*++lptr)) {
- X /* yylval = sign; return (NUMBER); */
- X return yylex(); /* skip the '-' sign */
- X }
- X } else sign = 1;
- X yylval = 0;
- X while (isdigit(c = *lptr++))
- X yylval = 10*yylval + c - '0';
- X yylval *= sign;
- X lptr--;
- X return (NUMBER);
- X
- X } else if (isalpha(c)) {
- X p = idbuf;
- X while (isalpha(c = *lptr++) || c=='.')
- X if (p < &idbuf[sizeof(idbuf)-1]) *p++ = c;
- X *p = '\0';
- X lptr--;
- X return (lookup(idbuf));
- X }
- X
- X else if (c == '(') {
- X pcnt = 0;
- X do {
- X c = *lptr++;
- X if (c == '\0') return(c);
- X else if (c == '(') pcnt++;
- X else if (c == ')') pcnt--;
- X } while (pcnt > 0);
- X }
- X
- X else return (*lptr++);
- X }
- X}
- X
- Xstruct table {
- X char *name;
- X int type, value;
- X};
- X
- Xstruct table mdtab[] = {
- X {"january", MONTH, 1},
- X {"february", MONTH, 2},
- X {"march", MONTH, 3},
- X {"april", MONTH, 4},
- X {"may", MONTH, 5},
- X {"june", MONTH, 6},
- X {"july", MONTH, 7},
- X {"august", MONTH, 8},
- X {"september", MONTH, 9},
- X {"sept", MONTH, 9},
- X {"october", MONTH, 10},
- X {"november", MONTH, 11},
- X {"december", MONTH, 12},
- X
- X {"sunday", DAY, 0},
- X {"monday", DAY, 1},
- X {"tuesday", DAY, 2},
- X {"tues", DAY, 2},
- X {"wednesday", DAY, 3},
- X {"wednes", DAY, 3},
- X {"thursday", DAY, 4},
- X {"thur", DAY, 4},
- X {"thurs", DAY, 4},
- X {"friday", DAY, 5},
- X {"saturday", DAY, 6},
- X {0, 0, 0}};
- X
- X#define HRS *60
- X#define HALFHR 30
- Xstruct table mztab[] = {
- X {"a.m.", MERIDIAN, AM},
- X {"am", MERIDIAN, AM},
- X {"p.m.", MERIDIAN, PM},
- X {"pm", MERIDIAN, PM},
- X {"nst", ZONE, 3 HRS + HALFHR}, /* Newfoundland */
- X {"n.s.t.", ZONE, 3 HRS + HALFHR},
- X {"ast", ZONE, 4 HRS}, /* Atlantic */
- X {"a.s.t.", ZONE, 4 HRS},
- X {"adt", DAYZONE, 4 HRS},
- X {"a.d.t.", DAYZONE, 4 HRS},
- X {"est", ZONE, 5 HRS}, /* Eastern */
- X {"e.s.t.", ZONE, 5 HRS},
- X {"edt", DAYZONE, 5 HRS},
- X {"e.d.t.", DAYZONE, 5 HRS},
- X {"cst", ZONE, 6 HRS}, /* Central */
- X {"c.s.t.", ZONE, 6 HRS},
- X {"cdt", DAYZONE, 6 HRS},
- X {"c.d.t.", DAYZONE, 6 HRS},
- X {"mst", ZONE, 7 HRS}, /* Mountain */
- X {"m.s.t.", ZONE, 7 HRS},
- X {"mdt", DAYZONE, 7 HRS},
- X {"m.d.t.", DAYZONE, 7 HRS},
- X {"pst", ZONE, 8 HRS}, /* Pacific */
- X {"p.s.t.", ZONE, 8 HRS},
- X {"pdt", DAYZONE, 8 HRS},
- X {"p.d.t.", DAYZONE, 8 HRS},
- X {"yst", ZONE, 9 HRS}, /* Yukon */
- X {"y.s.t.", ZONE, 9 HRS},
- X {"ydt", DAYZONE, 9 HRS},
- X {"y.d.t.", DAYZONE, 9 HRS},
- X {"hst", ZONE, 10 HRS}, /* Hawaii */
- X {"h.s.t.", ZONE, 10 HRS},
- X {"hdt", DAYZONE, 10 HRS},
- X {"h.d.t.", DAYZONE, 10 HRS},
- X
- X {"gmt", ZONE, 0 HRS},
- X {"g.m.t.", ZONE, 0 HRS},
- X {"bst", DAYZONE, 0 HRS}, /* British Summer Time */
- X {"b.s.t.", DAYZONE, 0 HRS},
- X {"eet", ZONE, 0 HRS}, /* European Eastern Time */
- X {"e.e.t.", ZONE, 0 HRS},
- X {"eest", DAYZONE, 0 HRS}, /* European Eastern Summer Time */
- X {"e.e.s.t.", DAYZONE, 0 HRS},
- X {"met", ZONE, -1 HRS}, /* Middle European Time */
- X {"m.e.t.", ZONE, -1 HRS},
- X {"mest", DAYZONE, -1 HRS}, /* Middle European Summer Time */
- X {"m.e.s.t.", DAYZONE, -1 HRS},
- X {"wet", ZONE, -2 HRS }, /* Western European Time */
- X {"w.e.t.", ZONE, -2 HRS },
- X {"west", DAYZONE, -2 HRS}, /* Western European Summer Time */
- X {"w.e.s.t.", DAYZONE, -2 HRS},
- X
- X {"jst", ZONE, -9 HRS}, /* Japan Standard Time */
- X {"j.s.t.", ZONE, -9 HRS}, /* Japan Standard Time */
- X /* No daylight savings time */
- X
- X {"aest", ZONE, -10 HRS}, /* Australian Eastern Time */
- X {"a.e.s.t.", ZONE, -10 HRS},
- X {"aesst", DAYZONE, -10 HRS}, /* Australian Eastern Summer Time */
- X {"a.e.s.s.t.", DAYZONE, -10 HRS},
- X {"acst", ZONE, -(9 HRS + HALFHR)}, /* Australian Central Time */
- X {"a.c.s.t.", ZONE, -(9 HRS + HALFHR)},
- X {"acsst", DAYZONE, -(9 HRS + HALFHR)}, /* Australian Central Summer */
- X {"a.c.s.s.t.", DAYZONE, -(9 HRS + HALFHR)},
- X {"awst", ZONE, -8 HRS}, /* Australian Western Time */
- X {"a.w.s.t.", ZONE, -8 HRS}, /* (no daylight time there, I'm told */
- X {0, 0, 0}};
- X
- Xstruct table unittb[] = {
- X {"year", MUNIT, 12},
- X {"month", MUNIT, 1},
- X {"fortnight", UNIT, 14*24*60},
- X {"week", UNIT, 7*24*60},
- X {"day", UNIT, 1*24*60},
- X {"hour", UNIT, 60},
- X {"minute", UNIT, 1},
- X {"min", UNIT, 1},
- X {"second", SUNIT, 1},
- X {"sec", SUNIT, 1},
- X {0, 0, 0}};
- X
- Xstruct table othertb[] = {
- X {"tomorrow", UNIT, 1*24*60},
- X {"yesterday", UNIT, -1*24*60},
- X {"today", UNIT, 0},
- X {"now", UNIT, 0},
- X {"last", NUMBER, -1},
- X {"this", UNIT, 0},
- X {"next", NUMBER, 2},
- X {"first", NUMBER, 1},
- X /* {"second", NUMBER, 2}, */
- X {"third", NUMBER, 3},
- X {"fourth", NUMBER, 4},
- X {"fifth", NUMBER, 5},
- X {"sixth", NUMBER, 6},
- X {"seventh", NUMBER, 7},
- X {"eigth", NUMBER, 8},
- X {"ninth", NUMBER, 9},
- X {"tenth", NUMBER, 10},
- X {"eleventh", NUMBER, 11},
- X {"twelfth", NUMBER, 12},
- X {"ago", AGO, 1},
- X {0, 0, 0}};
- X
- Xstruct table milzone[] = {
- X {"a", ZONE, 1 HRS},
- X {"b", ZONE, 2 HRS},
- X {"c", ZONE, 3 HRS},
- X {"d", ZONE, 4 HRS},
- X {"e", ZONE, 5 HRS},
- X {"f", ZONE, 6 HRS},
- X {"g", ZONE, 7 HRS},
- X {"h", ZONE, 8 HRS},
- X {"i", ZONE, 9 HRS},
- X {"k", ZONE, 10 HRS},
- X {"l", ZONE, 11 HRS},
- X {"m", ZONE, 12 HRS},
- X {"n", ZONE, -1 HRS},
- X {"o", ZONE, -2 HRS},
- X {"p", ZONE, -3 HRS},
- X {"q", ZONE, -4 HRS},
- X {"r", ZONE, -5 HRS},
- X {"s", ZONE, -6 HRS},
- X {"t", ZONE, -7 HRS},
- X {"u", ZONE, -8 HRS},
- X {"v", ZONE, -9 HRS},
- X {"w", ZONE, -10 HRS},
- X {"x", ZONE, -11 HRS},
- X {"y", ZONE, -12 HRS},
- X {"z", ZONE, 0 HRS},
- X {0, 0, 0}};
- X
- Xlookup(id)
- Xchar *id;
- X{
- X#define gotit (yylval=i->value, i->type)
- X
- X char idvar[128];
- X register char *j, *k;
- X register struct table *i;
- X int abbrev;
- X
- X (void) strcpy(idvar, id);
- X j = idvar;
- X k = id - 1;
- X while (*++k)
- X *j++ = isupper(*k) ? tolower(*k) : *k;
- X *j = '\0';
- X
- X if (strlen(idvar) == 3)
- X abbrev = 1;
- X else
- X if (strlen(idvar) == 4 && idvar[3] == '.') {
- X abbrev = 1;
- X idvar[3] = '\0';
- X }
- X else
- X abbrev = 0;
- X
- X for (i = mdtab; i->name; i++) {
- X k = idvar;
- X for (j = i->name; *j++ == *k++;) {
- X if (abbrev && j == i->name+3)
- X return gotit;
- X if (j[-1] == 0)
- X return gotit;
- X }
- X }
- X
- X for (i = mztab; i->name; i++)
- X if (strcmp(i->name, idvar) == 0)
- X return gotit;
- X
- X for (i=mztab; i->name; i++)
- X if (strcmp(i->name, idvar) == 0)
- X return gotit;
- X
- X for (i=unittb; i->name; i++)
- X if (strcmp(i->name, idvar) == 0)
- X return gotit;
- X
- X if (idvar[strlen(idvar)-1] == 's')
- X idvar[strlen(idvar)-1] = '\0';
- X
- X for (i=unittb; i->name; i++)
- X if (strcmp(i->name, idvar) == 0)
- X return gotit;
- X
- X for (i = othertb; i->name; i++)
- X if (strcmp(i->name, idvar) == 0)
- X return gotit;
- X
- X if (strlen(idvar) == 1 && isalpha(*idvar)) {
- X for (i = milzone; i->name; i++)
- X if (strcmp(i->name, idvar) == 0)
- X return gotit;
- X }
- X
- X return ID;
- X}
- X
- Xtime_t
- Xgetdate(p, now)
- Xchar *p;
- Xstruct timeb *now;
- X{
- X#define mcheck(f) if (f>1) err++
- X time_t monthadd();
- X int err;
- X struct tm *lt;
- X struct timeb ftz;
- X
- X time_t sdate, tod;
- X
- X lptr = p;
- X if (now == ((struct timeb *) NULL)) {
- X now = &ftz;
- X ftime(&ftz);
- X }
- X lt = localtime(&now->time);
- X year = lt->tm_year;
- X month = lt->tm_mon+1;
- X day = lt->tm_mday;
- X relsec = 0; relmonth = 0;
- X timeflag=zoneflag=dateflag=dayflag=relflag=0;
- X ourzone = now->timezone;
- X daylight = MAYBE;
- X hh = mm = ss = 0;
- X merid = 24;
- X
- X if (err = yyparse()) return (-1);
- X
- X mcheck(timeflag);
- X mcheck(zoneflag);
- X mcheck(dateflag);
- X mcheck(dayflag);
- X
- X if (err) return (-1);
- X if (dateflag || timeflag || dayflag) {
- X sdate = dateconv(month,day,year,hh,mm,ss,merid,ourzone,daylight);
- X if (sdate < 0) return -1;
- X }
- X else {
- X sdate = now->time;
- X if (relflag == 0)
- X sdate -= (lt->tm_sec + lt->tm_min*60 +
- X lt->tm_hour*(60L*60L));
- X }
- X
- X sdate += relsec;
- X sdate += monthadd(sdate, relmonth);
- X
- X if (dayflag && !dateflag) {
- X tod = dayconv(dayord, dayreq, sdate);
- X sdate += tod;
- X }
- X
- X /*
- X ** Have to do *something* with a legitimate -1 so it's distinguishable
- X ** from the error return value. (Alternately could set errno on error.)
- X */
- X return (sdate == -1) ? 0 : sdate;
- X}
- X
- Xyyerror(s) char *s;
- X{}
- SHAR_EOF
- chmod 0644 getdate.y || echo "restore of getdate.y fails"
- echo "x - extracting rfmail.c (Text)"
- sed 's/^X//' << 'SHAR_EOF' > rfmail.c &&
- X#ifndef lint
- Xstatic char *sccsid = "@(#)%M% %I% Teemu Torma %H%";
- X#endif
- X
- X/* Read mail from standard input and put it into spool-directory.
- X Usually this program is executed by our rmail, but it can be
- X excuted manually or put as external fidomailer. If our rmail is
- X not used (or some other modified rmail), mail from other UUCP
- X node can not be sent to fidonet, because (normally) the other
- X node sends mail in this site by using rmail.
- X
- X @(#)Copyright (c) 1987 by Teemu Torma
- X
- X Permission is given to distribute this program and alter this code as
- X needed to adapt it to forign systems provided that this header is
- X included and that the original author's name is preserved. */
- X
- X#include <stdio.h>
- X#include <string.h>
- X#include <unistd.h>
- X#include <ctype.h>
- X#include <pwd.h>
- X#include <sys/types.h>
- X#include <time.h>
- X#include <varargs.h>
- X#include "hsu.h"
- X#include "config.h"
- X#include "fnet.h"
- X#include "nodelist.h"
- X
- Xextern struct passwd *getpwuid();
- Xextern char *mktemp();
- Xextern int getopt();
- Xextern char *optarg;
- Xextern int optind;
- Xextern void exit();
- Xextern char *spoolfile(), *basename();
- Xextern char *regex();
- Xextern time_t time();
- Xextern FILE *popen();
- Xextern int errno;
- Xextern char *sys_errlist[];
- X
- X/* verbosity */
- Xint verbose = INIT_VERBOSE;
- X
- X/* non-private mail */
- Xbool public = False;
- X
- X/* News-article */
- Xint newsmode = FALSE;
- X
- X/* version of rfmail */
- Xchar *version = "%I%";
- X
- X/* Our net/node information */
- XNode this;
- X
- X/* Extract address from Reply-To or From field. Possible formats are:
- X - Full Name <address>
- X - address (Full Name)
- X - address */
- X
- Xvoid
- Xget_address(field, address)
- X char *field, *address;
- X{
- X register char *cp, *np;
- X
- X /* strip possible newline */
- X if (cp = strchr(field, '\n'))
- X *cp = 0;
- X
- X if ((cp = strchr(field, '(')) && strchr(cp + 1, ')'))
- X {
- X /* format is 'address (full name)' */
- X for (np = field; np < cp - 1; np++)
- X *address++ = *np;
- X *address = 0;
- X }
- X else
- X if ((cp = strchr(field, '<')) && (np = strchr(cp + 1, '>')))
- X {
- X /* format is 'full name <address>' */
- X while (cp < np)
- X *address++ = *cp++;
- X *address = 0;
- X }
- X else
- X /* line contains only address */
- X (void) strcpy(address, field);
- SHAR_EOF
- echo "End of part 1"
- echo "File rfmail.c is continued in part 2"
- echo "2" > s2_seq_.tmp
- exit 0
-
-