From: Wilfried Göesgens Date: Sun, 15 Jan 2006 21:33:48 +0000 (+0000) Subject: calculate the directories in a central manner. X-Git-Tag: v7.86~4315 X-Git-Url: https://code.citadel.org/?p=citadel.git;a=commitdiff_plain;h=e612033104c17c8adcad19d7dc8efbafa8b33f2e calculate the directories in a central manner. LHFS'ified installations may use multi-homed installations now too. --- diff --git a/citadel/ChangeLog b/citadel/ChangeLog index 684be2422..be9279425 100644 --- a/citadel/ChangeLog +++ b/citadel/ChangeLog @@ -1,5 +1,9 @@ $Id$ +Sun Jan 15 22:29 MET 2006 dothebart +* calculate the directories in a central manner. + LHFS'ified installations may use multi-homed installations now too. + Sun Jan 15 00:00:13 EST 2006 ajc * citserver.c: patch submitted by matt to keep the client protocol from getting out of sync following a .h? command. diff --git a/citadel/aidepost.c b/citadel/aidepost.c index 1bc26dcd4..082418949 100644 --- a/citadel/aidepost.c +++ b/citadel/aidepost.c @@ -98,12 +98,8 @@ int main(int argc, char **argv) } snprintf(tempspool, sizeof tempspool, -#ifndef HAVE_SPOOL_DIR - CTDLDIR -#else - SPOOL_DIR -#endif - "/network/spoolin/ap.%04lx", + "%s/ap.%04lx", + ctdl_netin_dir, (long)getpid()); unlink(tempspool); diff --git a/citadel/buildpackages b/citadel/buildpackages index 78c64ad95..5d74274de 100755 --- a/citadel/buildpackages +++ b/citadel/buildpackages @@ -1,6 +1,6 @@ #!/bin/bash -CITADEL_VERSION=`grep "THIS IS" ChangeLog |head -n 1|sed "s;.* ;;"` +CITADEL_VERSION=`grep '#define CITADEL.*Citadel' citadel.h |sed -e 's;";;g' -e "s;.* ;;"` PACKAGE_VERSION=`cat packageversion` DATE=`date '+%a, %d %b %Y %H:%I:00 %z'` ACTUAL_DIR=`pwd` @@ -21,7 +21,7 @@ else if test "$done" = "false"; then cd .. mv -- $SYMLINK "citadel-$CITADEL_VERSION" - ln -s "citadel-$CITADEL_VERSION" citadel + ln -sf "citadel-$CITADEL_VERSION" citadel cd "citadel-$CITADEL_VERSION" else cd "../citadel-$CITADEL_VERSION" diff --git a/citadel/citserver.c b/citadel/citserver.c index 0e0fc71f1..89c9538b2 100644 --- a/citadel/citserver.c +++ b/citadel/citserver.c @@ -306,12 +306,12 @@ int is_public_client(void) struct stat statbuf; static time_t pc_timestamp = 0; static char public_clients[SIZ]; + static char public_clients_file[SIZ]; -#ifndef HAVE_ETC -#define PUBLIC_CLIENTS "./public_clients" -#else -#define PUBLIC_CLIENTS ETC_DIR"/public_clients" -#endif + snprintf(public_clients_file, + sizeof public_clients_file, + "%s/public_clients", + ctdl_etc_dir); /* * Check the time stamp on the public_clients file. If it's been @@ -319,15 +319,16 @@ int is_public_client(void) * time we've been through the loop), read its contents and learn * the IP addresses of the listed hosts. */ - if (stat(PUBLIC_CLIENTS, &statbuf) != 0) { + if (stat(public_clients_file, &statbuf) != 0) { /* No public_clients file exists, so bail out */ - lprintf(CTDL_WARNING, "Warning: '%s' does not exist\n", PUBLIC_CLIENTS); + lprintf(CTDL_WARNING, "Warning: '%s' does not exist\n", + public_clients_file); return(0); } if (statbuf.st_mtime > pc_timestamp) { begin_critical_section(S_PUBLIC_CLIENTS); - lprintf(CTDL_INFO, "Loading %s\n", PUBLIC_CLIENTS); + lprintf(CTDL_INFO, "Loading %s\n", public_clients_file); safestrncpy(public_clients, "127.0.0.1", sizeof public_clients); if (hostname_to_dotted_quad(addrbuf, config.c_fqdn) == 0) { @@ -335,13 +336,7 @@ int is_public_client(void) strcat(public_clients, addrbuf); } - fp = fopen( -#ifndef HAVE_ETC - "." -#else - ETC_DIR -#endif - "/public_clients", "r"); + fp = fopen(public_clients_file, "r"); if (fp != NULL) while (fgets(buf, sizeof buf, fp)!=NULL) { for (i=0; ics_clientdev, CC->cs_clienttyp); @@ -550,17 +536,8 @@ void cmd_emsg(char *mname) if (buf[a] == '/') buf[a] = '.'; } -#ifdef HAVE_DATA_DIR - dirs[0] = strdup(DATA_DIR "/messages"); -#else - dirs[0] = strdup("messages"); -#endif - -#ifdef HAVE_DATA_DIR - dirs[1] = strdup(DATA_DIR "/help"); -#else - dirs[1] = strdup("help"); -#endif + dirs[0] = strdup(ctdl_message_dir); + dirs[1] = strdup(ctdl_hlp_dir); mesg_locate(targ, sizeof targ, buf, 2, (const char**)dirs); free(dirs[0]); @@ -568,12 +545,8 @@ void cmd_emsg(char *mname) if (strlen(targ)==0) { snprintf(targ, sizeof targ, -#ifndef HAVE_DATA_DIR - "." -#else - DATA_DIR -#endif - "/help/%s", buf); + "%s/%s", + ctdl_hlp_dir, buf); } mfp = fopen(targ,"w"); diff --git a/citadel/config.c b/citadel/config.c index f5d4750e5..66c09b327 100644 --- a/citadel/config.c +++ b/citadel/config.c @@ -20,7 +20,24 @@ #include "config.h" struct config config; -char ctdl_home_directory[PATH_MAX] = CTDLDIR; +/* CTDLDIR */ +char ctdl_home_directory[PATH_MAX] = ""; +char ctdl_bio_dir[PATH_MAX]="bio"; +char ctdl_bb_dir[PATH_MAX]="bitbucket"; +char ctdl_data_dir[PATH_MAX]="data"; +char ctdl_file_dir[PATH_MAX]="files"; +char ctdl_hlp_dir[PATH_MAX]="help"; +char ctdl_image_dir[PATH_MAX]="images"; +char ctdl_info_dir[PATH_MAX]="info"; +char ctdl_key_dir[PATH_MAX]="keys"; +char ctdl_message_dir[PATH_MAX]="messages"; +char ctdl_usrpic_dir[PATH_MAX]="userpics"; +char ctdl_etc_dir[PATH_MAX]=""; +char ctdl_run_dir[PATH_MAX]=""; +char ctdl_spool_dir[PATH_MAX]="network"; +char ctdl_netout_dir[PATH_MAX]="network/spoolout"; +char ctdl_netin_dir[PATH_MAX]="network/spoolin"; + int home_specified = 0; /* diff --git a/citadel/config.guess b/citadel/config.guess index 45bee1398..ad5281e66 100755 --- a/citadel/config.guess +++ b/citadel/config.guess @@ -3,7 +3,7 @@ # Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, # 2000, 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc. -timestamp='2005-04-22' +timestamp='2005-08-03' # 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 @@ -17,13 +17,15 @@ timestamp='2005-04-22' # # 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. +# 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. @@ -66,11 +68,11 @@ Try \`$me --help' for more information." while test $# -gt 0 ; do case $1 in --time-stamp | --time* | -t ) - echo "$timestamp" ; exit 0 ;; + echo "$timestamp" ; exit ;; --version | -v ) - echo "$version" ; exit 0 ;; + echo "$version" ; exit ;; --help | --h* | -h ) - echo "$usage"; exit 0 ;; + echo "$usage"; exit ;; -- ) # Stop option processing shift; break ;; - ) # Use stdin as input. @@ -123,7 +125,7 @@ case $CC_FOR_BUILD,$HOST_CC,$CC in ;; ,,*) CC_FOR_BUILD=$CC ;; ,*,*) CC_FOR_BUILD=$HOST_CC ;; -esac ;' +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) @@ -196,55 +198,20 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in # contains redundant information, the shorter form: # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used. echo "${machine}-${os}${release}" - exit 0 ;; - amd64:OpenBSD:*:*) - echo x86_64-unknown-openbsd${UNAME_RELEASE} - exit 0 ;; - amiga:OpenBSD:*:*) - echo m68k-unknown-openbsd${UNAME_RELEASE} - exit 0 ;; - cats:OpenBSD:*:*) - echo arm-unknown-openbsd${UNAME_RELEASE} - exit 0 ;; - hp300:OpenBSD:*:*) - echo m68k-unknown-openbsd${UNAME_RELEASE} - exit 0 ;; - luna88k:OpenBSD:*:*) - echo m88k-unknown-openbsd${UNAME_RELEASE} - exit 0 ;; - mac68k:OpenBSD:*:*) - echo m68k-unknown-openbsd${UNAME_RELEASE} - exit 0 ;; - macppc:OpenBSD:*:*) - echo powerpc-unknown-openbsd${UNAME_RELEASE} - exit 0 ;; - mvme68k:OpenBSD:*:*) - echo m68k-unknown-openbsd${UNAME_RELEASE} - exit 0 ;; - mvme88k:OpenBSD:*:*) - echo m88k-unknown-openbsd${UNAME_RELEASE} - exit 0 ;; - mvmeppc:OpenBSD:*:*) - echo powerpc-unknown-openbsd${UNAME_RELEASE} - exit 0 ;; - sgi:OpenBSD:*:*) - echo mips64-unknown-openbsd${UNAME_RELEASE} - exit 0 ;; - sun3:OpenBSD:*:*) - echo m68k-unknown-openbsd${UNAME_RELEASE} - exit 0 ;; + exit ;; *:OpenBSD:*:*) - echo ${UNAME_MACHINE}-unknown-openbsd${UNAME_RELEASE} - exit 0 ;; + 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 0 ;; + exit ;; macppc:MirBSD:*:*) echo powerppc-unknown-mirbsd${UNAME_RELEASE} - exit 0 ;; + exit ;; *:MirBSD:*:*) echo ${UNAME_MACHINE}-unknown-mirbsd${UNAME_RELEASE} - exit 0 ;; + exit ;; alpha:OSF1:*:*) case $UNAME_RELEASE in *4.0) @@ -297,40 +264,43 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in # 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 0 ;; + 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 0 ;; + exit ;; 21064:Windows_NT:50:3) echo alpha-dec-winnt3.5 - exit 0 ;; + exit ;; Amiga*:UNIX_System_V:4.0:*) echo m68k-unknown-sysv4 - exit 0;; + exit ;; *:[Aa]miga[Oo][Ss]:*:*) echo ${UNAME_MACHINE}-unknown-amigaos - exit 0 ;; + exit ;; *:[Mm]orph[Oo][Ss]:*:*) echo ${UNAME_MACHINE}-unknown-morphos - exit 0 ;; + exit ;; *:OS/390:*:*) echo i370-ibm-openedition - exit 0 ;; + exit ;; *:z/VM:*:*) echo s390-ibm-zvmoe - exit 0 ;; + exit ;; *:OS400:*:*) echo powerpc-ibm-os400 - exit 0 ;; + exit ;; arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*) echo arm-acorn-riscix${UNAME_RELEASE} - exit 0;; + 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 0;; + 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 @@ -338,32 +308,32 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in else echo pyramid-pyramid-bsd fi - exit 0 ;; + exit ;; NILE*:*:*:dcosx) echo pyramid-pyramid-svr4 - exit 0 ;; + exit ;; DRS?6000:unix:4.0:6*) echo sparc-icl-nx6 - exit 0 ;; + 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 0 ;; + sparc) echo sparc-icl-nx7; exit ;; esac ;; sun4H:SunOS:5.*:*) echo sparc-hal-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` - exit 0 ;; + exit ;; sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*) echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` - exit 0 ;; + exit ;; i86pc:SunOS:5.*:*) echo i386-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` - exit 0 ;; + 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 0 ;; + exit ;; sun4*:SunOS:*:*) case "`/usr/bin/arch -k`" in Series*|S4*) @@ -372,10 +342,10 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in esac # Japanese Language versions have a version number like `4.1.3-JL'. echo sparc-sun-sunos`echo ${UNAME_RELEASE}|sed -e 's/-/_/'` - exit 0 ;; + exit ;; sun3*:SunOS:*:*) echo m68k-sun-sunos${UNAME_RELEASE} - exit 0 ;; + 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 @@ -387,10 +357,10 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in echo sparc-sun-sunos${UNAME_RELEASE} ;; esac - exit 0 ;; + exit ;; aushp:SunOS:*:*) echo sparc-auspex-sunos${UNAME_RELEASE} - exit 0 ;; + 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 @@ -401,40 +371,40 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in # be no problem. atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*) echo m68k-atari-mint${UNAME_RELEASE} - exit 0 ;; + exit ;; atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*) echo m68k-atari-mint${UNAME_RELEASE} - exit 0 ;; + exit ;; *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*) echo m68k-atari-mint${UNAME_RELEASE} - exit 0 ;; + exit ;; milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*) echo m68k-milan-mint${UNAME_RELEASE} - exit 0 ;; + exit ;; hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*) echo m68k-hades-mint${UNAME_RELEASE} - exit 0 ;; + exit ;; *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*) echo m68k-unknown-mint${UNAME_RELEASE} - exit 0 ;; + exit ;; m68k:machten:*:*) echo m68k-apple-machten${UNAME_RELEASE} - exit 0 ;; + exit ;; powerpc:machten:*:*) echo powerpc-apple-machten${UNAME_RELEASE} - exit 0 ;; + exit ;; RISC*:Mach:*:*) echo mips-dec-mach_bsd4.3 - exit 0 ;; + exit ;; RISC*:ULTRIX:*:*) echo mips-dec-ultrix${UNAME_RELEASE} - exit 0 ;; + exit ;; VAX*:ULTRIX*:*:*) echo vax-dec-ultrix${UNAME_RELEASE} - exit 0 ;; + exit ;; 2020:CLIX:*:* | 2430:CLIX:*:*) echo clipper-intergraph-clix${UNAME_RELEASE} - exit 0 ;; + exit ;; mips:*:*:UMIPS | mips:*:*:RISCos) eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c @@ -458,32 +428,33 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in exit (-1); } EOF - $CC_FOR_BUILD -o $dummy $dummy.c \ - && $dummy `echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` \ - && exit 0 + $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 0 ;; + exit ;; Motorola:PowerMAX_OS:*:*) echo powerpc-motorola-powermax - exit 0 ;; + exit ;; Motorola:*:4.3:PL8-*) echo powerpc-harris-powermax - exit 0 ;; + exit ;; Night_Hawk:*:*:PowerMAX_OS | Synergy:PowerMAX_OS:*:*) echo powerpc-harris-powermax - exit 0 ;; + exit ;; Night_Hawk:Power_UNIX:*:*) echo powerpc-harris-powerunix - exit 0 ;; + exit ;; m88k:CX/UX:7*:*) echo m88k-harris-cxux7 - exit 0 ;; + exit ;; m88k:*:4*:R4*) echo m88k-motorola-sysv4 - exit 0 ;; + exit ;; m88k:*:3*:R3*) echo m88k-motorola-sysv3 - exit 0 ;; + exit ;; AViiON:dgux:*:*) # DG/UX returns AViiON for all architectures UNAME_PROCESSOR=`/usr/bin/uname -p` @@ -499,29 +470,29 @@ EOF else echo i586-dg-dgux${UNAME_RELEASE} fi - exit 0 ;; + exit ;; M88*:DolphinOS:*:*) # DolphinOS (SVR3) echo m88k-dolphin-sysv3 - exit 0 ;; + exit ;; M88*:*:R3*:*) # Delta 88k system running SVR3 echo m88k-motorola-sysv3 - exit 0 ;; + exit ;; XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3) echo m88k-tektronix-sysv3 - exit 0 ;; + exit ;; Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD) echo m68k-tektronix-bsd - exit 0 ;; + exit ;; *:IRIX*:*:*) echo mips-sgi-irix`echo ${UNAME_RELEASE}|sed -e 's/-/_/g'` - exit 0 ;; + 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 0 ;; # Note that: echo "'`uname -s`'" gives '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 0 ;; + exit ;; ia64:AIX:*:*) if [ -x /usr/bin/oslevel ] ; then IBM_REV=`/usr/bin/oslevel` @@ -529,7 +500,7 @@ EOF IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE} fi echo ${UNAME_MACHINE}-ibm-aix${IBM_REV} - exit 0 ;; + exit ;; *:AIX:2:3) if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then eval $set_cc_for_build @@ -544,14 +515,18 @@ EOF exit(0); } EOF - $CC_FOR_BUILD -o $dummy $dummy.c && $dummy && exit 0 - echo rs6000-ibm-aix3.2.5 + 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 0 ;; + 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 @@ -565,28 +540,28 @@ EOF IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE} fi echo ${IBM_ARCH}-ibm-aix${IBM_REV} - exit 0 ;; + exit ;; *:AIX:*:*) echo rs6000-ibm-aix - exit 0 ;; + exit ;; ibmrt:4.4BSD:*|romp-ibm:BSD:*) echo romp-ibm-bsd4.4 - exit 0 ;; + exit ;; ibmrt:*BSD:*|romp-ibm:BSD:*) # covers RT/PC BSD and echo romp-ibm-bsd${UNAME_RELEASE} # 4.3 with uname added to - exit 0 ;; # report: romp-ibm BSD 4.3 + exit ;; # report: romp-ibm BSD 4.3 *:BOSX:*:*) echo rs6000-bull-bosx - exit 0 ;; + exit ;; DPX/2?00:B.O.S.:*:*) echo m68k-bull-sysv3 - exit 0 ;; + exit ;; 9000/[34]??:4.3bsd:1.*:*) echo m68k-hp-bsd - exit 0 ;; + exit ;; hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*) echo m68k-hp-bsd4.4 - exit 0 ;; + exit ;; 9000/[34678]??:HP-UX:*:*) HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` case "${UNAME_MACHINE}" in @@ -648,9 +623,19 @@ EOF esac if [ ${HP_ARCH} = "hppa2.0w" ] then - # avoid double evaluation of $set_cc_for_build - test -n "$CC_FOR_BUILD" || eval $set_cc_for_build - if echo __LP64__ | (CCOPTS= $CC_FOR_BUILD -E -) | grep __LP64__ >/dev/null + 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 @@ -658,11 +643,11 @@ EOF fi fi echo ${HP_ARCH}-hp-hpux${HPUX_REV} - exit 0 ;; + exit ;; ia64:HP-UX:*:*) HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` echo ia64-hp-hpux${HPUX_REV} - exit 0 ;; + exit ;; 3050*:HI-UX:*:*) eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c @@ -690,161 +675,166 @@ EOF exit (0); } EOF - $CC_FOR_BUILD -o $dummy $dummy.c && $dummy && exit 0 + $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy` && + { echo "$SYSTEM_NAME"; exit; } echo unknown-hitachi-hiuxwe2 - exit 0 ;; + exit ;; 9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:* ) echo hppa1.1-hp-bsd - exit 0 ;; + exit ;; 9000/8??:4.3bsd:*:*) echo hppa1.0-hp-bsd - exit 0 ;; + exit ;; *9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*) echo hppa1.0-hp-mpeix - exit 0 ;; + exit ;; hp7??:OSF1:*:* | hp8?[79]:OSF1:*:* ) echo hppa1.1-hp-osf - exit 0 ;; + exit ;; hp8??:OSF1:*:*) echo hppa1.0-hp-osf - exit 0 ;; + exit ;; i*86:OSF1:*:*) if [ -x /usr/sbin/sysversion ] ; then echo ${UNAME_MACHINE}-unknown-osf1mk else echo ${UNAME_MACHINE}-unknown-osf1 fi - exit 0 ;; + exit ;; parisc*:Lites*:*:*) echo hppa1.1-hp-lites - exit 0 ;; + exit ;; C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*) echo c1-convex-bsd - exit 0 ;; + exit ;; C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*) if getsysinfo -f scalar_acc then echo c32-convex-bsd else echo c2-convex-bsd fi - exit 0 ;; + exit ;; C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*) echo c34-convex-bsd - exit 0 ;; + exit ;; C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*) echo c38-convex-bsd - exit 0 ;; + exit ;; C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*) echo c4-convex-bsd - exit 0 ;; + exit ;; CRAY*Y-MP:*:*:*) echo ymp-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' - exit 0 ;; + 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 0 ;; + exit ;; CRAY*TS:*:*:*) echo t90-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' - exit 0 ;; + exit ;; CRAY*T3E:*:*:*) echo alphaev5-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' - exit 0 ;; + exit ;; CRAY*SV1:*:*:*) echo sv1-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' - exit 0 ;; + exit ;; *:UNICOS/mp:*:*) echo craynv-cray-unicosmp${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' - exit 0 ;; + 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 0 ;; + 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 0 ;; + exit ;; i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*) echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE} - exit 0 ;; + exit ;; sparc*:BSD/OS:*:*) echo sparc-unknown-bsdi${UNAME_RELEASE} - exit 0 ;; + exit ;; *:BSD/OS:*:*) echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE} - exit 0 ;; + exit ;; *:FreeBSD:*:*) echo ${UNAME_MACHINE}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` - exit 0 ;; + exit ;; i*:CYGWIN*:*) echo ${UNAME_MACHINE}-pc-cygwin - exit 0 ;; + exit ;; i*:MINGW*:*) echo ${UNAME_MACHINE}-pc-mingw32 - exit 0 ;; + exit ;; + i*:windows32*:*) + # uname -m includes "-pc" on this system. + echo ${UNAME_MACHINE}-mingw32 + exit ;; i*:PW*:*) echo ${UNAME_MACHINE}-pc-pw32 - exit 0 ;; + exit ;; x86:Interix*:[34]*) echo i586-pc-interix${UNAME_RELEASE}|sed -e 's/\..*//' - exit 0 ;; + exit ;; [345]86:Windows_95:* | [345]86:Windows_98:* | [345]86:Windows_NT:*) echo i${UNAME_MACHINE}-pc-mks - exit 0 ;; + 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 0 ;; + exit ;; i*:UWIN*:*) echo ${UNAME_MACHINE}-pc-uwin - exit 0 ;; - amd64:CYGWIN*:*:*) + exit ;; + amd64:CYGWIN*:*:* | x86_64:CYGWIN*:*:*) echo x86_64-unknown-cygwin - exit 0 ;; + exit ;; p*:CYGWIN*:*) echo powerpcle-unknown-cygwin - exit 0 ;; + exit ;; prep*:SunOS:5.*:*) echo powerpcle-unknown-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` - exit 0 ;; + exit ;; *:GNU:*:*) # the GNU system echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-gnu`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'` - exit 0 ;; + 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 0 ;; + exit ;; i*86:Minix:*:*) echo ${UNAME_MACHINE}-pc-minix - exit 0 ;; + exit ;; arm*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu - exit 0 ;; + exit ;; cris:Linux:*:*) echo cris-axis-linux-gnu - exit 0 ;; + exit ;; crisv32:Linux:*:*) echo crisv32-axis-linux-gnu - exit 0 ;; + exit ;; frv:Linux:*:*) echo frv-unknown-linux-gnu - exit 0 ;; + exit ;; ia64:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu - exit 0 ;; + exit ;; m32r*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu - exit 0 ;; + exit ;; m68*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu - exit 0 ;; + exit ;; mips:Linux:*:*) eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c @@ -862,7 +852,7 @@ EOF #endif EOF eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^CPU=` - test x"${CPU}" != x && echo "${CPU}-unknown-linux-gnu" && exit 0 + test x"${CPU}" != x && { echo "${CPU}-unknown-linux-gnu"; exit; } ;; mips64:Linux:*:*) eval $set_cc_for_build @@ -881,14 +871,17 @@ EOF #endif EOF eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^CPU=` - test x"${CPU}" != x && echo "${CPU}-unknown-linux-gnu" && exit 0 + 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 0 ;; + exit ;; ppc64:Linux:*:*) echo powerpc64-unknown-linux-gnu - exit 0 ;; + exit ;; alpha:Linux:*:*) case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in EV5) UNAME_MACHINE=alphaev5 ;; @@ -902,7 +895,7 @@ EOF 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 0 ;; + exit ;; parisc:Linux:*:* | hppa:Linux:*:*) # Look for CPU level case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in @@ -910,25 +903,25 @@ EOF PA8*) echo hppa2.0-unknown-linux-gnu ;; *) echo hppa-unknown-linux-gnu ;; esac - exit 0 ;; + exit ;; parisc64:Linux:*:* | hppa64:Linux:*:*) echo hppa64-unknown-linux-gnu - exit 0 ;; + exit ;; s390:Linux:*:* | s390x:Linux:*:*) echo ${UNAME_MACHINE}-ibm-linux - exit 0 ;; + exit ;; sh64*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu - exit 0 ;; + exit ;; sh*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu - exit 0 ;; + exit ;; sparc:Linux:*:* | sparc64:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu - exit 0 ;; + exit ;; x86_64:Linux:*:*) echo x86_64-unknown-linux-gnu - exit 0 ;; + 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 @@ -946,15 +939,15 @@ EOF ;; a.out-i386-linux) echo "${UNAME_MACHINE}-pc-linux-gnuaout" - exit 0 ;; + exit ;; coff-i386) echo "${UNAME_MACHINE}-pc-linux-gnucoff" - exit 0 ;; + 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 0 ;; + exit ;; esac # Determine whether the default compiler is a.out or elf eval $set_cc_for_build @@ -982,15 +975,18 @@ EOF #endif EOF eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^LIBC=` - test x"${LIBC}" != x && echo "${UNAME_MACHINE}-pc-linux-${LIBC}" && exit 0 - test x"${TENTATIVE}" != x && echo "${TENTATIVE}" && exit 0 + 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 0 ;; + 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... @@ -998,27 +994,27 @@ EOF # I just have to hope. -- rms. # Use sysv4.2uw... so that sysv4* matches it. echo ${UNAME_MACHINE}-pc-sysv4.2uw${UNAME_VERSION} - exit 0 ;; + 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 0 ;; + exit ;; i*86:XTS-300:*:STOP) echo ${UNAME_MACHINE}-unknown-stop - exit 0 ;; + exit ;; i*86:atheos:*:*) echo ${UNAME_MACHINE}-unknown-atheos - exit 0 ;; - i*86:syllable:*:*) + exit ;; + i*86:syllable:*:*) echo ${UNAME_MACHINE}-pc-syllable - exit 0 ;; + exit ;; i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.0*:*) echo i386-unknown-lynxos${UNAME_RELEASE} - exit 0 ;; + exit ;; i*86:*DOS:*:*) echo ${UNAME_MACHINE}-pc-msdosdjgpp - exit 0 ;; + 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 @@ -1026,15 +1022,16 @@ EOF else echo ${UNAME_MACHINE}-pc-sysv${UNAME_REL} fi - exit 0 ;; - i*86:*:5:[78]*) + 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 0 ;; + exit ;; i*86:*:3.2:*) if test -f /usr/options/cb.name; then UNAME_REL=`sed -n 's/.*Version //p' /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 0 ;; + exit ;; mini*:CTIX:SYS*5:*) # "miniframe" echo m68010-convergent-sysv - exit 0 ;; + exit ;; mc68k:UNIX:SYSTEM5:3.51m) echo m68k-convergent-sysv - exit 0 ;; + exit ;; M680?0:D-NIX:5.3:*) echo m68k-diab-dnix - exit 0 ;; + exit ;; M68*:*:R3V[5678]*:*) - test -r /sysV68 && echo 'm68k-motorola-sysv' && exit 0 ;; + 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 0 + && { 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 0 ;; + && { 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 0 ;; + && { echo i486-ncr-sysv4; exit; } ;; m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*) echo m68k-unknown-lynxos${UNAME_RELEASE} - exit 0 ;; + exit ;; mc68030:UNIX_System_V:4.*:*) echo m68k-atari-sysv4 - exit 0 ;; + exit ;; TSUNAMI:LynxOS:2.*:*) echo sparc-unknown-lynxos${UNAME_RELEASE} - exit 0 ;; + exit ;; rs6000:LynxOS:2.*:*) echo rs6000-unknown-lynxos${UNAME_RELEASE} - exit 0 ;; + exit ;; PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.0*:*) echo powerpc-unknown-lynxos${UNAME_RELEASE} - exit 0 ;; + exit ;; SM[BE]S:UNIX_SV:*:*) echo mips-dde-sysv${UNAME_RELEASE} - exit 0 ;; + exit ;; RM*:ReliantUNIX-*:*:*) echo mips-sni-sysv4 - exit 0 ;; + exit ;; RM*:SINIX-*:*:*) echo mips-sni-sysv4 - exit 0 ;; + exit ;; *:SINIX-*:*:*) if uname -p 2>/dev/null >/dev/null ; then UNAME_MACHINE=`(uname -p) 2>/dev/null` @@ -1126,65 +1123,65 @@ EOF else echo ns32k-sni-sysv fi - exit 0 ;; + exit ;; PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort # says echo i586-unisys-sysv4 - exit 0 ;; + exit ;; *:UNIX_System_V:4*:FTX*) # From Gerald Hewes . # How about differentiating between stratus architectures? -djm echo hppa1.1-stratus-sysv4 - exit 0 ;; + exit ;; *:*:*:FTX*) # From seanf@swdc.stratus.com. echo i860-stratus-sysv4 - exit 0 ;; + exit ;; i*86:VOS:*:*) # From Paul.Green@stratus.com. echo ${UNAME_MACHINE}-stratus-vos - exit 0 ;; + exit ;; *:VOS:*:*) # From Paul.Green@stratus.com. echo hppa1.1-stratus-vos - exit 0 ;; + exit ;; mc68*:A/UX:*:*) echo m68k-apple-aux${UNAME_RELEASE} - exit 0 ;; + exit ;; news*:NEWS-OS:6*:*) echo mips-sony-newsos6 - exit 0 ;; + 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 0 ;; + exit ;; BeBox:BeOS:*:*) # BeOS running on hardware made by Be, PPC only. echo powerpc-be-beos - exit 0 ;; + exit ;; BeMac:BeOS:*:*) # BeOS running on Mac or Mac clone, PPC only. echo powerpc-apple-beos - exit 0 ;; + exit ;; BePC:BeOS:*:*) # BeOS running on Intel PC compatible. echo i586-pc-beos - exit 0 ;; + exit ;; SX-4:SUPER-UX:*:*) echo sx4-nec-superux${UNAME_RELEASE} - exit 0 ;; + exit ;; SX-5:SUPER-UX:*:*) echo sx5-nec-superux${UNAME_RELEASE} - exit 0 ;; + exit ;; SX-6:SUPER-UX:*:*) echo sx6-nec-superux${UNAME_RELEASE} - exit 0 ;; + exit ;; Power*:Rhapsody:*:*) echo powerpc-apple-rhapsody${UNAME_RELEASE} - exit 0 ;; + exit ;; *:Rhapsody:*:*) echo ${UNAME_MACHINE}-apple-rhapsody${UNAME_RELEASE} - exit 0 ;; + exit ;; *:Darwin:*:*) UNAME_PROCESSOR=`uname -p` || UNAME_PROCESSOR=unknown case $UNAME_PROCESSOR in @@ -1192,7 +1189,7 @@ EOF unknown) UNAME_PROCESSOR=powerpc ;; esac echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE} - exit 0 ;; + exit ;; *:procnto*:*:* | *:QNX:[0123456789]*:*) UNAME_PROCESSOR=`uname -p` if test "$UNAME_PROCESSOR" = "x86"; then @@ -1200,25 +1197,25 @@ EOF UNAME_MACHINE=pc fi echo ${UNAME_PROCESSOR}-${UNAME_MACHINE}-nto-qnx${UNAME_RELEASE} - exit 0 ;; + exit ;; *:QNX:*:4*) echo i386-pc-qnx - exit 0 ;; + exit ;; NSE-?:NONSTOP_KERNEL:*:*) echo nse-tandem-nsk${UNAME_RELEASE} - exit 0 ;; + exit ;; NSR-?:NONSTOP_KERNEL:*:*) echo nsr-tandem-nsk${UNAME_RELEASE} - exit 0 ;; + exit ;; *:NonStop-UX:*:*) echo mips-compaq-nonstopux - exit 0 ;; + exit ;; BS2000:POSIX*:*:*) echo bs2000-siemens-sysv - exit 0 ;; + exit ;; DS/*:UNIX_System_V:*:*) echo ${UNAME_MACHINE}-${UNAME_SYSTEM}-${UNAME_RELEASE} - exit 0 ;; + exit ;; *:Plan9:*:*) # "uname -m" is not consistent, so use $cputype instead. 386 # is converted to i386 for consistency with other x86 @@ -1229,41 +1226,44 @@ EOF UNAME_MACHINE="$cputype" fi echo ${UNAME_MACHINE}-unknown-plan9 - exit 0 ;; + exit ;; *:TOPS-10:*:*) echo pdp10-unknown-tops10 - exit 0 ;; + exit ;; *:TENEX:*:*) echo pdp10-unknown-tenex - exit 0 ;; + exit ;; KS10:TOPS-20:*:* | KL10:TOPS-20:*:* | TYPE4:TOPS-20:*:*) echo pdp10-dec-tops20 - exit 0 ;; + exit ;; XKL-1:TOPS-20:*:* | TYPE5:TOPS-20:*:*) echo pdp10-xkl-tops20 - exit 0 ;; + exit ;; *:TOPS-20:*:*) echo pdp10-unknown-tops20 - exit 0 ;; + exit ;; *:ITS:*:*) echo pdp10-unknown-its - exit 0 ;; + exit ;; SEI:*:*:SEIUX) echo mips-sei-seiux${UNAME_RELEASE} - exit 0 ;; + exit ;; *:DragonFly:*:*) echo ${UNAME_MACHINE}-unknown-dragonfly`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` - exit 0 ;; + exit ;; *:*VMS:*:*) UNAME_MACHINE=`(uname -p) 2>/dev/null` case "${UNAME_MACHINE}" in - A*) echo alpha-dec-vms && exit 0 ;; - I*) echo ia64-dec-vms && exit 0 ;; - V*) echo vax-dec-vms && exit 0 ;; + 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 0 ;; + exit ;; + i*86:skyos:*:*) + echo ${UNAME_MACHINE}-pc-skyos`echo ${UNAME_RELEASE}` | sed -e 's/ .*$//' + exit ;; esac #echo '(No uname command or uname output not recognized.)' 1>&2 @@ -1295,7 +1295,7 @@ main () #endif #if defined (__arm) && defined (__acorn) && defined (__unix) - printf ("arm-acorn-riscix"); exit (0); + printf ("arm-acorn-riscix\n"); exit (0); #endif #if defined (hp300) && !defined (hpux) @@ -1384,11 +1384,12 @@ main () } EOF -$CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null && $dummy && exit 0 +$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 0; } +test -d /usr/apollo && { echo ${ISP}-apollo-${SYSTYPE}; exit; } # Convex versions that predate uname can use getsysinfo(1) @@ -1397,22 +1398,22 @@ then case `getsysinfo -f cpu_type` in c1*) echo c1-convex-bsd - exit 0 ;; + exit ;; c2*) if getsysinfo -f scalar_acc then echo c32-convex-bsd else echo c2-convex-bsd fi - exit 0 ;; + exit ;; c34*) echo c34-convex-bsd - exit 0 ;; + exit ;; c38*) echo c38-convex-bsd - exit 0 ;; + exit ;; c4*) echo c4-convex-bsd - exit 0 ;; + exit ;; esac fi diff --git a/citadel/config.h b/citadel/config.h index d6268366c..2550102c0 100644 --- a/citadel/config.h +++ b/citadel/config.h @@ -80,3 +80,25 @@ void put_config(void); extern struct config config; extern char ctdl_home_directory[PATH_MAX]; extern int home_specified; + + + +extern char ctdl_bio_dir[PATH_MAX]; +extern char ctdl_bb_dir[PATH_MAX]; +extern char ctdl_data_dir[PATH_MAX]; +extern char ctdl_file_dir[PATH_MAX]; +extern char ctdl_hlp_dir[PATH_MAX]; +extern char ctdl_image_dir[PATH_MAX]; +extern char ctdl_info_dir[PATH_MAX]; +extern char ctdl_key_dir[PATH_MAX]; +extern char ctdl_message_dir[PATH_MAX]; +extern char ctdl_usrpic_dir[PATH_MAX]; +extern char ctdl_etc_dir[PATH_MAX]; +extern char ctdl_run_dir[PATH_MAX]; +extern char ctdl_spool_dir[PATH_MAX]; +extern char ctdl_netout_dir[PATH_MAX]; +extern char ctdl_netin_dir[PATH_MAX]; + + + + diff --git a/citadel/config.sub b/citadel/config.sub index 87a1ee49e..1c366dfde 100755 --- a/citadel/config.sub +++ b/citadel/config.sub @@ -3,7 +3,7 @@ # Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, # 2000, 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc. -timestamp='2005-04-22' +timestamp='2005-07-08' # This file is (in principle) common to ALL GNU software. # The presence of a machine in this file suggests that SOME GNU software @@ -21,14 +21,15 @@ timestamp='2005-04-22' # # 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. - +# 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. # @@ -83,11 +84,11 @@ Try \`$me --help' for more information." while test $# -gt 0 ; do case $1 in --time-stamp | --time* | -t ) - echo "$timestamp" ; exit 0 ;; + echo "$timestamp" ; exit ;; --version | -v ) - echo "$version" ; exit 0 ;; + echo "$version" ; exit ;; --help | --h* | -h ) - echo "$usage"; exit 0 ;; + echo "$usage"; exit ;; -- ) # Stop option processing shift; break ;; - ) # Use stdin as input. @@ -99,7 +100,7 @@ while test $# -gt 0 ; do *local*) # First pass through any local machine types. echo $1 - exit 0;; + exit ;; * ) break ;; @@ -247,6 +248,7 @@ case $basic_machine in | mips64vr4100 | mips64vr4100el \ | mips64vr4300 | mips64vr4300el \ | mips64vr5000 | mips64vr5000el \ + | mips64vr5900 | mips64vr5900el \ | mipsisa32 | mipsisa32el \ | mipsisa32r2 | mipsisa32r2el \ | mipsisa64 | mipsisa64el \ @@ -255,13 +257,14 @@ case $basic_machine in | mipsisa64sr71k | mipsisa64sr71kel \ | mipstx39 | mipstx39el \ | mn10200 | mn10300 \ + | ms1 \ | msp430 \ | ns16k | ns32k \ - | openrisc | or32 \ + | or32 \ | pdp10 | pdp11 | pj | pjl \ | powerpc | powerpc64 | powerpc64le | powerpcle | ppcbe \ | pyramid \ - | sh | sh[1234] | sh[23]e | sh[34]eb | shbe | shle | sh[1234]le | sh3ele \ + | sh | sh[1234] | sh[24]a | sh[23]e | sh[34]eb | shbe | shle | sh[1234]le | sh3ele \ | sh64 | sh64le \ | sparc | sparc64 | sparc64b | sparc86x | sparclet | sparclite \ | sparcv8 | sparcv9 | sparcv9b \ @@ -273,6 +276,9 @@ case $basic_machine in | z8k) basic_machine=$basic_machine-unknown ;; + m32c) + basic_machine=$basic_machine-unknown + ;; m6811 | m68hc11 | m6812 | m68hc12) # Motorola 68HC11/12. basic_machine=$basic_machine-unknown @@ -321,6 +327,7 @@ case $basic_machine in | mips64vr4100-* | mips64vr4100el-* \ | mips64vr4300-* | mips64vr4300el-* \ | mips64vr5000-* | mips64vr5000el-* \ + | mips64vr5900-* | mips64vr5900el-* \ | mipsisa32-* | mipsisa32el-* \ | mipsisa32r2-* | mipsisa32r2el-* \ | mipsisa64-* | mipsisa64el-* \ @@ -329,6 +336,7 @@ case $basic_machine in | mipsisa64sr71k-* | mipsisa64sr71kel-* \ | mipstx39-* | mipstx39el-* \ | mmix-* \ + | ms1-* \ | msp430-* \ | none-* | np1-* | ns16k-* | ns32k-* \ | orion-* \ @@ -336,7 +344,7 @@ case $basic_machine in | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* | ppcbe-* \ | pyramid-* \ | romp-* | rs6000-* \ - | sh-* | sh[1234]-* | sh[23]e-* | sh[34]eb-* | shbe-* \ + | sh-* | sh[1234]-* | sh[24]a-* | sh[23]e-* | sh[34]eb-* | shbe-* \ | shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \ | sparc-* | sparc64-* | sparc64b-* | sparc86x-* | sparclet-* \ | sparclite-* \ @@ -351,6 +359,8 @@ case $basic_machine in | ymp-* \ | z8k-*) ;; + m32c-*) + ;; # Recognize the various machine names and aliases which stand # for a CPU type and a company and sometimes even an OS. 386bsd) @@ -761,9 +771,8 @@ case $basic_machine in basic_machine=hppa1.1-oki os=-proelf ;; - or32 | or32-*) + openrisc | openrisc-*) basic_machine=or32-unknown - os=-coff ;; os400) basic_machine=powerpc-ibm @@ -1089,12 +1098,9 @@ case $basic_machine in we32k) basic_machine=we32k-att ;; - sh3 | sh4 | sh[34]eb | sh[1234]le | sh[23]ele) + sh[1234] | sh[24]a | sh[34]eb | sh[1234]le | sh[23]ele) basic_machine=sh-unknown ;; - sh64) - basic_machine=sh64-unknown - ;; sparc | sparcv8 | sparcv9 | sparcv9b) basic_machine=sparc-sun ;; @@ -1181,7 +1187,8 @@ case $os in | -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \ | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \ | -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \ - | -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly*) + | -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \ + | -skyos* | -haiku*) # Remember, each alternative MUST END IN *, to match a version number. ;; -qnx*) @@ -1199,7 +1206,7 @@ case $os in os=`echo $os | sed -e 's|nto|nto-qnx|'` ;; -sim | -es1800* | -hms* | -xray | -os68k* | -none* | -v88r* \ - | -windows* | -osx | -abug | -netware* | -os9* | -beos* \ + | -windows* | -osx | -abug | -netware* | -os9* | -beos* | -haiku* \ | -macos* | -mpw* | -magic* | -mmixware* | -mon960* | -lnews*) ;; -mac*) @@ -1388,6 +1395,9 @@ case $basic_machine in *-be) os=-beos ;; + *-haiku) + os=-haiku + ;; *-ibm) os=-aix ;; @@ -1559,7 +1569,7 @@ case $basic_machine in esac echo $basic_machine$os -exit 0 +exit # Local variables: # eval: (add-hook 'write-file-hooks 'time-stamp) diff --git a/citadel/database_sleepycat.c b/citadel/database_sleepycat.c index 30e1e0b77..529c64cb3 100644 --- a/citadel/database_sleepycat.c +++ b/citadel/database_sleepycat.c @@ -334,12 +334,7 @@ void open_databases(void) struct dirent *d; char filename[PATH_MAX]; -#ifndef HAVE_DATA_DIR - getcwd(dbdirname, sizeof dbdirname); - strcat(dbdirname, "/data"); -#else - strcat(dbdirname, DATA_DIR"/data"); -#endif + strcat(dbdirname,ctdl_data_dir); lprintf(CTDL_DEBUG, "cdb_*: open_databases() starting\n"); lprintf(CTDL_DEBUG, "Compiled db: %s\n", DB_VERSION_STRING); diff --git a/citadel/debian/changelog b/citadel/debian/changelog index c1924ee45..98133136d 100644 --- a/citadel/debian/changelog +++ b/citadel/debian/changelog @@ -1,3 +1,10 @@ +citadel (6.70-1) unstable; urgency=low + + * update to actual Citadel CVS. many new features. see Packages changelog. + + -- Wilfried Goesgens Sun, 15 Jan 2006 15:03:00 +0100 + + citadel (6.63-1) unstable; urgency=low * update to actual Citadel CVS. many new features. see Packages changelog. diff --git a/citadel/debian/citadel-server.postinst b/citadel/debian/citadel-server.postinst index 6c3216b7f..432274101 100644 --- a/citadel/debian/citadel-server.postinst +++ b/citadel/debian/citadel-server.postinst @@ -158,7 +158,8 @@ case "$1" in db_get citadel/Administrator && admin="$RET" db_get citadel/ServerIPAddress && ip_addr="$RET" - export CITADEL=/usr/sbin/ + export IP_ADDR=$ip_addr + export CITADEL='' export CITADEL_INSTALLER=yes export ACT_AS_MTA=no export SYSADMIN_NAME=$admin diff --git a/citadel/file_ops.c b/citadel/file_ops.c index 97aa235b4..926d7b357 100644 --- a/citadel/file_ops.c +++ b/citadel/file_ops.c @@ -132,13 +132,9 @@ void cmd_delf(char *filename) filename[a] = '_'; } } - snprintf(pathname, sizeof pathname, -#ifndef HAVE_DATA_DIR - "." -#else - DATA_DIR -#endif - "/files/%s/%s", + snprintf(pathname, sizeof pathname, + "%s/%s/%s", + ctdl_file_dir, CC->room.QRdirname, filename); a = unlink(pathname); if (a == 0) { @@ -272,12 +268,8 @@ void cmd_netf(char *cmdbuf) return; } snprintf(outfile, sizeof outfile, -#ifndef HAVE_SPOOL_DIR - "." -#else - SPOOL_DIR -#endif - "/network/spoolin/nsf.%04lx.%04x", + "%s/nsf.%04lx.%04x", + ctdl_netin_dir, (long)getpid(), ++seq); ofp = fopen(outfile, "a"); if (ofp == NULL) { @@ -307,14 +299,9 @@ void cmd_netf(char *cmdbuf) fclose(ofp); snprintf(buf, sizeof buf, - "cd " -#ifndef HAVE_DATA_DIR - "." -#else - DATA_DIR -#endif + "cd %s/%s; uuencode %s <%s 2>/dev/null >>%s", + ctdl_file_dir, /* FIXME: detect uuencode while installation? or inline */ - "/files/%s; uuencode %s <%s 2>/dev/null >>%s", CC->room.QRdirname, filename, filename, outfile); system(buf); @@ -388,12 +375,9 @@ void cmd_open(char *cmdbuf) } snprintf(pathname, sizeof pathname, -#ifndef HAVE_DATA_DIR - "." -#else - DATA_DIR -#endif - "/files/%s/%s", CC->room.QRdirname, filename); + "%s/%s/%s", + ctdl_file_dir, + CC->room.QRdirname, filename); CC->download_fp = fopen(pathname, "r"); if (CC->download_fp == NULL) { @@ -439,22 +423,14 @@ void cmd_oimg(char *cmdbuf) return; } snprintf(pathname, sizeof pathname, -#ifndef HAVE_DATA_DIR - "." -#else - DATA_DIR -#endif - "/userpics/%ld.gif", + "%s/%ld.gif", + ctdl_usrpic_dir, usbuf.usernum); } else if (!strcasecmp(filename, "_floorpic_")) { which_floor = extract_int(cmdbuf, 1); snprintf(pathname, sizeof pathname, -#ifndef HAVE_DATA_DIR - "." -#else - DATA_DIR -#endif - "/images/floor.%d.gif", which_floor); + "%s/floor.%d.gif", + ctdl_image_dir, which_floor); } else if (!strcasecmp(filename, "_roompic_")) { assoc_file_name(pathname, sizeof pathname, &CC->room, "images"); } else { @@ -464,13 +440,9 @@ void cmd_oimg(char *cmdbuf) filename[a] = '_'; } } - snprintf(pathname, sizeof pathname, -#ifndef HAVE_DATA_DIR - "." -#else - DATA_DIR -#endif - "/images/%s.gif", + snprintf(pathname, sizeof pathname, + "%s/%s.gif", + ctdl_image_dir, filename); } @@ -520,20 +492,13 @@ void cmd_uopn(char *cmdbuf) } } snprintf(CC->upl_path, sizeof CC->upl_path, -#ifndef HAVE_DATA_DIR - "." -#else - DATA_DIR -#endif - "/files/%s/%s", + "%s/%s/%s", + ctdl_file_dir, CC->room.QRdirname, CC->upl_file); snprintf(CC->upl_filedir, sizeof CC->upl_filedir, -#ifndef HAVE_DATA_DIR - "." -#else - DATA_DIR -#endif - "/files/%s/filedir", CC->room.QRdirname); + "%s/%s/filedir", + ctdl_file_dir, + CC->room.QRdirname); CC->upload_fp = fopen(CC->upl_path, "r"); if (CC->upload_fp != NULL) { @@ -589,35 +554,25 @@ void cmd_uimg(char *cmdbuf) if (CC->user.axlevel >= 6) { snprintf(CC->upl_path, sizeof CC->upl_path, -#ifndef HAVE_DATA_DIR - "." -#else - DATA_DIR -#endif - "/images/%s", + "%s/%s", + ctdl_image_dir, basenm); } if (!strcasecmp(basenm, "_userpic_")) { snprintf(CC->upl_path, sizeof CC->upl_path, -#ifndef HAVE_DATA_DIR - "." -#else - DATA_DIR -#endif - "/userpics/%ld.gif", CC->user.usernum); + "%s/%ld.gif", + ctdl_usrpic_dir, + CC->user.usernum); } if ((!strcasecmp(basenm, "_floorpic_")) && (CC->user.axlevel >= 6)) { which_floor = extract_int(cmdbuf, 2); snprintf(CC->upl_path, sizeof CC->upl_path, -#ifndef HAVE_DATA_DIR - "." -#else - DATA_DIR -#endif - "/images/floor.%d.gif", which_floor); + "%s/floor.%d.gif", + ctdl_image_dir, + which_floor); } if ((!strcasecmp(basenm, "_roompic_")) && (is_room_aide())) { @@ -665,12 +620,8 @@ void cmd_clos(void) if (CC->dl_is_net == 1) { CC->dl_is_net = 0; snprintf(buf, sizeof buf, -#ifndef HAVE_SPOOL_DIR - "." -#else - SPOOL_DIR -#endif - "/network/spoolout/%s", + "%s/%s", + ctdl_netout_dir, CC->net_node); unlink(buf); } @@ -829,12 +780,8 @@ void cmd_ndop(char *cmdbuf) } snprintf(pathname, sizeof pathname, -#ifndef HAVE_SPOOL_DIR - "." -#else - SPOOL_DIR -#endif - "/network/spoolout/%s", + "%s/%s", + ctdl_netout_dir, CC->net_node); /* first open the file in append mode in order to create a @@ -882,13 +829,11 @@ void cmd_nuop(char *cmdbuf) } snprintf(CC->upl_path, sizeof CC->upl_path, -#ifndef HAVE_SPOOL_DIR - "." -#else - SPOOL_DIR -#endif - "/network/spoolin/%s.%04lx.%04x", - CC->net_node, (long)getpid(), ++seq); + "%s/%s.%04lx.%04x", + ctdl_netin_dir, + CC->net_node, + (long)getpid(), + ++seq); CC->upload_fp = fopen(CC->upl_path, "r"); if (CC->upload_fp != NULL) { diff --git a/citadel/msgbase.c b/citadel/msgbase.c index 69d7d2621..2af13d95e 100644 --- a/citadel/msgbase.c +++ b/citadel/msgbase.c @@ -138,18 +138,26 @@ int alias(char *name) char node[64]; char testnode[64]; char buf[SIZ]; + char filename[256]; striplt(name); remove_any_whitespace_to_the_left_or_right_of_at_symbol(name); stripallbut(name, '<', '>'); - fp = fopen( + /* + * DIRTY HACK FOLLOWS! due to configs in the network dir in the + * legacy installations, we need to calculate ifdeffed here. + */ + snprintf(filename, + sizeof filename, + "%s/mail.aliases", #ifndef HAVE_ETG_DIR - "network/" + ctdl_spool_dir #else - ETC_DIR + ctdl_etc_dir #endif - "mail.aliases", "r"); + ); + fp = fopen(filename, "r"); if (fp == NULL) { fp = fopen("/dev/null", "r"); } @@ -243,14 +251,15 @@ int alias(char *name) void get_mm(void) { FILE *fp; + char filename[256]; - fp = fopen( -#ifndef HAVE_DATA_DIR - "." -#else - DATA_DIR -#endif - "/citadel.control", "r"); + snprintf(filename, + sizeof filename, + "%s/citadel.control", + ctdl_etc_dir + ); + + fp = fopen(filename, "r"); if (fp == NULL) { lprintf(CTDL_CRIT, "Cannot open citadel.control: %s\n", strerror(errno)); @@ -2382,12 +2391,8 @@ long CtdlSubmitMsg(struct CtdlMessage *msg, /* message to save */ serialize_message(&smr, msg); if (smr.len > 0) { snprintf(submit_filename, sizeof submit_filename, -#ifndef HAVE_SPOOL_DIR - "." -#else - SPOOL_DIR -#endif - "/network/spoolin/netmail.%04lx.%04x.%04x", + "%s/netmail.%04lx.%04x.%04x", + ctdl_netin_dir, (long) getpid(), CC->cs_pid, ++seqnum); network_fp = fopen(submit_filename, "wb+"); if (network_fp != NULL) { diff --git a/citadel/room_ops.c b/citadel/room_ops.c index dd2f60ce6..ea4fc1a08 100644 --- a/citadel/room_ops.c +++ b/citadel/room_ops.c @@ -1104,32 +1104,23 @@ void cmd_rdir(void) cprintf("%d not here.\n", ERROR + HIGHER_ACCESS_REQUIRED); return; } - cprintf("%d %s|" -#ifndef HAVE_DATA_DIR - "." -#else - DATA_DIR -#endif - "/files/%s\n", - LISTING_FOLLOWS, config.c_fqdn, CC->room.QRdirname); + cprintf("%d %s|%s/%s\n", + LISTING_FOLLOWS, + config.c_fqdn, + ctdl_file_dir, + CC->room.QRdirname); - snprintf(buf, sizeof buf, "ls " -#ifndef HAVE_DATA_DIR - "." -#else - DATA_DIR -#endif - "/files/%s >%s 2> /dev/null", - CC->room.QRdirname, tempfilename); + snprintf(buf, sizeof buf, + "ls %s/%s >%s 2>/dev/null", + ctdl_file_dir, + CC->room.QRdirname, + tempfilename); system(buf); snprintf(buf, sizeof buf, -#ifndef HAVE_DATA_DIR - "." -#else - DATA_DIR -#endif - "/files/%s/filedir", CC->room.QRdirname); + "%s/%s/filedir", + ctdl_file_dir, + CC->room.QRdirname); fd = fopen(buf, "r"); if (fd == NULL) fd = fopen("/dev/null", "r"); @@ -1139,13 +1130,10 @@ void cmd_rdir(void) flnm[strlen(flnm) - 1] = 0; if (strcasecmp(flnm, "filedir")) { snprintf(buf, sizeof buf, -#ifndef HAVE_DATA_DIR - "." -#else - DATA_DIR -#endif - "/files/%s/%s", - CC->room.QRdirname, flnm); + "%s/%s/%s", + ctdl_file_dir, + CC->room.QRdirname, + flnm); stat(buf, &statbuf); safestrncpy(comment, "", sizeof comment); fseek(fd, 0L, 0); @@ -1451,13 +1439,9 @@ void cmd_setr(char *args) /* Create a room directory if necessary */ if (CC->room.QRflags & QR_DIRECTORY) { - snprintf(buf, sizeof buf, -#ifndef HAVE_DATA_DIR - "." -#else - DATA_DIR -#endif - "/files/%s", CC->room.QRdirname); + snprintf(buf, sizeof buf,"%s/%s", + ctdl_file_dir, + CC->room.QRdirname); mkdir(buf, 0755); } snprintf(buf, sizeof buf, "The room \"%s\" has been edited by %s.\n", diff --git a/citadel/serv_network.c b/citadel/serv_network.c index b1c4c162f..d0033e4fd 100644 --- a/citadel/serv_network.c +++ b/citadel/serv_network.c @@ -837,13 +837,8 @@ void network_spool_msg(long msgnum, void *userdata) { serialize_message(&sermsg, msg); /* write it to the spool file */ - snprintf(filename, sizeof filename, -#ifndef HAVE_SPOOL_DIR - "." -#else - SPOOL_DIR -#endif /* HAVE_SPOOL_DIR */ - "/network/spoolout/%s", + snprintf(filename, sizeof filename,"%s/%s", + ctdl_netout_dir, mptr->remote_nodename); lprintf(CTDL_DEBUG, "Appending to %s\n", filename); fp = fopen(filename, "ab"); @@ -1394,13 +1389,11 @@ void network_process_buffer(char *buffer, long size) { if (strlen(nexthop) == 0) { strcpy(nexthop, msg->cm_fields['D']); } - snprintf(filename, sizeof filename, -#ifndef HAVE_SPOOL_DIR - "." -#else - SPOOL_DIR -#endif /* HAVE_SPOOL_DIR */ - "/network/spoolout/%s", nexthop); + snprintf(filename, + sizeof filename, + "%s/%s", + ctdl_netout_dir, + nexthop); lprintf(CTDL_DEBUG, "Appending to %s\n", filename); fp = fopen(filename, "ab"); if (fp != NULL) { @@ -1571,19 +1564,12 @@ void network_do_spoolin(void) { struct stat statbuf; char filename[256]; static time_t last_spoolin_mtime = 0L; - const char *spoolin_dirname = -#ifndef HAVE_SPOOL_DIR - "." -#else - SPOOL_DIR -#endif /* HAVE_SPOOL_DIR */ - "/network/spoolin"; /* * Check the spoolin directory's modification time. If it hasn't * been touched, we don't need to scan it. */ - if (stat(spoolin_dirname, &statbuf)) return; + if (stat(ctdl_netin_dir, &statbuf)) return; if (statbuf.st_mtime == last_spoolin_mtime) { lprintf(CTDL_DEBUG, "network: nothing in inbound queue\n"); return; @@ -1594,18 +1580,16 @@ void network_do_spoolin(void) { /* * Ok, there's something interesting in there, so scan it. */ - dp = opendir(spoolin_dirname); + dp = opendir(ctdl_netin_dir); if (dp == NULL) return; while (d = readdir(dp), d != NULL) { if ((strcmp(d->d_name, ".")) && (strcmp(d->d_name, ".."))) { - snprintf(filename, sizeof filename, -#ifndef HAVE_SPOOL_DIR - "." -#else - SPOOL_DIR -#endif /* HAVE_SPOOL_DIR */ - "/network/spoolin/%s", d->d_name); + snprintf(filename, + sizeof filename, + "%s/%s", + ctdl_netin_dir, + d->d_name); network_process_file(filename); } } @@ -1624,25 +1608,17 @@ void network_purge_spoolout(void) { char nexthop[256]; int i; - dp = opendir( -#ifndef HAVE_SPOOL_DIR - "." -#else - SPOOL_DIR -#endif /* HAVE_SPOOL_DIR */ - "/network/spoolout"); + dp = opendir(ctdl_netout_dir); if (dp == NULL) return; while (d = readdir(dp), d != NULL) { if (!strcmp(d->d_name, ".") || !strcmp(d->d_name, "..")) continue; - snprintf(filename, sizeof filename, -#ifndef HAVE_SPOOL_DIR - "." -#else - SPOOL_DIR -#endif /* HAVE_SPOOL_DIR */ - "/network/spoolout/%s", d->d_name); + snprintf(filename, + sizeof filename, + "%s/%s", + ctdl_netout_dir, + d->d_name); strcpy(nexthop, ""); i = is_valid_node(nexthop, NULL, d->d_name); @@ -1727,14 +1703,13 @@ void receive_spool(int sock, char *remote_nodename) { download_len, remote_nodename); lprintf(CTDL_DEBUG, "%s", buf); /* TODO: make move inline. forking is verry expensive. */ - snprintf(buf, sizeof buf, "mv %s " -#ifndef HAVE_SPOOL_DIR - "." -#else - SPOOL_DIR -#endif /* HAVE_SPOOL_DIR */ - "/network/spoolin/%s.%ld", - tempfilename, remote_nodename, (long) getpid()); + snprintf(buf, + sizeof buf, + "mv %s %s/%s.%ld", + tempfilename, + ctdl_netin_dir, + remote_nodename, + (long) getpid()); system(buf); } @@ -1760,12 +1735,9 @@ void transmit_spool(int sock, char *remote_nodename) } snprintf(sfname, sizeof sfname, -#ifndef HAVE_SPOOL_DIR - "." -#else - SPOOL_DIR -#endif /* HAVE_SPOOL_DIR */ - "/network/spoolout/%s", remote_nodename); + "%s/%s", + ctdl_netout_dir, + remote_nodename); fd = open(sfname, O_RDONLY); if (fd < 0) { if (errno != ENOENT) { @@ -1891,13 +1863,11 @@ void network_poll_other_citadel_nodes(int full_poll) { && (strlen(host) > 0) && strlen(port) > 0) { poll = full_poll; if (poll == 0) { - snprintf(spoolfile, sizeof spoolfile, -#ifndef HAVE_SPOOL_DIR - "." -#else - SPOOL_DIR -#endif - "/network/spoolout/%s", node); + snprintf(spoolfile, + sizeof spoolfile, + "%s/%s", + ctdl_netout_dir, + node); if (access(spoolfile, R_OK) == 0) { poll = 1; } @@ -1917,21 +1887,12 @@ void network_poll_other_citadel_nodes(int full_poll) { * It's ok if these directories already exist. Just fail silently. */ void create_spool_dirs(void) { -#ifndef HAVE_SPOOL_DIR - mkdir("./network", 0700); - chown("./network", CTDLUID, (-1)); - mkdir("./network/spoolin", 0700); - chown("./network/spoolin", CTDLUID, (-1)); - mkdir("./network/spoolout", 0700); - chown("./network/spoolout", CTDLUID, (-1)); -#else - mkdir(SPOOL_DIR "/network", 0700); - chown(SPOOL_DIR "./network", CTDLUID, (-1)); - mkdir(SPOOL_DIR "/network/spoolin", 0700); - chown(SPOOL_DIR "./network/spoolin", CTDLUID, (-1)); - mkdir(SPOOL_DIR "/network/spoolout", 0700); - chown(SPOOL_DIR "./network/spoolout", CTDLUID, (-1)); -#endif /* HAVE_SPOOL_DIR */ + mkdir(ctdl_spool_dir, 0700); + chown(ctdl_spool_dir, CTDLUID, (-1)); + mkdir(ctdl_netin_dir, 0700); + chown(ctdl_netin_dir, CTDLUID, (-1)); + mkdir(ctdl_netout_dir, 0700); + chown(ctdl_netout_dir, CTDLUID, (-1)); } diff --git a/citadel/serv_smtp.c b/citadel/serv_smtp.c index 8cc2b9bf5..3b5ddb9a9 100644 --- a/citadel/serv_smtp.c +++ b/citadel/serv_smtp.c @@ -1723,6 +1723,8 @@ void smtp_cleanup_function(void) { char *serv_smtp_init(void) { + char filename[256]; + CtdlRegisterServiceHook(config.c_smtp_port, /* SMTP MTA */ NULL, smtp_greeting, @@ -1743,24 +1745,22 @@ char *serv_smtp_init(void) smtp_command_loop, NULL); + snprintf(filename, + sizeof filename, + "%s/lmtp.sock", + ctdl_run_dir); CtdlRegisterServiceHook(0, /* local LMTP */ -#ifndef HAVE_RUN_DIR - "." -#else - RUN_DIR -#endif - "/lmtp.socket", + filename, lmtp_greeting, smtp_command_loop, NULL); + snprintf(filename, + sizeof filename, + "%s/lmtp-unfiltered.sock", + ctdl_run_dir); CtdlRegisterServiceHook(0, /* local LMTP */ -#ifndef HAVE_RUN_DIR - "." -#else - RUN_DIR -#endif - "/lmtp-unfiltered.socket", + filename, lmtp_unfiltered_greeting, smtp_command_loop, NULL); diff --git a/citadel/server_main.c b/citadel/server_main.c index a87787f88..34f49d022 100644 --- a/citadel/server_main.c +++ b/citadel/server_main.c @@ -74,7 +74,13 @@ int main(int argc, char **argv) struct passwd *pw; int drop_root_perms = 1; size_t size; - + int relh=0; + int home=0; + const char* basedir; + char dirbuffer[PATH_MAX]=""; + char relhome[PATH_MAX]=""; + char ctdldir[PATH_MAX]=CTDLDIR; + /* initialize the master context */ InitializeMasterCC(); @@ -98,9 +104,14 @@ int main(int argc, char **argv) } else if (!strncmp(argv[a], "-h", 2)) { - safestrncpy(ctdl_home_directory, &argv[a][2], - sizeof ctdl_home_directory); + relh=argv[a][2]!='/'; + if (!relh) safestrncpy(ctdl_home_directory, &argv[a][2], + sizeof ctdl_home_directory); + else + safestrncpy(relhome, &argv[a][2], + sizeof relhome); home_specified = 1; + home=1; } else if (!strncmp(argv[a], "-t", 2)) { @@ -130,6 +141,57 @@ int main(int argc, char **argv) } + /* calculate all our path on a central place */ + /* where to keep our config */ + +#define COMPUTE_DIRECTORY(SUBDIR) memcpy(dirbuffer,SUBDIR, sizeof dirbuffer);\ + snprintf(SUBDIR,sizeof SUBDIR, "%s%s%s%s%s%s%s", \ + (home&!relh)?ctdl_home_directory:basedir, \ + ((basedir!=ctdldir)&(home&!relh))?basedir:"/", \ + ((basedir!=ctdldir)&(home&!relh))?"/":"", \ + relhome, \ + (relhome[0]!='\0')?"/":"",\ + dirbuffer,\ + (dirbuffer[0]!='\0')?"/":""); + +#ifndef HAVE_ETC_DIR + basedir=ctdldir; +#else + basedir=ETC_DIR; +#endif + COMPUTE_DIRECTORY(ctdl_etc_dir); + +#ifndef HAVE_RUN_DIR + basedir=ctdldir; +#else + basedir=RUN_DIR; +#endif + COMPUTE_DIRECTORY(ctdl_run_dir); + +#ifndef HAVE_DATA_DIR + basedir=ctdldir; +#else + basedir=DATA_DIR; +#endif + COMPUTE_DIRECTORY(ctdl_bio_dir); + COMPUTE_DIRECTORY(ctdl_bb_dir); + COMPUTE_DIRECTORY(ctdl_data_dir); + COMPUTE_DIRECTORY(ctdl_file_dir); + COMPUTE_DIRECTORY(ctdl_hlp_dir); + COMPUTE_DIRECTORY(ctdl_image_dir); + COMPUTE_DIRECTORY(ctdl_info_dir); + COMPUTE_DIRECTORY(ctdl_message_dir); + COMPUTE_DIRECTORY(ctdl_usrpic_dir); +#ifndef HAVE_SPOOL_DIR + basedir=ctdldir; +#else + basedir=SPOOL_DIR; +#endif + COMPUTE_DIRECTORY(ctdl_spool_dir); + COMPUTE_DIRECTORY(ctdl_netout_dir); + COMPUTE_DIRECTORY(ctdl_netin_dir); + + /* daemonize, if we were asked to */ if (running_as_daemon) { start_daemon(0); diff --git a/citadel/setup.c b/citadel/setup.c index afa242115..5ac145b22 100644 --- a/citadel/setup.c +++ b/citadel/setup.c @@ -47,6 +47,7 @@ int setup_type; char setup_directory[SIZ]; char citserver_init_entry[SIZ]; int using_web_installer = 0; +int enable_home = 1; #ifdef HAVE_LDAP void contemplate_ldap(void); @@ -62,11 +63,55 @@ char *setup_titles[] = }; +struct config config; +/* CTDLDIR */ +char ctdl_home_directory[PATH_MAX] = ""; +char ctdl_bio_dir[PATH_MAX]="bio"; +char ctdl_bb_dir[PATH_MAX]="bitbucket"; +char ctdl_data_dir[PATH_MAX]="data"; +char ctdl_file_dir[PATH_MAX]="files"; +char ctdl_hlp_dir[PATH_MAX]="help"; +char ctdl_image_dir[PATH_MAX]="images"; +char ctdl_info_dir[PATH_MAX]="info"; +char ctdl_key_dir[PATH_MAX]="keys"; +char ctdl_message_dir[PATH_MAX]="messages"; +char ctdl_usrpic_dir[PATH_MAX]="userpics"; +char ctdl_etc_dir[PATH_MAX]=""; +char ctdl_run_dir[PATH_MAX]=""; +char ctdl_spool_dir[PATH_MAX]="network"; +char ctdl_netout_dir[PATH_MAX]="network/spoolout"; +char ctdl_netin_dir[PATH_MAX]="network/spoolin"; + + +char citadel_rc_file[PATH_MAX]=""; + + /* calculate all our path on a central place */ + /* where to keep our config */ + +#define COMPUTE_DIRECTORY(SUBDIR) memcpy(dirbuffer,SUBDIR, sizeof dirbuffer);\ + snprintf(SUBDIR,sizeof SUBDIR, "%s%s%s%s%s%s%s", \ + (home&!relh)?ctdl_home_directory:basedir, \ + ((basedir!=ctdldir)&(home&!relh))?basedir:"/", \ + ((basedir!=ctdldir)&(home&!relh))?"/":"", \ + relhome, \ + (relhome[0]!='\0')?"/":"",\ + dirbuffer,\ + (dirbuffer[0]!='\0')?"/":""); + + char *setup_text[] = { +#ifndef HAVE_RUN_DIR "Enter the full pathname of the directory in which the Citadel\n" "installation you are creating or updating resides. If you\n" "specify a directory other than the default, you will need to\n" "specify the -h flag to the server when you start it up.\n", +#else +"Enter the subdirectoryname for an alternating installation of " +"Citadel. To do a default installation just leave it blank." +"If you specify a directory other than the default, you will need to\n" +"specify the -h flag to the server when you start it up.\n" +"note that it may not have a leading /", +#endif "Enter the name of the system administrator (which is probably\n" "you). When an account is created with this name, it will\n" @@ -193,7 +238,15 @@ void locate_init_entry(char *init_entry, char *looking_for) { void shutdown_citserver(void) { char looking_for[SIZ]; - snprintf(looking_for, sizeof looking_for, "%s/citserver", setup_directory); + snprintf(looking_for, + sizeof looking_for, + "%s/citserver", +#ifndef HAVE_RUN_DIR + setup_directory +#else + CTDLDIR +#endif + ); locate_init_entry(citserver_init_entry, looking_for); if (strlen(citserver_init_entry) > 0) { set_init_entry(citserver_init_entry, "off"); @@ -514,7 +567,15 @@ void check_inittab_entry(void) char entryname[5]; /* Determine the fully qualified path name of citserver */ - snprintf(looking_for, sizeof looking_for, "%s/citserver", setup_directory); + snprintf(looking_for, + sizeof looking_for, + "%s/citserver", +#ifndef HAVE_RUN_DIR + setup_directory +#else + CTDLDIR +#endif + ); locate_init_entry(citserver_init_entry, looking_for); /* If there's already an entry, then we have nothing left to do. */ @@ -548,8 +609,11 @@ void check_inittab_entry(void) display_error(strerror(errno)); } else { fprintf(infp, "# Start the Citadel server...\n"); - fprintf(infp, "%s:2345:respawn:%s -h%s -x3 -llocal4\n", - entryname, looking_for, setup_directory); + fprintf(infp, "%s:2345:respawn:%s %s%s -x3 -llocal4\n", + entryname, + looking_for, + (enable_home)?"-h":"", + (enable_home)?setup_directory:""); fclose(infp); strcpy(citserver_init_entry, entryname); } @@ -606,8 +670,12 @@ void check_xinetd_entry(void) { " server_args = -h -L %s/citadel\n" " log_on_failure += USERID\n" "}\n", - setup_directory - ); +#ifndef HAVE_RUN_DIR + setup_directory +#else + RUN_DIR +#endif + ); fclose(fp); /* Now try to restart the service */ @@ -685,10 +753,15 @@ int test_server(void) { */ sprintf(cookie, "--test--%d--", getpid()); - sprintf(cmd, "%s/sendcommand -h%s ECHO %s 2>&1", - setup_directory, - setup_directory, - cookie); + sprintf(cmd, "%s/sendcommand %s%s ECHO %s 2>&1", +#ifndef HAVE_RUN_DIR + setup_directory, +#else + CTDLDIR, +#endif + (enable_home)?"-h":"", + (enable_home)?setup_directory:"", + cookie); fp = popen(cmd, "r"); if (fp == NULL) return(errno); @@ -927,7 +1000,7 @@ int discover_ui(void) int main(int argc, char *argv[]) { int a; - int curr; + int curr; char aaa[128]; FILE *fp; int old_setup_level = 0; @@ -936,7 +1009,13 @@ int main(int argc, char *argv[]) struct passwd *pw; struct hostent *he; gid_t gid; - + int relh=0; + int home=0; + const char* basedir; + char dirbuffer[PATH_MAX]=""; + char relhome[PATH_MAX]=""; + char ctdldir[PATH_MAX]=CTDLDIR; + /* set an invalid setup type */ setup_type = (-1); @@ -973,7 +1052,13 @@ int main(int argc, char *argv[]) } /* Get started in a valid setup directory. */ - strcpy(setup_directory, CTDLDIR); + strcpy(setup_directory, +#ifdef HAVE_RUN_DIR + "" +#else + CTDLDIR +#endif + ); if ( (using_web_installer) && (getenv("CITADEL") != NULL) ) { strcpy(setup_directory, getenv("CITADEL")); } @@ -981,7 +1066,53 @@ int main(int argc, char *argv[]) set_str_val(0, setup_directory); } - if (chdir(setup_directory) != 0) { + home=(setup_directory[1]!='\0'); + relh=home&(setup_directory[1]!='/'); + if (!relh) safestrncpy(ctdl_home_directory, setup_directory, + sizeof ctdl_home_directory); + else + safestrncpy(relhome, ctdl_home_directory, + sizeof relhome); + +#ifndef HAVE_ETC_DIR + basedir=ctdldir; +#else + basedir=ETC_DIR; +#endif + COMPUTE_DIRECTORY(ctdl_etc_dir); + +#ifndef HAVE_RUN_DIR + basedir=ctdldir; +#else + basedir=RUN_DIR; +#endif + COMPUTE_DIRECTORY(ctdl_run_dir); + +#ifndef HAVE_DATA_DIR + basedir=ctdldir; +#else + basedir=DATA_DIR; +#endif + COMPUTE_DIRECTORY(ctdl_bio_dir); + COMPUTE_DIRECTORY(ctdl_bb_dir); + COMPUTE_DIRECTORY(ctdl_data_dir); + COMPUTE_DIRECTORY(ctdl_file_dir); + COMPUTE_DIRECTORY(ctdl_hlp_dir); + COMPUTE_DIRECTORY(ctdl_image_dir); + COMPUTE_DIRECTORY(ctdl_info_dir); + COMPUTE_DIRECTORY(ctdl_message_dir); + COMPUTE_DIRECTORY(ctdl_usrpic_dir); +#ifndef HAVE_SPOOL_DIR + basedir=ctdldir; +#else + basedir=SPOOL_DIR; +#endif + COMPUTE_DIRECTORY(ctdl_spool_dir); + COMPUTE_DIRECTORY(ctdl_netout_dir); + COMPUTE_DIRECTORY(ctdl_netin_dir); + + + if ((home) && (chdir(setup_directory) != 0)) { important_message("Citadel Setup", "The directory you specified does not exist."); cleanup(errno); @@ -1026,14 +1157,12 @@ int main(int argc, char *argv[]) * to be when we rewrite it, because we replace the old file with a * completely new copy. */ + snprintf(citadel_rc_file, + sizeof citadel_rc_file, + "%s/citadel.config", + ctdl_etc_dir); - if ((a = open( -#ifndef HAVE_ETC_DIR - "." -#else - ETC_DIR -#endif - "/citadel.config", O_WRONLY | O_CREAT | O_APPEND, + if ((a = open(citadel_rc_file, O_WRONLY | O_CREAT | O_APPEND, S_IRUSR | S_IWUSR)) == -1) { display_error("setup: cannot append citadel.config"); cleanup(errno); @@ -1048,13 +1177,7 @@ int main(int argc, char *argv[]) fclose(fp); /* now we re-open it, and read the old or blank configuration */ - fp = fopen( -#ifndef HAVE_ETC_DIR - "." -#else - ETC_DIR -#endif - "/citadel.config", "rb"); + fp = fopen(citadel_rc_file, "rb"); if (fp == NULL) { display_error("setup: cannot open citadel.config"); cleanup(errno); @@ -1175,18 +1298,19 @@ NEW_INST: write_config_to_disk(); - mkdir("info", 0700); - chmod("info", 0700); - mkdir("bio", 0700); - chmod("bio", 0700); - mkdir("userpics", 0700); - chmod("userpics", 0700); - mkdir("messages", 0700); - chmod("messages", 0700); - mkdir("help", 0700); - chmod("help", 0700); - mkdir("images", 0700); - chmod("images", 0700); + mkdir(ctdl_info_dir, 0700); + chmod(ctdl_info_dir, 0700); + mkdir(ctdl_bio_dir, 0700); + chmod(ctdl_bio_dir, 0700); + mkdir(ctdl_usrpic_dir, 0700); + chmod(ctdl_usrpic_dir, 0700); + mkdir(ctdl_message_dir, 0700); + chmod(ctdl_message_dir, 0700); + mkdir(ctdl_hlp_dir, 0700); + chmod(ctdl_hlp_dir, 0700); + mkdir(ctdl_image_dir, 0700); + chmod(ctdl_image_dir, 0700); + /* TODO: where to put this? */ mkdir("netconfigs", 0700); chmod("netconfigs", 0700); @@ -1234,13 +1358,7 @@ NEW_INST: chown(".", config.c_ctdluid, gid); sleep(1); progress("Setting file permissions", 1, 4); - chown( -#ifndef HAVE_ETC_DIR - "." -#else - ETC_DIR -#endif - "/citadel.config", config.c_ctdluid, gid); + chown(citadel_rc_file, config.c_ctdluid, gid); sleep(1); progress("Setting file permissions", 2, 4); snprintf(aaa, sizeof aaa, @@ -1249,13 +1367,7 @@ NEW_INST: system(aaa); sleep(1); progress("Setting file permissions", 3, 4); - chmod( -#ifndef HAVE_ETC_DIR - "." -#else - ETC_DIR -#endif - "/citadel.config", S_IRUSR | S_IWUSR); + chmod(citadel_rc_file, S_IRUSR | S_IWUSR); sleep(1); progress("Setting file permissions", 4, 4); diff --git a/citadel/user_ops.c b/citadel/user_ops.c index fcb1bdb75..37649cc4c 100644 --- a/citadel/user_ops.c +++ b/citadel/user_ops.c @@ -753,23 +753,19 @@ int purge_user(char pname[]) cdb_delete(CDB_USERS, usernamekey, strlen(usernamekey)); /* remove the user's bio file */ - snprintf(filename, sizeof filename, -#ifndef HAVE_DATA_DIR - "." -#else - DATA_DIR -#endif - "/bio/%ld", usbuf.usernum); + snprintf(filename, + sizeof filename, + "%s/%ld", + ctdl_bio_dir, + usbuf.usernum); unlink(filename); /* remove the user's picture */ - snprintf(filename, sizeof filename, -#ifndef HAVE_DATA_DIR - "." -#else - DATA_DIR -#endif - "/userpics/%ld.gif", usbuf.usernum); + snprintf(filename, + sizeof filename, + "%s/%ld.gif", + ctdl_image_dir, + usbuf.usernum); unlink(filename); return (0);