ax25mail-utils-0.11.orig/0000755000175000017500000000000007425043443014707 5ustar pg4ipg4i00000000000000ax25mail-utils-0.11.orig/Makefile.in0000644000175000017500000002526207425043441016761 0ustar pg4ipg4i00000000000000# Makefile.in generated automatically by automake 1.4-p4 from Makefile.am # Copyright (C) 1994, 1995-8, 1999 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. SHELL = @SHELL@ srcdir = @srcdir@ top_srcdir = @top_srcdir@ VPATH = @srcdir@ prefix = @prefix@ exec_prefix = @exec_prefix@ bindir = @bindir@ sbindir = @sbindir@ libexecdir = @libexecdir@ sysconfdir = @sysconfdir@ sharedstatedir = @sharedstatedir@ localstatedir = @localstatedir@ libdir = @libdir@ infodir = @infodir@ mandir = @mandir@ includedir = @includedir@ oldincludedir = /usr/include DESTDIR = pkgdatadir = $(datadir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ top_builddir = . ACLOCAL = @ACLOCAL@ AUTOCONF = @AUTOCONF@ AUTOMAKE = @AUTOMAKE@ AUTOHEADER = @AUTOHEADER@ INSTALL = @INSTALL@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ $(AM_INSTALL_PROGRAM_FLAGS) INSTALL_DATA = @INSTALL_DATA@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ transform = @program_transform_name@ NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : CC = @CC@ CXX = @CXX@ LN_S = @LN_S@ MAKEINFO = @MAKEINFO@ PACKAGE = @PACKAGE@ PERL = @PERL@ VERSION = @VERSION@ AUTOMAKE_OPTIONS = foreign SUBDIRS = ulistd agent axgetlist axgetmail routes conf man1 man8 datadir = @prefix@ EXTRA_DIST = README NEWS COPYING BUGS ax25mail-utils.lsm ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs CONFIG_HEADER = config.h CONFIG_CLEAN_FILES = DIST_COMMON = README ./stamp-h.in COPYING Makefile.am Makefile.in NEWS \ acconfig.h aclocal.m4 config.h.in configure configure.in install-sh \ missing mkinstalldirs DISTFILES = $(DIST_COMMON) $(SOURCES) $(HEADERS) $(TEXINFOS) $(EXTRA_DIST) TAR = tar GZIP_ENV = --best all: all-redirect .SUFFIXES: $(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4) cd $(top_srcdir) && $(AUTOMAKE) --foreign --include-deps Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status cd $(top_builddir) \ && CONFIG_FILES=$@ CONFIG_HEADERS= $(SHELL) ./config.status $(ACLOCAL_M4): configure.in cd $(srcdir) && $(ACLOCAL) config.status: $(srcdir)/configure.in $(CONFIG_STATUS_DEPENDENCIES) $(SHELL) ./config.status --recheck $(srcdir)/configure: $(srcdir)/configure.in $(ACLOCAL_M4) $(CONFIGURE_DEPENDENCIES) cd $(srcdir) && $(AUTOCONF) config.h: stamp-h @if test ! -f $@; then \ rm -f stamp-h; \ $(MAKE) stamp-h; \ else :; fi stamp-h: $(srcdir)/config.h.in $(top_builddir)/config.status cd $(top_builddir) \ && CONFIG_FILES= CONFIG_HEADERS=config.h \ $(SHELL) ./config.status @echo timestamp > stamp-h 2> /dev/null $(srcdir)/config.h.in: $(srcdir)/stamp-h.in @if test ! -f $@; then \ rm -f $(srcdir)/stamp-h.in; \ $(MAKE) $(srcdir)/stamp-h.in; \ else :; fi $(srcdir)/stamp-h.in: $(top_srcdir)/configure.in $(ACLOCAL_M4) acconfig.h cd $(top_srcdir) && $(AUTOHEADER) @echo timestamp > $(srcdir)/stamp-h.in 2> /dev/null mostlyclean-hdr: clean-hdr: distclean-hdr: -rm -f config.h maintainer-clean-hdr: # This directory's subdirectories are mostly independent; you can cd # into them and run `make' without going through this Makefile. # To change the values of `make' variables: instead of editing Makefiles, # (1) if the variable is set in `config.status', edit `config.status' # (which will cause the Makefiles to be regenerated when you run `make'); # (2) otherwise, pass the desired values on the `make' command line. @SET_MAKE@ all-recursive install-data-recursive install-exec-recursive \ installdirs-recursive install-recursive uninstall-recursive \ check-recursive installcheck-recursive info-recursive dvi-recursive: @set fnord $(MAKEFLAGS); amf=$$2; \ dot_seen=no; \ target=`echo $@ | sed s/-recursive//`; \ list='$(SUBDIRS)'; for subdir in $$list; do \ echo "Making $$target in $$subdir"; \ if test "$$subdir" = "."; then \ dot_seen=yes; \ local_target="$$target-am"; \ else \ local_target="$$target"; \ fi; \ (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \ done; \ if test "$$dot_seen" = "no"; then \ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ fi; test -z "$$fail" mostlyclean-recursive clean-recursive distclean-recursive \ maintainer-clean-recursive: @set fnord $(MAKEFLAGS); amf=$$2; \ dot_seen=no; \ rev=''; list='$(SUBDIRS)'; for subdir in $$list; do \ rev="$$subdir $$rev"; \ test "$$subdir" = "." && dot_seen=yes; \ done; \ test "$$dot_seen" = "no" && rev=". $$rev"; \ target=`echo $@ | sed s/-recursive//`; \ for subdir in $$rev; do \ echo "Making $$target in $$subdir"; \ if test "$$subdir" = "."; then \ local_target="$$target-am"; \ else \ local_target="$$target"; \ fi; \ (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \ done && test -z "$$fail" tags-recursive: list='$(SUBDIRS)'; for subdir in $$list; do \ test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ done tags: TAGS ID: $(HEADERS) $(SOURCES) $(LISP) list='$(SOURCES) $(HEADERS)'; \ unique=`for i in $$list; do echo $$i; done | \ awk ' { files[$$0] = 1; } \ END { for (i in files) print i; }'`; \ here=`pwd` && cd $(srcdir) \ && mkid -f$$here/ID $$unique $(LISP) TAGS: tags-recursive $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) $(LISP) tags=; \ here=`pwd`; \ list='$(SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test -f $$subdir/TAGS && tags="$$tags -i $$here/$$subdir/TAGS"; \ fi; \ done; \ list='$(SOURCES) $(HEADERS)'; \ unique=`for i in $$list; do echo $$i; done | \ awk ' { files[$$0] = 1; } \ END { for (i in files) print i; }'`; \ test -z "$(ETAGS_ARGS)config.h.in$$unique$(LISP)$$tags" \ || (cd $(srcdir) && etags $(ETAGS_ARGS) $$tags config.h.in $$unique $(LISP) -o $$here/TAGS) mostlyclean-tags: clean-tags: distclean-tags: -rm -f TAGS ID maintainer-clean-tags: distdir = $(PACKAGE)-$(VERSION) top_distdir = $(distdir) # This target untars the dist file and tries a VPATH configuration. Then # it guarantees that the distribution is self-contained by making another # tarfile. distcheck: dist -rm -rf $(distdir) GZIP=$(GZIP_ENV) $(TAR) zxf $(distdir).tar.gz mkdir $(distdir)/=build mkdir $(distdir)/=inst dc_install_base=`cd $(distdir)/=inst && pwd`; \ cd $(distdir)/=build \ && ../configure --srcdir=.. --prefix=$$dc_install_base \ && $(MAKE) $(AM_MAKEFLAGS) \ && $(MAKE) $(AM_MAKEFLAGS) dvi \ && $(MAKE) $(AM_MAKEFLAGS) check \ && $(MAKE) $(AM_MAKEFLAGS) install \ && $(MAKE) $(AM_MAKEFLAGS) installcheck \ && $(MAKE) $(AM_MAKEFLAGS) dist -rm -rf $(distdir) @banner="$(distdir).tar.gz is ready for distribution"; \ dashes=`echo "$$banner" | sed s/./=/g`; \ echo "$$dashes"; \ echo "$$banner"; \ echo "$$dashes" dist: distdir -chmod -R a+r $(distdir) GZIP=$(GZIP_ENV) $(TAR) chozf $(distdir).tar.gz $(distdir) -rm -rf $(distdir) dist-all: distdir -chmod -R a+r $(distdir) GZIP=$(GZIP_ENV) $(TAR) chozf $(distdir).tar.gz $(distdir) -rm -rf $(distdir) distdir: $(DISTFILES) -rm -rf $(distdir) mkdir $(distdir) -chmod 777 $(distdir) @for file in $(DISTFILES); do \ d=$(srcdir); \ if test -d $$d/$$file; then \ cp -pr $$d/$$file $(distdir)/$$file; \ else \ test -f $(distdir)/$$file \ || ln $$d/$$file $(distdir)/$$file 2> /dev/null \ || cp -p $$d/$$file $(distdir)/$$file || :; \ fi; \ done for subdir in $(SUBDIRS); do \ if test "$$subdir" = .; then :; else \ test -d $(distdir)/$$subdir \ || mkdir $(distdir)/$$subdir \ || exit 1; \ chmod 777 $(distdir)/$$subdir; \ (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir=../$(distdir) distdir=../$(distdir)/$$subdir distdir) \ || exit 1; \ fi; \ done info-am: info: info-recursive dvi-am: dvi: dvi-recursive check-am: all-am check: check-recursive installcheck-am: installcheck: installcheck-recursive all-recursive-am: config.h $(MAKE) $(AM_MAKEFLAGS) all-recursive install-exec-am: install-exec: install-exec-recursive install-data-am: install-data: install-data-recursive install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am install: install-recursive uninstall-am: uninstall: uninstall-recursive all-am: Makefile config.h all-redirect: all-recursive-am install-strip: $(MAKE) $(AM_MAKEFLAGS) AM_INSTALL_PROGRAM_FLAGS=-s install installdirs: installdirs-recursive installdirs-am: mostlyclean-generic: clean-generic: distclean-generic: -rm -f Makefile $(CONFIG_CLEAN_FILES) -rm -f config.cache config.log stamp-h stamp-h[0-9]* maintainer-clean-generic: mostlyclean-am: mostlyclean-hdr mostlyclean-tags mostlyclean-generic mostlyclean: mostlyclean-recursive clean-am: clean-hdr clean-tags clean-generic mostlyclean-am clean: clean-recursive distclean-am: distclean-hdr distclean-tags distclean-generic clean-am distclean: distclean-recursive -rm -f config.status maintainer-clean-am: maintainer-clean-hdr maintainer-clean-tags \ maintainer-clean-generic distclean-am @echo "This command is intended for maintainers to use;" @echo "it deletes files that may require special tools to rebuild." maintainer-clean: maintainer-clean-recursive -rm -f config.status .PHONY: mostlyclean-hdr distclean-hdr clean-hdr maintainer-clean-hdr \ install-data-recursive uninstall-data-recursive install-exec-recursive \ uninstall-exec-recursive installdirs-recursive uninstalldirs-recursive \ all-recursive check-recursive installcheck-recursive info-recursive \ dvi-recursive mostlyclean-recursive distclean-recursive clean-recursive \ maintainer-clean-recursive tags tags-recursive mostlyclean-tags \ distclean-tags clean-tags maintainer-clean-tags distdir info-am info \ dvi-am dvi check check-am installcheck-am installcheck all-recursive-am \ install-exec-am install-exec install-data-am install-data install-am \ install uninstall-am uninstall all-redirect all-am all installdirs-am \ installdirs mostlyclean-generic distclean-generic clean-generic \ maintainer-clean-generic clean mostlyclean distclean maintainer-clean install: postinstall postinstall: @INSTALL@ -d /var/ax25/ulistd installconf: (cd conf; $(MAKE) installconf) # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: ax25mail-utils-0.11.orig/README0000644000175000017500000000345107424541136015573 0ustar pg4ipg4i00000000000000RELEASE NOTES ~~~~~~~~~~~~~ !WARNING: There are some changes in axgetlist - the command line arguments have changed and the configuration file format is a bit different! Since version 0.10 the SSID handling was changed a bit - the callsign of the BBS is always written without the SSID (or the SSID is ignored) unless it specifies the path for connecting the BBS. Since version 0.07 axgetmail DOESN'T SUPPORT the AX.25 callsign associations configured using axparms utility because of their side effects. Instead of this feature a file /etc/ax25/logins was added for specifying users' callsigns. Package requirements ~~~~~~~~~~~~~~~~~~~~ - ax25-tools and applications installed - perl 5 installed Installation ~~~~~~~~~~~~ First run ./configure to create the Makefile. For compile type: make and for install then type make install You can also install the example configuration files using make installconf (this will replace existing configuration files, if any) Quick Configuration ~~~~~~~~~~~~~~~~~~~ 1. Edit the file /etc/ax25/ulistd.conf to specify the BBS to communicate with. 2. If you want to read the message lists by connecting to the BBS, edit the file /etc/ax25/axgetlist.conf. 3. Edit the file /etc/ax25/axgetmail.conf to specify the bulletins for download for each BBS. 4. Edit the file /etc/ax25/logins and add the callsigns of users you want to download messages for. 5. [Optional] For each BBS create the file /etc/ax25/bulletins. to specify the message lifetimes - see the example file /etc/ax25/bulletins.OK0PAB 6. If you want to use ulistd add the command ulistd -c -lg to your startup script. Remember: for ulistd usage you must have the unproto listing enabled on your BBS. Consult this with the BBS sysop. ax25mail-utils-0.11.orig/stamp-h.in0000644000175000017500000000001207422615150016576 0ustar pg4ipg4i00000000000000timestamp ax25mail-utils-0.11.orig/COPYING0000644000175000017500000004307606242435215015752 0ustar pg4ipg4i00000000000000 GNU GENERAL PUBLIC LICENSE Version 2, June 1991 Copyright (C) 1989, 1991 Free Software Foundation, Inc. 675 Mass Ave, Cambridge, MA 02139, USA Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. Preamble The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users. This General Public License applies to most of the Free Software Foundation's software and to any other program whose authors commit to using it. (Some other Free Software Foundation software is covered by the GNU Library General Public License instead.) You can apply it to your programs, too. When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for this service if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs; and that you know you can do these things. To protect your rights, we need to make restrictions that forbid anyone to deny you these rights or to ask you to surrender the rights. These restrictions translate to certain responsibilities for you if you distribute copies of the software, or if you modify it. For example, if you distribute copies of such a program, whether gratis or for a fee, you must give the recipients all the rights that you have. You must make sure that they, too, receive or can get the source code. And you must show them these terms so they know their rights. We protect your rights with two steps: (1) copyright the software, and (2) offer you this license which gives you legal permission to copy, distribute and/or modify the software. Also, for each author's protection and ours, we want to make certain that everyone understands that there is no warranty for this free software. If the software is modified by someone else and passed on, we want its recipients to know that what they have is not the original, so that any problems introduced by others will not reflect on the original authors' reputations. Finally, any free program is threatened constantly by software patents. We wish to avoid the danger that redistributors of a free program will individually obtain patent licenses, in effect making the program proprietary. To prevent this, we have made it clear that any patent must be licensed for everyone's free use or not licensed at all. The precise terms and conditions for copying, distribution and modification follow. GNU GENERAL PUBLIC LICENSE TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION 0. This License applies to any program or other work which contains a notice placed by the copyright holder saying it may be distributed under the terms of this General Public License. The "Program", below, refers to any such program or work, and a "work based on the Program" means either the Program or any derivative work under copyright law: that is to say, a work containing the Program or a portion of it, either verbatim or with modifications and/or translated into another language. (Hereinafter, translation is included without limitation in the term "modification".) Each licensee is addressed as "you". Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of running the Program is not restricted, and the output from the Program is covered only if its contents constitute a work based on the Program (independent of having been made by running the Program). Whether that is true depends on what the Program does. 1. You may copy and distribute verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty; keep intact all the notices that refer to this License and to the absence of any warranty; and give any other recipients of the Program a copy of this License along with the Program. You may charge a fee for the physical act of transferring a copy, and you may at your option offer warranty protection in exchange for a fee. 2. You may modify your copy or copies of the Program or any portion of it, thus forming a work based on the Program, and copy and distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions: a) You must cause the modified files to carry prominent notices stating that you changed the files and the date of any change. b) You must cause any work that you distribute or publish, that in whole or in part contains or is derived from the Program or any part thereof, to be licensed as a whole at no charge to all third parties under the terms of this License. c) If the modified program normally reads commands interactively when run, you must cause it, when started running for such interactive use in the most ordinary way, to print or display an announcement including an appropriate copyright notice and a notice that there is no warranty (or else, saying that you provide a warranty) and that users may redistribute the program under these conditions, and telling the user how to view a copy of this License. (Exception: if the Program itself is interactive but does not normally print such an announcement, your work based on the Program is not required to print an announcement.) These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Program, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Program, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it. Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Program. In addition, mere aggregation of another work not based on the Program with the Program (or with a work based on the Program) on a volume of a storage or distribution medium does not bring the other work under the scope of this License. 3. You may copy and distribute the Program (or a work based on it, under Section 2) in object code or executable form under the terms of Sections 1 and 2 above provided that you also do one of the following: a) Accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or, b) Accompany it with a written offer, valid for at least three years, to give any third party, for a charge no more than your cost of physically performing source distribution, a complete machine-readable copy of the corresponding source code, to be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or, c) Accompany it with the information you received as to the offer to distribute corresponding source code. (This alternative is allowed only for noncommercial distribution and only if you received the program in object code or executable form with such an offer, in accord with Subsection b above.) The source code for a work means the preferred form of the work for making modifications to it. For an executable work, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the executable. However, as a special exception, the source code distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable. If distribution of executable or object code is made by offering access to copy from a designated place, then offering equivalent access to copy the source code from the same place counts as distribution of the source code, even though third parties are not compelled to copy the source along with the object code. 4. You may not copy, modify, sublicense, or distribute the Program except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense or distribute the Program is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance. 5. You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to modify or distribute the Program or its derivative works. These actions are prohibited by law if you do not accept this License. Therefore, by modifying or distributing the Program (or any work based on the Program), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying the Program or works based on it. 6. Each time you redistribute the Program (or any work based on the Program), the recipient automatically receives a license from the original licensor to copy, distribute or modify the Program subject to these terms and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein. You are not responsible for enforcing compliance by third parties to this License. 7. If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot distribute so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not distribute the Program at all. For example, if a patent license would not permit royalty-free redistribution of the Program by all those who receive copies directly or indirectly through you, then the only way you could satisfy both it and this License would be to refrain entirely from distribution of the Program. If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the section is intended to apply and the section as a whole is intended to apply in other circumstances. It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity of any such claims; this section has the sole purpose of protecting the integrity of the free software distribution system, which is implemented by public license practices. Many people have made generous contributions to the wide range of software distributed through that system in reliance on consistent application of that system; it is up to the author/donor to decide if he or she is willing to distribute software through any other system and a licensee cannot impose that choice. This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License. 8. If the distribution and/or use of the Program is restricted in certain countries either by patents or by copyrighted interfaces, the original copyright holder who places the Program under this License may add an explicit geographical distribution limitation excluding those countries, so that distribution is permitted only in or among countries not thus excluded. In such case, this License incorporates the limitation as if written in the body of this License. 9. The Free Software Foundation may publish revised and/or new versions of the General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. Each version is given a distinguishing version number. If the Program specifies a version number of this License which applies to it and "any later version", you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of this License, you may choose any version ever published by the Free Software Foundation. 10. If you wish to incorporate parts of the Program into other free programs whose distribution conditions are different, write to the author to ask for permission. For software which is copyrighted by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this. Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally. NO WARRANTY 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. END OF TERMS AND CONDITIONS Appendix: How to Apply These Terms to Your New Programs If you develop a new program, and you want it to be of the greatest possible use to the public, the best way to achieve this is to make it free software which everyone can redistribute and change under these terms. To do so, attach the following notices to the program. It is safest to attach them to the start of each source file to most effectively convey the exclusion of warranty; and each file should have at least the "copyright" line and a pointer to where the full notice is found. Copyright (C) 19yy This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. Also add information on how to contact you by electronic and paper mail. If the program is interactive, make it output a short notice like this when it starts in an interactive mode: Gnomovision version 69, Copyright (C) 19yy name of author Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. This is free software, and you are welcome to redistribute it under certain conditions; type `show c' for details. The hypothetical commands `show w' and `show c' should show the appropriate parts of the General Public License. Of course, the commands you use may be called something other than `show w' and `show c'; they could even be mouse-clicks or menu items--whatever suits your program. You should also get your employer (if you work as a programmer) or your school, if any, to sign a "copyright disclaimer" for the program, if necessary. Here is a sample; alter the names: Yoyodyne, Inc., hereby disclaims all copyright interest in the program `Gnomovision' (which makes passes at compilers) written by James Hacker. , 1 April 1989 Ty Coon, President of Vice This General Public License does not permit incorporating your program into proprietary programs. If your program is a subroutine library, you may consider it more useful to permit linking proprietary applications with the library. If this is what you want to do, use the GNU Library General Public License instead of this License. ax25mail-utils-0.11.orig/Makefile.am0000644000175000017500000000052407040061663016741 0ustar pg4ipg4i00000000000000## Process this file with automake to produce Makefile.in AUTOMAKE_OPTIONS = foreign SUBDIRS = ulistd agent axgetlist axgetmail routes conf man1 man8 datadir = @prefix@ EXTRA_DIST = README NEWS COPYING BUGS ax25mail-utils.lsm install: postinstall postinstall: @INSTALL@ -d /var/ax25/ulistd installconf: (cd conf; $(MAKE) installconf) ax25mail-utils-0.11.orig/NEWS0000644000175000017500000000206607424540656015421 0ustar pg4ipg4i00000000000000ax25mail-utils 0.11: Ulistd now can work in passive mode - the message list can be gathered using axgetlist (see conf/ulistd.conf). Improved axgetlist ax25mail-utils 0.10: Added the utility axgetlist for reading the message lists in connected mode SSID handling fixed ax25mail-utils 0.09: Fixed 'logins' file reading ulistd is faster (it doesn't read the listfile so often) ax25mail-utils 0.08: Small fix in athorization (infinite waiting for BBS prompt) ax25mail-utils 0.07: Axgetmail revision (! AX.25 callsign associations no more used - see README!) New utility axgetmsg ax25mail-utils 0.06: Authorization support ax25mail-utils 0.05: Axgetmail allows to choose the bulletins by their forward specification Messages are deleted automaticaly after specified number of days ax25mail-utils 0.04: Ulistd has configurable timings Ulistd doesn't call axgetmail directly but via the script Axgetmail supports multiple users ax25mail-utils 0.03: Fixed the connect testing ax25mail-utils 0.02: The package has been converted to autoconf. ax25mail-utils-0.11.orig/acconfig.h0000444000175000017500000000432607422615137016636 0ustar pg4ipg4i00000000000000/* Special definitions, processed by autoheader. Copyright (C) 1995 Free Software Foundation. Ulrich Drepper , 1995. */ /* Default value for alignment of strings in .mo file. */ #define DEFAULT_ALIGNMENT 1 #ifndef __P # if __STDC__ # define __P(args) args # else # define __P(args) () # endif #endif @TOP@ #undef DEQUE_DESTRUCTOR #undef VERINFO #undef NEW_AXLIB #undef NEW_AX25 /* Define to the name of the distribution. */ #undef PACKAGE /* Define to the version of the distribution. */ #undef VERSION /* Define if you have obstacks. */ #undef HAVE_OBSTACK /* Define if defines ptrdiff_t. */ #undef HAVE_PTRDIFF_T /* Define if your locale.h file contains LC_MESSAGES. */ #undef HAVE_LC_MESSAGES /* Define if you have the parse_printf_format function. */ #undef HAVE_PARSE_PRINTF_FORMAT /* Define to 1 if NLS is requested. */ #undef ENABLE_NLS /* Define as 1 if you have catgets and don't want to use GNU gettext. */ #undef HAVE_CATGETS /* Define as 1 if you have gettext and don't want to use GNU gettext. */ #undef HAVE_GETTEXT /* Define as 1 if you have the stpcpy function. */ #undef HAVE_STPCPY @BOTTOM@ /* A file name cannot consist of any character possible. INVALID_PATH_CHAR contains the characters not allowed. */ #ifndef MSDOS #define INVALID_PATH_CHAR "\1\2\3\4\5\6\7\10\11\12\13\14\15\16\17\20\21\22\23\24\25\26\27\30\31\32\33\34\35\36\37 \177/" #else /* Something like this for MSDOG. */ #define INVALID_PATH_CHAR "\1\2\3\4\5\6\7\10\11\12\13\14\15\16\17\20\21\22\23\24\25\26\27\30\31\32\33\34\35\36\37 \177\\:." #endif /* Length from which starting on warnings about too long strings are given. Several systems have limits for strings itself, more have problems with strings in their tools (important here: gencat). 1024 bytes is a conservative limit. Because many translation let the message size grow (German translations are always bigger) choose a length < 1024. */ #define WARN_ID_LEN 900 /* This is the page width for the message_print function. It should not be set to more than 80 characters. It is used to wrap the msgid and msgstr strings, and also to wrap the file position (#:) comments. */ #define PAGE_WIDTH 999 /* For now! */ ax25mail-utils-0.11.orig/aclocal.m40000644000175000017500000001045707422615062016555 0ustar pg4ipg4i00000000000000dnl aclocal.m4 generated automatically by aclocal 1.4-p4 dnl Copyright (C) 1994, 1995-8, 1999 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. dnl This program is distributed in the hope that it will be useful, dnl but WITHOUT ANY WARRANTY, to the extent permitted by law; without dnl even the implied warranty of MERCHANTABILITY or FITNESS FOR A dnl PARTICULAR PURPOSE. # Do all the work for Automake. This macro actually does too much -- # some checks are only needed if your package does certain things. # But this isn't really a big deal. # serial 1 dnl Usage: dnl AM_INIT_AUTOMAKE(package,version, [no-define]) AC_DEFUN(AM_INIT_AUTOMAKE, [AC_REQUIRE([AC_PROG_INSTALL]) PACKAGE=[$1] AC_SUBST(PACKAGE) VERSION=[$2] AC_SUBST(VERSION) dnl test to see if srcdir already configured if test "`cd $srcdir && pwd`" != "`pwd`" && test -f $srcdir/config.status; then AC_MSG_ERROR([source directory already configured; run "make distclean" there first]) fi ifelse([$3],, AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE", [Name of package]) AC_DEFINE_UNQUOTED(VERSION, "$VERSION", [Version number of package])) AC_REQUIRE([AM_SANITY_CHECK]) AC_REQUIRE([AC_ARG_PROGRAM]) dnl FIXME This is truly gross. missing_dir=`cd $ac_aux_dir && pwd` AM_MISSING_PROG(ACLOCAL, aclocal, $missing_dir) AM_MISSING_PROG(AUTOCONF, autoconf, $missing_dir) AM_MISSING_PROG(AUTOMAKE, automake, $missing_dir) AM_MISSING_PROG(AUTOHEADER, autoheader, $missing_dir) AM_MISSING_PROG(MAKEINFO, makeinfo, $missing_dir) AC_REQUIRE([AC_PROG_MAKE_SET])]) # # Check to make sure that the build environment is sane. # AC_DEFUN(AM_SANITY_CHECK, [AC_MSG_CHECKING([whether build environment is sane]) # Just in case sleep 1 echo timestamp > conftestfile # Do `set' in a subshell so we don't clobber the current shell's # arguments. Must try -L first in case configure is actually a # symlink; some systems play weird games with the mod time of symlinks # (eg FreeBSD returns the mod time of the symlink's containing # directory). if ( set X `ls -Lt $srcdir/configure conftestfile 2> /dev/null` if test "[$]*" = "X"; then # -L didn't work. set X `ls -t $srcdir/configure conftestfile` fi if test "[$]*" != "X $srcdir/configure conftestfile" \ && test "[$]*" != "X conftestfile $srcdir/configure"; then # If neither matched, then we have a broken ls. This can happen # if, for instance, CONFIG_SHELL is bash and it inherits a # broken ls alias from the environment. This has actually # happened. Such a system could not be considered "sane". AC_MSG_ERROR([ls -t appears to fail. Make sure there is not a broken alias in your environment]) fi test "[$]2" = conftestfile ) then # Ok. : else AC_MSG_ERROR([newly created file is older than distributed files! Check your system clock]) fi rm -f conftest* AC_MSG_RESULT(yes)]) dnl AM_MISSING_PROG(NAME, PROGRAM, DIRECTORY) dnl The program must properly implement --version. AC_DEFUN(AM_MISSING_PROG, [AC_MSG_CHECKING(for working $2) # Run test in a subshell; some versions of sh will print an error if # an executable is not found, even if stderr is redirected. # Redirect stdin to placate older versions of autoconf. Sigh. if ($2 --version) < /dev/null > /dev/null 2>&1; then $1=$2 AC_MSG_RESULT(found) else $1="$3/missing $2" AC_MSG_RESULT(missing) fi AC_SUBST($1)]) # Like AC_CONFIG_HEADER, but automatically create stamp file. AC_DEFUN(AM_CONFIG_HEADER, [AC_PREREQ([2.12]) AC_CONFIG_HEADER([$1]) dnl When config.status generates a header, we must update the stamp-h file. dnl This file resides in the same directory as the config header dnl that is generated. We must strip everything past the first ":", dnl and everything past the last "/". AC_OUTPUT_COMMANDS(changequote(<<,>>)dnl ifelse(patsubst(<<$1>>, <<[^ ]>>, <<>>), <<>>, <>CONFIG_HEADERS" || echo timestamp > patsubst(<<$1>>, <<^\([^:]*/\)?.*>>, <<\1>>)stamp-h<<>>dnl>>, <>; do case " <<$>>CONFIG_HEADERS " in *" <<$>>am_file "*<<)>> echo timestamp > `echo <<$>>am_file | sed -e 's%:.*%%' -e 's%[^/]*$%%'`stamp-h$am_indx ;; esac am_indx=`expr "<<$>>am_indx" + 1` done<<>>dnl>>) changequote([,]))]) ax25mail-utils-0.11.orig/config.h.in0000644000175000017500000000466307422615003016735 0ustar pg4ipg4i00000000000000/* config.h.in. Generated automatically from configure.in by autoheader. */ /* Special definitions, processed by autoheader. Copyright (C) 1995 Free Software Foundation. Ulrich Drepper , 1995. */ /* Default value for alignment of strings in .mo file. */ #define DEFAULT_ALIGNMENT 1 #ifndef __P # if __STDC__ # define __P(args) args # else # define __P(args) () # endif #endif #undef DEQUE_DESTRUCTOR #undef VERINFO #undef NEW_AXLIB #undef NEW_AX25 /* Define to the name of the distribution. */ #undef PACKAGE /* Define to the version of the distribution. */ #undef VERSION /* Define if you have obstacks. */ #undef HAVE_OBSTACK /* Define if defines ptrdiff_t. */ #undef HAVE_PTRDIFF_T /* Define if your locale.h file contains LC_MESSAGES. */ #undef HAVE_LC_MESSAGES /* Define if you have the parse_printf_format function. */ #undef HAVE_PARSE_PRINTF_FORMAT /* Define to 1 if NLS is requested. */ #undef ENABLE_NLS /* Define as 1 if you have catgets and don't want to use GNU gettext. */ #undef HAVE_CATGETS /* Define as 1 if you have gettext and don't want to use GNU gettext. */ #undef HAVE_GETTEXT /* Define as 1 if you have the stpcpy function. */ #undef HAVE_STPCPY /* Name of package */ #undef PACKAGE /* Define if you have the ANSI C header files. */ #undef STDC_HEADERS /* Version number of package */ #undef VERSION /* A file name cannot consist of any character possible. INVALID_PATH_CHAR contains the characters not allowed. */ #ifndef MSDOS #define INVALID_PATH_CHAR "\1\2\3\4\5\6\7\10\11\12\13\14\15\16\17\20\21\22\23\24\25\26\27\30\31\32\33\34\35\36\37 \177/" #else /* Something like this for MSDOG. */ #define INVALID_PATH_CHAR "\1\2\3\4\5\6\7\10\11\12\13\14\15\16\17\20\21\22\23\24\25\26\27\30\31\32\33\34\35\36\37 \177\\:." #endif /* Length from which starting on warnings about too long strings are given. Several systems have limits for strings itself, more have problems with strings in their tools (important here: gencat). 1024 bytes is a conservative limit. Because many translation let the message size grow (German translations are always bigger) choose a length < 1024. */ #define WARN_ID_LEN 900 /* This is the page width for the message_print function. It should not be set to more than 80 characters. It is used to wrap the msgid and msgstr strings, and also to wrap the file position (#:) comments. */ #define PAGE_WIDTH 999 /* For now! */ ax25mail-utils-0.11.orig/configure0000755000175000017500000033600607424541376016635 0ustar pg4ipg4i00000000000000#! /bin/sh # Guess values for system-dependent variables and create Makefiles. # Generated by Autoconf 2.52. # # Copyright 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001 # Free Software Foundation, Inc. # This configure script is free software; the Free Software Foundation # gives unlimited permission to copy, distribute and modify it. # Avoid depending upon Character Ranges. as_cr_letters='abcdefghijklmnopqrstuvwxyz' as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' as_cr_Letters=$as_cr_letters$as_cr_LETTERS as_cr_digits='0123456789' as_cr_alnum=$as_cr_Letters$as_cr_digits # Sed expression to map a string onto a valid variable name. as_tr_sh="sed y%*+%pp%;s%[^_$as_cr_alnum]%_%g" # Sed expression to map a string onto a valid CPP name. as_tr_cpp="sed y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g" # Be Bourne compatible if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then emulate sh NULLCMD=: elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then set -o posix fi # Name of the executable. as_me=`echo "$0" |sed 's,.*[\\/],,'` if expr a : '\(a\)' >/dev/null 2>&1; then as_expr=expr else as_expr=false fi rm -f conf$$ conf$$.exe conf$$.file echo >conf$$.file if ln -s conf$$.file conf$$ 2>/dev/null; then # We could just check for DJGPP; but this test a) works b) is more generic # and c) will remain valid once DJGPP supports symlinks (DJGPP 2.04). if test -f conf$$.exe; then # Don't use ln at all; we don't have any links as_ln_s='cp -p' else as_ln_s='ln -s' fi elif ln conf$$.file conf$$ 2>/dev/null; then as_ln_s=ln else as_ln_s='cp -p' fi rm -f conf$$ conf$$.exe conf$$.file as_executable_p="test -f" # Support unset when possible. if (FOO=FOO; unset FOO) >/dev/null 2>&1; then as_unset=unset else as_unset=false fi # NLS nuisances. $as_unset LANG || test "${LANG+set}" != set || { LANG=C; export LANG; } $as_unset LC_ALL || test "${LC_ALL+set}" != set || { LC_ALL=C; export LC_ALL; } $as_unset LC_TIME || test "${LC_TIME+set}" != set || { LC_TIME=C; export LC_TIME; } $as_unset LC_CTYPE || test "${LC_CTYPE+set}" != set || { LC_CTYPE=C; export LC_CTYPE; } $as_unset LANGUAGE || test "${LANGUAGE+set}" != set || { LANGUAGE=C; export LANGUAGE; } $as_unset LC_COLLATE || test "${LC_COLLATE+set}" != set || { LC_COLLATE=C; export LC_COLLATE; } $as_unset LC_NUMERIC || test "${LC_NUMERIC+set}" != set || { LC_NUMERIC=C; export LC_NUMERIC; } $as_unset LC_MESSAGES || test "${LC_MESSAGES+set}" != set || { LC_MESSAGES=C; export LC_MESSAGES; } # IFS # We need space, tab and new line, in precisely that order. as_nl=' ' IFS=" $as_nl" # CDPATH. $as_unset CDPATH || test "${CDPATH+set}" != set || { CDPATH=:; export CDPATH; } # Name of the host. # hostname on some systems (SVR3.2, Linux) returns a bogus exit status, # so uname gets run too. ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q` exec 6>&1 # # Initializations. # ac_default_prefix=/usr/local cross_compiling=no subdirs= MFLAGS= MAKEFLAGS= SHELL=${CONFIG_SHELL-/bin/sh} # Maximum number of lines to put in a shell here document. # This variable seems obsolete. It should probably be removed, and # only ac_max_sed_lines should be used. : ${ac_max_here_lines=38} ac_unique_file="ulistd/ulistd.c" ac_default_prefix=/usr # Initialize some variables set by options. ac_init_help= ac_init_version=false # The variables have the same names as the options, with # dashes changed to underlines. cache_file=/dev/null exec_prefix=NONE no_create= no_recursion= prefix=NONE program_prefix=NONE program_suffix=NONE program_transform_name=s,x,x, silent= site= srcdir= verbose= x_includes=NONE x_libraries=NONE # Installation directory options. # These are left unexpanded so users can "make install exec_prefix=/foo" # and all the variables that are supposed to be based on exec_prefix # by default will actually change. # Use braces instead of parens because sh, perl, etc. also accept them. bindir='${exec_prefix}/bin' sbindir='${exec_prefix}/sbin' libexecdir='${exec_prefix}/libexec' datadir='${prefix}/share' sysconfdir='${prefix}/etc' sharedstatedir='${prefix}/com' localstatedir='${prefix}/var' libdir='${exec_prefix}/lib' includedir='${prefix}/include' oldincludedir='/usr/include' infodir='${prefix}/info' mandir='${prefix}/man' # Identity of this package. PACKAGE_NAME= PACKAGE_TARNAME= PACKAGE_VERSION= PACKAGE_STRING= PACKAGE_BUGREPORT= ac_prev= for ac_option do # If the previous option needs an argument, assign it. if test -n "$ac_prev"; then eval "$ac_prev=\$ac_option" ac_prev= continue fi ac_optarg=`expr "x$ac_option" : 'x[^=]*=\(.*\)'` # Accept the important Cygnus configure options, so we can diagnose typos. case $ac_option in -bindir | --bindir | --bindi | --bind | --bin | --bi) ac_prev=bindir ;; -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*) bindir=$ac_optarg ;; -build | --build | --buil | --bui | --bu) ac_prev=build_alias ;; -build=* | --build=* | --buil=* | --bui=* | --bu=*) build_alias=$ac_optarg ;; -cache-file | --cache-file | --cache-fil | --cache-fi \ | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c) ac_prev=cache_file ;; -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \ | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*) cache_file=$ac_optarg ;; --config-cache | -C) cache_file=config.cache ;; -datadir | --datadir | --datadi | --datad | --data | --dat | --da) ac_prev=datadir ;; -datadir=* | --datadir=* | --datadi=* | --datad=* | --data=* | --dat=* \ | --da=*) datadir=$ac_optarg ;; -disable-* | --disable-*) ac_feature=`expr "x$ac_option" : 'x-*disable-\(.*\)'` # Reject names that are not valid shell variable names. expr "x$ac_feature" : ".*[^-_$as_cr_alnum]" >/dev/null && { echo "$as_me: error: invalid feature name: $ac_feature" >&2 { (exit 1); exit 1; }; } ac_feature=`echo $ac_feature | sed 's/-/_/g'` eval "enable_$ac_feature=no" ;; -enable-* | --enable-*) ac_feature=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` # Reject names that are not valid shell variable names. expr "x$ac_feature" : ".*[^-_$as_cr_alnum]" >/dev/null && { echo "$as_me: error: invalid feature name: $ac_feature" >&2 { (exit 1); exit 1; }; } ac_feature=`echo $ac_feature | sed 's/-/_/g'` case $ac_option in *=*) ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`;; *) ac_optarg=yes ;; esac eval "enable_$ac_feature='$ac_optarg'" ;; -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \ | --exec | --exe | --ex) ac_prev=exec_prefix ;; -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \ | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \ | --exec=* | --exe=* | --ex=*) exec_prefix=$ac_optarg ;; -gas | --gas | --ga | --g) # Obsolete; use --with-gas. with_gas=yes ;; -help | --help | --hel | --he | -h) ac_init_help=long ;; -help=r* | --help=r* | --hel=r* | --he=r* | -hr*) ac_init_help=recursive ;; -help=s* | --help=s* | --hel=s* | --he=s* | -hs*) ac_init_help=short ;; -host | --host | --hos | --ho) ac_prev=host_alias ;; -host=* | --host=* | --hos=* | --ho=*) host_alias=$ac_optarg ;; -includedir | --includedir | --includedi | --included | --include \ | --includ | --inclu | --incl | --inc) ac_prev=includedir ;; -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \ | --includ=* | --inclu=* | --incl=* | --inc=*) includedir=$ac_optarg ;; -infodir | --infodir | --infodi | --infod | --info | --inf) ac_prev=infodir ;; -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*) infodir=$ac_optarg ;; -libdir | --libdir | --libdi | --libd) ac_prev=libdir ;; -libdir=* | --libdir=* | --libdi=* | --libd=*) libdir=$ac_optarg ;; -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \ | --libexe | --libex | --libe) ac_prev=libexecdir ;; -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \ | --libexe=* | --libex=* | --libe=*) libexecdir=$ac_optarg ;; -localstatedir | --localstatedir | --localstatedi | --localstated \ | --localstate | --localstat | --localsta | --localst \ | --locals | --local | --loca | --loc | --lo) ac_prev=localstatedir ;; -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ | --localstate=* | --localstat=* | --localsta=* | --localst=* \ | --locals=* | --local=* | --loca=* | --loc=* | --lo=*) localstatedir=$ac_optarg ;; -mandir | --mandir | --mandi | --mand | --man | --ma | --m) ac_prev=mandir ;; -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*) mandir=$ac_optarg ;; -nfp | --nfp | --nf) # Obsolete; use --without-fp. with_fp=no ;; -no-create | --no-create | --no-creat | --no-crea | --no-cre \ | --no-cr | --no-c) no_create=yes ;; -no-recursion | --no-recursion | --no-recursio | --no-recursi \ | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) no_recursion=yes ;; -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \ | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \ | --oldin | --oldi | --old | --ol | --o) ac_prev=oldincludedir ;; -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \ | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \ | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*) oldincludedir=$ac_optarg ;; -prefix | --prefix | --prefi | --pref | --pre | --pr | --p) ac_prev=prefix ;; -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*) prefix=$ac_optarg ;; -program-prefix | --program-prefix | --program-prefi | --program-pref \ | --program-pre | --program-pr | --program-p) ac_prev=program_prefix ;; -program-prefix=* | --program-prefix=* | --program-prefi=* \ | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*) program_prefix=$ac_optarg ;; -program-suffix | --program-suffix | --program-suffi | --program-suff \ | --program-suf | --program-su | --program-s) ac_prev=program_suffix ;; -program-suffix=* | --program-suffix=* | --program-suffi=* \ | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*) program_suffix=$ac_optarg ;; -program-transform-name | --program-transform-name \ | --program-transform-nam | --program-transform-na \ | --program-transform-n | --program-transform- \ | --program-transform | --program-transfor \ | --program-transfo | --program-transf \ | --program-trans | --program-tran \ | --progr-tra | --program-tr | --program-t) ac_prev=program_transform_name ;; -program-transform-name=* | --program-transform-name=* \ | --program-transform-nam=* | --program-transform-na=* \ | --program-transform-n=* | --program-transform-=* \ | --program-transform=* | --program-transfor=* \ | --program-transfo=* | --program-transf=* \ | --program-trans=* | --program-tran=* \ | --progr-tra=* | --program-tr=* | --program-t=*) program_transform_name=$ac_optarg ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil) silent=yes ;; -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) ac_prev=sbindir ;; -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ | --sbi=* | --sb=*) sbindir=$ac_optarg ;; -sharedstatedir | --sharedstatedir | --sharedstatedi \ | --sharedstated | --sharedstate | --sharedstat | --sharedsta \ | --sharedst | --shareds | --shared | --share | --shar \ | --sha | --sh) ac_prev=sharedstatedir ;; -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \ | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \ | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \ | --sha=* | --sh=*) sharedstatedir=$ac_optarg ;; -site | --site | --sit) ac_prev=site ;; -site=* | --site=* | --sit=*) site=$ac_optarg ;; -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) ac_prev=srcdir ;; -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) srcdir=$ac_optarg ;; -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \ | --syscon | --sysco | --sysc | --sys | --sy) ac_prev=sysconfdir ;; -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \ | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*) sysconfdir=$ac_optarg ;; -target | --target | --targe | --targ | --tar | --ta | --t) ac_prev=target_alias ;; -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*) target_alias=$ac_optarg ;; -v | -verbose | --verbose | --verbos | --verbo | --verb) verbose=yes ;; -version | --version | --versio | --versi | --vers | -V) ac_init_version=: ;; -with-* | --with-*) ac_package=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` # Reject names that are not valid shell variable names. expr "x$ac_package" : ".*[^-_$as_cr_alnum]" >/dev/null && { echo "$as_me: error: invalid package name: $ac_package" >&2 { (exit 1); exit 1; }; } ac_package=`echo $ac_package| sed 's/-/_/g'` case $ac_option in *=*) ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`;; *) ac_optarg=yes ;; esac eval "with_$ac_package='$ac_optarg'" ;; -without-* | --without-*) ac_package=`expr "x$ac_option" : 'x-*without-\(.*\)'` # Reject names that are not valid shell variable names. expr "x$ac_package" : ".*[^-_$as_cr_alnum]" >/dev/null && { echo "$as_me: error: invalid package name: $ac_package" >&2 { (exit 1); exit 1; }; } ac_package=`echo $ac_package | sed 's/-/_/g'` eval "with_$ac_package=no" ;; --x) # Obsolete; use --with-x. with_x=yes ;; -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \ | --x-incl | --x-inc | --x-in | --x-i) ac_prev=x_includes ;; -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \ | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*) x_includes=$ac_optarg ;; -x-libraries | --x-libraries | --x-librarie | --x-librari \ | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l) ac_prev=x_libraries ;; -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \ | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*) x_libraries=$ac_optarg ;; -*) { echo "$as_me: error: unrecognized option: $ac_option Try \`$0 --help' for more information." >&2 { (exit 1); exit 1; }; } ;; *=*) ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='` # Reject names that are not valid shell variable names. expr "x$ac_envvar" : ".*[^_$as_cr_alnum]" >/dev/null && { echo "$as_me: error: invalid variable name: $ac_envvar" >&2 { (exit 1); exit 1; }; } ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` eval "$ac_envvar='$ac_optarg'" export $ac_envvar ;; *) # FIXME: should be removed in autoconf 3.0. echo "$as_me: WARNING: you should use --build, --host, --target" >&2 expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null && echo "$as_me: WARNING: invalid host type: $ac_option" >&2 : ${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option} ;; esac done if test -n "$ac_prev"; then ac_option=--`echo $ac_prev | sed 's/_/-/g'` { echo "$as_me: error: missing argument to $ac_option" >&2 { (exit 1); exit 1; }; } fi # Be sure to have absolute paths. for ac_var in exec_prefix prefix do eval ac_val=$`echo $ac_var` case $ac_val in [\\/$]* | ?:[\\/]* | NONE | '' ) ;; *) { echo "$as_me: error: expected an absolute path for --$ac_var: $ac_val" >&2 { (exit 1); exit 1; }; };; esac done # Be sure to have absolute paths. for ac_var in bindir sbindir libexecdir datadir sysconfdir sharedstatedir \ localstatedir libdir includedir oldincludedir infodir mandir do eval ac_val=$`echo $ac_var` case $ac_val in [\\/$]* | ?:[\\/]* ) ;; *) { echo "$as_me: error: expected an absolute path for --$ac_var: $ac_val" >&2 { (exit 1); exit 1; }; };; esac done # There might be people who depend on the old broken behavior: `$host' # used to hold the argument of --host etc. build=$build_alias host=$host_alias target=$target_alias # FIXME: should be removed in autoconf 3.0. if test "x$host_alias" != x; then if test "x$build_alias" = x; then cross_compiling=maybe echo "$as_me: WARNING: If you wanted to set the --build type, don't use --host. If a cross compiler is detected then cross compile mode will be used." >&2 elif test "x$build_alias" != "x$host_alias"; then cross_compiling=yes fi fi ac_tool_prefix= test -n "$host_alias" && ac_tool_prefix=$host_alias- test "$silent" = yes && exec 6>/dev/null # Find the source files, if location was not specified. if test -z "$srcdir"; then ac_srcdir_defaulted=yes # Try the directory containing this script, then its parent. ac_prog=$0 ac_confdir=`echo "$ac_prog" | sed 's%[\\/][^\\/][^\\/]*$%%'` test "x$ac_confdir" = "x$ac_prog" && ac_confdir=. srcdir=$ac_confdir if test ! -r $srcdir/$ac_unique_file; then srcdir=.. fi else ac_srcdir_defaulted=no fi if test ! -r $srcdir/$ac_unique_file; then if test "$ac_srcdir_defaulted" = yes; then { echo "$as_me: error: cannot find sources in $ac_confdir or .." >&2 { (exit 1); exit 1; }; } else { echo "$as_me: error: cannot find sources in $srcdir" >&2 { (exit 1); exit 1; }; } fi fi srcdir=`echo "$srcdir" | sed 's%\([^\\/]\)[\\/]*$%\1%'` ac_env_build_alias_set=${build_alias+set} ac_env_build_alias_value=$build_alias ac_cv_env_build_alias_set=${build_alias+set} ac_cv_env_build_alias_value=$build_alias ac_env_host_alias_set=${host_alias+set} ac_env_host_alias_value=$host_alias ac_cv_env_host_alias_set=${host_alias+set} ac_cv_env_host_alias_value=$host_alias ac_env_target_alias_set=${target_alias+set} ac_env_target_alias_value=$target_alias ac_cv_env_target_alias_set=${target_alias+set} ac_cv_env_target_alias_value=$target_alias ac_env_CC_set=${CC+set} ac_env_CC_value=$CC ac_cv_env_CC_set=${CC+set} ac_cv_env_CC_value=$CC ac_env_CFLAGS_set=${CFLAGS+set} ac_env_CFLAGS_value=$CFLAGS ac_cv_env_CFLAGS_set=${CFLAGS+set} ac_cv_env_CFLAGS_value=$CFLAGS ac_env_LDFLAGS_set=${LDFLAGS+set} ac_env_LDFLAGS_value=$LDFLAGS ac_cv_env_LDFLAGS_set=${LDFLAGS+set} ac_cv_env_LDFLAGS_value=$LDFLAGS ac_env_CPPFLAGS_set=${CPPFLAGS+set} ac_env_CPPFLAGS_value=$CPPFLAGS ac_cv_env_CPPFLAGS_set=${CPPFLAGS+set} ac_cv_env_CPPFLAGS_value=$CPPFLAGS ac_env_CXX_set=${CXX+set} ac_env_CXX_value=$CXX ac_cv_env_CXX_set=${CXX+set} ac_cv_env_CXX_value=$CXX ac_env_CXXFLAGS_set=${CXXFLAGS+set} ac_env_CXXFLAGS_value=$CXXFLAGS ac_cv_env_CXXFLAGS_set=${CXXFLAGS+set} ac_cv_env_CXXFLAGS_value=$CXXFLAGS ac_env_CPP_set=${CPP+set} ac_env_CPP_value=$CPP ac_cv_env_CPP_set=${CPP+set} ac_cv_env_CPP_value=$CPP # # Report the --help message. # if test "$ac_init_help" = "long"; then # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat < if you have libraries in a nonstandard directory CPPFLAGS C/C++ preprocessor flags, e.g. -I if you have headers in a nonstandard directory CXX C++ compiler command CXXFLAGS C++ compiler flags CPP C preprocessor Use these variables to override the choices made by `configure' or to help it to find libraries and programs with nonstandard names/locations. EOF fi if test "$ac_init_help" = "recursive"; then # If there are subdirs, report their specific --help. ac_popdir=`pwd` for ac_subdir in : $ac_subdirs_all; do test "x$ac_subdir" = x: && continue cd $ac_subdir # A "../" for each directory in /$ac_subdir. ac_dots=`echo $ac_subdir | sed 's,^\./,,;s,[^/]$,&/,;s,[^/]*/,../,g'` case $srcdir in .) # No --srcdir option. We are building in place. ac_sub_srcdir=$srcdir ;; [\\/]* | ?:[\\/]* ) # Absolute path. ac_sub_srcdir=$srcdir/$ac_subdir ;; *) # Relative path. ac_sub_srcdir=$ac_dots$srcdir/$ac_subdir ;; esac # Check for guested configure; otherwise get Cygnus style configure. if test -f $ac_sub_srcdir/configure.gnu; then echo $SHELL $ac_sub_srcdir/configure.gnu --help=recursive elif test -f $ac_sub_srcdir/configure; then echo $SHELL $ac_sub_srcdir/configure --help=recursive elif test -f $ac_sub_srcdir/configure.ac || test -f $ac_sub_srcdir/configure.in; then echo $ac_configure --help else echo "$as_me: WARNING: no configuration information is in $ac_subdir" >&2 fi cd $ac_popdir done fi test -n "$ac_init_help" && exit 0 if $ac_init_version; then cat <<\EOF Copyright 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001 Free Software Foundation, Inc. This configure script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it. EOF exit 0 fi exec 5>config.log cat >&5 </dev/null | sed 1q` uname -m = `(uname -m) 2>/dev/null || echo unknown` uname -r = `(uname -r) 2>/dev/null || echo unknown` uname -s = `(uname -s) 2>/dev/null || echo unknown` uname -v = `(uname -v) 2>/dev/null || echo unknown` /usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown` /bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown` /bin/arch = `(/bin/arch) 2>/dev/null || echo unknown` /usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown` /usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown` hostinfo = `(hostinfo) 2>/dev/null || echo unknown` /bin/machine = `(/bin/machine) 2>/dev/null || echo unknown` /usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown` /bin/universe = `(/bin/universe) 2>/dev/null || echo unknown` PATH = $PATH _ASUNAME } >&5 cat >&5 <\?\"\']*) ac_arg=`echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ac_configure_args="$ac_configure_args$ac_sep'$ac_arg'" ac_sep=" " ;; *) ac_configure_args="$ac_configure_args$ac_sep$ac_arg" ac_sep=" " ;; esac # Get rid of the leading space. done # When interrupted or exit'd, cleanup temporary files, and complete # config.log. We remove comments because anyway the quotes in there # would cause problems or look ugly. trap 'exit_status=$? # Save into config.log some information that might help in debugging. echo >&5 echo "## ----------------- ##" >&5 echo "## Cache variables. ##" >&5 echo "## ----------------- ##" >&5 echo >&5 # The following way of writing the cache mishandles newlines in values, { (set) 2>&1 | case `(ac_space='"'"' '"'"'; set | grep ac_space) 2>&1` in *ac_space=\ *) sed -n \ "s/'"'"'/'"'"'\\\\'"'"''"'"'/g; s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='"'"'\\2'"'"'/p" ;; *) sed -n \ "s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p" ;; esac; } >&5 sed "/^$/d" confdefs.h >conftest.log if test -s conftest.log; then echo >&5 echo "## ------------ ##" >&5 echo "## confdefs.h. ##" >&5 echo "## ------------ ##" >&5 echo >&5 cat conftest.log >&5 fi (echo; echo) >&5 test "$ac_signal" != 0 && echo "$as_me: caught signal $ac_signal" >&5 echo "$as_me: exit $exit_status" >&5 rm -rf conftest* confdefs* core core.* *.core conf$$* $ac_clean_files && exit $exit_status ' 0 for ac_signal in 1 2 13 15; do trap 'ac_signal='$ac_signal'; { (exit 1); exit 1; }' $ac_signal done ac_signal=0 # confdefs.h avoids OS command line length limits that DEFS can exceed. rm -rf conftest* confdefs.h # AIX cpp loses on an empty file, so make sure it contains at least a newline. echo >confdefs.h # Let the site file select an alternate cache file if it wants to. # Prefer explicitly selected file to automatically selected ones. if test -z "$CONFIG_SITE"; then if test "x$prefix" != xNONE; then CONFIG_SITE="$prefix/share/config.site $prefix/etc/config.site" else CONFIG_SITE="$ac_default_prefix/share/config.site $ac_default_prefix/etc/config.site" fi fi for ac_site_file in $CONFIG_SITE; do if test -r "$ac_site_file"; then { echo "$as_me:835: loading site script $ac_site_file" >&5 echo "$as_me: loading site script $ac_site_file" >&6;} cat "$ac_site_file" >&5 . "$ac_site_file" fi done if test -r "$cache_file"; then # Some versions of bash will fail to source /dev/null (special # files actually), so we avoid doing that. if test -f "$cache_file"; then { echo "$as_me:846: loading cache $cache_file" >&5 echo "$as_me: loading cache $cache_file" >&6;} case $cache_file in [\\/]* | ?:[\\/]* ) . $cache_file;; *) . ./$cache_file;; esac fi else { echo "$as_me:854: creating cache $cache_file" >&5 echo "$as_me: creating cache $cache_file" >&6;} >$cache_file fi # Check that the precious variables saved in the cache have kept the same # value. ac_cache_corrupted=false for ac_var in `(set) 2>&1 | sed -n 's/^ac_env_\([a-zA-Z_0-9]*\)_set=.*/\1/p'`; do eval ac_old_set=\$ac_cv_env_${ac_var}_set eval ac_new_set=\$ac_env_${ac_var}_set eval ac_old_val="\$ac_cv_env_${ac_var}_value" eval ac_new_val="\$ac_env_${ac_var}_value" case $ac_old_set,$ac_new_set in set,) { echo "$as_me:870: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;} ac_cache_corrupted=: ;; ,set) { echo "$as_me:874: error: \`$ac_var' was not set in the previous run" >&5 echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;} ac_cache_corrupted=: ;; ,);; *) if test "x$ac_old_val" != "x$ac_new_val"; then { echo "$as_me:880: error: \`$ac_var' has changed since the previous run:" >&5 echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;} { echo "$as_me:882: former value: $ac_old_val" >&5 echo "$as_me: former value: $ac_old_val" >&2;} { echo "$as_me:884: current value: $ac_new_val" >&5 echo "$as_me: current value: $ac_new_val" >&2;} ac_cache_corrupted=: fi;; esac # Pass precious variables to config.status. It doesn't matter if # we pass some twice (in addition to the command line arguments). if test "$ac_new_set" = set; then case $ac_new_val in *" "*|*" "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?\"\']*) ac_arg=$ac_var=`echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ac_configure_args="$ac_configure_args '$ac_arg'" ;; *) ac_configure_args="$ac_configure_args $ac_var=$ac_new_val" ;; esac fi done if $ac_cache_corrupted; then { echo "$as_me:903: error: changes in the environment can compromise the build" >&5 echo "$as_me: error: changes in the environment can compromise the build" >&2;} { { echo "$as_me:905: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&5 echo "$as_me: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&2;} { (exit 1); exit 1; }; } fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu case `echo "testing\c"; echo 1,2,3`,`echo -n testing; echo 1,2,3` in *c*,-n*) ECHO_N= ECHO_C=' ' ECHO_T=' ' ;; *c*,* ) ECHO_N=-n ECHO_C= ECHO_T= ;; *) ECHO_N= ECHO_C='\c' ECHO_T= ;; esac echo "#! $SHELL" >conftest.sh echo "exit 0" >>conftest.sh chmod +x conftest.sh if { (echo "$as_me:925: PATH=\".;.\"; conftest.sh") >&5 (PATH=".;."; conftest.sh) 2>&5 ac_status=$? echo "$as_me:928: \$? = $ac_status" >&5 (exit $ac_status); }; then ac_path_separator=';' else ac_path_separator=: fi PATH_SEPARATOR="$ac_path_separator" rm -f conftest.sh ac_aux_dir= for ac_dir in $srcdir $srcdir/.. $srcdir/../..; do if test -f $ac_dir/install-sh; then ac_aux_dir=$ac_dir ac_install_sh="$ac_aux_dir/install-sh -c" break elif test -f $ac_dir/install.sh; then ac_aux_dir=$ac_dir ac_install_sh="$ac_aux_dir/install.sh -c" break elif test -f $ac_dir/shtool; then ac_aux_dir=$ac_dir ac_install_sh="$ac_aux_dir/shtool install -c" break fi done if test -z "$ac_aux_dir"; then { { echo "$as_me:954: error: cannot find install-sh or install.sh in $srcdir $srcdir/.. $srcdir/../.." >&5 echo "$as_me: error: cannot find install-sh or install.sh in $srcdir $srcdir/.. $srcdir/../.." >&2;} { (exit 1); exit 1; }; } fi ac_config_guess="$SHELL $ac_aux_dir/config.guess" ac_config_sub="$SHELL $ac_aux_dir/config.sub" ac_configure="$SHELL $ac_aux_dir/configure" # This should be Cygnus configure. # Find a good install program. We prefer a C program (faster), # so one script is as good as another. But avoid the broken or # incompatible versions: # SysV /etc/install, /usr/sbin/install # SunOS /usr/etc/install # IRIX /sbin/install # AIX /bin/install # AmigaOS /C/install, which installs bootblocks on floppy discs # AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag # AFS /usr/afsws/bin/install, which mishandles nonexistent args # SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" # ./install, which can be erroneously created by make from ./install.sh. echo "$as_me:974: checking for a BSD compatible install" >&5 echo $ECHO_N "checking for a BSD compatible install... $ECHO_C" >&6 if test -z "$INSTALL"; then if test "${ac_cv_path_install+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_save_IFS=$IFS; IFS=$ac_path_separator for ac_dir in $PATH; do IFS=$ac_save_IFS # Account for people who put trailing slashes in PATH elements. case $ac_dir/ in / | ./ | .// | /cC/* \ | /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* \ | /usr/ucb/* ) ;; *) # OSF1 and SCO ODT 3.0 have their own names for install. # Don't use installbsd from OSF since it installs stuff as root # by default. for ac_prog in ginstall scoinst install; do if $as_executable_p "$ac_dir/$ac_prog"; then if test $ac_prog = install && grep dspmsg "$ac_dir/$ac_prog" >/dev/null 2>&1; then # AIX install. It has an incompatible calling convention. : elif test $ac_prog = install && grep pwplus "$ac_dir/$ac_prog" >/dev/null 2>&1; then # program-specific install script used by HP pwplus--don't use. : else ac_cv_path_install="$ac_dir/$ac_prog -c" break 2 fi fi done ;; esac done fi if test "${ac_cv_path_install+set}" = set; then INSTALL=$ac_cv_path_install else # As a last resort, use the slow shell script. We don't cache a # path for INSTALL within a source directory, because that will # break other packages using the cache if that directory is # removed, or if the path is relative. INSTALL=$ac_install_sh fi fi echo "$as_me:1023: result: $INSTALL" >&5 echo "${ECHO_T}$INSTALL" >&6 # Use test -z because SunOS4 sh mishandles braces in ${var-val}. # It thinks the first close brace ends the variable substitution. test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}' test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}' test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' echo "$as_me:1034: checking whether build environment is sane" >&5 echo $ECHO_N "checking whether build environment is sane... $ECHO_C" >&6 # Just in case sleep 1 echo timestamp > conftestfile # Do `set' in a subshell so we don't clobber the current shell's # arguments. Must try -L first in case configure is actually a # symlink; some systems play weird games with the mod time of symlinks # (eg FreeBSD returns the mod time of the symlink's containing # directory). if ( set X `ls -Lt $srcdir/configure conftestfile 2> /dev/null` if test "$*" = "X"; then # -L didn't work. set X `ls -t $srcdir/configure conftestfile` fi if test "$*" != "X $srcdir/configure conftestfile" \ && test "$*" != "X conftestfile $srcdir/configure"; then # If neither matched, then we have a broken ls. This can happen # if, for instance, CONFIG_SHELL is bash and it inherits a # broken ls alias from the environment. This has actually # happened. Such a system could not be considered "sane". { { echo "$as_me:1057: error: ls -t appears to fail. Make sure there is not a broken alias in your environment" >&5 echo "$as_me: error: ls -t appears to fail. Make sure there is not a broken alias in your environment" >&2;} { (exit 1); exit 1; }; } fi test "$2" = conftestfile ) then # Ok. : else { { echo "$as_me:1070: error: newly created file is older than distributed files! Check your system clock" >&5 echo "$as_me: error: newly created file is older than distributed files! Check your system clock" >&2;} { (exit 1); exit 1; }; } fi rm -f conftest* echo "$as_me:1077: result: yes" >&5 echo "${ECHO_T}yes" >&6 test "$program_prefix" != NONE && program_transform_name="s,^,$program_prefix,;$program_transform_name" # Use a double $ so make ignores it. test "$program_suffix" != NONE && program_transform_name="s,\$,$program_suffix,;$program_transform_name" # Double any \ or $. echo might interpret backslashes. # By default was `s,x,x', remove it if useless. cat <<\_ACEOF >conftest.sed s/[\\$]/&&/g;s/;s,x,x,$// _ACEOF program_transform_name=`echo $program_transform_name | sed -f conftest.sed` rm conftest.sed echo "$as_me:1092: checking whether ${MAKE-make} sets \${MAKE}" >&5 echo $ECHO_N "checking whether ${MAKE-make} sets \${MAKE}... $ECHO_C" >&6 set dummy ${MAKE-make}; ac_make=`echo "$2" | sed 'y,./+-,__p_,'` if eval "test \"\${ac_cv_prog_make_${ac_make}_set+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.make <<\EOF all: @echo 'ac_maketemp="${MAKE}"' EOF # GNU make sometimes prints "make[1]: Entering...", which would confuse us. eval `${MAKE-make} -f conftest.make 2>/dev/null | grep temp=` if test -n "$ac_maketemp"; then eval ac_cv_prog_make_${ac_make}_set=yes else eval ac_cv_prog_make_${ac_make}_set=no fi rm -f conftest.make fi if eval "test \"`echo '$ac_cv_prog_make_'${ac_make}_set`\" = yes"; then echo "$as_me:1112: result: yes" >&5 echo "${ECHO_T}yes" >&6 SET_MAKE= else echo "$as_me:1116: result: no" >&5 echo "${ECHO_T}no" >&6 SET_MAKE="MAKE=${MAKE-make}" fi PACKAGE=ax25mail-utils VERSION=0.11 if test "`cd $srcdir && pwd`" != "`pwd`" && test -f $srcdir/config.status; then { { echo "$as_me:1126: error: source directory already configured; run \"make distclean\" there first" >&5 echo "$as_me: error: source directory already configured; run \"make distclean\" there first" >&2;} { (exit 1); exit 1; }; } fi cat >>confdefs.h <>confdefs.h <&5 echo $ECHO_N "checking for working aclocal... $ECHO_C" >&6 # Run test in a subshell; some versions of sh will print an error if # an executable is not found, even if stderr is redirected. # Redirect stdin to placate older versions of autoconf. Sigh. if (aclocal --version) < /dev/null > /dev/null 2>&1; then ACLOCAL=aclocal echo "$as_me:1147: result: found" >&5 echo "${ECHO_T}found" >&6 else ACLOCAL="$missing_dir/missing aclocal" echo "$as_me:1151: result: missing" >&5 echo "${ECHO_T}missing" >&6 fi echo "$as_me:1155: checking for working autoconf" >&5 echo $ECHO_N "checking for working autoconf... $ECHO_C" >&6 # Run test in a subshell; some versions of sh will print an error if # an executable is not found, even if stderr is redirected. # Redirect stdin to placate older versions of autoconf. Sigh. if (autoconf --version) < /dev/null > /dev/null 2>&1; then AUTOCONF=autoconf echo "$as_me:1162: result: found" >&5 echo "${ECHO_T}found" >&6 else AUTOCONF="$missing_dir/missing autoconf" echo "$as_me:1166: result: missing" >&5 echo "${ECHO_T}missing" >&6 fi echo "$as_me:1170: checking for working automake" >&5 echo $ECHO_N "checking for working automake... $ECHO_C" >&6 # Run test in a subshell; some versions of sh will print an error if # an executable is not found, even if stderr is redirected. # Redirect stdin to placate older versions of autoconf. Sigh. if (automake --version) < /dev/null > /dev/null 2>&1; then AUTOMAKE=automake echo "$as_me:1177: result: found" >&5 echo "${ECHO_T}found" >&6 else AUTOMAKE="$missing_dir/missing automake" echo "$as_me:1181: result: missing" >&5 echo "${ECHO_T}missing" >&6 fi echo "$as_me:1185: checking for working autoheader" >&5 echo $ECHO_N "checking for working autoheader... $ECHO_C" >&6 # Run test in a subshell; some versions of sh will print an error if # an executable is not found, even if stderr is redirected. # Redirect stdin to placate older versions of autoconf. Sigh. if (autoheader --version) < /dev/null > /dev/null 2>&1; then AUTOHEADER=autoheader echo "$as_me:1192: result: found" >&5 echo "${ECHO_T}found" >&6 else AUTOHEADER="$missing_dir/missing autoheader" echo "$as_me:1196: result: missing" >&5 echo "${ECHO_T}missing" >&6 fi echo "$as_me:1200: checking for working makeinfo" >&5 echo $ECHO_N "checking for working makeinfo... $ECHO_C" >&6 # Run test in a subshell; some versions of sh will print an error if # an executable is not found, even if stderr is redirected. # Redirect stdin to placate older versions of autoconf. Sigh. if (makeinfo --version) < /dev/null > /dev/null 2>&1; then MAKEINFO=makeinfo echo "$as_me:1207: result: found" >&5 echo "${ECHO_T}found" >&6 else MAKEINFO="$missing_dir/missing makeinfo" echo "$as_me:1211: result: missing" >&5 echo "${ECHO_T}missing" >&6 fi ac_config_headers="$ac_config_headers config.h" ac_config_commands="$ac_config_commands default-1" ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. set dummy ${ac_tool_prefix}gcc; ac_word=$2 echo "$as_me:1227: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_CC+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else ac_save_IFS=$IFS; IFS=$ac_path_separator ac_dummy="$PATH" for ac_dir in $ac_dummy; do IFS=$ac_save_IFS test -z "$ac_dir" && ac_dir=. $as_executable_p "$ac_dir/$ac_word" || continue ac_cv_prog_CC="${ac_tool_prefix}gcc" echo "$as_me:1242: found $ac_dir/$ac_word" >&5 break done fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then echo "$as_me:1250: result: $CC" >&5 echo "${ECHO_T}$CC" >&6 else echo "$as_me:1253: result: no" >&5 echo "${ECHO_T}no" >&6 fi fi if test -z "$ac_cv_prog_CC"; then ac_ct_CC=$CC # Extract the first word of "gcc", so it can be a program name with args. set dummy gcc; ac_word=$2 echo "$as_me:1262: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_ac_ct_CC+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$ac_ct_CC"; then ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. else ac_save_IFS=$IFS; IFS=$ac_path_separator ac_dummy="$PATH" for ac_dir in $ac_dummy; do IFS=$ac_save_IFS test -z "$ac_dir" && ac_dir=. $as_executable_p "$ac_dir/$ac_word" || continue ac_cv_prog_ac_ct_CC="gcc" echo "$as_me:1277: found $ac_dir/$ac_word" >&5 break done fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then echo "$as_me:1285: result: $ac_ct_CC" >&5 echo "${ECHO_T}$ac_ct_CC" >&6 else echo "$as_me:1288: result: no" >&5 echo "${ECHO_T}no" >&6 fi CC=$ac_ct_CC else CC="$ac_cv_prog_CC" fi if test -z "$CC"; then if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. set dummy ${ac_tool_prefix}cc; ac_word=$2 echo "$as_me:1301: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_CC+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else ac_save_IFS=$IFS; IFS=$ac_path_separator ac_dummy="$PATH" for ac_dir in $ac_dummy; do IFS=$ac_save_IFS test -z "$ac_dir" && ac_dir=. $as_executable_p "$ac_dir/$ac_word" || continue ac_cv_prog_CC="${ac_tool_prefix}cc" echo "$as_me:1316: found $ac_dir/$ac_word" >&5 break done fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then echo "$as_me:1324: result: $CC" >&5 echo "${ECHO_T}$CC" >&6 else echo "$as_me:1327: result: no" >&5 echo "${ECHO_T}no" >&6 fi fi if test -z "$ac_cv_prog_CC"; then ac_ct_CC=$CC # Extract the first word of "cc", so it can be a program name with args. set dummy cc; ac_word=$2 echo "$as_me:1336: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_ac_ct_CC+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$ac_ct_CC"; then ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. else ac_save_IFS=$IFS; IFS=$ac_path_separator ac_dummy="$PATH" for ac_dir in $ac_dummy; do IFS=$ac_save_IFS test -z "$ac_dir" && ac_dir=. $as_executable_p "$ac_dir/$ac_word" || continue ac_cv_prog_ac_ct_CC="cc" echo "$as_me:1351: found $ac_dir/$ac_word" >&5 break done fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then echo "$as_me:1359: result: $ac_ct_CC" >&5 echo "${ECHO_T}$ac_ct_CC" >&6 else echo "$as_me:1362: result: no" >&5 echo "${ECHO_T}no" >&6 fi CC=$ac_ct_CC else CC="$ac_cv_prog_CC" fi fi if test -z "$CC"; then # Extract the first word of "cc", so it can be a program name with args. set dummy cc; ac_word=$2 echo "$as_me:1375: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_CC+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else ac_prog_rejected=no ac_save_IFS=$IFS; IFS=$ac_path_separator ac_dummy="$PATH" for ac_dir in $ac_dummy; do IFS=$ac_save_IFS test -z "$ac_dir" && ac_dir=. $as_executable_p "$ac_dir/$ac_word" || continue if test "$ac_dir/$ac_word" = "/usr/ucb/cc"; then ac_prog_rejected=yes continue fi ac_cv_prog_CC="cc" echo "$as_me:1395: found $ac_dir/$ac_word" >&5 break done if test $ac_prog_rejected = yes; then # We found a bogon in the path, so make sure we never use it. set dummy $ac_cv_prog_CC shift if test $# != 0; then # We chose a different compiler from the bogus one. # However, it has the same basename, so the bogon will be chosen # first if we set CC to just the basename; use the full file name. shift set dummy "$ac_dir/$ac_word" ${1+"$@"} shift ac_cv_prog_CC="$@" fi fi fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then echo "$as_me:1417: result: $CC" >&5 echo "${ECHO_T}$CC" >&6 else echo "$as_me:1420: result: no" >&5 echo "${ECHO_T}no" >&6 fi fi if test -z "$CC"; then if test -n "$ac_tool_prefix"; then for ac_prog in cl do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 echo "$as_me:1431: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_CC+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else ac_save_IFS=$IFS; IFS=$ac_path_separator ac_dummy="$PATH" for ac_dir in $ac_dummy; do IFS=$ac_save_IFS test -z "$ac_dir" && ac_dir=. $as_executable_p "$ac_dir/$ac_word" || continue ac_cv_prog_CC="$ac_tool_prefix$ac_prog" echo "$as_me:1446: found $ac_dir/$ac_word" >&5 break done fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then echo "$as_me:1454: result: $CC" >&5 echo "${ECHO_T}$CC" >&6 else echo "$as_me:1457: result: no" >&5 echo "${ECHO_T}no" >&6 fi test -n "$CC" && break done fi if test -z "$CC"; then ac_ct_CC=$CC for ac_prog in cl do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 echo "$as_me:1470: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_ac_ct_CC+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$ac_ct_CC"; then ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. else ac_save_IFS=$IFS; IFS=$ac_path_separator ac_dummy="$PATH" for ac_dir in $ac_dummy; do IFS=$ac_save_IFS test -z "$ac_dir" && ac_dir=. $as_executable_p "$ac_dir/$ac_word" || continue ac_cv_prog_ac_ct_CC="$ac_prog" echo "$as_me:1485: found $ac_dir/$ac_word" >&5 break done fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then echo "$as_me:1493: result: $ac_ct_CC" >&5 echo "${ECHO_T}$ac_ct_CC" >&6 else echo "$as_me:1496: result: no" >&5 echo "${ECHO_T}no" >&6 fi test -n "$ac_ct_CC" && break done CC=$ac_ct_CC fi fi test -z "$CC" && { { echo "$as_me:1508: error: no acceptable cc found in \$PATH" >&5 echo "$as_me: error: no acceptable cc found in \$PATH" >&2;} { (exit 1); exit 1; }; } # Provide some information about the compiler. echo "$as_me:1513:" \ "checking for C compiler version" >&5 ac_compiler=`set X $ac_compile; echo $2` { (eval echo "$as_me:1516: \"$ac_compiler --version &5\"") >&5 (eval $ac_compiler --version &5) 2>&5 ac_status=$? echo "$as_me:1519: \$? = $ac_status" >&5 (exit $ac_status); } { (eval echo "$as_me:1521: \"$ac_compiler -v &5\"") >&5 (eval $ac_compiler -v &5) 2>&5 ac_status=$? echo "$as_me:1524: \$? = $ac_status" >&5 (exit $ac_status); } { (eval echo "$as_me:1526: \"$ac_compiler -V &5\"") >&5 (eval $ac_compiler -V &5) 2>&5 ac_status=$? echo "$as_me:1529: \$? = $ac_status" >&5 (exit $ac_status); } cat >conftest.$ac_ext <<_ACEOF #line 1533 "configure" #include "confdefs.h" int main () { ; return 0; } _ACEOF ac_clean_files_save=$ac_clean_files ac_clean_files="$ac_clean_files a.out a.exe" # Try to create an executable without -o first, disregard a.out. # It will help us diagnose broken compilers, and finding out an intuition # of exeext. echo "$as_me:1549: checking for C compiler default output" >&5 echo $ECHO_N "checking for C compiler default output... $ECHO_C" >&6 ac_link_default=`echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'` if { (eval echo "$as_me:1552: \"$ac_link_default\"") >&5 (eval $ac_link_default) 2>&5 ac_status=$? echo "$as_me:1555: \$? = $ac_status" >&5 (exit $ac_status); }; then # Find the output, starting from the most likely. This scheme is # not robust to junk in `.', hence go to wildcards (a.*) only as a last # resort. for ac_file in `ls a.exe conftest.exe 2>/dev/null; ls a.out conftest 2>/dev/null; ls a.* conftest.* 2>/dev/null`; do case $ac_file in *.$ac_ext | *.o | *.obj | *.xcoff | *.tds | *.d | *.pdb ) ;; a.out ) # We found the default executable, but exeext='' is most # certainly right. break;; *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` # FIXME: I believe we export ac_cv_exeext for Libtool --akim. export ac_cv_exeext break;; * ) break;; esac done else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 { { echo "$as_me:1578: error: C compiler cannot create executables" >&5 echo "$as_me: error: C compiler cannot create executables" >&2;} { (exit 77); exit 77; }; } fi ac_exeext=$ac_cv_exeext echo "$as_me:1584: result: $ac_file" >&5 echo "${ECHO_T}$ac_file" >&6 # Check the compiler produces executables we can run. If not, either # the compiler is broken, or we cross compile. echo "$as_me:1589: checking whether the C compiler works" >&5 echo $ECHO_N "checking whether the C compiler works... $ECHO_C" >&6 # FIXME: These cross compiler hacks should be removed for Autoconf 3.0 # If not cross compiling, check that we can run a simple program. if test "$cross_compiling" != yes; then if { ac_try='./$ac_file' { (eval echo "$as_me:1595: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:1598: \$? = $ac_status" >&5 (exit $ac_status); }; }; then cross_compiling=no else if test "$cross_compiling" = maybe; then cross_compiling=yes else { { echo "$as_me:1605: error: cannot run C compiled programs. If you meant to cross compile, use \`--host'." >&5 echo "$as_me: error: cannot run C compiled programs. If you meant to cross compile, use \`--host'." >&2;} { (exit 1); exit 1; }; } fi fi fi echo "$as_me:1613: result: yes" >&5 echo "${ECHO_T}yes" >&6 rm -f a.out a.exe conftest$ac_cv_exeext ac_clean_files=$ac_clean_files_save # Check the compiler produces executables we can run. If not, either # the compiler is broken, or we cross compile. echo "$as_me:1620: checking whether we are cross compiling" >&5 echo $ECHO_N "checking whether we are cross compiling... $ECHO_C" >&6 echo "$as_me:1622: result: $cross_compiling" >&5 echo "${ECHO_T}$cross_compiling" >&6 echo "$as_me:1625: checking for executable suffix" >&5 echo $ECHO_N "checking for executable suffix... $ECHO_C" >&6 if { (eval echo "$as_me:1627: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? echo "$as_me:1630: \$? = $ac_status" >&5 (exit $ac_status); }; then # If both `conftest.exe' and `conftest' are `present' (well, observable) # catch `conftest.exe'. For instance with Cygwin, `ls conftest' will # work properly (i.e., refer to `conftest.exe'), while it won't with # `rm'. for ac_file in `(ls conftest.exe; ls conftest; ls conftest.*) 2>/dev/null`; do case $ac_file in *.$ac_ext | *.o | *.obj | *.xcoff | *.tds | *.d | *.pdb ) ;; *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` export ac_cv_exeext break;; * ) break;; esac done else { { echo "$as_me:1646: error: cannot compute EXEEXT: cannot compile and link" >&5 echo "$as_me: error: cannot compute EXEEXT: cannot compile and link" >&2;} { (exit 1); exit 1; }; } fi rm -f conftest$ac_cv_exeext echo "$as_me:1652: result: $ac_cv_exeext" >&5 echo "${ECHO_T}$ac_cv_exeext" >&6 rm -f conftest.$ac_ext EXEEXT=$ac_cv_exeext ac_exeext=$EXEEXT echo "$as_me:1658: checking for object suffix" >&5 echo $ECHO_N "checking for object suffix... $ECHO_C" >&6 if test "${ac_cv_objext+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF #line 1664 "configure" #include "confdefs.h" int main () { ; return 0; } _ACEOF rm -f conftest.o conftest.obj if { (eval echo "$as_me:1676: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:1679: \$? = $ac_status" >&5 (exit $ac_status); }; then for ac_file in `(ls conftest.o conftest.obj; ls conftest.*) 2>/dev/null`; do case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb ) ;; *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'` break;; esac done else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 { { echo "$as_me:1691: error: cannot compute OBJEXT: cannot compile" >&5 echo "$as_me: error: cannot compute OBJEXT: cannot compile" >&2;} { (exit 1); exit 1; }; } fi rm -f conftest.$ac_cv_objext conftest.$ac_ext fi echo "$as_me:1698: result: $ac_cv_objext" >&5 echo "${ECHO_T}$ac_cv_objext" >&6 OBJEXT=$ac_cv_objext ac_objext=$OBJEXT echo "$as_me:1702: checking whether we are using the GNU C compiler" >&5 echo $ECHO_N "checking whether we are using the GNU C compiler... $ECHO_C" >&6 if test "${ac_cv_c_compiler_gnu+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF #line 1708 "configure" #include "confdefs.h" int main () { #ifndef __GNUC__ choke me #endif ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:1723: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:1726: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:1729: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:1732: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_compiler_gnu=yes else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 ac_compiler_gnu=no fi rm -f conftest.$ac_objext conftest.$ac_ext ac_cv_c_compiler_gnu=$ac_compiler_gnu fi echo "$as_me:1744: result: $ac_cv_c_compiler_gnu" >&5 echo "${ECHO_T}$ac_cv_c_compiler_gnu" >&6 GCC=`test $ac_compiler_gnu = yes && echo yes` ac_test_CFLAGS=${CFLAGS+set} ac_save_CFLAGS=$CFLAGS CFLAGS="-g" echo "$as_me:1750: checking whether $CC accepts -g" >&5 echo $ECHO_N "checking whether $CC accepts -g... $ECHO_C" >&6 if test "${ac_cv_prog_cc_g+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF #line 1756 "configure" #include "confdefs.h" int main () { ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:1768: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:1771: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:1774: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:1777: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_prog_cc_g=yes else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 ac_cv_prog_cc_g=no fi rm -f conftest.$ac_objext conftest.$ac_ext fi echo "$as_me:1787: result: $ac_cv_prog_cc_g" >&5 echo "${ECHO_T}$ac_cv_prog_cc_g" >&6 if test "$ac_test_CFLAGS" = set; then CFLAGS=$ac_save_CFLAGS elif test $ac_cv_prog_cc_g = yes; then if test "$GCC" = yes; then CFLAGS="-g -O2" else CFLAGS="-g" fi else if test "$GCC" = yes; then CFLAGS="-O2" else CFLAGS= fi fi # Some people use a C++ compiler to compile C. Since we use `exit', # in C++ we need to declare it. In case someone uses the same compiler # for both compiling C and C++ we need to have the C++ compiler decide # the declaration of exit, since it's the most demanding environment. cat >conftest.$ac_ext <<_ACEOF #ifndef __cplusplus choke me #endif _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:1814: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:1817: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:1820: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:1823: \$? = $ac_status" >&5 (exit $ac_status); }; }; then for ac_declaration in \ ''\ '#include ' \ 'extern "C" void std::exit (int) throw (); using std::exit;' \ 'extern "C" void std::exit (int); using std::exit;' \ 'extern "C" void exit (int) throw ();' \ 'extern "C" void exit (int);' \ 'void exit (int);' do cat >conftest.$ac_ext <<_ACEOF #line 1835 "configure" #include "confdefs.h" #include $ac_declaration int main () { exit (42); ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:1848: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:1851: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:1854: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:1857: \$? = $ac_status" >&5 (exit $ac_status); }; }; then : else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 continue fi rm -f conftest.$ac_objext conftest.$ac_ext cat >conftest.$ac_ext <<_ACEOF #line 1867 "configure" #include "confdefs.h" $ac_declaration int main () { exit (42); ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:1879: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:1882: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:1885: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:1888: \$? = $ac_status" >&5 (exit $ac_status); }; }; then break else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 fi rm -f conftest.$ac_objext conftest.$ac_ext done rm -f conftest* if test -n "$ac_declaration"; then echo '#ifdef __cplusplus' >>confdefs.h echo $ac_declaration >>confdefs.h echo '#endif' >>confdefs.h fi else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 fi rm -f conftest.$ac_objext conftest.$ac_ext ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu ac_ext=cc ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu if test -n "$ac_tool_prefix"; then for ac_prog in $CCC g++ c++ gpp aCC CC cxx cc++ cl FCC KCC RCC xlC_r xlC do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 echo "$as_me:1925: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_CXX+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$CXX"; then ac_cv_prog_CXX="$CXX" # Let the user override the test. else ac_save_IFS=$IFS; IFS=$ac_path_separator ac_dummy="$PATH" for ac_dir in $ac_dummy; do IFS=$ac_save_IFS test -z "$ac_dir" && ac_dir=. $as_executable_p "$ac_dir/$ac_word" || continue ac_cv_prog_CXX="$ac_tool_prefix$ac_prog" echo "$as_me:1940: found $ac_dir/$ac_word" >&5 break done fi fi CXX=$ac_cv_prog_CXX if test -n "$CXX"; then echo "$as_me:1948: result: $CXX" >&5 echo "${ECHO_T}$CXX" >&6 else echo "$as_me:1951: result: no" >&5 echo "${ECHO_T}no" >&6 fi test -n "$CXX" && break done fi if test -z "$CXX"; then ac_ct_CXX=$CXX for ac_prog in $CCC g++ c++ gpp aCC CC cxx cc++ cl FCC KCC RCC xlC_r xlC do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 echo "$as_me:1964: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_ac_ct_CXX+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$ac_ct_CXX"; then ac_cv_prog_ac_ct_CXX="$ac_ct_CXX" # Let the user override the test. else ac_save_IFS=$IFS; IFS=$ac_path_separator ac_dummy="$PATH" for ac_dir in $ac_dummy; do IFS=$ac_save_IFS test -z "$ac_dir" && ac_dir=. $as_executable_p "$ac_dir/$ac_word" || continue ac_cv_prog_ac_ct_CXX="$ac_prog" echo "$as_me:1979: found $ac_dir/$ac_word" >&5 break done fi fi ac_ct_CXX=$ac_cv_prog_ac_ct_CXX if test -n "$ac_ct_CXX"; then echo "$as_me:1987: result: $ac_ct_CXX" >&5 echo "${ECHO_T}$ac_ct_CXX" >&6 else echo "$as_me:1990: result: no" >&5 echo "${ECHO_T}no" >&6 fi test -n "$ac_ct_CXX" && break done test -n "$ac_ct_CXX" || ac_ct_CXX="g++" CXX=$ac_ct_CXX fi # Provide some information about the compiler. echo "$as_me:2002:" \ "checking for C++ compiler version" >&5 ac_compiler=`set X $ac_compile; echo $2` { (eval echo "$as_me:2005: \"$ac_compiler --version &5\"") >&5 (eval $ac_compiler --version &5) 2>&5 ac_status=$? echo "$as_me:2008: \$? = $ac_status" >&5 (exit $ac_status); } { (eval echo "$as_me:2010: \"$ac_compiler -v &5\"") >&5 (eval $ac_compiler -v &5) 2>&5 ac_status=$? echo "$as_me:2013: \$? = $ac_status" >&5 (exit $ac_status); } { (eval echo "$as_me:2015: \"$ac_compiler -V &5\"") >&5 (eval $ac_compiler -V &5) 2>&5 ac_status=$? echo "$as_me:2018: \$? = $ac_status" >&5 (exit $ac_status); } echo "$as_me:2021: checking whether we are using the GNU C++ compiler" >&5 echo $ECHO_N "checking whether we are using the GNU C++ compiler... $ECHO_C" >&6 if test "${ac_cv_cxx_compiler_gnu+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF #line 2027 "configure" #include "confdefs.h" int main () { #ifndef __GNUC__ choke me #endif ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:2042: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:2045: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:2048: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:2051: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_compiler_gnu=yes else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 ac_compiler_gnu=no fi rm -f conftest.$ac_objext conftest.$ac_ext ac_cv_cxx_compiler_gnu=$ac_compiler_gnu fi echo "$as_me:2063: result: $ac_cv_cxx_compiler_gnu" >&5 echo "${ECHO_T}$ac_cv_cxx_compiler_gnu" >&6 GXX=`test $ac_compiler_gnu = yes && echo yes` ac_test_CXXFLAGS=${CXXFLAGS+set} ac_save_CXXFLAGS=$CXXFLAGS CXXFLAGS="-g" echo "$as_me:2069: checking whether $CXX accepts -g" >&5 echo $ECHO_N "checking whether $CXX accepts -g... $ECHO_C" >&6 if test "${ac_cv_prog_cxx_g+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF #line 2075 "configure" #include "confdefs.h" int main () { ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:2087: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:2090: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:2093: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:2096: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_prog_cxx_g=yes else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 ac_cv_prog_cxx_g=no fi rm -f conftest.$ac_objext conftest.$ac_ext fi echo "$as_me:2106: result: $ac_cv_prog_cxx_g" >&5 echo "${ECHO_T}$ac_cv_prog_cxx_g" >&6 if test "$ac_test_CXXFLAGS" = set; then CXXFLAGS=$ac_save_CXXFLAGS elif test $ac_cv_prog_cxx_g = yes; then if test "$GXX" = yes; then CXXFLAGS="-g -O2" else CXXFLAGS="-g" fi else if test "$GXX" = yes; then CXXFLAGS="-O2" else CXXFLAGS= fi fi for ac_declaration in \ ''\ '#include ' \ 'extern "C" void std::exit (int) throw (); using std::exit;' \ 'extern "C" void std::exit (int); using std::exit;' \ 'extern "C" void exit (int) throw ();' \ 'extern "C" void exit (int);' \ 'void exit (int);' do cat >conftest.$ac_ext <<_ACEOF #line 2133 "configure" #include "confdefs.h" #include $ac_declaration int main () { exit (42); ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:2146: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:2149: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:2152: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:2155: \$? = $ac_status" >&5 (exit $ac_status); }; }; then : else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 continue fi rm -f conftest.$ac_objext conftest.$ac_ext cat >conftest.$ac_ext <<_ACEOF #line 2165 "configure" #include "confdefs.h" $ac_declaration int main () { exit (42); ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:2177: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:2180: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:2183: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:2186: \$? = $ac_status" >&5 (exit $ac_status); }; }; then break else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 fi rm -f conftest.$ac_objext conftest.$ac_ext done rm -f conftest* if test -n "$ac_declaration"; then echo '#ifdef __cplusplus' >>confdefs.h echo $ac_declaration >>confdefs.h echo '#endif' >>confdefs.h fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu echo "$as_me:2208: checking whether ln -s works" >&5 echo $ECHO_N "checking whether ln -s works... $ECHO_C" >&6 LN_S=$as_ln_s if test "$LN_S" = "ln -s"; then echo "$as_me:2212: result: yes" >&5 echo "${ECHO_T}yes" >&6 else echo "$as_me:2215: result: no, using $LN_S" >&5 echo "${ECHO_T}no, using $LN_S" >&6 fi # Find a good install program. We prefer a C program (faster), # so one script is as good as another. But avoid the broken or # incompatible versions: # SysV /etc/install, /usr/sbin/install # SunOS /usr/etc/install # IRIX /sbin/install # AIX /bin/install # AmigaOS /C/install, which installs bootblocks on floppy discs # AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag # AFS /usr/afsws/bin/install, which mishandles nonexistent args # SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" # ./install, which can be erroneously created by make from ./install.sh. echo "$as_me:2231: checking for a BSD compatible install" >&5 echo $ECHO_N "checking for a BSD compatible install... $ECHO_C" >&6 if test -z "$INSTALL"; then if test "${ac_cv_path_install+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_save_IFS=$IFS; IFS=$ac_path_separator for ac_dir in $PATH; do IFS=$ac_save_IFS # Account for people who put trailing slashes in PATH elements. case $ac_dir/ in / | ./ | .// | /cC/* \ | /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* \ | /usr/ucb/* ) ;; *) # OSF1 and SCO ODT 3.0 have their own names for install. # Don't use installbsd from OSF since it installs stuff as root # by default. for ac_prog in ginstall scoinst install; do if $as_executable_p "$ac_dir/$ac_prog"; then if test $ac_prog = install && grep dspmsg "$ac_dir/$ac_prog" >/dev/null 2>&1; then # AIX install. It has an incompatible calling convention. : elif test $ac_prog = install && grep pwplus "$ac_dir/$ac_prog" >/dev/null 2>&1; then # program-specific install script used by HP pwplus--don't use. : else ac_cv_path_install="$ac_dir/$ac_prog -c" break 2 fi fi done ;; esac done fi if test "${ac_cv_path_install+set}" = set; then INSTALL=$ac_cv_path_install else # As a last resort, use the slow shell script. We don't cache a # path for INSTALL within a source directory, because that will # break other packages using the cache if that directory is # removed, or if the path is relative. INSTALL=$ac_install_sh fi fi echo "$as_me:2280: result: $INSTALL" >&5 echo "${ECHO_T}$INSTALL" >&6 # Use test -z because SunOS4 sh mishandles braces in ${var-val}. # It thinks the first close brace ends the variable substitution. test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}' test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}' test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' ac_ext=cc ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu echo "$as_me:2308: checking how to run the C preprocessor" >&5 echo $ECHO_N "checking how to run the C preprocessor... $ECHO_C" >&6 # On Suns, sometimes $CPP names a directory. if test -n "$CPP" && test -d "$CPP"; then CPP= fi if test -z "$CPP"; then if test "${ac_cv_prog_CPP+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else # Double quotes because CPP needs to be expanded for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp" do ac_preproc_ok=false for ac_c_preproc_warn_flag in '' yes do # Use a header file that comes with gcc, so configuring glibc # with a fresh cross-compiler works. # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. "Syntax error" is here to catch this case. cat >conftest.$ac_ext <<_ACEOF #line 2329 "configure" #include "confdefs.h" #include Syntax error _ACEOF if { (eval echo "$as_me:2334: \"$ac_cpp conftest.$ac_ext\"") >&5 (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ac_status=$? egrep -v '^ *\+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:2340: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null; then if test -s conftest.err; then ac_cpp_err=$ac_c_preproc_warn_flag else ac_cpp_err= fi else ac_cpp_err=yes fi if test -z "$ac_cpp_err"; then : else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 # Broken: fails on valid input. continue fi rm -f conftest.err conftest.$ac_ext # OK, works on sane cases. Now check whether non-existent headers # can be detected and how. cat >conftest.$ac_ext <<_ACEOF #line 2363 "configure" #include "confdefs.h" #include _ACEOF if { (eval echo "$as_me:2367: \"$ac_cpp conftest.$ac_ext\"") >&5 (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ac_status=$? egrep -v '^ *\+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:2373: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null; then if test -s conftest.err; then ac_cpp_err=$ac_c_preproc_warn_flag else ac_cpp_err= fi else ac_cpp_err=yes fi if test -z "$ac_cpp_err"; then # Broken: success on invalid input. continue else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 # Passes both tests. ac_preproc_ok=: break fi rm -f conftest.err conftest.$ac_ext done # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. rm -f conftest.err conftest.$ac_ext if $ac_preproc_ok; then break fi done ac_cv_prog_CPP=$CPP fi CPP=$ac_cv_prog_CPP else ac_cv_prog_CPP=$CPP fi echo "$as_me:2410: result: $CPP" >&5 echo "${ECHO_T}$CPP" >&6 ac_preproc_ok=false for ac_c_preproc_warn_flag in '' yes do # Use a header file that comes with gcc, so configuring glibc # with a fresh cross-compiler works. # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. "Syntax error" is here to catch this case. cat >conftest.$ac_ext <<_ACEOF #line 2420 "configure" #include "confdefs.h" #include Syntax error _ACEOF if { (eval echo "$as_me:2425: \"$ac_cpp conftest.$ac_ext\"") >&5 (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ac_status=$? egrep -v '^ *\+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:2431: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null; then if test -s conftest.err; then ac_cpp_err=$ac_c_preproc_warn_flag else ac_cpp_err= fi else ac_cpp_err=yes fi if test -z "$ac_cpp_err"; then : else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 # Broken: fails on valid input. continue fi rm -f conftest.err conftest.$ac_ext # OK, works on sane cases. Now check whether non-existent headers # can be detected and how. cat >conftest.$ac_ext <<_ACEOF #line 2454 "configure" #include "confdefs.h" #include _ACEOF if { (eval echo "$as_me:2458: \"$ac_cpp conftest.$ac_ext\"") >&5 (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ac_status=$? egrep -v '^ *\+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:2464: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null; then if test -s conftest.err; then ac_cpp_err=$ac_c_preproc_warn_flag else ac_cpp_err= fi else ac_cpp_err=yes fi if test -z "$ac_cpp_err"; then # Broken: success on invalid input. continue else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 # Passes both tests. ac_preproc_ok=: break fi rm -f conftest.err conftest.$ac_ext done # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. rm -f conftest.err conftest.$ac_ext if $ac_preproc_ok; then : else { { echo "$as_me:2492: error: C preprocessor \"$CPP\" fails sanity check" >&5 echo "$as_me: error: C preprocessor \"$CPP\" fails sanity check" >&2;} { (exit 1); exit 1; }; } fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu echo "$as_me:2503: checking for ANSI C header files" >&5 echo $ECHO_N "checking for ANSI C header files... $ECHO_C" >&6 if test "${ac_cv_header_stdc+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF #line 2509 "configure" #include "confdefs.h" #include #include #include #include _ACEOF if { (eval echo "$as_me:2517: \"$ac_cpp conftest.$ac_ext\"") >&5 (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ac_status=$? egrep -v '^ *\+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:2523: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null; then if test -s conftest.err; then ac_cpp_err=$ac_c_preproc_warn_flag else ac_cpp_err= fi else ac_cpp_err=yes fi if test -z "$ac_cpp_err"; then ac_cv_header_stdc=yes else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 ac_cv_header_stdc=no fi rm -f conftest.err conftest.$ac_ext if test $ac_cv_header_stdc = yes; then # SunOS 4.x string.h does not declare mem*, contrary to ANSI. cat >conftest.$ac_ext <<_ACEOF #line 2545 "configure" #include "confdefs.h" #include _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | egrep "memchr" >/dev/null 2>&1; then : else ac_cv_header_stdc=no fi rm -f conftest* fi if test $ac_cv_header_stdc = yes; then # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. cat >conftest.$ac_ext <<_ACEOF #line 2563 "configure" #include "confdefs.h" #include _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | egrep "free" >/dev/null 2>&1; then : else ac_cv_header_stdc=no fi rm -f conftest* fi if test $ac_cv_header_stdc = yes; then # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi. if test "$cross_compiling" = yes; then : else cat >conftest.$ac_ext <<_ACEOF #line 2584 "configure" #include "confdefs.h" #include #if ((' ' & 0x0FF) == 0x020) # define ISLOWER(c) ('a' <= (c) && (c) <= 'z') # define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) #else # define ISLOWER(c) (('a' <= (c) && (c) <= 'i') \ || ('j' <= (c) && (c) <= 'r') \ || ('s' <= (c) && (c) <= 'z')) # define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c)) #endif #define XOR(e, f) (((e) && !(f)) || (!(e) && (f))) int main () { int i; for (i = 0; i < 256; i++) if (XOR (islower (i), ISLOWER (i)) || toupper (i) != TOUPPER (i)) exit(2); exit (0); } _ACEOF rm -f conftest$ac_exeext if { (eval echo "$as_me:2610: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? echo "$as_me:2613: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='./conftest$ac_exeext' { (eval echo "$as_me:2615: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:2618: \$? = $ac_status" >&5 (exit $ac_status); }; }; then : else echo "$as_me: program exited with status $ac_status" >&5 echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 ac_cv_header_stdc=no fi rm -f core core.* *.core conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext fi fi fi echo "$as_me:2631: result: $ac_cv_header_stdc" >&5 echo "${ECHO_T}$ac_cv_header_stdc" >&6 if test $ac_cv_header_stdc = yes; then cat >>confdefs.h <<\EOF #define STDC_HEADERS 1 EOF fi echo "$as_me:2641: checking for netax25/axlib.h" >&5 echo $ECHO_N "checking for netax25/axlib.h... $ECHO_C" >&6 if test "${ac_cv_header_netax25_axlib_h+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF #line 2647 "configure" #include "confdefs.h" #include _ACEOF if { (eval echo "$as_me:2651: \"$ac_cpp conftest.$ac_ext\"") >&5 (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ac_status=$? egrep -v '^ *\+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:2657: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null; then if test -s conftest.err; then ac_cpp_err=$ac_c_preproc_warn_flag else ac_cpp_err= fi else ac_cpp_err=yes fi if test -z "$ac_cpp_err"; then ac_cv_header_netax25_axlib_h=yes else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 ac_cv_header_netax25_axlib_h=no fi rm -f conftest.err conftest.$ac_ext fi echo "$as_me:2676: result: $ac_cv_header_netax25_axlib_h" >&5 echo "${ECHO_T}$ac_cv_header_netax25_axlib_h" >&6 if test $ac_cv_header_netax25_axlib_h = yes; then cat >>confdefs.h <<\EOF #define NEW_AXLIB 1 EOF echo "$as_me:2683: checking for AX.25 version" >&5 echo $ECHO_N "checking for AX.25 version... $ECHO_C" >&6 cat >conftest.$ac_ext <<_ACEOF #line 2686 "configure" #include "confdefs.h" #include int main () { #ifndef NEW_AX25_STACK #error #endif ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:2700: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:2703: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:2706: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:2709: \$? = $ac_status" >&5 (exit $ac_status); }; }; then echo "$as_me:2711: result: new implementation" >&5 echo "${ECHO_T}new implementation" >&6 cat >>confdefs.h <<\EOF #define NEW_AX25 1 EOF else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 echo "$as_me:2720: result: old implementation" >&5 echo "${ECHO_T}old implementation" >&6 fi rm -f conftest.$ac_objext conftest.$ac_ext else echo "$as_me:2725: checking for ax25/axutils.h" >&5 echo $ECHO_N "checking for ax25/axutils.h... $ECHO_C" >&6 if test "${ac_cv_header_ax25_axutils_h+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF #line 2731 "configure" #include "confdefs.h" #include _ACEOF if { (eval echo "$as_me:2735: \"$ac_cpp conftest.$ac_ext\"") >&5 (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ac_status=$? egrep -v '^ *\+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:2741: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null; then if test -s conftest.err; then ac_cpp_err=$ac_c_preproc_warn_flag else ac_cpp_err= fi else ac_cpp_err=yes fi if test -z "$ac_cpp_err"; then ac_cv_header_ax25_axutils_h=yes else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 ac_cv_header_ax25_axutils_h=no fi rm -f conftest.err conftest.$ac_ext fi echo "$as_me:2760: result: $ac_cv_header_ax25_axutils_h" >&5 echo "${ECHO_T}$ac_cv_header_ax25_axutils_h" >&6 if test $ac_cv_header_ax25_axutils_h = yes; then : else { { echo "$as_me:2765: error: No libax25 headers found!" >&5 echo "$as_me: error: No libax25 headers found!" >&2;} { (exit 1); exit 1; }; } fi fi # Extract the first word of "perl", so it can be a program name with args. set dummy perl; ac_word=$2 echo "$as_me:2774: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_path_PERL+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else case $PERL in [\\/]* | ?:[\\/]*) ac_cv_path_PERL="$PERL" # Let the user override the test with a path. ;; *) ac_save_IFS=$IFS; IFS=$ac_path_separator ac_dummy="$PATH" for ac_dir in $ac_dummy; do IFS=$ac_save_IFS test -z "$ac_dir" && ac_dir=. if $as_executable_p "$ac_dir/$ac_word"; then ac_cv_path_PERL="$ac_dir/$ac_word" echo "$as_me:2791: found $ac_dir/$ac_word" >&5 break fi done test -z "$ac_cv_path_PERL" && ac_cv_path_PERL=""none"" ;; esac fi PERL=$ac_cv_path_PERL if test -n "$PERL"; then echo "$as_me:2803: result: $PERL" >&5 echo "${ECHO_T}$PERL" >&6 else echo "$as_me:2806: result: no" >&5 echo "${ECHO_T}no" >&6 fi if test $PERL = "none" then echo "-------------------------------------------------------------------" echo " WARNING: Cannot found 'perl' installed. Some tools won't work !!!" echo "-------------------------------------------------------------------" set PERL="/usr/bin/perl" fi ac_config_files="$ac_config_files Makefile ulistd/Makefile agent/Makefile axgetlist/Makefile axgetmail/Makefile axgetmail/msgcleanup routes/Makefile conf/Makefile man1/Makefile man8/Makefile" cat >confcache <<\_ACEOF # This file is a shell script that caches the results of configure # tests run on this system so they can be shared between configure # scripts and configure runs, see configure's option --config-cache. # It is not useful on other systems. If it contains results you don't # want to keep, you may remove or edit it. # # config.status only pays attention to the cache file if you give it # the --recheck option to rerun configure. # # `ac_cv_env_foo' variables (set or unset) will be overriden when # loading this file, other *unset* `ac_cv_foo' will be assigned the # following values. _ACEOF # The following way of writing the cache mishandles newlines in values, # but we know of no workaround that is simple, portable, and efficient. # So, don't put newlines in cache variables' values. # Ultrix sh set writes to stderr and can't be redirected directly, # and sets the high bit in the cache file unless we assign to the vars. { (set) 2>&1 | case `(ac_space=' '; set | grep ac_space) 2>&1` in *ac_space=\ *) # `set' does not quote correctly, so add quotes (double-quote # substitution turns \\\\ into \\, and sed turns \\ into \). sed -n \ "s/'/'\\\\''/g; s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" ;; *) # `set' quotes correctly as required by POSIX, so do not add quotes. sed -n \ "s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p" ;; esac; } | sed ' t clear : clear s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/ t end /^ac_cv_env/!s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ : end' >>confcache if cmp -s $cache_file confcache; then :; else if test -w $cache_file; then test "x$cache_file" != "x/dev/null" && echo "updating cache $cache_file" cat confcache >$cache_file else echo "not updating unwritable cache $cache_file" fi fi rm -f confcache test "x$prefix" = xNONE && prefix=$ac_default_prefix # Let make expand exec_prefix. test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' # VPATH may cause trouble with some makes, so we remove $(srcdir), # ${srcdir} and @srcdir@ from VPATH if srcdir is ".", strip leading and # trailing colons and then remove the whole line if VPATH becomes empty # (actually we leave an empty line to preserve line numbers). if test "x$srcdir" = x.; then ac_vpsub='/^[ ]*VPATH[ ]*=/{ s/:*\$(srcdir):*/:/; s/:*\${srcdir}:*/:/; s/:*@srcdir@:*/:/; s/^\([^=]*=[ ]*\):*/\1/; s/:*$//; s/^[^=]*=[ ]*$//; }' fi DEFS=-DHAVE_CONFIG_H : ${CONFIG_STATUS=./config.status} ac_clean_files_save=$ac_clean_files ac_clean_files="$ac_clean_files $CONFIG_STATUS" { echo "$as_me:2898: creating $CONFIG_STATUS" >&5 echo "$as_me: creating $CONFIG_STATUS" >&6;} cat >$CONFIG_STATUS <<_ACEOF #! $SHELL # Generated automatically by configure. # Run this file to recreate the current configuration. # Compiler output produced by configure, useful for debugging # configure, is in config.log if it exists. debug=false SHELL=\${CONFIG_SHELL-$SHELL} ac_cs_invocation="\$0 \$@" _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF # Be Bourne compatible if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then emulate sh NULLCMD=: elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then set -o posix fi # Name of the executable. as_me=`echo "$0" |sed 's,.*[\\/],,'` if expr a : '\(a\)' >/dev/null 2>&1; then as_expr=expr else as_expr=false fi rm -f conf$$ conf$$.exe conf$$.file echo >conf$$.file if ln -s conf$$.file conf$$ 2>/dev/null; then # We could just check for DJGPP; but this test a) works b) is more generic # and c) will remain valid once DJGPP supports symlinks (DJGPP 2.04). if test -f conf$$.exe; then # Don't use ln at all; we don't have any links as_ln_s='cp -p' else as_ln_s='ln -s' fi elif ln conf$$.file conf$$ 2>/dev/null; then as_ln_s=ln else as_ln_s='cp -p' fi rm -f conf$$ conf$$.exe conf$$.file as_executable_p="test -f" # Support unset when possible. if (FOO=FOO; unset FOO) >/dev/null 2>&1; then as_unset=unset else as_unset=false fi # NLS nuisances. $as_unset LANG || test "${LANG+set}" != set || { LANG=C; export LANG; } $as_unset LC_ALL || test "${LC_ALL+set}" != set || { LC_ALL=C; export LC_ALL; } $as_unset LC_TIME || test "${LC_TIME+set}" != set || { LC_TIME=C; export LC_TIME; } $as_unset LC_CTYPE || test "${LC_CTYPE+set}" != set || { LC_CTYPE=C; export LC_CTYPE; } $as_unset LANGUAGE || test "${LANGUAGE+set}" != set || { LANGUAGE=C; export LANGUAGE; } $as_unset LC_COLLATE || test "${LC_COLLATE+set}" != set || { LC_COLLATE=C; export LC_COLLATE; } $as_unset LC_NUMERIC || test "${LC_NUMERIC+set}" != set || { LC_NUMERIC=C; export LC_NUMERIC; } $as_unset LC_MESSAGES || test "${LC_MESSAGES+set}" != set || { LC_MESSAGES=C; export LC_MESSAGES; } # IFS # We need space, tab and new line, in precisely that order. as_nl=' ' IFS=" $as_nl" # CDPATH. $as_unset CDPATH || test "${CDPATH+set}" != set || { CDPATH=:; export CDPATH; } exec 6>&1 _ACEOF # Files that config.status was made for. if test -n "$ac_config_files"; then echo "config_files=\"$ac_config_files\"" >>$CONFIG_STATUS fi if test -n "$ac_config_headers"; then echo "config_headers=\"$ac_config_headers\"" >>$CONFIG_STATUS fi if test -n "$ac_config_links"; then echo "config_links=\"$ac_config_links\"" >>$CONFIG_STATUS fi if test -n "$ac_config_commands"; then echo "config_commands=\"$ac_config_commands\"" >>$CONFIG_STATUS fi cat >>$CONFIG_STATUS <<\EOF ac_cs_usage="\ \`$as_me' instantiates files from templates according to the current configuration. Usage: $0 [OPTIONS] [FILE]... -h, --help print this help, then exit -V, --version print version number, then exit -d, --debug don't remove temporary files --recheck update $as_me by reconfiguring in the same conditions --file=FILE[:TEMPLATE] instantiate the configuration file FILE --header=FILE[:TEMPLATE] instantiate the configuration header FILE Configuration files: $config_files Configuration headers: $config_headers Configuration commands: $config_commands Report bugs to ." EOF cat >>$CONFIG_STATUS <>$CONFIG_STATUS <<\EOF # If no file are specified by the user, then we need to provide default # value. By we need to know if files were specified by the user. ac_need_defaults=: while test $# != 0 do case $1 in --*=*) ac_option=`expr "x$1" : 'x\([^=]*\)='` ac_optarg=`expr "x$1" : 'x[^=]*=\(.*\)'` shift set dummy "$ac_option" "$ac_optarg" ${1+"$@"} shift ;; -*);; *) # This is not an option, so the user has probably given explicit # arguments. ac_need_defaults=false;; esac case $1 in # Handling of the options. EOF cat >>$CONFIG_STATUS <>$CONFIG_STATUS <<\EOF --version | --vers* | -V ) echo "$ac_cs_version"; exit 0 ;; --he | --h) # Conflict between --help and --header { { echo "$as_me:3074: error: ambiguous option: $1 Try \`$0 --help' for more information." >&5 echo "$as_me: error: ambiguous option: $1 Try \`$0 --help' for more information." >&2;} { (exit 1); exit 1; }; };; --help | --hel | -h ) echo "$ac_cs_usage"; exit 0 ;; --debug | --d* | -d ) debug=: ;; --file | --fil | --fi | --f ) shift CONFIG_FILES="$CONFIG_FILES $1" ac_need_defaults=false;; --header | --heade | --head | --hea ) shift CONFIG_HEADERS="$CONFIG_HEADERS $1" ac_need_defaults=false;; # This is an error. -*) { { echo "$as_me:3093: error: unrecognized option: $1 Try \`$0 --help' for more information." >&5 echo "$as_me: error: unrecognized option: $1 Try \`$0 --help' for more information." >&2;} { (exit 1); exit 1; }; } ;; *) ac_config_targets="$ac_config_targets $1" ;; esac shift done exec 5>>config.log cat >&5 << _ACEOF ## ----------------------- ## ## Running config.status. ## ## ----------------------- ## This file was extended by $as_me 2.52, executed with CONFIG_FILES = $CONFIG_FILES CONFIG_HEADERS = $CONFIG_HEADERS CONFIG_LINKS = $CONFIG_LINKS CONFIG_COMMANDS = $CONFIG_COMMANDS > $ac_cs_invocation on `(hostname || uname -n) 2>/dev/null | sed 1q` _ACEOF EOF cat >>$CONFIG_STATUS <>$CONFIG_STATUS <<\EOF for ac_config_target in $ac_config_targets do case "$ac_config_target" in # Handling of arguments. "Makefile" ) CONFIG_FILES="$CONFIG_FILES Makefile" ;; "ulistd/Makefile" ) CONFIG_FILES="$CONFIG_FILES ulistd/Makefile" ;; "agent/Makefile" ) CONFIG_FILES="$CONFIG_FILES agent/Makefile" ;; "axgetlist/Makefile" ) CONFIG_FILES="$CONFIG_FILES axgetlist/Makefile" ;; "axgetmail/Makefile" ) CONFIG_FILES="$CONFIG_FILES axgetmail/Makefile" ;; "axgetmail/msgcleanup" ) CONFIG_FILES="$CONFIG_FILES axgetmail/msgcleanup" ;; "routes/Makefile" ) CONFIG_FILES="$CONFIG_FILES routes/Makefile" ;; "conf/Makefile" ) CONFIG_FILES="$CONFIG_FILES conf/Makefile" ;; "man1/Makefile" ) CONFIG_FILES="$CONFIG_FILES man1/Makefile" ;; "man8/Makefile" ) CONFIG_FILES="$CONFIG_FILES man8/Makefile" ;; "default-1" ) CONFIG_COMMANDS="$CONFIG_COMMANDS default-1" ;; "config.h" ) CONFIG_HEADERS="$CONFIG_HEADERS config.h" ;; *) { { echo "$as_me:3147: error: invalid argument: $ac_config_target" >&5 echo "$as_me: error: invalid argument: $ac_config_target" >&2;} { (exit 1); exit 1; }; };; esac done # If the user did not use the arguments to specify the items to instantiate, # then the envvar interface is used. Set only those that are not. # We use the long form for the default assignment because of an extremely # bizarre bug on SunOS 4.1.3. if $ac_need_defaults; then test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files test "${CONFIG_HEADERS+set}" = set || CONFIG_HEADERS=$config_headers test "${CONFIG_COMMANDS+set}" = set || CONFIG_COMMANDS=$config_commands fi # Create a temporary directory, and hook for its removal unless debugging. $debug || { trap 'exit_status=$?; rm -rf $tmp && exit $exit_status' 0 trap '{ (exit 1); exit 1; }' 1 2 13 15 } # Create a (secure) tmp directory for tmp files. : ${TMPDIR=/tmp} { tmp=`(umask 077 && mktemp -d -q "$TMPDIR/csXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" } || { tmp=$TMPDIR/cs$$-$RANDOM (umask 077 && mkdir $tmp) } || { echo "$me: cannot create a temporary directory in $TMPDIR" >&2 { (exit 1); exit 1; } } EOF cat >>$CONFIG_STATUS <\$tmp/subs.sed <<\\CEOF s,@SHELL@,$SHELL,;t t s,@exec_prefix@,$exec_prefix,;t t s,@prefix@,$prefix,;t t s,@program_transform_name@,$program_transform_name,;t t s,@bindir@,$bindir,;t t s,@sbindir@,$sbindir,;t t s,@libexecdir@,$libexecdir,;t t s,@datadir@,$datadir,;t t s,@sysconfdir@,$sysconfdir,;t t s,@sharedstatedir@,$sharedstatedir,;t t s,@localstatedir@,$localstatedir,;t t s,@libdir@,$libdir,;t t s,@includedir@,$includedir,;t t s,@oldincludedir@,$oldincludedir,;t t s,@infodir@,$infodir,;t t s,@mandir@,$mandir,;t t s,@PACKAGE_NAME@,$PACKAGE_NAME,;t t s,@PACKAGE_TARNAME@,$PACKAGE_TARNAME,;t t s,@PACKAGE_VERSION@,$PACKAGE_VERSION,;t t s,@PACKAGE_STRING@,$PACKAGE_STRING,;t t s,@PACKAGE_BUGREPORT@,$PACKAGE_BUGREPORT,;t t s,@build_alias@,$build_alias,;t t s,@host_alias@,$host_alias,;t t s,@target_alias@,$target_alias,;t t s,@ECHO_C@,$ECHO_C,;t t s,@ECHO_N@,$ECHO_N,;t t s,@ECHO_T@,$ECHO_T,;t t s,@PATH_SEPARATOR@,$PATH_SEPARATOR,;t t s,@DEFS@,$DEFS,;t t s,@LIBS@,$LIBS,;t t s,@INSTALL_PROGRAM@,$INSTALL_PROGRAM,;t t s,@INSTALL_SCRIPT@,$INSTALL_SCRIPT,;t t s,@INSTALL_DATA@,$INSTALL_DATA,;t t s,@PACKAGE@,$PACKAGE,;t t s,@VERSION@,$VERSION,;t t s,@ACLOCAL@,$ACLOCAL,;t t s,@AUTOCONF@,$AUTOCONF,;t t s,@AUTOMAKE@,$AUTOMAKE,;t t s,@AUTOHEADER@,$AUTOHEADER,;t t s,@MAKEINFO@,$MAKEINFO,;t t s,@SET_MAKE@,$SET_MAKE,;t t s,@CC@,$CC,;t t s,@CFLAGS@,$CFLAGS,;t t s,@LDFLAGS@,$LDFLAGS,;t t s,@CPPFLAGS@,$CPPFLAGS,;t t s,@ac_ct_CC@,$ac_ct_CC,;t t s,@EXEEXT@,$EXEEXT,;t t s,@OBJEXT@,$OBJEXT,;t t s,@CXX@,$CXX,;t t s,@CXXFLAGS@,$CXXFLAGS,;t t s,@ac_ct_CXX@,$ac_ct_CXX,;t t s,@LN_S@,$LN_S,;t t s,@CPP@,$CPP,;t t s,@PERL@,$PERL,;t t CEOF EOF cat >>$CONFIG_STATUS <<\EOF # Split the substitutions into bite-sized pieces for seds with # small command number limits, like on Digital OSF/1 and HP-UX. ac_max_sed_lines=48 ac_sed_frag=1 # Number of current file. ac_beg=1 # First line for current file. ac_end=$ac_max_sed_lines # Line after last line for current file. ac_more_lines=: ac_sed_cmds= while $ac_more_lines; do if test $ac_beg -gt 1; then sed "1,${ac_beg}d; ${ac_end}q" $tmp/subs.sed >$tmp/subs.frag else sed "${ac_end}q" $tmp/subs.sed >$tmp/subs.frag fi if test ! -s $tmp/subs.frag; then ac_more_lines=false else # The purpose of the label and of the branching condition is to # speed up the sed processing (if there are no `@' at all, there # is no need to browse any of the substitutions). # These are the two extra sed commands mentioned above. (echo ':t /@[a-zA-Z_][a-zA-Z_0-9]*@/!b' && cat $tmp/subs.frag) >$tmp/subs-$ac_sed_frag.sed if test -z "$ac_sed_cmds"; then ac_sed_cmds="sed -f $tmp/subs-$ac_sed_frag.sed" else ac_sed_cmds="$ac_sed_cmds | sed -f $tmp/subs-$ac_sed_frag.sed" fi ac_sed_frag=`expr $ac_sed_frag + 1` ac_beg=$ac_end ac_end=`expr $ac_end + $ac_max_sed_lines` fi done if test -z "$ac_sed_cmds"; then ac_sed_cmds=cat fi fi # test -n "$CONFIG_FILES" EOF cat >>$CONFIG_STATUS <<\EOF for ac_file in : $CONFIG_FILES; do test "x$ac_file" = x: && continue # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in". case $ac_file in - | *:- | *:-:* ) # input from stdin cat >$tmp/stdin ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; *:* ) ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; * ) ac_file_in=$ac_file.in ;; esac # Compute @srcdir@, @top_srcdir@, and @INSTALL@ for subdirectories. ac_dir=`$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$ac_file" : 'X\(//\)[^/]' \| \ X"$ac_file" : 'X\(//\)$' \| \ X"$ac_file" : 'X\(/\)' \| \ . : '\(.\)' 2>/dev/null || echo X"$ac_file" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } /^X\(\/\/\)[^/].*/{ s//\1/; q; } /^X\(\/\/\)$/{ s//\1/; q; } /^X\(\/\).*/{ s//\1/; q; } s/.*/./; q'` if test "$ac_dir" != "$ac_file" && test "$ac_dir" != .; then { case "$ac_dir" in [\\/]* | ?:[\\/]* ) as_incr_dir=;; *) as_incr_dir=.;; esac as_dummy="$ac_dir" for as_mkdir_dir in `IFS='/\\'; set X $as_dummy; shift; echo "$@"`; do case $as_mkdir_dir in # Skip DOS drivespec ?:) as_incr_dir=$as_mkdir_dir ;; *) as_incr_dir=$as_incr_dir/$as_mkdir_dir test -d "$as_incr_dir" || mkdir "$as_incr_dir" ;; esac done; } ac_dir_suffix="/`echo $ac_dir|sed 's,^\./,,'`" # A "../" for each directory in $ac_dir_suffix. ac_dots=`echo "$ac_dir_suffix" | sed 's,/[^/]*,../,g'` else ac_dir_suffix= ac_dots= fi case $srcdir in .) ac_srcdir=. if test -z "$ac_dots"; then ac_top_srcdir=. else ac_top_srcdir=`echo $ac_dots | sed 's,/$,,'` fi ;; [\\/]* | ?:[\\/]* ) ac_srcdir=$srcdir$ac_dir_suffix; ac_top_srcdir=$srcdir ;; *) # Relative path. ac_srcdir=$ac_dots$srcdir$ac_dir_suffix ac_top_srcdir=$ac_dots$srcdir ;; esac case $INSTALL in [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;; *) ac_INSTALL=$ac_dots$INSTALL ;; esac if test x"$ac_file" != x-; then { echo "$as_me:3367: creating $ac_file" >&5 echo "$as_me: creating $ac_file" >&6;} rm -f "$ac_file" fi # Let's still pretend it is `configure' which instantiates (i.e., don't # use $as_me), people would be surprised to read: # /* config.h. Generated automatically by config.status. */ configure_input="Generated automatically from `echo $ac_file_in | sed 's,.*/,,'` by configure." # First look for the input files in the build tree, otherwise in the # src tree. ac_file_inputs=`IFS=: for f in $ac_file_in; do case $f in -) echo $tmp/stdin ;; [\\/$]*) # Absolute (can't be DOS-style, as IFS=:) test -f "$f" || { { echo "$as_me:3385: error: cannot find input file: $f" >&5 echo "$as_me: error: cannot find input file: $f" >&2;} { (exit 1); exit 1; }; } echo $f;; *) # Relative if test -f "$f"; then # Build tree echo $f elif test -f "$srcdir/$f"; then # Source tree echo $srcdir/$f else # /dev/null tree { { echo "$as_me:3398: error: cannot find input file: $f" >&5 echo "$as_me: error: cannot find input file: $f" >&2;} { (exit 1); exit 1; }; } fi;; esac done` || { (exit 1); exit 1; } EOF cat >>$CONFIG_STATUS <>$CONFIG_STATUS <<\EOF :t /@[a-zA-Z_][a-zA-Z_0-9]*@/!b s,@configure_input@,$configure_input,;t t s,@srcdir@,$ac_srcdir,;t t s,@top_srcdir@,$ac_top_srcdir,;t t s,@INSTALL@,$ac_INSTALL,;t t " $ac_file_inputs | (eval "$ac_sed_cmds") >$tmp/out rm -f $tmp/stdin if test x"$ac_file" != x-; then mv $tmp/out $ac_file else cat $tmp/out rm -f $tmp/out fi done EOF cat >>$CONFIG_STATUS <<\EOF # # CONFIG_HEADER section. # # These sed commands are passed to sed as "A NAME B NAME C VALUE D", where # NAME is the cpp macro being defined and VALUE is the value it is being given. # # ac_d sets the value in "#define NAME VALUE" lines. ac_dA='s,^\([ ]*\)#\([ ]*define[ ][ ]*\)' ac_dB='[ ].*$,\1#\2' ac_dC=' ' ac_dD=',;t' # ac_u turns "#undef NAME" without trailing blanks into "#define NAME VALUE". ac_uA='s,^\([ ]*\)#\([ ]*\)undef\([ ][ ]*\)' ac_uB='$,\1#\2define\3' ac_uC=' ' ac_uD=',;t' for ac_file in : $CONFIG_HEADERS; do test "x$ac_file" = x: && continue # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in". case $ac_file in - | *:- | *:-:* ) # input from stdin cat >$tmp/stdin ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; *:* ) ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; * ) ac_file_in=$ac_file.in ;; esac test x"$ac_file" != x- && { echo "$as_me:3459: creating $ac_file" >&5 echo "$as_me: creating $ac_file" >&6;} # First look for the input files in the build tree, otherwise in the # src tree. ac_file_inputs=`IFS=: for f in $ac_file_in; do case $f in -) echo $tmp/stdin ;; [\\/$]*) # Absolute (can't be DOS-style, as IFS=:) test -f "$f" || { { echo "$as_me:3470: error: cannot find input file: $f" >&5 echo "$as_me: error: cannot find input file: $f" >&2;} { (exit 1); exit 1; }; } echo $f;; *) # Relative if test -f "$f"; then # Build tree echo $f elif test -f "$srcdir/$f"; then # Source tree echo $srcdir/$f else # /dev/null tree { { echo "$as_me:3483: error: cannot find input file: $f" >&5 echo "$as_me: error: cannot find input file: $f" >&2;} { (exit 1); exit 1; }; } fi;; esac done` || { (exit 1); exit 1; } # Remove the trailing spaces. sed 's/[ ]*$//' $ac_file_inputs >$tmp/in EOF # Transform confdefs.h into two sed scripts, `conftest.defines' and # `conftest.undefs', that substitutes the proper values into # config.h.in to produce config.h. The first handles `#define' # templates, and the second `#undef' templates. # And first: Protect against being on the right side of a sed subst in # config.status. Protect against being in an unquoted here document # in config.status. rm -f conftest.defines conftest.undefs # Using a here document instead of a string reduces the quoting nightmare. # Putting comments in sed scripts is not portable. # # `end' is used to avoid that the second main sed command (meant for # 0-ary CPP macros) applies to n-ary macro definitions. # See the Autoconf documentation for `clear'. cat >confdef2sed.sed <<\EOF s/[\\&,]/\\&/g s,[\\$`],\\&,g t clear : clear s,^[ ]*#[ ]*define[ ][ ]*\(\([^ (][^ (]*\)([^)]*)\)[ ]*\(.*\)$,${ac_dA}\2${ac_dB}\1${ac_dC}\3${ac_dD},gp t end s,^[ ]*#[ ]*define[ ][ ]*\([^ ][^ ]*\)[ ]*\(.*\)$,${ac_dA}\1${ac_dB}\1${ac_dC}\2${ac_dD},gp : end EOF # If some macros were called several times there might be several times # the same #defines, which is useless. Nevertheless, we may not want to # sort them, since we want the *last* AC-DEFINE to be honored. uniq confdefs.h | sed -n -f confdef2sed.sed >conftest.defines sed 's/ac_d/ac_u/g' conftest.defines >conftest.undefs rm -f confdef2sed.sed # This sed command replaces #undef with comments. This is necessary, for # example, in the case of _POSIX_SOURCE, which is predefined and required # on some systems where configure will not decide to define it. cat >>conftest.undefs <<\EOF s,^[ ]*#[ ]*undef[ ][ ]*[a-zA-Z_][a-zA-Z_0-9]*,/* & */, EOF # Break up conftest.defines because some shells have a limit on the size # of here documents, and old seds have small limits too (100 cmds). echo ' # Handle all the #define templates only if necessary.' >>$CONFIG_STATUS echo ' if egrep "^[ ]*#[ ]*define" $tmp/in >/dev/null; then' >>$CONFIG_STATUS echo ' # If there are no defines, we may have an empty if/fi' >>$CONFIG_STATUS echo ' :' >>$CONFIG_STATUS rm -f conftest.tail while grep . conftest.defines >/dev/null do # Write a limited-size here document to $tmp/defines.sed. echo ' cat >$tmp/defines.sed <>$CONFIG_STATUS # Speed up: don't consider the non `#define' lines. echo '/^[ ]*#[ ]*define/!b' >>$CONFIG_STATUS # Work around the forget-to-reset-the-flag bug. echo 't clr' >>$CONFIG_STATUS echo ': clr' >>$CONFIG_STATUS sed ${ac_max_here_lines}q conftest.defines >>$CONFIG_STATUS echo 'CEOF sed -f $tmp/defines.sed $tmp/in >$tmp/out rm -f $tmp/in mv $tmp/out $tmp/in ' >>$CONFIG_STATUS sed 1,${ac_max_here_lines}d conftest.defines >conftest.tail rm -f conftest.defines mv conftest.tail conftest.defines done rm -f conftest.defines echo ' fi # egrep' >>$CONFIG_STATUS echo >>$CONFIG_STATUS # Break up conftest.undefs because some shells have a limit on the size # of here documents, and old seds have small limits too (100 cmds). echo ' # Handle all the #undef templates' >>$CONFIG_STATUS rm -f conftest.tail while grep . conftest.undefs >/dev/null do # Write a limited-size here document to $tmp/undefs.sed. echo ' cat >$tmp/undefs.sed <>$CONFIG_STATUS # Speed up: don't consider the non `#undef' echo '/^[ ]*#[ ]*undef/!b' >>$CONFIG_STATUS # Work around the forget-to-reset-the-flag bug. echo 't clr' >>$CONFIG_STATUS echo ': clr' >>$CONFIG_STATUS sed ${ac_max_here_lines}q conftest.undefs >>$CONFIG_STATUS echo 'CEOF sed -f $tmp/undefs.sed $tmp/in >$tmp/out rm -f $tmp/in mv $tmp/out $tmp/in ' >>$CONFIG_STATUS sed 1,${ac_max_here_lines}d conftest.undefs >conftest.tail rm -f conftest.undefs mv conftest.tail conftest.undefs done rm -f conftest.undefs cat >>$CONFIG_STATUS <<\EOF # Let's still pretend it is `configure' which instantiates (i.e., don't # use $as_me), people would be surprised to read: # /* config.h. Generated automatically by config.status. */ if test x"$ac_file" = x-; then echo "/* Generated automatically by configure. */" >$tmp/config.h else echo "/* $ac_file. Generated automatically by configure. */" >$tmp/config.h fi cat $tmp/in >>$tmp/config.h rm -f $tmp/in if test x"$ac_file" != x-; then if cmp -s $ac_file $tmp/config.h 2>/dev/null; then { echo "$as_me:3600: $ac_file is unchanged" >&5 echo "$as_me: $ac_file is unchanged" >&6;} else ac_dir=`$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$ac_file" : 'X\(//\)[^/]' \| \ X"$ac_file" : 'X\(//\)$' \| \ X"$ac_file" : 'X\(/\)' \| \ . : '\(.\)' 2>/dev/null || echo X"$ac_file" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } /^X\(\/\/\)[^/].*/{ s//\1/; q; } /^X\(\/\/\)$/{ s//\1/; q; } /^X\(\/\).*/{ s//\1/; q; } s/.*/./; q'` if test "$ac_dir" != "$ac_file" && test "$ac_dir" != .; then { case "$ac_dir" in [\\/]* | ?:[\\/]* ) as_incr_dir=;; *) as_incr_dir=.;; esac as_dummy="$ac_dir" for as_mkdir_dir in `IFS='/\\'; set X $as_dummy; shift; echo "$@"`; do case $as_mkdir_dir in # Skip DOS drivespec ?:) as_incr_dir=$as_mkdir_dir ;; *) as_incr_dir=$as_incr_dir/$as_mkdir_dir test -d "$as_incr_dir" || mkdir "$as_incr_dir" ;; esac done; } fi rm -f $ac_file mv $tmp/config.h $ac_file fi else cat $tmp/config.h rm -f $tmp/config.h fi done EOF cat >>$CONFIG_STATUS <<\EOF # # CONFIG_COMMANDS section. # for ac_file in : $CONFIG_COMMANDS; do test "x$ac_file" = x: && continue ac_dest=`echo "$ac_file" | sed 's,:.*,,'` ac_source=`echo "$ac_file" | sed 's,[^:]*:,,'` case $ac_dest in default-1 ) test -z "$CONFIG_HEADERS" || echo timestamp > stamp-h ;; esac done EOF cat >>$CONFIG_STATUS <<\EOF { (exit 0); exit 0; } EOF chmod +x $CONFIG_STATUS ac_clean_files=$ac_clean_files_save # configure is writing to config.log, and then calls config.status. # config.status does its own redirection, appending to config.log. # Unfortunately, on DOS this fails, as config.log is still kept open # by configure, so config.status won't be able to write to it; its # output is simply discarded. So we exec the FD to /dev/null, # effectively closing config.log, so it can be properly (re)opened and # appended to by config.status. When coming back to configure, we # need to make the FD available again. if test "$no_create" != yes; then ac_cs_success=: exec 5>/dev/null $SHELL $CONFIG_STATUS || ac_cs_success=false exec 5>>config.log # Use ||, not &&, to avoid exiting from the if with $? = 1, which # would make configure fail if this is the last instruction. $ac_cs_success || { (exit 1); exit 1; } fi ax25mail-utils-0.11.orig/configure.in0000644000175000017500000000240207422614606017220 0ustar pg4ipg4i00000000000000dnl Process this file with autoconf to produce a configure script. AC_INIT(ulistd/ulistd.c) AM_INIT_AUTOMAKE(ax25mail-utils, 0.11) AM_CONFIG_HEADER(config.h) AC_PREFIX_DEFAULT(/usr) AC_PROG_CC AC_PROG_CXX AC_PROG_LN_S AC_PROG_INSTALL AC_LANG_CPLUSPLUS AC_LANG_C AC_HEADER_STDC AC_CHECK_HEADER(netax25/axlib.h, AC_DEFINE(NEW_AXLIB, 1) AC_MSG_CHECKING(for AX.25 version) AC_TRY_COMPILE([#include ], [#ifndef NEW_AX25_STACK #error #endif], AC_MSG_RESULT(new implementation) AC_DEFINE(NEW_AX25, 1), AC_MSG_RESULT(old implementation)), AC_CHECK_HEADER(ax25/axutils.h, , AC_MSG_ERROR(No libax25 headers found!))) AC_PATH_PROG(PERL, perl, "none") if test $PERL = "none" then echo "-------------------------------------------------------------------" echo " WARNING: Cannot found 'perl' installed. Some tools won't work !!!" echo "-------------------------------------------------------------------" set PERL="/usr/bin/perl" fi AC_SUBST(PERL) AC_OUTPUT(Makefile \ ulistd/Makefile \ agent/Makefile \ axgetlist/Makefile \ axgetmail/Makefile \ axgetmail/msgcleanup \ routes/Makefile \ conf/Makefile \ man1/Makefile \ man8/Makefile) ax25mail-utils-0.11.orig/install-sh0000755000175000017500000001273606711047503016722 0ustar pg4ipg4i00000000000000#!/bin/sh # # install - install a program, script, or datafile # This comes from X11R5 (mit/util/scripts/install.sh). # # Copyright 1991 by the Massachusetts Institute of Technology # # Permission to use, copy, modify, distribute, and sell this software and its # documentation for any purpose is hereby granted without fee, provided that # the above copyright notice appear in all copies and that both that # copyright notice and this permission notice appear in supporting # documentation, and that the name of M.I.T. not be used in advertising or # publicity pertaining to distribution of the software without specific, # written prior permission. M.I.T. makes no representations about the # suitability of this software for any purpose. It is provided "as is" # without express or implied warranty. # # Calling this script install-sh is preferred over install.sh, to prevent # `make' implicit rules from creating a file called install from it # when there is no Makefile. # # This script is compatible with the BSD install script, but was written # from scratch. It can only install one file at a time, a restriction # shared with many OS's install programs. # set DOITPROG to echo to test this script # Don't use :- since 4.3BSD and earlier shells don't like it. doit="${DOITPROG-}" # put in absolute paths if you don't have them in your path; or use env. vars. mvprog="${MVPROG-mv}" cpprog="${CPPROG-cp}" chmodprog="${CHMODPROG-chmod}" chownprog="${CHOWNPROG-chown}" chgrpprog="${CHGRPPROG-chgrp}" stripprog="${STRIPPROG-strip}" rmprog="${RMPROG-rm}" mkdirprog="${MKDIRPROG-mkdir}" transformbasename="" transform_arg="" instcmd="$mvprog" chmodcmd="$chmodprog 0755" chowncmd="" chgrpcmd="" stripcmd="" rmcmd="$rmprog -f" mvcmd="$mvprog" src="" dst="" dir_arg="" while [ x"$1" != x ]; do case $1 in -c) instcmd="$cpprog" shift continue;; -d) dir_arg=true shift continue;; -m) chmodcmd="$chmodprog $2" shift shift continue;; -o) chowncmd="$chownprog $2" shift shift continue;; -g) chgrpcmd="$chgrpprog $2" shift shift continue;; -s) stripcmd="$stripprog" shift continue;; -t=*) transformarg=`echo $1 | sed 's/-t=//'` shift continue;; -b=*) transformbasename=`echo $1 | sed 's/-b=//'` shift continue;; *) if [ x"$src" = x ] then src=$1 else # this colon is to work around a 386BSD /bin/sh bug : dst=$1 fi shift continue;; esac done if [ x"$src" = x ] then echo "install: no input file specified" exit 1 else true fi if [ x"$dir_arg" != x ]; then dst=$src src="" if [ -d $dst ]; then instcmd=: chmodcmd="" else instcmd=mkdir fi else # Waiting for this to be detected by the "$instcmd $src $dsttmp" command # might cause directories to be created, which would be especially bad # if $src (and thus $dsttmp) contains '*'. if [ -f $src -o -d $src ] then true else echo "install: $src does not exist" exit 1 fi if [ x"$dst" = x ] then echo "install: no destination specified" exit 1 else true fi # If destination is a directory, append the input filename; if your system # does not like double slashes in filenames, you may need to add some logic if [ -d $dst ] then dst="$dst"/`basename $src` else true fi fi ## this sed command emulates the dirname command dstdir=`echo $dst | sed -e 's,[^/]*$,,;s,/$,,;s,^$,.,'` # Make sure that the destination directory exists. # this part is taken from Noah Friedman's mkinstalldirs script # Skip lots of stat calls in the usual case. if [ ! -d "$dstdir" ]; then defaultIFS=' ' IFS="${IFS-${defaultIFS}}" oIFS="${IFS}" # Some sh's can't handle IFS=/ for some reason. IFS='%' set - `echo ${dstdir} | sed -e 's@/@%@g' -e 's@^%@/@'` IFS="${oIFS}" pathcomp='' while [ $# -ne 0 ] ; do pathcomp="${pathcomp}${1}" shift if [ ! -d "${pathcomp}" ] ; then $mkdirprog "${pathcomp}" else true fi pathcomp="${pathcomp}/" done fi if [ x"$dir_arg" != x ] then $doit $instcmd $dst && if [ x"$chowncmd" != x ]; then $doit $chowncmd $dst; else true ; fi && if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd $dst; else true ; fi && if [ x"$stripcmd" != x ]; then $doit $stripcmd $dst; else true ; fi && if [ x"$chmodcmd" != x ]; then $doit $chmodcmd $dst; else true ; fi else # If we're going to rename the final executable, determine the name now. if [ x"$transformarg" = x ] then dstfile=`basename $dst` else dstfile=`basename $dst $transformbasename | sed $transformarg`$transformbasename fi # don't allow the sed command to completely eliminate the filename if [ x"$dstfile" = x ] then dstfile=`basename $dst` else true fi # Make a temp file name in the proper directory. dsttmp=$dstdir/#inst.$$# # Move or copy the file name to the temp name $doit $instcmd $src $dsttmp && trap "rm -f ${dsttmp}" 0 && # and set any options; do chmod last to preserve setuid bits # If any of these fail, we abort the whole thing. If we want to # ignore errors from any of these, just make sure not to ignore # errors from the above "$doit $instcmd $src $dsttmp" command. if [ x"$chowncmd" != x ]; then $doit $chowncmd $dsttmp; else true;fi && if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd $dsttmp; else true;fi && if [ x"$stripcmd" != x ]; then $doit $stripcmd $dsttmp; else true;fi && if [ x"$chmodcmd" != x ]; then $doit $chmodcmd $dsttmp; else true;fi && # Now rename the file to the real destination. $doit $rmcmd -f $dstdir/$dstfile && $doit $mvcmd $dsttmp $dstdir/$dstfile fi && exit 0 ax25mail-utils-0.11.orig/missing0000755000175000017500000001421306711047503016305 0ustar pg4ipg4i00000000000000#! /bin/sh # Common stub for a few missing GNU programs while installing. # Copyright (C) 1996, 1997 Free Software Foundation, Inc. # Franc,ois Pinard , 1996. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2, or (at your option) # any later version. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA # 02111-1307, USA. if test $# -eq 0; then echo 1>&2 "Try \`$0 --help' for more information" exit 1 fi case "$1" in -h|--h|--he|--hel|--help) echo "\ $0 [OPTION]... PROGRAM [ARGUMENT]... Handle \`PROGRAM [ARGUMENT]...' for when PROGRAM is missing, or return an error status if there is no known handling for PROGRAM. Options: -h, --help display this help and exit -v, --version output version information and exit Supported PROGRAM values: aclocal touch file \`aclocal.m4' autoconf touch file \`configure' autoheader touch file \`config.h.in' automake touch all \`Makefile.in' files bison create \`y.tab.[ch]', if possible, from existing .[ch] flex create \`lex.yy.c', if possible, from existing .c lex create \`lex.yy.c', if possible, from existing .c makeinfo touch the output file yacc create \`y.tab.[ch]', if possible, from existing .[ch]" ;; -v|--v|--ve|--ver|--vers|--versi|--versio|--version) echo "missing - GNU libit 0.0" ;; -*) echo 1>&2 "$0: Unknown \`$1' option" echo 1>&2 "Try \`$0 --help' for more information" exit 1 ;; aclocal) echo 1>&2 "\ WARNING: \`$1' is missing on your system. You should only need it if you modified \`acinclude.m4' or \`configure.in'. You might want to install the \`Automake' and \`Perl' packages. Grab them from any GNU archive site." touch aclocal.m4 ;; autoconf) echo 1>&2 "\ WARNING: \`$1' is missing on your system. You should only need it if you modified \`configure.in'. You might want to install the \`Autoconf' and \`GNU m4' packages. Grab them from any GNU archive site." touch configure ;; autoheader) echo 1>&2 "\ WARNING: \`$1' is missing on your system. You should only need it if you modified \`acconfig.h' or \`configure.in'. You might want to install the \`Autoconf' and \`GNU m4' packages. Grab them from any GNU archive site." files=`sed -n 's/^[ ]*A[CM]_CONFIG_HEADER(\([^)]*\)).*/\1/p' configure.in` test -z "$files" && files="config.h" touch_files= for f in $files; do case "$f" in *:*) touch_files="$touch_files "`echo "$f" | sed -e 's/^[^:]*://' -e 's/:.*//'`;; *) touch_files="$touch_files $f.in";; esac done touch $touch_files ;; automake) echo 1>&2 "\ WARNING: \`$1' is missing on your system. You should only need it if you modified \`Makefile.am', \`acinclude.m4' or \`configure.in'. You might want to install the \`Automake' and \`Perl' packages. Grab them from any GNU archive site." find . -type f -name Makefile.am -print | sed 's/\.am$/.in/' | while read f; do touch "$f"; done ;; bison|yacc) echo 1>&2 "\ WARNING: \`$1' is missing on your system. You should only need it if you modified a \`.y' file. You may need the \`Bison' package in order for those modifications to take effect. You can get \`Bison' from any GNU archive site." rm -f y.tab.c y.tab.h if [ $# -ne 1 ]; then eval LASTARG="\${$#}" case "$LASTARG" in *.y) SRCFILE=`echo "$LASTARG" | sed 's/y$/c/'` if [ -f "$SRCFILE" ]; then cp "$SRCFILE" y.tab.c fi SRCFILE=`echo "$LASTARG" | sed 's/y$/h/'` if [ -f "$SRCFILE" ]; then cp "$SRCFILE" y.tab.h fi ;; esac fi if [ ! -f y.tab.h ]; then echo >y.tab.h fi if [ ! -f y.tab.c ]; then echo 'main() { return 0; }' >y.tab.c fi ;; lex|flex) echo 1>&2 "\ WARNING: \`$1' is missing on your system. You should only need it if you modified a \`.l' file. You may need the \`Flex' package in order for those modifications to take effect. You can get \`Flex' from any GNU archive site." rm -f lex.yy.c if [ $# -ne 1 ]; then eval LASTARG="\${$#}" case "$LASTARG" in *.l) SRCFILE=`echo "$LASTARG" | sed 's/l$/c/'` if [ -f "$SRCFILE" ]; then cp "$SRCFILE" lex.yy.c fi ;; esac fi if [ ! -f lex.yy.c ]; then echo 'main() { return 0; }' >lex.yy.c fi ;; makeinfo) echo 1>&2 "\ WARNING: \`$1' is missing on your system. You should only need it if you modified a \`.texi' or \`.texinfo' file, or any other file indirectly affecting the aspect of the manual. The spurious call might also be the consequence of using a buggy \`make' (AIX, DU, IRIX). You might want to install the \`Texinfo' package or the \`GNU make' package. Grab either from any GNU archive site." file=`echo "$*" | sed -n 's/.*-o \([^ ]*\).*/\1/p'` if test -z "$file"; then file=`echo "$*" | sed 's/.* \([^ ]*\) *$/\1/'` file=`sed -n '/^@setfilename/ { s/.* \([^ ]*\) *$/\1/; p; q; }' $file` fi touch $file ;; *) echo 1>&2 "\ WARNING: \`$1' is needed, and you do not seem to have it handy on your system. You might have modified some files without having the proper tools for further handling them. Check the \`README' file, it often tells you about the needed prerequirements for installing this package. You may also peek at any GNU archive site, in case some other package would contain this missing \`$1' program." exit 1 ;; esac exit 0 ax25mail-utils-0.11.orig/mkinstalldirs0000755000175000017500000000132206711047503017511 0ustar pg4ipg4i00000000000000#! /bin/sh # mkinstalldirs --- make directory hierarchy # Author: Noah Friedman # Created: 1993-05-16 # Public domain # $Id: mkinstalldirs,v 1.13 1999/01/05 03:18:55 bje Exp $ errstatus=0 for file do set fnord `echo ":$file" | sed -ne 's/^:\//#/;s/^://;s/\// /g;s/^#/\//;p'` shift pathcomp= for d do pathcomp="$pathcomp$d" case "$pathcomp" in -* ) pathcomp=./$pathcomp ;; esac if test ! -d "$pathcomp"; then echo "mkdir $pathcomp" mkdir "$pathcomp" || lasterr=$? if test ! -d "$pathcomp"; then errstatus=$lasterr fi fi pathcomp="$pathcomp/" done done exit $errstatus # mkinstalldirs ends here ax25mail-utils-0.11.orig/BUGS0000644000175000017500000000064107422612205015366 0ustar pg4ipg4i00000000000000REPORTING BUGS -------------- Please report all the bugs to . When reporting the bug please add the following information: - the package version - error messages obtained (if any) ulistd reports errors to system log file (syslog), the -l option must be used axgetmail reports errors by default to /var/ax25/axgetmail.err msgcleanup reports errors by default to /var/ax25/msgcleanup.err ax25mail-utils-0.11.orig/ax25mail-utils.lsm0000644000175000017500000000057007425043427020210 0ustar pg4ipg4i00000000000000Begin3 Title: ax25mail-utils Version: 0.11 Entered-date: 27 Jan 02 Description: A set of utilities for reading PR mail from a FBB BBS Keywords: AX.25 FBB unproto message list Author: radkovo@centrum.cz (Radek Burget) Maintained-by: radkovo@centrum.cz (Radek Burget) Primary-site: http://ax25mail.sourceforge.net Alternate-site: Original-site: Copying-policy: GPL End ax25mail-utils-0.11.orig/ulistd/0000755000175000017500000000000007425043442016212 5ustar pg4ipg4i00000000000000ax25mail-utils-0.11.orig/ulistd/Makefile.in0000644000175000017500000001610707425043442020264 0ustar pg4ipg4i00000000000000# Makefile.in generated automatically by automake 1.4-p4 from Makefile.am # Copyright (C) 1994, 1995-8, 1999 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. SHELL = @SHELL@ srcdir = @srcdir@ top_srcdir = @top_srcdir@ VPATH = @srcdir@ prefix = @prefix@ exec_prefix = @exec_prefix@ sbindir = @sbindir@ libexecdir = @libexecdir@ sysconfdir = @sysconfdir@ sharedstatedir = @sharedstatedir@ localstatedir = @localstatedir@ libdir = @libdir@ infodir = @infodir@ mandir = @mandir@ includedir = @includedir@ oldincludedir = /usr/include DESTDIR = pkgdatadir = $(datadir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ top_builddir = .. ACLOCAL = @ACLOCAL@ AUTOCONF = @AUTOCONF@ AUTOMAKE = @AUTOMAKE@ AUTOHEADER = @AUTOHEADER@ INSTALL = @INSTALL@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ $(AM_INSTALL_PROGRAM_FLAGS) INSTALL_DATA = @INSTALL_DATA@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ transform = @program_transform_name@ NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : CC = @CC@ CXX = @CXX@ LN_S = @LN_S@ MAKEINFO = @MAKEINFO@ PACKAGE = @PACKAGE@ PERL = @PERL@ VERSION = @VERSION@ CFLAGS = -g -Wall CXXFLAGS = -g -Wall bin_PROGRAMS = ulistd ulistd_SOURCES = ulistd.c datadir = @prefix@/sbin bindir = @prefix@/sbin LIBS = -lax25 mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs CONFIG_HEADER = ../config.h CONFIG_CLEAN_FILES = PROGRAMS = $(bin_PROGRAMS) DEFS = @DEFS@ -I. -I$(srcdir) -I.. CPPFLAGS = @CPPFLAGS@ LDFLAGS = @LDFLAGS@ ulistd_OBJECTS = ulistd.o ulistd_LDADD = $(LDADD) ulistd_DEPENDENCIES = ulistd_LDFLAGS = COMPILE = $(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) CCLD = $(CC) LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(LDFLAGS) -o $@ DIST_COMMON = Makefile.am Makefile.in DISTFILES = $(DIST_COMMON) $(SOURCES) $(HEADERS) $(TEXINFOS) $(EXTRA_DIST) TAR = tar GZIP_ENV = --best SOURCES = $(ulistd_SOURCES) OBJECTS = $(ulistd_OBJECTS) all: all-redirect .SUFFIXES: .SUFFIXES: .S .c .o .s $(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4) cd $(top_srcdir) && $(AUTOMAKE) --gnu --include-deps ulistd/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status cd $(top_builddir) \ && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status mostlyclean-binPROGRAMS: clean-binPROGRAMS: -test -z "$(bin_PROGRAMS)" || rm -f $(bin_PROGRAMS) distclean-binPROGRAMS: maintainer-clean-binPROGRAMS: install-binPROGRAMS: $(bin_PROGRAMS) @$(NORMAL_INSTALL) $(mkinstalldirs) $(DESTDIR)$(bindir) @list='$(bin_PROGRAMS)'; for p in $$list; do \ if test -f $$p; then \ echo " $(INSTALL_PROGRAM) $$p $(DESTDIR)$(bindir)/`echo $$p|sed 's/$(EXEEXT)$$//'|sed '$(transform)'|sed 's/$$/$(EXEEXT)/'`"; \ $(INSTALL_PROGRAM) $$p $(DESTDIR)$(bindir)/`echo $$p|sed 's/$(EXEEXT)$$//'|sed '$(transform)'|sed 's/$$/$(EXEEXT)/'`; \ else :; fi; \ done uninstall-binPROGRAMS: @$(NORMAL_UNINSTALL) list='$(bin_PROGRAMS)'; for p in $$list; do \ rm -f $(DESTDIR)$(bindir)/`echo $$p|sed 's/$(EXEEXT)$$//'|sed '$(transform)'|sed 's/$$/$(EXEEXT)/'`; \ done .c.o: $(COMPILE) -c $< .s.o: $(COMPILE) -c $< .S.o: $(COMPILE) -c $< mostlyclean-compile: -rm -f *.o core *.core clean-compile: distclean-compile: -rm -f *.tab.c maintainer-clean-compile: ulistd: $(ulistd_OBJECTS) $(ulistd_DEPENDENCIES) @rm -f ulistd $(LINK) $(ulistd_LDFLAGS) $(ulistd_OBJECTS) $(ulistd_LDADD) $(LIBS) tags: TAGS ID: $(HEADERS) $(SOURCES) $(LISP) list='$(SOURCES) $(HEADERS)'; \ unique=`for i in $$list; do echo $$i; done | \ awk ' { files[$$0] = 1; } \ END { for (i in files) print i; }'`; \ here=`pwd` && cd $(srcdir) \ && mkid -f$$here/ID $$unique $(LISP) TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) $(LISP) tags=; \ here=`pwd`; \ list='$(SOURCES) $(HEADERS)'; \ unique=`for i in $$list; do echo $$i; done | \ awk ' { files[$$0] = 1; } \ END { for (i in files) print i; }'`; \ test -z "$(ETAGS_ARGS)$$unique$(LISP)$$tags" \ || (cd $(srcdir) && etags $(ETAGS_ARGS) $$tags $$unique $(LISP) -o $$here/TAGS) mostlyclean-tags: clean-tags: distclean-tags: -rm -f TAGS ID maintainer-clean-tags: distdir = $(top_builddir)/$(PACKAGE)-$(VERSION)/$(subdir) subdir = ulistd distdir: $(DISTFILES) @for file in $(DISTFILES); do \ d=$(srcdir); \ if test -d $$d/$$file; then \ cp -pr $$d/$$file $(distdir)/$$file; \ else \ test -f $(distdir)/$$file \ || ln $$d/$$file $(distdir)/$$file 2> /dev/null \ || cp -p $$d/$$file $(distdir)/$$file || :; \ fi; \ done info-am: info: info-am dvi-am: dvi: dvi-am check-am: all-am check: check-am installcheck-am: installcheck: installcheck-am install-exec-am: install-binPROGRAMS install-exec: install-exec-am install-data-am: install-data: install-data-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am install: install-am uninstall-am: uninstall-binPROGRAMS uninstall: uninstall-am all-am: Makefile $(PROGRAMS) all-redirect: all-am install-strip: $(MAKE) $(AM_MAKEFLAGS) AM_INSTALL_PROGRAM_FLAGS=-s install installdirs: $(mkinstalldirs) $(DESTDIR)$(bindir) mostlyclean-generic: clean-generic: distclean-generic: -rm -f Makefile $(CONFIG_CLEAN_FILES) -rm -f config.cache config.log stamp-h stamp-h[0-9]* maintainer-clean-generic: mostlyclean-am: mostlyclean-binPROGRAMS mostlyclean-compile \ mostlyclean-tags mostlyclean-generic mostlyclean: mostlyclean-am clean-am: clean-binPROGRAMS clean-compile clean-tags clean-generic \ mostlyclean-am clean: clean-am distclean-am: distclean-binPROGRAMS distclean-compile distclean-tags \ distclean-generic clean-am distclean: distclean-am maintainer-clean-am: maintainer-clean-binPROGRAMS \ maintainer-clean-compile maintainer-clean-tags \ maintainer-clean-generic distclean-am @echo "This command is intended for maintainers to use;" @echo "it deletes files that may require special tools to rebuild." maintainer-clean: maintainer-clean-am .PHONY: mostlyclean-binPROGRAMS distclean-binPROGRAMS clean-binPROGRAMS \ maintainer-clean-binPROGRAMS uninstall-binPROGRAMS install-binPROGRAMS \ mostlyclean-compile distclean-compile clean-compile \ maintainer-clean-compile tags mostlyclean-tags distclean-tags \ clean-tags maintainer-clean-tags distdir info-am info dvi-am dvi check \ check-am installcheck-am installcheck install-exec-am install-exec \ install-data-am install-data install-am install uninstall-am uninstall \ all-redirect all-am all installdirs mostlyclean-generic \ distclean-generic clean-generic maintainer-clean-generic clean \ mostlyclean distclean maintainer-clean # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: ax25mail-utils-0.11.orig/ulistd/Makefile.am0000444000175000017500000000022707072164274020252 0ustar pg4ipg4i00000000000000CFLAGS = -g -Wall CXXFLAGS = -g -Wall bin_PROGRAMS = ulistd ulistd_SOURCES = ulistd.c datadir = @prefix@/sbin bindir = @prefix@/sbin LIBS = -lax25 ax25mail-utils-0.11.orig/ulistd/ulistd.c0000644000175000017500000004143507424752122017672 0ustar pg4ipg4i00000000000000/* ulistd - FBB unproto lists recieving daemon (c) 1998 - 2002 by Radek Burget OK2JBG This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the license, or (at your option) any later version. HISTORY - started at version 0.08 30 Nov 99 - version 0.09 - the index file is not read again and again to get the actual number of messages 14 Jan 00 - version 0.10 - SSID is ignored in the path to list files 23 Feb 00 - version 0.11 Some heavy modifications done by Tom Mazouch (mazouch@ica.cz), especially for new AX25 lib/tools/apps. Added select() support, protocol machine rewritten, things from old ax25 library removed and used new ones from libax25. Modified for new AX25 from Matthias Welwarsky/Jens David. OK2JBG: re-modified back to support both new and old axlib. Minor change in protocol machine - do not test the end of list after each message. Added SIGUSR1 handler that forces list resync. 27 Mar 01 - version 0.12 - Config file parsing fixed (times were ignored) 07 Apr 01 - version 0.13 - Line collector added 20 Jan 02 - version 0.14 Some bugfixes (thanks to Mike G0WZY), pasive mode added. */ #ifdef HAVE_CONFIG_H #include #else //default settings #define NEW_AXLIB //new axlib (from libax25) (old are ancient ax25-utils) //#define NEW_AX25 //new ax25 implementation (patched 2.2.x kernel) #endif #include #include #include #include #include #include #include #include #include #include #include #include #include #include #ifdef NEW_AXLIB #include // new for libax25 #include // required by axlib.h #include #include #include #else #include #include #include #include #include #endif #ifndef NEW_AXLIB #define ax25_aton(x, y) convert_call(x, y) #define ax25_ntoa(x) ax2asc(x) #endif #define AX25_AEB 1 #define AX25_UI 0x03 #define AX25_PID_TEXT 0xF0 #define CALL_OFS 7 #define DATA_OFS 16 #define MIN_SIZE 15 #define COLLECTOR_LIMIT 100 /* line collector limit (lines) */ #define AXPORTS "/etc/ax25/axports" #define CONFIG "/etc/ax25/ulistd.conf" #define OUTDIR "/var/ax25/ulistd" #define ENDOFLISTCMD "/var/ax25/list_agent" #define COMPLETECMD "/var/ax25/complete_agent" /* default time to wait for response (seconds) */ #define RESP_TIME 15 /* default time to wait for next frame (seconds) */ #define WAIT_TIME 10 /* number of unsuccesful tries before bailing out */ #define MAX_TRIES 32 #define DAEMON #define COLLECTOR #define PRGNAME "ulistd" #ifndef VERSION #define VERSION "0.14" #endif #define ST_RQSENT 1 #define ST_WAIT 2 #define ST_COMPLETE 0 /* cline - collected line */ struct cline { int num; /* message number */ char *data; /* complete line */ struct cline *next; }; /* bbs info - for each bbs */ struct bbs{ char *call; /* bbs callsign */ char *path; /* bbs path */ char *port; /* port callsign */ int enabled; /* sending is enabled */ time_t next_event; /* time of next event */ int resptime; /* how long to wait for response (sec) */ int waittime; /* how long to wait for next frame (sec) */ int last; /* last msg number on our list */ int highest; /* highest msg number heard */ int status; /* communication state */ int tries; /* number of tries */ time_t last_complete; /* last call of exec_complete_agent */ struct cline *collect; /* line collector begining */ struct bbs *next; }; static struct bbs *BBSBEG=NULL; /* setup */ char mycall[20]; /* my callsign */ int logging = 0; /* write to syslog ? */ int startreq = 1; /* send requests at starup ? */ int minmsg = 1; /* start asking this number */ int getmail = 0; /* start "user agent" on end of list */ int last_message(struct bbs *); /*======================== Callsign transformations =======================*/ /* Convert callsign into uppercase, strip zero SSID. */ char *normalize_call(char *call) { char *p; strupr(call); p=strchr(call,'-'); if(p){ if(!atoi(p+1)) *p='\0'; } return(call); } /* returns the callsign w/o SSID */ char *call_call(const char *src) { static char s[7]; sscanf(src, "%6[A-Za-z0-9]", s); return s; } /* Returns 1 if the callsigns (without SSID) match. */ int compare_call(char *c1, char *c2) { for(;*c1&*c2;c1++,c2++){ if((*c1=='-')&&(*c2=='-')) return(1); if(toupper(*c1)!=toupper(*c2)) return(0); } return(1); } /* return the first callsign in the path */ char *first_call(char *dest,const char *src) { sscanf(src,"%10[A-Za-z0-9-]",dest); return(dest); } /* read & parse config file */ int read_config() { FILE *config; struct bbs *bbs; char s[256],*port=NULL; int i,j; if(!(config=fopen(CONFIG,"r"))) return(0);; j=0; while ((fgets(s,255,config))){ if((*s!='#')&&(strlen(s))){ bbs=(struct bbs *)malloc(sizeof(struct bbs)); memset(bbs,0,sizeof(struct bbs)); // otestuj pamet i=sscanf(s,"%d %d %as %a[^\r\n]",&(bbs->resptime),&(bbs->waittime), &port,&(bbs->path)); if(i!=4){ free(bbs->port); free(bbs->path); free(bbs); }else{ bbs->port=ax25_config_get_addr(port); free(port); first_call(s,bbs->path); bbs->call=strdup(normalize_call(s)); bbs->enabled=1; bbs->status=ST_COMPLETE; bbs->last=last_message(bbs); bbs->highest=0; bbs->collect=NULL; bbs->next=BBSBEG; BBSBEG=bbs; j++; } } } fclose(config); return(j); } /* find struct bbs by BBS callsign */ struct bbs *find_bbs(char *call) { struct bbs *bbs; for(bbs=BBSBEG;bbs;bbs=bbs->next) if(!strcasecmp(bbs->call,call)) return(bbs); return(NULL); } /*=========================== Mail list operations ========================*/ /* returns the number of last message on the list */ int last_message(struct bbs *bbs) { FILE *f; char s[256]; int msgnum=minmsg; int i; snprintf(s,255,"%s/%s",OUTDIR,call_call(bbs->call)); if((f=fopen(s,"r"))){ while(fgets(s,255,f)) if(sscanf(s,"%i",&i)==1) msgnum=i; fclose(f); }else{ if(!(f=fopen(s,"w"))){ if(logging) syslog(LOG_ERR,"Cannot create file %s",s); }else fclose(f); } return msgnum; } /* add next line to list */ void add_line(struct bbs *bbs, char *line) { FILE *f; char s[256]; snprintf(s,255,"%s/%s",OUTDIR,call_call(bbs->call)); f = fopen(s, "a"); if (!f && logging) syslog(LOG_ERR, "Cannot write to file %s\n", s); fprintf(f, "%s\n", line); fclose(f); } /*============================== Line collector ===========================*/ /* add the line to the collector (sorted by message numbers) */ void add_collector_line(struct bbs* bbs, int linenum, const char *linedata) { #ifdef COLLECTOR struct cline *line; struct cline *newline; int cnt = 0; newline = (struct cline *)malloc(sizeof(struct cline)); newline->num = linenum; newline->data = strdup(linedata); newline->next = NULL; if (bbs->collect == NULL) bbs->collect = newline; else if (bbs->collect->num > linenum) { newline->next = bbs->collect; bbs->collect = newline; } else for (line = bbs->collect; line; line=line->next) { if (line->next == NULL || line->next->num > linenum) { newline->next = line->next; line->next = newline; break; } cnt++; if (cnt > COLLECTOR_LIMIT) break; } #endif } /* scan the collector, remove obsolete lines, use and remove actual lines */ void scan_collector(struct bbs *bbs) { #ifdef COLLECTOR struct cline *line, *nextline; struct cline *last = NULL; for (line = bbs->collect; line; line=nextline) { if (line->num == bbs->last+1) { add_line(bbs, line->data); bbs->last = line->num; } nextline = line->next; if (line->num <= bbs->last) //remove old and used lines { if (last) last->next = line->next; else bbs->collect = line->next; free(line->data); free(line); } else last = line; } #endif } /*============================ External agents ==========================*/ void exec_download_agent(struct bbs *bbs) { char cmd[1024]; snprintf(cmd, 1023, "%s %s >/dev/null", ENDOFLISTCMD, call_call(bbs->call)); #ifndef DAEMON printf("Executing: %s", cmd); #endif system(cmd); } void exec_complete_agent(struct bbs *bbs) { char cmd[1024]; if (time(NULL) < bbs->last_complete+bbs->waittime) return; /* too early */ bbs->last_complete = time(NULL); snprintf(cmd, 1023, "%s %s %i >/dev/null", COMPLETECMD, call_call(bbs->call), bbs->last+1); #ifndef DAEMON printf("Executing: %s", cmd); #endif system(cmd); bbs->last = last_message(bbs); /* recheck modified list */ if (bbs->highest > bbs->last) bbs->last = bbs->highest; } /*============================ BBS Communication ==========================*/ /* send request to bbs->call with number bbs->last */ void send_request(struct bbs *bbs) { int s; int sum,len; char path[30]; char msg[30]; struct full_sockaddr_ax25 addr; /* passive mode */ if (bbs->resptime == 0) { exec_complete_agent(bbs); return; } /* already sent */ if((bbs->next_event>time(NULL))&&(bbs->status==ST_RQSENT)) return; #ifndef DAEMON printf("Request to %s\n", bbs->call); #endif /* find BBS by callsign */ if(!bbs->enabled) return; //requests not enabled /* calculate request */ sum=(bbs->last>>24)+(bbs->last>>16)+(bbs->last>>8)+bbs->last; sprintf(msg,"? %08X%02X",bbs->last,sum&0xFF); /* send unproto frame */ if ((s = socket(AF_AX25, SOCK_DGRAM, 0)) == -1) if (logging) syslog(LOG_ERR, "Cannot create socket for unproto"); sprintf(path, "%s %s", mycall,bbs->port); len = ax25_aton(path, &addr); if (len == -1) if (logging) syslog(LOG_ERR, "Invalid path %s %s", mycall,bbs->port); if (bind(s, (struct sockaddr *)&addr, len) == -1) if (logging) syslog(LOG_ERR, "Cannot bind() socket for unproto"); len = ax25_aton(bbs->path, &addr); if (len == -1) if (logging) syslog(LOG_ERR, "Invalid path %s",bbs->path); if (sendto(s, msg, strlen(msg), 0, (struct sockaddr *)&addr, len) == -1) if (logging) syslog(LOG_ERR, "Cannot sendto() unproto message"); close(s); bbs->next_event=time(NULL)+bbs->resptime; bbs->status=ST_RQSENT; bbs->tries++; if(bbs->tries>MAX_TRIES){ bbs->tries=0; bbs->status=ST_COMPLETE; //stop sending requests if(logging) syslog(LOG_ERR,"Specified BBS `%s' is not responding",bbs->call); } } /* handle one unproto data line */ void handle_fbb_line(char *call, char *line) { int msgnum; int n; char s1[256], s2[256]; struct bbs *bbs; bbs=find_bbs(call); if(!bbs) return; //some other BBS n=sscanf(line,"%i %255s %255s",&msgnum,s1,s2); if (bbs->highest < msgnum) bbs->highest = msgnum; if (n>0) { bbs->tries=0; if(!strcmp(s1,"/")){ //request rejected if(compare_call(s2, mycall)){ bbs->enabled=0; if(logging) syslog(LOG_ERR,"Request rejected by %s",bbs->call); } return; } if(!strcmp(s1,"!")){ //change list start if (compare_call(s2, mycall)){ char s[20]; sprintf(s, "%i !", msgnum); add_line(bbs, s); bbs->last=msgnum; bbs->next_event=time(NULL)+bbs->waittime; bbs->status=ST_WAIT; } return; } if(!strcmp(s1,"!!")){ //end of list if(msgnum>bbs->last+1){ //incomplete list send_request(bbs); }else{ //list OK bbs->status=ST_COMPLETE; if (getmail) exec_download_agent(bbs); //run agent } return; } // message line if(msgnum==bbs->last+1){ //fits to the list add_line(bbs,line); bbs->last=msgnum; bbs->next_event=time(NULL)+bbs->waittime; if (bbs->status != ST_COMPLETE) //don't ask for more unless you bbs->status=ST_WAIT; // have requested this line scan_collector(bbs); }else if(msgnum>bbs->last+1){ //a hole in the list add_collector_line(bbs, msgnum, line); scan_collector(bbs); send_request(bbs); //request from our last number } } } /* send initial requests to all BBSs */ void send_init_requests() { struct bbs *bbs; for(bbs=BBSBEG;bbs;bbs=bbs->next) send_request(bbs); } /*=========================================================================*/ /* check if all messages have been received */ void check() { struct bbs *bbs; for(bbs=BBSBEG;bbs;bbs=bbs->next){ if(bbs->status!=ST_COMPLETE){ if(bbs->next_event<=time(NULL)) send_request(bbs); //send the request } } return; } /* USR1 signal handler */ void resync(int sig) { struct bbs *bbs; signal(SIGUSR1, SIG_IGN); for(bbs=BBSBEG;bbs;bbs=bbs->next) send_request(bbs); signal(SIGUSR1, resync); } /* TERM signal handler */ void terminate(int sig) { exit(0); } int main(int argc, char **argv) { int s; /* socket */ unsigned char buffer[1024],*p,*l; struct sockaddr sa; fd_set readfds; time_t next_event; struct timeval tv,*tvp; struct bbs *bbs; int size; int i; char from_call[20]; char to_call[20]; *mycall='\0'; while ((i = getopt(argc, argv, "c:nlgm:vh")) != -1){ switch(i){ case 'c': strncpy(mycall, optarg, 15); break; case 'n': startreq = 0; break; case 'l': logging = 1; break; case 'g': getmail = 1; break; case 'm': minmsg = atoi(optarg); break; #ifdef PACKAGE case 'v': printf("%s from %s %s\n", PRGNAME, PACKAGE, VERSION); return 0; break; #else case 'v': printf("%s version %s\n", PRGNAME, VERSION); return 0; break; #endif case 'h': case ':': case '?': printf("ulistd daemon by OK2JBG & CZ6TOM\n"); printf("usage: ulistd -c [-n] [-l] [-g] [-m number] [-v] [-h]\n"); return 1; break; } } normalize_call(mycall); if (strlen(mycall) == 0){ fprintf(stderr, "Callsign is not set. Use -c option.\n"); return 1; } if(ax25_config_load_ports() == -1){ fprintf(stderr, "cannot read file %s\n", AXPORTS); return 1; } if(read_config()<=0){ fprintf(stderr, "no BBS specified in configuration file %s\n", CONFIG); return(1); } signal(SIGTERM, terminate); signal(SIGUSR1, resync); if ((s=socket(AF_PACKET,SOCK_PACKET,htons(ETH_P_AX25)))==-1){ perror("ulistd: socket"); } fcntl(s,F_SETFL,O_NONBLOCK); #ifdef DAEMON if(!daemon_start(0)){ fprintf(stderr,"ulistd: cannot become a daemon\n"); return 1; } #endif if (logging) openlog("ulistd", LOG_PID, LOG_DAEMON); if (startreq) send_init_requests(); while(1){ int asize = sizeof(sa); tvp=NULL; next_event=0; for(bbs=BBSBEG;bbs;bbs=bbs->next){ if(bbs->status==ST_COMPLETE) continue; if((!next_event)||(bbs->next_eventnext_event; } if(next_event){ tv.tv_sec=next_event-time(NULL); tv.tv_usec=0; tvp=&tv; } FD_ZERO(&readfds); FD_SET(s,&readfds); while(select(s+1,&readfds,NULL,NULL,tvp) == -1) ; if(FD_ISSET(s,&readfds)){ size = recvfrom(s, buffer, sizeof(buffer), 0, &sa, &asize); if((size!=-1)&&(sa.sa_family==AF_AX25)&&(size>=MIN_SIZE)){ #ifdef NEW_AX25 strcpy(to_call, ax25_ntoa((ax25_address *)buffer)); strcpy(from_call, ax25_ntoa((ax25_address *)(buffer+CALL_OFS))); #else signed char *data = buffer+1; strcpy(to_call, ax25_ntoa((ax25_address *)data)); strcpy(from_call, ax25_ntoa((ax25_address *)(data+CALL_OFS))); #endif normalize_call(to_call); normalize_call(from_call); #ifndef DAEMON printf("From: %s To: %s Data: %i\n", from_call, to_call, size); #endif if(strcmp(to_call,"FBB")) continue; for(p=buffer;(!(*p&AX25_AEB))&&size;p++,size--); if(size<3) continue; // Useless frame p++;size--; if(*p!=AX25_UI) continue; // Only UI frames wanted p++;size--; if(*p!=AX25_PID_TEXT) continue; // PID must be 0xF0 p++;size--; p[size]='\0'; #ifndef DAEMON printf("Text(%i): %s\n",size,p); #endif /* handle FBB unproto frame */ while(*p){ i=strcspn(p,"\r\n"); l=p; p+=i; while(*p&&strchr("\r\n",*p)) p++; l[i]='\0'; handle_fbb_line(from_call,l); } } } else check(); // nothing in readfds -> timeout } } ax25mail-utils-0.11.orig/agent/0000755000175000017500000000000007425043442016004 5ustar pg4ipg4i00000000000000ax25mail-utils-0.11.orig/agent/Makefile.in0000644000175000017500000001054207425043442020053 0ustar pg4ipg4i00000000000000# Makefile.in generated automatically by automake 1.4-p4 from Makefile.am # Copyright (C) 1994, 1995-8, 1999 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. SHELL = @SHELL@ srcdir = @srcdir@ top_srcdir = @top_srcdir@ VPATH = @srcdir@ prefix = @prefix@ exec_prefix = @exec_prefix@ bindir = @bindir@ sbindir = @sbindir@ libexecdir = @libexecdir@ sysconfdir = @sysconfdir@ sharedstatedir = @sharedstatedir@ localstatedir = @localstatedir@ libdir = @libdir@ infodir = @infodir@ mandir = @mandir@ includedir = @includedir@ oldincludedir = /usr/include DESTDIR = pkgdatadir = $(datadir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ top_builddir = .. ACLOCAL = @ACLOCAL@ AUTOCONF = @AUTOCONF@ AUTOMAKE = @AUTOMAKE@ AUTOHEADER = @AUTOHEADER@ INSTALL = @INSTALL@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ $(AM_INSTALL_PROGRAM_FLAGS) INSTALL_DATA = @INSTALL_DATA@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ transform = @program_transform_name@ NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : CC = @CC@ CXX = @CXX@ LN_S = @LN_S@ MAKEINFO = @MAKEINFO@ PACKAGE = @PACKAGE@ PERL = @PERL@ VERSION = @VERSION@ datadir = /var/ax25 EXTRA_DIST = list_agent auth_agent complete_agent mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs CONFIG_HEADER = ../config.h CONFIG_CLEAN_FILES = DIST_COMMON = Makefile.am Makefile.in DISTFILES = $(DIST_COMMON) $(SOURCES) $(HEADERS) $(TEXINFOS) $(EXTRA_DIST) TAR = tar GZIP_ENV = --best all: all-redirect .SUFFIXES: $(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4) cd $(top_srcdir) && $(AUTOMAKE) --gnu --include-deps agent/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status cd $(top_builddir) \ && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status tags: TAGS TAGS: distdir = $(top_builddir)/$(PACKAGE)-$(VERSION)/$(subdir) subdir = agent distdir: $(DISTFILES) @for file in $(DISTFILES); do \ d=$(srcdir); \ if test -d $$d/$$file; then \ cp -pr $$d/$$file $(distdir)/$$file; \ else \ test -f $(distdir)/$$file \ || ln $$d/$$file $(distdir)/$$file 2> /dev/null \ || cp -p $$d/$$file $(distdir)/$$file || :; \ fi; \ done info-am: info: info-am dvi-am: dvi: dvi-am check-am: all-am check: check-am installcheck-am: installcheck: installcheck-am install-exec-am: install-exec: install-exec-am install-data-am: install-data: install-data-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am install: install-am uninstall-am: uninstall: uninstall-am all-am: Makefile all-redirect: all-am install-strip: $(MAKE) $(AM_MAKEFLAGS) AM_INSTALL_PROGRAM_FLAGS=-s install installdirs: mostlyclean-generic: clean-generic: distclean-generic: -rm -f Makefile $(CONFIG_CLEAN_FILES) -rm -f config.cache config.log stamp-h stamp-h[0-9]* maintainer-clean-generic: mostlyclean-am: mostlyclean-generic mostlyclean: mostlyclean-am clean-am: clean-generic mostlyclean-am clean: clean-am distclean-am: distclean-generic clean-am distclean: distclean-am maintainer-clean-am: maintainer-clean-generic distclean-am @echo "This command is intended for maintainers to use;" @echo "it deletes files that may require special tools to rebuild." maintainer-clean: maintainer-clean-am .PHONY: tags distdir info-am info dvi-am dvi check check-am \ installcheck-am installcheck install-exec-am install-exec \ install-data-am install-data install-am install uninstall-am uninstall \ all-redirect all-am all installdirs mostlyclean-generic \ distclean-generic clean-generic maintainer-clean-generic clean \ mostlyclean distclean maintainer-clean install: @INSTALL@ -d $(datadir) if test ! -f $(datadir)/list_agent; then \ @INSTALL@ -m 755 list_agent $(datadir); \ fi if test ! -f $(datadir)/auth_agent; then \ @INSTALL@ -m 755 auth_agent $(datadir); \ fi # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: ax25mail-utils-0.11.orig/agent/Makefile.am0000644000175000017500000000053207422613363020042 0ustar pg4ipg4i00000000000000## Process this file with automake to produce Makefile.in datadir = /var/ax25 EXTRA_DIST = list_agent auth_agent complete_agent install: @INSTALL@ -d $(datadir) if test ! -f $(datadir)/list_agent; then \ @INSTALL@ -m 755 list_agent $(datadir); \ fi if test ! -f $(datadir)/auth_agent; then \ @INSTALL@ -m 755 auth_agent $(datadir); \ fi ax25mail-utils-0.11.orig/agent/list_agent0000755000175000017500000000127707040057555020075 0ustar pg4ipg4i00000000000000#! /bin/bash ########################################################################## # This script is called by ulistd when complete message list is received # # $1 contains the callsign of the BBS (without SSID) # ########################################################################## #---------------------------- # Automatic message download #---------------------------- axgetmail $1 >>/var/ax25/axgetmail.out 2>>/var/ax25/axgetmail.err #----------------------------------------------------- # Call the 'msgcleanup' script to delete old messages #----------------------------------------------------- msgcleanup $1 >>/var/ax25/msgcleanup.err 2>>/var/ax25/msgcleanup.err ax25mail-utils-0.11.orig/agent/auth_agent0000755000175000017500000000060407040057611020045 0ustar pg4ipg4i00000000000000#! /bin/bash ########################################################################## # This script is called by axgetmail when the BBS is connected # # $1 contains the callsign of the BBS (with SSID) # # $2 contains user's callsign # ########################################################################## ax25mail-utils-0.11.orig/agent/complete_agent0000755000175000017500000000130207423344477020726 0ustar pg4ipg4i00000000000000#! /bin/bash ########################################################################## # This script is called by ulistd when working in passive mode and some # # messages are missing in the message list. Normally this script calls # # the axgetlist tool to obtain the message list. # # $1 contains the callsign of the BBS (without SSID) # # $2 contains last known message number+1 # ########################################################################## #----------------------------- # Download a list of messages #----------------------------- axgetlist -b $1 -s $2 >>/var/ax25/axgetlist.out 2>>/var/ax25/axgetlist.err ax25mail-utils-0.11.orig/axgetlist/0000755000175000017500000000000007425043442016712 5ustar pg4ipg4i00000000000000ax25mail-utils-0.11.orig/axgetlist/Makefile.in0000644000175000017500000001632107425043442020762 0ustar pg4ipg4i00000000000000# Makefile.in generated automatically by automake 1.4-p4 from Makefile.am # Copyright (C) 1994, 1995-8, 1999 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. SHELL = @SHELL@ srcdir = @srcdir@ top_srcdir = @top_srcdir@ VPATH = @srcdir@ prefix = @prefix@ exec_prefix = @exec_prefix@ sbindir = @sbindir@ libexecdir = @libexecdir@ sysconfdir = @sysconfdir@ sharedstatedir = @sharedstatedir@ localstatedir = @localstatedir@ libdir = @libdir@ infodir = @infodir@ mandir = @mandir@ includedir = @includedir@ oldincludedir = /usr/include DESTDIR = pkgdatadir = $(datadir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ top_builddir = .. ACLOCAL = @ACLOCAL@ AUTOCONF = @AUTOCONF@ AUTOMAKE = @AUTOMAKE@ AUTOHEADER = @AUTOHEADER@ INSTALL = @INSTALL@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ $(AM_INSTALL_PROGRAM_FLAGS) INSTALL_DATA = @INSTALL_DATA@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ transform = @program_transform_name@ NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : CC = @CC@ CXX = @CXX@ LN_S = @LN_S@ MAKEINFO = @MAKEINFO@ PACKAGE = @PACKAGE@ PERL = @PERL@ VERSION = @VERSION@ CFLAGS = -g -Wall CXXFLAGS = -g -Wall bin_PROGRAMS = axgetlist axgetlist_SOURCES = axgetlist.c auth.c calls.c common.c conbbs.c datadir = @prefix@/bin bindir = @prefix@/bin EXTRA_DIST = *.h mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs CONFIG_HEADER = ../config.h CONFIG_CLEAN_FILES = PROGRAMS = $(bin_PROGRAMS) DEFS = @DEFS@ -I. -I$(srcdir) -I.. CPPFLAGS = @CPPFLAGS@ LDFLAGS = @LDFLAGS@ LIBS = @LIBS@ axgetlist_OBJECTS = axgetlist.o auth.o calls.o common.o conbbs.o axgetlist_LDADD = $(LDADD) axgetlist_DEPENDENCIES = axgetlist_LDFLAGS = COMPILE = $(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) CCLD = $(CC) LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(LDFLAGS) -o $@ DIST_COMMON = Makefile.am Makefile.in DISTFILES = $(DIST_COMMON) $(SOURCES) $(HEADERS) $(TEXINFOS) $(EXTRA_DIST) TAR = tar GZIP_ENV = --best SOURCES = $(axgetlist_SOURCES) OBJECTS = $(axgetlist_OBJECTS) all: all-redirect .SUFFIXES: .SUFFIXES: .S .c .o .s $(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4) cd $(top_srcdir) && $(AUTOMAKE) --gnu --include-deps axgetlist/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status cd $(top_builddir) \ && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status mostlyclean-binPROGRAMS: clean-binPROGRAMS: -test -z "$(bin_PROGRAMS)" || rm -f $(bin_PROGRAMS) distclean-binPROGRAMS: maintainer-clean-binPROGRAMS: install-binPROGRAMS: $(bin_PROGRAMS) @$(NORMAL_INSTALL) $(mkinstalldirs) $(DESTDIR)$(bindir) @list='$(bin_PROGRAMS)'; for p in $$list; do \ if test -f $$p; then \ echo " $(INSTALL_PROGRAM) $$p $(DESTDIR)$(bindir)/`echo $$p|sed 's/$(EXEEXT)$$//'|sed '$(transform)'|sed 's/$$/$(EXEEXT)/'`"; \ $(INSTALL_PROGRAM) $$p $(DESTDIR)$(bindir)/`echo $$p|sed 's/$(EXEEXT)$$//'|sed '$(transform)'|sed 's/$$/$(EXEEXT)/'`; \ else :; fi; \ done uninstall-binPROGRAMS: @$(NORMAL_UNINSTALL) list='$(bin_PROGRAMS)'; for p in $$list; do \ rm -f $(DESTDIR)$(bindir)/`echo $$p|sed 's/$(EXEEXT)$$//'|sed '$(transform)'|sed 's/$$/$(EXEEXT)/'`; \ done .c.o: $(COMPILE) -c $< .s.o: $(COMPILE) -c $< .S.o: $(COMPILE) -c $< mostlyclean-compile: -rm -f *.o core *.core clean-compile: distclean-compile: -rm -f *.tab.c maintainer-clean-compile: axgetlist: $(axgetlist_OBJECTS) $(axgetlist_DEPENDENCIES) @rm -f axgetlist $(LINK) $(axgetlist_LDFLAGS) $(axgetlist_OBJECTS) $(axgetlist_LDADD) $(LIBS) tags: TAGS ID: $(HEADERS) $(SOURCES) $(LISP) list='$(SOURCES) $(HEADERS)'; \ unique=`for i in $$list; do echo $$i; done | \ awk ' { files[$$0] = 1; } \ END { for (i in files) print i; }'`; \ here=`pwd` && cd $(srcdir) \ && mkid -f$$here/ID $$unique $(LISP) TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) $(LISP) tags=; \ here=`pwd`; \ list='$(SOURCES) $(HEADERS)'; \ unique=`for i in $$list; do echo $$i; done | \ awk ' { files[$$0] = 1; } \ END { for (i in files) print i; }'`; \ test -z "$(ETAGS_ARGS)$$unique$(LISP)$$tags" \ || (cd $(srcdir) && etags $(ETAGS_ARGS) $$tags $$unique $(LISP) -o $$here/TAGS) mostlyclean-tags: clean-tags: distclean-tags: -rm -f TAGS ID maintainer-clean-tags: distdir = $(top_builddir)/$(PACKAGE)-$(VERSION)/$(subdir) subdir = axgetlist distdir: $(DISTFILES) @for file in $(DISTFILES); do \ d=$(srcdir); \ if test -d $$d/$$file; then \ cp -pr $$d/$$file $(distdir)/$$file; \ else \ test -f $(distdir)/$$file \ || ln $$d/$$file $(distdir)/$$file 2> /dev/null \ || cp -p $$d/$$file $(distdir)/$$file || :; \ fi; \ done info-am: info: info-am dvi-am: dvi: dvi-am check-am: all-am check: check-am installcheck-am: installcheck: installcheck-am install-exec-am: install-binPROGRAMS install-exec: install-exec-am install-data-am: install-data: install-data-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am install: install-am uninstall-am: uninstall-binPROGRAMS uninstall: uninstall-am all-am: Makefile $(PROGRAMS) all-redirect: all-am install-strip: $(MAKE) $(AM_MAKEFLAGS) AM_INSTALL_PROGRAM_FLAGS=-s install installdirs: $(mkinstalldirs) $(DESTDIR)$(bindir) mostlyclean-generic: clean-generic: distclean-generic: -rm -f Makefile $(CONFIG_CLEAN_FILES) -rm -f config.cache config.log stamp-h stamp-h[0-9]* maintainer-clean-generic: mostlyclean-am: mostlyclean-binPROGRAMS mostlyclean-compile \ mostlyclean-tags mostlyclean-generic mostlyclean: mostlyclean-am clean-am: clean-binPROGRAMS clean-compile clean-tags clean-generic \ mostlyclean-am clean: clean-am distclean-am: distclean-binPROGRAMS distclean-compile distclean-tags \ distclean-generic clean-am distclean: distclean-am maintainer-clean-am: maintainer-clean-binPROGRAMS \ maintainer-clean-compile maintainer-clean-tags \ maintainer-clean-generic distclean-am @echo "This command is intended for maintainers to use;" @echo "it deletes files that may require special tools to rebuild." maintainer-clean: maintainer-clean-am .PHONY: mostlyclean-binPROGRAMS distclean-binPROGRAMS clean-binPROGRAMS \ maintainer-clean-binPROGRAMS uninstall-binPROGRAMS install-binPROGRAMS \ mostlyclean-compile distclean-compile clean-compile \ maintainer-clean-compile tags mostlyclean-tags distclean-tags \ clean-tags maintainer-clean-tags distdir info-am info dvi-am dvi check \ check-am installcheck-am installcheck install-exec-am install-exec \ install-data-am install-data install-am install uninstall-am uninstall \ all-redirect all-am all installdirs mostlyclean-generic \ distclean-generic clean-generic maintainer-clean-generic clean \ mostlyclean distclean maintainer-clean # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: ax25mail-utils-0.11.orig/axgetlist/Makefile.am0000644000175000017500000000030207037700673020746 0ustar pg4ipg4i00000000000000CFLAGS = -g -Wall CXXFLAGS = -g -Wall bin_PROGRAMS = axgetlist axgetlist_SOURCES = axgetlist.c auth.c calls.c common.c conbbs.c datadir = @prefix@/bin bindir = @prefix@/bin EXTRA_DIST = *.h ax25mail-utils-0.11.orig/axgetlist/axgetlist.c0000644000175000017500000003405507424751470021077 0ustar pg4ipg4i00000000000000/* axgetlist (c) 2000-2002 by Radek Burget OK2JBG This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the license, or (at your option) any later version. Version 0.10 - started Version 0.11 - 20 jan 02 Added options for collaboration with ulistd (CMD_LIST_FROM etc) Added config file options in order to be able parse month names and fixed position fields */ #include #include #include #include #include #include #include #include "common.h" #include "conbbs.h" #include "auth.h" #ifndef VERSION #define VERSION "???" #endif #define PRGNAME "axgetlist" #define CONFIG_FILE "/etc/ax25/axgetlist.conf" #define LISTPATH "/var/ax25/ulistd" /* strip eoln from string */ #define EX_EOLN(x) if (x[strlen(x)-1] == '\n') x[strlen(x)-1] = '\0' #define EX_EOLNCR(x) if (x[strlen(x)-1] == '\r') x[strlen(x)-1] = '\0' /* default month names */ char *def_month[] = {"Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"}; /* configuration */ char mycall[32]; char bbscall[32]; char bbsport[32]; char cmd_list[256]; char cmd_from[256]; char cmd_disc[256]; int header_lines; char format[256]; char datefmt[16]; char *month[12]; int bpfpos; int lastnum = 1; FILE *list; /* message list */ /* Load configuration for one BBS */ void load_config(const char *bbsname) { FILE *f; char line[256]; char field[30]; char *section; int i; strcpy(mycall, ""); strcpy(bbscall, ""); strcpy(bbsport, ""); strcpy(cmd_list, ""); strcpy(cmd_from, ""); strcpy(cmd_disc, ""); header_lines = -1; strcpy(format, ""); strcpy(datefmt, ""); for (i = 0; i < 12; i++) month[i] = NULL; bpfpos = -1; f = fopen(CONFIG_FILE, "r"); if (f == NULL) { message(MSG_ERROR, "%s: Cannot open config file %s\n", PRGNAME, CONFIG_FILE); exit(1); } /* Find apropriate section */ if (bbsname) { section = (char *) malloc((strlen(bbsname)+3)*sizeof(char)); sprintf(section, "[%s]", bbsname); } while (!feof(f)) { strcpy(line, ""); fgets(line, 255, f); EX_EOLN(line); if (bbsname) { if (strcasecmp(section, line) == 0) break; } else { if (line[0] == '[') break; } } free(section); while (!feof(f)) { strcpy(line, ""); fgets(line, 255, f); EX_EOLN(line); if (line[0] == '[') break; /* start of next section found */ if (line[0] != '#') { char *p; strcpy(field, ""); p = line; while (*p && !isspace(*p)) { strncat(field, p, 1); p++; } while (*p && isspace(*p)) p++; if (strcmp(field, "MYCALL") == 0) strncpy(mycall, p, 31); if (strcmp(field, "BBSCALL") == 0) strncpy(bbscall, p, 31); if (strcmp(field, "BBSPORT") == 0) strncpy(bbsport, p, 31); if (strcmp(field, "CMD_LIST") == 0) strncpy(cmd_list, p, 255); if (strcmp(field, "CMD_LIST_FROM") == 0) strncpy(cmd_from, p, 255); if (strcmp(field, "CMD_DISC") == 0) strncpy(cmd_disc, p, 255); if (strcmp(field, "HEADER_LINES") == 0) { char *endptr; header_lines = strtol(p, &endptr, 10); if (*endptr != '\0') header_lines = -1; } if (strcmp(field, "FORMAT") == 0) strncpy(format, p, 255); if (strcmp(field, "DATEFMT") == 0) strncpy(datefmt, p, 15); if (strcmp(field, "MONTH") == 0) { char *endptr; int m; m = strtol(p, &endptr, 10); if (*endptr == ' ' && m >= 1 && m <= 12) { endptr++; month[m-1] = strdup(endptr); } else { message(MSG_ERROR, "%s: warning: illegal MONTH setting in config file (ignored)", PRGNAME); } } if (strcmp(field, "BPFPOS") == 0) { char *endptr; bpfpos = strtol(p, &endptr, 10); if (*endptr != '\0') bpfpos = -1; } } } /* check configuration */ if (strlen(mycall) == 0) { message(MSG_ERROR, "%s: error: MYCALL is not set in config file\n", PRGNAME); exit(1); } if (strlen(bbscall) == 0) { message(MSG_ERROR, "%s: error: BBSCALL is not set in config file\n", PRGNAME); exit(1); } if (strlen(bbscall) == 0) { message(MSG_ERROR, "%s: error: BBSPORT is not set in config file\n", PRGNAME); exit(1); } if (strlen(cmd_list) == 0) { message(MSG_ERROR, "%s: error: CMD_LIST is not set in config file\n", PRGNAME); exit(1); } if (strlen(cmd_from) == 0) { message(MSG_ERROR, "%s: error: CMD_LIST_FROM is not set in config file\n", PRGNAME); exit(1); } if (strlen(cmd_disc) == 0) { message(MSG_ERROR, "%s: error: CMD_DISC is not set in config file\n", PRGNAME); exit(1); } if (header_lines == -1) { message(MSG_ERROR, "%s: error: HEADER_LINES is not set in config file or invalid value\n", PRGNAME); exit(1); } if (strlen(format) == 0) { message(MSG_ERROR, "%s: error: FORMAT is not set in config file\n", PRGNAME); exit(1); } if (strlen(datefmt) == 0) { message(MSG_ERROR, "%s: error: DATEFMT is not set in config file\n", PRGNAME); exit(1); } if (bpfpos == -1) { message(MSG_ERROR, "%s: error: BPFPOS is not set in config file or invalid value\n", PRGNAME); exit(1); } for (i = 0; i < 12; i++) if (month[i] == NULL) month[i] = def_month[i]; fclose(f); } /* Decode the message entry Returns message number when succesfuly decoded, 0 or -1 when not */ int convert_entry(char *data, char *format, char *result) { int msgnum = -1; char flag; int size; char dest[32]; char bbs[32]; char src[32]; char date[8]; char subj[256]; char dd[8], dm[8], dy[8]; struct tm *tim; time_t ttime; char *p, *q; char tag[32]; char value[256]; int in_macro = 0; /* scan format string and interpret data */ p = format; q = data; while (*p) { if (in_macro) /* inside the */ { if (*p == '>') /* end of the tag */ { in_macro = 0; while(*q && isspace(*q)) q++; strcpy(value, ""); if (*(p+1) == '\0') /* end of the format string */ while(*q) { strncat(value, q, 1); /* copy the rest */ q++; } else while(*q && !isspace(*q) && (!*p || *q != *(p+1))) { strncat(value, q, 1); q++; } if (strcasecmp(tag, "NUM") == 0) msgnum = atoi(value); else if (strcasecmp(tag, "FLAGS") == 0) if (strlen(value) >= bpfpos) flag = value[bpfpos-1]; else flag = '#'; else if (strcasecmp(tag, "SIZE") == 0) size = atoi(value); else if (strcasecmp(tag, "TO") == 0) strcpy(dest, value); else if (strcasecmp(tag, "BBS") == 0) strcpy(bbs, value); else if (strcasecmp(tag, "FROM") == 0) strcpy(src, value); else if (strcasecmp(tag, "DATE") == 0) strcpy(date, value); else if (strcasecmp(tag, "TIME") == 0) ; else if (strcasecmp(tag, "SUBJ") == 0) strcpy(subj, value); else if (strcasecmp(tag, "OTHER") == 0) ; else { message(MSG_ERROR, "Unknown format field in config file (%s)\n", tag); exit(RET_ERR); } } else strncat(tag, p, 1); } else { while(*q && isspace(*q)) q++; while(*p && isspace(*p)) p++; if (*p == '<') { in_macro = 1; strcpy(tag, ""); } else if (*p == '\\') { char pos[1024]; char *pp = pos; int position; strcpy(pos, ""); p++; while (*p && isdigit(*p) && strlen(pos) < 1022) { *pp = *p; p++; pp++; } *pp = '\0'; position = atoi(pos); while (*q && q - data < position) q++; p--; /* step back not to miss following tag */ } else { if (*q == *p) q++; } } p++; } /* scan the date format */ sprintf(dd, "00"); sprintf(dm, "00"); ttime = time(NULL); /* use current year */ tim = localtime(&ttime); strftime(dy, 7, "%y", tim); p = strchr(datefmt, 'd'); /* day */ if (p != NULL) { strcpy(dd, ""); q = date + (p - datefmt); while (*p && *q && *p == 'd' && (isdigit(*q) || *q == ' ')) { strncat(dd, q, 1); q++; p++; } } p = strchr(datefmt, 'm'); /* month */ if (p != NULL) { strcpy(dm, ""); q = date + (p - datefmt); while (*p && *q && *p == 'm' && (isdigit(*q) || *q == ' ')) { strncat(dm, q, 1); q++; p++; } } p = strchr(datefmt, 'M'); /* month in words */ if (p != NULL) { int i; strcpy(dm, ""); q = date + (p - datefmt); while (*p && *q && *p == 'M' && (isalnum(*q) || *q == ' ')) { strncat(dm, q, 1); q++; p++; } for (i = 0; i < 12; i++) if (strcasecmp(month[i], dm) == 0) { sprintf(dm, "%i", i+1); break; } } p = strchr(datefmt, 'm'); /* year */ if (p != NULL) { strcpy(dy, ""); q = date + (p - datefmt); while (*p && *q && *p == 'y' && (isdigit(*q) || *q == ' ')) { strncat(dy, q, 1); q++; p++; } } sprintf(result, "%i %c %6i %-6s@%-6s %-6s %02i%02i%02i %s", msgnum, flag, size, dest, bbs, src, atoi(dy), atoi(dm), atoi(dd), subj); return msgnum; } /* Wait for prompt from BBS. Returns 0 when the connection has been broken */ int wait_prompt(FILE *bbs_stream) { int old_char=0, new_char=0; message(MSG_DEBUG, "Waiting for BBS prompt\n"); do { old_char = new_char; new_char = ffgetc(bbs_stream); } while ((old_char != '>' || new_char != '\r') && new_char != EOF); return (new_char != EOF); } /* fgets_cr - works like fgets, but uses CR as EOLN */ char *fgets_cr(char *s, int size, FILE *stream) { int cnt = 0; int ch; while (cnt < size) { do ch = fgetc(stream); while (ch == EOF && (errno == EINTR || errno == EAGAIN)); if (ch == EOF) {s[cnt++] = '\0'; break;} s[cnt++] = ch; if (ch == '\r') {s[cnt++] = '\0'; break;} } return s; } /*=========================== Mail list operations ========================*/ /* returns the number of last message on the list */ int last_message(char *bcall) { int msgnum = 1; FILE *f; char s[256]; int i, n; sprintf(s, "%s/%s", LISTPATH, bcall); f = fopen(s, "r"); if (f != NULL) { while (!feof(f)) { fgets(s, 255, f); n = sscanf(s, "%i", &i); if (n >= 1) msgnum = i; } fclose(f); } else { f = fopen(s, "w"); if (f == NULL) { message(MSG_ERROR, "Cannot create file %s", s); } else fclose(f); } return msgnum; } /* add next line to list */ void add_line(char *bbs, int msgnum, char *line) { FILE *f; char s[256]; if (msgnum > lastnum) { sprintf(s, "%s/%s", LISTPATH, bbs); f = fopen(s, "a"); if (f == NULL) { message(MSG_ERROR, "Cannot write to file %s\n", s); } fprintf(f, "%s\n", line); lastnum = msgnum; fclose(f); } } /* send the commands separated by semicolons to the BBS */ void send_commands(FILE *stream, char *cmds, int from) { char *p = cmds; while (*p) { while(*p && *p != ';') { if (*p == '$') { char snum[256]; sprintf(snum, "%i", from); fputs(snum, stream); } else fputc(*p, stream); p++; } fputc('\r', stream); if (*p == ';') { wait_prompt(stream); p++; } } } /* wait for disconnect */ void wait_disc(FILE *stream) { int ch; do ch = fgetc(stream); while (ch != -1 || errno != ENOTCONN); } void help() { fprintf(stderr, "Usage: axgetlist [-b BBS_name] [-s start]\n"); } int main(int argc, char **argv) { FILE *stream; char bcall[32]; char s[256]; char line[256]; int i; int msgnum; int empty; int startfrom = -1; char *bbsname = NULL; char *endpos; while ((i = getopt(argc, argv, "b:s:hv")) != -1) { switch(i) { case 'b': bbsname = strdup(optarg); break; case 's': startfrom = strtol(optarg, &endpos, 10); if (*endpos) { help(); exit(1); } break; case 'v': printf("%s / ax25mail-utils %s", PRGNAME, VERSION); exit(0); break; case 'h': case '?': default : help(); exit(1); } } load_config(bbsname); strcpy(bcall, call_call(bbscall)); normalize_call(bcall); normalize_call(mycall); stream = conbbs(mycall, bbsport, bbscall); if (stream == NULL) { message(MSG_ERROR, "Cannot connect BBS"); exit(RET_CONN); } exec_auth_agent(stream, mycall, bcall); strip_ssid(bcall); lastnum = last_message(bcall); wait_prompt(stream); if (startfrom == -1) send_commands(stream, cmd_list, 0); else send_commands(stream, cmd_from, startfrom); /* skip blank lines */ empty = 0; for (i = 0; i < header_lines; i++) { fgets_cr(s, 255, stream); if (strstr(s, ">\r") != NULL) /* prompt detected - the list is empty */ { empty = 1; break; } } /* read message lines */ if (!empty) { do { fgets_cr(s, 255, stream); EX_EOLNCR(s); msgnum = convert_entry(s, format, line); if (msgnum > 0) add_line(bcall, msgnum, line); /*if (msgnum > 0) printf("%s\n", line);*/ } while(msgnum > 0); wait_prompt(stream); } send_commands(stream, cmd_disc, 0); wait_disc(stream); disc_bbs(stream); return 0; } ax25mail-utils-0.11.orig/axgetlist/auth.c0000644000175000017500000000364607013334356020030 0ustar pg4ipg4i00000000000000/* axgetmail (c) 1999 by Radek Burget OK2JBG This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the license, or (at your option) any later version. auth: execute the authorization script */ #include #include #include #include #include #include "common.h" #include "auth.h" #define BUFSIZE 1024 /* run the authorization agent and wait until it exits */ void exec_auth_agent(FILE *bbs_stream, char *mycall, char *bbscall) { int pid; int pipe_in[2], pipe_out[2]; signal(SIGPIPE, SIG_IGN); pipe(pipe_in); pipe(pipe_out); pid = fork(); if (pid == -1) perror("Cannot fork()"); if (pid == 0) /* child process */ { close(pipe_in[0]); dup2(pipe_in[1], 1); //stdout close(pipe_out[1]); dup2(pipe_out[0], 0); //stdin; execlp(AUTH_AGENT, AUTH_AGENT, bbscall, mycall, NULL); perror("execlp"); exit(1); } else /* parent process */ { char buf[BUFSIZE]; int r1, r2, i; int descin, descout; message(MSG_DEBUG, "redirecting authorization data\n"); close(pipe_in[1]); close(pipe_out[0]); fcntl(pipe_in[0], F_SETFL, O_NONBLOCK); descin = descout = fileno(bbs_stream); while (1) { r1 = read(pipe_in[0], buf, BUFSIZE); for (i = 0; i < r1; i++) if (buf[i] == '\n') buf[i] = '\r'; if (r1 > 0) write(descout, buf, r1); else if (r1 == 0 || errno != EAGAIN) break; if (r1 != -1) //don't read data from BBS until we're sure we'll do //some authorization { r2 = read(descin, buf, BUFSIZE); for (i = 0; i < r2; i++) if (buf[i] == '\r') buf[i] = '\n'; if (r2 > 0) write(pipe_out[1], buf, r2); else if (r2 == 0 || errno != EAGAIN) break; } } kill(pid, SIGTERM); } } ax25mail-utils-0.11.orig/axgetlist/calls.c0000644000175000017500000000505606620651510020157 0ustar pg4ipg4i00000000000000/*========================================================================== LinPac: Packet Radio Terminal for Linux (c) Radek Burget OK2JBG (xburge01@stud.fee.vutbr.cz) 1998 This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the license, or (at your option) any later version. calls.cc Functions for callsign conversions Last update 20.5.1998 =========================================================================*/ #include #include #include #include #include #include "calls.h" void norm_call(char *peer, const ax25_address *addr) { const char *cp; char *h = peer; short cnt; for(cnt = 0, cp = (char *)addr; ; cnt++, cp++) { if(*cp == '\100') /* Found a PAD char, skip the rest **/ cnt = 5; else if(cnt < 6) /* Callsign **/ *h++ = (*cp >> 1) & 0x7F; else if(cnt == 6) { /* SSID **/ *h++ = '-'; if((*cp & 0x1e) > 19) { *h++ = '1'; *h++ = ((*cp & 0x1e) >> 1) + '&'; } else { *h++ = ((*cp & 0x1e) >> 1) + '0'; } *h = '\0'; return; } } } int convert_call(char *name, char *buf) { char *p=name; int index=0; int ssid=0; while (index < 6) { if (*p=='-' || *p=='\0') break; if (islower(*p)) *p=toupper(*p); if (!isalnum(*p)) return -1; buf[index]=(*p<<1); p++; index++; } while (index<6) buf[index++]=' '<<1; if (*p=='-') { p++; if (sscanf(p,"%d",&ssid)!=1 || ssid<0 || ssid>15) return -1; } buf[6]=((ssid+'0')<<1) & 0x1E; return 0; } int convert_path(char *call, struct full_sockaddr_ax25 *sax) { int len = 0; char *bp, *np; char *addrp; int n = 0; char *tmp = strdup(call); if (tmp == NULL) return -1; bp = tmp; len = sizeof (struct sockaddr_ax25); addrp = sax->fsa_ax25.sax25_call.ax25_call; do { while (*bp && isspace(*bp)) bp++; np = bp; while (*np && !isspace(*np)) np++; if (*np) *np++ = '\0'; if (n==1 && (strcasecmp(bp,"V")==0 || strcasecmp(bp,"VIA")==0) ) { bp = np; continue; } if (convert_call(bp, addrp) == -1) return -1; bp=np; addrp = sax->fsa_digipeater[n].ax25_call; n++; if (n==2) len = sizeof(struct full_sockaddr_ax25); } while (nfsa_ax25.sax25_ndigis = n-1; sax->fsa_ax25.sax25_family = AF_AX25; return len; } ax25mail-utils-0.11.orig/axgetlist/common.c0000644000175000017500000000416707027750236020362 0ustar pg4ipg4i00000000000000/* axgetmail (c) 1999 by Radek Burget OK2JBG This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the license, or (at your option) any later version. */ #include #include #include #include #include #include #include "common.h" int msg_level = MSG_RESULT; void message(int level, const char *fmt, ...) { va_list argptr; if (level >= msg_level) { va_start(argptr, fmt); /*if (level == MSG_ERROR) vfprintf(stderr, fmt, argptr); else vfprintf(stdout, fmt, argptr);*/ vfprintf(stdout, fmt, argptr); va_end(argptr); } } int call_ssid(const char *src) { char *p = (char *)(src); while (*p != '\0' && *p != '-') p++; if (*p) p++; if (*p) return atoi(p); else return 0; } char *call_call(const char *src) { static char s[15]; char *p = (char *)(src); strcpy(s, ""); while (*p && isalnum(*p) && strlen(s) < 6) {strncat(s, p, 1); p++;} return s; } char *strip_ssid(char *src) { if (call_ssid(src) == 0) { char *p = src; while (*p != '\0' && *p != '-') p++; *p = '\0'; } return src; } char *normalize_call(char *call) { char c[8]; int ssid; char *p; strcpy(c, call_call(call)); ssid = call_ssid(call); if (ssid == 0) strcpy(call, c); else sprintf(call, "%s-%i", c, ssid); for (p = call; *p; p++) *p = toupper(*p); return call; } /* Compare callsign only (not the SSID) */ int compare_call(char *call1, char *call2) { char c1[15]; char c2[15]; strcpy(c1, call_call(call1)); strcpy(c2, call_call(call2)); return (strcasecmp(c1, c2) == 0); } /* wait for the character and read it */ int ffgetc(FILE *f) { int ch; do { ch = fgetc(f); } while (ch == -1 && (errno == EAGAIN || errno == EINTR)); if (ch == -1) { message(MSG_ERROR, "Connection failure\n"); exit(RET_ERR); } return ch; } int is_empty(char *line) { char *p = line; while (*p) { if (!isspace(*p)) return 0; else p++; } return 1; } ax25mail-utils-0.11.orig/axgetlist/conbbs.c0000644000175000017500000001037407013331520020317 0ustar pg4ipg4i00000000000000/* axgetmail (c) 1999 by Radek Burget OK2JBG This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the license, or (at your option) any later version. conbbs: connect the BBS */ #include #include #include #include #include #include #include #include #include #include #include #include #include "calls.h" #include "common.h" #include "conbbs.h" #ifndef VERSION #define VERSION "0.07" #endif #define AXPORTS "/etc/ax25/axports" #define CONTIME 300 //connect timeout [seconds] #define BUFSIZE 1024 char mycall[20]; /* my callsign */ char bbscall[20]; /* BBS callsign */ char bcall[20]; /* Base callsign of port */ char bbspath[256]; /* path to BBS */ int sock; /* the socket for connecting BBS */ int connected = 0; /* is the BBS connected ? */ FILE *bbs_stream; /* stream for communication with BBS */ /*----------------------------------------------------------------------*/ /* read axports file and translate the port name to a base callsign*/ int find_port(char *name, char *call) { char buf[256]; FILE *f; int found = 0; int speed, paclen, win; char descript[256]; char pname[256]; char pcall[256]; f = fopen(AXPORTS, "r"); if (f == NULL) return 0; while (!feof(f)) { strcpy(buf, ""); fgets(buf, 255, f); if (strlen(buf) != 0 && buf[0] != '#') { int n; n = sscanf(buf, "%s %s %i %i %i %s", pname, pcall, &speed, &paclen, &win, descript); if (n == 6 && strcmp(pname, name) == 0) { strcpy(call, pcall); found = 1; break; } } } fclose(f); return found; } /*----------------------------------------------------------------------*/ /* wait until the socket is connected */ int wait_connect(int sock) { fd_set rfds; struct timeval tv; int rc; FD_ZERO(&rfds); FD_SET(sock, &rfds); tv.tv_sec = CONTIME; tv.tv_usec = 0; rc = select(sock+1, &rfds, NULL, NULL, &tv); if (rc > 0 && FD_ISSET(sock, &rfds)) { return 1; } return 0; } /* Connect the BBS. Return 0 when unsuccesful. */ int connect_bbs() { int len, lenp; char path[256]; struct full_sockaddr_ax25 addr, addrp; int rc; sock = socket(AF_AX25, SOCK_SEQPACKET, PF_AX25); if (sock == -1) { message(MSG_ERROR, "Cannot create socket : %s\n", strerror(errno)); return 0; } fcntl(sock, F_SETFL, O_NONBLOCK); sprintf(path, "%s %s", mycall, bcall); len = convert_path(path, &addr); if (len == -1) { message(MSG_ERROR, "Invalid path %s\n", path); return 0; } if (bind(sock, (struct sockaddr *)&addr, len) == -1) { message(MSG_ERROR, "Cannot bind() : %s\n", strerror(errno)); return 0; } //connect new socket lenp = convert_path(bbspath, &addrp); if (connect(sock, (struct sockaddr *)&addrp, lenp) == -1) if (errno != EINPROGRESS) { message(MSG_ERROR, "Cannot connect() : %s\n", strerror(errno)); return 0; } /* wait for connection */ rc = wait_connect(sock); if (rc) { connected = 1; } return rc; } /*----------------------------------------------------------------------*/ FILE *conbbs(char *_mycall, char *_port, char *_dest) { strcpy(mycall, _mycall); normalize_call(mycall); strcpy(bbspath, _dest); if (!find_port(_port, bcall)) { message(MSG_ERROR, "Unknown port '%s'\n", _port); return NULL; } normalize_call(bcall); message(MSG_DEBUG, "conbbs params:\n" "BBS : `%s'\n" "Mycall : `%s'\n" "Port : `%s'\n" "Base call : `%s'\n", bbspath, mycall, _port, bcall); if (!connect_bbs()) return NULL; bbs_stream = fdopen(sock, "r+"); return bbs_stream; } /* disconnect BBS */ void disc_bbs(FILE *bbs_stream) { if (connected) { message(MSG_INFO, "Disconnecting BBS\n"); fclose(bbs_stream); close(sock); connected = 0; } } ax25mail-utils-0.11.orig/axgetlist/auth.h0000644000175000017500000000110507010616062020013 0ustar pg4ipg4i00000000000000/* axgetmail (c) 1999 by Radek Burget OK2JBG This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the license, or (at your option) any later version. auth: execute the authorization script */ #ifndef AUTH_H #define AUTH_H #include #define AUTH_AGENT "/var/ax25/auth_agent" /* run the authorization agent and wait until it exits */ void exec_auth_agent(FILE *bbs_stream, char *mycall, char *bbscall); #endif ax25mail-utils-0.11.orig/axgetlist/calls.h0000644000175000017500000000145706601401012020152 0ustar pg4ipg4i00000000000000/*========================================================================== LinPac: Packet Radio Terminal for Linux (c) Radek Burget OK2JBG (xburge01@stud.fee.vutbr.cz) 1998 This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the license, or (at your option) any later version. calls.h Functions for callsign conversions Last update 20.5.1998 =========================================================================*/ #include #ifndef CALLS_H #define CALLS_H void norm_call(char *peer, const ax25_address *addr); int convert_call(char *name, char *buf); int convert_path(char *call, struct full_sockaddr_ax25 *sax); #endif ax25mail-utils-0.11.orig/axgetlist/common.h0000644000175000017500000000242107027750332020353 0ustar pg4ipg4i00000000000000/* axgetmail (c) 1999 by Radek Burget OK2JBG This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the license, or (at your option) any later version. */ #ifndef COMMON_H #define COMMON_H #include /* message priority levels */ #define MSG_DEBUG 0 #define MSG_INFO 1 #define MSG_RESULT 2 #define MSG_ERROR 3 /* the same as MSG_RESULT but written to stderr */ /* program return codes */ #define RET_OK 0 #define RET_ERR 1 /* some other error */ #define RET_CONN 2 /* cannot connect BBS */ #define RET_MSG 3 /* cannot read message */ #define RET_WRITE 4 /* cannot write message */ extern int msg_level; /* the lowest message priority to be displayed */ /* print the message when it's important enough */ void message(int level, const char *fmt, ...); /* callsign stransformations */ int call_ssid(const char *src); char *call_call(const char *src); char *strip_ssid(char *src); char *normalize_call(char *call); int compare_call(char *call1, char *call2); /* wait for the character and read it */ int ffgetc(FILE *f); /* check if line contains other characters than whitespaces */ int is_empty(char *line); #endif ax25mail-utils-0.11.orig/axgetlist/conbbs.h0000644000175000017500000000105107010601050020307 0ustar pg4ipg4i00000000000000/* axgetmail (c) 1999 by Radek Burget OK2JBG This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the license, or (at your option) any later version. conbbs: connect the BBS */ #ifndef CONBBS_H #define CONBBS_H #include FILE *conbbs(char *_mycall, char *_port, char *_dest); /* connect the BBS */ void disc_bbs(FILE *bbs_stream); /* disconnect BBS */ #endif ax25mail-utils-0.11.orig/axgetmail/0000755000175000017500000000000007425043442016661 5ustar pg4ipg4i00000000000000ax25mail-utils-0.11.orig/axgetmail/Makefile.in0000644000175000017500000002156507425043442020737 0ustar pg4ipg4i00000000000000# Makefile.in generated automatically by automake 1.4-p4 from Makefile.am # Copyright (C) 1994, 1995-8, 1999 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. SHELL = @SHELL@ srcdir = @srcdir@ top_srcdir = @top_srcdir@ VPATH = @srcdir@ prefix = @prefix@ exec_prefix = @exec_prefix@ sbindir = @sbindir@ libexecdir = @libexecdir@ sysconfdir = @sysconfdir@ sharedstatedir = @sharedstatedir@ localstatedir = @localstatedir@ libdir = @libdir@ infodir = @infodir@ mandir = @mandir@ includedir = @includedir@ oldincludedir = /usr/include DESTDIR = pkgdatadir = $(datadir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ top_builddir = .. ACLOCAL = @ACLOCAL@ AUTOCONF = @AUTOCONF@ AUTOMAKE = @AUTOMAKE@ AUTOHEADER = @AUTOHEADER@ INSTALL = @INSTALL@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ $(AM_INSTALL_PROGRAM_FLAGS) INSTALL_DATA = @INSTALL_DATA@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ transform = @program_transform_name@ NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : CC = @CC@ CXX = @CXX@ LN_S = @LN_S@ MAKEINFO = @MAKEINFO@ PACKAGE = @PACKAGE@ PERL = @PERL@ VERSION = @VERSION@ CFLAGS = -g -Wall -funsigned-char CXXFLAGS = -g -Wall -funsigned-char bin_PROGRAMS = axgetmail axgetmsg axgetmail_SOURCES = auth.c axgetmail.c calls.c common.c conbbs.c getmsg.c lzhuf.c readmsg.c axgetmsg_SOURCES = auth.c axgetmsg.c calls.c common.c conbbs.c getmsg.c lzhuf.c readmsg.c data_SCRIPTS = msgcleanup datadir = @prefix@/bin bindir = @prefix@/bin EXTRA_DIST = $(data_SCRIPTS) *.h mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs CONFIG_HEADER = ../config.h CONFIG_CLEAN_FILES = msgcleanup PROGRAMS = $(bin_PROGRAMS) DEFS = @DEFS@ -I. -I$(srcdir) -I.. CPPFLAGS = @CPPFLAGS@ LDFLAGS = @LDFLAGS@ LIBS = @LIBS@ axgetmail_OBJECTS = auth.o axgetmail.o calls.o common.o conbbs.o \ getmsg.o lzhuf.o readmsg.o axgetmail_LDADD = $(LDADD) axgetmail_DEPENDENCIES = axgetmail_LDFLAGS = axgetmsg_OBJECTS = auth.o axgetmsg.o calls.o common.o conbbs.o getmsg.o \ lzhuf.o readmsg.o axgetmsg_LDADD = $(LDADD) axgetmsg_DEPENDENCIES = axgetmsg_LDFLAGS = SCRIPTS = $(data_SCRIPTS) COMPILE = $(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) CCLD = $(CC) LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(LDFLAGS) -o $@ DIST_COMMON = Makefile.am Makefile.in msgcleanup.in DISTFILES = $(DIST_COMMON) $(SOURCES) $(HEADERS) $(TEXINFOS) $(EXTRA_DIST) TAR = tar GZIP_ENV = --best SOURCES = $(axgetmail_SOURCES) $(axgetmsg_SOURCES) OBJECTS = $(axgetmail_OBJECTS) $(axgetmsg_OBJECTS) all: all-redirect .SUFFIXES: .SUFFIXES: .S .c .o .s $(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4) cd $(top_srcdir) && $(AUTOMAKE) --gnu --include-deps axgetmail/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status cd $(top_builddir) \ && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status msgcleanup: $(top_builddir)/config.status msgcleanup.in cd $(top_builddir) && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status mostlyclean-binPROGRAMS: clean-binPROGRAMS: -test -z "$(bin_PROGRAMS)" || rm -f $(bin_PROGRAMS) distclean-binPROGRAMS: maintainer-clean-binPROGRAMS: install-binPROGRAMS: $(bin_PROGRAMS) @$(NORMAL_INSTALL) $(mkinstalldirs) $(DESTDIR)$(bindir) @list='$(bin_PROGRAMS)'; for p in $$list; do \ if test -f $$p; then \ echo " $(INSTALL_PROGRAM) $$p $(DESTDIR)$(bindir)/`echo $$p|sed 's/$(EXEEXT)$$//'|sed '$(transform)'|sed 's/$$/$(EXEEXT)/'`"; \ $(INSTALL_PROGRAM) $$p $(DESTDIR)$(bindir)/`echo $$p|sed 's/$(EXEEXT)$$//'|sed '$(transform)'|sed 's/$$/$(EXEEXT)/'`; \ else :; fi; \ done uninstall-binPROGRAMS: @$(NORMAL_UNINSTALL) list='$(bin_PROGRAMS)'; for p in $$list; do \ rm -f $(DESTDIR)$(bindir)/`echo $$p|sed 's/$(EXEEXT)$$//'|sed '$(transform)'|sed 's/$$/$(EXEEXT)/'`; \ done .c.o: $(COMPILE) -c $< .s.o: $(COMPILE) -c $< .S.o: $(COMPILE) -c $< mostlyclean-compile: -rm -f *.o core *.core clean-compile: distclean-compile: -rm -f *.tab.c maintainer-clean-compile: axgetmail: $(axgetmail_OBJECTS) $(axgetmail_DEPENDENCIES) @rm -f axgetmail $(LINK) $(axgetmail_LDFLAGS) $(axgetmail_OBJECTS) $(axgetmail_LDADD) $(LIBS) axgetmsg: $(axgetmsg_OBJECTS) $(axgetmsg_DEPENDENCIES) @rm -f axgetmsg $(LINK) $(axgetmsg_LDFLAGS) $(axgetmsg_OBJECTS) $(axgetmsg_LDADD) $(LIBS) install-dataSCRIPTS: $(data_SCRIPTS) @$(NORMAL_INSTALL) $(mkinstalldirs) $(DESTDIR)$(datadir) @list='$(data_SCRIPTS)'; for p in $$list; do \ if test -f $$p; then \ echo " $(INSTALL_SCRIPT) $$p $(DESTDIR)$(datadir)/`echo $$p|sed '$(transform)'`"; \ $(INSTALL_SCRIPT) $$p $(DESTDIR)$(datadir)/`echo $$p|sed '$(transform)'`; \ else if test -f $(srcdir)/$$p; then \ echo " $(INSTALL_SCRIPT) $(srcdir)/$$p $(DESTDIR)$(datadir)/`echo $$p|sed '$(transform)'`"; \ $(INSTALL_SCRIPT) $(srcdir)/$$p $(DESTDIR)$(datadir)/`echo $$p|sed '$(transform)'`; \ else :; fi; fi; \ done uninstall-dataSCRIPTS: @$(NORMAL_UNINSTALL) list='$(data_SCRIPTS)'; for p in $$list; do \ rm -f $(DESTDIR)$(datadir)/`echo $$p|sed '$(transform)'`; \ done tags: TAGS ID: $(HEADERS) $(SOURCES) $(LISP) list='$(SOURCES) $(HEADERS)'; \ unique=`for i in $$list; do echo $$i; done | \ awk ' { files[$$0] = 1; } \ END { for (i in files) print i; }'`; \ here=`pwd` && cd $(srcdir) \ && mkid -f$$here/ID $$unique $(LISP) TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) $(LISP) tags=; \ here=`pwd`; \ list='$(SOURCES) $(HEADERS)'; \ unique=`for i in $$list; do echo $$i; done | \ awk ' { files[$$0] = 1; } \ END { for (i in files) print i; }'`; \ test -z "$(ETAGS_ARGS)$$unique$(LISP)$$tags" \ || (cd $(srcdir) && etags $(ETAGS_ARGS) $$tags $$unique $(LISP) -o $$here/TAGS) mostlyclean-tags: clean-tags: distclean-tags: -rm -f TAGS ID maintainer-clean-tags: distdir = $(top_builddir)/$(PACKAGE)-$(VERSION)/$(subdir) subdir = axgetmail distdir: $(DISTFILES) @for file in $(DISTFILES); do \ d=$(srcdir); \ if test -d $$d/$$file; then \ cp -pr $$d/$$file $(distdir)/$$file; \ else \ test -f $(distdir)/$$file \ || ln $$d/$$file $(distdir)/$$file 2> /dev/null \ || cp -p $$d/$$file $(distdir)/$$file || :; \ fi; \ done info-am: info: info-am dvi-am: dvi: dvi-am check-am: all-am check: check-am installcheck-am: installcheck: installcheck-am install-exec-am: install-binPROGRAMS install-exec: install-exec-am install-data-am: install-dataSCRIPTS install-data: install-data-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am install: install-am uninstall-am: uninstall-binPROGRAMS uninstall-dataSCRIPTS uninstall: uninstall-am all-am: Makefile $(PROGRAMS) $(SCRIPTS) all-redirect: all-am install-strip: $(MAKE) $(AM_MAKEFLAGS) AM_INSTALL_PROGRAM_FLAGS=-s install installdirs: $(mkinstalldirs) $(DESTDIR)$(bindir) $(DESTDIR)$(datadir) mostlyclean-generic: clean-generic: distclean-generic: -rm -f Makefile $(CONFIG_CLEAN_FILES) -rm -f config.cache config.log stamp-h stamp-h[0-9]* maintainer-clean-generic: mostlyclean-am: mostlyclean-binPROGRAMS mostlyclean-compile \ mostlyclean-tags mostlyclean-generic mostlyclean: mostlyclean-am clean-am: clean-binPROGRAMS clean-compile clean-tags clean-generic \ mostlyclean-am clean: clean-am distclean-am: distclean-binPROGRAMS distclean-compile distclean-tags \ distclean-generic clean-am distclean: distclean-am maintainer-clean-am: maintainer-clean-binPROGRAMS \ maintainer-clean-compile maintainer-clean-tags \ maintainer-clean-generic distclean-am @echo "This command is intended for maintainers to use;" @echo "it deletes files that may require special tools to rebuild." maintainer-clean: maintainer-clean-am .PHONY: mostlyclean-binPROGRAMS distclean-binPROGRAMS clean-binPROGRAMS \ maintainer-clean-binPROGRAMS uninstall-binPROGRAMS install-binPROGRAMS \ mostlyclean-compile distclean-compile clean-compile \ maintainer-clean-compile uninstall-dataSCRIPTS install-dataSCRIPTS tags \ mostlyclean-tags distclean-tags clean-tags maintainer-clean-tags \ distdir info-am info dvi-am dvi check check-am installcheck-am \ installcheck install-exec-am install-exec install-data-am install-data \ install-am install uninstall-am uninstall all-redirect all-am all \ installdirs mostlyclean-generic distclean-generic clean-generic \ maintainer-clean-generic clean mostlyclean distclean maintainer-clean # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: ax25mail-utils-0.11.orig/axgetmail/Makefile.am0000644000175000017500000000066707011067621020722 0ustar pg4ipg4i00000000000000CFLAGS = -g -Wall -funsigned-char CXXFLAGS = -g -Wall -funsigned-char bin_PROGRAMS = axgetmail axgetmsg axgetmail_SOURCES = auth.c axgetmail.c calls.c common.c conbbs.c getmsg.c \ lzhuf.c readmsg.c axgetmsg_SOURCES = auth.c axgetmsg.c calls.c common.c conbbs.c getmsg.c \ lzhuf.c readmsg.c data_SCRIPTS = msgcleanup datadir = @prefix@/bin bindir = @prefix@/bin EXTRA_DIST = $(data_SCRIPTS) *.h ax25mail-utils-0.11.orig/axgetmail/msgcleanup.in0000755000175000017500000001030506767663265021374 0ustar pg4ipg4i00000000000000#! @PERL@ #---------------------------------------------------------------------------- # ax25mail-tools # # msgcleanup - scan the message list and delete all messages with exceeded # lifetime (mark them as deleted and delete message files) # The message list is truncated to first present or first # expired message, it's not changed when no messages expire. # # Version 0.02 # # (c) Radek Burget OK2JBG 1999 # # Usage: msgcleanup #---------------------------------------------------------------------------- # Normal settings: #List path $LIST_PATH = "/var/ax25/ulistd"; #Bulletin path $BULLETIN_PATH = "/var/ax25/mail"; #Settings file $CONF_FILE = "/etc/ax25/bulletins"; #Temp output file $TEMP_FILE = "/tmp/msgcleanup_temp.$$"; #Default lifetime (days) $DEF_LIFE = 30; #---------------------------------------------------------------------------- #Seconds a day $SEC_A_DAY = 24*3600; #---------------------------------------------------------------------------- # Bulletin list format format TEMP = @ @>>>>> @<<<<<@<<<<<< @<<<<< @<<<<< @<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< $binfo[1], $binfo[2], $binfo[3], $binfo[4], $binfo[5], $binfo[6], $subj . #---------------------------------------------------------------------------- if (@ARGV != 1) { print "Usage: msgcleanup \n"; exit 0; } #Number of deleted messages $deleted = 0; #Output flag $output = 0; $bbsname = uc $ARGV[0]; # Open files $bbs_dir = $BULLETIN_PATH . "/" . $bbsname; die "The bulletin directory for $bbsname ($bbs_dir) doesn't exist\n" unless -d $bbs_dir; $list_name = $LIST_PATH . "/" . $bbsname; open LIST, $list_name or die "Cannot open list file for $bbsname ($list_name)\n"; # Read config file to the 'lifes' hash $conf_name = $CONF_FILE . "." . $bbsname; open CONF, $conf_name or print "$0 : Warning : No config file for $bbsname - using defaults\n"; while () { chop; if ($_ !~ /^#/) { @line = split /\W+/; if (@line == 2) { $lifes{uc $line[0]} = $line[1]; } else { die "Invalid line in config file ($_)\n" } } } close CONF; # Open temp output open TEMP, ">".$TEMP_FILE or die "Cannot write to $TEMP_FILE\n"; # Change default lifetime if specified $DEF_LIFE = $lifes{'DEFAULT'} if $lifes{'DEFAULT'}; print "Default bulletin lifetime: $DEF_LIFE day(s)\n"; # Scan the list and compare the dates $now = time; while () { chop; # Read and split message info @binfo = split /\s+/; $num = $binfo[0]; #first entry - message number $flag = $binfo[1]; #second entry - flags # Split destination to NAME and @FWD if ($binfo[3] =~ /@/) { for ($i = @binfo; $i >= 4; $i--) {$binfo[$i+1] = $binfo[$i];} $binfo[4] = substr $binfo[3], index($binfo[3], "@"); $binfo[3] = substr $binfo[3], 0, index($binfo[3], "@"); } if ($binfo[4] !~ /^@/) { for ($i = @binfo; $i >= 4; $i--) {$binfo[$i+1] = $binfo[$i];} $binfo[4] = ""; } $bname = $binfo[3]; #bulletin name # Extract subject if ($flag =~ /#/) { $subj = ""; } else { $subj = substr $_, index($_, $binfo[6])+7; } # Read message file info ($dev,$ino,$mode,$nlink,$uid,$gid,$rdev,$size, $atime,$mtime,$ctime,$blksize,$blocks) = stat($bbs_dir."/".$num); # $nlink should be >0 when the file exists if ($nlink && ($flag =~ /[P,B]/)) { $output = 1; ### determine the lifetime for this message ### if ($lifes{$bname}) {$lifetime = $lifes{$bname};} else {$lifetime = $DEF_LIFE;} ### lifetime in seconds ### $lifetime *= $SEC_A_DAY; ### check the message dates ### if ($mtime < ($now - $lifetime)) { $binfo[1] = "D"; ##FLAG = DELETED unlink($bbs_dir."/".$num); $deleted++; } } if ($output) { print TEMP "$num "; write TEMP; } } #Do not allow the empty list print "$num #\n" if ($output == 0); #Cliose the files close TEMP; close LIST; if ($deleted) ##if some messages expired { rename ($TEMP_FILE, $list_name) or die "rename: $!\n"; } else { unlink $TEMP_FILE; } print "$deleted message(s) deleted.\n"; #### END OF SCRIPT ######################################################### ax25mail-utils-0.11.orig/axgetmail/auth.c0000644000175000017500000000364607013334356017777 0ustar pg4ipg4i00000000000000/* axgetmail (c) 1999 by Radek Burget OK2JBG This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the license, or (at your option) any later version. auth: execute the authorization script */ #include #include #include #include #include #include "common.h" #include "auth.h" #define BUFSIZE 1024 /* run the authorization agent and wait until it exits */ void exec_auth_agent(FILE *bbs_stream, char *mycall, char *bbscall) { int pid; int pipe_in[2], pipe_out[2]; signal(SIGPIPE, SIG_IGN); pipe(pipe_in); pipe(pipe_out); pid = fork(); if (pid == -1) perror("Cannot fork()"); if (pid == 0) /* child process */ { close(pipe_in[0]); dup2(pipe_in[1], 1); //stdout close(pipe_out[1]); dup2(pipe_out[0], 0); //stdin; execlp(AUTH_AGENT, AUTH_AGENT, bbscall, mycall, NULL); perror("execlp"); exit(1); } else /* parent process */ { char buf[BUFSIZE]; int r1, r2, i; int descin, descout; message(MSG_DEBUG, "redirecting authorization data\n"); close(pipe_in[1]); close(pipe_out[0]); fcntl(pipe_in[0], F_SETFL, O_NONBLOCK); descin = descout = fileno(bbs_stream); while (1) { r1 = read(pipe_in[0], buf, BUFSIZE); for (i = 0; i < r1; i++) if (buf[i] == '\n') buf[i] = '\r'; if (r1 > 0) write(descout, buf, r1); else if (r1 == 0 || errno != EAGAIN) break; if (r1 != -1) //don't read data from BBS until we're sure we'll do //some authorization { r2 = read(descin, buf, BUFSIZE); for (i = 0; i < r2; i++) if (buf[i] == '\r') buf[i] = '\n'; if (r2 > 0) write(pipe_out[1], buf, r2); else if (r2 == 0 || errno != EAGAIN) break; } } kill(pid, SIGTERM); } } ax25mail-utils-0.11.orig/axgetmail/axgetmail.c0000644000175000017500000002423007424537062021006 0ustar pg4ipg4i00000000000000/* axgetmail - read messages from FBB BBS using compressed download (c) 1999-2002 by Radek Burget OK2JBG This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the license, or (at your option) any later version. */ #include #include #include #include #include #include #include #include "common.h" #include "getmsg.h" /* program name */ #define PRGNAME "axgetmail" #ifndef VERSION #define VERSION "???" #endif /* verbosity level */ #define MSG_LEVEL MSG_RESULT #define MAX_BLTNS 64 /* max. num of bbs */ #define DEFAULT_GID 100 /* default GID for messages */ #define CONFIG_FILE "/etc/ax25/axgetmail.conf" /* config file name */ #define AXPORTS "/etc/ax25/axports" /* axports file */ #define AX25_CALLS "/etc/ax25/logins" /* list of users */ #define MAIL_PATH "/var/ax25/mail" /* directory for storing msgs */ #define LIST_PATH "/var/ax25/ulistd" /* directory for storing lists */ /* strip eoln from string */ #define EX_EOLN(x) if (x[strlen(x)-1] == '\n') x[strlen(x)-1] = '\0' char bbscall[256]; /* BBS callsign (from cmdline) */ char user_home[256]; /* user's home dir ($HOME) */ /* config */ char bltcall[20]; /* callsign for bulletins */ int perssid; /* personal SSID */ int mail_group; /* group of message files */ char homedir[256]; /* home directory of LinPac ($HOME/homedir) */ char port_name[256]; /* port name */ char bbspath[256]; /* connect path to BBS */ char bulletin[MAX_BLTNS][20]; /* bulletin names */ int num_bulletins; /* number of bulletins */ /* read the home directory of user */ int get_home_dir(char *login, char *home) { struct passwd *pwdentry = getpwnam(login); if (pwdentry) { strcpy(home, pwdentry->pw_dir); return 1; } return 0; } /* does the destination directory exist ? */ int dest_exist(char *home, char *homedir, char *bbs) { char name[256]; struct stat s; sprintf(name, "%s/%s/%s", user_home, homedir, bbs); if (stat(name, &s) != -1 && S_ISDIR(s.st_mode)) return 1; else return 0; } /* returns true when bulletin specification 'bname' matches to dest@fwd */ int match_dnload(char *dest, char *fwd, char *bname) { char bcall[35]; char bfwd[20]; char *p = strchr(bname, '@'); if (p == NULL) {strcpy(bcall, bname); strcpy(bfwd, "*");} else { *p = '\0'; strcpy(bcall, bname); strcpy(bfwd, p+1); *p = '@'; } if (*bcall && strcasecmp(bcall, dest) != 0) return 0; if (bfwd[0] != '*' && strcasecmp(bfwd, fwd) != 0) return 0; return 1; } /*========================================================================*/ /* Load configuration for one BBS */ void load_config(char *call) { FILE *f; char pattern[256]; char line[256]; char pname[256]; int found = 0; char field[30]; char value[64]; char *p, *q; strcpy(bltcall, ""); strcpy(homedir, ""); perssid = -1; mail_group = DEFAULT_GID; f = fopen(CONFIG_FILE, "r"); if (f == NULL) { message(MSG_ERROR, "%s: Cannot open config file %s\n", PRGNAME, CONFIG_FILE); exit(1); } /* Find the BBS entry */ sprintf(pattern, "[%s", call); while (!feof(f)) { strcpy(line, ""); fgets(line, 255, f); EX_EOLN(line); if (line[0] != '[' && line[0] != '#') /* BBS entries haven't started */ { sscanf(line, "%s %s", field, value); /* configuration entry */ if (strcmp(field, "HOMEDIR") == 0) strcpy(homedir, value); if (strcmp(field, "BLTCALL") == 0) strcpy(bltcall, value); if (strcmp(field, "PERSSID") == 0) { char *endptr; perssid = strtol(value, &endptr, 10); if (*endptr != '\0') perssid = -1; } if (strcmp(field, "MAILGROUP") == 0) { struct group *grentry = getgrnam(value); if (grentry) mail_group = grentry->gr_gid; else { message(MSG_ERROR, "%s: error: MAILGROUP is incorrect in config file\n", PRGNAME); exit(1); } } } else if (strncasecmp(line, pattern, strlen(pattern)) == 0 && (line[strlen(pattern)] == '-' || line[strlen(pattern)] == ']')) { found = 1; /* BBS entry found */ break; } } /* check configuration */ if (strlen(homedir) == 0) { message(MSG_ERROR, "%s: error: HOMEDIR is not set in config file\n", PRGNAME); exit(1); } if (strlen(bltcall) == 0) { message(MSG_ERROR, "%s: error: BLTCALL is not set in config file\n", PRGNAME); exit(1); } if (perssid == -1) { message(MSG_ERROR, "%s: error: PERSSID is not set in config file or invalid value\n", PRGNAME); exit(1); } if (!found) { message(MSG_ERROR, "%s: %s has no entry in %s\n", PRGNAME, call, CONFIG_FILE); exit(1); } /* read path */ fgets(bbspath, 255, f); EX_EOLN(bbspath); p = bbspath; q = pname; while (*p && !isspace(*p)) {*q = *p; p++; q++;} *q = '\0'; while (*p && isspace(*p)) p++; strcpy(bbspath, p); strcpy(port_name, pname); /* read bulletin names */ num_bulletins = 0; while (!feof(f)) { strcpy(bulletin[num_bulletins], ""); fgets(bulletin[num_bulletins], 19, f); EX_EOLN(bulletin[num_bulletins]); if (strlen(bulletin[num_bulletins]) > 0 && bulletin[num_bulletins][0] != '[' && num_bulletins < MAX_BLTNS) num_bulletins++; else break; } fclose(f); } /* is message present ? */ int msg_present(int num, char *bbs, int priv, char *mycall) { char name[256]; struct stat s; if (priv) sprintf(name, "%s/%s/%s/%i", user_home, homedir, bbs, num); else sprintf(name, "%s/%s/%i", MAIL_PATH, bbs, num); if (stat(name, &s) != -1 && !S_ISDIR(s.st_mode)) return 1; else return 0; } /* check if the message should be downloaded and download it */ int check_download(int num, char *dest, char *fwd, int get_priv, char *mycall) { int i; int dnload = 0; int priv; for (i = 0; i < num_bulletins; i++) { if (!get_priv) /* check in bulletins */ { if (match_dnload(dest, fwd, bulletin[i])) { dnload = 1; priv = 0; break; } } else /* check private msgs */ { if (strcasecmp(bulletin[i], "*pers*") == 0 && compare_call(dest, mycall)) { dnload = 1; priv = 1; break; } } } if (dnload && !msg_present(num, bbscall, priv, mycall) && (!priv || dest_exist(user_home, homedir, bbscall))) { int result; char dest_dir[256]; if (priv) sprintf(dest_dir, "%s/%s/%s", user_home, homedir, bbscall); else sprintf(dest_dir, "%s/%s", MAIL_PATH, bbscall); result = get_msg(mycall, port_name, bbspath, num, priv, dest_dir); switch (result) { case RET_ERR: message(MSG_ERROR, "Unable to read message %i\n", num); break; case RET_CONN: message(MSG_ERROR, "Cannot connect BBS\n"); break; case RET_MSG: message(MSG_ERROR, "Transfer failed for message %i\n", num); break; case RET_WRITE: message(MSG_ERROR, "Unable to save message %i\n", num); break; } return (result == RET_OK); } return 1; } /* go through the list and try and download messages */ void scan_list(char *bbs, int priv, char *call, char *login) { char name[256]; char line[256]; char snum[20]; char flags[5]; char ssize[20]; char dest[35]; char fwd[20]; FILE *f; /* determine the home directory for personal messages */ if (priv) { if (!get_home_dir(login, user_home)) return; } /* open the list file */ sprintf(name, "%s/%s", LIST_PATH, bbs); f = fopen(name, "r"); if (f == NULL) { message(MSG_ERROR, "%s: %s has no index file\n", PRGNAME, bbs); exit(1); } while(!feof(f)) { strcpy(line, ""); fgets(line, 255, f); if (sscanf(line, "%s %s %s %s %s", snum, flags, ssize, dest, fwd) == 5) { char *p; if (strchr(flags, 'B') == NULL && strchr(flags, 'P') == NULL) continue; p = strchr(dest, '@'); if (p != NULL) { *p = '\0'; strncpy(fwd, p+1, 9); } else { if (fwd[0] == '@') memmove(fwd, fwd+1, strlen(fwd)); else strcpy(fwd, ""); } if (!check_download(atoi(snum), dest, fwd, priv, call)) break; /* download problems - break */ } } fclose(f); } int main(int argc, char **argv) { FILE *f; set_prg_name("axgetmail"); msg_level = MSG_LEVEL; if (argc != 2) { fprintf(stderr, "Usage: %s \n", PRGNAME); return 1; } strncpy(bbscall, argv[1], 19); normalize_call(bbscall); strip_ssid(bbscall); message(MSG_INFO, "axgetmail started for BBS %s\n", bbscall); load_config(bbscall); message(MSG_DEBUG, "config loaded BBS:\n" "bltcall=%s\n" "perssid=%i\n" "mail_group=%i\n" "homedir=%s\n" "portname=%s\n" "bbspath=%s\n" "bulletins=%i\n", bltcall, perssid, mail_group, homedir, port_name, bbspath, num_bulletins); /* check bulletins */ message(MSG_INFO, "Scanning for interesting bulletins\n"); scan_list(bbscall, 0, bltcall, 0); /* check private message for associated users */ message(MSG_INFO, "Looking up users\n"); f = fopen(AX25_CALLS, "r"); /* read callsigns and logins */ if (f != NULL) { char line[256]; char call[30]; char ssid[5]; char login[256]; sprintf(ssid, "-%i", perssid); while (!feof(f)) { strcpy(line, ""); fgets(line, 255, f); if (is_empty(line) || line[0] == '#') continue; if (sscanf(line, "%s %s", login, call) == 2) { normalize_call(call); if (call_ssid(call) == 0) strcat(call, ssid); message(MSG_INFO, "Scanning for personal mail for %s (%s)\n", call, login); scan_list(bbscall, 1, call, login); } else message(MSG_ERROR, "Invalid line in %s\n", AX25_CALLS); } fclose(f); } finish_transfer(); return 0; } ax25mail-utils-0.11.orig/axgetmail/calls.c0000644000175000017500000000505606620651510020126 0ustar pg4ipg4i00000000000000/*========================================================================== LinPac: Packet Radio Terminal for Linux (c) Radek Burget OK2JBG (xburge01@stud.fee.vutbr.cz) 1998 This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the license, or (at your option) any later version. calls.cc Functions for callsign conversions Last update 20.5.1998 =========================================================================*/ #include #include #include #include #include #include "calls.h" void norm_call(char *peer, const ax25_address *addr) { const char *cp; char *h = peer; short cnt; for(cnt = 0, cp = (char *)addr; ; cnt++, cp++) { if(*cp == '\100') /* Found a PAD char, skip the rest **/ cnt = 5; else if(cnt < 6) /* Callsign **/ *h++ = (*cp >> 1) & 0x7F; else if(cnt == 6) { /* SSID **/ *h++ = '-'; if((*cp & 0x1e) > 19) { *h++ = '1'; *h++ = ((*cp & 0x1e) >> 1) + '&'; } else { *h++ = ((*cp & 0x1e) >> 1) + '0'; } *h = '\0'; return; } } } int convert_call(char *name, char *buf) { char *p=name; int index=0; int ssid=0; while (index < 6) { if (*p=='-' || *p=='\0') break; if (islower(*p)) *p=toupper(*p); if (!isalnum(*p)) return -1; buf[index]=(*p<<1); p++; index++; } while (index<6) buf[index++]=' '<<1; if (*p=='-') { p++; if (sscanf(p,"%d",&ssid)!=1 || ssid<0 || ssid>15) return -1; } buf[6]=((ssid+'0')<<1) & 0x1E; return 0; } int convert_path(char *call, struct full_sockaddr_ax25 *sax) { int len = 0; char *bp, *np; char *addrp; int n = 0; char *tmp = strdup(call); if (tmp == NULL) return -1; bp = tmp; len = sizeof (struct sockaddr_ax25); addrp = sax->fsa_ax25.sax25_call.ax25_call; do { while (*bp && isspace(*bp)) bp++; np = bp; while (*np && !isspace(*np)) np++; if (*np) *np++ = '\0'; if (n==1 && (strcasecmp(bp,"V")==0 || strcasecmp(bp,"VIA")==0) ) { bp = np; continue; } if (convert_call(bp, addrp) == -1) return -1; bp=np; addrp = sax->fsa_digipeater[n].ax25_call; n++; if (n==2) len = sizeof(struct full_sockaddr_ax25); } while (nfsa_ax25.sax25_ndigis = n-1; sax->fsa_ax25.sax25_family = AF_AX25; return len; } ax25mail-utils-0.11.orig/axgetmail/common.c0000644000175000017500000000416707424750122020324 0ustar pg4ipg4i00000000000000/* axgetmail (c) 1999 by Radek Burget OK2JBG This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the license, or (at your option) any later version. */ #include #include #include #include #include #include #include "common.h" int msg_level = MSG_RESULT; void message(int level, const char *fmt, ...) { va_list argptr; if (level >= msg_level) { va_start(argptr, fmt); if (level == MSG_ERROR) vfprintf(stderr, fmt, argptr); else vfprintf(stdout, fmt, argptr); /*vfprintf(stdout, fmt, argptr);*/ va_end(argptr); } } int call_ssid(const char *src) { char *p = (char *)(src); while (*p != '\0' && *p != '-') p++; if (*p) p++; if (*p) return atoi(p); else return 0; } char *call_call(const char *src) { static char s[15]; char *p = (char *)(src); strcpy(s, ""); while (*p && isalnum(*p) && strlen(s) < 6) {strncat(s, p, 1); p++;} return s; } char *strip_ssid(char *src) { if (call_ssid(src) == 0) { char *p = src; while (*p != '\0' && *p != '-') p++; *p = '\0'; } return src; } char *normalize_call(char *call) { char c[8]; int ssid; char *p; strcpy(c, call_call(call)); ssid = call_ssid(call); if (ssid == 0) strcpy(call, c); else sprintf(call, "%s-%i", c, ssid); for (p = call; *p; p++) *p = toupper(*p); return call; } /* Compare callsign only (not the SSID) */ int compare_call(char *call1, char *call2) { char c1[15]; char c2[15]; strcpy(c1, call_call(call1)); strcpy(c2, call_call(call2)); return (strcasecmp(c1, c2) == 0); } /* wait for the character and read it */ int ffgetc(FILE *f) { int ch; do { ch = fgetc(f); } while (ch == -1 && (errno == EAGAIN || errno == EINTR)); if (ch == -1) { message(MSG_ERROR, "Connection failure\n"); exit(RET_ERR); } return ch; } int is_empty(char *line) { char *p = line; while (*p) { if (!isspace(*p)) return 0; else p++; } return 1; } ax25mail-utils-0.11.orig/axgetmail/conbbs.c0000644000175000017500000001037407013331520020266 0ustar pg4ipg4i00000000000000/* axgetmail (c) 1999 by Radek Burget OK2JBG This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the license, or (at your option) any later version. conbbs: connect the BBS */ #include #include #include #include #include #include #include #include #include #include #include #include #include "calls.h" #include "common.h" #include "conbbs.h" #ifndef VERSION #define VERSION "0.07" #endif #define AXPORTS "/etc/ax25/axports" #define CONTIME 300 //connect timeout [seconds] #define BUFSIZE 1024 char mycall[20]; /* my callsign */ char bbscall[20]; /* BBS callsign */ char bcall[20]; /* Base callsign of port */ char bbspath[256]; /* path to BBS */ int sock; /* the socket for connecting BBS */ int connected = 0; /* is the BBS connected ? */ FILE *bbs_stream; /* stream for communication with BBS */ /*----------------------------------------------------------------------*/ /* read axports file and translate the port name to a base callsign*/ int find_port(char *name, char *call) { char buf[256]; FILE *f; int found = 0; int speed, paclen, win; char descript[256]; char pname[256]; char pcall[256]; f = fopen(AXPORTS, "r"); if (f == NULL) return 0; while (!feof(f)) { strcpy(buf, ""); fgets(buf, 255, f); if (strlen(buf) != 0 && buf[0] != '#') { int n; n = sscanf(buf, "%s %s %i %i %i %s", pname, pcall, &speed, &paclen, &win, descript); if (n == 6 && strcmp(pname, name) == 0) { strcpy(call, pcall); found = 1; break; } } } fclose(f); return found; } /*----------------------------------------------------------------------*/ /* wait until the socket is connected */ int wait_connect(int sock) { fd_set rfds; struct timeval tv; int rc; FD_ZERO(&rfds); FD_SET(sock, &rfds); tv.tv_sec = CONTIME; tv.tv_usec = 0; rc = select(sock+1, &rfds, NULL, NULL, &tv); if (rc > 0 && FD_ISSET(sock, &rfds)) { return 1; } return 0; } /* Connect the BBS. Return 0 when unsuccesful. */ int connect_bbs() { int len, lenp; char path[256]; struct full_sockaddr_ax25 addr, addrp; int rc; sock = socket(AF_AX25, SOCK_SEQPACKET, PF_AX25); if (sock == -1) { message(MSG_ERROR, "Cannot create socket : %s\n", strerror(errno)); return 0; } fcntl(sock, F_SETFL, O_NONBLOCK); sprintf(path, "%s %s", mycall, bcall); len = convert_path(path, &addr); if (len == -1) { message(MSG_ERROR, "Invalid path %s\n", path); return 0; } if (bind(sock, (struct sockaddr *)&addr, len) == -1) { message(MSG_ERROR, "Cannot bind() : %s\n", strerror(errno)); return 0; } //connect new socket lenp = convert_path(bbspath, &addrp); if (connect(sock, (struct sockaddr *)&addrp, lenp) == -1) if (errno != EINPROGRESS) { message(MSG_ERROR, "Cannot connect() : %s\n", strerror(errno)); return 0; } /* wait for connection */ rc = wait_connect(sock); if (rc) { connected = 1; } return rc; } /*----------------------------------------------------------------------*/ FILE *conbbs(char *_mycall, char *_port, char *_dest) { strcpy(mycall, _mycall); normalize_call(mycall); strcpy(bbspath, _dest); if (!find_port(_port, bcall)) { message(MSG_ERROR, "Unknown port '%s'\n", _port); return NULL; } normalize_call(bcall); message(MSG_DEBUG, "conbbs params:\n" "BBS : `%s'\n" "Mycall : `%s'\n" "Port : `%s'\n" "Base call : `%s'\n", bbspath, mycall, _port, bcall); if (!connect_bbs()) return NULL; bbs_stream = fdopen(sock, "r+"); return bbs_stream; } /* disconnect BBS */ void disc_bbs(FILE *bbs_stream) { if (connected) { message(MSG_INFO, "Disconnecting BBS\n"); fclose(bbs_stream); close(sock); connected = 0; } } ax25mail-utils-0.11.orig/axgetmail/getmsg.c0000644000175000017500000000776407027750476020343 0ustar pg4ipg4i00000000000000/* axgetmsg (c) 1999 by Radek Burget OK2JBG This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the license, or (at your option) any later version. getmsg : read and save the message */ #include #include #include #include #include #include "common.h" #include "conbbs.h" #include "readmsg.h" #include "auth.h" #include "getmsg.h" #ifndef VERSION #define VERSION "0.09" #endif /*Uncomment this for adding subject to the message body*/ /*#define ADD_SUBJECT*/ FILE *bbs_stream = NULL; char dest_dir[256]; /* destination directory */ char prg_name[256]; /* program name (for tag) */ char curr_call[20]; /* currently used callsign */ /* save decompressed message (and convert to U*ix text) */ int save_msg(int num, void *data, unsigned long length, char *subj) { char fname[256]; FILE *f; sprintf(fname, "%s/%i", dest_dir, num); message(MSG_INFO, "Saving message to file %s\n", fname); f = fopen(fname, "w"); if (f != NULL) { unsigned long i; unsigned char *p = (unsigned char *)data; #ifdef ADD_SUBJECT fprintf(f, "Subject: %s\n", subj); #endif for (i=0; i #include #include #include #include "lzhuf.h" /* Macro for substitution the C++ 'new' operator */ #define NEW(type, size) (type*)malloc(sizeof(type)*(size)) short int crc_fputc(short int c); short int crc_fgetc(); void InitTree(void); void InsertNode(short int r); void DeleteNode(short int p); short int GetBit(void); short int GetByte(void); void Putcode(short int l, unsigned short c); void StartHuff(void); void reconst(void); void update(short int c); void EncodeChar(unsigned short c); void EncodePosition(unsigned short c); void EncodeEnd(void); int DecodeChar(void); int DecodePosition(void); unsigned short *freq; /* frequency table */ unsigned short int *prnt; /* pointers to parent nodes, except for the */ /* elements [T..T + N_CHAR - 1] which are used to get */ /* the positions of leaves corresponding to the codes. */ unsigned short int *son; /* pointers to child nodes (son[], son[] + 1) */ unsigned short getbuf, putbuf; unsigned char getlen, putlen; unsigned char *text_buf; unsigned short int match_position, match_length, *lson, *rson, *dad; unsigned char *dataOut, *input; unsigned short crc; unsigned long length, inPos, outPos, outLen; short cleanup; /* crctab calculated by Mark G. Mendel, Network Systems Corporation */ static unsigned short crc16tab[256] = { 0x0000, 0x1021, 0x2042, 0x3063, 0x4084, 0x50a5, 0x60c6, 0x70e7, 0x8108, 0x9129, 0xa14a, 0xb16b, 0xc18c, 0xd1ad, 0xe1ce, 0xf1ef, 0x1231, 0x0210, 0x3273, 0x2252, 0x52b5, 0x4294, 0x72f7, 0x62d6, 0x9339, 0x8318, 0xb37b, 0xa35a, 0xd3bd, 0xc39c, 0xf3ff, 0xe3de, 0x2462, 0x3443, 0x0420, 0x1401, 0x64e6, 0x74c7, 0x44a4, 0x5485, 0xa56a, 0xb54b, 0x8528, 0x9509, 0xe5ee, 0xf5cf, 0xc5ac, 0xd58d, 0x3653, 0x2672, 0x1611, 0x0630, 0x76d7, 0x66f6, 0x5695, 0x46b4, 0xb75b, 0xa77a, 0x9719, 0x8738, 0xf7df, 0xe7fe, 0xd79d, 0xc7bc, 0x48c4, 0x58e5, 0x6886, 0x78a7, 0x0840, 0x1861, 0x2802, 0x3823, 0xc9cc, 0xd9ed, 0xe98e, 0xf9af, 0x8948, 0x9969, 0xa90a, 0xb92b, 0x5af5, 0x4ad4, 0x7ab7, 0x6a96, 0x1a71, 0x0a50, 0x3a33, 0x2a12, 0xdbfd, 0xcbdc, 0xfbbf, 0xeb9e, 0x9b79, 0x8b58, 0xbb3b, 0xab1a, 0x6ca6, 0x7c87, 0x4ce4, 0x5cc5, 0x2c22, 0x3c03, 0x0c60, 0x1c41, 0xedae, 0xfd8f, 0xcdec, 0xddcd, 0xad2a, 0xbd0b, 0x8d68, 0x9d49, 0x7e97, 0x6eb6, 0x5ed5, 0x4ef4, 0x3e13, 0x2e32, 0x1e51, 0x0e70, 0xff9f, 0xefbe, 0xdfdd, 0xcffc, 0xbf1b, 0xaf3a, 0x9f59, 0x8f78, 0x9188, 0x81a9, 0xb1ca, 0xa1eb, 0xd10c, 0xc12d, 0xf14e, 0xe16f, 0x1080, 0x00a1, 0x30c2, 0x20e3, 0x5004, 0x4025, 0x7046, 0x6067, 0x83b9, 0x9398, 0xa3fb, 0xb3da, 0xc33d, 0xd31c, 0xe37f, 0xf35e, 0x02b1, 0x1290, 0x22f3, 0x32d2, 0x4235, 0x5214, 0x6277, 0x7256, 0xb5ea, 0xa5cb, 0x95a8, 0x8589, 0xf56e, 0xe54f, 0xd52c, 0xc50d, 0x34e2, 0x24c3, 0x14a0, 0x0481, 0x7466, 0x6447, 0x5424, 0x4405, 0xa7db, 0xb7fa, 0x8799, 0x97b8, 0xe75f, 0xf77e, 0xc71d, 0xd73c, 0x26d3, 0x36f2, 0x0691, 0x16b0, 0x6657, 0x7676, 0x4615, 0x5634, 0xd94c, 0xc96d, 0xf90e, 0xe92f, 0x99c8, 0x89e9, 0xb98a, 0xa9ab, 0x5844, 0x4865, 0x7806, 0x6827, 0x18c0, 0x08e1, 0x3882, 0x28a3, 0xcb7d, 0xdb5c, 0xeb3f, 0xfb1e, 0x8bf9, 0x9bd8, 0xabbb, 0xbb9a, 0x4a75, 0x5a54, 0x6a37, 0x7a16, 0x0af1, 0x1ad0, 0x2ab3, 0x3a92, 0xfd2e, 0xed0f, 0xdd6c, 0xcd4d, 0xbdaa, 0xad8b, 0x9de8, 0x8dc9, 0x7c26, 0x6c07, 0x5c64, 0x4c45, 0x3ca2, 0x2c83, 0x1ce0, 0x0cc1, 0xef1f, 0xff3e, 0xcf5d, 0xdf7c, 0xaf9b, 0xbfba, 0x8fd9, 0x9ff8, 0x6e17, 0x7e36, 0x4e55, 0x5e74, 0x2e93, 0x3eb2, 0x0ed1, 0x1ef0 }; /* table for encoding and decoding the upper 6 bits of position */ /* for encoding */ unsigned char p_len[64] = { 0x03, 0x04, 0x04, 0x04, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08 }; unsigned char p_code[64] = { 0x00, 0x20, 0x30, 0x40, 0x50, 0x58, 0x60, 0x68, 0x70, 0x78, 0x80, 0x88, 0x90, 0x94, 0x98, 0x9C, 0xA0, 0xA4, 0xA8, 0xAC, 0xB0, 0xB4, 0xB8, 0xBC, 0xC0, 0xC2, 0xC4, 0xC6, 0xC8, 0xCA, 0xCC, 0xCE, 0xD0, 0xD2, 0xD4, 0xD6, 0xD8, 0xDA, 0xDC, 0xDE, 0xE0, 0xE2, 0xE4, 0xE6, 0xE8, 0xEA, 0xEC, 0xEE, 0xF0, 0xF1, 0xF2, 0xF3, 0xF4, 0xF5, 0xF6, 0xF7, 0xF8, 0xF9, 0xFA, 0xFB, 0xFC, 0xFD, 0xFE, 0xFF }; /* for decoding */ unsigned char d_code[256] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0C, 0x0C, 0x0C, 0x0C, 0x0D, 0x0D, 0x0D, 0x0D, 0x0E, 0x0E, 0x0E, 0x0E, 0x0F, 0x0F, 0x0F, 0x0F, 0x10, 0x10, 0x10, 0x10, 0x11, 0x11, 0x11, 0x11, 0x12, 0x12, 0x12, 0x12, 0x13, 0x13, 0x13, 0x13, 0x14, 0x14, 0x14, 0x14, 0x15, 0x15, 0x15, 0x15, 0x16, 0x16, 0x16, 0x16, 0x17, 0x17, 0x17, 0x17, 0x18, 0x18, 0x19, 0x19, 0x1A, 0x1A, 0x1B, 0x1B, 0x1C, 0x1C, 0x1D, 0x1D, 0x1E, 0x1E, 0x1F, 0x1F, 0x20, 0x20, 0x21, 0x21, 0x22, 0x22, 0x23, 0x23, 0x24, 0x24, 0x25, 0x25, 0x26, 0x26, 0x27, 0x27, 0x28, 0x28, 0x29, 0x29, 0x2A, 0x2A, 0x2B, 0x2B, 0x2C, 0x2C, 0x2D, 0x2D, 0x2E, 0x2E, 0x2F, 0x2F, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x3A, 0x3B, 0x3C, 0x3D, 0x3E, 0x3F, }; unsigned char d_len[256] = { 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, }; #define updcrc16(cp, crc) ((crc << 8) ^ crc16tab[(cp & 0xff) ^ (crc >> 8)]) /********** LZSS compression **********/ #define N 2048 /* buffer size */ #define F 60 /* lookahead buffer size */ #define THRESHOLD 2 #define NIL N /* leaf of tree */ /* Huffman coding */ #define N_CHAR (256 - THRESHOLD + F) /* kinds of characters (character code = 0..N_CHAR-1) */ #define T (N_CHAR * 2 - 1) /* size of table */ #define R (T - 1) /* position of root */ #define MAX_FREQ 0x8000 /* updates tree when the */ /* root frequency comes to this value. */ #define ALLOC_STEP 1024 void lzhuf_init(short clu) { dataOut = NULL; input = NULL; crc = 0; length = 0; inPos = outPos = 0; cleanup = clu; // do not free buffer if called from non++ function freq = NEW(unsigned short, T + 1); prnt = NEW(unsigned short, T + N_CHAR); son = NEW(unsigned short, T); text_buf = NEW(unsigned char, N + F - 1); lson = NEW(unsigned short, N + 1); rson = NEW(unsigned short, N + 257); dad = NEW(unsigned short, N + 1); } void lzhuf_free() { if(cleanup == 1)if(dataOut)free(dataOut); free(freq); free(prnt); free(son); free(text_buf); free(lson); free(rson); free(dad); } short int crc_fputc(short int c) { crc = updcrc16((unsigned char)c, crc); dataOut[outPos++] = (unsigned char)c; if(outPos > outLen) { outLen += ALLOC_STEP; dataOut = (unsigned char*)realloc(dataOut, outLen); } return 0; } short int crc_fgetc() { if(inPos < outLen) { crc = updcrc16(input[inPos], crc); return input[inPos++]; } return -1; } void InitTree(void) /* initialize trees */ { short int i; for (i = N + 1; i <= N + 256; i++) rson[i] = NIL; /* root */ for (i = 0; i < N; i++) dad[i] = NIL; /* node */ } void InsertNode(short int r) /* insert to tree */ { short int i, p, cmp; unsigned char *key; unsigned short c; cmp = 1; key = &text_buf[r]; p = N + 1 + key[0]; rson[r] = lson[r] = NIL; match_length = 0; for ( ; ; ) { if (cmp >= 0) { if (rson[p] != NIL) p = rson[p]; else { rson[p] = r; dad[r] = p; return; } } else { if (lson[p] != NIL) p = lson[p]; else { lson[p] = r; dad[r] = p; return; } } for (i = 1; i < F; i++) if ((cmp = key[i] - text_buf[p + i]) != 0) break; if (i > THRESHOLD) { if (i > match_length) { match_position = ((r - p) & (N - 1)) - 1; if ((match_length = i) >= F) break; } if (i == match_length) { if ((c = ((r - p) & (N - 1)) - 1) < match_position) { match_position = c; } } } } dad[r] = dad[p]; lson[r] = lson[p]; rson[r] = rson[p]; dad[lson[p]] = r; dad[rson[p]] = r; if (rson[dad[p]] == p) rson[dad[p]] = r; else lson[dad[p]] = r; dad[p] = NIL; /* remove p */ } void DeleteNode(short int p) /* remove from tree */ { short int q; if (dad[p] == NIL) return; /* not registered */ if (rson[p] == NIL) q = lson[p]; else if (lson[p] == NIL) q = rson[p]; else { q = lson[p]; if (rson[q] != NIL) { do { q = rson[q]; } while (rson[q] != NIL); rson[dad[q]] = lson[q]; dad[lson[q]] = dad[q]; lson[q] = lson[p]; dad[lson[p]] = q; } rson[q] = rson[p]; dad[rson[p]] = q; } dad[q] = dad[p]; if (rson[dad[p]] == p) rson[dad[p]] = q; else lson[dad[p]] = q; dad[p] = NIL; } short int GetBit(void) /* get one bit */ { short int i; while (getlen <= 8) { if ((i = crc_fgetc()) < 0) i = 0; getbuf |= i << (8 - getlen); getlen += 8; } i = getbuf; getbuf <<= 1; getlen--; return (i < 0 ? 1:0); } short int GetByte(void) /* get one byte */ { unsigned short i; while (getlen <= 8) { if ((i = crc_fgetc()) == 0xffff) i = 0; getbuf |= i << (8 - getlen); getlen += 8; } i = getbuf; getbuf <<= 8; getlen -= 8; return i >> 8; } void Putcode(short int l, unsigned short c) /* output c bits of code */ { putbuf |= c >> putlen; if ((putlen += l) >= 8) { crc_fputc(putbuf >> 8); if ((putlen -= 8) >= 8) { crc_fputc(putbuf); putlen -= 8; putbuf = c << (l - putlen); } else { putbuf <<= 8; } } } /* initialization of tree */ void StartHuff(void) { short int i, j; for (i = 0; i < N_CHAR; i++) { freq[i] = 1; son[i] = i + T; prnt[i + T] = i; } i = 0; j = N_CHAR; while (j <= R) { freq[j] = freq[i] + freq[i + 1]; son[j] = i; prnt[i] = prnt[i + 1] = j; i += 2; j++; } freq[T] = 0xffff; prnt[R] = 0; } /* reconstruction of tree */ void reconst(void) { short int i, j, k; unsigned short f, l; /* collect leaf nodes in the first half of the table */ /* and replace the freq by (freq + 1) / 2. */ j = 0; for (i = 0; i < T; i++) { if (son[i] >= T) { freq[j] = (freq[i] + 1) / 2; son[j] = son[i]; j++; } } /* begin constructing tree by connecting sons */ for (i = 0, j = N_CHAR; j < T; i += 2, j++) { k = i + 1; f = freq[j] = freq[i] + freq[k]; for (k = j - 1; f < freq[k]; k--); k++; l = (j - k) * 2; memmove(&freq[k + 1], &freq[k], l); freq[k] = f; memmove(&son[k + 1], &son[k], l); son[k] = i; } /* connect prnt */ for (i = 0; i < T; i++) { if ((k = son[i]) >= T) { prnt[k] = i; } else { prnt[k] = prnt[k + 1] = i; } } } /* increment frequency of given code by one, and update tree */ void update(short int c) { short int i, j, l; unsigned short k; if (freq[R] == MAX_FREQ) { reconst(); } c = prnt[c + T]; do { k = ++freq[c]; /* if the order is disturbed, exchange nodes */ if (k > freq[l = c + 1]) { while (k > freq[++l]); l--; freq[c] = freq[l]; freq[l] = k; i = son[c]; prnt[i] = l; if (i < T) prnt[i + 1] = l; j = son[l]; son[l] = i; prnt[j] = c; if (j < T) prnt[j + 1] = c; son[c] = j; c = l; } } while ((c = prnt[c]) != 0); /* repeat up to root */ } void EncodeChar(unsigned short c) { unsigned short i; short int j, k; i = 0; j = 0; k = prnt[c + T]; /* travel from leaf to root */ do { i >>= 1; /* if node's address is odd-numbered, choose bigger brother node */ if (k & 1) i += 0x8000; j++; } while ((k = prnt[k]) != R); Putcode(j, i); update(c); } void EncodePosition(unsigned short c) { unsigned short i; /* output upper 6 bits by table lookup */ i = c >> 6; Putcode(p_len[i], (unsigned short)p_code[i] << 8); /* output lower 6 bits verbatim */ Putcode(6, (c & 0x3f) << 10); } void EncodeEnd(void) { if (putlen)crc_fputc(putbuf >> 8); } int DecodeChar(void) { unsigned short c; c = son[R]; /* travel from root to leaf, */ /* choosing the smaller child node (son[]) if the read bit is 0, */ /* the bigger (son[]+1} if 1 */ while (c < T) { c += GetBit(); c = son[c]; } c -= T; update(c); return c; } int DecodePosition(void) { unsigned short i, j, c; /* recover upper 6 bits from table */ i = GetByte(); c = (unsigned short)d_code[i] << 6; j = d_len[i]; /* read lower 6 bits verbatim */ j -= 2; while (j--) { i = (i << 1) + GetBit(); } return c | (i & 0x3f); } // routines void lzhuf_encode(unsigned long len, void *data) // compression { short int i, c, ln, r, s, last_match_length; unsigned char *ptr = (unsigned char*)&length; getbuf = putbuf = 0; getlen = putlen = 0; outLen = length = len; if(dataOut)free(dataOut); dataOut = (unsigned char*)malloc (sizeof(unsigned char) * outLen); outPos = inPos = 0; input = (unsigned char*)data; crc = 0; for (i = 0; i < sizeof(length); i++) crc = updcrc16(ptr[i], crc); // add length to CRC StartHuff(); InitTree(); s = 0; r = N - F; for (i = s; i < r; i++) text_buf[i] = ' '; for (ln = 0; ln < F && inPos < len; ln++) { c = input[inPos++]; text_buf[r + ln] = (unsigned char)c; } length = ln; for (i = 1; i <= F; i++) InsertNode(r - i); InsertNode(r); do { if (match_length > ln) match_length = ln; if (match_length <= THRESHOLD) { match_length = 1; EncodeChar(text_buf[r]); } else { EncodeChar(255 - THRESHOLD + match_length); EncodePosition(match_position); } last_match_length = match_length; for (i = 0; i < last_match_length && inPos < len; i++) { c = input[inPos++]; DeleteNode(s); text_buf[s] = (unsigned char)c; if (s < F - 1) text_buf[s + N] = (unsigned char)c; s = (s + 1) & (N - 1); r = (r + 1) & (N - 1); InsertNode(r); } while (i++ < last_match_length) { DeleteNode(s); s = (s + 1) & (N - 1); r = (r + 1) & (N - 1); if (--ln) InsertNode(r); } } while (ln > 0); EncodeEnd(); length = outPos; } void lzhuf_decode(unsigned long len, void *data, unsigned long plen) // decompression { unsigned char *ptr = (unsigned char*)&length; short int i, j, k, r, c; unsigned long int count; getbuf = putbuf = 0; getlen = putlen = 0; crc = 0; outLen = plen; length = len; if(dataOut)free(dataOut); dataOut = (unsigned char*)malloc(sizeof(unsigned char) * length); inPos = outPos = 0; input = (unsigned char*)data; for (i = 0; i < sizeof(length); i++) crc = updcrc16(ptr[i], crc); // add length to CRC StartHuff(); for (i = 0; i < N - F; i++) text_buf[i] = ' '; r = N - F; for (count = 0; count < length; ) { c = DecodeChar(); if (c < 256) { dataOut[outPos++] = (unsigned char)c; text_buf[r++] = (unsigned char)c; r &= (N - 1); count++; } else { i = (r - DecodePosition() - 1) & (N - 1); j = c - 255 + THRESHOLD; for (k = 0; k < j; k++) { c = text_buf[(i + k) & (N - 1)]; dataOut[outPos++] = (unsigned char)c; text_buf[r++] = (unsigned char)c; r &= (N - 1); count++; } } } } unsigned short lzhuf_crc() { return crc; } void* lzhuf_data() { return (void*)dataOut; } long lzhuf_length() { return length; } ax25mail-utils-0.11.orig/axgetmail/readmsg.c0000644000175000017500000001014707012030036020435 0ustar pg4ipg4i00000000000000/* axgetmail (c) 1999 by Radek Burget OK2JBG This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the license, or (at your option) any later version. readmsg: read and decode one message to stdout */ #include #include #include #include #include #include #include "lzhuf.h" #include "common.h" #include "readmsg.h" /* control characters */ #define NUL 0 #define SOH 1 #define STX 2 #define EOT 4 char error_msg[] = "The BBS refused to forward this message.\n" "The message is either deleted or you are not allowed to read it.\n"; int errmsg = 0; /* read and store one message return: 0 = OK 1 = checksum error 2 = protocol violation 3 = invalid starting character (msg not present) */ int get_one_message(FILE *fin, unsigned char **buf, int *bsize, char *title) { int eot; int hd_length; int ch; unsigned char c; unsigned char ofset[7]; signed char sum, chksum; int flen; int i; int bpoz; int size; message(MSG_INFO, "Downloading message\n"); size = 1; *buf = (unsigned char *) malloc(sizeof(unsigned char) * size); bpoz = 0; ch = ffgetc(fin); if (ch != SOH) { /* transfer wasn't started */ message(MSG_DEBUG, "Invalid starting character (0x%x)\n", ch); message(MSG_ERROR, "Message not present or acces denied\n"); return 3; /* no message */ } hd_length = ffgetc(fin); message(MSG_DEBUG, "Transfer started, header length %i\n", hd_length); /* read title */ strcpy(title, ""); do { ch = ffgetc(fin); c = (unsigned char) ch; if (ch != NUL) strncat(title, &c, 1); } while (ch != NUL); message(MSG_DEBUG, "Title: `%s'\n", title); /* read ofset */ strcpy(ofset, ""); do { ch = ffgetc(fin); c = (unsigned char) ch; if (ch != NUL) strncat(ofset, &c, 1); } while (ch != NUL); message(MSG_DEBUG, "Offset: `%s'\n", ofset); /* read data frames */ sum = 0; eot = 0; while (!eot) { ch = ffgetc(fin); if (ch == STX) /* data frame */ { flen = ffgetc(fin); if (flen == 0) flen = 256; message(MSG_DEBUG, "Data frame, length %i\n", 256); if (bpoz+flen >= size) /* buffer exceeded -> expand */ { size += flen; *buf = (unsigned char *) realloc(*buf, sizeof(unsigned char) * size); } for (i=0; i -c -b [-f ] [-d ] [-v] [-D] nr1 [nr2 [...]] */ #include #include #include #include #include #include #include "common.h" #include "getmsg.h" #ifndef VERSION #define VERSION "0.09" #endif char mycall[20]; /* my callsign */ char bbscall[20]; /* BBS callsign */ char bbspath[256]; /* path to BBS */ char port_name[32]; /* port name */ char dest_dir[256]; /* destination directory */ char listfile[256]; /* name of the list file */ int final_result = RET_OK; /* result of axgetmsg */ /* check if the parameter was given */ void check_par(char *value, char *msg) { if (strlen(value) == 0) { message(MSG_ERROR, msg); exit(RET_ERR); } } int main(int argc, char **argv) { int i; set_prg_name("axgetmsg"); if (argc == 1) { printf("axgetmsg -p -c -b [-f ] [-d ] [-v] [-D] nr1 [nr2 [...]]\n"); return 1; } strcpy(port_name, ""); strcpy(mycall, ""); strcpy(bbspath, ""); strcpy(listfile, ""); strcpy(dest_dir, ""); while ((i = getopt(argc, argv, "p:c:b:f:d:vD")) != -1) switch (i) { case 'p': strncpy(port_name, optarg, 31); break; case 'c': strncpy(mycall, optarg, 19); normalize_call(mycall); break; case 'b': strncpy(bbspath, optarg, 255); break; case 'f': strncpy(listfile, optarg, 255); break; case 'd': strncpy(dest_dir, optarg, 255); break; case 'v': msg_level = MSG_INFO; break; case 'D': msg_level = MSG_DEBUG; break; case '?': default : printf("axgetmsg -p -c -b [-f ] [-d ] [-v] [-D] nr1 [nr2 [...]]\n"); return RET_ERR; } check_par(port_name, "Port name missing\n"); check_par(mycall, "Callsign missing\n"); check_par(bbspath, "Path to BBS missing\n"); if (strlen(dest_dir) == 0) strcpy(dest_dir, "."); message(MSG_DEBUG, "Params:\n" "BBS : `%s'\n" "Mycall : `%s'\n" "Port : `%s'\n" "Dest dir : `%s'\n", bbspath, mycall, port_name, dest_dir); if (strlen(listfile) == 0) { message(MSG_DEBUG, "Message numbers from command line\n"); if (optind == argc) //no arguments remaining { message(MSG_ERROR, "No message numbers given\n"); return RET_ERR; } while (optind < argc) { char *endptr; char *pnum; int num; int priv = 0; int result; pnum = argv[optind]; if (toupper(*pnum) == 'P') {priv = 1; pnum++;} num = strtol(pnum, &endptr, 10); if (*endptr != '\0') { message(MSG_ERROR, "Invalid message number '%s'\n", argv[optind]); return RET_ERR; } result = get_msg(mycall, port_name, bbspath, num, priv, dest_dir); switch (result) { case RET_ERR: message(MSG_ERROR, "Unable to read message %i\n", num); break; case RET_CONN: message(MSG_ERROR, "Cannot connect BBS\n"); break; case RET_MSG: message(MSG_ERROR, "Transfer failed for message %i\n", num); break; case RET_WRITE: message(MSG_ERROR, "Unable to save message %i\n", num); break; } optind++; } } else /* listfile used */ { FILE *list; message(MSG_DEBUG, "Message numbers from file\n"); list = fopen(listfile, "r"); if (list == NULL) { message(MSG_ERROR, "Cannot open list file '%s'\n", listfile); return RET_ERR; } while (!feof(list)) { char snum[256]; char *pnum, *endptr; int num, n; int priv = 0; int result; n = fscanf(list, "%s", snum); if (n <= 0) break; pnum = snum; if (toupper(*pnum) == 'P') {priv = 1; pnum++;} num = strtol(pnum, &endptr, 10); if (n != 1 || *endptr != '\0') { message(MSG_ERROR, "Invalid message number in list file\n"); return RET_ERR; } result = get_msg(mycall, port_name, bbspath, num, priv, dest_dir); switch (result) { case RET_ERR: message(MSG_ERROR, "Unable to read message %i\n", num); break; case RET_CONN: message(MSG_ERROR, "Cannot connect BBS\n"); break; case RET_MSG: message(MSG_ERROR, "Transfer failed for message %i\n", num); break; case RET_WRITE: message(MSG_ERROR, "Unable to save message %i\n", num); break; } if (result != RET_OK) final_result = RET_ERR; } } finish_transfer(); return final_result; } ax25mail-utils-0.11.orig/axgetmail/msgcleanup0000644000175000017500000001031407422615342020742 0ustar pg4ipg4i00000000000000#! /usr/bin/perl #---------------------------------------------------------------------------- # ax25mail-tools # # msgcleanup - scan the message list and delete all messages with exceeded # lifetime (mark them as deleted and delete message files) # The message list is truncated to first present or first # expired message, it's not changed when no messages expire. # # Version 0.02 # # (c) Radek Burget OK2JBG 1999 # # Usage: msgcleanup #---------------------------------------------------------------------------- # Normal settings: #List path $LIST_PATH = "/var/ax25/ulistd"; #Bulletin path $BULLETIN_PATH = "/var/ax25/mail"; #Settings file $CONF_FILE = "/etc/ax25/bulletins"; #Temp output file $TEMP_FILE = "/tmp/msgcleanup_temp.$$"; #Default lifetime (days) $DEF_LIFE = 30; #---------------------------------------------------------------------------- #Seconds a day $SEC_A_DAY = 24*3600; #---------------------------------------------------------------------------- # Bulletin list format format TEMP = @ @>>>>> @<<<<<@<<<<<< @<<<<< @<<<<< @<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< $binfo[1], $binfo[2], $binfo[3], $binfo[4], $binfo[5], $binfo[6], $subj . #---------------------------------------------------------------------------- if (@ARGV != 1) { print "Usage: msgcleanup \n"; exit 0; } #Number of deleted messages $deleted = 0; #Output flag $output = 0; $bbsname = uc $ARGV[0]; # Open files $bbs_dir = $BULLETIN_PATH . "/" . $bbsname; die "The bulletin directory for $bbsname ($bbs_dir) doesn't exist\n" unless -d $bbs_dir; $list_name = $LIST_PATH . "/" . $bbsname; open LIST, $list_name or die "Cannot open list file for $bbsname ($list_name)\n"; # Read config file to the 'lifes' hash $conf_name = $CONF_FILE . "." . $bbsname; open CONF, $conf_name or print "$0 : Warning : No config file for $bbsname - using defaults\n"; while () { chop; if ($_ !~ /^#/) { @line = split /\W+/; if (@line == 2) { $lifes{uc $line[0]} = $line[1]; } else { die "Invalid line in config file ($_)\n" } } } close CONF; # Open temp output open TEMP, ">".$TEMP_FILE or die "Cannot write to $TEMP_FILE\n"; # Change default lifetime if specified $DEF_LIFE = $lifes{'DEFAULT'} if $lifes{'DEFAULT'}; print "Default bulletin lifetime: $DEF_LIFE day(s)\n"; # Scan the list and compare the dates $now = time; while () { chop; # Read and split message info @binfo = split /\s+/; $num = $binfo[0]; #first entry - message number $flag = $binfo[1]; #second entry - flags # Split destination to NAME and @FWD if ($binfo[3] =~ /@/) { for ($i = @binfo; $i >= 4; $i--) {$binfo[$i+1] = $binfo[$i];} $binfo[4] = substr $binfo[3], index($binfo[3], "@"); $binfo[3] = substr $binfo[3], 0, index($binfo[3], "@"); } if ($binfo[4] !~ /^@/) { for ($i = @binfo; $i >= 4; $i--) {$binfo[$i+1] = $binfo[$i];} $binfo[4] = ""; } $bname = $binfo[3]; #bulletin name # Extract subject if ($flag =~ /#/) { $subj = ""; } else { $subj = substr $_, index($_, $binfo[6])+7; } # Read message file info ($dev,$ino,$mode,$nlink,$uid,$gid,$rdev,$size, $atime,$mtime,$ctime,$blksize,$blocks) = stat($bbs_dir."/".$num); # $nlink should be >0 when the file exists if ($nlink && ($flag =~ /[P,B]/)) { $output = 1; ### determine the lifetime for this message ### if ($lifes{$bname}) {$lifetime = $lifes{$bname};} else {$lifetime = $DEF_LIFE;} ### lifetime in seconds ### $lifetime *= $SEC_A_DAY; ### check the message dates ### if ($mtime < ($now - $lifetime)) { $binfo[1] = "D"; ##FLAG = DELETED unlink($bbs_dir."/".$num); $deleted++; } } if ($output) { print TEMP "$num "; write TEMP; } } #Do not allow the empty list print "$num #\n" if ($output == 0); #Cliose the files close TEMP; close LIST; if ($deleted) ##if some messages expired { rename ($TEMP_FILE, $list_name) or die "rename: $!\n"; } else { unlink $TEMP_FILE; } print "$deleted message(s) deleted.\n"; #### END OF SCRIPT ######################################################### ax25mail-utils-0.11.orig/axgetmail/auth.h0000644000175000017500000000110507010616062017762 0ustar pg4ipg4i00000000000000/* axgetmail (c) 1999 by Radek Burget OK2JBG This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the license, or (at your option) any later version. auth: execute the authorization script */ #ifndef AUTH_H #define AUTH_H #include #define AUTH_AGENT "/var/ax25/auth_agent" /* run the authorization agent and wait until it exits */ void exec_auth_agent(FILE *bbs_stream, char *mycall, char *bbscall); #endif ax25mail-utils-0.11.orig/axgetmail/calls.h0000644000175000017500000000145706601401012020121 0ustar pg4ipg4i00000000000000/*========================================================================== LinPac: Packet Radio Terminal for Linux (c) Radek Burget OK2JBG (xburge01@stud.fee.vutbr.cz) 1998 This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the license, or (at your option) any later version. calls.h Functions for callsign conversions Last update 20.5.1998 =========================================================================*/ #include #ifndef CALLS_H #define CALLS_H void norm_call(char *peer, const ax25_address *addr); int convert_call(char *name, char *buf); int convert_path(char *call, struct full_sockaddr_ax25 *sax); #endif ax25mail-utils-0.11.orig/axgetmail/common.h0000644000175000017500000000242107027750332020322 0ustar pg4ipg4i00000000000000/* axgetmail (c) 1999 by Radek Burget OK2JBG This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the license, or (at your option) any later version. */ #ifndef COMMON_H #define COMMON_H #include /* message priority levels */ #define MSG_DEBUG 0 #define MSG_INFO 1 #define MSG_RESULT 2 #define MSG_ERROR 3 /* the same as MSG_RESULT but written to stderr */ /* program return codes */ #define RET_OK 0 #define RET_ERR 1 /* some other error */ #define RET_CONN 2 /* cannot connect BBS */ #define RET_MSG 3 /* cannot read message */ #define RET_WRITE 4 /* cannot write message */ extern int msg_level; /* the lowest message priority to be displayed */ /* print the message when it's important enough */ void message(int level, const char *fmt, ...); /* callsign stransformations */ int call_ssid(const char *src); char *call_call(const char *src); char *strip_ssid(char *src); char *normalize_call(char *call); int compare_call(char *call1, char *call2); /* wait for the character and read it */ int ffgetc(FILE *f); /* check if line contains other characters than whitespaces */ int is_empty(char *line); #endif ax25mail-utils-0.11.orig/axgetmail/conbbs.h0000644000175000017500000000105107010601050020256 0ustar pg4ipg4i00000000000000/* axgetmail (c) 1999 by Radek Burget OK2JBG This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the license, or (at your option) any later version. conbbs: connect the BBS */ #ifndef CONBBS_H #define CONBBS_H #include FILE *conbbs(char *_mycall, char *_port, char *_dest); /* connect the BBS */ void disc_bbs(FILE *bbs_stream); /* disconnect BBS */ #endif ax25mail-utils-0.11.orig/axgetmail/getmsg.h0000644000175000017500000000132707010612046020313 0ustar pg4ipg4i00000000000000/* axgetmsg (c) 1999 by Radek Burget OK2JBG This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the license, or (at your option) any later version. getmsg : read and save the message */ #ifndef GETMSG_H #define GETMSG_H #include /* set program name (for tag) */ void set_prg_name(char *_prg_name); /* read one msg, kill it afterwards if it's private and save it */ /* returns the error code or RET_OK if all OK */ int get_msg(char *mycall, char *port, char *dest, int num, int priv, char *destdir); /* finish download */ void finish_transfer(); #endif ax25mail-utils-0.11.orig/axgetmail/lzhuf.h0000644000175000017500000000133706712367154020175 0ustar pg4ipg4i00000000000000/************************************************************** lzhuf encoder/decoder class by cz6don, based on: *********************************************************** lzhuf.c written by Haruyasu Yoshizaki 11/20/1988 some minor changes 4/6/1989 comments translated by Haruhiko Okumura 4/7/1989 **************************************************************/ /* Back to ansi C rewritten by OK2JBG */ void lzhuf_init(short clu); /* normal clu=1 */ void lzhuf_free(); void lzhuf_encode(unsigned long len, void *data); // compression void lzhuf_decode(unsigned long len, void *data, unsigned long plen); // decompression unsigned short lzhuf_crc(); void* lzhuf_data(); long lzhuf_length(); ax25mail-utils-0.11.orig/axgetmail/readmsg.h0000644000175000017500000000110307011001062020426 0ustar pg4ipg4i00000000000000/* axgetmail (c) 1999 by Radek Burget OK2JBG This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the license, or (at your option) any later version. readmsg: read and decode one message to stdout */ #ifndef READMSG_H #define READMSG_H #include extern int errmsg; /* =1 when error message has been generated instead of dnload */ int read_msg(FILE *bbs_stream, char **_buf, int *_len, char *_subj); #endif ax25mail-utils-0.11.orig/routes/0000755000175000017500000000000007425043443016230 5ustar pg4ipg4i00000000000000ax25mail-utils-0.11.orig/routes/Makefile.in0000644000175000017500000001713607425043443020305 0ustar pg4ipg4i00000000000000# Makefile.in generated automatically by automake 1.4-p4 from Makefile.am # Copyright (C) 1994, 1995-8, 1999 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. SHELL = @SHELL@ srcdir = @srcdir@ top_srcdir = @top_srcdir@ VPATH = @srcdir@ prefix = @prefix@ exec_prefix = @exec_prefix@ sbindir = @sbindir@ libexecdir = @libexecdir@ sysconfdir = @sysconfdir@ sharedstatedir = @sharedstatedir@ localstatedir = @localstatedir@ libdir = @libdir@ infodir = @infodir@ mandir = @mandir@ includedir = @includedir@ oldincludedir = /usr/include DESTDIR = pkgdatadir = $(datadir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ top_builddir = .. ACLOCAL = @ACLOCAL@ AUTOCONF = @AUTOCONF@ AUTOMAKE = @AUTOMAKE@ AUTOHEADER = @AUTOHEADER@ INSTALL = @INSTALL@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ $(AM_INSTALL_PROGRAM_FLAGS) INSTALL_DATA = @INSTALL_DATA@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ transform = @program_transform_name@ NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : CC = @CC@ CXX = @CXX@ LN_S = @LN_S@ MAKEINFO = @MAKEINFO@ PACKAGE = @PACKAGE@ PERL = @PERL@ VERSION = @VERSION@ CFLAGS = -g -Wall -funsigned-char CXXFLAGS = -g -Wall -funsigned-char bin_PROGRAMS = update_routes home_bbs update_routes_SOURCES = update_routes.cc home_bbs_SOURCES = home_bbs.cc datadir = @prefix@/bin bindir = @prefix@/bin mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs CONFIG_HEADER = ../config.h CONFIG_CLEAN_FILES = PROGRAMS = $(bin_PROGRAMS) DEFS = @DEFS@ -I. -I$(srcdir) -I.. CPPFLAGS = @CPPFLAGS@ LDFLAGS = @LDFLAGS@ LIBS = @LIBS@ update_routes_OBJECTS = update_routes.o update_routes_LDADD = $(LDADD) update_routes_DEPENDENCIES = update_routes_LDFLAGS = home_bbs_OBJECTS = home_bbs.o home_bbs_LDADD = $(LDADD) home_bbs_DEPENDENCIES = home_bbs_LDFLAGS = CXXCOMPILE = $(CXX) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) CXXLD = $(CXX) CXXLINK = $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) $(LDFLAGS) -o $@ DIST_COMMON = Makefile.am Makefile.in DISTFILES = $(DIST_COMMON) $(SOURCES) $(HEADERS) $(TEXINFOS) $(EXTRA_DIST) TAR = tar GZIP_ENV = --best SOURCES = $(update_routes_SOURCES) $(home_bbs_SOURCES) OBJECTS = $(update_routes_OBJECTS) $(home_bbs_OBJECTS) all: all-redirect .SUFFIXES: .SUFFIXES: .S .c .cc .o .s $(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4) cd $(top_srcdir) && $(AUTOMAKE) --gnu --include-deps routes/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status cd $(top_builddir) \ && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status mostlyclean-binPROGRAMS: clean-binPROGRAMS: -test -z "$(bin_PROGRAMS)" || rm -f $(bin_PROGRAMS) distclean-binPROGRAMS: maintainer-clean-binPROGRAMS: install-binPROGRAMS: $(bin_PROGRAMS) @$(NORMAL_INSTALL) $(mkinstalldirs) $(DESTDIR)$(bindir) @list='$(bin_PROGRAMS)'; for p in $$list; do \ if test -f $$p; then \ echo " $(INSTALL_PROGRAM) $$p $(DESTDIR)$(bindir)/`echo $$p|sed 's/$(EXEEXT)$$//'|sed '$(transform)'|sed 's/$$/$(EXEEXT)/'`"; \ $(INSTALL_PROGRAM) $$p $(DESTDIR)$(bindir)/`echo $$p|sed 's/$(EXEEXT)$$//'|sed '$(transform)'|sed 's/$$/$(EXEEXT)/'`; \ else :; fi; \ done uninstall-binPROGRAMS: @$(NORMAL_UNINSTALL) list='$(bin_PROGRAMS)'; for p in $$list; do \ rm -f $(DESTDIR)$(bindir)/`echo $$p|sed 's/$(EXEEXT)$$//'|sed '$(transform)'|sed 's/$$/$(EXEEXT)/'`; \ done .c.o: $(COMPILE) -c $< .s.o: $(COMPILE) -c $< .S.o: $(COMPILE) -c $< mostlyclean-compile: -rm -f *.o core *.core clean-compile: distclean-compile: -rm -f *.tab.c maintainer-clean-compile: update_routes: $(update_routes_OBJECTS) $(update_routes_DEPENDENCIES) @rm -f update_routes $(CXXLINK) $(update_routes_LDFLAGS) $(update_routes_OBJECTS) $(update_routes_LDADD) $(LIBS) home_bbs: $(home_bbs_OBJECTS) $(home_bbs_DEPENDENCIES) @rm -f home_bbs $(CXXLINK) $(home_bbs_LDFLAGS) $(home_bbs_OBJECTS) $(home_bbs_LDADD) $(LIBS) .cc.o: $(CXXCOMPILE) -c $< tags: TAGS ID: $(HEADERS) $(SOURCES) $(LISP) list='$(SOURCES) $(HEADERS)'; \ unique=`for i in $$list; do echo $$i; done | \ awk ' { files[$$0] = 1; } \ END { for (i in files) print i; }'`; \ here=`pwd` && cd $(srcdir) \ && mkid -f$$here/ID $$unique $(LISP) TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) $(LISP) tags=; \ here=`pwd`; \ list='$(SOURCES) $(HEADERS)'; \ unique=`for i in $$list; do echo $$i; done | \ awk ' { files[$$0] = 1; } \ END { for (i in files) print i; }'`; \ test -z "$(ETAGS_ARGS)$$unique$(LISP)$$tags" \ || (cd $(srcdir) && etags $(ETAGS_ARGS) $$tags $$unique $(LISP) -o $$here/TAGS) mostlyclean-tags: clean-tags: distclean-tags: -rm -f TAGS ID maintainer-clean-tags: distdir = $(top_builddir)/$(PACKAGE)-$(VERSION)/$(subdir) subdir = routes distdir: $(DISTFILES) @for file in $(DISTFILES); do \ d=$(srcdir); \ if test -d $$d/$$file; then \ cp -pr $$d/$$file $(distdir)/$$file; \ else \ test -f $(distdir)/$$file \ || ln $$d/$$file $(distdir)/$$file 2> /dev/null \ || cp -p $$d/$$file $(distdir)/$$file || :; \ fi; \ done info-am: info: info-am dvi-am: dvi: dvi-am check-am: all-am check: check-am installcheck-am: installcheck: installcheck-am install-exec-am: install-binPROGRAMS install-exec: install-exec-am install-data-am: install-data: install-data-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am install: install-am uninstall-am: uninstall-binPROGRAMS uninstall: uninstall-am all-am: Makefile $(PROGRAMS) all-redirect: all-am install-strip: $(MAKE) $(AM_MAKEFLAGS) AM_INSTALL_PROGRAM_FLAGS=-s install installdirs: $(mkinstalldirs) $(DESTDIR)$(bindir) mostlyclean-generic: clean-generic: distclean-generic: -rm -f Makefile $(CONFIG_CLEAN_FILES) -rm -f config.cache config.log stamp-h stamp-h[0-9]* maintainer-clean-generic: mostlyclean-am: mostlyclean-binPROGRAMS mostlyclean-compile \ mostlyclean-tags mostlyclean-generic mostlyclean: mostlyclean-am clean-am: clean-binPROGRAMS clean-compile clean-tags clean-generic \ mostlyclean-am clean: clean-am distclean-am: distclean-binPROGRAMS distclean-compile distclean-tags \ distclean-generic clean-am distclean: distclean-am maintainer-clean-am: maintainer-clean-binPROGRAMS \ maintainer-clean-compile maintainer-clean-tags \ maintainer-clean-generic distclean-am @echo "This command is intended for maintainers to use;" @echo "it deletes files that may require special tools to rebuild." maintainer-clean: maintainer-clean-am .PHONY: mostlyclean-binPROGRAMS distclean-binPROGRAMS clean-binPROGRAMS \ maintainer-clean-binPROGRAMS uninstall-binPROGRAMS install-binPROGRAMS \ mostlyclean-compile distclean-compile clean-compile \ maintainer-clean-compile tags mostlyclean-tags distclean-tags \ clean-tags maintainer-clean-tags distdir info-am info dvi-am dvi check \ check-am installcheck-am installcheck install-exec-am install-exec \ install-data-am install-data install-am install uninstall-am uninstall \ all-redirect all-am all installdirs mostlyclean-generic \ distclean-generic clean-generic maintainer-clean-generic clean \ mostlyclean distclean maintainer-clean # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: ax25mail-utils-0.11.orig/routes/Makefile.am0000644000175000017500000000034406733142330020261 0ustar pg4ipg4i00000000000000CFLAGS = -g -Wall -funsigned-char CXXFLAGS = -g -Wall -funsigned-char bin_PROGRAMS = update_routes home_bbs update_routes_SOURCES = update_routes.cc home_bbs_SOURCES = home_bbs.cc datadir = @prefix@/bin bindir = @prefix@/bin ax25mail-utils-0.11.orig/routes/update_routes.cc0000644000175000017500000001216506711367370021434 0ustar pg4ipg4i00000000000000/* Update the message routes from message files (c) 1999 by Radek Burget OK2JBG */ #include #include #include #include #include #define MAIL_PATH "/var/ax25/mail" #define LIST_PATH "/var/ax25/ulistd" #define OUT_FILE "/var/ax25/mail_routes" //----------------------------------------------------------------------- // class addr //----------------------------------------------------------------------- class route_addr { public: char call[10]; char route[36]; int count; int pcount; time_t ttime; route_addr(); route_addr &operator = (const route_addr &); }; route_addr &route_addr::operator = (const route_addr &src) { strcpy(call, src.call); strcpy(route, src.route); count = src.count; pcount = src.pcount; ttime = src.ttime; return *this; } route_addr::route_addr() { strcpy(call, ""); strcpy(route, ""); count = 0; pcount = 0; ttime = 0; } vector routes; void add_record(char *call, char *route, time_t ntime) { vector ::iterator it; if (routes.empty()) { route_addr newaddr; newaddr.count = 1; newaddr.ttime = ntime; strcpy(newaddr.call, call); strcpy(newaddr.route, route); routes.push_back(newaddr); } else { for (it = routes.begin(); it < routes.end(); it++) if (strcmp(it->call, call) == 0 && strcmp(it->route, route) != 0 && ntime > it->ttime && it->ttime != -1) it->pcount = 0; it = routes.begin(); while (it < routes.end() && (strcmp(it->call, call) < 0 || (strcmp(it->call, call) == 0 && strcmp(it->route, route) < 0))) it++; if (it < routes.end() && strcmp(call, it->call) == 0 && strcmp(route, it->route) == 0) { if (it->ttime != -1 && ntime > it->ttime) //not a forced bbs and new info { it->count++; it->pcount++; it->ttime = ntime; } } else { route_addr newaddr; strcpy(newaddr.call, call); strcpy(newaddr.route, route); newaddr.count = 1; newaddr.pcount = 1; newaddr.ttime = ntime; if (it < routes.end()) routes.insert(it, newaddr); else routes.push_back(newaddr); } } } //----------------------------------------------------------------------- //read the database void read_database() { FILE *f = fopen(OUT_FILE, "r"); if (f == NULL) return; while (!feof(f)) { char line[256]; char call[256]; char route[256]; int count, pcount; time_t ttime; route_addr newaddr; strcpy(line, ""); fgets(line, 255, f); int n = sscanf(line, "%s %s %i %i %li", call, route, &count, &pcount, &ttime); if (n == 5) { strncpy(newaddr.call, call, 10); strncpy(newaddr.route, route, 35); newaddr.count = count; newaddr.ttime = ttime; newaddr.pcount = pcount; routes.push_back(newaddr); } } } //read the source path from the message bool read_source_route(char *bbs, int num, char *route, time_t *ntime) { char fname[256]; char line[256], rline[256]; sprintf(fname, "%s/%s/%i", MAIL_PATH, bbs, num); FILE *f = fopen(fname, "r"); if (f == NULL) return false; strcpy(rline, ""); do { fgets(line, 255, f); if (strncmp(line, "R:", 2) == 0) strcpy(rline, line); } while (strncmp(line, "R:", 2) == 0); char *p = strstr(rline, "@:"); if (p == NULL) return false; p += 2; char *q = route; while (!isspace(*p)) { *q = *p; p++; q++; } *q = '\0'; fclose(f); //check the file time struct stat buf; if (stat(fname, &buf) == 0) *ntime = buf.st_mtime; return true; } //Update from the BBS message list void update_bbs(char *bbsname) { char bbs[35]; FILE *f; char fname[1024]; strncpy(bbs, bbsname, 34); for (char *p = bbs; *p; p++) *p = toupper(*p); sprintf(fname, "%s/%s", LIST_PATH, bbs); f = fopen(fname, "r"); if (f == NULL) { fprintf(stderr, "Cannot open index file for %s\n", bbs); return; } while (!feof(f)) { char line[256]; char route[256]; char flags[10]; char size[20]; char dest[36]; char from[10]; char zfrom[10]; time_t ntime; int num; strcpy(line, ""); fgets(line, 255, f); if (strlen(line) > 0) { sscanf(line, "%i %s %s %s %s %s", &num, flags, size, dest, from, zfrom); if (from[0] == '@') strcpy(from, zfrom); if (read_source_route(bbs, num, route, &ntime)) { add_record(from, route, ntime); } } } fclose(f); return; } int main(int argc, char **argv) { if (argc < 2) { printf("update_routes [ ...]\n"); return 1; } //read old data read_database(); //fetch records from message files for (int i = 1; i < argc; i++) update_bbs(argv[i]); //write the database FILE *f = fopen(OUT_FILE, "w"); if (f == NULL) { fprintf(stderr, "Cannot write to %s\n", OUT_FILE); return 1; } vector ::iterator it; for (it = routes.begin(); it < routes.end(); it++) fprintf(f, "%s\t%s\t%i\t%i\t%li\n", it->call, it->route, it->count, it->pcount, it->ttime); fclose(f); return 0; } ax25mail-utils-0.11.orig/routes/home_bbs.cc0000644000175000017500000001154706711367312020326 0ustar pg4ipg4i00000000000000/* View / change mail routes (c) 1999 by Radek Burget OK2JBG */ #include #include #include #include #define OUT_FILE "/var/ax25/mail_routes" #define HOME_COUNT 5 //----------------------------------------------------------------------- // class addr //----------------------------------------------------------------------- class route_addr { public: char call[10]; char route[36]; int count; int pcount; time_t ttime; route_addr(); route_addr &operator = (const route_addr &); }; route_addr &route_addr::operator = (const route_addr &src) { strcpy(call, src.call); strcpy(route, src.route); count = src.count; pcount = src.pcount; ttime = src.ttime; return *this; } route_addr::route_addr() { strcpy(call, ""); strcpy(route, ""); count = 0; pcount = 0; ttime = 0; } vector routes; //----------------------------------------------------------------------- //read the database bool read_database() { FILE *f = fopen(OUT_FILE, "r"); if (f == NULL) return false; while (!feof(f)) { char line[256]; char call[256]; char route[256]; int count, pcount; time_t ttime; route_addr newaddr; strcpy(line, ""); fgets(line, 255, f); int n = sscanf(line, "%s %s %i %i %li", call, route, &count, &pcount, &ttime); if (n == 5) { strncpy(newaddr.call, call, 10); strncpy(newaddr.route, route, 35); newaddr.count = count; newaddr.ttime = ttime; newaddr.pcount = pcount; routes.push_back(newaddr); } } return true; } void force_home(char *call, char *route) { vector ::iterator it; if (routes.empty()) { route_addr newaddr; newaddr.count = 1; newaddr.ttime = -1; strcpy(newaddr.call, call); strcpy(newaddr.route, route); routes.push_back(newaddr); } else { //unmark previous home BBS for (it = routes.begin(); it < routes.end(); it++) if (strcmp(it->call, call) == 0 && it->ttime == -1) { it->ttime = 0; //record will be completely updated it->count = 0; it->pcount = 0; } it = routes.begin(); while (it < routes.end() && (strcmp(it->call, call) < 0 || (strcmp(it->call, call) == 0 && strcmp(it->route, route) < 0))) it++; if (it < routes.end() && strcmp(call, it->call) == 0 && strcmp(route, it->route) == 0) { it->ttime = -1; } else { route_addr newaddr; strcpy(newaddr.call, call); strcpy(newaddr.route, route); newaddr.count = 1; newaddr.ttime = -1; if (it < routes.end()) routes.insert(it, newaddr); else routes.push_back(newaddr); } } } int main(int argc, char **argv) { if (argc < 2 || argc > 3) { printf("View: home_bbs \n"); printf("Change: home_bbs \n"); return 1; } //read old data if (!read_database()) fprintf(stderr, "Warning: Cannot open routing database %s - creating new\n", OUT_FILE); for (char *p = argv[1]; *p; p++) *p = toupper(*p); char *call = argv[1]; if (argc == 2) //view { vector cands; vector ::iterator it, home; bool found = false; //select candidates for (it = routes.begin(); it < routes.end(); it++) if (strcmp(call, it->call) == 0) cands.push_back(*it); if (cands.empty()) { printf("%s's home BBS is unknown\n", call); return 0; } //find the forced home (time = -1) for (it = cands.begin(); it < cands.end(); it++) if (it->ttime == -1) { home = it; found = true; } //find the bbs with PCOUNT > HOME_COUNT if (!found) for (it = cands.begin(); it < cands.end(); it++) if (it->pcount > HOME_COUNT) { home = it; found = true; } //if not found return the most used BBS if (!found) { home = cands.begin(); for (it = cands.begin(); it < cands.end(); it++) if (it->count > home->count) home = it; } printf("Most probable address of %s is\n", call); printf(" %s@%s\n", call, home->route); if (cands.size() > 1) { printf("Other possibilities are:\n"); for (it = cands.begin(); it < cands.end(); it++) if (it != home) printf(" %s@%s (used %ix)\n", call, it->route, it->count); } } else //edit { for (char *p = argv[2]; *p; p++) *p = toupper(*p); force_home(call, argv[2]); //write the database FILE *f = fopen(OUT_FILE, "w"); if (f == NULL) { fprintf(stderr, "Cannot write to %s\n", OUT_FILE); return 1; } vector ::iterator it; for (it = routes.begin(); it < routes.end(); it++) fprintf(f, "%s\t%s\t%i\t%i\t%li\n", it->call, it->route, it->count, it->pcount, it->ttime); fclose(f); } return 0; } ax25mail-utils-0.11.orig/conf/0000755000175000017500000000000007425043443015634 5ustar pg4ipg4i00000000000000ax25mail-utils-0.11.orig/conf/Makefile.in0000644000175000017500000001060007425043443017676 0ustar pg4ipg4i00000000000000# Makefile.in generated automatically by automake 1.4-p4 from Makefile.am # Copyright (C) 1994, 1995-8, 1999 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. SHELL = @SHELL@ srcdir = @srcdir@ top_srcdir = @top_srcdir@ VPATH = @srcdir@ prefix = @prefix@ exec_prefix = @exec_prefix@ bindir = @bindir@ sbindir = @sbindir@ libexecdir = @libexecdir@ sysconfdir = @sysconfdir@ sharedstatedir = @sharedstatedir@ localstatedir = @localstatedir@ libdir = @libdir@ infodir = @infodir@ mandir = @mandir@ includedir = @includedir@ oldincludedir = /usr/include DESTDIR = pkgdatadir = $(datadir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ top_builddir = .. ACLOCAL = @ACLOCAL@ AUTOCONF = @AUTOCONF@ AUTOMAKE = @AUTOMAKE@ AUTOHEADER = @AUTOHEADER@ INSTALL = @INSTALL@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ $(AM_INSTALL_PROGRAM_FLAGS) INSTALL_DATA = @INSTALL_DATA@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ transform = @program_transform_name@ NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : CC = @CC@ CXX = @CXX@ LN_S = @LN_S@ MAKEINFO = @MAKEINFO@ PACKAGE = @PACKAGE@ PERL = @PERL@ VERSION = @VERSION@ datadir = /etc/ax25 EXTRA_DIST = ulistd.conf axgetlist.conf axgetmail.conf bulletins.OK0PAB logins mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs CONFIG_HEADER = ../config.h CONFIG_CLEAN_FILES = DIST_COMMON = Makefile.am Makefile.in DISTFILES = $(DIST_COMMON) $(SOURCES) $(HEADERS) $(TEXINFOS) $(EXTRA_DIST) TAR = tar GZIP_ENV = --best all: all-redirect .SUFFIXES: $(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4) cd $(top_srcdir) && $(AUTOMAKE) --gnu --include-deps conf/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status cd $(top_builddir) \ && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status tags: TAGS TAGS: distdir = $(top_builddir)/$(PACKAGE)-$(VERSION)/$(subdir) subdir = conf distdir: $(DISTFILES) @for file in $(DISTFILES); do \ d=$(srcdir); \ if test -d $$d/$$file; then \ cp -pr $$d/$$file $(distdir)/$$file; \ else \ test -f $(distdir)/$$file \ || ln $$d/$$file $(distdir)/$$file 2> /dev/null \ || cp -p $$d/$$file $(distdir)/$$file || :; \ fi; \ done info-am: info: info-am dvi-am: dvi: dvi-am check-am: all-am check: check-am installcheck-am: installcheck: installcheck-am install-exec-am: install-exec: install-exec-am install-data-am: install-data: install-data-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am install: install-am uninstall-am: uninstall: uninstall-am all-am: Makefile all-redirect: all-am install-strip: $(MAKE) $(AM_MAKEFLAGS) AM_INSTALL_PROGRAM_FLAGS=-s install installdirs: mostlyclean-generic: clean-generic: distclean-generic: -rm -f Makefile $(CONFIG_CLEAN_FILES) -rm -f config.cache config.log stamp-h stamp-h[0-9]* maintainer-clean-generic: mostlyclean-am: mostlyclean-generic mostlyclean: mostlyclean-am clean-am: clean-generic mostlyclean-am clean: clean-am distclean-am: distclean-generic clean-am distclean: distclean-am maintainer-clean-am: maintainer-clean-generic distclean-am @echo "This command is intended for maintainers to use;" @echo "it deletes files that may require special tools to rebuild." maintainer-clean: maintainer-clean-am .PHONY: tags distdir info-am info dvi-am dvi check check-am \ installcheck-am installcheck install-exec-am install-exec \ install-data-am install-data install-am install uninstall-am uninstall \ all-redirect all-am all installdirs mostlyclean-generic \ distclean-generic clean-generic maintainer-clean-generic clean \ mostlyclean distclean maintainer-clean installconf: @INSTALL@ -m 644 ulistd.conf /etc/ax25 @INSTALL@ -m 644 axgetlist.conf /etc/ax25 @INSTALL@ -m 644 axgetmail.conf /etc/ax25 @INSTALL@ -m 644 bulletins.OK0PAB /etc/ax25 @INSTALL@ -m 644 logins /etc/ax25 # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: ax25mail-utils-0.11.orig/conf/Makefile.am0000644000175000017500000000047707040061606017672 0ustar pg4ipg4i00000000000000datadir = /etc/ax25 EXTRA_DIST = ulistd.conf axgetlist.conf axgetmail.conf bulletins.OK0PAB logins installconf: @INSTALL@ -m 644 ulistd.conf /etc/ax25 @INSTALL@ -m 644 axgetlist.conf /etc/ax25 @INSTALL@ -m 644 axgetmail.conf /etc/ax25 @INSTALL@ -m 644 bulletins.OK0PAB /etc/ax25 @INSTALL@ -m 644 logins /etc/ax25 ax25mail-utils-0.11.orig/conf/ulistd.conf0000644000175000017500000000144707422574051020016 0ustar pg4ipg4i00000000000000# /etc/ax25/ulistd.conf # # ulistd Configuration File. # # List of BBS parametres, one line for each BBS # [-SSID] [] [] ... # # resp_time - how long to wait for a BBS response after sending the request # [seconds] (recommended 15) # When set to 0 ulistd will work in passive mode. In this case # the script /var/ax25/complete_agent is called each time # the hole in the list is detected. # # wait_time - how long to wait for next frame from BBS after receiving some # frames before sending next request # [seconds] (recommended 10) # In passive mode this is the minimal intervel between two calls # of the script. # 15 10 p1 OK0PBX 15 10 p2 OK0PAB OK0NMA-8 ax25mail-utils-0.11.orig/conf/axgetlist.conf0000644000175000017500000000544107424545060020514 0ustar pg4ipg4i00000000000000# /etc/ax25/axgetlist.conf # # axgetlist Configuration File. # # This file consists of paragraphs - one for each BBS. Each paragraph # starts with [callsign]. # ############################################################################ # Start of the first paragraph [OK0PAB] # # My callsign (you can specify the SSID too) # MYCALL OK2JBG # # BBS callsign, add the SSID and the digipeaters if any # BBSCALL CZ0PIG OK0NMA # # AX.25 port for connecting BBS # BBSPORT kiss # # # BBS commands # ------------ # Commands for obtaining list of all new messages (separated by ';') # CAUTION: The list must be sorted by message number by _ascending_ order # (in case of F6FBB BBS use the LR command) # CMD_LIST lc *;lr # # Commands for obtaining list of messages starting from a particular message # number (separated by ';'). The $ character will be replaced with the # message number. # CAUTION: The list must be sorted by message number by _ascending_ order # (in case of F6FBB BBS use the LR $- command) # CMD_LIST_FROM lc *;lr $- # # Commands for disconnect # CMD_DISC b # # List format specifiaction # ------------------------- # # Number of lines between the list command and the first message line. # (length of the list header) # HEADER_LINES 3 # # The order of fields in the list # You can use folowing words to specify the meaning of each field: # - message number # - message flags (bulletin/private, local ...) # - message size # - destination callsign # - destination BBS # - source (sender) callsign # - date #