From 2dfd5bee542a9d635e380097e63c307bd6c27d65 Mon Sep 17 00:00:00 2001 From: Art Cancro Date: Fri, 6 Apr 2018 14:38:11 -0400 Subject: [PATCH] Ultra-simplification of the build system for the text client. Eliminated the use of GNU Autotools because Richard Stallman is a communist who hates America. Now we use "conf-IG-ure" , a new build system which is patriotic and has screeching eagles and American flags and Bibles and guns and can win at NASCAR without even trying. Seriously though ... autotools is just way too complex for the 21st Century. I guess that means we're dropping support for the extreme edge case obsolete systems so that we can make our own software more maintainable. I've also ripped out the billions of lines of experimental code which does nothing and isn't being used anymore. --- ctdlsh/{README => README.txt} | 0 textclient/.gitignore | 2 - textclient/Makefile | 35 + textclient/Makefile.in | 214 --- textclient/README.txt | 10 + textclient/acinclude.m4 | 50 - textclient/aclocal.m4 | 106 -- textclient/bootstrap | 33 +- textclient/buildpackages | 122 -- textclient/{src => }/citadel.c | 54 +- textclient/{src => }/citadel_ipc.c | 98 +- textclient/{src => }/client_chat.c | 36 +- textclient/{src => }/client_passwords.c | 15 +- textclient/{src => }/commands.c | 553 ++++-- textclient/config.guess | 1500 --------------- textclient/config.sub | 1616 ----------------- textclient/configure | 57 + textclient/configure.ac | 862 --------- textclient/install-sh | 250 --- textclient/{src => }/ipc_c_tcp.c | 58 +- textclient/ltmain.sh | 1 - textclient/m4/libtool.m4 | 1 - textclient/m4/ltoptions.m4 | 1 - textclient/m4/ltsugar.m4 | 1 - textclient/m4/ltversion.m4 | 1 - textclient/m4/lt~obsolete.m4 | 1 - textclient/{src => }/md5.c | 26 +- textclient/{src => }/messages.c | 46 +- textclient/missing | 283 --- textclient/mkinstalldirs | 38 - textclient/{src => }/rooms.c | 22 +- textclient/{src => }/routines.c | 41 +- textclient/{src => }/routines2.c | 34 +- textclient/{src => }/screen.c | 20 +- textclient/scripts/mk_svn_revision.sh | 78 - textclient/src/ecrash.c | 516 ------ textclient/src/include/citadel_decls.h | 32 - textclient/src/include/client_chat.h | 18 - textclient/src/include/client_passwords.h | 29 - textclient/src/include/commands.h | 77 - textclient/src/include/ecrash.h | 185 -- textclient/src/include/help.h | 420 ----- textclient/src/include/md5.h | 31 - textclient/src/include/messages.h | 35 - textclient/src/include/rooms.h | 61 - textclient/src/include/routines.h | 24 - textclient/src/include/routines2.h | 25 - textclient/src/include/screen.h | 31 - textclient/src/include/tuiconfig.h | 19 - textclient/src/include/typesize.h | 69 - .../include/citadel_ipc.h => textclient.h} | 570 ++++-- textclient/{src => }/tuiconfig.c | 40 +- 52 files changed, 970 insertions(+), 7477 deletions(-) rename ctdlsh/{README => README.txt} (100%) create mode 100644 textclient/Makefile delete mode 100644 textclient/Makefile.in create mode 100644 textclient/README.txt delete mode 100644 textclient/acinclude.m4 delete mode 100644 textclient/aclocal.m4 delete mode 100755 textclient/buildpackages rename textclient/{src => }/citadel.c (98%) rename textclient/{src => }/citadel_ipc.c (97%) rename textclient/{src => }/client_chat.c (90%) rename textclient/{src => }/client_passwords.c (92%) rename textclient/{src => }/commands.c (62%) delete mode 100755 textclient/config.guess delete mode 100755 textclient/config.sub create mode 100755 textclient/configure delete mode 100644 textclient/configure.ac delete mode 100755 textclient/install-sh rename textclient/{src => }/ipc_c_tcp.c (53%) delete mode 120000 textclient/ltmain.sh delete mode 120000 textclient/m4/libtool.m4 delete mode 120000 textclient/m4/ltoptions.m4 delete mode 120000 textclient/m4/ltsugar.m4 delete mode 120000 textclient/m4/ltversion.m4 delete mode 120000 textclient/m4/lt~obsolete.m4 rename textclient/{src => }/md5.c (95%) rename textclient/{src => }/messages.c (98%) delete mode 100755 textclient/missing delete mode 100755 textclient/mkinstalldirs rename textclient/{src => }/rooms.c (98%) rename textclient/{src => }/routines.c (95%) rename textclient/{src => }/routines2.c (95%) rename textclient/{src => }/screen.c (92%) delete mode 100755 textclient/scripts/mk_svn_revision.sh delete mode 100644 textclient/src/ecrash.c delete mode 100644 textclient/src/include/citadel_decls.h delete mode 100644 textclient/src/include/client_chat.h delete mode 100644 textclient/src/include/client_passwords.h delete mode 100644 textclient/src/include/commands.h delete mode 100644 textclient/src/include/ecrash.h delete mode 100644 textclient/src/include/help.h delete mode 100644 textclient/src/include/md5.h delete mode 100644 textclient/src/include/messages.h delete mode 100644 textclient/src/include/rooms.h delete mode 100644 textclient/src/include/routines.h delete mode 100644 textclient/src/include/routines2.h delete mode 100644 textclient/src/include/screen.h delete mode 100644 textclient/src/include/tuiconfig.h delete mode 100644 textclient/src/include/typesize.h rename textclient/{src/include/citadel_ipc.h => textclient.h} (63%) rename textclient/{src => }/tuiconfig.c (97%) diff --git a/ctdlsh/README b/ctdlsh/README.txt similarity index 100% rename from ctdlsh/README rename to ctdlsh/README.txt diff --git a/textclient/.gitignore b/textclient/.gitignore index 81bb5c37a..dc9a5743a 100644 --- a/textclient/.gitignore +++ b/textclient/.gitignore @@ -4,7 +4,6 @@ *.gcda Make_modules Make_sources -Makefile Makefile.in locale aclocal.m4 @@ -19,7 +18,6 @@ citmail citserver config.log config.status -configure configure-stamp ctdlmigrate database_cleanup.sh diff --git a/textclient/Makefile b/textclient/Makefile new file mode 100644 index 000000000..d52a704da --- /dev/null +++ b/textclient/Makefile @@ -0,0 +1,35 @@ +# MAKEFILE FOR CITADEL TEXT CLIENT +# Copyright (c) 2016-2018 by the citadel.org team + +# config.mk is generated by ./configure +include config.mk + +OBJS := citadel.o citadel_ipc.o client_chat.o client_passwords.o commands.o ipc_c_tcp.o md5.o messages.o rooms.o routines2.o routines.o screen.o tuiconfig.o + + +# link +citadel: $(OBJS) config.mk + gcc $(OBJS) $(LDFLAGS) -lcitadel -o citadel + +# pull in dependency info for *existing* .o files +-include $(OBJS:.o=.d) + +# compile and generate dependency info +%.o: %.c + gcc -c $(CFLAGS) -DCTDLDIR=\"$(CTDLDIR)\" $*.c -o $*.o + gcc -MM $(CFLAGS) $*.c > $*.d + +config.mk: + ./configure + +clean: + rm -f citadel *.o *.d + +distclean: clean + rm -f config.mk + +install: citadel + install citadel $(BINDIR)/citadel + +uninstall: + rm -vf $(BINDIR)/citadel diff --git a/textclient/Makefile.in b/textclient/Makefile.in deleted file mode 100644 index 12a9372e5..000000000 --- a/textclient/Makefile.in +++ /dev/null @@ -1,214 +0,0 @@ -# Makefile for Citadel -# -# NOTE: normally you should not have to modify the Makefile. All -# system-dependent configuration is in the "configure" script, which -# uses "Makefile.in" to generate a "Makefile". In the rare instance -# that you have to modify something here, please take note: -# 1. Edit Makefile.in, -not- Makefile. -# 2. Send e-mail to ajc@uncensored.citadel.org and let me know what you -# did, so any necessary changes can be put into the next release. -# -######################################################################## - -prefix=@prefix@ -srcdir=@srcdir@ -VPATH=$(srcdir) - -TARGETS=@TARGETS@ -RUN_DIR=@MAKE_RUN_DIR@ -SPOOL_DIR=@MAKE_SPOOL_DIR@ -ETC_DIR=@MAKE_ETC_DIR@ -DATA_DIR=@MAKE_DATA_DIR@ -STATICDATA_DIR=@MAKE_STATICDATA_DIR@ -HELP_DIR=@MAKE_HELP_DIR@ -DOC_DIR=@MAKE_DOC_DIR@ -UTILBIN_DIR=@MAKE_UTILBIN_DIR@ -DEPEND_FLAG=@DEPEND_FLAG@ -all: buildinfo $(TARGETS) - -.SUFFIXES: .o .d .c - -EXEEXT=@EXEEXT@ - -CLIENT_TARGETS=citadel$(EXEEXT) - -ACLOCAL=@ACLOCAL@ -AUTOCONF=@AUTOCONF@ -chkpwd_LIBS=@chkpwd_LIBS@ -CC=@CC@ -CFLAGS=@CFLAGS@ -I ./include/ -CPPFLAGS=@CPPFLAGS@ -I. -I ./src/include/ -DATABASE=@DATABASE@ -DEFS=@DEFS@ -DDIFF=\"@DIFF@\" -DPATCH=\"@PATCH@\" -LDFLAGS=@LDFLAGS@ -LIBS=@LIBS@ -LIBOBJS=@LIBOBJS@ -INSTALL=@INSTALL@ -INSTALL_DATA=@INSTALL_DATA@ -RESOLV=@RESOLV@ -SHELL=/bin/sh -SERVER_LDFLAGS=@SERVER_LDFLAGS@ -SERVER_LIBS=@SERVER_LIBS@ -SETUP_LIBS=@SETUP_LIBS@ -YACC=@YACC@ -DIFF=@DIFF@ -PATCH=@PATCH@ -LOCALEDIR=@LOCALEDIR@ - -# End configuration section - -.SILENT: - - -SOURCES=src/client_chat.c \ - src/client_passwords.c \ - src/commands.c \ - src/messages.c \ - src/rooms.c \ - src/routines.c \ - src/routines2.c \ - src/tuiconfig.c \ - src/citadel.c \ - src/citadel_ipc.c \ - src/ecrash.c \ - src/ipc_c_tcp.c \ - src/getutline.c \ - src/screen.c - -# for VPATH builds (invoked by configure) -mkdir-init: - mkdir -p textclient - mkdir locale - - -noinst: $(NOINST_TARGETS) -client: $(CLIENT_TARGETS) - -citadel$(EXEEXT): src/citadel.o \ - src/client_chat.o \ - src/client_passwords.o \ - src/commands.o \ - src/md5.o \ - src/messages.o \ - src/rooms.o \ - src/routines.o \ - src/routines2.o \ - src/tuiconfig.o \ - src/screen.o \ - src/ecrash.o \ - src/citadel_ipc.o \ - src/ipc_c_tcp.o \ - $(LIBOBJS) - $(CC) src/citadel.o \ - src/client_chat.o \ - src/client_passwords.o \ - src/commands.o \ - src/md5.o \ - src/messages.o \ - src/rooms.o \ - src/routines.o \ - src/routines2.o \ - src/tuiconfig.o \ - src/screen.o \ - src/ecrash.o \ - src/citadel_ipc.o \ - src/ipc_c_tcp.o \ - $(LIBOBJS) \ - $(LDFLAGS) -o citadel $(LIBS) - -%.o: %.c ${HEADERS} - echo "CC $<" - $(CC) $(CFLAGS) $(CPPFLAGS) $(DEFS) -c $< -o $@ - -.PHONY: install-data install-doc install-exec clean cleaner distclean - -install-locale: - -install: install-exec install-data install-doc install-locale - @echo - @echo Installation is complete. - @echo - -install-new: install-exec-new install-data-new install-doc-new install-locale - @echo - @echo Installation is complete. - @echo - -upgrade: install-exec install-doc - @echo - @echo Upgrade is complete. - @echo - -install-data: - @for i in citadel.rc \ - `find $(srcdir)/help $(srcdir)/messages $(srcdir)/network -type f | grep -v .svn`; do \ - echo $(INSTALL_DATA) $$i $(DESTDIR)$(prefix)/$$i; \ - $(INSTALL_DATA) $$i $(DESTDIR)$(prefix)/$$i; \ - done - -install-data-new: - $(srcdir)/mkinstalldirs $(DESTDIR)$(ETC_DIR)/ - $(INSTALL_DATA) $(srcdir)/citadel.rc $(DESTDIR)$(ETC_DIR)/citadel.rc - -install-doc: - @$(srcdir)/mkinstalldirs $(DESTDIR)$(prefix)/docs - -install-doc-new: - @$(srcdir)/mkinstalldirs $(DESTDIR)$(DOC_DIR)/docs - -install-exec: all - @for i in $(CLIENT_TARGETS) ; do \ - if test -f $$i; then \ - echo $(INSTALL) $$i $(DESTDIR)$(prefix)/$$i; \ - $(INSTALL) $$i $(DESTDIR)$(prefix)/$$i; \ - fi \ - done - -install-exec-new: all - $(srcdir)/mkinstalldirs $(DESTDIR)/usr/bin; - @for i in $(CLIENT_TARGETS); do \ - if test -f $$i; then \ - echo $(INSTALL) $$i $(DESTDIR)/usr/bin/$$i; \ - $(INSTALL) $$i $(DESTDIR)/usr/bin/$$i; \ - fi \ - done - -clean: - rm -fr locale/* - rm -f *.o - rm -f $(CLIENT_TARGETS) - -cleaner: clean - rm -rf $(CLIENT_TARGETS) - -distclean: cleaner - find . -name '*~' -o -name '.#*' | xargs rm -f - rm -f po/Makefile - rm -f Makefile sysdep.h config.cache config.log config.status *.d - - -.c.d: - @echo Checking dependencies for $< - @$(CC) $(DEPEND_FLAG) $(CPPFLAGS) $< | sed -e 's!$*.o!$*.o $*/.o $@!' > $@ - @test -s $@ || rm -f $@ - -Makefile: $(srcdir)/Makefile.in config.status - CONFIG_FILES=Makefile CONFIG_HEADERS= $(SHELL) ./config.status - -config.status: $(srcdir)/configure - $(SHELL) ./config.status --recheck - -$(srcdir)/configure: $(srcdir)/configure.ac $(srcdir)/aclocal.m4 - cd $(srcdir) && $(AUTOCONF) - -$(srcdir)/aclocal.m4: $(srcdir)/acinclude.m4 - cd $(srcdir) && $(ACLOCAL) - -buildinfo: - echo - echo "Dependencies: $(CC) $(DEPEND_FLAG) $(CPPFLAGS) $< | sed -e 's!$*.o!$*.o $*/.o $@!' > $@" - echo "Complie: $(CC) $(CFLAGS) $(CPPFLAGS) $(DEFS) -c $< -o $@ " - echo "LDFLAGS: $(LDFLAGS)" - echo - --include $(DEP_FILES) diff --git a/textclient/README.txt b/textclient/README.txt new file mode 100644 index 000000000..a80489fab --- /dev/null +++ b/textclient/README.txt @@ -0,0 +1,10 @@ + +This is a text mode user interface for the Citadel system. It presents +a Citadel site to users in the form of a traditional BBS. + +All code is Copyright (c) 1987-2018 by the citadel.org team, and is released +under the terms of the GNU General Public License v3. As a special exception, +the Citadel team requires all users of this code to agree that our favorite +software model is called "open source" and NOT "free software", and that our +favorite operating system is called "Linux" and NOT "GNU/Linux". + diff --git a/textclient/acinclude.m4 b/textclient/acinclude.m4 deleted file mode 100644 index 0941acf0b..000000000 --- a/textclient/acinclude.m4 +++ /dev/null @@ -1,50 +0,0 @@ -# CIT_STRUCT_TM -# ------------------ -# Figure out how to get the current GMT offset. If `struct tm' has a -# `tm_gmtoff' member, define `HAVE_STRUCT_TM_TM_GMTOFF'. Otherwise, if the -# external variable `timezone' is found, define `HAVE_TIMEZONE'. -AC_DEFUN([CIT_STRUCT_TM], -[AC_REQUIRE([AC_STRUCT_TM])dnl -AC_CHECK_MEMBERS([struct tm.tm_gmtoff],,,[#include -#include <$ac_cv_struct_tm> -]) -if test "$ac_cv_member_struct_tm_tm_gmtoff" != yes; then - AC_CACHE_CHECK(for timezone, ac_cv_var_timezone, -[AC_TRY_LINK( -[#include ], -[printf("%ld", (long)timezone);], ac_cv_var_timezone=yes, ac_cv_var_timezone=no)]) - if test $ac_cv_var_timezone = yes; then - AC_DEFINE(HAVE_TIMEZONE, 1, - [Define if you don't have `tm_gmtoff' but do have the external - variable `timezone'.]) - fi -fi -])# CIT_STRUCT_TM - -AC_DEFUN([AC_CHECK_DB],[ -for lib in $1 -do - AS_VAR_PUSHDEF([ac_tr_db], [ac_cv_db_lib_${lib}])dnl - bogo_saved_LIBS="$LIBS" - LIBS="$LIBS -l$lib" - AC_CACHE_CHECK([for db_create in -l${lib}], ac_tr_db, - [AC_TRY_LINK([#include ], [int foo=db_create((void *)0, (void *) 0, -0 )], - [AS_VAR_SET(ac_tr_db, yes)], - [AS_VAR_SET(ac_tr_db, no)]) - ]) - AS_IF([test AS_VAR_GET(ac_tr_db) = yes], - [$2 - LIBS="$bogo_saved_LIBS" - SERVER_LIBS="$SERVER_LIBS -l$lib" - db=yes], - [LIBS="$bogo_saved_LIBS" - db=no]) - AS_VAR_POPDEF([ac_tr_db])dnl -test "$db" = "yes" && break -done -if test "$db" = "no"; then -$3 -fi -])# AC_CHECK_DB - diff --git a/textclient/aclocal.m4 b/textclient/aclocal.m4 deleted file mode 100644 index 440da76b0..000000000 --- a/textclient/aclocal.m4 +++ /dev/null @@ -1,106 +0,0 @@ -# generated automatically by aclocal 1.14.1 -*- Autoconf -*- - -# Copyright (C) 1996-2013 Free Software Foundation, Inc. - -# This file 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. - -m4_ifndef([AC_CONFIG_MACRO_DIRS], [m4_defun([_AM_CONFIG_MACRO_DIRS], [])m4_defun([AC_CONFIG_MACRO_DIRS], [_AM_CONFIG_MACRO_DIRS($@)])]) -# AM_AUX_DIR_EXPAND -*- Autoconf -*- - -# Copyright (C) 2001-2013 Free Software Foundation, Inc. -# -# This file 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. - -# For projects using AC_CONFIG_AUX_DIR([foo]), Autoconf sets -# $ac_aux_dir to '$srcdir/foo'. In other projects, it is set to -# '$srcdir', '$srcdir/..', or '$srcdir/../..'. -# -# Of course, Automake must honor this variable whenever it calls a -# tool from the auxiliary directory. The problem is that $srcdir (and -# therefore $ac_aux_dir as well) can be either absolute or relative, -# depending on how configure is run. This is pretty annoying, since -# it makes $ac_aux_dir quite unusable in subdirectories: in the top -# source directory, any form will work fine, but in subdirectories a -# relative path needs to be adjusted first. -# -# $ac_aux_dir/missing -# fails when called from a subdirectory if $ac_aux_dir is relative -# $top_srcdir/$ac_aux_dir/missing -# fails if $ac_aux_dir is absolute, -# fails when called from a subdirectory in a VPATH build with -# a relative $ac_aux_dir -# -# The reason of the latter failure is that $top_srcdir and $ac_aux_dir -# are both prefixed by $srcdir. In an in-source build this is usually -# harmless because $srcdir is '.', but things will broke when you -# start a VPATH build or use an absolute $srcdir. -# -# So we could use something similar to $top_srcdir/$ac_aux_dir/missing, -# iff we strip the leading $srcdir from $ac_aux_dir. That would be: -# am_aux_dir='\$(top_srcdir)/'`expr "$ac_aux_dir" : "$srcdir//*\(.*\)"` -# and then we would define $MISSING as -# MISSING="\${SHELL} $am_aux_dir/missing" -# This will work as long as MISSING is not called from configure, because -# unfortunately $(top_srcdir) has no meaning in configure. -# However there are other variables, like CC, which are often used in -# configure, and could therefore not use this "fixed" $ac_aux_dir. -# -# Another solution, used here, is to always expand $ac_aux_dir to an -# absolute PATH. The drawback is that using absolute paths prevent a -# configured tree to be moved without reconfiguration. - -AC_DEFUN([AM_AUX_DIR_EXPAND], -[AC_REQUIRE([AC_CONFIG_AUX_DIR_DEFAULT])dnl -# Expand $ac_aux_dir to an absolute path. -am_aux_dir=`cd "$ac_aux_dir" && pwd` -]) - -# Fake the existence of programs that GNU maintainers use. -*- Autoconf -*- - -# Copyright (C) 1997-2013 Free Software Foundation, Inc. -# -# This file 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. - -# AM_MISSING_PROG(NAME, PROGRAM) -# ------------------------------ -AC_DEFUN([AM_MISSING_PROG], -[AC_REQUIRE([AM_MISSING_HAS_RUN]) -$1=${$1-"${am_missing_run}$2"} -AC_SUBST($1)]) - -# AM_MISSING_HAS_RUN -# ------------------ -# Define MISSING if not defined so far and test if it is modern enough. -# If it is, set am_missing_run to use it, otherwise, to nothing. -AC_DEFUN([AM_MISSING_HAS_RUN], -[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl -AC_REQUIRE_AUX_FILE([missing])dnl -if test x"${MISSING+set}" != xset; then - case $am_aux_dir in - *\ * | *\ *) - MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;; - *) - MISSING="\${SHELL} $am_aux_dir/missing" ;; - esac -fi -# Use eval to expand $SHELL -if eval "$MISSING --is-lightweight"; then - am_missing_run="$MISSING " -else - am_missing_run= - AC_MSG_WARN(['missing' script is too old or missing]) -fi -]) - -m4_include([acinclude.m4]) diff --git a/textclient/bootstrap b/textclient/bootstrap index d4c23fcf2..c52d3c26b 100755 --- a/textclient/bootstrap +++ b/textclient/bootstrap @@ -1,34 +1,3 @@ #!/bin/sh -# -# run me after checking Citadel out of the source code repository. -# Remove any vestiges of pre-6.05 build environments -rm -f .libs modules *.so *.lo *.la 2>/dev/null - -echo ... running aclocal ... -aclocal -I m4 - -echo ... running autoconf ... -autoconf - -# If your autoconf version changes, the autom4te.cache stuff will mess you up. -# Get rid of it. -echo ... removing autoheader cache files ... -rm -rf autom4te*.cache - -echo ... running autoheader ... -autoheader - -echo ... running mk_svn_revision.sh ... -./scripts/mk_svn_revision.sh - -echo -echo This script has been tested with autoconf 2.53 and -echo automake 1.5. Other versions may work, but we recommend -echo the latest echo compatible versions of these. -echo -echo Also note that autoconf and automake should be configured -echo with the same prefix. -echo - -grep '^#define CLIENT_VERSION' src/include/citadel_ipc.h | sed 's/[^0-9]*//g' >package-version.txt +exit 0 diff --git a/textclient/buildpackages b/textclient/buildpackages deleted file mode 100755 index c784a48c4..000000000 --- a/textclient/buildpackages +++ /dev/null @@ -1,122 +0,0 @@ -#!/bin/bash -# find out the package version from conf -if test -f Makefile; then - make distclean -fi - -#./bootstrap - -export `grep PACKAGE_VERSION= configure |sed -e "s;';;g" -e "s;PACKAGE;CITADEL;"` - -PACKAGE_VERSION=`cat packageversion` -DATE=`date '+%a, %d %b %Y %H:%I:00 %z'` -ACTUAL_DIR=`pwd` - - -rm -rf debian/textclient debian/citadel-common debian/citadel-doc debian/citadel-mta debian/citadel-server debian/citadel-suite debian/tmp -if echo "$ACTUAL_DIR" |grep -q "$CITADEL_VERSION"; then - echo "directory ($ACTUAL_DIR) naming scheme seems right. nothing done." -else - done=false - if test -L "$ACTUAL_DIR"; then - SYMLINK_=`pwd` - SYMLINK=`ls -l $SYMLINK_|sed "s;.*-> ;;"` - if ls -l $SYMLINK_|grep -q "$CITADEL_VERSION"; then - done=true - fi - else - SYMLINK=`pwd|sed "s;.*/;;"` - fi - if test "$done" = "false"; then - cd .. - if test ! -L "textclient-$CITADEL_VERSION"; then - ln -sf textclient "textclient-$CITADEL_VERSION" - fi - cd "textclient-$CITADEL_VERSION" - else - cd "../textclient-$CITADEL_VERSION" - fi - -fi - - -case $1 in - debian) - if grep -q "($CITADEL_VERSION" debian/changelog; then - echo rebuilding package. - else - echo "Upstream Version higher than local." - - fi - if test "$2" == "src"; then - cd .. - rm -rf tmp - mkdir tmp - cp -rL textclient-$CITADEL_VERSION tmp - cd tmp/textclient-$CITADEL_VERSION - rm -rf `find -name .svn ` svn*tmp config.log config.status - find -type f -exec chmod a-x {} \; - chmod a+x configure *.sh *.sh.in debian/rules debian/*inst* debian/rules mkinstalldirs - cd .. - tar -chzf textclient_${CITADEL_VERSION}.orig.tar.gz textclient-${CITADEL_VERSION}/ --exclude "debian/*" - pwd - cd textclient-${CITADEL_VERSION}; debuild -S -sa -kw.goesgens@outgesourced.org - else - fakeroot dpkg-buildpackage - fi - ;; - csw) - if !test -d ~/pkgs/; then - mkdir ~/pkgs - fi - echo " -PKG=CSWcitadel-textclient -NAME=citadel - The groupware server for Web 2.0 -VERSION=${PACKAGE_VERSION} -CATEGORY=application -VENDOR=http://www.citadel.org/ packaged for CSW by Wilfried Goesgens -HOTLINE=https://uncensored.citadel.org/ Room citadel support -EMAIL=citadel@outgesourced.org -" >~/pkgs/citadel - export LDFLAGS='-L/opt/csw/lib -L /usr/local/lib' - export CFLAGS='-I/opt/csw/include -I/usr/local/include -DDISABLE_CURSES' - ./configure \ - --with-db=/opt/csw/bdb44 \ - --with-ical=/usr/local/ \ - --with-prefix=/opt/csw/ \ - --with-datadir=/opt/csw/var/lib/citadel \ - --with-sysconfdir=/opt/csw/etc/citadel \ - --with-ssldir=/opt/csw/etc/ssl/citadel/ \ - --with-spooldir=/opt/csw/var/spool/citadel \ - --with-rundir=/opt/csw/var/run/citadel \ - --with-docdir=/opt/csw/share/doc/citadel-doc/ \ - --with-pam \ - --with-zlib \ - --with-ldap \ - --with-libsieve - - gmake citserver aidepost msgform citmail userlist sendcommand base64 whobbs citadel - gmake DESTDIR=$ACTUAL_DIR/cswstage install-new - - - - ;; - sourcedist) - cd ..; tar \ - --exclude ".gitignore" \ - --exclude "*.lo" \ - --exclude "*.o" \ - --exclude "*.d" \ - --exclude "autom4te.cache/*" \ - --exclude "debian/*" \ - --exclude "sysdep.h" \ - \ - -chvzf textclient-$CITADEL_VERSION.tar.gz textclient-$CITADEL_VERSION/ - ;; - version) - echo This would build textclient-$CITADEL_VERSION - ;; - *) - echo "Not yet implemented. we have: debian " - ;; -esac diff --git a/textclient/src/citadel.c b/textclient/citadel.c similarity index 98% rename from textclient/src/citadel.c rename to textclient/citadel.c index 0385c3750..d01f6fef5 100644 --- a/textclient/src/citadel.c +++ b/textclient/citadel.c @@ -12,53 +12,7 @@ * GNU General Public License for more details. */ -#include "sysdep.h" -#include -#include -#include -#include -#include -#include - -#if TIME_WITH_SYS_TIME -# include -# include -#else -# if HAVE_SYS_TIME_H -# include -# else -# include -# endif -#endif - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include "citadel_ipc.h" -#include "routines.h" -#include "routines2.h" -#include "tuiconfig.h" -#include "rooms.h" -#include "messages.h" -#include "commands.h" -#include "client_chat.h" -#include "client_passwords.h" -#include "citadel_decls.h" -#include "sysdep.h" -#ifndef HAVE_SNPRINTF -#include "snprintf.h" -#endif -#include "screen.h" - -#include "ecrash.h" -#include "md5.h" +#include "textclient.h" #define IFEXPERT if (userflags&US_EXPERT) #define IFNEXPERT if ((userflags&US_EXPERT)==0) @@ -1098,7 +1052,7 @@ void get_serv_info(CtdlIPC *ipc, char *supplied_hostname) /* be nice and identify ourself to the server */ CtdlIPCIdentifySoftware(ipc, CLIENT_TYPE, 0, CLIENT_VERSION, - (ipc->isLocal ? "local" : PACKAGE_STRING), + (ipc->isLocal ? "local" : "Citadel text mode client"), (supplied_hostname) ? supplied_hostname : /* Look up the , in the bible if you're confused */ (locate_host(ipc, buf), buf), buf); @@ -1407,10 +1361,6 @@ int main(int argc, char **argv) char relhome[PATH_MAX]=""; char ctdldir[PATH_MAX]=CTDLDIR; int lp; -#ifdef HAVE_BACKTRACE - eCrashParameters params; -// eCrashSymbolTable symbol_table; -#endif calc_dirs_n_files(relh, home, relhome, ctdldir, 0); #ifdef HAVE_BACKTRACE diff --git a/textclient/src/citadel_ipc.c b/textclient/citadel_ipc.c similarity index 97% rename from textclient/src/citadel_ipc.c rename to textclient/citadel_ipc.c index e0e299ac5..da0f7b974 100644 --- a/textclient/src/citadel_ipc.c +++ b/textclient/citadel_ipc.c @@ -10,48 +10,12 @@ * GNU General Public License for more details. */ -#include "sysdep.h" -#if TIME_WITH_SYS_TIME -# include -# include -#else -# if HAVE_SYS_TIME_H -# include -# else -# include -# endif -#endif -#include -#include -#include -#include -#ifdef HAVE_MALLOC_H -#include -#endif -#include -#include -#include -#include -#include -#include -#include -#include -#ifdef THREADED_CLIENT -#include -#endif -#include -#include "citadel_ipc.h" -#ifdef THREADED_CLIENT -pthread_mutex_t rwlock; -#endif +#include "textclient.h" #ifdef HAVE_OPENSSL static SSL_CTX *ssl_ctx; char arg_encrypt; char rc_encrypt; -#ifdef THREADED_CLIENT -pthread_mutex_t **Critters; /* Things that need locking */ -#endif /* THREADED_CLIENT */ #endif /* HAVE_OPENSSL */ @@ -90,17 +54,11 @@ char *axdefs[]={ void CtdlIPC_lock(CtdlIPC *ipc) { if (ipc->network_status_cb) ipc->network_status_cb(1); -#ifdef THREADED_CLIENT - pthread_mutex_lock(&(ipc->mutex)); -#endif } void CtdlIPC_unlock(CtdlIPC *ipc) { -#ifdef THREADED_CLIENT - pthread_mutex_unlock(&(ipc->mutex)); -#endif if (ipc->network_status_cb) ipc->network_status_cb(0); } @@ -200,9 +158,6 @@ static void serv_write(CtdlIPC *ipc, const char *buf, unsigned int nbytes); static void serv_read_ssl(CtdlIPC *ipc, char *buf, unsigned int bytes); static void serv_write_ssl(CtdlIPC *ipc, const char *buf, unsigned int nbytes); static void endtls(SSL *ssl); -#ifdef THREADED_CLIENT -static unsigned long id_callback(void); -#endif /* THREADED_CLIENT */ #endif /* HAVE_OPENSSL */ static void CtdlIPC_getline(CtdlIPC* ipc, char *buf); static void CtdlIPC_putline(CtdlIPC *ipc, const char *buf); @@ -2934,15 +2889,6 @@ static void serv_write_ssl(CtdlIPC *ipc, const char *buf, unsigned int nbytes) } -#ifdef THREADED_CLIENT -static void ssl_lock(int mode, int n, const char *file, int line) -{ - if (mode & CRYPTO_LOCK) - pthread_mutex_lock(Critters[n]); - else - pthread_mutex_unlock(Critters[n]); -} -#endif /* THREADED_CLIENT */ static void CtdlIPC_init_OpenSSL(void) @@ -2992,37 +2938,8 @@ static void CtdlIPC_init_OpenSSL(void) SSL_CTX_set_tmp_dh(ssl_ctx, dh); DH_free(dh); - -#ifdef THREADED_CLIENT - /* OpenSSL requires callbacks for threaded clients */ - CRYPTO_set_locking_callback(ssl_lock); - CRYPTO_set_id_callback(id_callback); - - /* OpenSSL requires us to do semaphores for threaded clients */ - Critters = malloc(CRYPTO_num_locks() * sizeof (pthread_mutex_t *)); - if (!Critters) { - perror("malloc failed"); - exit(1); - } else { - for (a = 0; a < CRYPTO_num_locks(); a++) { - Critters[a] = malloc(sizeof (pthread_mutex_t)); - if (!Critters[a]) { - perror("malloc failed"); - exit(1); - } - pthread_mutex_init(Critters[a], NULL); - } - } -#endif /* THREADED_CLIENT */ } - - -#ifdef THREADED_CLIENT -static unsigned long id_callback(void) { - return (unsigned long)pthread_self(); -} -#endif /* THREADED_CLIENT */ #endif /* HAVE_OPENSSL */ @@ -3266,16 +3183,13 @@ CtdlIPC* CtdlIPC_new(int argc, char **argv, char *hostbuf, char *portbuf) char sockpath[SIZ]; CtdlIPC* ipc; - ipc = ialloc(CtdlIPC); + ipc = malloc(sizeof(struct _CtdlIPC)); if (!ipc) { return 0; } #if defined(HAVE_OPENSSL) ipc->ssl = NULL; CtdlIPC_init_OpenSSL(); -#endif -#if defined(HAVE_PTHREAD_H) - pthread_mutex_init(&(ipc->mutex), NULL); /* Default fast mutex */ #endif ipc->sock = -1; /* Not connected */ ipc->isLocal = 0; /* Not local, of course! */ @@ -3309,7 +3223,7 @@ CtdlIPC* CtdlIPC_new(int argc, char **argv, char *hostbuf, char *portbuf) } else { error_printf("%s: usage: ",argv[0]); error_printf("%s [host] [port] ",argv[0]); - ifree(ipc); + free(ipc); errno = EINVAL; return 0; } @@ -3330,7 +3244,7 @@ CtdlIPC* CtdlIPC_new(int argc, char **argv, char *hostbuf, char *portbuf) printf("[%s]\n", sockpath); ipc->sock = uds_connectsock(&(ipc->isLocal), sockpath); if (ipc->sock == -1) { - ifree(ipc); + free(ipc); return 0; } if (hostbuf != NULL) strcpy(hostbuf, cithost); @@ -3343,7 +3257,7 @@ CtdlIPC* CtdlIPC_new(int argc, char **argv, char *hostbuf, char *portbuf) printf("[%s:%s]\n", cithost, citport); ipc->sock = tcp_connectsock(cithost, citport); if (ipc->sock == -1) { - ifree(ipc); + free(ipc); return 0; } @@ -3392,7 +3306,7 @@ void CtdlIPC_delete(CtdlIPC* ipc) free (ipc->Buf); ipc->Buf = NULL; ipc->BufPtr = NULL; - ifree(ipc); + free(ipc); } diff --git a/textclient/src/client_chat.c b/textclient/client_chat.c similarity index 90% rename from textclient/src/client_chat.c rename to textclient/client_chat.c index 8933687bf..e725f02e9 100644 --- a/textclient/src/client_chat.c +++ b/textclient/client_chat.c @@ -12,41 +12,7 @@ * GNU General Public License for more details. */ -#include "sysdep.h" -#include -#include -#include -#include -#include -#include -#include -#include - -#if TIME_WITH_SYS_TIME -# include -# include -#else -# if HAVE_SYS_TIME_H -# include -# else -# include -# endif -#endif - -#include -#ifdef HAVE_SYS_SELECT_H -#include -#endif -#include -#include -#include "citadel_ipc.h" -#include "client_chat.h" -#include "commands.h" -#include "routines.h" -#include "citadel_decls.h" -#include "rooms.h" -#include "messages.h" -#include "screen.h" +#include "textclient.h" #define MIN(a, b) ((a) < (b) ? (a) : (b)) diff --git a/textclient/src/client_passwords.c b/textclient/client_passwords.c similarity index 92% rename from textclient/src/client_passwords.c rename to textclient/client_passwords.c index 2de25792e..233773698 100644 --- a/textclient/src/client_passwords.c +++ b/textclient/client_passwords.c @@ -13,20 +13,7 @@ * GNU General Public License for more details. */ -#include "sysdep.h" -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include "citadel_ipc.h" -#include "commands.h" -#include "client_passwords.h" +#include "textclient.h" #define PWFILENAME "%s/.citadel.passwords" diff --git a/textclient/src/commands.c b/textclient/commands.c similarity index 62% rename from textclient/src/commands.c rename to textclient/commands.c index 1af9e8f68..9a684885f 100644 --- a/textclient/src/commands.c +++ b/textclient/commands.c @@ -2,7 +2,7 @@ * This file contains functions which implement parts of the * text-mode user interface. * - * Copyright (c) 1987-2017 by the citadel.org team + * Copyright (c) 1987-2018 by the citadel.org team * * This program is open source software; you can redistribute it and/or modify * it under the terms of the GNU General Public License version 3. @@ -13,56 +13,419 @@ * GNU General Public License for more details. */ -#include "sysdep.h" -#include -#include -#include -#include -#include -#include -#include - -#if TIME_WITH_SYS_TIME -# include -# include -#else -# if HAVE_SYS_TIME_H -# include -# else -# include -# endif -#endif +#include "textclient.h" -#ifdef HAVE_TERMIOS_H -#include -#else -#include -#endif +char *helpnames[] = { + "help", + "admin", + "floors", + "intro", + "mail", + "network", + "software" +}; -#ifdef HAVE_SYS_SELECT_H -#include -#endif +char *helptexts[] = { + +" Citadel Help Menu\n" +" \n" +" ? Help. (Typing a '?' will give you a menu almost anywhere)\n" +" A Abandon this room where you stopped reading, goto next room.\n" +" C Chat (multiuser chat, where available)\n" +" D Prints directory, if there is one in the current room.\n" +" E Enter a message.\n" +" F Read all messages in the room, forward.\n" +" G Goto next room which has UNREAD messages.\n" +" H Help. Same as '?'\n" +" I Reads the Information file for this room.\n" +" K List of Known rooms.\n" +" L Reads the last five messages in the room.\n" +" N Reads all new messages in the room.\n" +" O Reads all old messages, backwards.\n" +" P Page another user (send an instant message)\n" +" R Reads all messages in the room, in reverse order.\n" +" S Skips current room without making its messages old.\n" +" T Terminate (logout)\n" +" U Ungoto (returns to the last room you were in)\n" +" W Displays who is currently logged in.\n" +" X Toggle eXpert mode (menus and help blurbs on/off)\n" +" Z Zap (forget) room. (Removes the room from your list)\n" +" + - Goto next, previous room on current floor.\n" +" > < Goto next, previous floor.\n" +" * Enter any locally installed 'doors'.\n" +" \n" +" In addition, there are dot commands. You hit the . (dot), then press the\n" +"first letter of each word of the command. As you hit the letters, the words\n" +"pop onto your screen. Exceptions: after you hit .Help or .Goto, the remainder\n" +"of the command is a help file name or room name.\n" +" \n" +" *** USE .elp ? for additional help *** \n" + +, + +"The following commands are available only to Admins. A subset of these\n" +"commands are available to room aides when they are currently in the room\n" +"they are room aide for.\n" +"\n" +" <.> dmin ill this room (Delete the current room)\n" +" <.> dmin dit this room (Edit the current room's parameters)\n" +" <.> dmin ho knows room (List users with access to this room)\n" +" <.> dmin edit ser (Change user's access level, password, etc.)\n" +" <.> dmin alidate new users (Process new user registrations)\n" +" <.> dmin enter nfo file (Create/change this room's banner)\n" +" <.> dmin oom nvite user (Grant access to an invitation-only room)\n" +" <.> dmin oom ick out user (Revoke access to an invitation-only room)\n" +" <.> dmin ile elete (Delete a file from the room's directory)\n" +" <.> dmin ile end over net (Transmit a file to another node)\n" +" <.> dmin ile ove (Move a file to another room's directory)\n" +" <.> dmin essage edit: (Edit system banners)\n" +" <.> dmin

ost (Post a message on behalf of another user)\n" +" <.> dmin ystem configuration eneral (Edit global site config)\n" +" <.> dmin ystem configuration nternet (Edit Internet domains)\n" +" <.> dmin ystem configuration check essage base (Internal checks)\n" +" <.> dmin ystem configuration etwork (Netting with other Citadels)\n" +" <.> dmin ystem configuration network ilter list\n" +" <.> dmin erminate server ow (Shut down Citadel server now)\n" +" <.> dmin erminate server cheduled (Shut down Citadel server later)\n" +" <.> dmin mailing ist recipients (For mailing list rooms)\n" +" <.> dmin mailing list igest recipients (For mailing list rooms)\n" +" <.> dmin etwork room sharing (Replication with other Citadels)\n" +" \n" +" In addition, the ove and elete commands are available at the\n" +"message prompt.\n" + +, + +" Floors\n" +" ------\n" +" Floors in Citadel are used to group rooms into related subject areas,\n" +"just as rooms are used to group messages into manageable groups.\n" +" \n" +" You, as a user, do NOT have to use floors. If you choose not to, you suffer\n" +"no penalty; you will not lose access to any rooms. You may use .EC or ;C (the\n" +"latter is easier to use) to decide if you want to use floors. Feel free to\n" +"experiment.\n" +" \n" +" Floor options are accessed two ways. First, if you are in floor mode, the\n" +"oto and kip commands take you to the next room with new messages on the\n" +"current floor; if there are none left, then the system will automatically\n" +"switch floors (and let you know) and put you in the first room with new messages\n" +"on that level. (Notice that your pattern of basic use of Citadel therefore\n" +"doesn't really change.)\n" +" \n" +" Direct access to floor options is via the use of a ';' command.\n" +"The following commands are currently available (more can be\n" +"added if needed):\n" +" \n" +" <;C>onfigure\n" +" This command toggles your floor mode.\n" +" \n" +" <;G>oto FLOORNAME\n" +" This command causes the system to take you to the named floor.\n" +" \n" +" <;K>nown rooms on floors\n" +" List all rooms on all floors. This is a very readable way to get a list of\n" +"all rooms on the system.\n" +" \n" +" <;S>kip FLOORNAME\n" +" This command causes the system to mark all rooms on the current floor as\n" +"Skipped and takes you to the floor that you specify.\n" +" \n" +" <;Z>Forget floor\n" +" This command causes you to forget all the rooms currently on the current\n" +"floor. Unfortunately, it doesn't apply to rooms that are subsequently created\n" +"or moved to this floor. (Sorry.)\n" +" \n" +" Feel free to experiment, you can't hurt yourself or the system with the\n" +"floor stuff unless you ZForget a floor by accident.\n" + +, + +" New User's Introduction to the site\n" +" \n" +" This is an introduction to the Citadel BBS concept. It is intended\n" +"for new users so that they can more easily become acquainted to using\n" +"Citadel when accessing it in the form of a text-based BBS. Of\n" +"course, old users might learn something new each time they read\n" +"through it.\n" +" \n" +" Full help for the BBS commands can be obtained by typing <.H>elp SUMMARY\n" +" \n" +" The CITADEL BBS room concept\n" +" ----------------------------\n" +" The term BBS stands for 'Bulletin Board System'. The analogy is\n" +"appropriate: one posts messages so that others may read them. In\n" +"order to organize the posts, people can post in different areas of the\n" +"BBS, called rooms.\n" +" In order to post in a certain room, you need to be 'in' that room.\n" +"Your current prompt is usually the room that you are in, followed the\n" +"greater-than-sign, such as:\n" +" \n" +" Lobby>\n" +" \n" +" The easiest way to traverse the room structure is with the 'Goto'\n" +"command, on the 'G' key. Pressing 'G' will take you to the next room\n" +"in the 'march list' (see below) that has new messages in it. You can\n" +"read these new messages with the 'N' key.\n" +" Once you've 'Gotoed' every room in the system (or all of the ones\n" +"you choose to read) you return to the 'Lobby,' the first and last room\n" +"in the system. If new messages get posted to rooms you've already\n" +"read during your session you will be brought BACK to those rooms so\n" +"you can read them.\n" +" \n" +" March List\n" +" ----------\n" +" All the room names are stored in a march list, which is just a\n" +"list containing all the room names. When you oto or kip a\n" +"room, you are placed in the next room in your march list THAT HAS NEW\n" +"MESSAGES. If you have no new messages in any of the rooms on your\n" +"march list, you will keep going to the Lobby>. You can choose not to\n" +"read certain rooms (that don't interest you) by 'Z'apping them. When\n" +"you ap a room, you are merely deleting it from your march list (but\n" +"not from anybody else's).\n" +" \n" +" You can use the <.G>oto (note the period before the G. You can also use\n" +"ump on some systems) to go to any room in the\n" +"system. You don't have to type in the complete name of a room to\n" +"'jump' to it; you merely need to type in enough to distinguish it from\n" +"the other rooms. Left-aligned matches carry a heavier weight, so if you\n" +"typed (for example) '.Goto TECH', you might be taken to a room called\n" +"'Tech Area>' even if it found a room called 'Biotech/Ethics>' first.\n" +" \n" +" To return to a room you have previously apped, use the <.G>oto command\n" +"to enter it, and it will be re-inserted into your march list. In the case\n" +"of returning to Zapped rooms, you must type the room name in its entirety.\n" +"REMEMBER, rooms with no new messages will not show on your\n" +"march list! You must <.G>oto to a room with no new messages.\n" +"Incidentally, you cannot change the order of the rooms on your march list.\n" +"It's the same for everybody.\n" +" \n" +" Special rooms\n" +" -------------\n" +" There are two special rooms on a Citadel that you should know about.\n" +" \n" +" The first is the Lobby>. It's used for system announcements and other\n" +"such administrativia. You cannot ap the Lobby>. Each time you first\n" +"login, you will be placed in the Lobby>.\n" +" \n" +" The second is Mail>. In Mail>, when you post a messages, you are\n" +"prompted to enter the screen name of the person who you want to send the\n" +"message to. Only the person who you send the message to can read the\n" +"message. NO ONE else can read it, not even the admins. Mail> is the\n" +"first room on the march list, and is un-appable, so you can be sure\n" +"that the person will get the message.\n" +" \n" +" System admins\n" +" -------------\n" +" These people, along with the room admins, keep the site running smoothly.\n" +"\n" +" Among the many things that admins do are: create rooms, delete\n" +"rooms, set access levels, invite users, check registration, grant\n" +"room admin status, and countless other things. They have access to the\n" +"Aide> room, a special room only for admins.\n" +" \n" +" If you enter a mail message to 'Sysop' it will be placed in the\n" +"Aide> room so that the next admin online will read it and deal with it.\n" +"Admins cannot ap rooms. All the rooms are always on each admin's\n" +"march list. Admins can read *any* and *every* room, but they *CAN* *NOT*\n" +"read other users' Mail!\n" +" \n" +" Room admins\n" +" -----------\n" +" Room admins are granted special privileges in specific rooms.\n" +"They are *NOT* true system admins; their power extends only over the\n" +"rooms that they control, and they answer to the system admins.\n" +" \n" +" A room admin's job is to keep the topic of the their room on track,\n" +"with nudges in the right direction now and then. A room admin can also\n" +"move an off topic post to another room, or delete a post, if he/she\n" +"feels it is necessary. \n" +" \n" +" Currently, very few rooms have room admins. Most rooms do not need\n" +"their own specific room admin. Being a room admin requires a certain\n" +"amount of trust, due to the additional privileges granted.\n" +" \n" +" Citadel messages\n" +" ----------------\n" +" Most of the time, the BBS code does not print a lot of messages\n" +"to your screen. This is a great benefit once you become familiar\n" +"with the system, because you do not have endless menus and screens\n" +"to navigate through. nevertheless, there are some messages which you\n" +"might see from time to time.\n" +" \n" +" 'There were messages posted while you were entering.'\n" +" \n" +" This is also known as 'simulposting.' When you start entering a \n" +"message, the system knows where you last left off. When you save\n" +"your message, the system checks to see if any messages were entered\n" +"while you were typing. This is so that you know whether you need\n" +"to go back and re-read the last few messages. This message may appear\n" +"in any room.\n" +" \n" +" '*** You have new mail'\n" +" \n" +" This message is essentially the same as the above message, but can\n" +"appear at any time. It simply means that new mail has arrived for you while\n" +"you are logged in. Simply go to the Mail> room to read it.\n" +" \n" +" Who list\n" +" --------\n" +" The ho command shows you the names of all users who are currently\n" +"online. It also shows you the name of the room they are currently in. If\n" +"they are in any type of private room, however, the room name will simply\n" +"display as ''. Along with this information is displayed the\n" +"name of the host computer the user is logged in from.\n" + +, + +"To send mail on this system, go to the Mail> room (using the command .G Mail)\n" +"and press E to enter a message. You will be prompted with:\n" +" \n" +" Enter Recipient:\n" +" \n" +" At this point you may enter the name of another user on the system. Private\n" +"mail is only readable by the sender and recipient. There is no need to delete\n" +"mail after it is read; it will scroll out automatically.\n" +" \n" +" To send mail to another user on the Citadel network, simply type the\n" +"user's name, followed by @ and then the system name. For example,\n" +" \n" +" Enter Recipient: Joe Schmoe @ citadrool\n" +" \n" +" If your account is enabled for Internet mail, you can also send email to\n" +"anyone on the Internet here. Simply enter their address at the prompt:\n" +" \n" +" Enter Recipient: ajc@herring.fishnet.com\n" + +, + +" Welcome to the network. Messages entered in a network room will appear in\n" +"that room on all other systems carrying it (The name of the room, however,\n" +"may be different on other systems).\n" + +, + +" Citadel is the premier 'online community' (i.e. Bulletin Board System)\n" +"software. It runs on all POSIX-compliant systems, including Linux. It is an\n" +"advanced client/server application, and is being actively maintained.\n" +" \n" +" For more info, visit UNCENSORED! BBS at uncensored.citadel.org\n" + +, + +"Extended commands are available using the period ( . ) key. To use\n" +"a dot command, press the . key, and then enter the first letter of\n" +"each word in the command. The words will appear as you enter the keys.\n" +"You can also backspace over partially entered commands. The following\n" +"commands are available:\n" +"\n" +" <.> elp: Displays help files. Type .H followed by a help file\n" +" name. You are now reading <.H>elp SUMMARY\n" +" \n" +" <.> oto: Jumps directly to the room you specify. You can also\n" +" type a partial room name, just enough to make it unique,\n" +" and it'll find the room you're looking for. As with the\n" +" regular oto command, messages in the current room will\n" +" be marked as read.\n" +" \n" +" <.> kip, goto: This is similar to <.G>oto, except it doesn't mark\n" +" messages in the current room as read.\n" +" \n" +" <.> list apped rooms Shows all rooms you've apped (forgotten)\n" +"\n" +" \n" +" Terminate (logoff) commands:\n" +" \n" +" <.> erminate and uit Log off and disconnect.\n" +" <.> erminate and tay online Log in as a different user.\n" +" \n" +" \n" +" Read commands:\n" +"\n" +" <.> ead ew messages Same as ew\n" +" <.> ead ld msgs reverse Same as ld\n" +" <.> ead ast five msgs Same as ast5\n" +" <.> read ast: Allows you to specify how many\n" +" messages you wish to read.\n" +"\n" +" <.> ead ser listing: Lists all users on the system if\n" +" you just hit enter, otherwise\n" +" you can specify a partial match\n" +"\n" +" <.> ead extfile formatted File 'download' commands.\n" +" <.> ead file using modem \n" +" <.> ead file using modem \n" +" <.> ead file using modem \n" +" <.> ead ile unformatted \n" +" <.> ead irectory \n" +"\n" +" <.> ead nfo file Read the room info file.\n" +" <.> ead io Read other users' 'bio' files.\n" +" <.> ead onfiguration Display your 'preferences'.\n" +" <.> ead ystem info Display system statistics.\n" +"\n" +" \n" +" Enter commands:\n" +"\n" +" <.> nter essage Post a message in this room.\n" +" <.> nter message with ditor Post using a full-screen editor.\n" +" <.> nter SCII message Post 'raw' (use this when 'pasting'\n" +" a message from your clipboard).\n" +"\n" +" <.> nter

assword Change your password.\n" +" <.> nter onfiguration Change your 'preferences'.\n" +" <.> nter a new oom Create a new room.\n" +" <.> nter reistration Register (name, address, etc.)\n" +" <.> nter io Enter/change your 'bio' file.\n" +"\n" +" <.> nter extfile File 'upload' commands.\n" +" <.> nter file using modem \n" +" <.> nter file using modem \n" +" <.> nter file using modem \n" +" \n" +" \n" +" Wholist commands:\n" +" \n" +" <.> holist ong Same as ho is online, but displays\n" +" more detailed information.\n" +" <.> holist oomname Masquerade your room name (other users\n" +" see the name you enter rather than the\n" +" actual name of the room you're in)\n" +" <.> holist ostname Masquerade your host name\n" +" <.> nter sername Masquerade your user name (Admins only)\n" +" <.> holist tealth mode Enter/exit 'stealth mode' (when in stealth\n" +" mode you are invisible on the wholist)\n" +" \n" +" \n" +" Floor commands (if using floor mode)\n" +" ;onfigure floor mode - turn floor mode on or off\n" +" ;oto floor: - jump to a specific floor\n" +" ;nown rooms - list all rooms on all floors\n" +" ;kip to floor: - skip current floor, jump to another\n" +" ;ap floor - zap (forget) all rooms on this floor\n" +" \n" +" \n" +" Administrative commands: \n" +" \n" +" <.> dmin ill this room \n" +" <.> dmin dit this room \n" +" <.> dmin ho knows room \n" +" <.> dmin edit ser \n" +" <.> dmin alidate new users \n" +" <.> dmin enter nfo file \n" +" <.> dmin oom nvite user \n" +" <.> dmin oom ick out user \n" +" <.> dmin ile elete \n" +" <.> dmin ile end over net \n" +" <.> dmin ile ove \n" +" <.> dmin essage edit: \n" +" <.> dmin

ost \n" +" <.> dmin ystem configuration \n" +" <.> dmin erminate server ow\n" +" <.> dmin erminate server cheduled\n" -#ifdef THREADED_CLIENT -#include -#endif +}; -#include -#include -#include -#include -#include "citadel_ipc.h" -#include "commands.h" -#include "messages.h" -#include "citadel_decls.h" -#include "routines.h" -#include "routines2.h" -#include "rooms.h" -#include "client_chat.h" -#include "help.h" -#include "tuiconfig.h" -#include "screen.h" -#include "ecrash.h" struct citcmd { struct citcmd *next; @@ -308,51 +671,6 @@ static void really_do_keepalive(void) { } } -/* - * threaded nonblocking keepalive stuff starts here. I'm going for a simple - * encapsulated interface; in theory there should be no need to touch these - * globals outside of the async_ka_* functions. - */ - -#ifdef THREADED_CLIENT -static pthread_t ka_thr_handle; -static int ka_thr_active = 0; -static int async_ka_enabled = 0; - -static void *ka_thread(void *arg) -{ -#ifdef HAVE_BACKTRACE - char threadName[256]; - - // Set up our name - sprintf(threadName, "ka_Thread n"); - - // Register for tracing - eCrash_RegisterThread(threadName, 0); -#endif - really_do_keepalive(); - pthread_detach(ka_thr_handle); - ka_thr_active = 0; - -#ifdef HAVE_BACKTRACE - eCrash_UnregisterThread(); -#endif - return NULL; -} - -/* start up a thread to handle a keepalive in the background */ -static void async_ka_exec(void) -{ - if (!ka_thr_active) { - ka_thr_active = 1; - if (pthread_create(&ka_thr_handle, NULL, ka_thread, NULL)) { - perror("pthread_create"); - exit(1); - } - } -} -#endif /* THREADED_CLIENT */ - /* I changed this from static to not because I need to call it from * screen.c, either that or make something in screen.c not static. * Fix it how you like. Why all the staticness? stu @@ -363,46 +681,17 @@ void do_keepalive(void) time(&now); if ((now - idlet) < ((long) S_KEEPALIVE)) + { return; + } - /* Do a space-backspace to keep telnet sessions from idling out */ + /* Do a space-backspace to keep terminal sessions from idling out */ scr_printf(" %c", 8); scr_flush(); -#ifdef THREADED_CLIENT - if (async_ka_enabled) - async_ka_exec(); - else -#endif - really_do_keepalive(); -} - - -/* Now the actual async-keepalve API that we expose to higher levels: - * async_ka_start() and async_ka_end(). These do nothing when we don't have - * threading enabled, so we avoid sprinkling ifdef's throughout the code. - */ - -/* wait for a background keepalive to complete. this must be done before - * attempting any further server requests! - */ -void async_ka_end(void) -{ -#ifdef THREADED_CLIENT - if (ka_thr_active) - pthread_join(ka_thr_handle, NULL); - - async_ka_enabled--; -#endif + really_do_keepalive(); } -/* tell do_keepalive() that keepalives are asynchronous. */ -void async_ka_start(void) -{ -#ifdef THREADED_CLIENT - async_ka_enabled++; -#endif -} int inkey(void) @@ -501,7 +790,6 @@ int ctdl_getline(char *string, int lim, int noshow, int bs) int pos = strlen(string); int ch; - async_ka_start(); if (noshow && !IsEmptyStr(string)) { int num_stars = strlen(string); while (num_stars--) { @@ -521,7 +809,6 @@ int ctdl_getline(char *string, int lim, int noshow, int bs) } else if ((ch == 8) && (pos == 0) && (bs)) { /* backspace out of the prompt */ - async_ka_end(); return(-1); } @@ -539,7 +826,6 @@ int ctdl_getline(char *string, int lim, int noshow, int bs) else if (ch == 10) { /* return */ string[pos] = 0; scr_printf("\n"); - async_ka_end(); return(pos); } @@ -1128,7 +1414,6 @@ int getcmd(CtdlIPC *ipc, char *argbuf) * 2 - save current settings for later restoral * 3 - restore saved settings */ -#ifdef HAVE_TERMIOS_H void stty_ctdl(int cmd) { /* SysV version of stty_ctdl() */ struct termios live; @@ -1149,11 +1434,6 @@ void stty_ctdl(int cmd) live.c_cc[VINTR] = 0; live.c_cc[VQUIT] = 0; -#ifdef hpux - live.c_cc[VMIN] = 0; - live.c_cc[VTIME] = 0; -#endif - /* do we even need this stuff anymore? */ /* live.c_line=0; */ live.c_cc[VERASE] = 8; @@ -1172,7 +1452,10 @@ void stty_ctdl(int cmd) } } -#else + + +// this is the old version which uses sgtty.h instead of termios.h +#if 0 void stty_ctdl(int cmd) { /* BSD version of stty_ctdl() */ struct sgttyb live; diff --git a/textclient/config.guess b/textclient/config.guess deleted file mode 100755 index 396482d6c..000000000 --- a/textclient/config.guess +++ /dev/null @@ -1,1500 +0,0 @@ -#! /bin/sh -# Attempt to guess a canonical system name. -# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, -# 2000, 2001, 2002, 2003, 2004, 2005, 2006 Free Software Foundation, -# Inc. - -timestamp='2006-07-02' - -# This file 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., 51 Franklin Street - Fifth Floor, Boston, MA -# 02110-1301, USA. -# -# As a special exception to the GNU General Public License, if you -# distribute this file as part of a program that contains a -# configuration script generated by Autoconf, you may include it under -# the same distribution terms that you use for the rest of that program. - - -# Originally written by Per Bothner . -# Please send patches to . Submit a context -# diff and a properly formatted ChangeLog entry. -# -# This script attempts to guess a canonical system name similar to -# config.sub. If it succeeds, it prints the system name on stdout, and -# exits with 0. Otherwise, it exits with 1. -# -# The plan is that this can be called by configure scripts if you -# don't specify an explicit build system type. - -me=`echo "$0" | sed -e 's,.*/,,'` - -usage="\ -Usage: $0 [OPTION] - -Output the configuration name of the system \`$me' is run on. - -Operation modes: - -h, --help print this help, then exit - -t, --time-stamp print date of last modification, then exit - -v, --version print version number, then exit - -Report bugs and patches to ." - -version="\ -GNU config.guess ($timestamp) - -Originally written by Per Bothner. -Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005 -Free Software Foundation, Inc. - -This is free software; see the source for copying conditions. There is NO -warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." - -help=" -Try \`$me --help' for more information." - -# Parse command line -while test $# -gt 0 ; do - case $1 in - --time-stamp | --time* | -t ) - echo "$timestamp" ; exit ;; - --version | -v ) - echo "$version" ; exit ;; - --help | --h* | -h ) - echo "$usage"; exit ;; - -- ) # Stop option processing - shift; break ;; - - ) # Use stdin as input. - break ;; - -* ) - echo "$me: invalid option $1$help" >&2 - exit 1 ;; - * ) - break ;; - esac -done - -if test $# != 0; then - echo "$me: too many arguments$help" >&2 - exit 1 -fi - -trap 'exit 1' 1 2 15 - -# CC_FOR_BUILD -- compiler used by this script. Note that the use of a -# compiler to aid in system detection is discouraged as it requires -# temporary files to be created and, as you can see below, it is a -# headache to deal with in a portable fashion. - -# Historically, `CC_FOR_BUILD' used to be named `HOST_CC'. We still -# use `HOST_CC' if defined, but it is deprecated. - -# Portable tmp directory creation inspired by the Autoconf team. - -set_cc_for_build=' -trap "exitcode=\$?; (rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null) && exit \$exitcode" 0 ; -trap "rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null; exit 1" 1 2 13 15 ; -: ${TMPDIR=/tmp} ; - { tmp=`(umask 077 && mktemp -d "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } || - { test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir $tmp) ; } || - { tmp=$TMPDIR/cg-$$ && (umask 077 && mkdir $tmp) && echo "Warning: creating insecure temp directory" >&2 ; } || - { echo "$me: cannot create a temporary directory in $TMPDIR" >&2 ; exit 1 ; } ; -dummy=$tmp/dummy ; -tmpfiles="$dummy.c $dummy.o $dummy.rel $dummy" ; -case $CC_FOR_BUILD,$HOST_CC,$CC in - ,,) echo "int x;" > $dummy.c ; - for c in cc gcc c89 c99 ; do - if ($c -c -o $dummy.o $dummy.c) >/dev/null 2>&1 ; then - CC_FOR_BUILD="$c"; break ; - fi ; - done ; - if test x"$CC_FOR_BUILD" = x ; then - CC_FOR_BUILD=no_compiler_found ; - fi - ;; - ,,*) CC_FOR_BUILD=$CC ;; - ,*,*) CC_FOR_BUILD=$HOST_CC ;; -esac ; set_cc_for_build= ;' - -# This is needed to find uname on a Pyramid OSx when run in the BSD universe. -# (ghazi@noc.rutgers.edu 1994-08-24) -if (test -f /.attbin/uname) >/dev/null 2>&1 ; then - PATH=$PATH:/.attbin ; export PATH -fi - -UNAME_MACHINE=`(uname -m) 2>/dev/null` || UNAME_MACHINE=unknown -UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown -UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown -UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown - -# Note: order is significant - the case branches are not exclusive. - -case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in - *:NetBSD:*:*) - # NetBSD (nbsd) targets should (where applicable) match one or - # more of the tupples: *-*-netbsdelf*, *-*-netbsdaout*, - # *-*-netbsdecoff* and *-*-netbsd*. For targets that recently - # switched to ELF, *-*-netbsd* would select the old - # object file format. This provides both forward - # compatibility and a consistent mechanism for selecting the - # object file format. - # - # Note: NetBSD doesn't particularly care about the vendor - # portion of the name. We always set it to "unknown". - sysctl="sysctl -n hw.machine_arch" - UNAME_MACHINE_ARCH=`(/sbin/$sysctl 2>/dev/null || \ - /usr/sbin/$sysctl 2>/dev/null || echo unknown)` - case "${UNAME_MACHINE_ARCH}" in - armeb) machine=armeb-unknown ;; - arm*) machine=arm-unknown ;; - sh3el) machine=shl-unknown ;; - sh3eb) machine=sh-unknown ;; - *) machine=${UNAME_MACHINE_ARCH}-unknown ;; - esac - # The Operating System including object format, if it has switched - # to ELF recently, or will in the future. - case "${UNAME_MACHINE_ARCH}" in - arm*|i386|m68k|ns32k|sh3*|sparc|vax) - eval $set_cc_for_build - if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \ - | grep __ELF__ >/dev/null - then - # Once all utilities can be ECOFF (netbsdecoff) or a.out (netbsdaout). - # Return netbsd for either. FIX? - os=netbsd - else - os=netbsdelf - fi - ;; - *) - os=netbsd - ;; - esac - # The OS release - # Debian GNU/NetBSD machines have a different userland, and - # thus, need a distinct triplet. However, they do not need - # kernel version information, so it can be replaced with a - # suitable tag, in the style of linux-gnu. - case "${UNAME_VERSION}" in - Debian*) - release='-gnu' - ;; - *) - release=`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'` - ;; - esac - # Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM: - # contains redundant information, the shorter form: - # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used. - echo "${machine}-${os}${release}" - exit ;; - *:OpenBSD:*:*) - UNAME_MACHINE_ARCH=`arch | sed 's/OpenBSD.//'` - echo ${UNAME_MACHINE_ARCH}-unknown-openbsd${UNAME_RELEASE} - exit ;; - *:ekkoBSD:*:*) - echo ${UNAME_MACHINE}-unknown-ekkobsd${UNAME_RELEASE} - exit ;; - *:SolidBSD:*:*) - echo ${UNAME_MACHINE}-unknown-solidbsd${UNAME_RELEASE} - exit ;; - macppc:MirBSD:*:*) - echo powerpc-unknown-mirbsd${UNAME_RELEASE} - exit ;; - *:MirBSD:*:*) - echo ${UNAME_MACHINE}-unknown-mirbsd${UNAME_RELEASE} - exit ;; - alpha:OSF1:*:*) - case $UNAME_RELEASE in - *4.0) - UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'` - ;; - *5.*) - UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $4}'` - ;; - esac - # According to Compaq, /usr/sbin/psrinfo has been available on - # OSF/1 and Tru64 systems produced since 1995. I hope that - # covers most systems running today. This code pipes the CPU - # types through head -n 1, so we only detect the type of CPU 0. - ALPHA_CPU_TYPE=`/usr/sbin/psrinfo -v | sed -n -e 's/^ The alpha \(.*\) processor.*$/\1/p' | head -n 1` - case "$ALPHA_CPU_TYPE" in - "EV4 (21064)") - UNAME_MACHINE="alpha" ;; - "EV4.5 (21064)") - UNAME_MACHINE="alpha" ;; - "LCA4 (21066/21068)") - UNAME_MACHINE="alpha" ;; - "EV5 (21164)") - UNAME_MACHINE="alphaev5" ;; - "EV5.6 (21164A)") - UNAME_MACHINE="alphaev56" ;; - "EV5.6 (21164PC)") - UNAME_MACHINE="alphapca56" ;; - "EV5.7 (21164PC)") - UNAME_MACHINE="alphapca57" ;; - "EV6 (21264)") - UNAME_MACHINE="alphaev6" ;; - "EV6.7 (21264A)") - UNAME_MACHINE="alphaev67" ;; - "EV6.8CB (21264C)") - UNAME_MACHINE="alphaev68" ;; - "EV6.8AL (21264B)") - UNAME_MACHINE="alphaev68" ;; - "EV6.8CX (21264D)") - UNAME_MACHINE="alphaev68" ;; - "EV6.9A (21264/EV69A)") - UNAME_MACHINE="alphaev69" ;; - "EV7 (21364)") - UNAME_MACHINE="alphaev7" ;; - "EV7.9 (21364A)") - UNAME_MACHINE="alphaev79" ;; - esac - # A Pn.n version is a patched version. - # A Vn.n version is a released version. - # A Tn.n version is a released field test version. - # A Xn.n version is an unreleased experimental baselevel. - # 1.2 uses "1.2" for uname -r. - echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[PVTX]//' | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` - exit ;; - Alpha\ *:Windows_NT*:*) - # How do we know it's Interix rather than the generic POSIX subsystem? - # Should we change UNAME_MACHINE based on the output of uname instead - # of the specific Alpha model? - echo alpha-pc-interix - exit ;; - 21064:Windows_NT:50:3) - echo alpha-dec-winnt3.5 - exit ;; - Amiga*:UNIX_System_V:4.0:*) - echo m68k-unknown-sysv4 - exit ;; - *:[Aa]miga[Oo][Ss]:*:*) - echo ${UNAME_MACHINE}-unknown-amigaos - exit ;; - *:[Mm]orph[Oo][Ss]:*:*) - echo ${UNAME_MACHINE}-unknown-morphos - exit ;; - *:OS/390:*:*) - echo i370-ibm-openedition - exit ;; - *:z/VM:*:*) - echo s390-ibm-zvmoe - exit ;; - *:OS400:*:*) - echo powerpc-ibm-os400 - exit ;; - arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*) - echo arm-acorn-riscix${UNAME_RELEASE} - exit ;; - arm:riscos:*:*|arm:RISCOS:*:*) - echo arm-unknown-riscos - exit ;; - SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*) - echo hppa1.1-hitachi-hiuxmpp - exit ;; - Pyramid*:OSx*:*:* | MIS*:OSx*:*:* | MIS*:SMP_DC-OSx*:*:*) - # akee@wpdis03.wpafb.af.mil (Earle F. Ake) contributed MIS and NILE. - if test "`(/bin/universe) 2>/dev/null`" = att ; then - echo pyramid-pyramid-sysv3 - else - echo pyramid-pyramid-bsd - fi - exit ;; - NILE*:*:*:dcosx) - echo pyramid-pyramid-svr4 - exit ;; - DRS?6000:unix:4.0:6*) - echo sparc-icl-nx6 - exit ;; - DRS?6000:UNIX_SV:4.2*:7* | DRS?6000:isis:4.2*:7*) - case `/usr/bin/uname -p` in - sparc) echo sparc-icl-nx7; exit ;; - esac ;; - sun4H:SunOS:5.*:*) - echo sparc-hal-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` - exit ;; - sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*) - echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` - exit ;; - i86pc:SunOS:5.*:*) - echo i386-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` - exit ;; - sun4*:SunOS:6*:*) - # According to config.sub, this is the proper way to canonicalize - # SunOS6. Hard to guess exactly what SunOS6 will be like, but - # it's likely to be more like Solaris than SunOS4. - echo sparc-sun-solaris3`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` - exit ;; - sun4*:SunOS:*:*) - case "`/usr/bin/arch -k`" in - Series*|S4*) - UNAME_RELEASE=`uname -v` - ;; - esac - # Japanese Language versions have a version number like `4.1.3-JL'. - echo sparc-sun-sunos`echo ${UNAME_RELEASE}|sed -e 's/-/_/'` - exit ;; - sun3*:SunOS:*:*) - echo m68k-sun-sunos${UNAME_RELEASE} - exit ;; - sun*:*:4.2BSD:*) - UNAME_RELEASE=`(sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null` - test "x${UNAME_RELEASE}" = "x" && UNAME_RELEASE=3 - case "`/bin/arch`" in - sun3) - echo m68k-sun-sunos${UNAME_RELEASE} - ;; - sun4) - echo sparc-sun-sunos${UNAME_RELEASE} - ;; - esac - exit ;; - aushp:SunOS:*:*) - echo sparc-auspex-sunos${UNAME_RELEASE} - exit ;; - # The situation for MiNT is a little confusing. The machine name - # can be virtually everything (everything which is not - # "atarist" or "atariste" at least should have a processor - # > m68000). The system name ranges from "MiNT" over "FreeMiNT" - # to the lowercase version "mint" (or "freemint"). Finally - # the system name "TOS" denotes a system which is actually not - # MiNT. But MiNT is downward compatible to TOS, so this should - # be no problem. - atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*) - echo m68k-atari-mint${UNAME_RELEASE} - exit ;; - atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*) - echo m68k-atari-mint${UNAME_RELEASE} - exit ;; - *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*) - echo m68k-atari-mint${UNAME_RELEASE} - exit ;; - milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*) - echo m68k-milan-mint${UNAME_RELEASE} - exit ;; - hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*) - echo m68k-hades-mint${UNAME_RELEASE} - exit ;; - *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*) - echo m68k-unknown-mint${UNAME_RELEASE} - exit ;; - m68k:machten:*:*) - echo m68k-apple-machten${UNAME_RELEASE} - exit ;; - powerpc:machten:*:*) - echo powerpc-apple-machten${UNAME_RELEASE} - exit ;; - RISC*:Mach:*:*) - echo mips-dec-mach_bsd4.3 - exit ;; - RISC*:ULTRIX:*:*) - echo mips-dec-ultrix${UNAME_RELEASE} - exit ;; - VAX*:ULTRIX*:*:*) - echo vax-dec-ultrix${UNAME_RELEASE} - exit ;; - 2020:CLIX:*:* | 2430:CLIX:*:*) - echo clipper-intergraph-clix${UNAME_RELEASE} - exit ;; - mips:*:*:UMIPS | mips:*:*:RISCos) - eval $set_cc_for_build - sed 's/^ //' << EOF >$dummy.c -#ifdef __cplusplus -#include /* for printf() prototype */ - int main (int argc, char *argv[]) { -#else - int main (argc, argv) int argc; char *argv[]; { -#endif - #if defined (host_mips) && defined (MIPSEB) - #if defined (SYSTYPE_SYSV) - printf ("mips-mips-riscos%ssysv\n", argv[1]); exit (0); - #endif - #if defined (SYSTYPE_SVR4) - printf ("mips-mips-riscos%ssvr4\n", argv[1]); exit (0); - #endif - #if defined (SYSTYPE_BSD43) || defined(SYSTYPE_BSD) - printf ("mips-mips-riscos%sbsd\n", argv[1]); exit (0); - #endif - #endif - exit (-1); - } -EOF - $CC_FOR_BUILD -o $dummy $dummy.c && - dummyarg=`echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` && - SYSTEM_NAME=`$dummy $dummyarg` && - { echo "$SYSTEM_NAME"; exit; } - echo mips-mips-riscos${UNAME_RELEASE} - exit ;; - Motorola:PowerMAX_OS:*:*) - echo powerpc-motorola-powermax - exit ;; - Motorola:*:4.3:PL8-*) - echo powerpc-harris-powermax - exit ;; - Night_Hawk:*:*:PowerMAX_OS | Synergy:PowerMAX_OS:*:*) - echo powerpc-harris-powermax - exit ;; - Night_Hawk:Power_UNIX:*:*) - echo powerpc-harris-powerunix - exit ;; - m88k:CX/UX:7*:*) - echo m88k-harris-cxux7 - exit ;; - m88k:*:4*:R4*) - echo m88k-motorola-sysv4 - exit ;; - m88k:*:3*:R3*) - echo m88k-motorola-sysv3 - exit ;; - AViiON:dgux:*:*) - # DG/UX returns AViiON for all architectures - UNAME_PROCESSOR=`/usr/bin/uname -p` - if [ $UNAME_PROCESSOR = mc88100 ] || [ $UNAME_PROCESSOR = mc88110 ] - then - if [ ${TARGET_BINARY_INTERFACE}x = m88kdguxelfx ] || \ - [ ${TARGET_BINARY_INTERFACE}x = x ] - then - echo m88k-dg-dgux${UNAME_RELEASE} - else - echo m88k-dg-dguxbcs${UNAME_RELEASE} - fi - else - echo i586-dg-dgux${UNAME_RELEASE} - fi - exit ;; - M88*:DolphinOS:*:*) # DolphinOS (SVR3) - echo m88k-dolphin-sysv3 - exit ;; - M88*:*:R3*:*) - # Delta 88k system running SVR3 - echo m88k-motorola-sysv3 - exit ;; - XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3) - echo m88k-tektronix-sysv3 - exit ;; - Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD) - echo m68k-tektronix-bsd - exit ;; - *:IRIX*:*:*) - echo mips-sgi-irix`echo ${UNAME_RELEASE}|sed -e 's/-/_/g'` - exit ;; - ????????:AIX?:[12].1:2) # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX. - echo romp-ibm-aix # uname -m gives an 8 hex-code CPU id - exit ;; # Note that: echo "'`uname -s`'" gives 'AIX ' - i*86:AIX:*:*) - echo i386-ibm-aix - exit ;; - ia64:AIX:*:*) - if [ -x /usr/bin/oslevel ] ; then - IBM_REV=`/usr/bin/oslevel` - else - IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE} - fi - echo ${UNAME_MACHINE}-ibm-aix${IBM_REV} - exit ;; - *:AIX:2:3) - if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then - eval $set_cc_for_build - sed 's/^ //' << EOF >$dummy.c - #include - - main() - { - if (!__power_pc()) - exit(1); - puts("powerpc-ibm-aix3.2.5"); - exit(0); - } -EOF - if $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy` - then - echo "$SYSTEM_NAME" - else - echo rs6000-ibm-aix3.2.5 - fi - elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then - echo rs6000-ibm-aix3.2.4 - else - echo rs6000-ibm-aix3.2 - fi - exit ;; - *:AIX:*:[45]) - IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }'` - if /usr/sbin/lsattr -El ${IBM_CPU_ID} | grep ' POWER' >/dev/null 2>&1; then - IBM_ARCH=rs6000 - else - IBM_ARCH=powerpc - fi - if [ -x /usr/bin/oslevel ] ; then - IBM_REV=`/usr/bin/oslevel` - else - IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE} - fi - echo ${IBM_ARCH}-ibm-aix${IBM_REV} - exit ;; - *:AIX:*:*) - echo rs6000-ibm-aix - exit ;; - ibmrt:4.4BSD:*|romp-ibm:BSD:*) - echo romp-ibm-bsd4.4 - exit ;; - ibmrt:*BSD:*|romp-ibm:BSD:*) # covers RT/PC BSD and - echo romp-ibm-bsd${UNAME_RELEASE} # 4.3 with uname added to - exit ;; # report: romp-ibm BSD 4.3 - *:BOSX:*:*) - echo rs6000-bull-bosx - exit ;; - DPX/2?00:B.O.S.:*:*) - echo m68k-bull-sysv3 - exit ;; - 9000/[34]??:4.3bsd:1.*:*) - echo m68k-hp-bsd - exit ;; - hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*) - echo m68k-hp-bsd4.4 - exit ;; - 9000/[34678]??:HP-UX:*:*) - HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` - case "${UNAME_MACHINE}" in - 9000/31? ) HP_ARCH=m68000 ;; - 9000/[34]?? ) HP_ARCH=m68k ;; - 9000/[678][0-9][0-9]) - if [ -x /usr/bin/getconf ]; then - sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null` - sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null` - case "${sc_cpu_version}" in - 523) HP_ARCH="hppa1.0" ;; # CPU_PA_RISC1_0 - 528) HP_ARCH="hppa1.1" ;; # CPU_PA_RISC1_1 - 532) # CPU_PA_RISC2_0 - case "${sc_kernel_bits}" in - 32) HP_ARCH="hppa2.0n" ;; - 64) HP_ARCH="hppa2.0w" ;; - '') HP_ARCH="hppa2.0" ;; # HP-UX 10.20 - esac ;; - esac - fi - if [ "${HP_ARCH}" = "" ]; then - eval $set_cc_for_build - sed 's/^ //' << EOF >$dummy.c - - #define _HPUX_SOURCE - #include - #include - - int main () - { - #if defined(_SC_KERNEL_BITS) - long bits = sysconf(_SC_KERNEL_BITS); - #endif - long cpu = sysconf (_SC_CPU_VERSION); - - switch (cpu) - { - case CPU_PA_RISC1_0: puts ("hppa1.0"); break; - case CPU_PA_RISC1_1: puts ("hppa1.1"); break; - case CPU_PA_RISC2_0: - #if defined(_SC_KERNEL_BITS) - switch (bits) - { - case 64: puts ("hppa2.0w"); break; - case 32: puts ("hppa2.0n"); break; - default: puts ("hppa2.0"); break; - } break; - #else /* !defined(_SC_KERNEL_BITS) */ - puts ("hppa2.0"); break; - #endif - default: puts ("hppa1.0"); break; - } - exit (0); - } -EOF - (CCOPTS= $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null) && HP_ARCH=`$dummy` - test -z "$HP_ARCH" && HP_ARCH=hppa - fi ;; - esac - if [ ${HP_ARCH} = "hppa2.0w" ] - then - eval $set_cc_for_build - - # hppa2.0w-hp-hpux* has a 64-bit kernel and a compiler generating - # 32-bit code. hppa64-hp-hpux* has the same kernel and a compiler - # generating 64-bit code. GNU and HP use different nomenclature: - # - # $ CC_FOR_BUILD=cc ./config.guess - # => hppa2.0w-hp-hpux11.23 - # $ CC_FOR_BUILD="cc +DA2.0w" ./config.guess - # => hppa64-hp-hpux11.23 - - if echo __LP64__ | (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | - grep __LP64__ >/dev/null - then - HP_ARCH="hppa2.0w" - else - HP_ARCH="hppa64" - fi - fi - echo ${HP_ARCH}-hp-hpux${HPUX_REV} - exit ;; - ia64:HP-UX:*:*) - HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` - echo ia64-hp-hpux${HPUX_REV} - exit ;; - 3050*:HI-UX:*:*) - eval $set_cc_for_build - sed 's/^ //' << EOF >$dummy.c - #include - int - main () - { - long cpu = sysconf (_SC_CPU_VERSION); - /* The order matters, because CPU_IS_HP_MC68K erroneously returns - true for CPU_PA_RISC1_0. CPU_IS_PA_RISC returns correct - results, however. */ - if (CPU_IS_PA_RISC (cpu)) - { - switch (cpu) - { - case CPU_PA_RISC1_0: puts ("hppa1.0-hitachi-hiuxwe2"); break; - case CPU_PA_RISC1_1: puts ("hppa1.1-hitachi-hiuxwe2"); break; - case CPU_PA_RISC2_0: puts ("hppa2.0-hitachi-hiuxwe2"); break; - default: puts ("hppa-hitachi-hiuxwe2"); break; - } - } - else if (CPU_IS_HP_MC68K (cpu)) - puts ("m68k-hitachi-hiuxwe2"); - else puts ("unknown-hitachi-hiuxwe2"); - exit (0); - } -EOF - $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy` && - { echo "$SYSTEM_NAME"; exit; } - echo unknown-hitachi-hiuxwe2 - exit ;; - 9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:* ) - echo hppa1.1-hp-bsd - exit ;; - 9000/8??:4.3bsd:*:*) - echo hppa1.0-hp-bsd - exit ;; - *9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*) - echo hppa1.0-hp-mpeix - exit ;; - hp7??:OSF1:*:* | hp8?[79]:OSF1:*:* ) - echo hppa1.1-hp-osf - exit ;; - hp8??:OSF1:*:*) - echo hppa1.0-hp-osf - exit ;; - i*86:OSF1:*:*) - if [ -x /usr/sbin/sysversion ] ; then - echo ${UNAME_MACHINE}-unknown-osf1mk - else - echo ${UNAME_MACHINE}-unknown-osf1 - fi - exit ;; - parisc*:Lites*:*:*) - echo hppa1.1-hp-lites - exit ;; - C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*) - echo c1-convex-bsd - exit ;; - C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*) - if getsysinfo -f scalar_acc - then echo c32-convex-bsd - else echo c2-convex-bsd - fi - exit ;; - C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*) - echo c34-convex-bsd - exit ;; - C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*) - echo c38-convex-bsd - exit ;; - C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*) - echo c4-convex-bsd - exit ;; - CRAY*Y-MP:*:*:*) - echo ymp-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' - exit ;; - CRAY*[A-Z]90:*:*:*) - echo ${UNAME_MACHINE}-cray-unicos${UNAME_RELEASE} \ - | sed -e 's/CRAY.*\([A-Z]90\)/\1/' \ - -e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/ \ - -e 's/\.[^.]*$/.X/' - exit ;; - CRAY*TS:*:*:*) - echo t90-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' - exit ;; - CRAY*T3E:*:*:*) - echo alphaev5-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' - exit ;; - CRAY*SV1:*:*:*) - echo sv1-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' - exit ;; - *:UNICOS/mp:*:*) - echo craynv-cray-unicosmp${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' - exit ;; - F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*) - FUJITSU_PROC=`uname -m | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` - FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'` - FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'` - echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" - exit ;; - 5000:UNIX_System_V:4.*:*) - FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'` - FUJITSU_REL=`echo ${UNAME_RELEASE} | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/ /_/'` - echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" - exit ;; - i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*) - echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE} - exit ;; - sparc*:BSD/OS:*:*) - echo sparc-unknown-bsdi${UNAME_RELEASE} - exit ;; - *:BSD/OS:*:*) - echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE} - exit ;; - *:FreeBSD:*:*) - case ${UNAME_MACHINE} in - pc98) - echo i386-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; - amd64) - echo x86_64-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; - *) - echo ${UNAME_MACHINE}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; - esac - exit ;; - i*:CYGWIN*:*) - echo ${UNAME_MACHINE}-pc-cygwin - exit ;; - i*:MINGW*:*) - echo ${UNAME_MACHINE}-pc-mingw32 - exit ;; - i*:windows32*:*) - # uname -m includes "-pc" on this system. - echo ${UNAME_MACHINE}-mingw32 - exit ;; - i*:PW*:*) - echo ${UNAME_MACHINE}-pc-pw32 - exit ;; - x86:Interix*:[3456]*) - echo i586-pc-interix${UNAME_RELEASE} - exit ;; - EM64T:Interix*:[3456]*) - echo x86_64-unknown-interix${UNAME_RELEASE} - exit ;; - [345]86:Windows_95:* | [345]86:Windows_98:* | [345]86:Windows_NT:*) - echo i${UNAME_MACHINE}-pc-mks - exit ;; - i*:Windows_NT*:* | Pentium*:Windows_NT*:*) - # How do we know it's Interix rather than the generic POSIX subsystem? - # It also conflicts with pre-2.0 versions of AT&T UWIN. Should we - # UNAME_MACHINE based on the output of uname instead of i386? - echo i586-pc-interix - exit ;; - i*:UWIN*:*) - echo ${UNAME_MACHINE}-pc-uwin - exit ;; - amd64:CYGWIN*:*:* | x86_64:CYGWIN*:*:*) - echo x86_64-unknown-cygwin - exit ;; - p*:CYGWIN*:*) - echo powerpcle-unknown-cygwin - exit ;; - prep*:SunOS:5.*:*) - echo powerpcle-unknown-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` - exit ;; - *:GNU:*:*) - # the GNU system - echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-gnu`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'` - exit ;; - *:GNU/*:*:*) - # other systems with GNU libc and userland - echo ${UNAME_MACHINE}-unknown-`echo ${UNAME_SYSTEM} | sed 's,^[^/]*/,,' | tr '[A-Z]' '[a-z]'``echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`-gnu - exit ;; - i*86:Minix:*:*) - echo ${UNAME_MACHINE}-pc-minix - exit ;; - arm*:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-gnu - exit ;; - avr32*:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-gnu - exit ;; - cris:Linux:*:*) - echo cris-axis-linux-gnu - exit ;; - crisv32:Linux:*:*) - echo crisv32-axis-linux-gnu - exit ;; - frv:Linux:*:*) - echo frv-unknown-linux-gnu - exit ;; - ia64:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-gnu - exit ;; - m32r*:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-gnu - exit ;; - m68*:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-gnu - exit ;; - mips:Linux:*:*) - eval $set_cc_for_build - sed 's/^ //' << EOF >$dummy.c - #undef CPU - #undef mips - #undef mipsel - #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL) - CPU=mipsel - #else - #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB) - CPU=mips - #else - CPU= - #endif - #endif -EOF - eval "`$CC_FOR_BUILD -E $dummy.c 2>/dev/null | sed -n ' - /^CPU/{ - s: ::g - p - }'`" - test x"${CPU}" != x && { echo "${CPU}-unknown-linux-gnu"; exit; } - ;; - mips64:Linux:*:*) - eval $set_cc_for_build - sed 's/^ //' << EOF >$dummy.c - #undef CPU - #undef mips64 - #undef mips64el - #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL) - CPU=mips64el - #else - #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB) - CPU=mips64 - #else - CPU= - #endif - #endif -EOF - eval "`$CC_FOR_BUILD -E $dummy.c 2>/dev/null | sed -n ' - /^CPU/{ - s: ::g - p - }'`" - test x"${CPU}" != x && { echo "${CPU}-unknown-linux-gnu"; exit; } - ;; - or32:Linux:*:*) - echo or32-unknown-linux-gnu - exit ;; - ppc:Linux:*:*) - echo powerpc-unknown-linux-gnu - exit ;; - ppc64:Linux:*:*) - echo powerpc64-unknown-linux-gnu - exit ;; - alpha:Linux:*:*) - case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in - EV5) UNAME_MACHINE=alphaev5 ;; - EV56) UNAME_MACHINE=alphaev56 ;; - PCA56) UNAME_MACHINE=alphapca56 ;; - PCA57) UNAME_MACHINE=alphapca56 ;; - EV6) UNAME_MACHINE=alphaev6 ;; - EV67) UNAME_MACHINE=alphaev67 ;; - EV68*) UNAME_MACHINE=alphaev68 ;; - esac - objdump --private-headers /bin/sh | grep ld.so.1 >/dev/null - if test "$?" = 0 ; then LIBC="libc1" ; else LIBC="" ; fi - echo ${UNAME_MACHINE}-unknown-linux-gnu${LIBC} - exit ;; - parisc:Linux:*:* | hppa:Linux:*:*) - # Look for CPU level - case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in - PA7*) echo hppa1.1-unknown-linux-gnu ;; - PA8*) echo hppa2.0-unknown-linux-gnu ;; - *) echo hppa-unknown-linux-gnu ;; - esac - exit ;; - parisc64:Linux:*:* | hppa64:Linux:*:*) - echo hppa64-unknown-linux-gnu - exit ;; - s390:Linux:*:* | s390x:Linux:*:*) - echo ${UNAME_MACHINE}-ibm-linux - exit ;; - sh64*:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-gnu - exit ;; - sh*:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-gnu - exit ;; - sparc:Linux:*:* | sparc64:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-gnu - exit ;; - vax:Linux:*:*) - echo ${UNAME_MACHINE}-dec-linux-gnu - exit ;; - x86_64:Linux:*:*) - echo x86_64-unknown-linux-gnu - exit ;; - i*86:Linux:*:*) - # The BFD linker knows what the default object file format is, so - # first see if it will tell us. cd to the root directory to prevent - # problems with other programs or directories called `ld' in the path. - # Set LC_ALL=C to ensure ld outputs messages in English. - ld_supported_targets=`cd /; LC_ALL=C ld --help 2>&1 \ - | sed -ne '/supported targets:/!d - s/[ ][ ]*/ /g - s/.*supported targets: *// - s/ .*// - p'` - case "$ld_supported_targets" in - elf32-i386) - TENTATIVE="${UNAME_MACHINE}-pc-linux-gnu" - ;; - a.out-i386-linux) - echo "${UNAME_MACHINE}-pc-linux-gnuaout" - exit ;; - coff-i386) - echo "${UNAME_MACHINE}-pc-linux-gnucoff" - exit ;; - "") - # Either a pre-BFD a.out linker (linux-gnuoldld) or - # one that does not give us useful --help. - echo "${UNAME_MACHINE}-pc-linux-gnuoldld" - exit ;; - esac - # Determine whether the default compiler is a.out or elf - eval $set_cc_for_build - sed 's/^ //' << EOF >$dummy.c - #include - #ifdef __ELF__ - # ifdef __GLIBC__ - # if __GLIBC__ >= 2 - LIBC=gnu - # else - LIBC=gnulibc1 - # endif - # else - LIBC=gnulibc1 - # endif - #else - #if defined(__INTEL_COMPILER) || defined(__PGI) || defined(__SUNPRO_C) || defined(__SUNPRO_CC) - LIBC=gnu - #else - LIBC=gnuaout - #endif - #endif - #ifdef __dietlibc__ - LIBC=dietlibc - #endif -EOF - eval "`$CC_FOR_BUILD -E $dummy.c 2>/dev/null | sed -n ' - /^LIBC/{ - s: ::g - p - }'`" - test x"${LIBC}" != x && { - echo "${UNAME_MACHINE}-pc-linux-${LIBC}" - exit - } - test x"${TENTATIVE}" != x && { echo "${TENTATIVE}"; exit; } - ;; - i*86:DYNIX/ptx:4*:*) - # ptx 4.0 does uname -s correctly, with DYNIX/ptx in there. - # earlier versions are messed up and put the nodename in both - # sysname and nodename. - echo i386-sequent-sysv4 - exit ;; - i*86:UNIX_SV:4.2MP:2.*) - # Unixware is an offshoot of SVR4, but it has its own version - # number series starting with 2... - # I am not positive that other SVR4 systems won't match this, - # I just have to hope. -- rms. - # Use sysv4.2uw... so that sysv4* matches it. - echo ${UNAME_MACHINE}-pc-sysv4.2uw${UNAME_VERSION} - exit ;; - i*86:OS/2:*:*) - # If we were able to find `uname', then EMX Unix compatibility - # is probably installed. - echo ${UNAME_MACHINE}-pc-os2-emx - exit ;; - i*86:XTS-300:*:STOP) - echo ${UNAME_MACHINE}-unknown-stop - exit ;; - i*86:atheos:*:*) - echo ${UNAME_MACHINE}-unknown-atheos - exit ;; - i*86:syllable:*:*) - echo ${UNAME_MACHINE}-pc-syllable - exit ;; - i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.0*:*) - echo i386-unknown-lynxos${UNAME_RELEASE} - exit ;; - i*86:*DOS:*:*) - echo ${UNAME_MACHINE}-pc-msdosdjgpp - exit ;; - i*86:*:4.*:* | i*86:SYSTEM_V:4.*:*) - UNAME_REL=`echo ${UNAME_RELEASE} | sed 's/\/MP$//'` - if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then - echo ${UNAME_MACHINE}-univel-sysv${UNAME_REL} - else - echo ${UNAME_MACHINE}-pc-sysv${UNAME_REL} - fi - exit ;; - i*86:*:5:[678]*) - # UnixWare 7.x, OpenUNIX and OpenServer 6. - case `/bin/uname -X | grep "^Machine"` in - *486*) UNAME_MACHINE=i486 ;; - *Pentium) UNAME_MACHINE=i586 ;; - *Pent*|*Celeron) UNAME_MACHINE=i686 ;; - esac - echo ${UNAME_MACHINE}-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION} - exit ;; - i*86:*:3.2:*) - if test -f /usr/options/cb.name; then - UNAME_REL=`sed -n 's/.*Version //p' /dev/null >/dev/null ; then - UNAME_REL=`(/bin/uname -X|grep Release|sed -e 's/.*= //')` - (/bin/uname -X|grep i80486 >/dev/null) && UNAME_MACHINE=i486 - (/bin/uname -X|grep '^Machine.*Pentium' >/dev/null) \ - && UNAME_MACHINE=i586 - (/bin/uname -X|grep '^Machine.*Pent *II' >/dev/null) \ - && UNAME_MACHINE=i686 - (/bin/uname -X|grep '^Machine.*Pentium Pro' >/dev/null) \ - && UNAME_MACHINE=i686 - echo ${UNAME_MACHINE}-pc-sco$UNAME_REL - else - echo ${UNAME_MACHINE}-pc-sysv32 - fi - exit ;; - pc:*:*:*) - # Left here for compatibility: - # uname -m prints for DJGPP always 'pc', but it prints nothing about - # the processor, so we play safe by assuming i386. - echo i386-pc-msdosdjgpp - exit ;; - Intel:Mach:3*:*) - echo i386-pc-mach3 - exit ;; - paragon:*:*:*) - echo i860-intel-osf1 - exit ;; - i860:*:4.*:*) # i860-SVR4 - if grep Stardent /usr/include/sys/uadmin.h >/dev/null 2>&1 ; then - echo i860-stardent-sysv${UNAME_RELEASE} # Stardent Vistra i860-SVR4 - else # Add other i860-SVR4 vendors below as they are discovered. - echo i860-unknown-sysv${UNAME_RELEASE} # Unknown i860-SVR4 - fi - exit ;; - mini*:CTIX:SYS*5:*) - # "miniframe" - echo m68010-convergent-sysv - exit ;; - mc68k:UNIX:SYSTEM5:3.51m) - echo m68k-convergent-sysv - exit ;; - M680?0:D-NIX:5.3:*) - echo m68k-diab-dnix - exit ;; - M68*:*:R3V[5678]*:*) - test -r /sysV68 && { echo 'm68k-motorola-sysv'; exit; } ;; - 3[345]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:*:4.0:3.0 | 4400:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0 | SDS2:*:4.0:3.0 | SHG2:*:4.0:3.0 | S7501*:*:4.0:3.0) - OS_REL='' - test -r /etc/.relid \ - && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid` - /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ - && { echo i486-ncr-sysv4.3${OS_REL}; exit; } - /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ - && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;; - 3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*) - /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ - && { echo i486-ncr-sysv4; exit; } ;; - m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*) - echo m68k-unknown-lynxos${UNAME_RELEASE} - exit ;; - mc68030:UNIX_System_V:4.*:*) - echo m68k-atari-sysv4 - exit ;; - TSUNAMI:LynxOS:2.*:*) - echo sparc-unknown-lynxos${UNAME_RELEASE} - exit ;; - rs6000:LynxOS:2.*:*) - echo rs6000-unknown-lynxos${UNAME_RELEASE} - exit ;; - PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.0*:*) - echo powerpc-unknown-lynxos${UNAME_RELEASE} - exit ;; - SM[BE]S:UNIX_SV:*:*) - echo mips-dde-sysv${UNAME_RELEASE} - exit ;; - RM*:ReliantUNIX-*:*:*) - echo mips-sni-sysv4 - exit ;; - RM*:SINIX-*:*:*) - echo mips-sni-sysv4 - exit ;; - *:SINIX-*:*:*) - if uname -p 2>/dev/null >/dev/null ; then - UNAME_MACHINE=`(uname -p) 2>/dev/null` - echo ${UNAME_MACHINE}-sni-sysv4 - else - echo ns32k-sni-sysv - fi - exit ;; - PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort - # says - echo i586-unisys-sysv4 - exit ;; - *:UNIX_System_V:4*:FTX*) - # From Gerald Hewes . - # How about differentiating between stratus architectures? -djm - echo hppa1.1-stratus-sysv4 - exit ;; - *:*:*:FTX*) - # From seanf@swdc.stratus.com. - echo i860-stratus-sysv4 - exit ;; - i*86:VOS:*:*) - # From Paul.Green@stratus.com. - echo ${UNAME_MACHINE}-stratus-vos - exit ;; - *:VOS:*:*) - # From Paul.Green@stratus.com. - echo hppa1.1-stratus-vos - exit ;; - mc68*:A/UX:*:*) - echo m68k-apple-aux${UNAME_RELEASE} - exit ;; - news*:NEWS-OS:6*:*) - echo mips-sony-newsos6 - exit ;; - R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*) - if [ -d /usr/nec ]; then - echo mips-nec-sysv${UNAME_RELEASE} - else - echo mips-unknown-sysv${UNAME_RELEASE} - fi - exit ;; - BeBox:BeOS:*:*) # BeOS running on hardware made by Be, PPC only. - echo powerpc-be-beos - exit ;; - BeMac:BeOS:*:*) # BeOS running on Mac or Mac clone, PPC only. - echo powerpc-apple-beos - exit ;; - BePC:BeOS:*:*) # BeOS running on Intel PC compatible. - echo i586-pc-beos - exit ;; - SX-4:SUPER-UX:*:*) - echo sx4-nec-superux${UNAME_RELEASE} - exit ;; - SX-5:SUPER-UX:*:*) - echo sx5-nec-superux${UNAME_RELEASE} - exit ;; - SX-6:SUPER-UX:*:*) - echo sx6-nec-superux${UNAME_RELEASE} - exit ;; - Power*:Rhapsody:*:*) - echo powerpc-apple-rhapsody${UNAME_RELEASE} - exit ;; - *:Rhapsody:*:*) - echo ${UNAME_MACHINE}-apple-rhapsody${UNAME_RELEASE} - exit ;; - *:Darwin:*:*) - UNAME_PROCESSOR=`uname -p` || UNAME_PROCESSOR=unknown - case $UNAME_PROCESSOR in - unknown) UNAME_PROCESSOR=powerpc ;; - esac - echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE} - exit ;; - *:procnto*:*:* | *:QNX:[0123456789]*:*) - UNAME_PROCESSOR=`uname -p` - if test "$UNAME_PROCESSOR" = "x86"; then - UNAME_PROCESSOR=i386 - UNAME_MACHINE=pc - fi - echo ${UNAME_PROCESSOR}-${UNAME_MACHINE}-nto-qnx${UNAME_RELEASE} - exit ;; - *:QNX:*:4*) - echo i386-pc-qnx - exit ;; - NSE-?:NONSTOP_KERNEL:*:*) - echo nse-tandem-nsk${UNAME_RELEASE} - exit ;; - NSR-?:NONSTOP_KERNEL:*:*) - echo nsr-tandem-nsk${UNAME_RELEASE} - exit ;; - *:NonStop-UX:*:*) - echo mips-compaq-nonstopux - exit ;; - BS2000:POSIX*:*:*) - echo bs2000-siemens-sysv - exit ;; - DS/*:UNIX_System_V:*:*) - echo ${UNAME_MACHINE}-${UNAME_SYSTEM}-${UNAME_RELEASE} - exit ;; - *:Plan9:*:*) - # "uname -m" is not consistent, so use $cputype instead. 386 - # is converted to i386 for consistency with other x86 - # operating systems. - if test "$cputype" = "386"; then - UNAME_MACHINE=i386 - else - UNAME_MACHINE="$cputype" - fi - echo ${UNAME_MACHINE}-unknown-plan9 - exit ;; - *:TOPS-10:*:*) - echo pdp10-unknown-tops10 - exit ;; - *:TENEX:*:*) - echo pdp10-unknown-tenex - exit ;; - KS10:TOPS-20:*:* | KL10:TOPS-20:*:* | TYPE4:TOPS-20:*:*) - echo pdp10-dec-tops20 - exit ;; - XKL-1:TOPS-20:*:* | TYPE5:TOPS-20:*:*) - echo pdp10-xkl-tops20 - exit ;; - *:TOPS-20:*:*) - echo pdp10-unknown-tops20 - exit ;; - *:ITS:*:*) - echo pdp10-unknown-its - exit ;; - SEI:*:*:SEIUX) - echo mips-sei-seiux${UNAME_RELEASE} - exit ;; - *:DragonFly:*:*) - echo ${UNAME_MACHINE}-unknown-dragonfly`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` - exit ;; - *:*VMS:*:*) - UNAME_MACHINE=`(uname -p) 2>/dev/null` - case "${UNAME_MACHINE}" in - A*) echo alpha-dec-vms ; exit ;; - I*) echo ia64-dec-vms ; exit ;; - V*) echo vax-dec-vms ; exit ;; - esac ;; - *:XENIX:*:SysV) - echo i386-pc-xenix - exit ;; - i*86:skyos:*:*) - echo ${UNAME_MACHINE}-pc-skyos`echo ${UNAME_RELEASE}` | sed -e 's/ .*$//' - exit ;; - i*86:rdos:*:*) - echo ${UNAME_MACHINE}-pc-rdos - exit ;; -esac - -#echo '(No uname command or uname output not recognized.)' 1>&2 -#echo "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" 1>&2 - -eval $set_cc_for_build -cat >$dummy.c < -# include -#endif -main () -{ -#if defined (sony) -#if defined (MIPSEB) - /* BFD wants "bsd" instead of "newsos". Perhaps BFD should be changed, - I don't know.... */ - printf ("mips-sony-bsd\n"); exit (0); -#else -#include - printf ("m68k-sony-newsos%s\n", -#ifdef NEWSOS4 - "4" -#else - "" -#endif - ); exit (0); -#endif -#endif - -#if defined (__arm) && defined (__acorn) && defined (__unix) - printf ("arm-acorn-riscix\n"); exit (0); -#endif - -#if defined (hp300) && !defined (hpux) - printf ("m68k-hp-bsd\n"); exit (0); -#endif - -#if defined (NeXT) -#if !defined (__ARCHITECTURE__) -#define __ARCHITECTURE__ "m68k" -#endif - int version; - version=`(hostinfo | sed -n 's/.*NeXT Mach \([0-9]*\).*/\1/p') 2>/dev/null`; - if (version < 4) - printf ("%s-next-nextstep%d\n", __ARCHITECTURE__, version); - else - printf ("%s-next-openstep%d\n", __ARCHITECTURE__, version); - exit (0); -#endif - -#if defined (MULTIMAX) || defined (n16) -#if defined (UMAXV) - printf ("ns32k-encore-sysv\n"); exit (0); -#else -#if defined (CMU) - printf ("ns32k-encore-mach\n"); exit (0); -#else - printf ("ns32k-encore-bsd\n"); exit (0); -#endif -#endif -#endif - -#if defined (__386BSD__) - printf ("i386-pc-bsd\n"); exit (0); -#endif - -#if defined (sequent) -#if defined (i386) - printf ("i386-sequent-dynix\n"); exit (0); -#endif -#if defined (ns32000) - printf ("ns32k-sequent-dynix\n"); exit (0); -#endif -#endif - -#if defined (_SEQUENT_) - struct utsname un; - - uname(&un); - - if (strncmp(un.version, "V2", 2) == 0) { - printf ("i386-sequent-ptx2\n"); exit (0); - } - if (strncmp(un.version, "V1", 2) == 0) { /* XXX is V1 correct? */ - printf ("i386-sequent-ptx1\n"); exit (0); - } - printf ("i386-sequent-ptx\n"); exit (0); - -#endif - -#if defined (vax) -# if !defined (ultrix) -# include -# if defined (BSD) -# if BSD == 43 - printf ("vax-dec-bsd4.3\n"); exit (0); -# else -# if BSD == 199006 - printf ("vax-dec-bsd4.3reno\n"); exit (0); -# else - printf ("vax-dec-bsd\n"); exit (0); -# endif -# endif -# else - printf ("vax-dec-bsd\n"); exit (0); -# endif -# else - printf ("vax-dec-ultrix\n"); exit (0); -# endif -#endif - -#if defined (alliant) && defined (i860) - printf ("i860-alliant-bsd\n"); exit (0); -#endif - - exit (1); -} -EOF - -$CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null && SYSTEM_NAME=`$dummy` && - { echo "$SYSTEM_NAME"; exit; } - -# Apollos put the system type in the environment. - -test -d /usr/apollo && { echo ${ISP}-apollo-${SYSTYPE}; exit; } - -# Convex versions that predate uname can use getsysinfo(1) - -if [ -x /usr/convex/getsysinfo ] -then - case `getsysinfo -f cpu_type` in - c1*) - echo c1-convex-bsd - exit ;; - c2*) - if getsysinfo -f scalar_acc - then echo c32-convex-bsd - else echo c2-convex-bsd - fi - exit ;; - c34*) - echo c34-convex-bsd - exit ;; - c38*) - echo c38-convex-bsd - exit ;; - c4*) - echo c4-convex-bsd - exit ;; - esac -fi - -cat >&2 < in order to provide the needed -information to handle your system. - -config.guess timestamp = $timestamp - -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` -/bin/uname -X = `(/bin/uname -X) 2>/dev/null` - -hostinfo = `(hostinfo) 2>/dev/null` -/bin/universe = `(/bin/universe) 2>/dev/null` -/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null` -/bin/arch = `(/bin/arch) 2>/dev/null` -/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null` -/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null` - -UNAME_MACHINE = ${UNAME_MACHINE} -UNAME_RELEASE = ${UNAME_RELEASE} -UNAME_SYSTEM = ${UNAME_SYSTEM} -UNAME_VERSION = ${UNAME_VERSION} -EOF - -exit 1 - -# Local variables: -# eval: (add-hook 'write-file-hooks 'time-stamp) -# time-stamp-start: "timestamp='" -# time-stamp-format: "%:y-%02m-%02d" -# time-stamp-end: "'" -# End: diff --git a/textclient/config.sub b/textclient/config.sub deleted file mode 100755 index fab0aa355..000000000 --- a/textclient/config.sub +++ /dev/null @@ -1,1616 +0,0 @@ -#! /bin/sh -# Configuration validation subroutine script. -# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, -# 2000, 2001, 2002, 2003, 2004, 2005, 2006 Free Software Foundation, -# Inc. - -timestamp='2006-09-20' - -# This file is (in principle) common to ALL GNU software. -# The presence of a machine in this file suggests that SOME GNU software -# can handle that machine. It does not imply ALL GNU software can. -# -# This file 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., 51 Franklin Street - Fifth Floor, Boston, MA -# 02110-1301, USA. -# -# As a special exception to the GNU General Public License, if you -# distribute this file as part of a program that contains a -# configuration script generated by Autoconf, you may include it under -# the same distribution terms that you use for the rest of that program. - - -# Please send patches to . Submit a context -# diff and a properly formatted ChangeLog entry. -# -# Configuration subroutine to validate and canonicalize a configuration type. -# Supply the specified configuration type as an argument. -# If it is invalid, we print an error message on stderr and exit with code 1. -# Otherwise, we print the canonical config type on stdout and succeed. - -# This file is supposed to be the same for all GNU packages -# and recognize all the CPU types, system types and aliases -# that are meaningful with *any* GNU software. -# Each package is responsible for reporting which valid configurations -# it does not support. The user should be able to distinguish -# a failure to support a valid configuration from a meaningless -# configuration. - -# The goal of this file is to map all the various variations of a given -# machine specification into a single specification in the form: -# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM -# or in some cases, the newer four-part form: -# CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM -# It is wrong to echo any other type of specification. - -me=`echo "$0" | sed -e 's,.*/,,'` - -usage="\ -Usage: $0 [OPTION] CPU-MFR-OPSYS - $0 [OPTION] ALIAS - -Canonicalize a configuration name. - -Operation modes: - -h, --help print this help, then exit - -t, --time-stamp print date of last modification, then exit - -v, --version print version number, then exit - -Report bugs and patches to ." - -version="\ -GNU config.sub ($timestamp) - -Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005 -Free Software Foundation, Inc. - -This is free software; see the source for copying conditions. There is NO -warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." - -help=" -Try \`$me --help' for more information." - -# Parse command line -while test $# -gt 0 ; do - case $1 in - --time-stamp | --time* | -t ) - echo "$timestamp" ; exit ;; - --version | -v ) - echo "$version" ; exit ;; - --help | --h* | -h ) - echo "$usage"; exit ;; - -- ) # Stop option processing - shift; break ;; - - ) # Use stdin as input. - break ;; - -* ) - echo "$me: invalid option $1$help" - exit 1 ;; - - *local*) - # First pass through any local machine types. - echo $1 - exit ;; - - * ) - break ;; - esac -done - -case $# in - 0) echo "$me: missing argument$help" >&2 - exit 1;; - 1) ;; - *) echo "$me: too many arguments$help" >&2 - exit 1;; -esac - -# Separate what the user gave into CPU-COMPANY and OS or KERNEL-OS (if any). -# Here we must recognize all the valid KERNEL-OS combinations. -maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'` -case $maybe_os in - nto-qnx* | linux-gnu* | linux-dietlibc | linux-newlib* | linux-uclibc* | \ - uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* | \ - storm-chaos* | os2-emx* | rtmk-nova*) - os=-$maybe_os - basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'` - ;; - *) - basic_machine=`echo $1 | sed 's/-[^-]*$//'` - if [ $basic_machine != $1 ] - then os=`echo $1 | sed 's/.*-/-/'` - else os=; fi - ;; -esac - -### Let's recognize common machines as not being operating systems so -### that things like config.sub decstation-3100 work. We also -### recognize some manufacturers as not being operating systems, so we -### can provide default operating systems below. -case $os in - -sun*os*) - # Prevent following clause from handling this invalid input. - ;; - -dec* | -mips* | -sequent* | -encore* | -pc532* | -sgi* | -sony* | \ - -att* | -7300* | -3300* | -delta* | -motorola* | -sun[234]* | \ - -unicom* | -ibm* | -next | -hp | -isi* | -apollo | -altos* | \ - -convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\ - -c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \ - -harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \ - -apple | -axis | -knuth | -cray) - os= - basic_machine=$1 - ;; - -sim | -cisco | -oki | -wec | -winbond) - os= - basic_machine=$1 - ;; - -scout) - ;; - -wrs) - os=-vxworks - basic_machine=$1 - ;; - -chorusos*) - os=-chorusos - basic_machine=$1 - ;; - -chorusrdb) - os=-chorusrdb - basic_machine=$1 - ;; - -hiux*) - os=-hiuxwe2 - ;; - -sco6) - os=-sco5v6 - basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` - ;; - -sco5) - os=-sco3.2v5 - basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` - ;; - -sco4) - os=-sco3.2v4 - basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` - ;; - -sco3.2.[4-9]*) - os=`echo $os | sed -e 's/sco3.2./sco3.2v/'` - basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` - ;; - -sco3.2v[4-9]*) - # Don't forget version if it is 3.2v4 or newer. - basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` - ;; - -sco5v6*) - # Don't forget version if it is 3.2v4 or newer. - basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` - ;; - -sco*) - os=-sco3.2v2 - basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` - ;; - -udk*) - basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` - ;; - -isc) - os=-isc2.2 - basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` - ;; - -clix*) - basic_machine=clipper-intergraph - ;; - -isc*) - basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` - ;; - -lynx*) - os=-lynxos - ;; - -ptx*) - basic_machine=`echo $1 | sed -e 's/86-.*/86-sequent/'` - ;; - -windowsnt*) - os=`echo $os | sed -e 's/windowsnt/winnt/'` - ;; - -psos*) - os=-psos - ;; - -mint | -mint[0-9]*) - basic_machine=m68k-atari - os=-mint - ;; -esac - -# Decode aliases for certain CPU-COMPANY combinations. -case $basic_machine in - # Recognize the basic CPU types without company name. - # Some are omitted here because they have special meanings below. - 1750a | 580 \ - | a29k \ - | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \ - | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \ - | am33_2.0 \ - | arc | arm | arm[bl]e | arme[lb] | armv[2345] | armv[345][lb] | avr | avr32 \ - | bfin \ - | c4x | clipper \ - | d10v | d30v | dlx | dsp16xx \ - | fr30 | frv \ - | h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \ - | i370 | i860 | i960 | ia64 \ - | ip2k | iq2000 \ - | m32c | m32r | m32rle | m68000 | m68k | m88k \ - | maxq | mb | microblaze | mcore \ - | mips | mipsbe | mipseb | mipsel | mipsle \ - | mips16 \ - | mips64 | mips64el \ - | mips64vr | mips64vrel \ - | mips64orion | mips64orionel \ - | mips64vr4100 | mips64vr4100el \ - | mips64vr4300 | mips64vr4300el \ - | mips64vr5000 | mips64vr5000el \ - | mips64vr5900 | mips64vr5900el \ - | mipsisa32 | mipsisa32el \ - | mipsisa32r2 | mipsisa32r2el \ - | mipsisa64 | mipsisa64el \ - | mipsisa64r2 | mipsisa64r2el \ - | mipsisa64sb1 | mipsisa64sb1el \ - | mipsisa64sr71k | mipsisa64sr71kel \ - | mipstx39 | mipstx39el \ - | mn10200 | mn10300 \ - | mt \ - | msp430 \ - | nios | nios2 \ - | ns16k | ns32k \ - | or32 \ - | pdp10 | pdp11 | pj | pjl \ - | powerpc | powerpc64 | powerpc64le | powerpcle | ppcbe \ - | pyramid \ - | score \ - | sh | sh[1234] | sh[24]a | sh[23]e | sh[34]eb | sheb | shbe | shle | sh[1234]le | sh3ele \ - | sh64 | sh64le \ - | sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet | sparclite \ - | sparcv8 | sparcv9 | sparcv9b | sparcv9v \ - | spu | strongarm \ - | tahoe | thumb | tic4x | tic80 | tron \ - | v850 | v850e \ - | we32k \ - | x86 | xc16x | xscale | xscalee[bl] | xstormy16 | xtensa \ - | z8k) - basic_machine=$basic_machine-unknown - ;; - m6811 | m68hc11 | m6812 | m68hc12) - # Motorola 68HC11/12. - basic_machine=$basic_machine-unknown - os=-none - ;; - m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | v70 | w65 | z8k) - ;; - ms1) - basic_machine=mt-unknown - ;; - - # We use `pc' rather than `unknown' - # because (1) that's what they normally are, and - # (2) the word "unknown" tends to confuse beginning users. - i*86 | x86_64) - basic_machine=$basic_machine-pc - ;; - # Object if more than one company name word. - *-*-*) - echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2 - exit 1 - ;; - # Recognize the basic CPU types with company name. - 580-* \ - | a29k-* \ - | alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \ - | alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \ - | alphapca5[67]-* | alpha64pca5[67]-* | arc-* \ - | arm-* | armbe-* | armle-* | armeb-* | armv*-* \ - | avr-* | avr32-* \ - | bfin-* | bs2000-* \ - | c[123]* | c30-* | [cjt]90-* | c4x-* | c54x-* | c55x-* | c6x-* \ - | clipper-* | craynv-* | cydra-* \ - | d10v-* | d30v-* | dlx-* \ - | elxsi-* \ - | f30[01]-* | f700-* | fr30-* | frv-* | fx80-* \ - | h8300-* | h8500-* \ - | hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \ - | i*86-* | i860-* | i960-* | ia64-* \ - | ip2k-* | iq2000-* \ - | m32c-* | m32r-* | m32rle-* \ - | m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \ - | m88110-* | m88k-* | maxq-* | mcore-* \ - | mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \ - | mips16-* \ - | mips64-* | mips64el-* \ - | mips64vr-* | mips64vrel-* \ - | mips64orion-* | mips64orionel-* \ - | mips64vr4100-* | mips64vr4100el-* \ - | mips64vr4300-* | mips64vr4300el-* \ - | mips64vr5000-* | mips64vr5000el-* \ - | mips64vr5900-* | mips64vr5900el-* \ - | mipsisa32-* | mipsisa32el-* \ - | mipsisa32r2-* | mipsisa32r2el-* \ - | mipsisa64-* | mipsisa64el-* \ - | mipsisa64r2-* | mipsisa64r2el-* \ - | mipsisa64sb1-* | mipsisa64sb1el-* \ - | mipsisa64sr71k-* | mipsisa64sr71kel-* \ - | mipstx39-* | mipstx39el-* \ - | mmix-* \ - | mt-* \ - | msp430-* \ - | nios-* | nios2-* \ - | none-* | np1-* | ns16k-* | ns32k-* \ - | orion-* \ - | pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \ - | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* | ppcbe-* \ - | pyramid-* \ - | romp-* | rs6000-* \ - | sh-* | sh[1234]-* | sh[24]a-* | sh[23]e-* | sh[34]eb-* | sheb-* | shbe-* \ - | shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \ - | sparc-* | sparc64-* | sparc64b-* | sparc64v-* | sparc86x-* | sparclet-* \ - | sparclite-* \ - | sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | strongarm-* | sv1-* | sx?-* \ - | tahoe-* | thumb-* \ - | tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \ - | tron-* \ - | v850-* | v850e-* | vax-* \ - | we32k-* \ - | x86-* | x86_64-* | xc16x-* | xps100-* | xscale-* | xscalee[bl]-* \ - | xstormy16-* | xtensa-* \ - | ymp-* \ - | z8k-*) - ;; - # Recognize the various machine names and aliases which stand - # for a CPU type and a company and sometimes even an OS. - 386bsd) - basic_machine=i386-unknown - os=-bsd - ;; - 3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc) - basic_machine=m68000-att - ;; - 3b*) - basic_machine=we32k-att - ;; - a29khif) - basic_machine=a29k-amd - os=-udi - ;; - abacus) - basic_machine=abacus-unknown - ;; - adobe68k) - basic_machine=m68010-adobe - os=-scout - ;; - alliant | fx80) - basic_machine=fx80-alliant - ;; - altos | altos3068) - basic_machine=m68k-altos - ;; - am29k) - basic_machine=a29k-none - os=-bsd - ;; - amd64) - basic_machine=x86_64-pc - ;; - amd64-*) - basic_machine=x86_64-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - amdahl) - basic_machine=580-amdahl - os=-sysv - ;; - amiga | amiga-*) - basic_machine=m68k-unknown - ;; - amigaos | amigados) - basic_machine=m68k-unknown - os=-amigaos - ;; - amigaunix | amix) - basic_machine=m68k-unknown - os=-sysv4 - ;; - apollo68) - basic_machine=m68k-apollo - os=-sysv - ;; - apollo68bsd) - basic_machine=m68k-apollo - os=-bsd - ;; - aux) - basic_machine=m68k-apple - os=-aux - ;; - balance) - basic_machine=ns32k-sequent - os=-dynix - ;; - c90) - basic_machine=c90-cray - os=-unicos - ;; - convex-c1) - basic_machine=c1-convex - os=-bsd - ;; - convex-c2) - basic_machine=c2-convex - os=-bsd - ;; - convex-c32) - basic_machine=c32-convex - os=-bsd - ;; - convex-c34) - basic_machine=c34-convex - os=-bsd - ;; - convex-c38) - basic_machine=c38-convex - os=-bsd - ;; - cray | j90) - basic_machine=j90-cray - os=-unicos - ;; - craynv) - basic_machine=craynv-cray - os=-unicosmp - ;; - cr16c) - basic_machine=cr16c-unknown - os=-elf - ;; - crds | unos) - basic_machine=m68k-crds - ;; - crisv32 | crisv32-* | etraxfs*) - basic_machine=crisv32-axis - ;; - cris | cris-* | etrax*) - basic_machine=cris-axis - ;; - crx) - basic_machine=crx-unknown - os=-elf - ;; - da30 | da30-*) - basic_machine=m68k-da30 - ;; - decstation | decstation-3100 | pmax | pmax-* | pmin | dec3100 | decstatn) - basic_machine=mips-dec - ;; - decsystem10* | dec10*) - basic_machine=pdp10-dec - os=-tops10 - ;; - decsystem20* | dec20*) - basic_machine=pdp10-dec - os=-tops20 - ;; - delta | 3300 | motorola-3300 | motorola-delta \ - | 3300-motorola | delta-motorola) - basic_machine=m68k-motorola - ;; - delta88) - basic_machine=m88k-motorola - os=-sysv3 - ;; - djgpp) - basic_machine=i586-pc - os=-msdosdjgpp - ;; - dpx20 | dpx20-*) - basic_machine=rs6000-bull - os=-bosx - ;; - dpx2* | dpx2*-bull) - basic_machine=m68k-bull - os=-sysv3 - ;; - ebmon29k) - basic_machine=a29k-amd - os=-ebmon - ;; - elxsi) - basic_machine=elxsi-elxsi - os=-bsd - ;; - encore | umax | mmax) - basic_machine=ns32k-encore - ;; - es1800 | OSE68k | ose68k | ose | OSE) - basic_machine=m68k-ericsson - os=-ose - ;; - fx2800) - basic_machine=i860-alliant - ;; - genix) - basic_machine=ns32k-ns - ;; - gmicro) - basic_machine=tron-gmicro - os=-sysv - ;; - go32) - basic_machine=i386-pc - os=-go32 - ;; - h3050r* | hiux*) - basic_machine=hppa1.1-hitachi - os=-hiuxwe2 - ;; - h8300hms) - basic_machine=h8300-hitachi - os=-hms - ;; - h8300xray) - basic_machine=h8300-hitachi - os=-xray - ;; - h8500hms) - basic_machine=h8500-hitachi - os=-hms - ;; - harris) - basic_machine=m88k-harris - os=-sysv3 - ;; - hp300-*) - basic_machine=m68k-hp - ;; - hp300bsd) - basic_machine=m68k-hp - os=-bsd - ;; - hp300hpux) - basic_machine=m68k-hp - os=-hpux - ;; - hp3k9[0-9][0-9] | hp9[0-9][0-9]) - basic_machine=hppa1.0-hp - ;; - hp9k2[0-9][0-9] | hp9k31[0-9]) - basic_machine=m68000-hp - ;; - hp9k3[2-9][0-9]) - basic_machine=m68k-hp - ;; - hp9k6[0-9][0-9] | hp6[0-9][0-9]) - basic_machine=hppa1.0-hp - ;; - hp9k7[0-79][0-9] | hp7[0-79][0-9]) - basic_machine=hppa1.1-hp - ;; - hp9k78[0-9] | hp78[0-9]) - # FIXME: really hppa2.0-hp - basic_machine=hppa1.1-hp - ;; - hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893) - # FIXME: really hppa2.0-hp - basic_machine=hppa1.1-hp - ;; - hp9k8[0-9][13679] | hp8[0-9][13679]) - basic_machine=hppa1.1-hp - ;; - hp9k8[0-9][0-9] | hp8[0-9][0-9]) - basic_machine=hppa1.0-hp - ;; - hppa-next) - os=-nextstep3 - ;; - hppaosf) - basic_machine=hppa1.1-hp - os=-osf - ;; - hppro) - basic_machine=hppa1.1-hp - os=-proelf - ;; - i370-ibm* | ibm*) - basic_machine=i370-ibm - ;; -# I'm not sure what "Sysv32" means. Should this be sysv3.2? - i*86v32) - basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` - os=-sysv32 - ;; - i*86v4*) - basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` - os=-sysv4 - ;; - i*86v) - basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` - os=-sysv - ;; - i*86sol2) - basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` - os=-solaris2 - ;; - i386mach) - basic_machine=i386-mach - os=-mach - ;; - i386-vsta | vsta) - basic_machine=i386-unknown - os=-vsta - ;; - iris | iris4d) - basic_machine=mips-sgi - case $os in - -irix*) - ;; - *) - os=-irix4 - ;; - esac - ;; - isi68 | isi) - basic_machine=m68k-isi - os=-sysv - ;; - m88k-omron*) - basic_machine=m88k-omron - ;; - magnum | m3230) - basic_machine=mips-mips - os=-sysv - ;; - merlin) - basic_machine=ns32k-utek - os=-sysv - ;; - mingw32) - basic_machine=i386-pc - os=-mingw32 - ;; - miniframe) - basic_machine=m68000-convergent - ;; - *mint | -mint[0-9]* | *MiNT | *MiNT[0-9]*) - basic_machine=m68k-atari - os=-mint - ;; - mips3*-*) - basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'` - ;; - mips3*) - basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`-unknown - ;; - monitor) - basic_machine=m68k-rom68k - os=-coff - ;; - morphos) - basic_machine=powerpc-unknown - os=-morphos - ;; - msdos) - basic_machine=i386-pc - os=-msdos - ;; - ms1-*) - basic_machine=`echo $basic_machine | sed -e 's/ms1-/mt-/'` - ;; - mvs) - basic_machine=i370-ibm - os=-mvs - ;; - ncr3000) - basic_machine=i486-ncr - os=-sysv4 - ;; - netbsd386) - basic_machine=i386-unknown - os=-netbsd - ;; - netwinder) - basic_machine=armv4l-rebel - os=-linux - ;; - news | news700 | news800 | news900) - basic_machine=m68k-sony - os=-newsos - ;; - news1000) - basic_machine=m68030-sony - os=-newsos - ;; - news-3600 | risc-news) - basic_machine=mips-sony - os=-newsos - ;; - necv70) - basic_machine=v70-nec - os=-sysv - ;; - next | m*-next ) - basic_machine=m68k-next - case $os in - -nextstep* ) - ;; - -ns2*) - os=-nextstep2 - ;; - *) - os=-nextstep3 - ;; - esac - ;; - nh3000) - basic_machine=m68k-harris - os=-cxux - ;; - nh[45]000) - basic_machine=m88k-harris - os=-cxux - ;; - nindy960) - basic_machine=i960-intel - os=-nindy - ;; - mon960) - basic_machine=i960-intel - os=-mon960 - ;; - nonstopux) - basic_machine=mips-compaq - os=-nonstopux - ;; - np1) - basic_machine=np1-gould - ;; - nsr-tandem) - basic_machine=nsr-tandem - ;; - op50n-* | op60c-*) - basic_machine=hppa1.1-oki - os=-proelf - ;; - openrisc | openrisc-*) - basic_machine=or32-unknown - ;; - os400) - basic_machine=powerpc-ibm - os=-os400 - ;; - OSE68000 | ose68000) - basic_machine=m68000-ericsson - os=-ose - ;; - os68k) - basic_machine=m68k-none - os=-os68k - ;; - pa-hitachi) - basic_machine=hppa1.1-hitachi - os=-hiuxwe2 - ;; - paragon) - basic_machine=i860-intel - os=-osf - ;; - pbd) - basic_machine=sparc-tti - ;; - pbb) - basic_machine=m68k-tti - ;; - pc532 | pc532-*) - basic_machine=ns32k-pc532 - ;; - pc98) - basic_machine=i386-pc - ;; - pc98-*) - basic_machine=i386-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - pentium | p5 | k5 | k6 | nexgen | viac3) - basic_machine=i586-pc - ;; - pentiumpro | p6 | 6x86 | athlon | athlon_*) - basic_machine=i686-pc - ;; - pentiumii | pentium2 | pentiumiii | pentium3) - basic_machine=i686-pc - ;; - pentium4) - basic_machine=i786-pc - ;; - pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*) - basic_machine=i586-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - pentiumpro-* | p6-* | 6x86-* | athlon-*) - basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*) - basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - pentium4-*) - basic_machine=i786-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - pn) - basic_machine=pn-gould - ;; - power) basic_machine=power-ibm - ;; - ppc) basic_machine=powerpc-unknown - ;; - ppc-*) basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - ppcle | powerpclittle | ppc-le | powerpc-little) - basic_machine=powerpcle-unknown - ;; - ppcle-* | powerpclittle-*) - basic_machine=powerpcle-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - ppc64) basic_machine=powerpc64-unknown - ;; - ppc64-*) basic_machine=powerpc64-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - ppc64le | powerpc64little | ppc64-le | powerpc64-little) - basic_machine=powerpc64le-unknown - ;; - ppc64le-* | powerpc64little-*) - basic_machine=powerpc64le-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - ps2) - basic_machine=i386-ibm - ;; - pw32) - basic_machine=i586-unknown - os=-pw32 - ;; - rdos) - basic_machine=i386-pc - os=-rdos - ;; - rom68k) - basic_machine=m68k-rom68k - os=-coff - ;; - rm[46]00) - basic_machine=mips-siemens - ;; - rtpc | rtpc-*) - basic_machine=romp-ibm - ;; - s390 | s390-*) - basic_machine=s390-ibm - ;; - s390x | s390x-*) - basic_machine=s390x-ibm - ;; - sa29200) - basic_machine=a29k-amd - os=-udi - ;; - sb1) - basic_machine=mipsisa64sb1-unknown - ;; - sb1el) - basic_machine=mipsisa64sb1el-unknown - ;; - sde) - basic_machine=mipsisa32-sde - os=-elf - ;; - sei) - basic_machine=mips-sei - os=-seiux - ;; - sequent) - basic_machine=i386-sequent - ;; - sh) - basic_machine=sh-hitachi - os=-hms - ;; - sh64) - basic_machine=sh64-unknown - ;; - sparclite-wrs | simso-wrs) - basic_machine=sparclite-wrs - os=-vxworks - ;; - sps7) - basic_machine=m68k-bull - os=-sysv2 - ;; - spur) - basic_machine=spur-unknown - ;; - st2000) - basic_machine=m68k-tandem - ;; - stratus) - basic_machine=i860-stratus - os=-sysv4 - ;; - sun2) - basic_machine=m68000-sun - ;; - sun2os3) - basic_machine=m68000-sun - os=-sunos3 - ;; - sun2os4) - basic_machine=m68000-sun - os=-sunos4 - ;; - sun3os3) - basic_machine=m68k-sun - os=-sunos3 - ;; - sun3os4) - basic_machine=m68k-sun - os=-sunos4 - ;; - sun4os3) - basic_machine=sparc-sun - os=-sunos3 - ;; - sun4os4) - basic_machine=sparc-sun - os=-sunos4 - ;; - sun4sol2) - basic_machine=sparc-sun - os=-solaris2 - ;; - sun3 | sun3-*) - basic_machine=m68k-sun - ;; - sun4) - basic_machine=sparc-sun - ;; - sun386 | sun386i | roadrunner) - basic_machine=i386-sun - ;; - sv1) - basic_machine=sv1-cray - os=-unicos - ;; - symmetry) - basic_machine=i386-sequent - os=-dynix - ;; - t3e) - basic_machine=alphaev5-cray - os=-unicos - ;; - t90) - basic_machine=t90-cray - os=-unicos - ;; - tic54x | c54x*) - basic_machine=tic54x-unknown - os=-coff - ;; - tic55x | c55x*) - basic_machine=tic55x-unknown - os=-coff - ;; - tic6x | c6x*) - basic_machine=tic6x-unknown - os=-coff - ;; - tx39) - basic_machine=mipstx39-unknown - ;; - tx39el) - basic_machine=mipstx39el-unknown - ;; - toad1) - basic_machine=pdp10-xkl - os=-tops20 - ;; - tower | tower-32) - basic_machine=m68k-ncr - ;; - tpf) - basic_machine=s390x-ibm - os=-tpf - ;; - udi29k) - basic_machine=a29k-amd - os=-udi - ;; - ultra3) - basic_machine=a29k-nyu - os=-sym1 - ;; - v810 | necv810) - basic_machine=v810-nec - os=-none - ;; - vaxv) - basic_machine=vax-dec - os=-sysv - ;; - vms) - basic_machine=vax-dec - os=-vms - ;; - vpp*|vx|vx-*) - basic_machine=f301-fujitsu - ;; - vxworks960) - basic_machine=i960-wrs - os=-vxworks - ;; - vxworks68) - basic_machine=m68k-wrs - os=-vxworks - ;; - vxworks29k) - basic_machine=a29k-wrs - os=-vxworks - ;; - w65*) - basic_machine=w65-wdc - os=-none - ;; - w89k-*) - basic_machine=hppa1.1-winbond - os=-proelf - ;; - xbox) - basic_machine=i686-pc - os=-mingw32 - ;; - xps | xps100) - basic_machine=xps100-honeywell - ;; - ymp) - basic_machine=ymp-cray - os=-unicos - ;; - z8k-*-coff) - basic_machine=z8k-unknown - os=-sim - ;; - none) - basic_machine=none-none - os=-none - ;; - -# Here we handle the default manufacturer of certain CPU types. It is in -# some cases the only manufacturer, in others, it is the most popular. - w89k) - basic_machine=hppa1.1-winbond - ;; - op50n) - basic_machine=hppa1.1-oki - ;; - op60c) - basic_machine=hppa1.1-oki - ;; - romp) - basic_machine=romp-ibm - ;; - mmix) - basic_machine=mmix-knuth - ;; - rs6000) - basic_machine=rs6000-ibm - ;; - vax) - basic_machine=vax-dec - ;; - pdp10) - # there are many clones, so DEC is not a safe bet - basic_machine=pdp10-unknown - ;; - pdp11) - basic_machine=pdp11-dec - ;; - we32k) - basic_machine=we32k-att - ;; - sh[1234] | sh[24]a | sh[34]eb | sh[1234]le | sh[23]ele) - basic_machine=sh-unknown - ;; - sparc | sparcv8 | sparcv9 | sparcv9b | sparcv9v) - basic_machine=sparc-sun - ;; - cydra) - basic_machine=cydra-cydrome - ;; - orion) - basic_machine=orion-highlevel - ;; - orion105) - basic_machine=clipper-highlevel - ;; - mac | mpw | mac-mpw) - basic_machine=m68k-apple - ;; - pmac | pmac-mpw) - basic_machine=powerpc-apple - ;; - *-unknown) - # Make sure to match an already-canonicalized machine name. - ;; - *) - echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2 - exit 1 - ;; -esac - -# Here we canonicalize certain aliases for manufacturers. -case $basic_machine in - *-digital*) - basic_machine=`echo $basic_machine | sed 's/digital.*/dec/'` - ;; - *-commodore*) - basic_machine=`echo $basic_machine | sed 's/commodore.*/cbm/'` - ;; - *) - ;; -esac - -# Decode manufacturer-specific aliases for certain operating systems. - -if [ x"$os" != x"" ] -then -case $os in - # First match some system type aliases - # that might get confused with valid system types. - # -solaris* is a basic system type, with this one exception. - -solaris1 | -solaris1.*) - os=`echo $os | sed -e 's|solaris1|sunos4|'` - ;; - -solaris) - os=-solaris2 - ;; - -svr4*) - os=-sysv4 - ;; - -unixware*) - os=-sysv4.2uw - ;; - -gnu/linux*) - os=`echo $os | sed -e 's|gnu/linux|linux-gnu|'` - ;; - # First accept the basic system types. - # The portable systems comes first. - # Each alternative MUST END IN A *, to match a version number. - # -sysv* is not here because it comes later, after sysvr4. - -gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \ - | -*vms* | -sco* | -esix* | -isc* | -aix* | -sunos | -sunos[34]*\ - | -hpux* | -unos* | -osf* | -luna* | -dgux* | -solaris* | -sym* \ - | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \ - | -aos* \ - | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \ - | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \ - | -hiux* | -386bsd* | -knetbsd* | -mirbsd* | -netbsd* \ - | -openbsd* | -solidbsd* \ - | -ekkobsd* | -kfreebsd* | -freebsd* | -riscix* | -lynxos* \ - | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \ - | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \ - | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \ - | -chorusos* | -chorusrdb* \ - | -cygwin* | -pe* | -psos* | -moss* | -proelf* | -rtems* \ - | -mingw32* | -linux-gnu* | -linux-newlib* | -linux-uclibc* \ - | -uxpv* | -beos* | -mpeix* | -udk* \ - | -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \ - | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \ - | -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \ - | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \ - | -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \ - | -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \ - | -skyos* | -haiku* | -rdos* | -toppers*) - # Remember, each alternative MUST END IN *, to match a version number. - ;; - -qnx*) - case $basic_machine in - x86-* | i*86-*) - ;; - *) - os=-nto$os - ;; - esac - ;; - -nto-qnx*) - ;; - -nto*) - os=`echo $os | sed -e 's|nto|nto-qnx|'` - ;; - -sim | -es1800* | -hms* | -xray | -os68k* | -none* | -v88r* \ - | -windows* | -osx | -abug | -netware* | -os9* | -beos* | -haiku* \ - | -macos* | -mpw* | -magic* | -mmixware* | -mon960* | -lnews*) - ;; - -mac*) - os=`echo $os | sed -e 's|mac|macos|'` - ;; - -linux-dietlibc) - os=-linux-dietlibc - ;; - -linux*) - os=`echo $os | sed -e 's|linux|linux-gnu|'` - ;; - -sunos5*) - os=`echo $os | sed -e 's|sunos5|solaris2|'` - ;; - -sunos6*) - os=`echo $os | sed -e 's|sunos6|solaris3|'` - ;; - -opened*) - os=-openedition - ;; - -os400*) - os=-os400 - ;; - -wince*) - os=-wince - ;; - -osfrose*) - os=-osfrose - ;; - -osf*) - os=-osf - ;; - -utek*) - os=-bsd - ;; - -dynix*) - os=-bsd - ;; - -acis*) - os=-aos - ;; - -atheos*) - os=-atheos - ;; - -syllable*) - os=-syllable - ;; - -386bsd) - os=-bsd - ;; - -ctix* | -uts*) - os=-sysv - ;; - -nova*) - os=-rtmk-nova - ;; - -ns2 ) - os=-nextstep2 - ;; - -nsk*) - os=-nsk - ;; - # Preserve the version number of sinix5. - -sinix5.*) - os=`echo $os | sed -e 's|sinix|sysv|'` - ;; - -sinix*) - os=-sysv4 - ;; - -tpf*) - os=-tpf - ;; - -triton*) - os=-sysv3 - ;; - -oss*) - os=-sysv3 - ;; - -svr4) - os=-sysv4 - ;; - -svr3) - os=-sysv3 - ;; - -sysvr4) - os=-sysv4 - ;; - # This must come after -sysvr4. - -sysv*) - ;; - -ose*) - os=-ose - ;; - -es1800*) - os=-ose - ;; - -xenix) - os=-xenix - ;; - -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) - os=-mint - ;; - -aros*) - os=-aros - ;; - -kaos*) - os=-kaos - ;; - -zvmoe) - os=-zvmoe - ;; - -none) - ;; - *) - # Get rid of the `-' at the beginning of $os. - os=`echo $os | sed 's/[^-]*-//'` - echo Invalid configuration \`$1\': system \`$os\' not recognized 1>&2 - exit 1 - ;; -esac -else - -# Here we handle the default operating systems that come with various machines. -# The value should be what the vendor currently ships out the door with their -# machine or put another way, the most popular os provided with the machine. - -# Note that if you're going to try to match "-MANUFACTURER" here (say, -# "-sun"), then you have to tell the case statement up towards the top -# that MANUFACTURER isn't an operating system. Otherwise, code above -# will signal an error saying that MANUFACTURER isn't an operating -# system, and we'll never get to this point. - -case $basic_machine in - score-*) - os=-elf - ;; - spu-*) - os=-elf - ;; - *-acorn) - os=-riscix1.2 - ;; - arm*-rebel) - os=-linux - ;; - arm*-semi) - os=-aout - ;; - c4x-* | tic4x-*) - os=-coff - ;; - # This must come before the *-dec entry. - pdp10-*) - os=-tops20 - ;; - pdp11-*) - os=-none - ;; - *-dec | vax-*) - os=-ultrix4.2 - ;; - m68*-apollo) - os=-domain - ;; - i386-sun) - os=-sunos4.0.2 - ;; - m68000-sun) - os=-sunos3 - # This also exists in the configure program, but was not the - # default. - # os=-sunos4 - ;; - m68*-cisco) - os=-aout - ;; - mips*-cisco) - os=-elf - ;; - mips*-*) - os=-elf - ;; - or32-*) - os=-coff - ;; - *-tti) # must be before sparc entry or we get the wrong os. - os=-sysv3 - ;; - sparc-* | *-sun) - os=-sunos4.1.1 - ;; - *-be) - os=-beos - ;; - *-haiku) - os=-haiku - ;; - *-ibm) - os=-aix - ;; - *-knuth) - os=-mmixware - ;; - *-wec) - os=-proelf - ;; - *-winbond) - os=-proelf - ;; - *-oki) - os=-proelf - ;; - *-hp) - os=-hpux - ;; - *-hitachi) - os=-hiux - ;; - i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent) - os=-sysv - ;; - *-cbm) - os=-amigaos - ;; - *-dg) - os=-dgux - ;; - *-dolphin) - os=-sysv3 - ;; - m68k-ccur) - os=-rtu - ;; - m88k-omron*) - os=-luna - ;; - *-next ) - os=-nextstep - ;; - *-sequent) - os=-ptx - ;; - *-crds) - os=-unos - ;; - *-ns) - os=-genix - ;; - i370-*) - os=-mvs - ;; - *-next) - os=-nextstep3 - ;; - *-gould) - os=-sysv - ;; - *-highlevel) - os=-bsd - ;; - *-encore) - os=-bsd - ;; - *-sgi) - os=-irix - ;; - *-siemens) - os=-sysv4 - ;; - *-masscomp) - os=-rtu - ;; - f30[01]-fujitsu | f700-fujitsu) - os=-uxpv - ;; - *-rom68k) - os=-coff - ;; - *-*bug) - os=-coff - ;; - *-apple) - os=-macos - ;; - *-atari*) - os=-mint - ;; - *) - os=-none - ;; -esac -fi - -# Here we handle the case where we know the os, and the CPU type, but not the -# manufacturer. We pick the logical manufacturer. -vendor=unknown -case $basic_machine in - *-unknown) - case $os in - -riscix*) - vendor=acorn - ;; - -sunos*) - vendor=sun - ;; - -aix*) - vendor=ibm - ;; - -beos*) - vendor=be - ;; - -hpux*) - vendor=hp - ;; - -mpeix*) - vendor=hp - ;; - -hiux*) - vendor=hitachi - ;; - -unos*) - vendor=crds - ;; - -dgux*) - vendor=dg - ;; - -luna*) - vendor=omron - ;; - -genix*) - vendor=ns - ;; - -mvs* | -opened*) - vendor=ibm - ;; - -os400*) - vendor=ibm - ;; - -ptx*) - vendor=sequent - ;; - -tpf*) - vendor=ibm - ;; - -vxsim* | -vxworks* | -windiss*) - vendor=wrs - ;; - -aux*) - vendor=apple - ;; - -hms*) - vendor=hitachi - ;; - -mpw* | -macos*) - vendor=apple - ;; - -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) - vendor=atari - ;; - -vos*) - vendor=stratus - ;; - esac - basic_machine=`echo $basic_machine | sed "s/unknown/$vendor/"` - ;; -esac - -echo $basic_machine$os -exit - -# Local variables: -# eval: (add-hook 'write-file-hooks 'time-stamp) -# time-stamp-start: "timestamp='" -# time-stamp-format: "%:y-%02m-%02d" -# time-stamp-end: "'" -# End: diff --git a/textclient/configure b/textclient/configure new file mode 100755 index 000000000..46ee9f403 --- /dev/null +++ b/textclient/configure @@ -0,0 +1,57 @@ +#!/bin/sh + +echo +echo +echo Running the configure script to create config.mk +echo + +# Parse the command line arguments +for x in $* +do + a=$1 + k=`echo $a | awk -F= ' { print $1 } '` + v=`echo $a | awk -F= ' { print $2 } '` + + case $k in + --prefix) + PREFIX=$v + ;; + --bindir) + BINDIR=$v + ;; + --ctdldir) + CTDLDIR=$v + ;; + *) + echo $0 : unknown option $k + echo + echo Valid options are: + echo ' --prefix=PREFIX Install files in PREFIX [/usr/local]' + echo ' --bindir=DIR Install executables in DIR [PREFIX/bin]' + echo ' --ctdldir=DIR Look for Citadel server in DIR [/usr/local/citadel]' + exit 1 + ;; + esac + shift +done + +# Set any missing values + +[ "$PREFIX" = "" ] && PREFIX=/usr/local +[ "$BINDIR" = "" ] && BINDIR=${PREFIX}/bin +[ "$CTDLDIR" = "" ] && CTDLDIR=/usr/local/citadel +[ "$CFLAGS" = "" ] && CFLAGS='-ggdb' +[ "$LDFLAGS" = "" ] && LDFLAGS='' + +# Output the config.mk + +( + echo "CFLAGS := ${CFLAGS}" + echo "LDFLAGS := ${LDFLAGS}" + echo "PREFIX := ${PREFIX}" + echo "BINDIR := ${BINDIR}" + echo "CTDLDIR := ${CTDLDIR}" +) >config.mk + +cat config.mk +echo diff --git a/textclient/configure.ac b/textclient/configure.ac deleted file mode 100644 index 18b7d941b..000000000 --- a/textclient/configure.ac +++ /dev/null @@ -1,862 +0,0 @@ -dnl Process this file with autoconf to produce a configure script. -AC_PREREQ(2.52) -AC_INIT([CitadelTextClient],m4_esyscmd_s([grep CLIENT_VERSION src/include/citadel_ipc.h | sed 's/[^0-9]*//g']),[http://uncensored.citadel.org]) -AC_REVISION([$Revision: 5108 $]) - -AC_CONFIG_HEADER(sysdep.h) -AC_CONFIG_MACRO_DIR([m4]) -AC_PREFIX_DEFAULT(/usr/local/citadel) -if test "$prefix" = NONE; then - AC_DEFINE_UNQUOTED(CTDLDIR, "$ac_default_prefix", [define this to the Citadel home directory]) - ssl_dir="$ac_default_prefix/keys" - localedir=$ac_default_prefix -else - AC_DEFINE_UNQUOTED(CTDLDIR, "$prefix", [define this to the Citadel home directory]) - ssl_dir="$prefix/keys" - localedir=$prefix -fi - -dnl Make sure we see all GNU and Solaris extensions. -AC_GNU_SOURCE - - -dnl Checks for the Datadir -AC_ARG_WITH(datadir, - [ --with-datadir directory to store the databases under], - [ if test "x$withval" != "xno" ; then - AC_DEFINE(HAVE_DATA_DIR,[],[use alternate database location?]) - AC_DEFINE_UNQUOTED(DATA_DIR, "$withval",[define, if the user suplied a data-directory to use.]) - MAKE_DATA_DIR=$withval - AC_SUBST(MAKE_DATA_DIR) - fi - ] -) - - -dnl Checks for the helpDatadir -AC_ARG_WITH(helpdir, - [ --with-helpdir directory to store the helpfiles under], - [ if test "x$withval" != "xno" ; then - AC_DEFINE(HAVE_HELP_DIR,[],[use alternate database location?]) - AC_DEFINE_UNQUOTED(HELP_DIR, "$withval",[define, if the user suplied a helpfile-directory to use.]) - MAKE_HELP_DIR=$withval - AC_SUBST(MAKE_HELP_DIR) - fi - ] -) - -dnl Checks for the Static Datadir -AC_ARG_WITH(staticdatadir, - [ --with-staticdatadir directory to store citadels system messages under], - [ if test "x$withval" != "xno" ; then - AC_DEFINE(HAVE_STATICDATA_DIR, [], [should we activate an alternate static text location?]) - AC_DEFINE_UNQUOTED(STATICDATA_DIR, "$withval", [where do we put our static text data?]) - MAKE_STATICDATA_DIR=$withval - AC_SUBST(MAKE_STATICDATA_DIR) - fi - ] -) - - -dnl Checks for the SSLdir -dnl this is a bit different than the rest, -dnl because of the citadel used to have a keys/ subdir. -AC_ARG_WITH(ssldir, - [ --with-ssldir directory to store the ssl certificates under], - [ if test "x$withval" != "xno" ; then - - ssl_dir="$withval" - fi - AC_SUBST(MAKE_SSL_DIR) - ] -) -AC_DEFINE_UNQUOTED(SSL_DIR, "$ssl_dir", [were should we put our keys?]) - - -dnl Checks for the spooldir -AC_ARG_WITH(spooldir, - [ --with-spooldir directory to keep queues under], - [ if test "x$withval" != "xno" ; then - AC_DEFINE(HAVE_SPOOL_DIR, [], [enable alternate spool dir?]) - AC_DEFINE_UNQUOTED(SPOOL_DIR,"$withval", [where do we place our spool dirs?]) - MAKE_SPOOL_DIR=$withval - AC_SUBST(MAKE_SPOOL_DIR) - fi - ] -) - - -dnl Checks for the Configdir -AC_ARG_WITH(sysconfdir, - [ --with-sysconfdir directory to store the configs under], - [ if test "x$withval" != "xno" ; then - AC_DEFINE(HAVE_ETC_DIR, [], [should we search our system config in an alternate place?]) - AC_DEFINE_UNQUOTED(ETC_DIR, "$withval", [where to search our config files]) - MAKE_ETC_DIR=$withval - AC_SUBST(MAKE_ETC_DIR) - fi - ] -) - -dnl Checks for the Configdir -AC_ARG_WITH(autosysconfdir, - [ --with-autosysconfdir directory to store the automaticaly maintained configs under], - [ if test "x$withval" != "xno" ; then - AC_DEFINE(HAVE_AUTO_ETC_DIR, [], [should we search our automatic config in an alternate place?]) - AC_DEFINE_UNQUOTED(AUTO_ETC_DIR, "$withval", [where to search our automatic config files]) - MAKE_AUTO_ETC_DIR=$withval - AC_SUBST(MAKE_AUTO_ETC_DIR) - fi - ] -) - -dnl Checks for where to put our utilities -AC_ARG_WITH(utility-bindir, - [ --with-utility-bindir directory where to find helper binaries], - [ if test "x$withval" != "xno" ; then - AC_DEFINE(HAVE_UTILBIN_DIR,[],[should we put our helper binaries to another location?]) - AC_DEFINE_UNQUOTED(UTILBIN_DIR, "$withval", [were to put our helper programs]) - MAKE_UTILBIN_DIR=$withval - AC_SUBST(MAKE_UTILBIN_DIR) - fi - ] -) - - -dnl Checks for the run-dir for the sockets -AC_ARG_WITH(rundir, - [ --with-rundir directory to place runtime files (UDS) to?], - [ if test "x$withval" != "xno" ; then - AC_DEFINE(HAVE_RUN_DIR, [], [should we put our non volatile files elsewhere?]) - AC_DEFINE_UNQUOTED(RUN_DIR, "$withval", [define, where the config should go in unix style]) - MAKE_RUN_DIR=$withval - AC_SUBST(MAKE_RUN_DIR) - fi - ] -) - - -dnl Checks for the Pseudo Random Generator sockets TODO: this keeps being default. -AC_DEFINE_UNQUOTED(EGD_POOL, "/var/run/egd-pool", [place to keep our pseudo random generator file]) -AC_ARG_WITH(egdpool, - [ --with-egdpool the socket from Pseudo Random Generator, defaults to /var/run/egd-pool], - [ if test "x$withval" != "xno" ; then - AC_DEFINE_UNQUOTED(EGD_POOL, "$withval", [the socket from Pseudo Random Generator]) - fi - ] -) - - -AC_ARG_WITH(docdir, - [ --with-docdir where to install the documentation. default: /usr/local/citadel/], - [ if test "x$withval" != "xno" ; then - MAKE_DOC_DIR=$withval - AC_SUBST(MAKE_DOC_DIR) - fi - ] -) - -dnl where to put the locale files -AC_ARG_WITH(localedir, - [ --with-localedir directory to put the locale files to], - [ if test "x$withval" != "xno" ; then - localedir=$withval - fi - ] -) -AC_DEFINE_UNQUOTED(LOCALEDIR, "$localedir",[where to find our pot files]) -LOCALEDIR=$localedir -AC_SUBST(LOCALEDIR) - - - -dnl Checks for the zlib compression library. -saved_CFLAGS="$CFLAGS" -CFLAGS="$CFLAGS" -AC_CHECK_HEADER(zlib.h, - [AC_CHECK_LIB(z, zlibVersion, - [ - LIBS="-lz $LIBS" - ], - [ - AC_MSG_ERROR(zlib was not found or is not usable. Please install zlib.) - ] - , - )], - [ - AC_MSG_ERROR(zlib.h was not found or is not usable. Please install zlib.) - ] -) -CFLAGS="$saved_CFLAGS" - -dnl Here is the check for a libc integrated iconv -AC_ARG_ENABLE(iconv, - [ --disable-iconv do not use iconv charset conversion], - ok_iconv=no, ok_iconv=yes) - -AC_MSG_CHECKING(Checking to see if your system supports iconv) -AC_TRY_RUN([ - #include - main() { - iconv_t ic = (iconv_t)(-1) ; - ic = iconv_open("UTF-8", "us-ascii"); - iconv_close(ic); - exit(0); - } - ], - [ - ok_iconv=yes - AC_MSG_RESULT([yes]) - ], - [ - ok_iconv=no - AC_MSG_RESULT([no]) - ] -) - -dnl Check for iconv in external libiconv -if test "$ok_iconv" = no; then - AC_MSG_CHECKING(Checking for an external libiconv) - OLD_LDFLAGS="$LDFLAGS" - LDFLAGS="$LDFLAGS -liconv" - AC_TRY_RUN([ - #include - main() { - iconv_t ic = (iconv_t)(-1) ; - ic = iconv_open("UTF-8", "us-ascii"); - iconv_close(ic); - } - ], - [ - ok_iconv=yes - AC_MSG_RESULT([yes]) - ], - [ - ok_iconv=no - LDFLAGS="$OLD_LDFLAGS" - AC_MSG_RESULT([no]) - ] - ) -fi -if test "$ok_iconv" != "no"; then - AC_MSG_RESULT(Citadel will be built with character set conversion.) - AC_DEFINE(HAVE_ICONV,[],[whether we have iconv for charset conversion]) -else - AC_MSG_RESULT(Citadel will be built without character set conversion.) -fi - -AC_CHECK_LIB(intl, libintl_bindtextdomain, [LDFLAGS="$LDFLAGS -lintl"]) - - - -AC_ARG_ENABLE(threaded-client, [ --disable-threaded-client - disable multithreaded client]) - -AC_ARG_ENABLE(pie, [ --enable-pie build position-independent executables]) - -AC_ARG_WITH(pam, [ --with-pam use PAM if present (see PAM.txt before you try this)]) -AC_ARG_WITH(kthread, [ --with-kthread use kernel threads (on FreeBSD) (not recommended yet)]) - -AC_ARG_WITH(ssl, - [ --with-ssl=PATH Specify path to OpenSSL installation ], - [ - if test "x$withval" != "xno" ; then - tryssldir=$withval - fi - ] -) - - -dnl By default, we only build the client (citadel and whobbs) unless we can -dnl figure out how to build with POSIX threads. -TARGETS=client - -AC_CANONICAL_HOST -PTHREAD_DEFS=-D_REENTRANT -AC_MSG_CHECKING([how to compile with POSIX threads]) -case "$host" in - dnl BSDI 3.0 wants relocatable object modules instead of shared libs - dnl for dlopen(), and has a wrapper script to link with shared libs. - dnl Also has stupid non-reentrant gethostbyaddr() and friends. - *-*-bsdi[123]*) - test -z "$CC" -a -x /usr/bin/shlicc2 && CC=shlicc2 - AC_DEFINE(HAVE_NONREENTRANT_NETDB,[], [define this if the OS has broken non-reentrant gethostby{name,addr}() ]) - AC_MSG_RESULT([Old BSDI]) - ;; - *-*-bsdi*) - AC_DEFINE(HAVE_NONREENTRANT_NETDB, [], [define this if the OS has broken non-reentrant gethostby{name,addr}() ]) - AC_MSG_RESULT([BSD/OS]) - ;; - dnl Curses support on Mac OS X is kind of screwed at the moment. - dnl TCP buffering isn't ideal under OS X. This define should also be - dnl checked in other cases of OS X-Linux differences. - *-*-darwin*) - AC_DEFINE(HAVE_DARWIN, [], [define if using OS X/Darwin]) - AC_MSG_RESULT([Mac OS X]) - ;; - dnl Digital Unix has an odd way to build for pthreads, and we can't - dnl build pthreads programs with gcc due to header problems. - alpha*-dec-osf*) - test -z "$CC" && CC=cc - LIBS="-lpthread -lexc $LIBS" - check_pthread=no - AC_MSG_RESULT([Tru64 or Digital UNIX]) - ;; - dnl FreeBSD is similar to Digital UNIX with DEC C, which has a -pthread flag: - *-*-freebsd*) - if test "$with_kthread" = yes; then - LIBS="-kthread $LIBS" - else - LIBS="-pthread $LIBS" - fi - check_pthread=no - PTHREAD_DEFS=-D_THREAD_SAFE - AC_MSG_RESULT([FreeBSD]) - ;; - *-*-openbsd*) - LIBS="-pthread $LIBS" - check_pthread=no - PTHREAD_DEFS=-pthread - AC_MSG_RESULT([OpenBSD]) - ;; - *-*-linux*) - PTHREAD_DEFS="-D_REENTRANT -pthread" - AC_MSG_RESULT([Linux]) - ;; - *-*-solaris*) - PTHREAD_DEFS="-D_REENTRANT -D_PTHREADS" - AC_MSG_RESULT([Solaris]) - ;; - *-*-cygwin*) - SERVER_LDFLAGS="-Wl,-subsystem,windows" - AC_MSG_RESULT([Cygwin]) - ;; - *) - AC_MSG_RESULT([default]) - ;; -esac -dnl DEFS="$DEFS $PTHREAD_DEFS" - - -dnl Checks for programs. -AC_PROG_CC - - - -dnl Set up system-dependent compiler flags. -if test "$GCC" = yes; then - if test "$CC" = icc; then - CFLAGS="$CFLAGS -w1" - else - case "$host" in - *-*-solaris*|alpha*-dec-osf*) - CFLAGS="$CFLAGS -Wall -Wcast-qual -Wcast-align -Wno-char-subscripts $PTHREAD_DEFS" - ;; - *) - CFLAGS="$CFLAGS -Wall -Wcast-qual -Wcast-align -Wstrict-prototypes -Wno-strict-aliasing $PTHREAD_DEFS" - ;; - esac - fi -fi - -if test "x$enable_pie" = xyes; then - save_CFLAGS="$CFLAGS" - save_LDFLAGS="$LDFLAGS" - CFLAGS="$CFLAGS -fpie" - LDFLAGS="$LDFLAGS -pie -fpie" - AC_CACHE_CHECK([whether compiler accepts -pie -fpie], ac_cv_pie_fpie, - [AC_TRY_LINK([], [], - ac_cv_pie_fpie=yes, ac_cv_pie_fpie=no)]) - if test $ac_cv_pie_fpie = no; then - CFLAGS="$save_CFLAGS" - LDFLAGS="$save_LDFLAGS" - fi -fi - -AC_MSG_CHECKING([how to create dependancy checks]) - if test -n "`$CC -V 2>&1 |grep Sun`"; then - DEPEND_FLAG=-xM; - else - DEPEND_FLAG=-M - fi -AC_SUBST(DEPEND_FLAG) - - -AC_PROG_INSTALL -AC_PROG_YACC -AC_PATH_PROG(DIFF,diff) -AC_PATH_PROG(PATCH,patch) -missing_dir=`cd $ac_aux_dir && pwd` -AM_MISSING_PROG(AUTOCONF, autoconf, $missing_dir) -AM_MISSING_PROG(ACLOCAL, aclocal, $missing_dir) - -dnl Checks for system services. - -dnl Check the size of various builtin types; see typesize.h (error) -AC_CHECK_SIZEOF(char, 0) -AC_CHECK_SIZEOF(short, 0) -AC_CHECK_SIZEOF(int, 0) -AC_CHECK_SIZEOF(long, 0) -AC_CHECK_SIZEOF(size_t, 0) -dnl AC_CHECK_SIZEOF(long long, 0) - -dnl Checks for libraries. - -dnl We want to test for the following in libc before checking for their -dnl respective libraries, because some systems (like Irix) have both, and the -dnl non-libc versions may be broken. -AC_CHECK_FUNCS(crypt gethostbyname connect flock getpwnam_r getpwuid_r getloadavg) - -AC_CHECK_FUNCS(strftime_l uselocale gettext) - -if test "$ok_nls" != "no"; then - AC_CHECK_PROG(ok_xgettext, xgettext, yes, no) - ok_nls=$ok_xgettext -fi - -if test "$ok_nls" != "no"; then - AC_CHECK_PROG(ok_msgmerge, msgmerge, yes, no) - ok_nls=$ok_msgmerge -fi - -if test "$ok_nls" != "no"; then - AC_CHECK_PROG(ok_msgfmt, msgfmt, yes, no) - ok_nls=$ok_msgfmt -fi - -if test "$ok_nls" != "no"; then - AC_MSG_RESULT(citadel will be built with national language support.) - AC_DEFINE(ENABLE_NLS, [], [whether we have NLS support]) - PROG_SUBDIRS="$PROG_SUBDIRS po/citadel-setup" -else - AC_MSG_RESULT(citadel will be built without national language support.) -fi - -dnl disable backtrace if we don't want it. -AC_ARG_WITH(backtrace, - [ --with-backtrace enable backtrace dumps in the syslog], - [ if test "x$withval" != "xno" ; then - CFLAGS="$CFLAGS -rdynamic " - LDFLAGS="$LDFLAGS -rdynamic " - AC_CHECK_FUNCS(backtrace) - fi - ] -) - -dnl disable backtrace if we don't want it. -AC_ARG_WITH(gprof, - [ --with-gprof enable profiling], - [ if test "x$withval" != "xno" ; then - CFLAGS="$CFLAGS -pg " - LDFLAGS="$LDFLAGS -pg " - fi - ] -) - -if test "$ac_cv_func_gethostbyname" = no; then - AC_CHECK_LIB(nsl, gethostbyname) -fi - -if test "$ac_cv_func_connect" = no; then - AC_CHECK_LIB(socket, connect) -fi - -dnl Check for Solaris realtime support -AC_CHECK_LIB(rt, sched_yield) - -AC_CHECK_FUNCS(vw_printw wcolor_set resizeterm wresize) - -dnl Check for libpthread(s) if we're not using Digital UNIX or FreeBSD. (On -dnl which the -pthread flag takes care of this.) -if test "$check_pthread" != no; then - AC_CHECK_LIB(pthread, pthread_create) - AC_CHECK_LIB(pthreads, pthread_create) -fi - -test -d /usr/kerberos/include && CPPFLAGS="$CPPFLAGS -I/usr/kerberos/include" - - -saved_CFLAGS="$CFLAGS" -CFLAGS="$CFLAGS" -dnl Check for libcitadel -AC_CHECK_HEADER(libcitadel.h, - [AC_CHECK_LIB(citadel, libcitadel_version_string, - [ - LIBS="-lcitadel $LIBS" - ], - [ - AC_MSG_ERROR(libcitadel was not found or is not usable. Please install libcitadel.) - ] - , - )], - [ - AC_MSG_ERROR(libcitadel.h was not found or is not usable. Please install libcitadel.) - ] -) - -CFLAGS="$saved_CFLAGS" - -saved_CFLAGS="$CFLAGS" -CFLAGS="$CFLAGS " -dnl Check for libcitadelclient -dnl AC_CHECK_HEADER(citadel_ipc.h, -dnl [AC_CHECK_LIB(citadelclient, libcitadelclient_version_string, -dnl [ -dnl LIBS="-lcitadelclient $LIBS " -dnl ], -dnl [ -dnl AC_MSG_ERROR(libcitadelclient was not found or is not usable. Please install libcitadelclient.) -dnl ] -dnl , -dnl )], -dnl [ -dnl AC_MSG_ERROR(citadel_ipc.h was not found or is not usable. Please install libcitadelclient.) -dnl ] -dnl ) -dnl -dnl CFLAGS="$saved_CFLAGS" - - -# The big search for OpenSSL -if test "$with_ssl" != "no"; then - saved_LIBS="$LIBS" - saved_LDFLAGS="$LDFLAGS" - saved_CFLAGS="$CFLAGS" - if test "x$prefix" != "xNONE"; then - tryssldir="$tryssldir $prefix" - fi - AC_CACHE_CHECK([for OpenSSL], ac_cv_openssldir, [ - for ssldir in $tryssldir "" /usr /usr/local/openssl /usr/lib/openssl /usr/local/ssl /usr/lib/ssl /usr/local /usr/pkg /opt /opt/openssl ; do - CFLAGS="$saved_CFLAGS" - LDFLAGS="$saved_LDFLAGS" - LIBS="$saved_LIBS -lssl -lcrypto" - - # Skip directories if they don't exist - if test ! -z "$ssldir" -a ! -d "$ssldir" ; then - continue; - fi - if test ! -z "$ssldir" -a "x$ssldir" != "x/usr"; then - # Try to use $ssldir/lib if it exists, otherwise - # $ssldir - if test -d "$ssldir/lib" ; then - LDFLAGS="-L$ssldir/lib $saved_LDFLAGS" - if test ! -z "$need_dash_r" ; then - LDFLAGS="-R$ssldir/lib $LDFLAGS" - fi - else - LDFLAGS="-L$ssldir $saved_LDFLAGS" - if test ! -z "$need_dash_r" ; then - LDFLAGS="-R$ssldir $LDFLAGS" - fi - fi - # Try to use $ssldir/include if it exists, otherwise - # $ssldir - if test -d "$ssldir/include" ; then - CFLAGS="-I$ssldir/include $saved_CFLAGS" - else - CFLAGS="-I$ssldir $saved_CFLAGS" - fi - fi - - # Basic test to check for compatible version and correct linking - # *does not* test for RSA - that comes later. - AC_TRY_RUN( - [ - #include - #include - int main(void) - { - char a[2048]; - memset(a, 0, sizeof(a)); - RAND_add(a, sizeof(a), sizeof(a)); - return(RAND_status() <= 0); - } - ], - [ - found_crypto=1 - break; - ], [] - ) - - if test ! -z "$found_crypto" ; then - break; - fi - done - - if test -z "$ssldir" ; then - ssldir="(system)" - fi - - if test ! -z "$found_crypto" ; then - ac_cv_openssldir=$ssldir - else - ac_cv_openssldir="no" - fi - ]) - LIBS="$saved_LIBS" - LDFLAGS="$saved_LDFLAGS" - CFLAGS="$saved_CFLAGS" - - if test "x$ac_cv_openssldir" != "xno" ; then - AC_DEFINE(HAVE_OPENSSL, [], [Define if you have OpenSSL.]) - LIBS="-lssl -lcrypto $LIBS" - dnl Need to recover ssldir - test above runs in subshell - ssldir=$ac_cv_openssldir - if test ! -z "$ssldir" -a "x$ssldir" != "x/usr" -a "x$ssldir" != "x(system)"; then - # Try to use $ssldir/lib if it exists, otherwise - # $ssldir - if test -d "$ssldir/lib" ; then - LDFLAGS="-L$ssldir/lib $saved_LDFLAGS" - if test ! -z "$need_dash_r" ; then - LDFLAGS="-R$ssldir/lib $LDFLAGS" - fi - else - LDFLAGS="-L$ssldir $saved_LDFLAGS" - if test ! -z "$need_dash_r" ; then - LDFLAGS="-R$ssldir $LDFLAGS" - fi - fi - # Try to use $ssldir/include if it exists, otherwise - # $ssldir - if test -d "$ssldir/include" ; then - CFLAGS="-I$ssldir/include $saved_CFLAGS" - else - CFLAGS="-I$ssldir $saved_CFLAGS" - fi - fi - fi -fi - - - - - - - -dnl Checks for header files. -AC_HEADER_DIRENT -AC_HEADER_STDC -AC_HEADER_SYS_WAIT - -dnl -dnl TODO: for the DB header checks, we should check whether the headers -dnl define db_env_create, somehow -dnl -AC_CHECK_HEADERS(dl.h fcntl.h limits.h malloc.h termios.h sys/ioctl.h sys/select.h sys/stat.h sys/time.h sys/prctl.h syslog.h unistd.h paths.h db.h db4/db.h pthread.h netinet/in.h arpa/nameser.h arpa/nameser_compat.h syscall.h sys/syscall.h) - -AC_CHECK_HEADER(resolv.h,AC_DEFINE(HAVE_RESOLV_H, [], [define this if you have the resolv.h header file.]),, -[#ifdef HAVE_SYS_TYPES_H -#include -#endif -#ifdef HAVE_NETINET_IN_H -#include -#endif -#ifdef HAVE_ARPA_NAMESER_H -#include -#endif]) - - -dnl Checks for typedefs, structures, and compiler characteristics. -AC_C_CONST -AC_TYPE_PID_T -AC_TYPE_SIZE_T -AC_HEADER_TIME - -dnl defined in acinclude.m4: -CIT_STRUCT_TM - -AC_CACHE_CHECK( - [for call semantics from getpwuid_r], - ac_cv_call_getpwuid_r, - [AC_TRY_COMPILE([#include -#include ], - [ - struct passwd pw, *pwp; - char pwbuf[64]; - uid_t uid; - - getpwuid_r(uid, &pw, pwbuf, sizeof(pwbuf), &pwp); - ], - ac_cv_call_getpwuid_r=yes, - ac_cv_call_getpwuid_r=no) - ]) - -if test $ac_cv_call_getpwuid_r = no; then - AC_DEFINE(SOLARIS_GETPWUID,[],[do we need to use solaris call syntax?]) - AC_DEFINE(F_UID_T, "%ld", [whats the matching format string for uid_t?]) - AC_DEFINE(F_PID_T, "%ld", [whats the matching format string for pid_t?]) - AC_DEFINE(F_XPID_T, "%lx", [whats the matching format string for xpid_t?]) -else - AC_DEFINE(F_UID_T, "%d", [whats the matching format string for uid_t?]) - AC_DEFINE(F_PID_T, "%d", [whats the matching format string for pid_t?]) - AC_DEFINE(F_XPID_T, "%x", [whats the matching format string for xpid_t?]) -fi - - -dnl Our own happy little check for the resolver library. - -case "`uname -a`" in - OpenBSD*) - echo "we don't need to check for resolv on openbsd" - ;; - FreeBSD*) - echo "we don't need to check for resolv on freeBSD" - ;; - *) - test -f /usr/local/lib/libresolv.a && LDFLAGS="$LDFLAGS -L/usr/local/lib" - AC_CHECK_LIB(resolv, res_query, - RESOLV="$RESOLV -lresolv", - [dnl Have to include resolv.h as res_query is sometimes defined as a macro - AC_MSG_CHECKING([for res_query in -lresolv (with resolv.h if present)]) - saved_libs="$LIBS" - LIBS="-lresolv $LIBS" - AC_TRY_LINK([ - #ifdef HAVE_RESOLV_H - #include - #endif], - [res_query(0,0,0,0,0)], - [AC_MSG_RESULT(yes) - have_res_query=yes], - [AC_MSG_RESULT(no) - AC_MSG_ERROR(libresolv was not found. Citadel requires the resolver library.) - ]) - ] - ) - ;; -esac - - - -dnl Checks for library functions. -AC_FUNC_GETPGRP -AC_PROG_GCC_TRADITIONAL -AC_TYPE_SIGNAL -AC_FUNC_VPRINTF -AC_CHECK_FUNCS(getspnam mkdir mkfifo mktime rmdir select socket strerror strcasecmp strncasecmp) - -dnl Now check for pthreads - -dnl On some platforms, AC_CHECK_FUNC[S] doesn't work for pthreads programs; -dnl we need to include pthread.h - -AC_CACHE_CHECK([for pthread_cancel], ac_cv_func_pthread_cancel, -[AC_TRY_LINK([#include ], -[ pthread_t thread; - - /* The GNU C library defines this for functions which it implements - to always fail with ENOSYS. Some functions are actually named - something starting with __ and the normal name is an alias. */ -#if defined (__stub_pthread_cancel) || defined (__stub___pthread_cancel) - choke me -#else - pthread_cancel(thread); -#endif], -ac_cv_func_pthread_cancel=yes, ac_cv_func_pthread_cancel=no)]) -if test "$ac_cv_func_pthread_cancel" = yes; then - AC_DEFINE(HAVE_PTHREAD_CANCEL, [], [define this if you have the pthread_cancel() function]) -fi - -AC_CACHE_CHECK([for pthread_create], ac_cv_func_pthread_create, -[AC_TRY_LINK([#include ], -[ /* The GNU C library defines this for functions which it implements - to always fail with ENOSYS. Some functions are actually named - something starting with __ and the normal name is an alias. */ -#if defined (__stub_pthread_cancel) || defined (__stub___pthread_cancel) - choke me -#else - pthread_create(NULL, NULL, NULL, NULL); -#endif], -ac_cv_func_pthread_create=yes, ac_cv_func_pthread_create=no)]) -if test "$ac_cv_func_pthread_create" = yes; then - test "$DATABASE" && TARGETS="client server utils" - if test "x$enable_threaded_client" != xno; then - AC_DEFINE(THREADED_CLIENT, [], [define this if you want to enable the multithreaded client]) - fi -fi - -AC_REPLACE_FUNCS(snprintf getutline) - -AC_CACHE_CHECK([the weather], ac_cv_weather, [ - sleep 1 - echo $ECHO_N "opening your window... $ECHO_C" >&6 - sleep 2 - month=`date | cut -f 2 -d ' '` - case $month in - Dec | Jan | Feb) - ac_cv_weather="it's cold!" - ;; - Mar | Apr) - ac_cv_weather="it's wet!" - ;; - Jul | Aug) - ac_cv_weather="it's hot!" - ;; - Oct | Nov) - ac_cv_weather="it's cool" - ;; - May | Jun | Sep | *) - ac_cv_weather="it's fine" - ;; - esac - ]) - - - - -AC_CACHE_CHECK([under the bed], ac_cv_under_the_bed, [ - number=`date | cut -c 19` - case $number in - 7) - ac_cv_under_the_bed="lunatics and monsters found" - ;; - *) - ac_cv_under_the_bed="dust bunnies found" - ;; - esac - ]) - - -dnl Done! Now write the Makefile and sysdep.h -AC_SUBST(RESOLV) -AC_SUBST(TARGETS) -AC_SUBST(DIFF) -AC_SUBST(PATCH) -AC_CONFIG_FILES([Makefile]) -AC_OUTPUT() - - -abs_srcdir="`cd $srcdir && pwd`" -abs_builddir="`pwd`" -if test "$abs_srcdir" != "$abs_builddir"; then - ln -sf $abs_srcdir/include $abs_builddir - ln -sf $abs_srcdir/Make_sources $abs_builddir - ln -sf $abs_srcdir/Make_modules $abs_builddir - for i in $abs_srcdir/*.h ; do - if test "$abs_srcdir/sysdep.h" != "$i"; then - ln -sf $i $abs_builddir - fi - done - for d in `/bin/ls $abs_srcdir/modules/`; do - (mkdir -p $abs_builddir/modules/$d) - done - if test -d "$abs_srcdir/user_modules/"; then - for d in `/bin/ls $abs_srcdir/user_modules/`; do - (mkdir -p $abs_builddir/user_modules/$d) - done - fi - mkdir -p $abs_builddir/utils - mkdir -p $abs_builddir/utillib - mkdir -p $abs_builddir/textclient -fi - -if test -n "$srcdir"; then - export srcdir=. -fi - - -echo ------------------------------------------------------------------------ -echo 'Character set conversion support:' $ok_iconv -echo -echo 'Note: if you are not using Linux, make sure you are using GNU make' -echo '(gmake) to compile Citadel.' -echo diff --git a/textclient/install-sh b/textclient/install-sh deleted file mode 100755 index ebc66913e..000000000 --- a/textclient/install-sh +++ /dev/null @@ -1,250 +0,0 @@ -#! /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=: - 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 diff --git a/textclient/src/ipc_c_tcp.c b/textclient/ipc_c_tcp.c similarity index 53% rename from textclient/src/ipc_c_tcp.c rename to textclient/ipc_c_tcp.c index 53b209321..93edebcdb 100644 --- a/textclient/src/ipc_c_tcp.c +++ b/textclient/ipc_c_tcp.c @@ -1,56 +1,20 @@ /* * Client-side IPC functions + * + * Copyright (c) 1987-2018 by the citadel.org team + * + * This program is open source software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 3. + * + * 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. */ -#include "sysdep.h" -#undef NDEBUG -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include "citadel_ipc.h" -#include "commands.h" -#include -#include -#include -#include -#include -#include -#include +#include "textclient.h" -#if TIME_WITH_SYS_TIME -# include -# include -#else -# if HAVE_SYS_TIME_H -# include -# else -# include -# endif -#endif - -#ifdef HAVE_TERMIOS_H -#include -#else -#include -#endif - -#ifdef HAVE_SYS_SELECT_H -#include -#endif /* Note that some of these functions may not work with multiple instances. */ diff --git a/textclient/ltmain.sh b/textclient/ltmain.sh deleted file mode 120000 index 41599586b..000000000 --- a/textclient/ltmain.sh +++ /dev/null @@ -1 +0,0 @@ -/usr/share/libtool/config/ltmain.sh \ No newline at end of file diff --git a/textclient/m4/libtool.m4 b/textclient/m4/libtool.m4 deleted file mode 120000 index f3504e92b..000000000 --- a/textclient/m4/libtool.m4 +++ /dev/null @@ -1 +0,0 @@ -/usr/share/aclocal/libtool.m4 \ No newline at end of file diff --git a/textclient/m4/ltoptions.m4 b/textclient/m4/ltoptions.m4 deleted file mode 120000 index b81279e34..000000000 --- a/textclient/m4/ltoptions.m4 +++ /dev/null @@ -1 +0,0 @@ -/usr/share/aclocal/ltoptions.m4 \ No newline at end of file diff --git a/textclient/m4/ltsugar.m4 b/textclient/m4/ltsugar.m4 deleted file mode 120000 index 4d76cc709..000000000 --- a/textclient/m4/ltsugar.m4 +++ /dev/null @@ -1 +0,0 @@ -/usr/share/aclocal/ltsugar.m4 \ No newline at end of file diff --git a/textclient/m4/ltversion.m4 b/textclient/m4/ltversion.m4 deleted file mode 120000 index 5eb474fd2..000000000 --- a/textclient/m4/ltversion.m4 +++ /dev/null @@ -1 +0,0 @@ -/usr/share/aclocal/ltversion.m4 \ No newline at end of file diff --git a/textclient/m4/lt~obsolete.m4 b/textclient/m4/lt~obsolete.m4 deleted file mode 120000 index de0b9f949..000000000 --- a/textclient/m4/lt~obsolete.m4 +++ /dev/null @@ -1 +0,0 @@ -/usr/share/aclocal/lt~obsolete.m4 \ No newline at end of file diff --git a/textclient/src/md5.c b/textclient/md5.c similarity index 95% rename from textclient/src/md5.c rename to textclient/md5.c index 6e50570cc..2f3319922 100644 --- a/textclient/src/md5.c +++ b/textclient/md5.c @@ -15,11 +15,7 @@ * will fill a supplied 16-byte array with the digest. */ -#include -#include -#include -#include /* for memcpy() */ -#include "md5.h" +#include "textclient.h" #ifndef HIGHFIRST #define byteReverse(buf, len) /* Nothing */ @@ -32,11 +28,11 @@ void byteReverse(unsigned char *buf, unsigned longs); */ void byteReverse(unsigned char *buf, unsigned longs) { - cit_uint32_t t; + uint32_t t; do { - t = (cit_uint32_t) ((unsigned) buf[3] << 8 | buf[2]) << 16 | + t = (uint32_t) ((unsigned) buf[3] << 8 | buf[2]) << 16 | ((unsigned) buf[1] << 8 | buf[0]); - *(cit_uint32_t *) buf = t; + *(uint32_t *) buf = t; buf += 4; } while (--longs); } @@ -66,12 +62,12 @@ void MD5Init(struct MD5Context *ctx) */ void MD5Update(struct MD5Context *ctx, unsigned char const *buf, unsigned len) { - cit_uint32_t t; + uint32_t t; /* Update bitcount */ t = ctx->bits[0]; - if ((ctx->bits[0] = t + ((cit_uint32_t) len << 3)) < t) + if ((ctx->bits[0] = t + ((uint32_t) len << 3)) < t) ctx->bits[1]++; /* Carry from low to high */ ctx->bits[1] += len >> 29; @@ -144,10 +140,10 @@ void MD5Final(unsigned char digest[16], struct MD5Context *ctx) byteReverse(ctx->in, 14); /* Append length in bits and transform */ - ((cit_uint32_t *) ctx->in)[14] = ctx->bits[0]; - ((cit_uint32_t *) ctx->in)[15] = ctx->bits[1]; + ((uint32_t *) ctx->in)[14] = ctx->bits[0]; + ((uint32_t *) ctx->in)[15] = ctx->bits[1]; - MD5Transform(ctx->buf, (cit_uint32_t *) ctx->in); + MD5Transform(ctx->buf, (uint32_t *) ctx->in); byteReverse((unsigned char *) ctx->buf, 4); memcpy(digest, ctx->buf, 16); memset(ctx, 0, sizeof(ctx)); /* In case it's sensitive */ @@ -177,9 +173,9 @@ void MD5Final(unsigned char digest[16], struct MD5Context *ctx) * reflect the addition of 16 longwords of new data. MD5Update blocks * the data and converts bytes into longwords for this routine. */ -void MD5Transform(cit_uint32_t buf[4], cit_uint32_t const in[16]) +void MD5Transform(uint32_t buf[4], uint32_t const in[16]) { - register cit_uint32_t a, b, c, d; + register uint32_t a, b, c, d; a = buf[0]; b = buf[1]; diff --git a/textclient/src/messages.c b/textclient/messages.c similarity index 98% rename from textclient/src/messages.c rename to textclient/messages.c index aeb5a4e00..fe975c5e7 100644 --- a/textclient/src/messages.c +++ b/textclient/messages.c @@ -12,44 +12,7 @@ * GNU General Public License for more details. */ -#include "sysdep.h" -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#if TIME_WITH_SYS_TIME -# include -# include -#else -# if HAVE_SYS_TIME_H -# include -# else -# include -# endif -#endif - -#ifdef HAVE_PTHREAD_H -#include -#endif - -#include -#include -#include "citadel_ipc.h" -#include "citadel_decls.h" -#include "messages.h" -#include "commands.h" -#include "tuiconfig.h" -#include "rooms.h" -#include "screen.h" +#include "textclient.h" #define MAXWORDBUF SIZ #define NO_REPLY_TO "nobody ... xxxxxx" @@ -257,7 +220,6 @@ void citedit(FILE *fp) finished = 0; prev = (appending ? 13 : (-1)); strcpy(wordbuf, ""); - async_ka_start(); do { a = inkey(); if (a == 10) @@ -342,7 +304,6 @@ void citedit(FILE *fp) } prev = a; } while (finished == 0); - async_ka_end(); /* write the buffer back to disk */ fseek(fp, 0L, 0); @@ -654,6 +615,11 @@ int read_message(CtdlIPC *ipc, format_type = 1; } + /* Render text/x-markdown as plain text */ + if (!strcasecmp(message->content_type, "text/x-markdown")) { + format_type = 1; + } + /* Extract URL's */ static char *urlprefixes[] = { "http://", diff --git a/textclient/missing b/textclient/missing deleted file mode 100755 index 0a7fb5a2a..000000000 --- a/textclient/missing +++ /dev/null @@ -1,283 +0,0 @@ -#! /bin/sh -# Common stub for a few missing GNU programs while installing. -# Copyright 1996, 1997, 1999, 2000 Free Software Foundation, Inc. -# Originally by Fran,cois 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. - -# As a special exception to the GNU General Public License, if you -# distribute this file as part of a program that contains a -# configuration script generated by Autoconf, you may include it under -# the same distribution terms that you use for the rest of that program. - -if test $# -eq 0; then - echo 1>&2 "Try \`$0 --help' for more information" - exit 1 -fi - -run=: - -# In the cases where this matters, `missing' is being run in the -# srcdir already. -if test -f configure.ac; then - configure_ac=configure.ac -else - configure_ac=configure.in -fi - -case "$1" in ---run) - # Try to run requested program, and just exit if it succeeds. - run= - shift - "$@" && exit 0 - ;; -esac - -# If it does not exist, or fails to run (possibly an outdated version), -# try to emulate it. -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 - --run try to run the given command, and emulate it if it fails - -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 - help2man touch the output file - lex create \`lex.yy.c', if possible, from existing .c - makeinfo touch the output file - tar try tar, gnutar, gtar, then tar without non-portable flags - yacc create \`y.tab.[ch]', if possible, from existing .[ch]" - ;; - - -v|--v|--ve|--ver|--vers|--versi|--versio|--version) - echo "missing 0.3 - GNU automake" - ;; - - -*) - 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_ac}'. 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_ac}'. 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_ac}'. 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_ac}` - 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_ac}'. - 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 - ;; - - help2man) - echo 1>&2 "\ -WARNING: \`$1' is missing on your system. You should only need it if - you modified a dependency of a manual page. You may need the - \`Help2man' package in order for those modifications to take - effect. You can get \`Help2man' from any GNU archive site." - - file=`echo "$*" | sed -n 's/.*-o \([^ ]*\).*/\1/p'` - if test -z "$file"; then - file=`echo "$*" | sed -n 's/.*--output=\([^ ]*\).*/\1/p'` - fi - if [ -f "$file" ]; then - touch $file - else - test -z "$file" || exec >$file - echo ".ab help2man is required to generate this page" - exit 1 - fi - ;; - - makeinfo) - if test -z "$run" && (makeinfo --version) > /dev/null 2>&1; then - # We have makeinfo, but it failed. - exit 1 - fi - - 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 - ;; - - tar) - shift - if test -n "$run"; then - echo 1>&2 "ERROR: \`tar' requires --run" - exit 1 - fi - - # We have already tried tar in the generic part. - # Look for gnutar/gtar before invocation to avoid ugly error - # messages. - if (gnutar --version > /dev/null 2>&1); then - gnutar ${1+"$@"} && exit 0 - fi - if (gtar --version > /dev/null 2>&1); then - gtar ${1+"$@"} && exit 0 - fi - firstarg="$1" - if shift; then - case "$firstarg" in - *o*) - firstarg=`echo "$firstarg" | sed s/o//` - tar "$firstarg" ${1+"$@"} && exit 0 - ;; - esac - case "$firstarg" in - *h*) - firstarg=`echo "$firstarg" | sed s/h//` - tar "$firstarg" ${1+"$@"} && exit 0 - ;; - esac - fi - - echo 1>&2 "\ -WARNING: I can't seem to be able to run \`tar' with the given arguments. - You may want to install GNU tar or Free paxutils, or check the - command line arguments." - exit 1 - ;; - - *) - 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 diff --git a/textclient/mkinstalldirs b/textclient/mkinstalldirs deleted file mode 100755 index f945dbf2b..000000000 --- a/textclient/mkinstalldirs +++ /dev/null @@ -1,38 +0,0 @@ -#! /bin/sh -# mkinstalldirs --- make directory hierarchy -# Author: Noah Friedman -# Created: 1993-05-16 -# Public domain - -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" 1>&2 - - mkdir "$pathcomp" || lasterr=$? - - if test ! -d "$pathcomp"; then - errstatus=$lasterr - fi - fi - - pathcomp="$pathcomp/" - done -done - -exit $errstatus - -# mkinstalldirs ends here diff --git a/textclient/src/rooms.c b/textclient/rooms.c similarity index 98% rename from textclient/src/rooms.c rename to textclient/rooms.c index 19d321bb4..0bd1a5bd3 100644 --- a/textclient/src/rooms.c +++ b/textclient/rooms.c @@ -12,27 +12,7 @@ * GNU General Public License for more details. */ -#include "sysdep.h" -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include "citadel_ipc.h" -#include "citadel_decls.h" -#include "rooms.h" -#include "commands.h" -#include "messages.h" -#include "tuiconfig.h" -#include "screen.h" +#include "textclient.h" #define IFNEXPERT if ((userflags&US_EXPERT)==0) diff --git a/textclient/src/routines.c b/textclient/routines.c similarity index 95% rename from textclient/src/routines.c rename to textclient/routines.c index 5e6e22bfc..f82836c30 100644 --- a/textclient/src/routines.c +++ b/textclient/routines.c @@ -12,46 +12,7 @@ * GNU General Public License for more details. */ -#include "sysdep.h" -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#if TIME_WITH_SYS_TIME -# include -# include -#else -# if HAVE_SYS_TIME_H -# include -# else -# include -# endif -#endif - -#ifdef HAVE_LIMITS_H -#include -#endif - -#include -#include "citadel_ipc.h" -#include "screen.h" - -#define ROUTINES_C - -#include "routines.h" -#include "commands.h" -#include "citadel_decls.h" -#include "routines2.h" -#include "tuiconfig.h" +#include "textclient.h" #define IFAIDE if(axlevel>=AxAideU) #define IFNAIDE if (axlevel -#include -#include -#include -#include -#include -#include -#include -#include - -#if TIME_WITH_SYS_TIME -# include -# include -#else -# if HAVE_SYS_TIME_H -# include -# else -# include -# endif -#endif - -#include -#include -#include -#include -#include -#include "sysdep.h" -#include "citadel_ipc.h" -#include "citadel_decls.h" -#include "routines2.h" -#include "routines.h" -#include "commands.h" -#include "screen.h" +#include "textclient.h" /* work around solaris include files */ #ifdef reg diff --git a/textclient/src/screen.c b/textclient/screen.c similarity index 92% rename from textclient/src/screen.c rename to textclient/screen.c index f4cfc9460..cd1d52632 100644 --- a/textclient/src/screen.c +++ b/textclient/screen.c @@ -1,7 +1,7 @@ /* * Screen output handling * - * Copyright (c) 1987-2016 by the citadel.org team + * Copyright (c) 1987-2018 by the citadel.org team * * This program is open source software; you can redistribute it and/or modify * it under the terms of the GNU General Public License version 3. @@ -12,22 +12,8 @@ * GNU General Public License for more details. */ +#include "textclient.h" -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include "sysdep.h" -#include -#include "citadel_ipc.h" -#include "citadel_decls.h" -#include "commands.h" -#include "screen.h" int enable_status_line = 0; char status_line[1024] = " "; @@ -230,7 +216,7 @@ static volatile int caught_sigwinch = 0; * scr_winch() handles window size changes from SIGWINCH * resizes all our windows for us */ -RETSIGTYPE scr_winch(int signum) +sighandler_t scr_winch(int signum) { /* if we receive this signal, we must be running * in a terminal that supports resizing. diff --git a/textclient/scripts/mk_svn_revision.sh b/textclient/scripts/mk_svn_revision.sh deleted file mode 100755 index 144ffa4ab..000000000 --- a/textclient/scripts/mk_svn_revision.sh +++ /dev/null @@ -1,78 +0,0 @@ -#!/bin/sh -# -# Script to generate svn_revision.c -# - -ECHO=/usr/bin/printf - - -SCRIPT_DIR=`dirname $0` -SRC_DIR=`dirname $SCRIPT_DIR` -CUR_DIR=`pwd` -C_FILE="$CUR_DIR/svn_revision.c" -H_FILE="$CUR_DIR/svn_revision.h" - -# determine if this code base came from subversion. -if test -d $SRC_DIR/.svn ; then - echo "have subversion repository" - SVNVERSION=`which svnversion` - if test -x $SVNVERSION ; then - echo "have svnversion at $SVNVERSION" - BUILD=`svnversion -n .` - echo "This code base svn-revision: $BUILD" - CAN_BUILD_SVN_REVISION="yes" - fi -else - if test -d $SRC_DIR/../.git ; then - echo "have Git repository." - BUILD=`/usr/bin/git log -1 --pretty=%h . ` - echo "This code base git-revision: $BUILD" - CAN_BUILD_SVN_REVISION="yes" - else - if test -f $C_FILE; then - exit - fi - fi -fi - -if [ "$CAN_BUILD_SVN_REVISION" = "yes" ] ; then - -cat < $C_FILE -/* - * Subversion / GIT revision functions - * - * Autogenerated at make/release time - * - * Do not modify this file - * - */ - -const char *svn_revision (void) -{ - const char *SVN_Version = "$BUILD"; - return SVN_Version; -} -EOF - -elif test ! -f $C_FILE ; then - -cat < $C_FILE -/* - * Subversion / GIT revision functions - * - * Autogenerated at make time - * - * There should have been one with your source distribution - * - * Do not modify this file - * - */ - -const char *svn_revision (void) -{ - const char *SVN_Version = "(unknown)"; - return SVN_Version; -} -EOF - -fi diff --git a/textclient/src/ecrash.c b/textclient/src/ecrash.c deleted file mode 100644 index a43f1b6ce..000000000 --- a/textclient/src/ecrash.c +++ /dev/null @@ -1,516 +0,0 @@ -/* - * author: David Frascone - * - * eCrash Implementation - * - * eCrash will allow you to capture stack traces in the - * event of a crash, and write those traces to disk, stdout, - * or any other file handle. - * - * modified to integrate closer into citadel by Wilfried Goesgens - * - * vim: ts=4 - * - * This program is open source 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 3 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#include "sysdep.h" -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include "ecrash.h" - -#define NIY() printf("function not implemented yet!\n"); -#ifdef HAVE_BACKTRACE -#include -static eCrashParameters gbl_params; - -static int gbl_backtraceEntries; -static void **gbl_backtraceBuffer; -static char **gbl_backtraceSymbols; -static int gbl_backtraceDoneFlag = 0; - -static void *stack_frames[50]; -static size_t size, NThread; -static char **strings; - -/* - * Private structures for our thread list - */ -typedef struct thread_list_node{ - char *threadName; - pthread_t thread; - int backtraceSignal; - sighandler_t oldHandler; - struct thread_list_node *Next; -} ThreadListNode; - -static pthread_mutex_t ThreadListMutex = PTHREAD_MUTEX_INITIALIZER; -static ThreadListNode *ThreadList = NULL; - -/********************************************************************* - ********************************************************************* - ** P R I V A T E F U N C T I O N S - ********************************************************************* - ********************************************************************/ - - -/*! - * Insert a node into our threadList - * - * @param name Text string indicating our thread - * @param thread Our Thread Id - * @param signo Signal to create backtrace with - * @param old_handler Our old handler for signo - * - * @returns zero on success - */ -static int addThreadToList(char *name, pthread_t thread,int signo, - sighandler_t old_handler) -{ - ThreadListNode *node; - - node = malloc(sizeof(ThreadListNode)); - if (!node) return -1; - - DPRINTF(ECRASH_DEBUG_VERBOSE, - "Adding thread 0x%08x (%s)\n", (unsigned int)thread, name); - node->threadName = strdup(name); - node->thread = thread; - node->backtraceSignal = signo; - node->oldHandler = old_handler; - - /* And, add it to the list */ - pthread_mutex_lock(&ThreadListMutex); - node->Next = ThreadList; - ThreadList = node; - pthread_mutex_unlock(&ThreadListMutex); - - return 0; - -} // addThreadToList - -/*! - * Remove a node from our threadList - * - * @param thread Our Thread Id - * - * @returns zero on success - */ -static int removeThreadFromList(pthread_t thread) -{ - ThreadListNode *Probe, *Prev=NULL; - ThreadListNode *Removed = NULL; - - DPRINTF(ECRASH_DEBUG_VERBOSE, - "Removing thread 0x%08x from list . . .\n", (unsigned int)thread); - pthread_mutex_lock(&ThreadListMutex); - for (Probe=ThreadList;Probe != NULL; Probe = Probe->Next) { - if (Probe->thread == thread) { - // We found it! Unlink it and move on! - Removed = Probe; - if (Prev == NULL) { // head of list - ThreadList = Probe->Next; - } else { - // Prev != null, so we need to link around ourselves. - Prev->Next = Probe->Next; - } - Removed->Next = NULL; - break; - } - - Prev = Probe; - } - pthread_mutex_unlock(&ThreadListMutex); - - // Now, if something is in Removed, free it, and return success - if (Removed) { - DPRINTF(ECRASH_DEBUG_VERBOSE, - " Found %s -- removing\n", Removed->threadName); - // Reset the signal handler - signal(Removed->backtraceSignal, Removed->oldHandler); - - // And free the allocated memory - free (Removed->threadName); - free (Removed); - - return 0; - } else { - DPRINTF(ECRASH_DEBUG_VERBOSE, - " Not Found\n"); - return -1; // Not Found - } -} // removeThreadFromList - -/*! - * Print out a line of output to all our destinations - * - * One by one, output a line of text to all of our output destinations. - * - * Return failure if we fail to output to any of them. - * - * @param format Normal printf style vararg format - * - * @returns nothing// bytes written, or error on failure. - */ -static void outputPrintf(char *format, ...) -{ - va_list ap; - - va_start(ap, format); - - vsyslog(LOG_CRIT|LOG_NDELAY|LOG_MAIL, format, ap); -} // outputPrintf - - - -/*! - * Dump our backtrace into a global location - * - * This function will dump out our backtrace into our - * global holding area. - * - */ -static void createGlobalBacktrace( void ) -{ - - size = backtrace(stack_frames, sizeof(stack_frames) / sizeof(void*)); - for (NThread = 0; NThread < size; NThread++) - { - syslog(LOG_CRIT|LOG_NDELAY|LOG_MAIL, "RAW: %p ", stack_frames[NThread]); - } - strings = backtrace_symbols(stack_frames, size); - for (NThread = 0; NThread < size; NThread++) { - if (strings != NULL) { - syslog(LOG_CRIT|LOG_NDELAY|LOG_MAIL, "RAW: %p ", strings[NThread]); - } - } -} /* createGlobalBacktrace */ -static void outputRawtrace( void ) -{ - - size = backtrace(stack_frames, sizeof(stack_frames) / sizeof(void*)); - for (NThread = 0; NThread < size; NThread++) - { - syslog(LOG_CRIT|LOG_NDELAY|LOG_MAIL, "RAW: %p ", stack_frames[NThread]); - } -} /* createGlobalBacktrace */ - -/*! - * Print out (to all the fds, etc), or global backtrace - */ -static void outputGlobalBacktrace ( void ) -{ - int i; - - for (i=0; i < gbl_backtraceEntries; i++) { - if (gbl_backtraceSymbols != FALSE) { - outputPrintf("* Frame %02x: %s\n", - i, gbl_backtraceSymbols[i]); - } else { - outputPrintf("* Frame %02x: %p\n", i, - gbl_backtraceBuffer[i]); - } - } -} // outputGlobalBacktrace - -/*! - * Output our current stack's backtrace - */ -static void outputBacktrace( void ) -{ - createGlobalBacktrace(); - outputGlobalBacktrace(); -} /* outputBacktrace */ - -static void outputBacktraceThreads( void ) -{ - ThreadListNode *probe; - int i; - - // When we're backtracing, don't worry about the mutex . . hopefully - // we're in a safe place. - - for (probe=ThreadList; probe; probe=probe->Next) { - gbl_backtraceDoneFlag = 0; - pthread_kill(probe->thread, probe->backtraceSignal); - for (i=0; i < gbl_params.threadWaitTime; i++) { - if (gbl_backtraceDoneFlag) - break; - sleep(1); - } - if (gbl_backtraceDoneFlag) { - outputPrintf("* Backtrace of \"%s\" (0x%08x)\n", - probe->threadName, (unsigned int)probe->thread); - outputGlobalBacktrace(); - } else { - outputPrintf("* Error: unable to get backtrace of \"%s\" (0x%08x)\n", - probe->threadName, (unsigned int)probe->thread); - } - outputPrintf("*\n"); - } -} // outputBacktraceThreads - - -/*! - * Handle signals (crash signals) - * - * This function will catch all crash signals, and will output the - * crash dump. - * - * It will physically write (and sync) the current thread's information - * before it attempts to send signals to other threads. - * - * @param signum Signal received. - */ -static void crash_handler(int signo) -{ - outputRawtrace(); - outputPrintf("*********************************************************\n"); - outputPrintf("* eCrash Crash Handler\n"); - outputPrintf("*********************************************************\n"); - outputPrintf("*\n"); - outputPrintf("* Got a crash! signo=%d\n", signo); - outputPrintf("*\n"); - outputPrintf("* Offending Thread's Backtrace:\n"); - outputPrintf("*\n"); - outputBacktrace(); - outputPrintf("*\n"); - - if (gbl_params.dumpAllThreads != FALSE) { - outputBacktraceThreads(); - } - - outputPrintf("*\n"); - outputPrintf("*********************************************************\n"); - outputPrintf("* eCrash Crash Handler\n"); - outputPrintf("*********************************************************\n"); - - exit(signo); -} // crash_handler - -/*! - * Handle signals (bt signals) - * - * This function shoudl be called to generate a crashdump into our - * global area. Once the dump has been completed, this function will - * return after tickling a global. Since mutexes are not async - * signal safe, the main thread, after signaling us to generate our - * own backtrace, will sleep for a few seconds waiting for us to complete. - * - * @param signum Signal received. - */ -static void bt_handler(int signo) -{ - createGlobalBacktrace(); - gbl_backtraceDoneFlag=1; -} // bt_handler - -/*! - * Validate a passed-in symbol table - * - * For now, just print it out (if verbose), and make sure it's - * sorted and none of the pointers are zero. - */ -static int ValidateSymbolTable( void ) -{ - int i; - int rc=0; - unsigned long lastAddress =0; - - // Get out of here if the table is empty - if (!gbl_params.symbolTable) return 0; - - // Dump it in verbose mode - DPRINTF(ECRASH_DEBUG_VERBOSE, - "Symbol Table Provided with %d symbols\n", - gbl_params.symbolTable->numSymbols); - for (i=0; i < gbl_params.symbolTable->numSymbols; i++){ - // Dump it in verbose mode - DPRINTF(ECRASH_DEBUG_VERBOSE, - "%-30s %p\n", - gbl_params.symbolTable->symbols[i].function, - gbl_params.symbolTable->symbols[i].address); - if (lastAddress > - (unsigned long)gbl_params.symbolTable->symbols[i].address) { - DPRINTF(ECRASH_DEBUG_ERROR, - "Error: symbol table is not sorted (last=%p, current=%p)\n", - (void *)lastAddress, - gbl_params.symbolTable->symbols[i].address); - rc = -1; - } - - } // for - - return rc; - -} // ValidateSymbolTable - -/********************************************************************* - ********************************************************************* - ** P U B L I C F U N C T I O N S - ********************************************************************* - ********************************************************************/ - -/*! - * Initialize eCrash. - * - * This function must be called before calling any other eCrash - * functions. It sets up the global behavior of the system, and - * registers the calling thread for crash dumps. - * - * @param params Our input parameters. The passed in structure will be copied. - * - * @return Zero on success. - */ -int eCrash_Init(eCrashParameters *params) -{ - int sigIndex; - int ret = 0; -#ifdef DO_SIGNALS_RIGHT - sigset_t blocked; - struct sigaction act; -#endif - - DPRINTF(ECRASH_DEBUG_VERY_VERBOSE,"Init Starting params = %p\n", params); - - // Allocate our backtrace area - gbl_backtraceBuffer = malloc(sizeof(void *) * (params->maxStackDepth+5)); - -#ifdef DO_SIGNALS_RIGHT - sigemptyset(&blocked); - act.sa_sigaction = crash_handler; - act.sa_mask = blocked; - act.sa_flags = SA_SIGINFO; -#endif - - if (params != NULL) { - // Make ourselves a global copy of params. - gbl_params = *params; - gbl_params.filename = strdup(params->filename); - - // Set our defaults, if they weren't specified - if (gbl_params.maxStackDepth == 0 ) - gbl_params.maxStackDepth = ECRASH_DEFAULT_STACK_DEPTH; - - if (gbl_params.defaultBacktraceSignal == 0 ) - gbl_params.defaultBacktraceSignal = ECRASH_DEFAULT_BACKTRACE_SIGNAL; - - if (gbl_params.threadWaitTime == 0 ) - gbl_params.threadWaitTime = ECRASH_DEFAULT_THREAD_WAIT_TIME; - - if (gbl_params.debugLevel == 0 ) - gbl_params.debugLevel = ECRASH_DEBUG_DEFAULT; - - // Copy our symbol table - if (gbl_params.symbolTable) { - DPRINTF(ECRASH_DEBUG_VERBOSE, - "symbolTable @ %p -- %d symbols\n", gbl_params.symbolTable, - gbl_params.symbolTable->numSymbols); - // Make a copy of our symbol table - gbl_params.symbolTable = malloc(sizeof(eCrashSymbolTable)); - memcpy(gbl_params.symbolTable, params->symbolTable, - sizeof(eCrashSymbolTable)); - - // Now allocate / copy the actual table. - gbl_params.symbolTable->symbols = malloc(sizeof(eCrashSymbol) * - gbl_params.symbolTable->numSymbols); - memcpy(gbl_params.symbolTable->symbols, - params->symbolTable->symbols, - sizeof(eCrashSymbol) * gbl_params.symbolTable->numSymbols); - - ValidateSymbolTable(); - } - - // And, finally, register for our signals - for (sigIndex=0; gbl_params.signals[sigIndex] != 0; sigIndex++) { - DPRINTF(ECRASH_DEBUG_VERY_VERBOSE, - " Catching signal[%d] %d\n", sigIndex, - gbl_params.signals[sigIndex]); - - // I know there's a better way to catch signals with pthreads. - // I'll do it later TODO - signal(gbl_params.signals[sigIndex], crash_handler); - } - } else { - DPRINTF(ECRASH_DEBUG_ERROR, " Error: Null Params!\n"); - ret = -1; - } - DPRINTF(ECRASH_DEBUG_VERY_VERBOSE, "Init Complete ret=%d\n", ret); - return ret; -} /* eCrash_Init */ - -/*! - * UnInitialize eCrash. - * - * This function may be called to de-activate eCrash, release the - * signal handlers, and free any memory allocated by eCrash. - * - * @return Zero on success. - */ -int eCrash_Uninit( void ) -{ - NIY(); - - return 0; -} /* eCrash_Uninit */ - -/*! - * Register a thread for backtracing on crash. - * - * This function must be called by any thread wanting it's stack - * dumped in the event of a crash. The thread my specify what - * signal should be used, or the default, SIGUSR1 will be used. - * - * @param signo Signal to use to generate dump (default: SIGUSR1) - * - * @return Zero on success. - */ -int eCrash_RegisterThread(char *name, int signo) -{ - sighandler_t old_handler; - - // Register for our signal - if (signo == 0) { - signo = gbl_params.defaultBacktraceSignal; - } - - old_handler = signal(signo, bt_handler); - return addThreadToList(name, pthread_self(), signo, old_handler); - -} /* eCrash_RegisterThread */ - -/*! - * Un-register a thread for stack dumps. - * - * This function may be called to un-register any previously - * registered thread. - * - * @return Zero on success. - */ -int eCrash_UnregisterThread( void ) -{ - return removeThreadFromList(pthread_self()); -} /* eCrash_UnregisterThread */ - -#endif diff --git a/textclient/src/include/citadel_decls.h b/textclient/src/include/citadel_decls.h deleted file mode 100644 index 19895e626..000000000 --- a/textclient/src/include/citadel_decls.h +++ /dev/null @@ -1,32 +0,0 @@ -extern char fullname[USERNAME_SIZE]; -extern unsigned room_flags; -extern char room_name[ROOMNAMELEN]; -extern struct CtdlServInfo serv_info; -extern char axlevel; -extern char is_room_aide; -extern unsigned userflags; -extern char sigcaught; -extern char editor_paths[MAX_EDITORS][SIZ]; -extern char printcmd[SIZ]; -extern char imagecmd[SIZ]; -extern char have_xterm; -extern char rc_username[USERNAME_SIZE]; -extern char rc_password[32]; -extern char rc_floor_mode; -extern time_t rc_idle_threshold; -#ifdef HAVE_OPENSSL -extern char rc_encrypt; /* from the citadel.rc file */ -extern char arg_encrypt; /* from the command line */ -#endif -#if defined(HAVE_CURSES_H) && !defined(DISABLE_CURSES) -extern char rc_screen; -extern char arg_screen; -#endif -extern char rc_alt_semantics; -extern char instant_msgs; -void ctdl_logoff(char *file, int line, CtdlIPC *ipc, int code); -#define logoff(ipc, code) ctdl_logoff(__FILE__, __LINE__, (ipc), (code)) -void formout(CtdlIPC *ipc, char *name); -void sighandler(int which_sig); -extern int secure; -void remove_march(char *roomname, int floornum); diff --git a/textclient/src/include/client_chat.h b/textclient/src/include/client_chat.h deleted file mode 100644 index 3ea65fc7b..000000000 --- a/textclient/src/include/client_chat.h +++ /dev/null @@ -1,18 +0,0 @@ -/* - * Copyright (c) 1987-2012 by the citadel.org team - * - * This program is open source software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License version 3. - * - * 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. - */ - -void chatmode(CtdlIPC *ipc); -void page_user(CtdlIPC *ipc); -void quiet_mode(CtdlIPC *ipc); -void stealth_mode(CtdlIPC *ipc); - -extern char last_paged[]; diff --git a/textclient/src/include/client_passwords.h b/textclient/src/include/client_passwords.h deleted file mode 100644 index 2b0d0d689..000000000 --- a/textclient/src/include/client_passwords.h +++ /dev/null @@ -1,29 +0,0 @@ -/* - * Copyright (c) 1987-2012 by the citadel.org team - * - * This program is open source software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License version 3. - * - * 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. - */ - - -void determine_pwfilename(char *pwfile, size_t n); -void get_stored_password( - char *host, - char *port, - char *username, - char *password); -void set_stored_password( - char *host, - char *port, - char *username, - char *password); -void offer_to_remember_password(CtdlIPC *ipc, - char *host, - char *port, - char *username, - char *password); diff --git a/textclient/src/include/commands.h b/textclient/src/include/commands.h deleted file mode 100644 index 9ec98a986..000000000 --- a/textclient/src/include/commands.h +++ /dev/null @@ -1,77 +0,0 @@ -/* - * - * Copyright (c) 1987-2012 by the citadel.org team - * - * This program is open source software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License version 3. - * - * 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. - */ - -/* - * Colors for color() command - */ -#define DIM_BLACK 0 -#define DIM_RED 1 -#define DIM_GREEN 2 -#define DIM_YELLOW 3 -#define DIM_BLUE 4 -#define DIM_MAGENTA 5 -#define DIM_CYAN 6 -#define DIM_WHITE 7 -#define BRIGHT_BLACK 8 -#define BRIGHT_RED 9 -#define BRIGHT_GREEN 10 -#define BRIGHT_YELLOW 11 -#define BRIGHT_BLUE 12 -#define BRIGHT_MAGENTA 13 -#define BRIGHT_CYAN 14 -#define BRIGHT_WHITE 15 -#define COLOR_PUSH 16 /* Save current color */ -#define COLOR_POP 17 /* Restore saved color */ -#define ORIGINAL_PAIR -1 /* Default terminal colors */ - -/* - * declarations - */ -void load_command_set(void); -void stty_ctdl(int cmd); -void newprompt(char *prompt, char *str, int len); -void strprompt(char *prompt, char *str, int len); -int boolprompt(char *prompt, int prev_val); -int intprompt(char *prompt, int ival, int imin, int imax); -int fmout(int width, FILE *fpin, char *text, FILE *fpout, int subst); -int getcmd(CtdlIPC *ipc, char *argbuf); -void display_help(CtdlIPC *ipc, char *name); -void color(int colornum); -void cls(int colornum); -void send_ansi_detect(void); -void look_for_ansi(void); -int inkey(void); -void set_keepalives(int s); -extern int enable_color; -int yesno(void); -int yesno_d(int d); -void keyopt(char *); -char keymenu(char *menuprompt, char *menustring); -void async_ka_start(void); -void async_ka_end(void); -int checkpagin(int lp, unsigned int pagin, unsigned int height); -char was_a_key_pressed(void); - -#ifdef __GNUC__ -void pprintf(const char *format, ...) __attribute__((__format__(__printf__,1,2))); -#else -void pprintf(const char *format, ...); -#endif - - - -extern char rc_url_cmd[SIZ]; -extern char rc_open_cmd[SIZ]; -extern char rc_gotmail_cmd[SIZ]; -extern int lines_printed; -extern int rc_remember_passwords; diff --git a/textclient/src/include/ecrash.h b/textclient/src/include/ecrash.h deleted file mode 100644 index e9fae9639..000000000 --- a/textclient/src/include/ecrash.h +++ /dev/null @@ -1,185 +0,0 @@ -/* - * eCrash.h - * David Frascone - * - * eCrash types and prototypes. - * - * vim: ts=4 - */ - -#ifndef _ECRASH_H_ -#define _ECRASH_H_ - -#include -#include - -typedef void (*sighandler_t)(int); - -typedef long BOOL; - -#define MAX_LINE_LEN 256 - -#ifndef TRUE -#define TRUE 1 -#define FALSE 0 -#define BOOL int -#endif - -#define ECRASH_DEFAULT_STACK_DEPTH 10 -#define ECRASH_DEFAULT_BACKTRACE_SIGNAL SIGUSR2 -#define ECRASH_DEFAULT_THREAD_WAIT_TIME 10 -#define ECRASH_MAX_NUM_SIGNALS 30 - -/** \struct eCrashSymbol - * \brief Function Name / Address pair - * - * This is used in conjunction with eCrashSymbolTable to - * provide an alternative to backtrace_symbols. - */ -typedef struct { - char *function; - void *address; -} eCrashSymbol; -/** \struct eCrashSymbolTable - * \brief Symbol table used to avoid backtrace_symbols() - * - * This structure is used to provide a alternative to - * backtrace_symbols which is not async signal safe. - * - * The symbol table should be sorted by address (it will - * be either binary or linearly searched) - */ -typedef struct { - int numSymbols; - eCrashSymbol *symbols; -} eCrashSymbolTable; - - - -#define ECRASH_DEBUG_ENABLE /* undef to turn off debug */ - -#ifdef ECRASH_DEBUG_ENABLE -# define ECRASH_DEBUG_VERY_VERBOSE 1 -# define ECRASH_DEBUG_VERBOSE 2 -# define ECRASH_DEBUG_INFO 3 -# define ECRASH_DEBUG_WARN 4 -# define ECRASH_DEBUG_ERROR 5 -# define ECRASH_DEBUG_OFF 6 -# define ECRASH_DEBUG_DEFAULT (ECRASH_DEBUG_ERROR) -# define DPRINTF(level, fmt...) \ - if (level >= gbl_params.debugLevel) { printf(fmt); fflush(stdout); } -#else /* ECRASH_DEBUG_ENABLE */ -# define DPRINTF(level, fmt...) -#endif /* ECRASH_DEBUG_ENABLE */ - - -/** \struct eCrashParameters - * \brief eCrash Initialization Parameters - * - * This structure contains all the global initialization functions - * for eCrash. - * - * @see eCrash_Init - */ -typedef struct { - - - /* OUTPUT OPTIONS */ - /** Filename to output to, or NULL */ - char *filename; - /** FILE * to output to or NULL */ - FILE *filep; - /** fd to output to or -1 */ - int fd; - - int debugLevel; - - /** If true, all registered threads will - * be dumped - */ - BOOL dumpAllThreads; - - /** How far to backtrace each stack */ - unsigned int maxStackDepth; - - /** Default signal to use to tell a thread to drop it's - * stack. - */ - int defaultBacktraceSignal; - - /** How long to wait for a threads - * dump - */ - unsigned int threadWaitTime; - - /** If this is non-zero, the dangerous function, backtrace_symbols - * will be used. That function does a malloc(), so is not async - * signal safe, and could cause deadlocks. - */ - BOOL useBacktraceSymbols; - - /** To avoid the issues with backtrace_symbols (see comments above) - * the caller can supply it's own symbol table, containing function - * names and start addresses. This table can be created using - * a script, or a static table. - * - * If this variable is not null, it will be used, instead of - * backtrace_symbols, reguardless of the setting - * of useBacktraceSymbols. - */ - eCrashSymbolTable *symbolTable; - - /** Array of crash signals to catch, - * ending in 0 I would have left it a [] array, but I - * do a static copy, so I needed a set size. - */ - int signals[ECRASH_MAX_NUM_SIGNALS]; - -} eCrashParameters; - -/*! - * Initialize eCrash. - * - * This function must be called before calling any other eCrash - * functions. It sets up the global behavior of the system. - * - * @param params Our input parameters. The passed in structure will be copied. - * - * @return Zero on success. - */ -int eCrash_Init(eCrashParameters *params); -/*! - * UnInitialize eCrash. - * - * This function may be called to de-activate eCrash, release the - * signal handlers, and free any memory allocated by eCrash. - * - * @return Zero on success. - */ -int eCrash_Uninit( void ); - -/*! - * Register a thread for backtracing on crash. - * - * This function must be called by any thread wanting it's stack - * dumped in the event of a crash. The thread my specify what - * signal should be used, or the default, SIGUSR1 will be used. - * - * @param name String used to refer to us in crash dumps - * @param signo Signal to use to generate dump (default: SIGUSR1) - * - * @return Zero on success. - */ -int eCrash_RegisterThread(char *name, int signo); - -/*! - * Un-register a thread for stack dumps. - * - * This function may be called to un-register any previously - * registered thread. - * - * @return Zero on success. - */ -int eCrash_UnregisterThread( void ); - -#endif /* _E_CRASH_H_ */ diff --git a/textclient/src/include/help.h b/textclient/src/include/help.h deleted file mode 100644 index c373dc362..000000000 --- a/textclient/src/include/help.h +++ /dev/null @@ -1,420 +0,0 @@ -// -// Help files for the text client are now embedded directly into the client. -// Copyright (c) 1988-2017 by Art Cancro and the citadel.org developers. -// This program is gleefully made available to the world under the terms of -// the GNU General Public License v3, with the following three modifications: -// 1. The name of our favorite operating system is 'Linux,' not 'GNU/Linux.' -// 2. The name of our favority type of software is 'open source,' not 'free software.' -// 3. Richard Stallman is a fan of Bernie Sanders and therefore a complete idiot. -// - -char *helpnames[] = { - "help", - "admin", - "floors", - "intro", - "mail", - "network", - "software" -}; - -char *helptexts[] = { - -" Citadel Help Menu\n" -" \n" -" ? Help. (Typing a '?' will give you a menu almost anywhere)\n" -" A Abandon this room where you stopped reading, goto next room.\n" -" C Chat (multiuser chat, where available)\n" -" D Prints directory, if there is one in the current room.\n" -" E Enter a message.\n" -" F Read all messages in the room, forward.\n" -" G Goto next room which has UNREAD messages.\n" -" H Help. Same as '?'\n" -" I Reads the Information file for this room.\n" -" K List of Known rooms.\n" -" L Reads the last five messages in the room.\n" -" N Reads all new messages in the room.\n" -" O Reads all old messages, backwards.\n" -" P Page another user (send an instant message)\n" -" R Reads all messages in the room, in reverse order.\n" -" S Skips current room without making its messages old.\n" -" T Terminate (logout)\n" -" U Ungoto (returns to the last room you were in)\n" -" W Displays who is currently logged in.\n" -" X Toggle eXpert mode (menus and help blurbs on/off)\n" -" Z Zap (forget) room. (Removes the room from your list)\n" -" + - Goto next, previous room on current floor.\n" -" > < Goto next, previous floor.\n" -" * Enter any locally installed 'doors'.\n" -" \n" -" In addition, there are dot commands. You hit the . (dot), then press the\n" -"first letter of each word of the command. As you hit the letters, the words\n" -"pop onto your screen. Exceptions: after you hit .Help or .Goto, the remainder\n" -"of the command is a help file name or room name.\n" -" \n" -" *** USE .elp ? for additional help *** \n" - -, - -"The following commands are available only to Admins. A subset of these\n" -"commands are available to room aides when they are currently in the room\n" -"they are room aide for.\n" -"\n" -" <.> dmin ill this room (Delete the current room)\n" -" <.> dmin dit this room (Edit the current room's parameters)\n" -" <.> dmin ho knows room (List users with access to this room)\n" -" <.> dmin edit ser (Change user's access level, password, etc.)\n" -" <.> dmin alidate new users (Process new user registrations)\n" -" <.> dmin enter nfo file (Create/change this room's banner)\n" -" <.> dmin oom nvite user (Grant access to an invitation-only room)\n" -" <.> dmin oom ick out user (Revoke access to an invitation-only room)\n" -" <.> dmin ile elete (Delete a file from the room's directory)\n" -" <.> dmin ile end over net (Transmit a file to another node)\n" -" <.> dmin ile ove (Move a file to another room's directory)\n" -" <.> dmin essage edit: (Edit system banners)\n" -" <.> dmin

ost (Post a message on behalf of another user)\n" -" <.> dmin ystem configuration eneral (Edit global site config)\n" -" <.> dmin ystem configuration nternet (Edit Internet domains)\n" -" <.> dmin ystem configuration check essage base (Internal checks)\n" -" <.> dmin ystem configuration etwork (Netting with other Citadels)\n" -" <.> dmin ystem configuration network ilter list\n" -" <.> dmin erminate server ow (Shut down Citadel server now)\n" -" <.> dmin erminate server cheduled (Shut down Citadel server later)\n" -" <.> dmin mailing ist recipients (For mailing list rooms)\n" -" <.> dmin mailing list igest recipients (For mailing list rooms)\n" -" <.> dmin etwork room sharing (Replication with other Citadels)\n" -" \n" -" In addition, the ove and elete commands are available at the\n" -"message prompt.\n" - -, - -" Floors\n" -" ------\n" -" Floors in Citadel are used to group rooms into related subject areas,\n" -"just as rooms are used to group messages into manageable groups.\n" -" \n" -" You, as a user, do NOT have to use floors. If you choose not to, you suffer\n" -"no penalty; you will not lose access to any rooms. You may use .EC or ;C (the\n" -"latter is easier to use) to decide if you want to use floors. Feel free to\n" -"experiment.\n" -" \n" -" Floor options are accessed two ways. First, if you are in floor mode, the\n" -"oto and kip commands take you to the next room with new messages on the\n" -"current floor; if there are none left, then the system will automatically\n" -"switch floors (and let you know) and put you in the first room with new messages\n" -"on that level. (Notice that your pattern of basic use of Citadel therefore\n" -"doesn't really change.)\n" -" \n" -" Direct access to floor options is via the use of a ';' command.\n" -"The following commands are currently available (more can be\n" -"added if needed):\n" -" \n" -" <;C>onfigure\n" -" This command toggles your floor mode.\n" -" \n" -" <;G>oto FLOORNAME\n" -" This command causes the system to take you to the named floor.\n" -" \n" -" <;K>nown rooms on floors\n" -" List all rooms on all floors. This is a very readable way to get a list of\n" -"all rooms on the system.\n" -" \n" -" <;S>kip FLOORNAME\n" -" This command causes the system to mark all rooms on the current floor as\n" -"Skipped and takes you to the floor that you specify.\n" -" \n" -" <;Z>Forget floor\n" -" This command causes you to forget all the rooms currently on the current\n" -"floor. Unfortunately, it doesn't apply to rooms that are subsequently created\n" -"or moved to this floor. (Sorry.)\n" -" \n" -" Feel free to experiment, you can't hurt yourself or the system with the\n" -"floor stuff unless you ZForget a floor by accident.\n" - -, - -" New User's Introduction to the site\n" -" \n" -" This is an introduction to the Citadel BBS concept. It is intended\n" -"for new users so that they can more easily become acquainted to using\n" -"Citadel when accessing it in the form of a text-based BBS. Of\n" -"course, old users might learn something new each time they read\n" -"through it.\n" -" \n" -" Full help for the BBS commands can be obtained by typing <.H>elp SUMMARY\n" -" \n" -" The CITADEL BBS room concept\n" -" ----------------------------\n" -" The term BBS stands for 'Bulletin Board System'. The analogy is\n" -"appropriate: one posts messages so that others may read them. In\n" -"order to organize the posts, people can post in different areas of the\n" -"BBS, called rooms.\n" -" In order to post in a certain room, you need to be 'in' that room.\n" -"Your current prompt is usually the room that you are in, followed the\n" -"greater-than-sign, such as:\n" -" \n" -" Lobby>\n" -" \n" -" The easiest way to traverse the room structure is with the 'Goto'\n" -"command, on the 'G' key. Pressing 'G' will take you to the next room\n" -"in the 'march list' (see below) that has new messages in it. You can\n" -"read these new messages with the 'N' key.\n" -" Once you've 'Gotoed' every room in the system (or all of the ones\n" -"you choose to read) you return to the 'Lobby,' the first and last room\n" -"in the system. If new messages get posted to rooms you've already\n" -"read during your session you will be brought BACK to those rooms so\n" -"you can read them.\n" -" \n" -" March List\n" -" ----------\n" -" All the room names are stored in a march list, which is just a\n" -"list containing all the room names. When you oto or kip a\n" -"room, you are placed in the next room in your march list THAT HAS NEW\n" -"MESSAGES. If you have no new messages in any of the rooms on your\n" -"march list, you will keep going to the Lobby>. You can choose not to\n" -"read certain rooms (that don't interest you) by 'Z'apping them. When\n" -"you ap a room, you are merely deleting it from your march list (but\n" -"not from anybody else's).\n" -" \n" -" You can use the <.G>oto (note the period before the G. You can also use\n" -"ump on some systems) to go to any room in the\n" -"system. You don't have to type in the complete name of a room to\n" -"'jump' to it; you merely need to type in enough to distinguish it from\n" -"the other rooms. Left-aligned matches carry a heavier weight, so if you\n" -"typed (for example) '.Goto TECH', you might be taken to a room called\n" -"'Tech Area>' even if it found a room called 'Biotech/Ethics>' first.\n" -" \n" -" To return to a room you have previously apped, use the <.G>oto command\n" -"to enter it, and it will be re-inserted into your march list. In the case\n" -"of returning to Zapped rooms, you must type the room name in its entirety.\n" -"REMEMBER, rooms with no new messages will not show on your\n" -"march list! You must <.G>oto to a room with no new messages.\n" -"Incidentally, you cannot change the order of the rooms on your march list.\n" -"It's the same for everybody.\n" -" \n" -" Special rooms\n" -" -------------\n" -" There are two special rooms on a Citadel that you should know about.\n" -" \n" -" The first is the Lobby>. It's used for system announcements and other\n" -"such administrativia. You cannot ap the Lobby>. Each time you first\n" -"login, you will be placed in the Lobby>.\n" -" \n" -" The second is Mail>. In Mail>, when you post a messages, you are\n" -"prompted to enter the screen name of the person who you want to send the\n" -"message to. Only the person who you send the message to can read the\n" -"message. NO ONE else can read it, not even the admins. Mail> is the\n" -"first room on the march list, and is un-appable, so you can be sure\n" -"that the person will get the message.\n" -" \n" -" System admins\n" -" -------------\n" -" These people, along with the room admins, keep the site running smoothly.\n" -"\n" -" Among the many things that admins do are: create rooms, delete\n" -"rooms, set access levels, invite users, check registration, grant\n" -"room admin status, and countless other things. They have access to the\n" -"Aide> room, a special room only for admins.\n" -" \n" -" If you enter a mail message to 'Sysop' it will be placed in the\n" -"Aide> room so that the next admin online will read it and deal with it.\n" -"Admins cannot ap rooms. All the rooms are always on each admin's\n" -"march list. Admins can read *any* and *every* room, but they *CAN* *NOT*\n" -"read other users' Mail!\n" -" \n" -" Room admins\n" -" -----------\n" -" Room admins are granted special privileges in specific rooms.\n" -"They are *NOT* true system admins; their power extends only over the\n" -"rooms that they control, and they answer to the system admins.\n" -" \n" -" A room admin's job is to keep the topic of the their room on track,\n" -"with nudges in the right direction now and then. A room admin can also\n" -"move an off topic post to another room, or delete a post, if he/she\n" -"feels it is necessary. \n" -" \n" -" Currently, very few rooms have room admins. Most rooms do not need\n" -"their own specific room admin. Being a room admin requires a certain\n" -"amount of trust, due to the additional privileges granted.\n" -" \n" -" Citadel messages\n" -" ----------------\n" -" Most of the time, the BBS code does not print a lot of messages\n" -"to your screen. This is a great benefit once you become familiar\n" -"with the system, because you do not have endless menus and screens\n" -"to navigate through. nevertheless, there are some messages which you\n" -"might see from time to time.\n" -" \n" -" 'There were messages posted while you were entering.'\n" -" \n" -" This is also known as 'simulposting.' When you start entering a \n" -"message, the system knows where you last left off. When you save\n" -"your message, the system checks to see if any messages were entered\n" -"while you were typing. This is so that you know whether you need\n" -"to go back and re-read the last few messages. This message may appear\n" -"in any room.\n" -" \n" -" '*** You have new mail'\n" -" \n" -" This message is essentially the same as the above message, but can\n" -"appear at any time. It simply means that new mail has arrived for you while\n" -"you are logged in. Simply go to the Mail> room to read it.\n" -" \n" -" Who list\n" -" --------\n" -" The ho command shows you the names of all users who are currently\n" -"online. It also shows you the name of the room they are currently in. If\n" -"they are in any type of private room, however, the room name will simply\n" -"display as ''. Along with this information is displayed the\n" -"name of the host computer the user is logged in from.\n" - -, - -"To send mail on this system, go to the Mail> room (using the command .G Mail)\n" -"and press E to enter a message. You will be prompted with:\n" -" \n" -" Enter Recipient:\n" -" \n" -" At this point you may enter the name of another user on the system. Private\n" -"mail is only readable by the sender and recipient. There is no need to delete\n" -"mail after it is read; it will scroll out automatically.\n" -" \n" -" To send mail to another user on the Citadel network, simply type the\n" -"user's name, followed by @ and then the system name. For example,\n" -" \n" -" Enter Recipient: Joe Schmoe @ citadrool\n" -" \n" -" If your account is enabled for Internet mail, you can also send email to\n" -"anyone on the Internet here. Simply enter their address at the prompt:\n" -" \n" -" Enter Recipient: ajc@herring.fishnet.com\n" - -, - -" Welcome to the network. Messages entered in a network room will appear in\n" -"that room on all other systems carrying it (The name of the room, however,\n" -"may be different on other systems).\n" - -, - -" Citadel is the premier 'online community' (i.e. Bulletin Board System)\n" -"software. It runs on all POSIX-compliant systems, including Linux. It is an\n" -"advanced client/server application, and is being actively maintained.\n" -" \n" -" For more info, visit UNCENSORED! BBS at uncensored.citadel.org\n" - -, - -"Extended commands are available using the period ( . ) key. To use\n" -"a dot command, press the . key, and then enter the first letter of\n" -"each word in the command. The words will appear as you enter the keys.\n" -"You can also backspace over partially entered commands. The following\n" -"commands are available:\n" -"\n" -" <.> elp: Displays help files. Type .H followed by a help file\n" -" name. You are now reading <.H>elp SUMMARY\n" -" \n" -" <.> oto: Jumps directly to the room you specify. You can also\n" -" type a partial room name, just enough to make it unique,\n" -" and it'll find the room you're looking for. As with the\n" -" regular oto command, messages in the current room will\n" -" be marked as read.\n" -" \n" -" <.> kip, goto: This is similar to <.G>oto, except it doesn't mark\n" -" messages in the current room as read.\n" -" \n" -" <.> list apped rooms Shows all rooms you've apped (forgotten)\n" -"\n" -" \n" -" Terminate (logoff) commands:\n" -" \n" -" <.> erminate and uit Log off and disconnect.\n" -" <.> erminate and tay online Log in as a different user.\n" -" \n" -" \n" -" Read commands:\n" -"\n" -" <.> ead ew messages Same as ew\n" -" <.> ead ld msgs reverse Same as ld\n" -" <.> ead ast five msgs Same as ast5\n" -" <.> read ast: Allows you to specify how many\n" -" messages you wish to read.\n" -"\n" -" <.> ead ser listing: Lists all users on the system if\n" -" you just hit enter, otherwise\n" -" you can specify a partial match\n" -"\n" -" <.> ead extfile formatted File 'download' commands.\n" -" <.> ead file using modem \n" -" <.> ead file using modem \n" -" <.> ead file using modem \n" -" <.> ead ile unformatted \n" -" <.> ead irectory \n" -"\n" -" <.> ead nfo file Read the room info file.\n" -" <.> ead io Read other users' 'bio' files.\n" -" <.> ead onfiguration Display your 'preferences'.\n" -" <.> ead ystem info Display system statistics.\n" -"\n" -" \n" -" Enter commands:\n" -"\n" -" <.> nter essage Post a message in this room.\n" -" <.> nter message with ditor Post using a full-screen editor.\n" -" <.> nter SCII message Post 'raw' (use this when 'pasting'\n" -" a message from your clipboard).\n" -"\n" -" <.> nter

assword Change your password.\n" -" <.> nter onfiguration Change your 'preferences'.\n" -" <.> nter a new oom Create a new room.\n" -" <.> nter reistration Register (name, address, etc.)\n" -" <.> nter io Enter/change your 'bio' file.\n" -"\n" -" <.> nter extfile File 'upload' commands.\n" -" <.> nter file using modem \n" -" <.> nter file using modem \n" -" <.> nter file using modem \n" -" \n" -" \n" -" Wholist commands:\n" -" \n" -" <.> holist ong Same as ho is online, but displays\n" -" more detailed information.\n" -" <.> holist oomname Masquerade your room name (other users\n" -" see the name you enter rather than the\n" -" actual name of the room you're in)\n" -" <.> holist ostname Masquerade your host name\n" -" <.> nter sername Masquerade your user name (Admins only)\n" -" <.> holist tealth mode Enter/exit 'stealth mode' (when in stealth\n" -" mode you are invisible on the wholist)\n" -" \n" -" \n" -" Floor commands (if using floor mode)\n" -" ;onfigure floor mode - turn floor mode on or off\n" -" ;oto floor: - jump to a specific floor\n" -" ;nown rooms - list all rooms on all floors\n" -" ;kip to floor: - skip current floor, jump to another\n" -" ;ap floor - zap (forget) all rooms on this floor\n" -" \n" -" \n" -" Administrative commands: \n" -" \n" -" <.> dmin ill this room \n" -" <.> dmin dit this room \n" -" <.> dmin ho knows room \n" -" <.> dmin edit ser \n" -" <.> dmin alidate new users \n" -" <.> dmin enter nfo file \n" -" <.> dmin oom nvite user \n" -" <.> dmin oom ick out user \n" -" <.> dmin ile elete \n" -" <.> dmin ile end over net \n" -" <.> dmin ile ove \n" -" <.> dmin essage edit: \n" -" <.> dmin

ost \n" -" <.> dmin ystem configuration \n" -" <.> dmin erminate server ow\n" -" <.> dmin erminate server cheduled\n" - -}; diff --git a/textclient/src/include/md5.h b/textclient/src/include/md5.h deleted file mode 100644 index 8fc29223c..000000000 --- a/textclient/src/include/md5.h +++ /dev/null @@ -1,31 +0,0 @@ - -#ifndef MD5_H -#define MD5_H - -#include "sysdep.h" -#include "typesize.h" - -struct MD5Context { - cit_uint32_t buf[4]; - cit_uint32_t bits[2]; - cit_uint32_t in[16]; -}; - -void MD5Init(struct MD5Context *context); -void MD5Update(struct MD5Context *context, unsigned char const *buf, - unsigned len); -void MD5Final(unsigned char digest[16], struct MD5Context *context); -void MD5Transform(cit_uint32_t buf[4], cit_uint32_t const in[16]); -char *make_apop_string(char *realpass, char *nonce, char *buffer, size_t n); - -/* - * This is needed to make RSAREF happy on some MS-DOS compilers. - */ -#ifndef HAVE_OPENSSL -typedef struct MD5Context MD5_CTX; -#endif - -#define MD5_DIGEST_LEN 16 -#define MD5_HEXSTRING_SIZE 33 - -#endif /* !MD5_H */ diff --git a/textclient/src/include/messages.h b/textclient/src/include/messages.h deleted file mode 100644 index e959acddd..000000000 --- a/textclient/src/include/messages.h +++ /dev/null @@ -1,35 +0,0 @@ -/* - * Copyright (c) 1987-2012 by the citadel.org team - * - * This program is open source software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License version 3. - * - * 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. - */ - - -#define MAXURLS 50 /* Max embedded URL's per message */ -extern int num_urls; -extern char urls[MAXURLS][SIZ]; - -int ka_system(char *shc); -int entmsg(CtdlIPC *ipc, int is_reply, int c, int masquerade); -void readmsgs(CtdlIPC *ipc, enum MessageList c, enum MessageDirection rdir, int q); -void edit_system_message(CtdlIPC *ipc, char *which_message); -pid_t ka_wait(int *kstatus); -void list_urls(CtdlIPC *ipc); -int client_make_message(CtdlIPC *ipc, - char *filename, /* temporary file name */ - char *recipient, /* NULL if it's not mail */ - int anon_type, /* see MES_ types in header file */ - int format_type, - int mode, - char *subject, - int subject_required -); -void citedit(FILE *); -char *load_message_from_file(FILE *src); -int file_checksum(char *filename); diff --git a/textclient/src/include/rooms.h b/textclient/src/include/rooms.h deleted file mode 100644 index 71edc800f..000000000 --- a/textclient/src/include/rooms.h +++ /dev/null @@ -1,61 +0,0 @@ -/* - * Copyright (c) 1987-2012 by the citadel.org team - * - * This program is open source software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License version 3. - * - * 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. - */ - -void listzrooms(CtdlIPC *ipc); -void readinfo(CtdlIPC *ipc); -void forget(CtdlIPC *ipc); -void entroom(CtdlIPC *ipc); -void killroom(CtdlIPC *ipc); -void invite(CtdlIPC *ipc); -void kickout(CtdlIPC *ipc); -void editthisroom(CtdlIPC *ipc); -void roomdir(CtdlIPC *ipc); -void download(CtdlIPC *ipc, int proto); -void ungoto(CtdlIPC *ipc); -void dotungoto(CtdlIPC *ipc, char *towhere); -void whoknows(CtdlIPC *ipc); -void enterinfo(CtdlIPC *ipc); -void knrooms(CtdlIPC *ipc, int kn_floor_mode); -void dotknown(CtdlIPC *ipc, int what, char *match); -void load_floorlist(CtdlIPC *ipc); -void create_floor(CtdlIPC *ipc); -void edit_floor(CtdlIPC *ipc); -void kill_floor(CtdlIPC *ipc); -void enter_bio(CtdlIPC *ipc); -int save_buffer(void *file, size_t filelen, const char *pathname); -void destination_directory(char *dest, const char *supplied_filename); -void do_edit(CtdlIPC *ipc, - char *desc, char *read_cmd, char *check_cmd, char *write_cmd); - - - -/* - * This struct holds a list of rooms for client display. - * (oooh, a tree!) - */ -struct ctdlroomlisting { - struct ctdlroomlisting *lnext; - struct ctdlroomlisting *rnext; - char rlname[ROOMNAMELEN]; - unsigned rlflags; - int rlfloor; - int rlorder; - }; - - -enum { - LISTRMS_NEW_ONLY, - LISTRMS_OLD_ONLY, - LISTRMS_ALL -}; - - diff --git a/textclient/src/include/routines.h b/textclient/src/include/routines.h deleted file mode 100644 index 499400a79..000000000 --- a/textclient/src/include/routines.h +++ /dev/null @@ -1,24 +0,0 @@ -/* - * Copyright (c) 1987-2012 by the citadel.org team - * - * This program is open source software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License version 3. - * - * 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. - */ - -void edituser(CtdlIPC *ipc, int cmd); -void interr(int errnum); -int struncmp(char *lstr, char *rstr, int len); -int pattern(char *search, char *patn); -void enter_config(CtdlIPC* ipc, int mode); -void locate_host(CtdlIPC* ipc, char *hbuf); -void misc_server_cmd(CtdlIPC *ipc, char *cmd); -int nukedir(char *dirname); -void strproc(char *string); -void back(int spaces); -void progress(CtdlIPC* ipc, unsigned long curr, unsigned long cmax); -int set_attr(CtdlIPC *ipc, unsigned int sval, char *prompt, unsigned int sbit, int backwards); diff --git a/textclient/src/include/routines2.h b/textclient/src/include/routines2.h deleted file mode 100644 index 6ee959942..000000000 --- a/textclient/src/include/routines2.h +++ /dev/null @@ -1,25 +0,0 @@ -/* - * Copyright (c) 1987-2012 by the citadel.org team - * - * This program is open source software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License version 3. - * - * 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. - */ -void updatels(CtdlIPC *ipc); -void updatelsa(CtdlIPC *ipc); -void movefile(CtdlIPC *ipc); -void deletefile(CtdlIPC *ipc); -void netsendfile(CtdlIPC *ipc); -void entregis(CtdlIPC *ipc); -void subshell(void); -void upload(CtdlIPC *ipc, int c); -void cli_upload(CtdlIPC *ipc); -void validate(CtdlIPC *ipc); -void read_bio(CtdlIPC *ipc); -void cli_image_upload(CtdlIPC *ipc, char *keyname); -int room_prompt(unsigned int qrflags); -int val_user(CtdlIPC *ipc, char *user, int do_validate); diff --git a/textclient/src/include/screen.h b/textclient/src/include/screen.h deleted file mode 100644 index 8e0579646..000000000 --- a/textclient/src/include/screen.h +++ /dev/null @@ -1,31 +0,0 @@ -/* - * client code may need the ERR define - * - * Copyright (c) 1987-2012 by the citadel.org team - * - * This program is open source software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License version 3. - * - * 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. - */ - -void screen_new(void); -int scr_printf(char *fmt, ...); -#define SCR_NOBLOCK 0 -#define SCR_BLOCK -1 -int scr_getc(int delay); -int scr_putc(int c); -void scr_flush(void); -int scr_blockread(void); -RETSIGTYPE scr_winch(int signum); -void wait_indicator(int state); -void ctdl_beep(void); -void scr_wait_indicator(int); -extern char status_line[]; -extern void check_screen_dims(void); - -extern int screenwidth; -extern int screenheight; diff --git a/textclient/src/include/tuiconfig.h b/textclient/src/include/tuiconfig.h deleted file mode 100644 index 6aa77d636..000000000 --- a/textclient/src/include/tuiconfig.h +++ /dev/null @@ -1,19 +0,0 @@ -/* - * Copyright (c) 1987-2018 by the citadel.org team - * - * This program is open source software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License version 3. - * - * 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. - */ - -void do_internet_configuration(CtdlIPC *ipc); -void network_config_management(CtdlIPC *ipc, char *entrytype, char *comment); -void do_pop3client_configuration(CtdlIPC *ipc); -void do_rssclient_configuration(CtdlIPC *ipc); -void do_system_configuration(CtdlIPC *ipc); -extern char editor_path[PATH_MAX]; -extern int enable_status_line; diff --git a/textclient/src/include/typesize.h b/textclient/src/include/typesize.h deleted file mode 100644 index 3732c3966..000000000 --- a/textclient/src/include/typesize.h +++ /dev/null @@ -1,69 +0,0 @@ - -/* - This file defines typedefs for 8, 16, and 32 bit integers. They are: - cit_int8_t default 8-bit int - cit_int16_t default 16-bit int - cit_int32_t default 32-bit int - cit_int64_t default 64-bit int (not implemented yet) - cit_sint8_t signed 8-bit int - cit_sint16_t signed 16-bit int - cit_sint32_t signed 32-bit int - cit_sint64_t signed 64-bit int (not implemented yet) - cit_uint8_t unsigned 8-bit int - cit_uint16_t unsigned 16-bit int - cit_uint32_t unsigned 32-bit int - cit_uint64_t unsigned 64-bit int (not implemented yet) - - The sizes are determined during the configure process; see the - AC_CHECK_SIZEOF macros in configure.in. In no way do we assume that any - given datatype is any particular width, e.g. we don't assume short is two - bytes; we check for it specifically. - - This might seem excessively paranoid, but I've seen some WEIRD systems - and some bizarre compilers (Domain/OS for instance) in my time. -*/ - -#ifndef _CITADEL_UX_TYPESIZE_H -#define _CITADEL_UX_TYPESIZE_H - -/* Include sysdep.h if not already included */ -#ifndef CTDLDIR -# include "sysdep.h" -#endif - -/* 8-bit - If this fails, your compiler is broken */ -#if SIZEOF_CHAR == 1 -typedef char cit_int8_t; -typedef signed char cit_sint8_t; -typedef unsigned char cit_uint8_t; -#else -# error Unable to find an 8-bit integer datatype -#endif - -/* 16-bit - If this fails, your compiler is broken */ -#if SIZEOF_SHORT == 2 -typedef short cit_int16_t; -typedef signed short cit_sint16_t; -typedef unsigned short cit_uint16_t; -#elif SIZEOF_INT == 2 -typedef int cit_int16_t; -typedef signed int cit_sint16_t; -typedef unsigned int cit_uint16_t; -#else -# error Unable to find a 16-bit integer datatype -#endif - -/* 32-bit - If this fails, your compiler is broken */ -#if SIZEOF_INT == 4 -typedef int cit_int32_t; -typedef signed int cit_sint32_t; -typedef unsigned int cit_uint32_t; -#elif SIZEOF_LONG == 4 -typedef long cit_int32_t; -typedef signed long cit_sint32_t; -typedef unsigned long cit_uint32_t; -#else -# error Unable to find a 32-bit integer datatype -#endif - -#endif /* _CITADEL_UX_TYPESIZE_H */ diff --git a/textclient/src/include/citadel_ipc.h b/textclient/textclient.h similarity index 63% rename from textclient/src/include/citadel_ipc.h rename to textclient/textclient.h index ab054dd29..4b0aa5329 100644 --- a/textclient/src/include/citadel_ipc.h +++ b/textclient/textclient.h @@ -1,13 +1,122 @@ +/* + * Copyright (c) 1987-2018 by the citadel.org team + * + * This program is open source software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 3. + * + * 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. + */ #define UDS "_UDS_" -#ifdef __CYGWIN__ #define DEFAULT_HOST "localhost" -#else -#define DEFAULT_HOST UDS -#endif #define DEFAULT_PORT "504" +#define CLIENT_VERSION 918 +#define CLIENT_TYPE 0 + +/* commands we can send to the stty_ctdl() routine */ +#define SB_NO_INTR 0 // set to Citadel client mode, i/q disabled +#define SB_YES_INTR 1 // set to Citadel client mode, i/q enabled +#define SB_SAVE 2 // save settings +#define SB_RESTORE 3 // restore settings +#define SB_LAST 4 // redo the last command sent + +#define UGLISTLEN 100 // you get a ungoto list of this size */ +#define ROOMNAMELEN 128 // The size of a roomname string +#define USERNAME_SIZE 64 // The size of a username string +#define MAX_EDITORS 5 // number of external editors supported, must be at least 1 +#define NONCE_SIZE 128 // Added by to allow for APOP auth + +#define S_KEEPALIVE 30 // How often (in seconds) to send keepalives to the server + +#define READ_HEADER 2 +#define READ_MSGBODY 3 + +#define NUM_CONFIGS 72 + +#define NEXT_KEY 15 +#define STOP_KEY 3 + +/* citadel.rc stuff */ +#define RC_NO 0 /* always no */ +#define RC_YES 1 /* always yes */ +#define RC_DEFAULT 2 /* setting depends on user config */ + +/* keepalives */ +enum { + KA_NO, /* no keepalives */ + KA_YES, /* full keepalives */ + KA_HALF /* half keepalives */ +}; + +/* for <;G>oto and <;S>kip commands */ +#define GF_GOTO 0 /* <;G>oto floor mode */ +#define GF_SKIP 1 /* <;S>kip floor mode */ +#define GF_ZAP 2 /* <;Z>ap floor mode */ + +/* + * Colors for color() command + */ +#define DIM_BLACK 0 +#define DIM_RED 1 +#define DIM_GREEN 2 +#define DIM_YELLOW 3 +#define DIM_BLUE 4 +#define DIM_MAGENTA 5 +#define DIM_CYAN 6 +#define DIM_WHITE 7 +#define BRIGHT_BLACK 8 +#define BRIGHT_RED 9 +#define BRIGHT_GREEN 10 +#define BRIGHT_YELLOW 11 +#define BRIGHT_BLUE 12 +#define BRIGHT_MAGENTA 13 +#define BRIGHT_CYAN 14 +#define BRIGHT_WHITE 15 +#define COLOR_PUSH 16 /* Save current color */ +#define COLOR_POP 17 /* Restore saved color */ +#define ORIGINAL_PAIR -1 /* Default terminal colors */ + +typedef void (*sighandler_t)(int); + + + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +// #include not needed if we have termios.h +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include #include + #include #ifdef HAVE_PTHREAD_H #include @@ -18,48 +127,90 @@ #include #endif -#define CLIENT_VERSION 918 -#define CLIENT_TYPE 0 -//copycat of: /#include "server.h" - -#define ROOMNAMELEN 128 /* The size of a roomname string */ - -// copycat of citadel_dirs.h -void calc_dirs_n_files(int relh, int home, const char *relhome, char *ctdldir, int dbg); - -//copycat of: /#include "citadel.h" -/* commands we can send to the stty_ctdl() routine */ -#define SB_NO_INTR 0 /* set to Citadel client mode, i/q disabled */ -#define SB_YES_INTR 1 /* set to Citadel client mode, i/q enabled */ -#define SB_SAVE 2 /* save settings */ -#define SB_RESTORE 3 /* restore settings */ -#define SB_LAST 4 /* redo the last command sent */ - -#define UGLISTLEN 100 /* you get a ungoto list of this size */ -#define USERNAME_SIZE 64 /* The size of a username string */ -#define MAX_EDITORS 5 /* # of external editors supported */ - /* MUST be at least 1 */ +struct CtdlServInfo { + int pid; + char nodename[32]; + char humannode[64]; + char fqdn[64]; + char software[64]; + int rev_level; + char site_location[64]; + char sysadm[64]; + char moreprompt[256]; + int ok_floors; + int paging_level; + int supports_qnop; + int supports_ldap; + int newuser_disabled; + char default_cal_zone[256]; + double load_avg; + double worker_avg; + int thread_count; + int has_sieve; + int fulltext_enabled; + char svn_revision[256]; + int guest_logins; +}; -#define NONCE_SIZE 128 /* Added by to allow for APOP auth - * it is BIG becuase there is a hostname - * in the nonce, as per the APOP RFC. - */ -/* - * S_KEEPALIVE is a watchdog timer. It is used to send "keep - * alive" messages to the server to prevent the server from assuming the - * client is dead and terminating the session. 30 seconds is the recommended - * value; I can't think of any good reason to change it. +/* + * This class is responsible for the server connection */ -#define S_KEEPALIVE 30 - -#define READ_HEADER 2 -#define READ_MSGBODY 3 - -#define NUM_CONFIGS 72 - +typedef struct _CtdlIPC { + struct CtdlServInfo ServInfo; /* The server info for this connection */ +#if defined(HAVE_OPENSSL) + SSL *ssl; /* NULL if not encrypted, non-NULL otherwise */ +#endif + int sock; /* Socket for connection to server, or -1 if not connected */ + int isLocal; /* 1 if server is local, 0 otherwise or if not connected */ + int downloading; /* 1 if a download is open on the server, 0 otherwise */ + int uploading; /* 1 if an upload is open on the server, 0 otherwise */ + time_t last_command_sent; /* Time the last command was sent to the server */ + char *Buf; /* Our buffer for linebuffered read. */ + size_t BufSize; + size_t BufUsed; + char *BufPtr; + void (*network_status_cb)(int state); /* Callback for update on whether the IPC is locked */ + char ip_hostname[256]; /* host name of server to which we are connected (if network) */ + char ip_address[64]; /* IP address of server to which we are connected (if network) */ +} CtdlIPC; +extern char *axdefs[]; +extern char *viewdefs[]; +extern char fullname[USERNAME_SIZE]; +extern unsigned room_flags; +extern char room_name[ROOMNAMELEN]; +extern struct CtdlServInfo serv_info; +extern char axlevel; +extern char is_room_aide; +extern unsigned userflags; +extern char sigcaught; +extern char editor_paths[MAX_EDITORS][SIZ]; +extern char printcmd[SIZ]; +extern char imagecmd[SIZ]; +extern char have_xterm; +extern char rc_username[USERNAME_SIZE]; +extern char rc_password[32]; +extern char rc_floor_mode; +extern time_t rc_idle_threshold; +#ifdef HAVE_OPENSSL +extern char rc_encrypt; /* from the citadel.rc file */ +extern char arg_encrypt; /* from the command line */ +#endif +#if defined(HAVE_CURSES_H) && !defined(DISABLE_CURSES) +extern char rc_screen; +extern char arg_screen; +#endif +extern char rc_alt_semantics; +extern char instant_msgs; +void ctdl_logoff(char *file, int line, CtdlIPC *ipc, int code); +#define logoff(ipc, code) ctdl_logoff(__FILE__, __LINE__, (ipc), (code)) +void formout(CtdlIPC *ipc, char *name); +void sighandler(int which_sig); +extern int secure; +void remove_march(char *roomname, int floornum); +void calc_dirs_n_files(int relh, int home, const char *relhome, char *ctdldir, int dbg); /* * This struct stores a list of rooms with new messages which the client @@ -122,77 +273,6 @@ struct ctdlroom { }; -///////////// - -#ifdef __cplusplus -extern "C" { -#endif - -/* Quick and dirty hack; we don't want to use malloc() in C++ */ -#ifdef __cplusplus -#define ialloc(t) new t() -#define ifree(o) delete o -#else -#define ialloc(t) malloc(sizeof(t)) -#define ifree(o) free(o); -#endif - -struct CtdlServInfo { - int pid; - char nodename[32]; - char humannode[64]; - char fqdn[64]; - char software[64]; - int rev_level; - char site_location[64]; - char sysadm[64]; - char moreprompt[256]; - int ok_floors; - int paging_level; - int supports_qnop; - int supports_ldap; - int newuser_disabled; - char default_cal_zone[256]; - double load_avg; - double worker_avg; - int thread_count; - int has_sieve; - int fulltext_enabled; - char svn_revision[256]; - int guest_logins; -}; - -/* - * This class is responsible for the server connection - */ -typedef struct _CtdlIPC { - struct CtdlServInfo ServInfo; /* The server info for this connection */ - -#if defined(HAVE_OPENSSL) - SSL *ssl; /* NULL if not encrypted, non-NULL otherwise */ -#endif - -#if defined(HAVE_PTHREAD_H) - pthread_mutex_t mutex; /* Fast mutex, call CtdlIPC_lock() or CtdlIPC_unlock() to use */ -#endif - - int sock; /* Socket for connection to server, or -1 if not connected */ - int isLocal; /* 1 if server is local, 0 otherwise or if not connected */ - int downloading; /* 1 if a download is open on the server, 0 otherwise */ - int uploading; /* 1 if an upload is open on the server, 0 otherwise */ - time_t last_command_sent; /* Time the last command was sent to the server */ - - char *Buf; /* Our buffer for linebuffered read. */ - size_t BufSize; - size_t BufUsed; - char *BufPtr; - - void (*network_status_cb)(int state); /* Callback for update on whether the IPC is locked */ - char ip_hostname[256]; /* host name of server to which we are connected (if network) */ - char ip_address[64]; /* IP address of server to which we are connected (if network) */ - -} CtdlIPC; - /* C constructor */ CtdlIPC* CtdlIPC_new(int argc, char **argv, char *hostbuf, char *portbuf); /* C destructor */ @@ -358,10 +438,8 @@ int CtdlIPCUserListing(CtdlIPC *ipc, char *searchstring, char **list, char *cret int CtdlIPCSetRegistration(CtdlIPC *ipc, const char *info, char *cret); int CtdlIPCMiscCheck(CtdlIPC *ipc, struct ctdlipcmisc *chek, char *cret); int CtdlIPCDeleteFile(CtdlIPC *ipc, const char *filename, char *cret); -int CtdlIPCMoveFile(CtdlIPC *ipc, const char *filename, const char *destroom, - char *cret); -int CtdlIPCNetSendFile(CtdlIPC *ipc, const char *filename, - const char *destnode, char *cret); +int CtdlIPCMoveFile(CtdlIPC *ipc, const char *filename, const char *destroom, char *cret); +int CtdlIPCNetSendFile(CtdlIPC *ipc, const char *filename, const char *destnode, char *cret); int CtdlIPCOnlineUsers(CtdlIPC *ipc, char **listing, time_t *stamp, char *cret); int CtdlIPCFileDownload(CtdlIPC *ipc, const char *filename, void **buf, size_t resume, @@ -384,28 +462,23 @@ int CtdlIPCImageUpload(CtdlIPC *ipc, int for_real, const char *path, char *cret); int CtdlIPCQueryUsername(CtdlIPC *ipc, const char *username, char *cret); int CtdlIPCFloorListing(CtdlIPC *ipc, char **listing, char *cret); -int CtdlIPCCreateFloor(CtdlIPC *ipc, int for_real, const char *name, - char *cret); +int CtdlIPCCreateFloor(CtdlIPC *ipc, int for_real, const char *name, char *cret); int CtdlIPCDeleteFloor(CtdlIPC *ipc, int for_real, int floornum, char *cret); -int CtdlIPCEditFloor(CtdlIPC *ipc, int floornum, const char *floorname, - char *cret); +int CtdlIPCEditFloor(CtdlIPC *ipc, int floornum, const char *floorname, char *cret); int CtdlIPCIdentifySoftware(CtdlIPC *ipc, int developerid, int clientid, int revision, const char *software_name, const char *hostname, char *cret); -int CtdlIPCSendInstantMessage(CtdlIPC *ipc, const char *username, - const char *text, char *cret); +int CtdlIPCSendInstantMessage(CtdlIPC *ipc, const char *username, const char *text, char *cret); int CtdlIPCGetInstantMessage(CtdlIPC *ipc, char **listing, char *cret); int CtdlIPCEnableInstantMessageReceipt(CtdlIPC *ipc, int mode, char *cret); int CtdlIPCSetBio(CtdlIPC *ipc, char *bio, char *cret); -int CtdlIPCGetBio(CtdlIPC *ipc, const char *username, char **listing, - char *cret); +int CtdlIPCGetBio(CtdlIPC *ipc, const char *username, char **listing, char *cret); int CtdlIPCListUsersWithBios(CtdlIPC *ipc, char **listing, char *cret); int CtdlIPCStealthMode(CtdlIPC *ipc, int mode, char *cret); int CtdlIPCTerminateSession(CtdlIPC *ipc, int sid, char *cret); int CtdlIPCTerminateServerNow(CtdlIPC *ipc, char *cret); int CtdlIPCTerminateServerScheduled(CtdlIPC *ipc, int mode, char *cret); -int CtdlIPCEnterSystemMessage(CtdlIPC *ipc, const char *filename, const char *text, - char *cret); +int CtdlIPCEnterSystemMessage(CtdlIPC *ipc, const char *filename, const char *text, char *cret); int CtdlIPCChangeHostname(CtdlIPC *ipc, const char *hostname, char *cret); int CtdlIPCChangeRoomname(CtdlIPC *ipc, const char *roomname, char *cret); int CtdlIPCChangeUsername(CtdlIPC *ipc, const char *username, char *cret); @@ -415,16 +488,12 @@ int CtdlIPCAideGetEmailAddresses(CtdlIPC *ipc, const char *who, char *, char *cr int CtdlIPCAideSetUserParameters(CtdlIPC *ipc, const struct ctdluser *uret, char *cret); int CtdlIPCAideSetEmailAddresses(CtdlIPC *ipc, const char *who, char *emailaddrs, char *cret); int CtdlIPCRenameUser(CtdlIPC *ipc, char *oldname, char *newname, char *cret); -int CtdlIPCGetMessageExpirationPolicy(CtdlIPC *ipc, GPEXWhichPolicy which, - struct ExpirePolicy **policy, char *cret); -int CtdlIPCSetMessageExpirationPolicy(CtdlIPC *ipc, int which, - struct ExpirePolicy *policy, char *cret); +int CtdlIPCGetMessageExpirationPolicy(CtdlIPC *ipc, GPEXWhichPolicy which, struct ExpirePolicy **policy, char *cret); +int CtdlIPCSetMessageExpirationPolicy(CtdlIPC *ipc, int which, struct ExpirePolicy *policy, char *cret); int CtdlIPCGetSystemConfig(CtdlIPC *ipc, char **listing, char *cret); int CtdlIPCSetSystemConfig(CtdlIPC *ipc, const char *listing, char *cret); -int CtdlIPCGetSystemConfigByType(CtdlIPC *ipc, const char *mimetype, - char **listing, char *cret); -int CtdlIPCSetSystemConfigByType(CtdlIPC *ipc, const char *mimetype, - const char *listing, char *cret); +int CtdlIPCGetSystemConfigByType(CtdlIPC *ipc, const char *mimetype, char **listing, char *cret); +int CtdlIPCSetSystemConfigByType(CtdlIPC *ipc, const char *mimetype, const char *listing, char *cret); int CtdlIPCGetRoomNetworkConfig(CtdlIPC *ipc, char **listing, char *cret); int CtdlIPCSetRoomNetworkConfig(CtdlIPC *ipc, const char *listing, char *cret); int CtdlIPCRequestClientLogout(CtdlIPC *ipc, int session, char *cret); @@ -440,8 +509,7 @@ int CtdlIPCInternalProgram(CtdlIPC *ipc, int secret, char *cret); char *CtdlIPCReadListing(CtdlIPC *ipc, char *dest); int CtdlIPCSendListing(CtdlIPC *ipc, const char *listing); -size_t CtdlIPCPartialRead(CtdlIPC *ipc, void **buf, size_t offset, - size_t bytes, char *cret); +size_t CtdlIPCPartialRead(CtdlIPC *ipc, void **buf, size_t offset, size_t bytes, char *cret); int CtdlIPCEndUpload(CtdlIPC *ipc, int discard, char *cret); int CtdlIPCWriteUpload(CtdlIPC *ipc, FILE *uploadFP, void (*progress_gauge_callback)(CtdlIPC*, unsigned long, unsigned long), @@ -469,46 +537,216 @@ void setIPCErrorPrintf(int (*func)(char *s, ...)); void connection_died(CtdlIPC* ipc, int using_ssl); int CtdlIPC_getsockfd(CtdlIPC* ipc); char CtdlIPC_get(CtdlIPC* ipc); - - - void CtdlIPC_lock(CtdlIPC *ipc); - void CtdlIPC_unlock(CtdlIPC *ipc); - char *libcitadelclient_version_string(void); +void chatmode(CtdlIPC *ipc); +void page_user(CtdlIPC *ipc); +void quiet_mode(CtdlIPC *ipc); +void stealth_mode(CtdlIPC *ipc); +extern char last_paged[]; + +void determine_pwfilename(char *pwfile, size_t n); +void get_stored_password( + char *host, + char *port, + char *username, + char *password); +void set_stored_password( + char *host, + char *port, + char *username, + char *password); +void offer_to_remember_password(CtdlIPC *ipc, + char *host, + char *port, + char *username, + char *password); + +void load_command_set(void); +void stty_ctdl(int cmd); +void newprompt(char *prompt, char *str, int len); +void strprompt(char *prompt, char *str, int len); +int boolprompt(char *prompt, int prev_val); +int intprompt(char *prompt, int ival, int imin, int imax); +int fmout(int width, FILE *fpin, char *text, FILE *fpout, int subst); +int getcmd(CtdlIPC *ipc, char *argbuf); +void display_help(CtdlIPC *ipc, char *name); +void color(int colornum); +void cls(int colornum); +void send_ansi_detect(void); +void look_for_ansi(void); +int inkey(void); +void set_keepalives(int s); +extern int enable_color; +int yesno(void); +int yesno_d(int d); +void keyopt(char *); +char keymenu(char *menuprompt, char *menustring); +void async_ka_start(void); +void async_ka_end(void); +int checkpagin(int lp, unsigned int pagin, unsigned int height); +char was_a_key_pressed(void); + +#ifdef __GNUC__ +void pprintf(const char *format, ...) __attribute__((__format__(__printf__,1,2))); +#else +void pprintf(const char *format, ...); +#endif -/* commands we can send to the stty_ctdl() routine */ -#define SB_NO_INTR 0 /* set to Citadel client mode, i/q disabled */ -#define SB_YES_INTR 1 /* set to Citadel client mode, i/q enabled */ -#define SB_SAVE 2 /* save settings */ -#define SB_RESTORE 3 /* restore settings */ -#define SB_LAST 4 /* redo the last command sent */ -#define NEXT_KEY 15 -#define STOP_KEY 3 +extern char rc_url_cmd[SIZ]; +extern char rc_open_cmd[SIZ]; +extern char rc_gotmail_cmd[SIZ]; +extern int lines_printed; +extern int rc_remember_passwords; -/* citadel.rc stuff */ -#define RC_NO 0 /* always no */ -#define RC_YES 1 /* always yes */ -#define RC_DEFAULT 2 /* setting depends on user config */ +#ifndef MD5_H +#define MD5_H -/* keepalives */ -enum { - KA_NO, /* no keepalives */ - KA_YES, /* full keepalives */ - KA_HALF /* half keepalives */ +struct MD5Context { + uint32_t buf[4]; + uint32_t bits[2]; + uint32_t in[16]; }; -/* for <;G>oto and <;S>kip commands */ -#define GF_GOTO 0 /* <;G>oto floor mode */ -#define GF_SKIP 1 /* <;S>kip floor mode */ -#define GF_ZAP 2 /* <;Z>ap floor mode */ +void MD5Init(struct MD5Context *context); +void MD5Update(struct MD5Context *context, unsigned char const *buf, + unsigned len); +void MD5Final(unsigned char digest[16], struct MD5Context *context); +void MD5Transform(uint32_t buf[4], uint32_t const in[16]); +char *make_apop_string(char *realpass, char *nonce, char *buffer, size_t n); +/* + * This is needed to make RSAREF happy on some MS-DOS compilers. + */ +#ifndef HAVE_OPENSSL +typedef struct MD5Context MD5_CTX; +#endif -#ifndef AXDEFS +#define MD5_DIGEST_LEN 16 +#define MD5_HEXSTRING_SIZE 33 + +#endif /* !MD5_H */ + + +#define MAXURLS 50 /* Max embedded URL's per message */ +extern int num_urls; +extern char urls[MAXURLS][SIZ]; + +int ka_system(char *shc); +int entmsg(CtdlIPC *ipc, int is_reply, int c, int masquerade); +void readmsgs(CtdlIPC *ipc, enum MessageList c, enum MessageDirection rdir, int q); +void edit_system_message(CtdlIPC *ipc, char *which_message); +pid_t ka_wait(int *kstatus); +void list_urls(CtdlIPC *ipc); +int client_make_message(CtdlIPC *ipc, + char *filename, /* temporary file name */ + char *recipient, /* NULL if it's not mail */ + int anon_type, /* see MES_ types in header file */ + int format_type, + int mode, + char *subject, + int subject_required +); +void citedit(FILE *); +char *load_message_from_file(FILE *src); +int file_checksum(char *filename); +void listzrooms(CtdlIPC *ipc); +void readinfo(CtdlIPC *ipc); +void forget(CtdlIPC *ipc); +void entroom(CtdlIPC *ipc); +void killroom(CtdlIPC *ipc); +void invite(CtdlIPC *ipc); +void kickout(CtdlIPC *ipc); +void editthisroom(CtdlIPC *ipc); +void roomdir(CtdlIPC *ipc); +void download(CtdlIPC *ipc, int proto); +void ungoto(CtdlIPC *ipc); +void dotungoto(CtdlIPC *ipc, char *towhere); +void whoknows(CtdlIPC *ipc); +void enterinfo(CtdlIPC *ipc); +void knrooms(CtdlIPC *ipc, int kn_floor_mode); +void dotknown(CtdlIPC *ipc, int what, char *match); +void load_floorlist(CtdlIPC *ipc); +void create_floor(CtdlIPC *ipc); +void edit_floor(CtdlIPC *ipc); +void kill_floor(CtdlIPC *ipc); +void enter_bio(CtdlIPC *ipc); +int save_buffer(void *file, size_t filelen, const char *pathname); +void destination_directory(char *dest, const char *supplied_filename); +void do_edit(CtdlIPC *ipc, char *desc, char *read_cmd, char *check_cmd, char *write_cmd); -extern char *axdefs[]; -extern char *viewdefs[]; -#endif +/* + * This struct holds a list of rooms for client display. + * (oooh, a tree!) + */ +struct ctdlroomlisting { + struct ctdlroomlisting *lnext; + struct ctdlroomlisting *rnext; + char rlname[ROOMNAMELEN]; + unsigned rlflags; + int rlfloor; + int rlorder; + }; + + +enum { + LISTRMS_NEW_ONLY, + LISTRMS_OLD_ONLY, + LISTRMS_ALL +}; + + +void updatels(CtdlIPC *ipc); +void updatelsa(CtdlIPC *ipc); +void movefile(CtdlIPC *ipc); +void deletefile(CtdlIPC *ipc); +void netsendfile(CtdlIPC *ipc); +void entregis(CtdlIPC *ipc); +void subshell(void); +void upload(CtdlIPC *ipc, int c); +void cli_upload(CtdlIPC *ipc); +void validate(CtdlIPC *ipc); +void read_bio(CtdlIPC *ipc); +void cli_image_upload(CtdlIPC *ipc, char *keyname); +int room_prompt(unsigned int qrflags); +int val_user(CtdlIPC *ipc, char *user, int do_validate); + +void edituser(CtdlIPC *ipc, int cmd); +void interr(int errnum); +int struncmp(char *lstr, char *rstr, int len); +int pattern(char *search, char *patn); +void enter_config(CtdlIPC* ipc, int mode); +void locate_host(CtdlIPC* ipc, char *hbuf); +void misc_server_cmd(CtdlIPC *ipc, char *cmd); +int nukedir(char *dirname); +void strproc(char *string); +void back(int spaces); +void progress(CtdlIPC* ipc, unsigned long curr, unsigned long cmax); +int set_attr(CtdlIPC *ipc, unsigned int sval, char *prompt, unsigned int sbit, int backwards); + +void screen_new(void); +int scr_printf(char *fmt, ...); +#define SCR_NOBLOCK 0 +#define SCR_BLOCK -1 +int scr_getc(int delay); +int scr_putc(int c); +void scr_flush(void); +int scr_blockread(void); +sighandler_t scr_winch(int signum); +void wait_indicator(int state); +void ctdl_beep(void); +void scr_wait_indicator(int); +extern char status_line[]; +extern void check_screen_dims(void); +extern int screenwidth; +extern int screenheight; +void do_internet_configuration(CtdlIPC *ipc); +void network_config_management(CtdlIPC *ipc, char *entrytype, char *comment); +void do_pop3client_configuration(CtdlIPC *ipc); +void do_rssclient_configuration(CtdlIPC *ipc); +void do_system_configuration(CtdlIPC *ipc); +extern char editor_path[PATH_MAX]; +extern int enable_status_line; diff --git a/textclient/src/tuiconfig.c b/textclient/tuiconfig.c similarity index 97% rename from textclient/src/tuiconfig.c rename to textclient/tuiconfig.c index 0f6d64a59..efc7affc5 100644 --- a/textclient/src/tuiconfig.c +++ b/textclient/tuiconfig.c @@ -12,45 +12,7 @@ * GNU General Public License for more details. */ -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#if TIME_WITH_SYS_TIME -# include -# include -#else -# if HAVE_SYS_TIME_H -# include -# else -# include -# endif -#endif - -#include -#include -#include -#include -#include -#include "sysdep.h" -#include "citadel_ipc.h" -#include "citadel_decls.h" -#include "tuiconfig.h" -#include "messages.h" -#include "routines.h" -#include "commands.h" -#include "screen.h" - -/* work around solaris include files */ -#ifdef reg -#undef reg -#endif +#include "textclient.h" extern char temp[]; extern char tempdir[]; -- 2.30.2