v. 20230218 Combined patch for vqadmin-2.3.7 by Roberto Puzzanghera https://notes.sagredo.eu/en/qmail-notes-185/vqadmin-26.html This patch modifies the following: * lang.c to lowercase the language file to solve compatibility issues with google-chrome and to avoid errors due to "invalid language file" in some browsers. * replace the files config.sub and config.guess (copied from vpopmail dir) to allow compilation on 64b platforms as well. * user.c to avoid that the clear pwd field will be showed (delete that part if you compiled vpopmail with --enable-clear-password) * html/mod_user.html to prevent the erase of the password when modifying a user in case clear passwords are disabled. Now the password field is not shown anymore. * user.c and domain.c to make the dynamic web page retrieve the vqadmin.css style sheet * Makefile.in to solve a bug that caused me a missing vqadmin.css file It embeds a big patch by Ali Erturk TURKER: * gets vqadmin to save vpopmail limits to database * fixed a core-dump due to SIGILL caused by memcpy * adds missing limits and permissions, changed the UI to be more user-friendly more info here https://notes.sagredo.eu/en/qmail-notes-185/vqadmin-26.html#comment2825 https://notes.sagredo.eu/files/qmail/patches/vqadmin/aet_vqadmin_fixes_20230218_1256.patch =============================================================================================================== diff -ruN ../vqadmin-2.3.7-original/Makefile.in vqadmin-2.3.7/Makefile.in --- ../vqadmin-2.3.7-original/Makefile.in 2005-01-11 21:36:55.000000000 +0100 +++ vqadmin-2.3.7/Makefile.in 2023-02-18 16:59:10.267902293 +0100 @@ -510,14 +510,14 @@ $(mkinstalldirs) @cgibindir@ $(mkinstalldirs) @cgibindir@/vqadmin $(mkinstalldirs) @cgibindir@/vqadmin/html - $(mkinstalldirs) @wwwroot@/images/vqadmin + $(mkinstalldirs) @cgibindir@/vqadmin/images/vqadmin install-data-local: cp vqadmin @cgibindir@/vqadmin/vqadmin.cgi strip @cgibindir@/vqadmin/vqadmin.cgi cp -R html/* @cgibindir@/vqadmin/html cp -R html/en @cgibindir@/vqadmin/html/en-us - cp html/vqadmin.css @wwwroot@/images/vqadmin + cp html/vqadmin.css @cgibindir@/vqadmin/images/vqadmin rm @cgibindir@/vqadmin/html/vqadmin.css if test -f @cgibindir@/vqadmin/vqadmin.acl ; then \ @@ -536,11 +536,11 @@ chmod 755 @cgibindir@/vqadmin chmod 755 @cgibindir@/vqadmin/html - chown @vpopuser@ @wwwroot@/images/vqadmin - chgrp @vpopgroup@ @wwwroot@/images/vqadmin - chown -R @vpopuser@ @wwwroot@/images/vqadmin/* - chgrp -R @vpopgroup@ @wwwroot@/images/vqadmin/* - chmod 755 @wwwroot@/images/vqadmin + chown @vpopuser@ @cgibindir@/vqadmin/images/vqadmin + chgrp @vpopgroup@ @cgibindir@/vqadmin/images/vqadmin + chown -R @vpopuser@ @cgibindir@/vqadmin/images/vqadmin/* + chgrp -R @vpopgroup@ @cgibindir@/vqadmin/images/vqadmin/* + chmod 755 @cgibindir@/vqadmin/images/vqadmin if test -f @cgibindir@/vqadmin/.htaccess ; then \ echo ".htaccess file already in place" ; \ diff -ruN ../vqadmin-2.3.7-original/cgi.c vqadmin-2.3.7/cgi.c --- ../vqadmin-2.3.7-original/cgi.c 2003-01-27 19:25:59.000000000 +0100 +++ vqadmin-2.3.7/cgi.c 2023-02-18 17:12:21.687617264 +0100 @@ -164,7 +164,7 @@ *p = r; - memcpy((char *)(p + 1), (char *)(p + 3), (len - 2)); + memmove((char *)(p + 1), (char *)(p + 3), (len - 2)); *(p + len - 1) = '\0'; } diff -ruN ../vqadmin-2.3.7-original/config.guess vqadmin-2.3.7/config.guess --- ../vqadmin-2.3.7-original/config.guess 2002-05-21 15:36:38.000000000 +0200 +++ vqadmin-2.3.7/config.guess 2023-02-18 16:59:10.269902287 +0100 @@ -1,7 +1,10 @@ #! /bin/sh # Attempt to guess a canonical system name. -# Copyright (C) 1992, 93, 94, 95, 1996 Free Software Foundation, Inc. -# +# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001 +# Free Software Foundation, Inc. + +timestamp='2001-04-20' + # 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 @@ -22,18 +25,92 @@ # the same distribution terms that you use for the rest of that program. # Written by Per Bothner . -# The master version of this file is at the FSF in /home/gd/gnu/lib. +# Please send patches to . # # 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 system type (host/target name). -# -# Only a few systems have been added to this list; please add others -# (but try to keep the structure clean). -# +# 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, 93, 94, 95, 96, 97, 98, 99, 2000 +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 0 ;; + --version | -v ) + echo "$version" ; exit 0 ;; + --help | --h* | -h ) + echo "$usage"; exit 0 ;; + -- ) # 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 + + +dummy=dummy-$$ +trap 'rm -f $dummy.c $dummy.o $dummy.rel $dummy; exit 1' 1 2 15 + +# CC_FOR_BUILD -- compiler used by this script. +# Historically, `CC_FOR_BUILD' used to be named `HOST_CC'. We still +# use `HOST_CC' if defined, but it is deprecated. + +case $CC_FOR_BUILD,$HOST_CC,$CC in + ,,) echo "int dummy(){}" > $dummy.c + for c in cc gcc c89 ; do + ($c $dummy.c -c -o $dummy.o) >/dev/null 2>&1 + if test $? = 0 ; then + CC_FOR_BUILD="$c"; break + fi + done + rm -f $dummy.c $dummy.o $dummy.rel + 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 # This is needed to find uname on a Pyramid OSx when run in the BSD universe. # (ghazi@noc.rutgers.edu 8/24/94.) @@ -43,51 +120,180 @@ 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_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown -trap 'rm -f dummy.c dummy.o dummy; exit 1' 1 2 15 - # Note: order is significant - the case branches are not exclusive. case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in - news*:NEWS-OS:6.*:*) - echo mips-sony-newsos6 - exit 0 ;; + *: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. + # Determine the machine/vendor (is the vendor relevant). + case "${UNAME_MACHINE}" in + amiga) machine=m68k-unknown ;; + arm32) machine=arm-unknown ;; + atari*) machine=m68k-atari ;; + sun3*) machine=m68k-sun ;; + mac68k) machine=m68k-apple ;; + macppc) machine=powerpc-apple ;; + hp3[0-9][05]) machine=m68k-hp ;; + ibmrt|romp-ibm) machine=romp-ibm ;; + *) machine=${UNAME_MACHINE}-unknown ;; + esac + # The Operating System including object format, if it has switched + # to ELF recently, or will in the future. + case "${UNAME_MACHINE}" in + i386|sparc|amiga|arm*|hp300|mvme68k|vax|atari|luna68k|mac68k|news68k|next68k|pc532|sun3*|x68k) + 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 + release=`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'` + # 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 0 ;; alpha:OSF1:*:*) + if test $UNAME_RELEASE = "V4.0"; then + UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'` + fi # 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 alpha-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[VTX]//'` + cat <$dummy.s + .data +\$Lformat: + .byte 37,100,45,37,120,10,0 # "%d-%x\n" + + .text + .globl main + .align 4 + .ent main +main: + .frame \$30,16,\$26,0 + ldgp \$29,0(\$27) + .prologue 1 + .long 0x47e03d80 # implver \$0 + lda \$2,-1 + .long 0x47e20c21 # amask \$2,\$1 + lda \$16,\$Lformat + mov \$0,\$17 + not \$1,\$18 + jsr \$26,printf + ldgp \$29,0(\$26) + mov 0,\$16 + jsr \$26,exit + .end main +EOF + $CC_FOR_BUILD $dummy.s -o $dummy 2>/dev/null + if test "$?" = 0 ; then + case `./$dummy` in + 0-0) + UNAME_MACHINE="alpha" + ;; + 1-0) + UNAME_MACHINE="alphaev5" + ;; + 1-1) + UNAME_MACHINE="alphaev56" + ;; + 1-101) + UNAME_MACHINE="alphapca56" + ;; + 2-303) + UNAME_MACHINE="alphaev6" + ;; + 2-307) + UNAME_MACHINE="alphaev67" + ;; + esac + fi + rm -f $dummy.s $dummy + echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[VTX]//' | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` + exit 0 ;; + 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 ;; 21064:Windows_NT:50:3) echo alpha-dec-winnt3.5 exit 0 ;; Amiga*:UNIX_System_V:4.0:*) - echo m68k-cbm-sysv4 + echo m68k-unknown-sysv4 exit 0;; - amiga:NetBSD:*:*) - echo m68k-cbm-netbsd${UNAME_RELEASE} - exit 0 ;; amiga:OpenBSD:*:*) - echo m68k-cbm-openbsd${UNAME_RELEASE} - exit 0 ;; + echo m68k-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + *:[Aa]miga[Oo][Ss]:*:*) + echo ${UNAME_MACHINE}-unknown-amigaos + exit 0 ;; + arc64:OpenBSD:*:*) + echo mips64el-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + arc:OpenBSD:*:*) + echo mipsel-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + hkmips:OpenBSD:*:*) + echo mips-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + pmax:OpenBSD:*:*) + echo mipsel-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + sgi:OpenBSD:*:*) + echo mips-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + wgrisc:OpenBSD:*:*) + echo mipsel-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + *:OS/390:*:*) + echo i370-ibm-openedition + exit 0 ;; arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*) echo arm-acorn-riscix${UNAME_RELEASE} exit 0;; - Pyramid*:OSx*:*:*) + SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*) + echo hppa1.1-hitachi-hiuxmpp + exit 0;; + 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 0 ;; - sun4*:SunOS:5.*:*) + NILE*:*:*:dcosx) + echo pyramid-pyramid-svr4 + exit 0 ;; + sun4H:SunOS:5.*:*) + echo sparc-hal-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit 0 ;; + sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*) echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit 0 ;; i86pc:SunOS:5.*:*) - echo i386-unknown-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + echo i386-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit 0 ;; sun4*:SunOS:6*:*) # According to config.sub, this is the proper way to canonicalize @@ -107,23 +313,67 @@ sun3*:SunOS:*:*) echo m68k-sun-sunos${UNAME_RELEASE} exit 0 ;; - atari*:NetBSD:*:*) - echo m68k-atari-netbsd${UNAME_RELEASE} + sun*:*:4.2BSD:*) + UNAME_RELEASE=`(head -1 /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 0 ;; + aushp:SunOS:*:*) + echo sparc-auspex-sunos${UNAME_RELEASE} exit 0 ;; atari*:OpenBSD:*:*) - echo m68k-atari-openbsd${UNAME_RELEASE} + echo m68k-unknown-openbsd${UNAME_RELEASE} exit 0 ;; - sun3*:NetBSD:*:*) - echo m68k-sun-netbsd${UNAME_RELEASE} + # 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 0 ;; - sun3*:OpenBSD:*:*) - echo m68k-sun-openbsd${UNAME_RELEASE} + atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*) + echo m68k-atari-mint${UNAME_RELEASE} + exit 0 ;; + *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*) + echo m68k-atari-mint${UNAME_RELEASE} exit 0 ;; - mac68k:NetBSD:*:*) - echo m68k-apple-netbsd${UNAME_RELEASE} + milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*) + echo m68k-milan-mint${UNAME_RELEASE} + exit 0 ;; + hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*) + echo m68k-hades-mint${UNAME_RELEASE} + exit 0 ;; + *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*) + echo m68k-unknown-mint${UNAME_RELEASE} + exit 0 ;; + sun3*:OpenBSD:*:*) + echo m68k-unknown-openbsd${UNAME_RELEASE} exit 0 ;; mac68k:OpenBSD:*:*) - echo m68k-apple-openbsd${UNAME_RELEASE} + echo m68k-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 ;; + powerpc:machten:*:*) + echo powerpc-apple-machten${UNAME_RELEASE} + exit 0 ;; + RISC*:Mach:*:*) + echo mips-dec-mach_bsd4.3 exit 0 ;; RISC*:ULTRIX:*:*) echo mips-dec-ultrix${UNAME_RELEASE} @@ -131,12 +381,40 @@ VAX*:ULTRIX*:*:*) echo vax-dec-ultrix${UNAME_RELEASE} exit 0 ;; - mips:*:4*:UMIPS) - echo mips-mips-riscos4sysv + 2020:CLIX:*:* | 2430:CLIX:*:*) + echo clipper-intergraph-clix${UNAME_RELEASE} exit 0 ;; - mips:*:5*:RISCos) + mips:*:*:UMIPS | mips:*:*:RISCos) + 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 $dummy.c -o $dummy \ + && ./$dummy `echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` \ + && rm -f $dummy.c $dummy && exit 0 + rm -f $dummy.c $dummy echo mips-mips-riscos${UNAME_RELEASE} exit 0 ;; + Motorola:PowerMAX_OS:*:*) + echo powerpc-motorola-powermax + exit 0 ;; Night_Hawk:Power_UNIX:*:*) echo powerpc-harris-powerunix exit 0 ;; @@ -152,15 +430,18 @@ AViiON:dgux:*:*) # DG/UX returns AViiON for all architectures UNAME_PROCESSOR=`/usr/bin/uname -p` - if [ $UNAME_PROCESSOR = mc88100 -o $UNAME_PROCESSOR = mc88110 ] ; then - if [ ${TARGET_BINARY_INTERFACE}x = m88kdguxelfx \ - -o ${TARGET_BINARY_INTERFACE}x = x ] ; then + 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 + else echo m88k-dg-dguxbcs${UNAME_RELEASE} + fi + else + echo i586-dg-dgux${UNAME_RELEASE} fi - else echo i586-dg-dgux${UNAME_RELEASE} - fi exit 0 ;; M88*:DolphinOS:*:*) # DolphinOS (SVR3) echo m88k-dolphin-sysv3 @@ -178,15 +459,23 @@ *:IRIX*:*:*) echo mips-sgi-irix`echo ${UNAME_RELEASE}|sed -e 's/-/_/g'` exit 0 ;; - ????????:AIX?:[12].1:2) # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX. + ????????: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 ' - i[34]86:AIX:*:*) + i*86:AIX:*:*) echo i386-ibm-aix exit 0 ;; + 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 0 ;; *:AIX:2:3) if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then - sed 's/^ //' << EOF >dummy.c + sed 's/^ //' << EOF >$dummy.c #include main() @@ -197,8 +486,8 @@ exit(0); } EOF - ${CC-cc} dummy.c -o dummy && ./dummy && rm dummy.c dummy && exit 0 - rm -f dummy.c dummy + $CC_FOR_BUILD $dummy.c -o $dummy && ./$dummy && rm -f $dummy.c $dummy && exit 0 + rm -f $dummy.c $dummy echo rs6000-ibm-aix3.2.5 elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then echo rs6000-ibm-aix3.2.4 @@ -206,8 +495,9 @@ echo rs6000-ibm-aix3.2 fi exit 0 ;; - *:AIX:*:4) - if /usr/sbin/lsattr -EHl proc0 | grep POWER >/dev/null 2>&1; then + *:AIX:*:[45]) + IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | head -1 | 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 @@ -215,7 +505,7 @@ if [ -x /usr/bin/oslevel ] ; then IBM_REV=`/usr/bin/oslevel` else - IBM_REV=4.${UNAME_RELEASE} + IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE} fi echo ${IBM_ARCH}-ibm-aix${IBM_REV} exit 0 ;; @@ -225,8 +515,8 @@ ibmrt:4.4BSD:*|romp-ibm:BSD:*) echo romp-ibm-bsd4.4 exit 0 ;; - ibmrt:*BSD:*|romp-ibm:BSD:*) # covers RT/PC NetBSD and - echo romp-ibm-bsd${UNAME_RELEASE} # 4.3 with uname added to + 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 *:BOSX:*:*) echo rs6000-bull-bosx @@ -240,18 +530,75 @@ hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*) echo m68k-hp-bsd4.4 exit 0 ;; - 9000/[3478]??:HP-UX:*:*) + 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/7?? | 9000/8?[679] ) HP_ARCH=hppa1.1 ;; - 9000/8?? ) HP_ARCH=hppa1.0 ;; + 9000/[678][0-9][0-9]) + case "${HPUX_REV}" in + 11.[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" ;; + esac ;; + esac + fi ;; + esac + if [ "${HP_ARCH}" = "" ]; then + 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 $dummy.c -o $dummy 2>/dev/null ) && HP_ARCH=`./$dummy` + if test -z "$HP_ARCH"; then HP_ARCH=hppa; fi + rm -f $dummy.c $dummy + fi ;; esac - HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` echo ${HP_ARCH}-hp-hpux${HPUX_REV} exit 0 ;; + ia64:HP-UX:*:*) + HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` + echo ia64-hp-hpux${HPUX_REV} + exit 0 ;; 3050*:HI-UX:*:*) - sed 's/^ //' << EOF >dummy.c + sed 's/^ //' << EOF >$dummy.c #include int main () @@ -276,8 +623,8 @@ exit (0); } EOF - ${CC-cc} dummy.c -o dummy && ./dummy && rm dummy.c dummy && exit 0 - rm -f dummy.c dummy + $CC_FOR_BUILD $dummy.c -o $dummy && ./$dummy && rm -f $dummy.c $dummy && exit 0 + rm -f $dummy.c $dummy echo unknown-hitachi-hiuxwe2 exit 0 ;; 9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:* ) @@ -286,15 +633,28 @@ 9000/8??:4.3bsd:*:*) echo hppa1.0-hp-bsd exit 0 ;; + *9??*:MPE/iX:*:*) + echo hppa1.0-hp-mpeix + exit 0 ;; hp7??:OSF1:*:* | hp8?[79]:OSF1:*:* ) echo hppa1.1-hp-osf exit 0 ;; hp8??:OSF1:*:*) echo hppa1.0-hp-osf exit 0 ;; + i*86:OSF1:*:*) + if [ -x /usr/sbin/sysversion ] ; then + echo ${UNAME_MACHINE}-unknown-osf1mk + else + echo ${UNAME_MACHINE}-unknown-osf1 + fi + exit 0 ;; parisc*:Lites*:*:*) echo hppa1.1-hp-lites exit 0 ;; + hppa*:OpenBSD:*:*) + echo hppa-unknown-openbsd + exit 0 ;; C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*) echo c1-convex-bsd exit 0 ;; @@ -313,120 +673,337 @@ C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*) echo c4-convex-bsd exit 0 ;; - CRAY*T3E:*:*:*) - echo t3e-cray-unicos_mk - exit 0 ;; CRAY*X-MP:*:*:*) echo xmp-cray-unicos exit 0 ;; CRAY*Y-MP:*:*:*) echo ymp-cray-unicos${UNAME_RELEASE} exit 0 ;; - CRAY*C90:*:*:*) - echo c90-cray-unicos${UNAME_RELEASE} + CRAY*[A-Z]90:*:*:*) + echo ${UNAME_MACHINE}-cray-unicos${UNAME_RELEASE} \ + | sed -e 's/CRAY.*\([A-Z]90\)/\1/' \ + -e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/ exit 0 ;; CRAY*TS:*:*:*) - echo t90-cray-unicos${UNAME_RELEASE} + echo t90-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' + exit 0 ;; + CRAY*T3D:*:*:*) + echo alpha-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' + exit 0 ;; + CRAY*T3E:*:*:*) + echo alphaev5-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' + exit 0 ;; + CRAY*SV1:*:*:*) + echo sv1-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit 0 ;; CRAY-2:*:*:*) echo cray2-cray-unicos exit 0 ;; - hp3[0-9][05]:NetBSD:*:*) - echo m68k-hp-netbsd${UNAME_RELEASE} + 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 ;; + hp300:OpenBSD:*:*) + echo m68k-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*) + echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE} exit 0 ;; - hp3[0-9][05]:OpenBSD:*:*) - echo m68k-hp-openbsd${UNAME_RELEASE} + sparc*:BSD/OS:*:*) + echo sparc-unknown-bsdi${UNAME_RELEASE} exit 0 ;; - i[34]86:BSD/386:*:* | *:BSD/OS:*:*) + *:BSD/OS:*:*) echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE} exit 0 ;; *:FreeBSD:*:*) echo ${UNAME_MACHINE}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` exit 0 ;; - *:NetBSD:*:*) - echo ${UNAME_MACHINE}-unknown-netbsd`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'` - exit 0 ;; *:OpenBSD:*:*) echo ${UNAME_MACHINE}-unknown-openbsd`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'` exit 0 ;; i*:CYGWIN*:*) - echo i386-unknown-cygwin32 + echo ${UNAME_MACHINE}-pc-cygwin + exit 0 ;; + i*:MINGW*:*) + echo ${UNAME_MACHINE}-pc-mingw32 + exit 0 ;; + i*:PW*:*) + echo ${UNAME_MACHINE}-pc-pw32 + exit 0 ;; + 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 i386-pc-interix + exit 0 ;; + i*:UWIN*:*) + echo ${UNAME_MACHINE}-pc-uwin exit 0 ;; p*:CYGWIN*:*) - echo powerpcle-unknown-cygwin32 + echo powerpcle-unknown-cygwin exit 0 ;; prep*:SunOS:5.*:*) echo powerpcle-unknown-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit 0 ;; *:GNU:*:*) - echo `echo ${UNAME_MACHINE}|sed -e 's,/.*$,,'`-unknown-gnu`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'` + echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-gnu`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'` exit 0 ;; - *:Linux:*:*) - # The BFD linker knows what the default object file format is, so - # first see if it will tell us. - ld_help_string=`ld --help 2>&1` - if echo "$ld_help_string" | grep >/dev/null 2>&1 "supported emulations: elf_i[345]86"; then - echo "${UNAME_MACHINE}-unknown-linux" ; exit 0 - elif echo "$ld_help_string" | grep >/dev/null 2>&1 "supported emulations: i[345]86linux"; then - echo "${UNAME_MACHINE}-unknown-linuxaout" ; exit 0 - elif echo "$ld_help_string" | grep >/dev/null 2>&1 "supported emulations: i[345]86coff"; then - echo "${UNAME_MACHINE}-unknown-linuxcoff" ; exit 0 - elif echo "$ld_help_string" | grep >/dev/null 2>&1 "supported emulations: m68kelf"; then - echo "${UNAME_MACHINE}-unknown-linux" ; exit 0 - elif echo "$ld_help_string" | grep >/dev/null 2>&1 "supported emulations: m68klinux"; then - echo "${UNAME_MACHINE}-unknown-linuxaout" ; exit 0 - elif test "${UNAME_MACHINE}" = "alpha" ; then - echo alpha-unknown-linux ; exit 0 - else - # Either a pre-BFD a.out linker (linuxoldld) or one that does not give us - # useful --help. Gcc wants to distinguish between linuxoldld and linuxaout. - test ! -d /usr/lib/ldscripts/. \ - && echo "${UNAME_MACHINE}-unknown-linuxoldld" && exit 0 - # Determine whether the default compiler is a.out or elf - cat >dummy.c <$dummy.c < /* for printf() prototype */ +int main (int argc, char *argv[]) { +#else +int main (argc, argv) int argc; char *argv[]; { +#endif +#ifdef __MIPSEB__ + printf ("%s-unknown-linux-gnu\n", argv[1]); +#endif +#ifdef __MIPSEL__ + printf ("%sel-unknown-linux-gnu\n", argv[1]); +#endif + return 0; +} +EOF + $CC_FOR_BUILD $dummy.c -o $dummy 2>/dev/null && ./$dummy "${UNAME_MACHINE}" && rm -f $dummy.c $dummy && exit 0 + rm -f $dummy.c $dummy + ;; + ppc:Linux:*:*) + # Determine Lib Version + cat >$dummy.c < +#if defined(__GLIBC__) +extern char __libc_version[]; +extern char __libc_release[]; +#endif main(argc, argv) -int argc; -char *argv[]; + int argc; + char *argv[]; { +#if defined(__GLIBC__) + printf("%s %s\n", __libc_version, __libc_release); +#else + printf("unknown\n"); +#endif + return 0; +} +EOF + LIBC="" + $CC_FOR_BUILD $dummy.c -o $dummy 2>/dev/null + if test "$?" = 0 ; then + ./$dummy | grep 1\.99 > /dev/null + if test "$?" = 0 ; then LIBC="libc1" ; fi + fi + rm -f $dummy.c $dummy + echo powerpc-unknown-linux-gnu${LIBC} + exit 0 ;; + alpha:Linux:*:*) + cat <$dummy.s + .data + \$Lformat: + .byte 37,100,45,37,120,10,0 # "%d-%x\n" + .text + .globl main + .align 4 + .ent main + main: + .frame \$30,16,\$26,0 + ldgp \$29,0(\$27) + .prologue 1 + .long 0x47e03d80 # implver \$0 + lda \$2,-1 + .long 0x47e20c21 # amask \$2,\$1 + lda \$16,\$Lformat + mov \$0,\$17 + not \$1,\$18 + jsr \$26,printf + ldgp \$29,0(\$26) + mov 0,\$16 + jsr \$26,exit + .end main +EOF + LIBC="" + $CC_FOR_BUILD $dummy.s -o $dummy 2>/dev/null + if test "$?" = 0 ; then + case `./$dummy` in + 0-0) UNAME_MACHINE="alpha" ;; + 1-0) UNAME_MACHINE="alphaev5" ;; + 1-1) UNAME_MACHINE="alphaev56" ;; + 1-101) UNAME_MACHINE="alphapca56" ;; + 2-303) UNAME_MACHINE="alphaev6" ;; + 2-307) UNAME_MACHINE="alphaev67" ;; + esac + objdump --private-headers $dummy | \ + grep ld.so.1 > /dev/null + if test "$?" = 0 ; then + LIBC="libc1" + fi + fi + rm -f $dummy.s $dummy + echo ${UNAME_MACHINE}-unknown-linux-gnu${LIBC} + exit 0 ;; + 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 0 ;; + parisc64:Linux:*:* | hppa64:Linux:*:*) + echo hppa64-unknown-linux-gnu + exit 0 ;; + s390:Linux:*:* | s390x:Linux:*:*) + echo ${UNAME_MACHINE}-ibm-linux + exit 0 ;; + sh*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-gnu + exit 0 ;; + sparc:Linux:*:* | sparc64:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-gnu + exit 0 ;; + x86_64:Linux:*:*) + echo x86_64-unknown-linux-gnu + exit 0 ;; + 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. + ld_supported_emulations=`cd /; ld --help 2>&1 \ + | sed -ne '/supported emulations:/!d + s/[ ][ ]*/ /g + s/.*supported emulations: *// + s/ .*// + p'` + case "$ld_supported_emulations" in + i*86linux) + echo "${UNAME_MACHINE}-pc-linux-gnuaout" + exit 0 + ;; + elf_i*86) + TENTATIVE="${UNAME_MACHINE}-pc-linux-gnu" + ;; + i*86coff) + echo "${UNAME_MACHINE}-pc-linux-gnucoff" + exit 0 + ;; + esac + # Either a pre-BFD a.out linker (linux-gnuoldld) + # or one that does not give us useful --help. + # GCC wants to distinguish between linux-gnuoldld and linux-gnuaout. + # If ld does not provide *any* "supported emulations:" + # that means it is gnuoldld. + test -z "$ld_supported_emulations" && echo "${UNAME_MACHINE}-pc-linux-gnuoldld" && exit 0 + case "${UNAME_MACHINE}" in + i*86) + VENDOR=pc; + ;; + *) + VENDOR=unknown; + ;; + esac + # Determine whether the default compiler is a.out or elf + cat >$dummy.c < +#ifdef __cplusplus +#include /* for printf() prototype */ + int main (int argc, char *argv[]) { +#else + int main (argc, argv) int argc; char *argv[]; { +#endif #ifdef __ELF__ - printf ("%s-unknown-linux\n", argv[1]); +# ifdef __GLIBC__ +# if __GLIBC__ >= 2 + printf ("%s-${VENDOR}-linux-gnu\n", argv[1]); +# else + printf ("%s-${VENDOR}-linux-gnulibc1\n", argv[1]); +# endif +# else + printf ("%s-${VENDOR}-linux-gnulibc1\n", argv[1]); +# endif #else - printf ("%s-unknown-linuxaout\n", argv[1]); + printf ("%s-${VENDOR}-linux-gnuaout\n", argv[1]); #endif return 0; } EOF - ${CC-cc} dummy.c -o dummy 2>/dev/null && ./dummy "${UNAME_MACHINE}" && rm dummy.c dummy && exit 0 - rm -f dummy.c dummy - fi ;; + $CC_FOR_BUILD $dummy.c -o $dummy 2>/dev/null && ./$dummy "${UNAME_MACHINE}" && rm -f $dummy.c $dummy && exit 0 + rm -f $dummy.c $dummy + test x"${TENTATIVE}" != x && echo "${TENTATIVE}" && exit 0 + ;; # 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. - i[34]86:DYNIX/ptx:4*:*) + i*86:DYNIX/ptx:4*:*) echo i386-sequent-sysv4 exit 0 ;; - i[34]86:*:4.*:* | i[34]86:SYSTEM_V:4.*:*) + 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 0 ;; + 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_RELEASE} + echo ${UNAME_MACHINE}-univel-sysv${UNAME_REL} + else + echo ${UNAME_MACHINE}-pc-sysv${UNAME_REL} + fi + exit 0 ;; + i*86:*:5:7*) + # Fixed at (any) Pentium or better + UNAME_MACHINE=i586 + if [ ${UNAME_SYSTEM} = "UnixWare" ] ; then + echo ${UNAME_MACHINE}-sco-sysv${UNAME_RELEASE}uw${UNAME_VERSION} else - echo ${UNAME_MACHINE}-unknown-sysv${UNAME_RELEASE} + echo ${UNAME_MACHINE}-pc-sysv${UNAME_RELEASE} fi exit 0 ;; - i[34]86:*:3.2:*) + 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|egrep Release|sed -e 's/.*= //')` (/bin/uname -X|egrep i80486 >/dev/null) && UNAME_MACHINE=i486 (/bin/uname -X|egrep '^Machine.*Pentium' >/dev/null) \ && UNAME_MACHINE=i586 - echo ${UNAME_MACHINE}-unknown-sco$UNAME_REL + (/bin/uname -X|egrep '^Machine.*Pent ?II' >/dev/null) \ + && UNAME_MACHINE=i686 + (/bin/uname -X|egrep '^Machine.*Pentium Pro' >/dev/null) \ + && UNAME_MACHINE=i686 + echo ${UNAME_MACHINE}-pc-sco$UNAME_REL else - echo ${UNAME_MACHINE}-unknown-sysv32 + echo ${UNAME_MACHINE}-pc-sysv32 fi exit 0 ;; + i*86:*DOS:*:*) + echo ${UNAME_MACHINE}-pc-msdosdjgpp + exit 0 ;; + 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 0 ;; Intel:Mach:3*:*) - echo i386-unknown-mach3 + echo i386-pc-mach3 exit 0 ;; paragon:*:*:*) echo i860-intel-osf1 @@ -442,28 +1019,42 @@ # "miniframe" echo m68010-convergent-sysv exit 0 ;; - M680[234]0:*:R3V[567]*:*) + M68*:*:R3V[567]*:*) test -r /sysV68 && echo 'm68k-motorola-sysv' && exit 0 ;; - 3[34]??:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0) - uname -p 2>/dev/null | grep 86 >/dev/null \ - && echo i486-ncr-sysv4.3 && exit 0 ;; + 3[34]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 4850:*: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 + /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ + && echo i586-ncr-sysv4.3${OS_REL} && exit 0 ;; 3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*) - uname -p 2>/dev/null | grep 86 >/dev/null \ + /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ && echo i486-ncr-sysv4 && exit 0 ;; - m680[234]0:LynxOS:2.[23]*:*) - echo m68k-lynx-lynxos${UNAME_RELEASE} + m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*) + echo m68k-unknown-lynxos${UNAME_RELEASE} exit 0 ;; mc68030:UNIX_System_V:4.*:*) echo m68k-atari-sysv4 exit 0 ;; - i[34]86:LynxOS:2.[23]*:*) - echo i386-lynx-lynxos${UNAME_RELEASE} + i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.0*:*) + echo i386-unknown-lynxos${UNAME_RELEASE} exit 0 ;; - TSUNAMI:LynxOS:2.[23]*:*) - echo sparc-lynx-lynxos${UNAME_RELEASE} + TSUNAMI:LynxOS:2.*:*) + echo sparc-unknown-lynxos${UNAME_RELEASE} exit 0 ;; - rs6000:LynxOS:2.[23]*:*) - echo rs6000-lynx-lynxos${UNAME_RELEASE} + rs6000:LynxOS:2.*:*) + echo rs6000-unknown-lynxos${UNAME_RELEASE} + exit 0 ;; + PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.0*:*) + echo powerpc-unknown-lynxos${UNAME_RELEASE} + exit 0 ;; + SM[BE]S:UNIX_SV:*:*) + echo mips-dde-sysv${UNAME_RELEASE} + exit 0 ;; + RM*:ReliantUNIX-*:*:*) + echo mips-sni-sysv4 exit 0 ;; RM*:SINIX-*:*:*) echo mips-sni-sysv4 @@ -476,22 +1067,117 @@ echo ns32k-sni-sysv fi exit 0 ;; + PENTIUM:CPunix:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort + # says + echo i586-unisys-sysv4 + exit 0 ;; + *:UNIX_System_V:4*:FTX*) + # From Gerald Hewes . + # How about differentiating between stratus architectures? -djm + echo hppa1.1-stratus-sysv4 + exit 0 ;; + *:*:*:FTX*) + # From seanf@swdc.stratus.com. + echo i860-stratus-sysv4 + exit 0 ;; mc68*:A/UX:*:*) echo m68k-apple-aux${UNAME_RELEASE} exit 0 ;; - R3000:*System_V*:*:*) + news*:NEWS-OS:6*:*) + echo mips-sony-newsos6 + exit 0 ;; + 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 ;; + BeBox:BeOS:*:*) # BeOS running on hardware made by Be, PPC only. + echo powerpc-be-beos + exit 0 ;; + BeMac:BeOS:*:*) # BeOS running on Mac or Mac clone, PPC only. + echo powerpc-apple-beos + exit 0 ;; + BePC:BeOS:*:*) # BeOS running on Intel PC compatible. + echo i586-pc-beos + exit 0 ;; + SX-4:SUPER-UX:*:*) + echo sx4-nec-superux${UNAME_RELEASE} + exit 0 ;; + SX-5:SUPER-UX:*:*) + echo sx5-nec-superux${UNAME_RELEASE} + exit 0 ;; + Power*:Rhapsody:*:*) + echo powerpc-apple-rhapsody${UNAME_RELEASE} + exit 0 ;; + *:Rhapsody:*:*) + echo ${UNAME_MACHINE}-apple-rhapsody${UNAME_RELEASE} + exit 0 ;; + *:Darwin:*:*) + echo `uname -p`-apple-darwin${UNAME_RELEASE} + exit 0 ;; + *:procnto*:*:* | *:QNX:[0123456789]*:*) + if test "${UNAME_MACHINE}" = "x86pc"; then + UNAME_MACHINE=pc + fi + echo `uname -p`-${UNAME_MACHINE}-nto-qnx + exit 0 ;; + *:QNX:*:4*) + echo i386-pc-qnx + exit 0 ;; + NSR-[KW]:NONSTOP_KERNEL:*:*) + echo nsr-tandem-nsk${UNAME_RELEASE} + exit 0 ;; + *:NonStop-UX:*:*) + echo mips-compaq-nonstopux + exit 0 ;; + BS2000:POSIX*:*:*) + echo bs2000-siemens-sysv + exit 0 ;; + DS/*:UNIX_System_V:*:*) + echo ${UNAME_MACHINE}-${UNAME_SYSTEM}-${UNAME_RELEASE} + exit 0 ;; + *: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 0 ;; + 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 ;; + *:TOPS-10:*:*) + echo pdp10-unknown-tops10 + exit 0 ;; + *:TENEX:*:*) + echo pdp10-unknown-tenex + exit 0 ;; + KS10:TOPS-20:*:* | KL10:TOPS-20:*:* | TYPE4:TOPS-20:*:*) + echo pdp10-dec-tops20 + exit 0 ;; + XKL-1:TOPS-20:*:* | TYPE5:TOPS-20:*:*) + echo pdp10-xkl-tops20 + exit 0 ;; + *:TOPS-20:*:*) + echo pdp10-unknown-tops20 + exit 0 ;; + *:ITS:*:*) + echo pdp10-unknown-its + exit 0 ;; esac #echo '(No uname command or uname output not recognized.)' 1>&2 #echo "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" 1>&2 -cat >dummy.c <$dummy.c < # include @@ -529,7 +1215,10 @@ #endif int version; version=`(hostinfo | sed -n 's/.*NeXT Mach \([0-9]*\).*/\1/p') 2>/dev/null`; - printf ("%s-next-nextstep%s\n", __ARCHITECTURE__, version==2 ? "2" : "3"); + if (version < 4) + printf ("%s-next-nextstep%d\n", __ARCHITECTURE__, version); + else + printf ("%s-next-openstep%d\n", __ARCHITECTURE__, version); exit (0); #endif @@ -546,7 +1235,7 @@ #endif #if defined (__386BSD__) - printf ("i386-unknown-bsd\n"); exit (0); + printf ("i386-pc-bsd\n"); exit (0); #endif #if defined (sequent) @@ -574,11 +1263,24 @@ #endif #if defined (vax) -#if !defined (ultrix) - printf ("vax-dec-bsd\n"); exit (0); -#else - printf ("vax-dec-ultrix\n"); exit (0); -#endif +# 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) @@ -589,8 +1291,8 @@ } EOF -${CC-cc} dummy.c -o dummy 2>/dev/null && ./dummy && rm dummy.c dummy && exit 0 -rm -f dummy.c dummy +$CC_FOR_BUILD $dummy.c -o $dummy 2>/dev/null && ./$dummy && rm -f $dummy.c $dummy && exit 0 +rm -f $dummy.c $dummy # Apollos put the system type in the environment. @@ -622,6 +1324,48 @@ esac fi -#echo '(Unable to guess system type)' 1>&2 +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 -ruN ../vqadmin-2.3.7-original/config.h vqadmin-2.3.7/config.h --- ../vqadmin-2.3.7-original/config.h 1970-01-01 01:00:00.000000000 +0100 +++ vqadmin-2.3.7/config.h 2023-02-18 17:12:38.578568492 +0100 @@ -0,0 +1,102 @@ +/* config.h. Generated by configure. */ +/* config.h.in. Generated from configure.in by autoheader. */ +#define VPOPUSER "vpopmail" + +/* #undef ENABLE_ISOQLOG */ + +#define ISOQLOGPATH "/usr/local/etc/isoqlog.domains" + +#define VPOPGROUP "vchkpw" + +#define QMAILDIR "/var/qmail" + +/* Define to 1 if you have the header file, and it defines `DIR'. + */ +#define HAVE_DIRENT_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_INTTYPES_H 1 + +/* Define to 1 if you have the `crypt' library (-lcrypt). */ +#define HAVE_LIBCRYPT 1 + +/* Define to 1 if you have the `m' library (-lm). */ +#define HAVE_LIBM 1 + +/* Define to 1 if you have the `z' library (-lz). */ +#define HAVE_LIBZ 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_MEMORY_H 1 + +/* Define to 1 if you have the header file, and it defines `DIR'. */ +/* #undef HAVE_NDIR_H */ + +/* Define to 1 if you have the header file. */ +#define HAVE_STDINT_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_STDLIB_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_STRINGS_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_STRING_H 1 + +/* Define to 1 if you have the header file, and it defines `DIR'. + */ +/* #undef HAVE_SYS_DIR_H */ + +/* Define to 1 if you have the header file, and it defines `DIR'. + */ +/* #undef HAVE_SYS_NDIR_H */ + +/* Define to 1 if you have the header file. */ +#define HAVE_SYS_STAT_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_SYS_TYPES_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_UNISTD_H 1 + +/* Define to the address where bug reports for this package should be sent. */ +#define PACKAGE_BUGREPORT "" + +/* Define to the full name of this package. */ +#define PACKAGE_NAME "" + +/* Define to the full name and version of this package. */ +#define PACKAGE_STRING "" + +/* Define to the one symbol short name of this package. */ +#define PACKAGE_TARNAME "" + +/* Define to the version of this package. */ +#define PACKAGE_VERSION "" + +/* Define to 1 if you have the ANSI C header files. */ +#define STDC_HEADERS 1 + +/* Define to 1 if your declares `struct tm'. */ +/* #undef TM_IN_SYS_TIME */ + +/* Name of package */ +#define VQA_PACKAGE "vqadmin" + +/* Version number of package */ +#define VQA_VERSION "2.3.6" + +/* Define to 1 if on AIX 3. + System headers sometimes define this. + We just want to avoid a redefinition error message. */ +#ifndef _ALL_SOURCE +/* # undef _ALL_SOURCE */ +#endif + +/* Define to empty if `const' does not conform to ANSI C. */ +/* #undef const */ + +/* Define to `unsigned' if does not define. */ +/* #undef size_t */ diff -ruN ../vqadmin-2.3.7-original/config.log vqadmin-2.3.7/config.log --- ../vqadmin-2.3.7-original/config.log 1970-01-01 01:00:00.000000000 +0100 +++ vqadmin-2.3.7/config.log 2023-02-18 17:47:57.159451679 +0100 @@ -0,0 +1,608 @@ +This file contains any messages produced by compilers while +running configure, to aid debugging if configure makes a mistake. + +It was created by configure, which was +generated by GNU Autoconf 2.57. Invocation command line was + + $ ./configure --enable-qmaildir=/var/qmail --enable-cgibindir=/usr/local/www/htdocs/qmail/cgi-bin + +## --------- ## +## Platform. ## +## --------- ## + +hostname = qmail +uname -m = x86_64 +uname -r = 5.15.94 +uname -s = Linux +uname -v = #1 SMP PREEMPT Fri Feb 17 18:59:35 CST 2023 + +/usr/bin/uname -p = Intel(R) Xeon(R) CPU E3-1245 V2 @ 3.40GHz +/bin/uname -X = unknown + +/bin/arch = x86_64 +/usr/bin/arch -k = unknown +/usr/convex/getsysinfo = unknown +hostinfo = unknown +/bin/machine = unknown +/usr/bin/oslevel = unknown +/bin/universe = unknown + +PATH: /usr/local/bin +PATH: /usr/bin +PATH: /bin +PATH: /usr/games +PATH: /usr/local/etc/init.d +PATH: /usr/local/php-7.4/bin +PATH: /usr/local/sbin +PATH: /usr/sbin +PATH: /sbin +PATH: /usr/local/bin +PATH: /usr/bin +PATH: /bin +PATH: /usr/games +PATH: /var/qmail/bin +PATH: /usr/local/dovecot/bin +PATH: /home/vpopmail/bin +PATH: /usr/local/dovecot/bin/ +PATH: /root/.cargo/bin +PATH: /usr/lib64/java/jre/bin + + +## ----------- ## +## Core tests. ## +## ----------- ## + +configure:1313: checking for a BSD-compatible install +configure:1367: result: /usr/bin/ginstall -c +configure:1378: checking whether build environment is sane +configure:1421: result: yes +configure:1446: WARNING: `missing' script is too old or missing +configure:1454: checking for gawk +configure:1470: found /usr/bin/gawk +configure:1480: result: gawk +configure:1490: checking whether make sets $(MAKE) +configure:1510: result: yes +configure:1667: checking build system type +configure:1685: result: x86_64-unknown-linux-gnu +configure:1693: checking host system type +configure:1707: result: x86_64-unknown-linux-gnu +configure:1762: checking for gcc +configure:1778: found /usr/bin/gcc +configure:1788: result: gcc +configure:2032: checking for C compiler version +configure:2035: gcc --version &5 +gcc (GCC) 11.2.0 +Copyright (C) 2021 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. + +configure:2038: $? = 0 +configure:2040: gcc -v &5 +Reading specs from /usr/lib64/gcc/x86_64-slackware-linux/11.2.0/specs +COLLECT_GCC=gcc +COLLECT_LTO_WRAPPER=/usr/libexec/gcc/x86_64-slackware-linux/11.2.0/lto-wrapper +Target: x86_64-slackware-linux +Configured with: ../configure --prefix=/usr --libdir=/usr/lib64 --mandir=/usr/man --infodir=/usr/info --enable-shared --enable-bootstrap --enable-languages=ada,brig,c,c++,d,fortran,go,lto,objc,obj-c++ --enable-threads=posix --enable-checking=release --enable-objc-gc --with-system-zlib --enable-libstdcxx-dual-abi --with-default-libstdcxx-abi=new --disable-libstdcxx-pch --disable-libunwind-exceptions --enable-__cxa_atexit --disable-libssp --enable-gnu-unique-object --enable-plugin --enable-lto --disable-install-libiberty --disable-werror --with-gnu-ld --with-isl --verbose --with-arch-directory=amd64 --disable-gtktest --enable-clocale=gnu --disable-multilib --target=x86_64-slackware-linux --build=x86_64-slackware-linux --host=x86_64-slackware-linux +Thread model: posix +Supported LTO compression algorithms: zlib zstd +gcc version 11.2.0 (GCC) +configure:2043: $? = 0 +configure:2045: gcc -V &5 +gcc: error: unrecognized command-line option '-V' +gcc: fatal error: no input files +compilation terminated. +configure:2048: $? = 1 +configure:2072: checking for C compiler default output +configure:2075: gcc conftest.c >&5 +configure:2078: $? = 0 +configure:2124: result: a.out +configure:2129: checking whether the C compiler works +configure:2135: ./a.out +configure:2138: $? = 0 +configure:2155: result: yes +configure:2162: checking whether we are cross compiling +configure:2164: result: no +configure:2167: checking for suffix of executables +configure:2169: gcc -o conftest conftest.c >&5 +configure:2172: $? = 0 +configure:2197: result: +configure:2203: checking for suffix of object files +configure:2225: gcc -c conftest.c >&5 +configure:2228: $? = 0 +configure:2250: result: o +configure:2254: checking whether we are using the GNU C compiler +configure:2279: gcc -c conftest.c >&5 +configure:2282: $? = 0 +configure:2285: test -s conftest.o +configure:2288: $? = 0 +configure:2301: result: yes +configure:2307: checking whether gcc accepts -g +configure:2329: gcc -c -g conftest.c >&5 +configure:2332: $? = 0 +configure:2335: test -s conftest.o +configure:2338: $? = 0 +configure:2349: result: yes +configure:2366: checking for gcc option to accept ANSI C +configure:2427: gcc -c -g -O2 conftest.c >&5 +configure:2430: $? = 0 +configure:2433: test -s conftest.o +configure:2436: $? = 0 +configure:2454: result: none needed +configure:2472: gcc -c -g -O2 conftest.c >&5 +conftest.c:2:3: error: unknown type name 'choke' + 2 | choke me + | ^~~~~ +conftest.c:2:3: error: expected '=', ',', ';', 'asm' or '__attribute__' at end of input +configure:2475: $? = 1 +configure: failed program was: +| #ifndef __cplusplus +| choke me +| #endif +configure:2603: checking for style of include used by make +configure:2631: result: GNU +configure:2659: checking dependency style of gcc +configure:2721: result: none +configure:2767: checking for ranlib +configure:2783: found /usr/bin/ranlib +configure:2794: result: ranlib +configure:2809: checking for strerror in -lcposix +configure:2840: gcc -o conftest -g -O2 conftest.c -lcposix >&5 +/usr/bin/ld: cannot find -lcposix +collect2: error: ld returned 1 exit status +configure:2843: $? = 1 +configure: failed program was: +| #line 2816 "configure" +| /* confdefs.h. */ +| +| #define PACKAGE_NAME "" +| #define PACKAGE_TARNAME "" +| #define PACKAGE_VERSION "" +| #define PACKAGE_STRING "" +| #define PACKAGE_BUGREPORT "" +| #define VQA_PACKAGE "vqadmin" +| #define VQA_VERSION "2.3.6" +| /* end confdefs.h. */ +| +| /* Override any gcc2 internal prototype to avoid an error. */ +| #ifdef __cplusplus +| extern "C" +| #endif +| /* We use char because int might match the return type of a gcc2 +| builtin and then its argument prototype would still apply. */ +| char strerror (); +| int +| main () +| { +| strerror (); +| ; +| return 0; +| } +configure:2861: result: no +configure:2874: checking how to run the C preprocessor +configure:2910: gcc -E conftest.c +configure:2916: $? = 0 +configure:2948: gcc -E conftest.c +configure:2949:10: fatal error: ac_nonexistent.h: No such file or directory + 2949 | (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 + | ^~~~~~~~~~~~~~~~~~ +compilation terminated. +configure:2954: $? = 1 +configure: failed program was: +| #line 2939 "configure" +| /* confdefs.h. */ +| +| #define PACKAGE_NAME "" +| #define PACKAGE_TARNAME "" +| #define PACKAGE_VERSION "" +| #define PACKAGE_STRING "" +| #define PACKAGE_BUGREPORT "" +| #define VQA_PACKAGE "vqadmin" +| #define VQA_VERSION "2.3.6" +| /* end confdefs.h. */ +| #include +configure:2992: result: gcc -E +configure:3017: gcc -E conftest.c +configure:3023: $? = 0 +configure:3055: gcc -E conftest.c +configure:3056:10: fatal error: ac_nonexistent.h: No such file or directory + 3056 | (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 + | ^~~~~~~~~~~~~~~~~~ +compilation terminated. +configure:3061: $? = 1 +configure: failed program was: +| #line 3046 "configure" +| /* confdefs.h. */ +| +| #define PACKAGE_NAME "" +| #define PACKAGE_TARNAME "" +| #define PACKAGE_VERSION "" +| #define PACKAGE_STRING "" +| #define PACKAGE_BUGREPORT "" +| #define VQA_PACKAGE "vqadmin" +| #define VQA_VERSION "2.3.6" +| /* end confdefs.h. */ +| #include +configure:3104: checking for egrep +configure:3114: result: grep -E +configure:3120: checking for AIX +configure:3143: result: no +configure:3277: gcc -o conftest -g -O2 -Wall conftest.c >&5 +configure: In function 'main': +configure:3256:9: warning: implicit declaration of function 'unlink' [-Wimplicit-function-declaration] + 3256 | fclose(f); + | ^~~~~~ +configure:3263:16: warning: implicit declaration of function 'strlen' [-Wimplicit-function-declaration] + 3263 | + | ^ +configure:3249:1: note: include '' or provide a declaration of 'strlen' + 3248 | FILE *f; + +++ |+#include + 3249 | +configure:3263:16: warning: incompatible implicit declaration of built-in function 'strlen' [-Wbuiltin-declaration-mismatch] + 3263 | + | ^ +configure:3263:16: note: include '' or provide a declaration of 'strlen' +configure:3280: $? = 0 +configure:3282: ./conftest +configure:3285: $? = 0 +configure:3287: result: yes +configure:3437: checking for dirent.h that defines DIR +configure:3462: gcc -c -g -O2 -Wall conftest.c >&5 +configure:3465: $? = 0 +configure:3468: test -s conftest.o +configure:3471: $? = 0 +configure:3482: result: yes +configure:3495: checking for library containing opendir +configure:3526: gcc -o conftest -g -O2 -Wall conftest.c >&5 +configure:3529: $? = 0 +configure:3532: test -s conftest +configure:3535: $? = 0 +configure:3594: result: none required +configure:3710: checking for ANSI C header files +configure:3736: gcc -c -g -O2 -Wall conftest.c >&5 +configure:3739: $? = 0 +configure:3742: test -s conftest.o +configure:3745: $? = 0 +configure:3837: gcc -o conftest -g -O2 -Wall conftest.c >&5 +configure: In function 'main': +configure:3837:7: warning: implicit declaration of function 'exit' [-Wimplicit-function-declaration] + 3837 | if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + | ^~~~ +configure:3821:1: note: include '' or provide a declaration of 'exit' + 3820 | || ('s' <= (c) && (c) <= 'z')) + +++ |+#include + 3821 | # define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c)) +configure:3837:7: warning: incompatible implicit declaration of built-in function 'exit' [-Wbuiltin-declaration-mismatch] + 3837 | if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + | ^~~~ +configure:3837:7: note: include '' or provide a declaration of 'exit' +configure:3838:3: warning: incompatible implicit declaration of built-in function 'exit' [-Wbuiltin-declaration-mismatch] + 3838 | (eval $ac_link) 2>&5 + | ^~~~ +configure:3838:3: note: include '' or provide a declaration of 'exit' +configure:3840: $? = 0 +configure:3842: ./conftest +configure:3845: $? = 0 +configure:3860: result: yes +configure:3884: checking for sys/types.h +configure:3901: gcc -c -g -O2 -Wall conftest.c >&5 +configure:3904: $? = 0 +configure:3907: test -s conftest.o +configure:3910: $? = 0 +configure:3921: result: yes +configure:3884: checking for sys/stat.h +configure:3901: gcc -c -g -O2 -Wall conftest.c >&5 +configure:3904: $? = 0 +configure:3907: test -s conftest.o +configure:3910: $? = 0 +configure:3921: result: yes +configure:3884: checking for stdlib.h +configure:3901: gcc -c -g -O2 -Wall conftest.c >&5 +configure:3904: $? = 0 +configure:3907: test -s conftest.o +configure:3910: $? = 0 +configure:3921: result: yes +configure:3884: checking for string.h +configure:3901: gcc -c -g -O2 -Wall conftest.c >&5 +configure:3904: $? = 0 +configure:3907: test -s conftest.o +configure:3910: $? = 0 +configure:3921: result: yes +configure:3884: checking for memory.h +configure:3901: gcc -c -g -O2 -Wall conftest.c >&5 +configure:3904: $? = 0 +configure:3907: test -s conftest.o +configure:3910: $? = 0 +configure:3921: result: yes +configure:3884: checking for strings.h +configure:3901: gcc -c -g -O2 -Wall conftest.c >&5 +configure:3904: $? = 0 +configure:3907: test -s conftest.o +configure:3910: $? = 0 +configure:3921: result: yes +configure:3884: checking for inttypes.h +configure:3901: gcc -c -g -O2 -Wall conftest.c >&5 +configure:3904: $? = 0 +configure:3907: test -s conftest.o +configure:3910: $? = 0 +configure:3921: result: yes +configure:3884: checking for stdint.h +configure:3901: gcc -c -g -O2 -Wall conftest.c >&5 +configure:3904: $? = 0 +configure:3907: test -s conftest.o +configure:3910: $? = 0 +configure:3921: result: yes +configure:3884: checking for unistd.h +configure:3901: gcc -c -g -O2 -Wall conftest.c >&5 +configure:3904: $? = 0 +configure:3907: test -s conftest.o +configure:3910: $? = 0 +configure:3921: result: yes +configure:3938: checking for unistd.h +configure:3943: result: yes +configure:4076: checking for an ANSI C-conforming const +configure:4144: gcc -c -g -O2 -Wall conftest.c >&5 +configure: In function 'main': +configure:4134:17: warning: unused variable 's' [-Wunused-variable] + 4134 | { /* ULTRIX-32 V3.1 (Rev 9) vcc rejects this */ + | ^ +configure:4154:15: warning: unused variable 'foo' [-Wunused-variable] + 4154 | (exit $ac_status); }; }; then + | ^~~ +configure:4121:29: warning: unused variable 'zero' [-Wunused-variable] + 4121 | const int *foo = &x[0]; + | ^ +configure:4115:17: warning: unused variable 'x' [-Wunused-variable] + 4115 | char const *s = 0 ? (char *) 0 : (char const *) 0; + | ^ +configure:4136:7: warning: 't' is used uninitialized [-Wuninitialized] + 4136 | } + | ^ +configure:4151:23: warning: 'b' is used uninitialized [-Wuninitialized] + 4151 | (eval $ac_try) 2>&5 + | ~~~~ ^ +configure:4147: $? = 0 +configure:4150: test -s conftest.o +configure:4153: $? = 0 +configure:4164: result: yes +configure:4174: checking for size_t +configure:4199: gcc -c -g -O2 -Wall conftest.c >&5 +configure:4202: $? = 0 +configure:4205: test -s conftest.o +configure:4208: $? = 0 +configure:4219: result: yes +configure:4231: checking whether struct tm is in sys/time.h or time.h +configure:4255: gcc -c -g -O2 -Wall conftest.c >&5 +configure: In function 'main': +configure:4268:18: warning: statement with no effect [-Wunused-value] + 4268 | echo "$as_me: failed program was:" >&5 + | ~~^~~~~~~~ +configure:4258: $? = 0 +configure:4261: test -s conftest.o +configure:4264: $? = 0 +configure:4275: result: time.h +configure:4287: checking for crypt in -lcrypt +configure:4318: gcc -o conftest -g -O2 -Wall conftest.c -lcrypt >&5 +configure:4321: $? = 0 +configure:4324: test -s conftest +configure:4327: $? = 0 +configure:4339: result: yes +configure:4351: checking for floor in -lm +configure:4382: gcc -o conftest -g -O2 -Wall conftest.c -lm -lcrypt >&5 +configure:4392:6: warning: conflicting types for built-in function 'floor'; expected 'double(double)' [-Wbuiltin-declaration-mismatch] + 4392 | (exit $ac_status); }; }; then + | ^~~~~ +configure:4358:1: note: 'floor' is declared in header '' + 4357 | LIBS="-lm $LIBS" + +++ |+#include + 4358 | cat >conftest.$ac_ext <<_ACEOF +configure:4385: $? = 0 +configure:4388: test -s conftest +configure:4391: $? = 0 +configure:4403: result: yes +configure:4415: checking for compress in -lz +configure:4446: gcc -o conftest -g -O2 -Wall conftest.c -lz -lm -lcrypt >&5 +configure:4449: $? = 0 +configure:4452: test -s conftest +configure:4455: $? = 0 +configure:4467: result: yes +configure:4582: creating ./config.status + +## ---------------------- ## +## Running config.status. ## +## ---------------------- ## + +This file was extended by config.status, which was +generated by GNU Autoconf 2.57. Invocation command line was + + CONFIG_FILES = + CONFIG_HEADERS = + CONFIG_LINKS = + CONFIG_COMMANDS = + $ ./config.status + +on qmail + +config.status:667: creating Makefile +config.status:771: creating config.h +config.status:892: config.h is unchanged +config.status:998: executing depfiles commands + +## ---------------- ## +## Cache variables. ## +## ---------------- ## + +ac_cv_build=x86_64-unknown-linux-gnu +ac_cv_build_alias=x86_64-unknown-linux-gnu +ac_cv_c_compiler_gnu=yes +ac_cv_c_const=yes +ac_cv_env_CC_set= +ac_cv_env_CC_value= +ac_cv_env_CFLAGS_set= +ac_cv_env_CFLAGS_value= +ac_cv_env_CPPFLAGS_set= +ac_cv_env_CPPFLAGS_value= +ac_cv_env_CPP_set= +ac_cv_env_CPP_value= +ac_cv_env_LDFLAGS_set= +ac_cv_env_LDFLAGS_value= +ac_cv_env_build_alias_set= +ac_cv_env_build_alias_value= +ac_cv_env_host_alias_set= +ac_cv_env_host_alias_value= +ac_cv_env_target_alias_set= +ac_cv_env_target_alias_value= +ac_cv_exeext= +ac_cv_header_dirent_dirent_h=yes +ac_cv_header_inttypes_h=yes +ac_cv_header_memory_h=yes +ac_cv_header_stdc=yes +ac_cv_header_stdint_h=yes +ac_cv_header_stdlib_h=yes +ac_cv_header_string_h=yes +ac_cv_header_strings_h=yes +ac_cv_header_sys_stat_h=yes +ac_cv_header_sys_types_h=yes +ac_cv_header_unistd_h=yes +ac_cv_host=x86_64-unknown-linux-gnu +ac_cv_host_alias=x86_64-unknown-linux-gnu +ac_cv_lib_cposix_strerror=no +ac_cv_lib_crypt_crypt=yes +ac_cv_lib_m_floor=yes +ac_cv_lib_z_compress=yes +ac_cv_objext=o +ac_cv_path_install='/usr/bin/ginstall -c' +ac_cv_prog_AWK=gawk +ac_cv_prog_CPP='gcc -E' +ac_cv_prog_ac_ct_CC=gcc +ac_cv_prog_ac_ct_RANLIB=ranlib +ac_cv_prog_cc_g=yes +ac_cv_prog_cc_stdc= +ac_cv_prog_egrep='grep -E' +ac_cv_prog_make_make_set=yes +ac_cv_search_opendir='none required' +ac_cv_struct_tm=time.h +ac_cv_type_size_t=yes +am_cv_CC_dependencies_compiler_type=none + +## ----------------- ## +## Output variables. ## +## ----------------- ## + +ACLOCAL='aclocal-1.6' +AMDEPBACKSLASH='\' +AMDEP_FALSE='#' +AMDEP_TRUE='' +AMTAR='tar' +AUTOCONF='autoconf' +AUTOHEADER='autoheader' +AUTOMAKE='automake-1.6' +AWK='gawk' +CC='gcc' +CCDEPMODE='depmode=none' +CFLAGS='-g -O2 -Wall' +CPP='gcc -E' +CPPFLAGS='' +DEFS='-DHAVE_CONFIG_H' +DEPDIR='.deps' +ECHO_C='' +ECHO_N='-n' +ECHO_T='' +EGREP='grep -E' +EXEEXT='' +INSTALL_DATA='${INSTALL} -m 644' +INSTALL_PROGRAM='${INSTALL}' +INSTALL_SCRIPT='${INSTALL}' +INSTALL_STRIP_PROGRAM='${SHELL} $(install_sh) -c -s' +LDFLAGS='' +LIBOBJS='' +LIBS='-lz -lm -lcrypt ' +LTLIBOBJS='' +MAKEINFO='makeinfo' +OBJEXT='o' +PACKAGE_BUGREPORT='' +PACKAGE_NAME='' +PACKAGE_STRING='' +PACKAGE_TARNAME='' +PACKAGE_VERSION='' +PATH_SEPARATOR=':' +RANLIB='ranlib' +SET_MAKE='' +SHELL='/bin/sh' +STRIP='' +VQA_PACKAGE='vqadmin' +VQA_VERSION='2.3.6' +ac_ct_CC='gcc' +ac_ct_RANLIB='ranlib' +ac_ct_STRIP='' +am__include='include' +am__quote='' +bindir='${exec_prefix}/bin' +build='x86_64-unknown-linux-gnu' +build_alias='' +build_cpu='x86_64' +build_os='linux-gnu' +build_vendor='unknown' +cgibindir='/usr/local/www/htdocs/qmail/cgi-bin' +datadir='${prefix}/share' +exec_prefix='${prefix}' +host='x86_64-unknown-linux-gnu' +host_alias='' +host_cpu='x86_64' +host_os='linux-gnu' +host_vendor='unknown' +inc_deps='-I/home/vpopmail/include' +includedir='${prefix}/include' +infodir='${prefix}/info' +install_sh='/usr/local/src/qmailshare/vqadmin/02_ali/vqadmin-2.3.7_20200226/install-sh' +lib_deps='-L/home/vpopmail/lib -lvpopmail -Xlinker -R -Xlinker /usr/lib64 -L/usr/lib64 -lmysqlclient -lz -lm -lcrypt ' +libdir='${exec_prefix}/lib' +libexecdir='${exec_prefix}/libexec' +localstatedir='${prefix}/var' +mandir='${prefix}/man' +oldincludedir='/usr/include' +prefix='/usr/local' +program_transform_name='s,x,x,' +sbindir='${exec_prefix}/sbin' +sharedstatedir='${prefix}/com' +sysconfdir='${prefix}/etc' +target_alias='' +vpopgroup='vchkpw' +vpopmaildir='/home/vpopmail' +vpopmailgid='89' +vpopmailuid='89' +vpopuser='vpopmail' +wwwroot='' + +## ----------- ## +## confdefs.h. ## +## ----------- ## + +#define HAVE_DIRENT_H 1 +#define HAVE_INTTYPES_H 1 +#define HAVE_LIBCRYPT 1 +#define HAVE_LIBM 1 +#define HAVE_LIBZ 1 +#define HAVE_MEMORY_H 1 +#define HAVE_STDINT_H 1 +#define HAVE_STDLIB_H 1 +#define HAVE_STRINGS_H 1 +#define HAVE_STRING_H 1 +#define HAVE_SYS_STAT_H 1 +#define HAVE_SYS_TYPES_H 1 +#define HAVE_UNISTD_H 1 +#define HAVE_UNISTD_H 1 +#define ISOQLOGPATH "/usr/local/etc/isoqlog.domains" +#define PACKAGE_BUGREPORT "" +#define PACKAGE_NAME "" +#define PACKAGE_STRING "" +#define PACKAGE_TARNAME "" +#define PACKAGE_VERSION "" +#define QMAILDIR "/var/qmail" +#define STDC_HEADERS 1 +#define VPOPGROUP "vchkpw" +#define VPOPUSER "vpopmail" +#define VQA_PACKAGE "vqadmin" +#define VQA_VERSION "2.3.6" + +configure: exit 0 diff -ruN ../vqadmin-2.3.7-original/config.status vqadmin-2.3.7/config.status --- ../vqadmin-2.3.7-original/config.status 1970-01-01 01:00:00.000000000 +0100 +++ vqadmin-2.3.7/config.status 2023-02-18 17:47:57.002452132 +0100 @@ -0,0 +1,1095 @@ +#! /bin/sh +# Generated by configure. +# Run this file to recreate the current configuration. +# Compiler output produced by configure, useful for debugging +# configure, is in config.log if it exists. + +debug=false +ac_cs_recheck=false +ac_cs_silent=false +SHELL=${CONFIG_SHELL-/bin/sh} +## --------------------- ## +## M4sh Initialization. ## +## --------------------- ## + +# Be Bourne compatible +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then + emulate sh + NULLCMD=: + # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' +elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then + set -o posix +fi + +# Support unset when possible. +if (FOO=FOO; unset FOO) >/dev/null 2>&1; then + as_unset=unset +else + as_unset=false +fi + + +# Work around bugs in pre-3.0 UWIN ksh. +$as_unset ENV MAIL MAILPATH +PS1='$ ' +PS2='> ' +PS4='+ ' + +# NLS nuisances. +for as_var in \ + LANG LANGUAGE LC_ADDRESS LC_ALL LC_COLLATE LC_CTYPE LC_IDENTIFICATION \ + LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \ + LC_TELEPHONE LC_TIME +do + if (set +x; test -n "`(eval $as_var=C; export $as_var) 2>&1`"); then + eval $as_var=C; export $as_var + else + $as_unset $as_var + fi +done + +# Required to use basename. +if expr a : '\(a\)' >/dev/null 2>&1; then + as_expr=expr +else + as_expr=false +fi + +if (basename /) >/dev/null 2>&1 && test "X`basename / 2>&1`" = "X/"; then + as_basename=basename +else + as_basename=false +fi + + +# Name of the executable. +as_me=`$as_basename "$0" || +$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ + X"$0" : 'X\(//\)$' \| \ + X"$0" : 'X\(/\)$' \| \ + . : '\(.\)' 2>/dev/null || +echo X/"$0" | + sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/; q; } + /^X\/\(\/\/\)$/{ s//\1/; q; } + /^X\/\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + + +# PATH needs CR, and LINENO needs CR and PATH. +# Avoid depending upon Character Ranges. +as_cr_letters='abcdefghijklmnopqrstuvwxyz' +as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' +as_cr_Letters=$as_cr_letters$as_cr_LETTERS +as_cr_digits='0123456789' +as_cr_alnum=$as_cr_Letters$as_cr_digits + +# The user is always right. +if test "${PATH_SEPARATOR+set}" != set; then + echo "#! /bin/sh" >conf$$.sh + echo "exit 0" >>conf$$.sh + chmod +x conf$$.sh + if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then + PATH_SEPARATOR=';' + else + PATH_SEPARATOR=: + fi + rm -f conf$$.sh +fi + + + as_lineno_1=$LINENO + as_lineno_2=$LINENO + as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` + test "x$as_lineno_1" != "x$as_lineno_2" && + test "x$as_lineno_3" = "x$as_lineno_2" || { + # Find who we are. Look in the path if we contain no path at all + # relative or not. + case $0 in + *[\\/]* ) as_myself=$0 ;; + *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break +done + + ;; + esac + # We did not find ourselves, most probably we were run as `sh COMMAND' + # in which case we are not to be found in the path. + if test "x$as_myself" = x; then + as_myself=$0 + fi + if test ! -f "$as_myself"; then + { { echo "$as_me:$LINENO: error: cannot find myself; rerun with an absolute path" >&5 +echo "$as_me: error: cannot find myself; rerun with an absolute path" >&2;} + { (exit 1); exit 1; }; } + fi + case $CONFIG_SHELL in + '') + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for as_base in sh bash ksh sh5; do + case $as_dir in + /*) + if ("$as_dir/$as_base" -c ' + as_lineno_1=$LINENO + as_lineno_2=$LINENO + as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` + test "x$as_lineno_1" != "x$as_lineno_2" && + test "x$as_lineno_3" = "x$as_lineno_2" ') 2>/dev/null; then + $as_unset BASH_ENV || test "${BASH_ENV+set}" != set || { BASH_ENV=; export BASH_ENV; } + $as_unset ENV || test "${ENV+set}" != set || { ENV=; export ENV; } + CONFIG_SHELL=$as_dir/$as_base + export CONFIG_SHELL + exec "$CONFIG_SHELL" "$0" ${1+"$@"} + fi;; + esac + done +done +;; + esac + + # Create $as_me.lineno as a copy of $as_myself, but with $LINENO + # uniformly replaced by the line number. The first 'sed' inserts a + # line-number line before each line; the second 'sed' does the real + # work. The second script uses 'N' to pair each line-number line + # with the numbered line, and appends trailing '-' during + # substitution so that $LINENO is not a special case at line end. + # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the + # second 'sed' script. Blame Lee E. McMahon for sed's syntax. :-) + sed '=' <$as_myself | + sed ' + N + s,$,-, + : loop + s,^\(['$as_cr_digits']*\)\(.*\)[$]LINENO\([^'$as_cr_alnum'_]\),\1\2\1\3, + t loop + s,-$,, + s,^['$as_cr_digits']*\n,, + ' >$as_me.lineno && + chmod +x $as_me.lineno || + { { echo "$as_me:$LINENO: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&5 +echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2;} + { (exit 1); exit 1; }; } + + # Don't try to exec as it changes $[0], causing all sort of problems + # (the dirname of $[0] is not the place where we might find the + # original and so on. Autoconf is especially sensible to this). + . ./$as_me.lineno + # Exit status is that of the last command. + exit +} + + +case `echo "testing\c"; echo 1,2,3`,`echo -n testing; echo 1,2,3` in + *c*,-n*) ECHO_N= ECHO_C=' +' ECHO_T=' ' ;; + *c*,* ) ECHO_N=-n ECHO_C= ECHO_T= ;; + *) ECHO_N= ECHO_C='\c' ECHO_T= ;; +esac + +if expr a : '\(a\)' >/dev/null 2>&1; then + as_expr=expr +else + as_expr=false +fi + +rm -f conf$$ conf$$.exe conf$$.file +echo >conf$$.file +if ln -s conf$$.file conf$$ 2>/dev/null; then + # We could just check for DJGPP; but this test a) works b) is more generic + # and c) will remain valid once DJGPP supports symlinks (DJGPP 2.04). + if test -f conf$$.exe; then + # Don't use ln at all; we don't have any links + as_ln_s='cp -p' + else + as_ln_s='ln -s' + fi +elif ln conf$$.file conf$$ 2>/dev/null; then + as_ln_s=ln +else + as_ln_s='cp -p' +fi +rm -f conf$$ conf$$.exe conf$$.file + +if mkdir -p . 2>/dev/null; then + as_mkdir_p=: +else + as_mkdir_p=false +fi + +as_executable_p="test -f" + +# Sed expression to map a string onto a valid CPP name. +as_tr_cpp="sed y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g" + +# Sed expression to map a string onto a valid variable name. +as_tr_sh="sed y%*+%pp%;s%[^_$as_cr_alnum]%_%g" + + +# IFS +# We need space, tab and new line, in precisely that order. +as_nl=' +' +IFS=" $as_nl" + +# CDPATH. +$as_unset CDPATH + +exec 6>&1 + +# Open the log real soon, to keep \$[0] and so on meaningful, and to +# report actual input values of CONFIG_FILES etc. instead of their +# values after options handling. Logging --version etc. is OK. +exec 5>>config.log +{ + echo + sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX +## Running $as_me. ## +_ASBOX +} >&5 +cat >&5 <<_CSEOF + +This file was extended by $as_me, which was +generated by GNU Autoconf 2.57. Invocation command line was + + CONFIG_FILES = $CONFIG_FILES + CONFIG_HEADERS = $CONFIG_HEADERS + CONFIG_LINKS = $CONFIG_LINKS + CONFIG_COMMANDS = $CONFIG_COMMANDS + $ $0 $@ + +_CSEOF +echo "on `(hostname || uname -n) 2>/dev/null | sed 1q`" >&5 +echo >&5 +config_files=" Makefile" +config_headers=" config.h" +config_commands=" depfiles" + +ac_cs_usage="\ +\`$as_me' instantiates files from templates according to the +current configuration. + +Usage: $0 [OPTIONS] [FILE]... + + -h, --help print this help, then exit + -V, --version print version number, then exit + -q, --quiet do not print progress messages + -d, --debug don't remove temporary files + --recheck update $as_me by reconfiguring in the same conditions + --file=FILE[:TEMPLATE] + instantiate the configuration file FILE + --header=FILE[:TEMPLATE] + instantiate the configuration header FILE + +Configuration files: +$config_files + +Configuration headers: +$config_headers + +Configuration commands: +$config_commands + +Report bugs to ." +ac_cs_version="\ +config.status +configured by ./configure, generated by GNU Autoconf 2.57, + with options \"'--enable-qmaildir=/var/qmail' '--enable-cgibindir=/usr/local/www/htdocs/qmail/cgi-bin'\" + +Copyright 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001 +Free Software Foundation, Inc. +This config.status script is free software; the Free Software Foundation +gives unlimited permission to copy, distribute and modify it." +srcdir=. +INSTALL="/usr/bin/ginstall -c" +# If no file are specified by the user, then we need to provide default +# value. By we need to know if files were specified by the user. +ac_need_defaults=: +while test $# != 0 +do + case $1 in + --*=*) + ac_option=`expr "x$1" : 'x\([^=]*\)='` + ac_optarg=`expr "x$1" : 'x[^=]*=\(.*\)'` + ac_shift=: + ;; + -*) + ac_option=$1 + ac_optarg=$2 + ac_shift=shift + ;; + *) # This is not an option, so the user has probably given explicit + # arguments. + ac_option=$1 + ac_need_defaults=false;; + esac + + case $ac_option in + # Handling of the options. + -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) + ac_cs_recheck=: ;; + --version | --vers* | -V ) + echo "$ac_cs_version"; exit 0 ;; + --he | --h) + # Conflict between --help and --header + { { echo "$as_me:$LINENO: error: ambiguous option: $1 +Try \`$0 --help' for more information." >&5 +echo "$as_me: error: ambiguous option: $1 +Try \`$0 --help' for more information." >&2;} + { (exit 1); exit 1; }; };; + --help | --hel | -h ) + echo "$ac_cs_usage"; exit 0 ;; + --debug | --d* | -d ) + debug=: ;; + --file | --fil | --fi | --f ) + $ac_shift + CONFIG_FILES="$CONFIG_FILES $ac_optarg" + ac_need_defaults=false;; + --header | --heade | --head | --hea ) + $ac_shift + CONFIG_HEADERS="$CONFIG_HEADERS $ac_optarg" + ac_need_defaults=false;; + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ + | -silent | --silent | --silen | --sile | --sil | --si | --s) + ac_cs_silent=: ;; + + # This is an error. + -*) { { echo "$as_me:$LINENO: error: unrecognized option: $1 +Try \`$0 --help' for more information." >&5 +echo "$as_me: error: unrecognized option: $1 +Try \`$0 --help' for more information." >&2;} + { (exit 1); exit 1; }; } ;; + + *) ac_config_targets="$ac_config_targets $1" ;; + + esac + shift +done + +ac_configure_extra_args= + +if $ac_cs_silent; then + exec 6>/dev/null + ac_configure_extra_args="$ac_configure_extra_args --silent" +fi + +if $ac_cs_recheck; then + echo "running /bin/sh ./configure " '--enable-qmaildir=/var/qmail' '--enable-cgibindir=/usr/local/www/htdocs/qmail/cgi-bin' $ac_configure_extra_args " --no-create --no-recursion" >&6 + exec /bin/sh ./configure '--enable-qmaildir=/var/qmail' '--enable-cgibindir=/usr/local/www/htdocs/qmail/cgi-bin' $ac_configure_extra_args --no-create --no-recursion +fi + +# +# INIT-COMMANDS section. +# + +AMDEP_TRUE="" ac_aux_dir="." + +for ac_config_target in $ac_config_targets +do + case "$ac_config_target" in + # Handling of arguments. + "Makefile" ) CONFIG_FILES="$CONFIG_FILES Makefile" ;; + "depfiles" ) CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;; + "config.h" ) CONFIG_HEADERS="$CONFIG_HEADERS config.h" ;; + *) { { echo "$as_me:$LINENO: error: invalid argument: $ac_config_target" >&5 +echo "$as_me: error: invalid argument: $ac_config_target" >&2;} + { (exit 1); exit 1; }; };; + esac +done + +# If the user did not use the arguments to specify the items to instantiate, +# then the envvar interface is used. Set only those that are not. +# We use the long form for the default assignment because of an extremely +# bizarre bug on SunOS 4.1.3. +if $ac_need_defaults; then + test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files + test "${CONFIG_HEADERS+set}" = set || CONFIG_HEADERS=$config_headers + test "${CONFIG_COMMANDS+set}" = set || CONFIG_COMMANDS=$config_commands +fi + +# Have a temporary directory for convenience. Make it in the build tree +# simply because there is no reason to put it here, and in addition, +# creating and moving files from /tmp can sometimes cause problems. +# Create a temporary directory, and hook for its removal unless debugging. +$debug || +{ + trap 'exit_status=$?; rm -rf $tmp && exit $exit_status' 0 + trap '{ (exit 1); exit 1; }' 1 2 13 15 +} + +# Create a (secure) tmp directory for tmp files. + +{ + tmp=`(umask 077 && mktemp -d -q "./confstatXXXXXX") 2>/dev/null` && + test -n "$tmp" && test -d "$tmp" +} || +{ + tmp=./confstat$$-$RANDOM + (umask 077 && mkdir $tmp) +} || +{ + echo "$me: cannot create a temporary directory in ." >&2 + { (exit 1); exit 1; } +} + + +# +# CONFIG_FILES section. +# + +# No need to generate the scripts if there are no CONFIG_FILES. +# This happens for instance when ./config.status config.h +if test -n "$CONFIG_FILES"; then + # Protect against being on the right side of a sed subst in config.status. + sed 's/,@/@@/; s/@,/@@/; s/,;t t$/@;t t/; /@;t t$/s/[\\&,]/\\&/g; + s/@@/,@/; s/@@/@,/; s/@;t t$/,;t t/' >$tmp/subs.sed <<\CEOF +s,@SHELL@,/bin/sh,;t t +s,@PATH_SEPARATOR@,:,;t t +s,@PACKAGE_NAME@,,;t t +s,@PACKAGE_TARNAME@,,;t t +s,@PACKAGE_VERSION@,,;t t +s,@PACKAGE_STRING@,,;t t +s,@PACKAGE_BUGREPORT@,,;t t +s,@exec_prefix@,${prefix},;t t +s,@prefix@,/usr/local,;t t +s,@program_transform_name@,s,x,x,,;t t +s,@bindir@,${exec_prefix}/bin,;t t +s,@sbindir@,${exec_prefix}/sbin,;t t +s,@libexecdir@,${exec_prefix}/libexec,;t t +s,@datadir@,${prefix}/share,;t t +s,@sysconfdir@,${prefix}/etc,;t t +s,@sharedstatedir@,${prefix}/com,;t t +s,@localstatedir@,${prefix}/var,;t t +s,@libdir@,${exec_prefix}/lib,;t t +s,@includedir@,${prefix}/include,;t t +s,@oldincludedir@,/usr/include,;t t +s,@infodir@,${prefix}/info,;t t +s,@mandir@,${prefix}/man,;t t +s,@build_alias@,,;t t +s,@host_alias@,,;t t +s,@target_alias@,,;t t +s,@DEFS@,-DHAVE_CONFIG_H,;t t +s,@ECHO_C@,,;t t +s,@ECHO_N@,-n,;t t +s,@ECHO_T@,,;t t +s,@LIBS@,-lz -lm -lcrypt ,;t t +s,@INSTALL_PROGRAM@,${INSTALL},;t t +s,@INSTALL_SCRIPT@,${INSTALL},;t t +s,@INSTALL_DATA@,${INSTALL} -m 644,;t t +s,@VQA_PACKAGE@,vqadmin,;t t +s,@VQA_VERSION@,2.3.6,;t t +s,@ACLOCAL@,aclocal-1.6,;t t +s,@AUTOCONF@,autoconf,;t t +s,@AUTOMAKE@,automake-1.6,;t t +s,@AUTOHEADER@,autoheader,;t t +s,@MAKEINFO@,makeinfo,;t t +s,@AMTAR@,tar,;t t +s,@install_sh@,/usr/local/src/qmailshare/vqadmin/02_ali/vqadmin-2.3.7_20200226/install-sh,;t t +s,@STRIP@,,;t t +s,@ac_ct_STRIP@,,;t t +s,@INSTALL_STRIP_PROGRAM@,${SHELL} $(install_sh) -c -s,;t t +s,@AWK@,gawk,;t t +s,@SET_MAKE@,,;t t +s,@build@,x86_64-unknown-linux-gnu,;t t +s,@build_cpu@,x86_64,;t t +s,@build_vendor@,unknown,;t t +s,@build_os@,linux-gnu,;t t +s,@host@,x86_64-unknown-linux-gnu,;t t +s,@host_cpu@,x86_64,;t t +s,@host_vendor@,unknown,;t t +s,@host_os@,linux-gnu,;t t +s,@CC@,gcc,;t t +s,@CFLAGS@,-g -O2 -Wall,;t t +s,@LDFLAGS@,,;t t +s,@CPPFLAGS@,,;t t +s,@ac_ct_CC@,gcc,;t t +s,@EXEEXT@,,;t t +s,@OBJEXT@,o,;t t +s,@DEPDIR@,.deps,;t t +s,@am__include@,include,;t t +s,@am__quote@,,;t t +s,@AMDEP_TRUE@,,;t t +s,@AMDEP_FALSE@,#,;t t +s,@AMDEPBACKSLASH@,\,;t t +s,@CCDEPMODE@,depmode=none,;t t +s,@RANLIB@,ranlib,;t t +s,@ac_ct_RANLIB@,ranlib,;t t +s,@CPP@,gcc -E,;t t +s,@EGREP@,grep -E,;t t +s,@vpopuser@,vpopmail,;t t +s,@vpopgroup@,vchkpw,;t t +s,@vpopmaildir@,/home/vpopmail,;t t +s,@vpopmailuid@,89,;t t +s,@vpopmailgid@,89,;t t +s,@lib_deps@,-L/home/vpopmail/lib -lvpopmail -Xlinker -R -Xlinker /usr/lib64 -L/usr/lib64 -lmysqlclient -lz -lm -lcrypt ,;t t +s,@inc_deps@,-I/home/vpopmail/include,;t t +s,@wwwroot@,,;t t +s,@cgibindir@,/usr/local/www/htdocs/qmail/cgi-bin,;t t +s,@LIBOBJS@,,;t t +s,@LTLIBOBJS@,,;t t +CEOF + + # Split the substitutions into bite-sized pieces for seds with + # small command number limits, like on Digital OSF/1 and HP-UX. + ac_max_sed_lines=48 + ac_sed_frag=1 # Number of current file. + ac_beg=1 # First line for current file. + ac_end=$ac_max_sed_lines # Line after last line for current file. + ac_more_lines=: + ac_sed_cmds= + while $ac_more_lines; do + if test $ac_beg -gt 1; then + sed "1,${ac_beg}d; ${ac_end}q" $tmp/subs.sed >$tmp/subs.frag + else + sed "${ac_end}q" $tmp/subs.sed >$tmp/subs.frag + fi + if test ! -s $tmp/subs.frag; then + ac_more_lines=false + else + # The purpose of the label and of the branching condition is to + # speed up the sed processing (if there are no `@' at all, there + # is no need to browse any of the substitutions). + # These are the two extra sed commands mentioned above. + (echo ':t + /@[a-zA-Z_][a-zA-Z_0-9]*@/!b' && cat $tmp/subs.frag) >$tmp/subs-$ac_sed_frag.sed + if test -z "$ac_sed_cmds"; then + ac_sed_cmds="sed -f $tmp/subs-$ac_sed_frag.sed" + else + ac_sed_cmds="$ac_sed_cmds | sed -f $tmp/subs-$ac_sed_frag.sed" + fi + ac_sed_frag=`expr $ac_sed_frag + 1` + ac_beg=$ac_end + ac_end=`expr $ac_end + $ac_max_sed_lines` + fi + done + if test -z "$ac_sed_cmds"; then + ac_sed_cmds=cat + fi +fi # test -n "$CONFIG_FILES" + +for ac_file in : $CONFIG_FILES; do test "x$ac_file" = x: && continue + # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in". + case $ac_file in + - | *:- | *:-:* ) # input from stdin + cat >$tmp/stdin + ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` + ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; + *:* ) ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` + ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; + * ) ac_file_in=$ac_file.in ;; + esac + + # Compute @srcdir@, @top_srcdir@, and @INSTALL@ for subdirectories. + ac_dir=`(dirname "$ac_file") 2>/dev/null || +$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$ac_file" : 'X\(//\)[^/]' \| \ + X"$ac_file" : 'X\(//\)$' \| \ + X"$ac_file" : 'X\(/\)' \| \ + . : '\(.\)' 2>/dev/null || +echo X"$ac_file" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } + /^X\(\/\/\)[^/].*/{ s//\1/; q; } + /^X\(\/\/\)$/{ s//\1/; q; } + /^X\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + { if $as_mkdir_p; then + mkdir -p "$ac_dir" + else + as_dir="$ac_dir" + as_dirs= + while test ! -d "$as_dir"; do + as_dirs="$as_dir $as_dirs" + as_dir=`(dirname "$as_dir") 2>/dev/null || +$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_dir" : 'X\(//\)[^/]' \| \ + X"$as_dir" : 'X\(//\)$' \| \ + X"$as_dir" : 'X\(/\)' \| \ + . : '\(.\)' 2>/dev/null || +echo X"$as_dir" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } + /^X\(\/\/\)[^/].*/{ s//\1/; q; } + /^X\(\/\/\)$/{ s//\1/; q; } + /^X\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + done + test ! -n "$as_dirs" || mkdir $as_dirs + fi || { { echo "$as_me:$LINENO: error: cannot create directory \"$ac_dir\"" >&5 +echo "$as_me: error: cannot create directory \"$ac_dir\"" >&2;} + { (exit 1); exit 1; }; }; } + + ac_builddir=. + +if test "$ac_dir" != .; then + ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'` + # A "../" for each directory in $ac_dir_suffix. + ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'` +else + ac_dir_suffix= ac_top_builddir= +fi + +case $srcdir in + .) # No --srcdir option. We are building in place. + ac_srcdir=. + if test -z "$ac_top_builddir"; then + ac_top_srcdir=. + else + ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'` + fi ;; + [\\/]* | ?:[\\/]* ) # Absolute path. + ac_srcdir=$srcdir$ac_dir_suffix; + ac_top_srcdir=$srcdir ;; + *) # Relative path. + ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix + ac_top_srcdir=$ac_top_builddir$srcdir ;; +esac +# Don't blindly perform a `cd "$ac_dir"/$ac_foo && pwd` since $ac_foo can be +# absolute. +ac_abs_builddir=`cd "$ac_dir" && cd $ac_builddir && pwd` +ac_abs_top_builddir=`cd "$ac_dir" && cd ${ac_top_builddir}. && pwd` +ac_abs_srcdir=`cd "$ac_dir" && cd $ac_srcdir && pwd` +ac_abs_top_srcdir=`cd "$ac_dir" && cd $ac_top_srcdir && pwd` + + + case $INSTALL in + [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;; + *) ac_INSTALL=$ac_top_builddir$INSTALL ;; + esac + + if test x"$ac_file" != x-; then + { echo "$as_me:$LINENO: creating $ac_file" >&5 +echo "$as_me: creating $ac_file" >&6;} + rm -f "$ac_file" + fi + # Let's still pretend it is `configure' which instantiates (i.e., don't + # use $as_me), people would be surprised to read: + # /* config.h. Generated by config.status. */ + if test x"$ac_file" = x-; then + configure_input= + else + configure_input="$ac_file. " + fi + configure_input=$configure_input"Generated from `echo $ac_file_in | + sed 's,.*/,,'` by configure." + + # First look for the input files in the build tree, otherwise in the + # src tree. + ac_file_inputs=`IFS=: + for f in $ac_file_in; do + case $f in + -) echo $tmp/stdin ;; + [\\/$]*) + # Absolute (can't be DOS-style, as IFS=:) + test -f "$f" || { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 +echo "$as_me: error: cannot find input file: $f" >&2;} + { (exit 1); exit 1; }; } + echo $f;; + *) # Relative + if test -f "$f"; then + # Build tree + echo $f + elif test -f "$srcdir/$f"; then + # Source tree + echo $srcdir/$f + else + # /dev/null tree + { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 +echo "$as_me: error: cannot find input file: $f" >&2;} + { (exit 1); exit 1; }; } + fi;; + esac + done` || { (exit 1); exit 1; } + sed "/^[ ]*VPATH[ ]*=/{ +s/:*\$(srcdir):*/:/; +s/:*\${srcdir}:*/:/; +s/:*@srcdir@:*/:/; +s/^\([^=]*=[ ]*\):*/\1/; +s/:*$//; +s/^[^=]*=[ ]*$//; +} + +:t +/@[a-zA-Z_][a-zA-Z_0-9]*@/!b +s,@configure_input@,$configure_input,;t t +s,@srcdir@,$ac_srcdir,;t t +s,@abs_srcdir@,$ac_abs_srcdir,;t t +s,@top_srcdir@,$ac_top_srcdir,;t t +s,@abs_top_srcdir@,$ac_abs_top_srcdir,;t t +s,@builddir@,$ac_builddir,;t t +s,@abs_builddir@,$ac_abs_builddir,;t t +s,@top_builddir@,$ac_top_builddir,;t t +s,@abs_top_builddir@,$ac_abs_top_builddir,;t t +s,@INSTALL@,$ac_INSTALL,;t t +" $ac_file_inputs | (eval "$ac_sed_cmds") >$tmp/out + rm -f $tmp/stdin + if test x"$ac_file" != x-; then + mv $tmp/out $ac_file + else + cat $tmp/out + rm -f $tmp/out + fi + +done + +# +# CONFIG_HEADER section. +# + +# These sed commands are passed to sed as "A NAME B NAME C VALUE D", where +# NAME is the cpp macro being defined and VALUE is the value it is being given. +# +# ac_d sets the value in "#define NAME VALUE" lines. +ac_dA='s,^\([ ]*\)#\([ ]*define[ ][ ]*\)' +ac_dB='[ ].*$,\1#\2' +ac_dC=' ' +ac_dD=',;t' +# ac_u turns "#undef NAME" without trailing blanks into "#define NAME VALUE". +ac_uA='s,^\([ ]*\)#\([ ]*\)undef\([ ][ ]*\)' +ac_uB='$,\1#\2define\3' +ac_uC=' ' +ac_uD=',;t' + +for ac_file in : $CONFIG_HEADERS; do test "x$ac_file" = x: && continue + # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in". + case $ac_file in + - | *:- | *:-:* ) # input from stdin + cat >$tmp/stdin + ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` + ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; + *:* ) ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` + ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; + * ) ac_file_in=$ac_file.in ;; + esac + + test x"$ac_file" != x- && { echo "$as_me:$LINENO: creating $ac_file" >&5 +echo "$as_me: creating $ac_file" >&6;} + + # First look for the input files in the build tree, otherwise in the + # src tree. + ac_file_inputs=`IFS=: + for f in $ac_file_in; do + case $f in + -) echo $tmp/stdin ;; + [\\/$]*) + # Absolute (can't be DOS-style, as IFS=:) + test -f "$f" || { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 +echo "$as_me: error: cannot find input file: $f" >&2;} + { (exit 1); exit 1; }; } + echo $f;; + *) # Relative + if test -f "$f"; then + # Build tree + echo $f + elif test -f "$srcdir/$f"; then + # Source tree + echo $srcdir/$f + else + # /dev/null tree + { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 +echo "$as_me: error: cannot find input file: $f" >&2;} + { (exit 1); exit 1; }; } + fi;; + esac + done` || { (exit 1); exit 1; } + # Remove the trailing spaces. + sed 's/[ ]*$//' $ac_file_inputs >$tmp/in + + # Handle all the #define templates only if necessary. + if grep "^[ ]*#[ ]*define" $tmp/in >/dev/null; then + # If there are no defines, we may have an empty if/fi + : + cat >$tmp/defines.sed <$tmp/out + rm -f $tmp/in + mv $tmp/out $tmp/in + + fi # grep + + # Handle all the #undef templates + cat >$tmp/undefs.sed <$tmp/out + rm -f $tmp/in + mv $tmp/out $tmp/in + + # Let's still pretend it is `configure' which instantiates (i.e., don't + # use $as_me), people would be surprised to read: + # /* config.h. Generated by config.status. */ + if test x"$ac_file" = x-; then + echo "/* Generated by configure. */" >$tmp/config.h + else + echo "/* $ac_file. Generated by configure. */" >$tmp/config.h + fi + cat $tmp/in >>$tmp/config.h + rm -f $tmp/in + if test x"$ac_file" != x-; then + if diff $ac_file $tmp/config.h >/dev/null 2>&1; then + { echo "$as_me:$LINENO: $ac_file is unchanged" >&5 +echo "$as_me: $ac_file is unchanged" >&6;} + else + ac_dir=`(dirname "$ac_file") 2>/dev/null || +$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$ac_file" : 'X\(//\)[^/]' \| \ + X"$ac_file" : 'X\(//\)$' \| \ + X"$ac_file" : 'X\(/\)' \| \ + . : '\(.\)' 2>/dev/null || +echo X"$ac_file" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } + /^X\(\/\/\)[^/].*/{ s//\1/; q; } + /^X\(\/\/\)$/{ s//\1/; q; } + /^X\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + { if $as_mkdir_p; then + mkdir -p "$ac_dir" + else + as_dir="$ac_dir" + as_dirs= + while test ! -d "$as_dir"; do + as_dirs="$as_dir $as_dirs" + as_dir=`(dirname "$as_dir") 2>/dev/null || +$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_dir" : 'X\(//\)[^/]' \| \ + X"$as_dir" : 'X\(//\)$' \| \ + X"$as_dir" : 'X\(/\)' \| \ + . : '\(.\)' 2>/dev/null || +echo X"$as_dir" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } + /^X\(\/\/\)[^/].*/{ s//\1/; q; } + /^X\(\/\/\)$/{ s//\1/; q; } + /^X\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + done + test ! -n "$as_dirs" || mkdir $as_dirs + fi || { { echo "$as_me:$LINENO: error: cannot create directory \"$ac_dir\"" >&5 +echo "$as_me: error: cannot create directory \"$ac_dir\"" >&2;} + { (exit 1); exit 1; }; }; } + + rm -f $ac_file + mv $tmp/config.h $ac_file + fi + else + cat $tmp/config.h + rm -f $tmp/config.h + fi + # Run the commands associated with the file. + case $ac_file in + config.h ) # update the timestamp +echo 'timestamp for config.h' >"./stamp-h1" + ;; + esac +done + +# +# CONFIG_COMMANDS section. +# +for ac_file in : $CONFIG_COMMANDS; do test "x$ac_file" = x: && continue + ac_dest=`echo "$ac_file" | sed 's,:.*,,'` + ac_source=`echo "$ac_file" | sed 's,[^:]*:,,'` + ac_dir=`(dirname "$ac_dest") 2>/dev/null || +$as_expr X"$ac_dest" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$ac_dest" : 'X\(//\)[^/]' \| \ + X"$ac_dest" : 'X\(//\)$' \| \ + X"$ac_dest" : 'X\(/\)' \| \ + . : '\(.\)' 2>/dev/null || +echo X"$ac_dest" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } + /^X\(\/\/\)[^/].*/{ s//\1/; q; } + /^X\(\/\/\)$/{ s//\1/; q; } + /^X\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + ac_builddir=. + +if test "$ac_dir" != .; then + ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'` + # A "../" for each directory in $ac_dir_suffix. + ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'` +else + ac_dir_suffix= ac_top_builddir= +fi + +case $srcdir in + .) # No --srcdir option. We are building in place. + ac_srcdir=. + if test -z "$ac_top_builddir"; then + ac_top_srcdir=. + else + ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'` + fi ;; + [\\/]* | ?:[\\/]* ) # Absolute path. + ac_srcdir=$srcdir$ac_dir_suffix; + ac_top_srcdir=$srcdir ;; + *) # Relative path. + ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix + ac_top_srcdir=$ac_top_builddir$srcdir ;; +esac +# Don't blindly perform a `cd "$ac_dir"/$ac_foo && pwd` since $ac_foo can be +# absolute. +ac_abs_builddir=`cd "$ac_dir" && cd $ac_builddir && pwd` +ac_abs_top_builddir=`cd "$ac_dir" && cd ${ac_top_builddir}. && pwd` +ac_abs_srcdir=`cd "$ac_dir" && cd $ac_srcdir && pwd` +ac_abs_top_srcdir=`cd "$ac_dir" && cd $ac_top_srcdir && pwd` + + + { echo "$as_me:$LINENO: executing $ac_dest commands" >&5 +echo "$as_me: executing $ac_dest commands" >&6;} + case $ac_dest in + depfiles ) test x"$AMDEP_TRUE" != x"" || for mf in $CONFIG_FILES; do + # Strip MF so we end up with the name of the file. + mf=`echo "$mf" | sed -e 's/:.*$//'` + # Check whether this is an Automake generated Makefile or not. + # We used to match only the files named `Makefile.in', but + # some people rename them; so instead we look at the file content. + # Grep'ing the first line is not enough: some people post-process + # each Makefile.in and add a new line on top of each file to say so. + # So let's grep whole file. + if grep '^#.*generated by automake' $mf > /dev/null 2>&1; then + dirpart=`(dirname "$mf") 2>/dev/null || +$as_expr X"$mf" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$mf" : 'X\(//\)[^/]' \| \ + X"$mf" : 'X\(//\)$' \| \ + X"$mf" : 'X\(/\)' \| \ + . : '\(.\)' 2>/dev/null || +echo X"$mf" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } + /^X\(\/\/\)[^/].*/{ s//\1/; q; } + /^X\(\/\/\)$/{ s//\1/; q; } + /^X\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + else + continue + fi + grep '^DEP_FILES *= *[^ #]' < "$mf" > /dev/null || continue + # Extract the definition of DEP_FILES from the Makefile without + # running `make'. + DEPDIR=`sed -n -e '/^DEPDIR = / s///p' < "$mf"` + test -z "$DEPDIR" && continue + # When using ansi2knr, U may be empty or an underscore; expand it + U=`sed -n -e '/^U = / s///p' < "$mf"` + test -d "$dirpart/$DEPDIR" || mkdir "$dirpart/$DEPDIR" + # We invoke sed twice because it is the simplest approach to + # changing $(DEPDIR) to its actual value in the expansion. + for file in `sed -n -e ' + /^DEP_FILES = .*\\\\$/ { + s/^DEP_FILES = // + :loop + s/\\\\$// + p + n + /\\\\$/ b loop + p + } + /^DEP_FILES = / s/^DEP_FILES = //p' < "$mf" | \ + sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do + # Make sure the directory exists. + test -f "$dirpart/$file" && continue + fdir=`(dirname "$file") 2>/dev/null || +$as_expr X"$file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$file" : 'X\(//\)[^/]' \| \ + X"$file" : 'X\(//\)$' \| \ + X"$file" : 'X\(/\)' \| \ + . : '\(.\)' 2>/dev/null || +echo X"$file" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } + /^X\(\/\/\)[^/].*/{ s//\1/; q; } + /^X\(\/\/\)$/{ s//\1/; q; } + /^X\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + { if $as_mkdir_p; then + mkdir -p $dirpart/$fdir + else + as_dir=$dirpart/$fdir + as_dirs= + while test ! -d "$as_dir"; do + as_dirs="$as_dir $as_dirs" + as_dir=`(dirname "$as_dir") 2>/dev/null || +$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_dir" : 'X\(//\)[^/]' \| \ + X"$as_dir" : 'X\(//\)$' \| \ + X"$as_dir" : 'X\(/\)' \| \ + . : '\(.\)' 2>/dev/null || +echo X"$as_dir" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } + /^X\(\/\/\)[^/].*/{ s//\1/; q; } + /^X\(\/\/\)$/{ s//\1/; q; } + /^X\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + done + test ! -n "$as_dirs" || mkdir $as_dirs + fi || { { echo "$as_me:$LINENO: error: cannot create directory $dirpart/$fdir" >&5 +echo "$as_me: error: cannot create directory $dirpart/$fdir" >&2;} + { (exit 1); exit 1; }; }; } + + # echo "creating $dirpart/$file" + echo '# dummy' > "$dirpart/$file" + done +done + ;; + esac +done + +{ (exit 0); exit 0; } diff -ruN ../vqadmin-2.3.7-original/config.sub vqadmin-2.3.7/config.sub --- ../vqadmin-2.3.7-original/config.sub 2002-05-21 15:36:38.000000000 +0200 +++ vqadmin-2.3.7/config.sub 2023-02-18 16:59:10.270902284 +0100 @@ -1,9 +1,13 @@ #! /bin/sh -# Configuration validation subroutine script, version 1.1. -# Copyright (C) 1991, 1992, 1993, 1994, 1995, 1996 Free Software Foundation, Inc. +# Configuration validation subroutine script. +# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001 +# Free Software Foundation, Inc. + +timestamp='2001-04-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. +# 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 @@ -25,6 +29,8 @@ # 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 . +# # 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. @@ -41,32 +47,87 @@ # 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. -if [ x$1 = x ] -then - echo Configuration name missing. 1>&2 - echo "Usage: $0 CPU-MFR-OPSYS" 1>&2 - echo "or $0 ALIAS" 1>&2 - echo where ALIAS is a recognized configuration type. 1>&2 - exit 1 -fi +me=`echo "$0" | sed -e 's,.*/,,'` -# First pass through any local machine types. -case $1 in - *local*) - echo $1 - exit 0 - ;; - *) - ;; +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 +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 0 ;; + --version | -v ) + echo "$version" ; exit 0 ;; + --help | --h* | -h ) + echo "$usage"; exit 0 ;; + -- ) # 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 0;; + + * ) + 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 (if any). -basic_machine=`echo $1 | sed 's/-[^-]*$//'` -if [ $basic_machine != $1 ] -then os=`echo $1 | sed 's/.*-/-/'` -else os=; fi +# 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* | storm-chaos* | os2-emx*) + 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 @@ -81,52 +142,56 @@ -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 ) + -harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \ + -apple | -axis) os= basic_machine=$1 ;; - -sim | -cisco | -oki | -wec | -winbond ) # CYGNUS LOCAL + -sim | -cisco | -oki | -wec | -winbond) os= basic_machine=$1 ;; - -apple*) # CYGNUS LOCAL - os= - basic_machine=$1 + -scout) ;; - -scout) # CYGNUS LOCAL - ;; - -wrs) # CYGNUS LOCAL - os=vxworks + -wrs) + os=-vxworks basic_machine=$1 ;; -hiux*) os=-hiuxwe2 ;; + -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-unknown/'` + 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-unknown/'` + 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-unknown/'` + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco*) os=-sco3.2v2 - basic_machine=`echo $1 | sed -e 's/86-.*/86-unknown/'` + 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-unknown/'` + 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-unknown/'` + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -lynx*) os=-lynxos @@ -137,50 +202,90 @@ -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. - tahoe | i[345]86 | i860 | m68k | m68000 | m88k | ns32k | arm | armeb \ - | armel | pyramid \ - | tron | a29k | 580 | i960 | h8300 | hppa1.0 | hppa1.1 \ - | alpha | we32k | ns16k | clipper | sparclite | i370 | sh \ - | powerpc | powerpcle | sparc64 | 1750a | dsp16xx | mips64 | mipsel \ - | pdp11 | mips64el | mips64orion | mips64orionel \ - | sparc | sparc8 | supersparc | microsparc | ultrasparc) + tahoe | i860 | ia64 | m32r | m68k | m68000 | m88k | ns32k | arc \ + | arm | arme[lb] | arm[bl]e | armv[2345] | armv[345][lb] | strongarm | xscale \ + | pyramid | mn10200 | mn10300 | tron | a29k \ + | 580 | i960 | h8300 \ + | x86 | ppcbe | mipsbe | mipsle | shbe | shle \ + | hppa | hppa1.0 | hppa1.1 | hppa2.0 | hppa2.0w | hppa2.0n \ + | hppa64 \ + | alpha | alphaev[4-8] | alphaev56 | alphapca5[67] \ + | alphaev6[78] \ + | we32k | ns16k | clipper | i370 | sh | sh[34] \ + | powerpc | powerpcle \ + | 1750a | dsp16xx | pdp10 | pdp11 \ + | mips16 | mips64 | mipsel | mips64el \ + | mips64orion | mips64orionel | mipstx39 | mipstx39el \ + | mips64vr4300 | mips64vr4300el | mips64vr4100 | mips64vr4100el \ + | mips64vr5000 | miprs64vr5000el | mcore | s390 | s390x \ + | sparc | sparclet | sparclite | sparc64 | sparcv9 | sparcv9b \ + | v850 | c4x \ + | thumb | d10v | d30v | fr30 | avr | openrisc | tic80 \ + | pj | pjl | h8500) basic_machine=$basic_machine-unknown ;; - m88110 | m680[012346]0 | m683?2 | m68360 | z8k | v70 | h8500 | w65) # CYGNUS LOCAL + m6811 | m68hc11 | m6812 | m68hc12) + # Motorola 68HC11/12. basic_machine=$basic_machine-unknown + os=-none ;; - mips64vr4300 | mips64vr4300el) # CYGNUS LOCAL jsmith - basic_machine=$basic_machine-unknown + m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | z8k | v70 | w65) ;; + + # 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. - vax-* | tahoe-* | i[3456]86-* | i860-* | m68k-* | m68000-* | m88k-* \ - | sparc-* | ns32k-* | fx80-* | arm-* | arme[lb]-* | c[123]* \ - | mips-* | pyramid-* | tron-* | a29k-* | romp-* | rs6000-* | power-* \ - | none-* | 580-* | cray2-* | h8300-* | i960-* | xmp-* | ymp-* \ - | hppa1.0-* | hppa1.1-* | alpha-* | we32k-* | cydra-* | ns16k-* \ - | pn-* | np1-* | xps100-* | clipper-* | orion-* | sparclite-* \ - | pdp11-* | sh-* | powerpc-* | powerpcle-* | sparc64-* \ - | mips64-* | mipsel-* | mips64el-* | mips64orion-* \ - | mips64orionel-* | sparc8-* | supersparc-* | microsparc-* | ultrasparc-*) - ;; - m88110-* | m680[012346]0-* | m683?2-* | m68360-* | z8k-* | h8500-*) # CYGNUS LOCAL - ;; - mips64vr4300-* | mips64vr4300el-*) # CYGNUS LOCAL jsmith + # FIXME: clean up the formatting here. + vax-* | tahoe-* | i*86-* | i860-* | ia64-* | m32r-* | m68k-* | m68000-* \ + | m88k-* | sparc-* | ns32k-* | fx80-* | arc-* | c[123]* \ + | arm-* | armbe-* | armle-* | armv*-* | strongarm-* | xscale-* \ + | mips-* | pyramid-* | tron-* | a29k-* | romp-* | rs6000-* \ + | power-* | none-* | 580-* | cray2-* | h8300-* | h8500-* | i960-* \ + | xmp-* | ymp-* \ + | x86-* | ppcbe-* | mipsbe-* | mipsle-* | shbe-* | shle-* \ + | hppa-* | hppa1.0-* | hppa1.1-* | hppa2.0-* | hppa2.0w-* \ + | hppa2.0n-* | hppa64-* \ + | alpha-* | alphaev[4-8]-* | alphaev56-* | alphapca5[67]-* \ + | alphaev6[78]-* \ + | we32k-* | cydra-* | ns16k-* | pn-* | np1-* | xps100-* \ + | clipper-* | orion-* \ + | sparclite-* | pdp10-* | pdp11-* | sh-* | powerpc-* | powerpcle-* \ + | sparc64-* | sparcv9-* | sparcv9b-* | sparc86x-* \ + | mips16-* | mips64-* | mipsel-* \ + | mips64el-* | mips64orion-* | mips64orionel-* \ + | mips64vr4100-* | mips64vr4100el-* | mips64vr4300-* | mips64vr4300el-* \ + | mipstx39-* | mipstx39el-* | mcore-* \ + | f30[01]-* | f700-* | s390-* | s390x-* | sv1-* | t3e-* \ + | [cjt]90-* \ + | m88110-* | m680[01234]0-* | m683?2-* | m68360-* | z8k-* | d10v-* \ + | thumb-* | v850-* | d30v-* | tic30-* | tic80-* | c30-* | fr30-* \ + | bs2000-* | tic54x-* | c54x-* | x86_64-* | pj-* | pjl-*) ;; # Recognize the various machine names and aliases which stand # for a CPU type and a company and sometimes even an OS. - 386bsd) # CYGNUS LOCAL + 386bsd) basic_machine=i386-unknown os=-bsd ;; @@ -190,11 +295,11 @@ 3b*) basic_machine=we32k-att ;; - a29khif) # CYGNUS LOCAL + a29khif) basic_machine=a29k-amd os=-udi ;; - adobe68k) # CYGNUS LOCAL + adobe68k) basic_machine=m68010-adobe os=-scout ;; @@ -213,40 +318,32 @@ os=-sysv ;; amiga | amiga-*) - basic_machine=m68k-cbm + basic_machine=m68k-unknown ;; - amigados) - basic_machine=m68k-cbm - os=-amigados + amigaos | amigados) + basic_machine=m68k-unknown + os=-amigaos ;; amigaunix | amix) - basic_machine=m68k-cbm + basic_machine=m68k-unknown os=-sysv4 ;; apollo68) basic_machine=m68k-apollo os=-sysv ;; - apollo68bsd) # CYGNUS LOCAL + apollo68bsd) basic_machine=m68k-apollo os=-bsd ;; - arm | armel | armeb) - basic_machine=arm-arm - os=-aout + aux) + basic_machine=m68k-apple + os=-aux ;; balance) basic_machine=ns32k-sequent os=-dynix ;; - [ctj]90-cray) - basic_machine=c90-cray - os=-unicos - ;; - t3e-cray) - basic_machine=t3e-cray - os=-unicos_mk - ;; convex-c1) basic_machine=c1-convex os=-bsd @@ -275,9 +372,16 @@ basic_machine=cray2-cray os=-unicos ;; + [cjt]90) + basic_machine=${basic_machine}-cray + os=-unicos + ;; crds | unos) basic_machine=m68k-crds ;; + cris | cris-* | etrax*) + basic_machine=cris-axis + ;; da30 | da30-*) basic_machine=m68k-da30 ;; @@ -311,7 +415,7 @@ encore | umax | mmax) basic_machine=ns32k-encore ;; - es1800 | OSE68k | ose68k | ose | OSE) # CYGNUS LOCAL + es1800 | OSE68k | ose68k | ose | OSE) basic_machine=m68k-ericsson os=-ose ;; @@ -325,6 +429,10 @@ basic_machine=tron-gmicro os=-sysv ;; + go32) + basic_machine=i386-pc + os=-go32 + ;; h3050r* | hiux*) basic_machine=hppa1.1-hitachi os=-hiuxwe2 @@ -333,11 +441,11 @@ basic_machine=h8300-hitachi os=-hms ;; - h8300xray) # CYGNUS LOCAL + h8300xray) basic_machine=h8300-hitachi os=-xray ;; - h8500hms) # CYGNUS LOCAL + h8500hms) basic_machine=h8500-hitachi os=-hms ;; @@ -356,71 +464,74 @@ basic_machine=m68k-hp os=-hpux ;; - w89k-*) # CYGNUS LOCAL - basic_machine=hppa1.1-winbond - os=-proelf - ;; - op50n-*) # CYGNUS LOCAL - basic_machine=hppa1.1-oki - os=-proelf - ;; - op60c-*) # CYGNUS LOCAL - basic_machine=hppa1.1-oki - os=-proelf - ;; - hppro) # CYGNUS LOCAL - basic_machine=hppa1.1-hp - os=-proelf - ;; + 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 ;; - hp9k7[0-9][0-9] | hp7[0-9][0-9] | hp9k8[0-9]7 | hp8[0-9]7) + 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 ;; - hppaosf) # CYGNUS LOCAL + 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 - os=-mvs ;; # I'm not sure what "Sysv32" means. Should this be sysv3.2? - i[3456]86v32) - basic_machine=`echo $1 | sed -e 's/86.*/86-unknown/'` + i*86v32) + basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` os=-sysv32 ;; - i[3456]86v4*) - basic_machine=`echo $1 | sed -e 's/86.*/86-unknown/'` + i*86v4*) + basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` os=-sysv4 ;; - i[3456]86v) - basic_machine=`echo $1 | sed -e 's/86.*/86-unknown/'` + i*86v) + basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` os=-sysv ;; - i[3456]86sol2) - basic_machine=`echo $1 | sed -e 's/86.*/86-unknown/'` + i*86sol2) + basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` os=-solaris2 ;; - i386mach) # CYGNUS LOCAL + i386mach) basic_machine=i386-mach os=-mach ;; - i386-vsta | vsta) # CYGNUS LOCAL + i386-vsta | vsta) basic_machine=i386-unknown os=-vsta ;; - i386-go32 | go32) # CYGNUS LOCAL - basic_machine=i386-unknown - os=-go32 - ;; iris | iris4d) basic_machine=mips-sgi case $os in @@ -446,31 +557,59 @@ 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 + ;; + mipsel*-linux*) + basic_machine=mipsel-unknown + os=-linux-gnu + ;; + mips*-linux*) + basic_machine=mips-unknown + os=-linux-gnu + ;; mips3*-*) basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'` ;; mips3*) basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`-unknown ;; - monitor) # CYGNUS LOCAL + mmix*) + basic_machine=mmix-knuth + os=-mmixware + ;; + monitor) basic_machine=m68k-rom68k os=-coff ;; - msdos) # CYGNUS LOCAL - basic_machine=i386-unknown + msdos) + basic_machine=i386-pc os=-msdos ;; + mvs) + basic_machine=i370-ibm + os=-mvs + ;; ncr3000) basic_machine=i486-ncr os=-sysv4 ;; netbsd386) - basic_machine=i386-unknown # CYGNUS LOCAL + basic_machine=i386-unknown os=-netbsd ;; + netwinder) + basic_machine=armv4l-rebel + os=-linux + ;; news | news700 | news800 | news900) basic_machine=m68k-sony os=-newsos @@ -483,7 +622,7 @@ basic_machine=mips-sony os=-newsos ;; - necv70) # CYGNUS LOCAL + necv70) basic_machine=v70-nec os=-sysv ;; @@ -512,14 +651,29 @@ 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 ;; - OSE68000 | ose68000) # CYGNUS LOCAL + nsr-tandem) + basic_machine=nsr-tandem + ;; + op50n-* | op60c-*) + basic_machine=hppa1.1-oki + os=-proelf + ;; + OSE68000 | ose68000) basic_machine=m68000-ericsson os=-ose ;; - os68k) # CYGNUS LOCAL + os68k) basic_machine=m68k-none os=-os68k ;; @@ -540,30 +694,28 @@ pc532 | pc532-*) basic_machine=ns32k-pc532 ;; - pentium | p5) - basic_machine=i586-intel + pentium | p5 | k5 | k6 | nexgen) + basic_machine=i586-pc ;; - pentiumpro | p6) - basic_machine=i686-intel + pentiumpro | p6 | 6x86 | athlon) + basic_machine=i686-pc ;; - pentium-* | p5-*) + pentiumii | pentium2) + basic_machine=i686-pc + ;; + pentium-* | p5-* | k5-* | k6-* | nexgen-*) basic_machine=i586-`echo $basic_machine | sed 's/^[^-]*-//'` ;; - pentiumpro-* | p6-*) + pentiumpro-* | p6-* | 6x86-* | athlon-*) basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` ;; - k5) - # We don't have specific support for AMD's K5 yet, so just call it a Pentium - basic_machine=i586-amd - ;; - nexgen) - # We don't have specific support for Nexgen yet, so just call it a Pentium - basic_machine=i586-nexgen + pentiumii-* | pentium2-*) + basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` ;; pn) basic_machine=pn-gould ;; - power) basic_machine=rs6000-ibm + power) basic_machine=power-ibm ;; ppc) basic_machine=powerpc-unknown ;; @@ -578,7 +730,11 @@ ps2) basic_machine=i386-ibm ;; - rom68k) # CYGNUS LOCAL + pw32) + basic_machine=i586-unknown + os=-pw32 + ;; + rom68k) basic_machine=m68k-rom68k os=-coff ;; @@ -588,7 +744,7 @@ rtpc | rtpc-*) basic_machine=romp-ibm ;; - sa29200) # CYGNUS LOCAL + sa29200) basic_machine=a29k-amd os=-udi ;; @@ -599,24 +755,10 @@ basic_machine=sh-hitachi os=-hms ;; - sparclite-wrs) # CYGNUS LOCAL + sparclite-wrs) basic_machine=sparclite-wrs os=-vxworks ;; - sparcfrw) # CYGNUS LOCAL - basic_machine=sparcfrw-sun - os=-sunos4 - ;; - sparcfrwcompat) # CYGNUS LOCAL - basic_machine=sparcfrwcompat-sun - os=-sunos4 - ;; - sparclitefrw) # CYGNUS LOCAL - basic_machine=sparclitefrw-fujitsu - ;; - sparclitefrwcompat) # CYGNUS LOCAL - basic_machine=sparclitefrwcompat-fujitsu - ;; sps7) basic_machine=m68k-bull os=-sysv2 @@ -624,10 +766,10 @@ spur) basic_machine=spur-unknown ;; - st2000) # CYGNUS LOCAL + st2000) basic_machine=m68k-tandem ;; - stratus) # CYGNUS LOCAL + stratus) basic_machine=i860-stratus os=-sysv4 ;; @@ -671,10 +813,28 @@ sun386 | sun386i | roadrunner) basic_machine=i386-sun ;; + sv1) + basic_machine=sv1-cray + os=-unicos + ;; symmetry) basic_machine=i386-sequent os=-dynix ;; + t3e) + basic_machine=t3e-cray + os=-unicos + ;; + tic54x | c54x*) + basic_machine=tic54x-unknown + os=-coff + ;; + tx39) + basic_machine=mipstx39-unknown + ;; + tx39el) + basic_machine=mipstx39el-unknown + ;; tower | tower-32) basic_machine=m68k-ncr ;; @@ -686,7 +846,7 @@ basic_machine=a29k-nyu os=-sym1 ;; - v810 | necv810) # CYGNUS LOCAL + v810 | necv810) basic_machine=v810-nec os=-none ;; @@ -698,6 +858,9 @@ basic_machine=vax-dec os=-vms ;; + vpp*|vx|vx-*) + basic_machine=f301-fujitsu + ;; vxworks960) basic_machine=i960-wrs os=-vxworks @@ -706,13 +869,17 @@ basic_machine=m68k-wrs os=-vxworks ;; - vxworks29k) # CYGNUS LOCAL - basic_machine=a29k-wrs - os=-vxworks - ;; - w65*) # CYGNUS LOCAL - basic_machine=w65-wdc - os=-none + vxworks29k) + basic_machine=a29k-wrs + os=-vxworks + ;; + w65*) + basic_machine=w65-wdc + os=-none + ;; + w89k-*) + basic_machine=hppa1.1-winbond + os=-proelf ;; xmp) basic_machine=xmp-cray @@ -721,7 +888,7 @@ xps | xps100) basic_machine=xps100-honeywell ;; - z8k-*-coff) # CYGNUS LOCAL + z8k-*-coff) basic_machine=z8k-unknown os=-sim ;; @@ -732,17 +899,21 @@ # 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) # CYGNUS LOCAL + w89k) basic_machine=hppa1.1-winbond ;; - op50n) # CYGNUS LOCAL + op50n) basic_machine=hppa1.1-oki ;; - op60c) # CYGNUS LOCAL + op60c) basic_machine=hppa1.1-oki ;; mips) - basic_machine=mips-mips + if [ x$os = x-linux-gnu ]; then + basic_machine=mips-unknown + else + basic_machine=mips-mips + fi ;; romp) basic_machine=romp-ibm @@ -753,13 +924,20 @@ 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 ;; - sparc) + sh3 | sh4) + basic_machine=sh-unknown + ;; + sparc | sparcv9 | sparcv9b) basic_machine=sparc-sun ;; cydra) @@ -771,12 +949,19 @@ orion105) basic_machine=clipper-highlevel ;; - mac | mpw | mac-mpw) # CYGNUS LOCAL + mac | mpw | mac-mpw) basic_machine=m68k-apple ;; - pmac | pmac-mpw) # CYGNUS LOCAL + pmac | pmac-mpw) basic_machine=powerpc-apple ;; + c4x*) + basic_machine=c4x-none + os=-coff + ;; + *-unknown) + # Make sure to match an already-canonicalized machine name. + ;; *) echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2 exit 1 @@ -800,6 +985,8 @@ 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|'` @@ -807,42 +994,71 @@ -solaris) os=-solaris2 ;; - -unixware* | svr4*) + -svr4*) os=-sysv4 ;; + -unixware*) + os=-sysv4.2uw + ;; -gnu/linux*) - os=`echo $os | sed -e 's|gnu/linux|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. + # Each alternative MUST END IN A *, to match a version number. # -sysv* is not here because it comes later, after sysvr4. - -gnu* | -bsd* | -mach* | -lites* | -minix* | -genix* | -ultrix* | -irix* \ - | -vms* | -sco* | -esix* | -isc* | -aix* | -sunos | -sunos[3456]* \ + -gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \ + | -*vms* | -sco* | -esix* | -isc* | -aix* | -sunos | -sunos[34]*\ | -hpux* | -unos* | -osf* | -luna* | -dgux* | -solaris* | -sym* \ - | -amigados* | -msdos* | -moss* | -newsos* | -unicos* | -aos* \ - | -nindy* | -vxworks* | -ebmon* | -hms* | -mvs* | -clix* \ - | -riscos* | -linux* | -uniplus* | -iris* | -rtu* | -xenix* \ - | -hiux* | -386bsd* | -netbsd* | -freebsd* | -openbsd* \ - | -riscix* | -lites* \ - | -lynxos* | -bosx* | -nextstep* | -cxux* | -aout* | -elf* \ - | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta | -udi \ - | -eabi* | -ieee*) - ;; - # CYGNUS LOCAL - -go32 | -sim | -es1800* | -hms* | -xray | -os68k* | -none* | -v88r* \ - | -windows* | -osx | -abug | -netware* | -proelf | -os9* \ - | -macos* | -mpw* | -magic* | -pe* | -win32) + | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \ + | -aos* \ + | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \ + | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \ + | -hiux* | -386bsd* | -netbsd* | -openbsd* | -freebsd* | -riscix* \ + | -lynxos* | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \ + | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \ + | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \ + | -cygwin* | -pe* | -psos* | -moss* | -proelf* | -rtems* \ + | -mingw32* | -linux-gnu* | -uxpv* | -beos* | -mpeix* | -udk* \ + | -interix* | -uwin* | -rhapsody* | -darwin* | -opened* \ + | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \ + | -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* | -os2*) + # Remember, each alternative MUST END IN *, to match a version number. + ;; + -qnx*) + case $basic_machine in + x86-* | i*86-*) + ;; + *) + os=-nto$os + ;; + esac + ;; + -nto*) + os=-nto-qnx ;; - -mac*) # CYGNUS LOCAL + -sim | -es1800* | -hms* | -xray | -os68k* | -none* | -v88r* \ + | -windows* | -osx | -abug | -netware* | -os9* | -beos* \ + | -macos* | -mpw* | -magic* | -mmixware* | -mon960* | -lnews*) + ;; + -mac*) os=`echo $os | sed -e 's|mac|macos|'` ;; + -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 + ;; + -wince*) + os=-wince + ;; -osfrose*) os=-osfrose ;; @@ -858,12 +1074,18 @@ -acis*) os=-aos ;; - -386bsd) # CYGNUS LOCAL + -386bsd) os=-bsd ;; -ctix* | -uts*) os=-sysv ;; + -ns2 ) + os=-nextstep2 + ;; + -nsk*) + os=-nsk + ;; # Preserve the version number of sinix5. -sinix5.*) os=`echo $os | sed -e 's|sinix|sysv|'` @@ -889,15 +1111,18 @@ # This must come after -sysvr4. -sysv*) ;; - -ose*) # CYGNUS LOCAL + -ose*) os=-ose ;; - -es1800*) # CYGNUS LOCAL + -es1800*) os=-ose ;; -xenix) os=-xenix ;; + -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) + os=-mint + ;; -none) ;; *) @@ -923,6 +1148,15 @@ *-acorn) os=-riscix1.2 ;; + arm*-rebel) + os=-linux + ;; + arm*-semi) + os=-aout + ;; + pdp10-*) + os=-tops20 + ;; pdp11-*) os=-none ;; @@ -941,10 +1175,13 @@ # default. # os=-sunos4 ;; - m68*-cisco) # CYGNUS LOCAL + m68*-cisco) os=-aout ;; - mips*-cisco) # CYGNUS LOCAL + mips*-cisco) + os=-elf + ;; + mips*-*) os=-elf ;; *-tti) # must be before sparc entry or we get the wrong os. @@ -953,16 +1190,19 @@ sparc-* | *-sun) os=-sunos4.1.1 ;; + *-be) + os=-beos + ;; *-ibm) os=-aix ;; - *-wec) # CYGNUS LOCAL + *-wec) os=-proelf ;; - *-winbond) # CYGNUS LOCAL + *-winbond) os=-proelf ;; - *-oki) # CYGNUS LOCAL + *-oki) os=-proelf ;; *-hp) @@ -975,7 +1215,7 @@ os=-sysv ;; *-cbm) - os=-amigados + os=-amigaos ;; *-dg) os=-dgux @@ -989,6 +1229,9 @@ m88k-omron*) os=-luna ;; + *-next ) + os=-nextstep + ;; *-sequent) os=-ptx ;; @@ -1022,15 +1265,21 @@ *-masscomp) os=-rtu ;; - *-rom68k) # CYGNUS LOCAL + f30[01]-fujitsu | f700-fujitsu) + os=-uxpv + ;; + *-rom68k) os=-coff ;; - *-*bug) # CYGNUS LOCAL + *-*bug) os=-coff ;; - *-apple) # CYGNUS LOCAL + *-apple) os=-macos ;; + *-atari*) + os=-mint + ;; *) os=-none ;; @@ -1049,18 +1298,18 @@ -sunos*) vendor=sun ;; - -bosx*) # CYGNUS LOCAL - vendor=bull - ;; - -lynxos*) - vendor=lynx - ;; -aix*) vendor=ibm ;; + -beos*) + vendor=be + ;; -hpux*) vendor=hp ;; + -mpeix*) + vendor=hp + ;; -hiux*) vendor=hitachi ;; @@ -1076,24 +1325,38 @@ -genix*) vendor=ns ;; - -mvs*) + -mvs* | -opened*) vendor=ibm ;; -ptx*) vendor=sequent ;; - -vxworks*) + -vxsim* | -vxworks*) vendor=wrs ;; - -hms*) # CYGNUS LOCAL + -aux*) + vendor=apple + ;; + -hms*) vendor=hitachi ;; - -mpw* | -macos*) # CYGNUS LOCAL + -mpw* | -macos*) vendor=apple ;; + -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) + vendor=atari + ;; esac basic_machine=`echo $basic_machine | sed "s/unknown/$vendor/"` ;; esac echo $basic_machine$os +exit 0 + +# 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 -ruN ../vqadmin-2.3.7-original/domain.c vqadmin-2.3.7/domain.c --- ../vqadmin-2.3.7-original/domain.c 2005-01-11 21:48:03.000000000 +0100 +++ vqadmin-2.3.7/domain.c 2023-02-18 17:12:21.688617261 +0100 @@ -31,6 +31,7 @@ #include "vpopmail.h" #include "vpopmail_config.h" #include "vauth.h" +#include "vlimits.h" #define TOKENS " :\t\n\r" @@ -47,12 +48,13 @@ { char *domain = NULL; char *passwd = NULL; + char *lusers = NULL; char *lfor = NULL; char *lalias = NULL; char *lresponder = NULL; char *llists = NULL; - char *quota = NULL; + char *upop = NULL; char *uimap = NULL; char *udialup = NULL; @@ -60,47 +62,33 @@ char *uweb = NULL; char *urelay = NULL; char *uspam = NULL; + char *usmtp = NULL; + char *udeletespam = NULL; + char *umaildrop = NULL; + + char *quota = NULL; + char *maxmsgcount = NULL; + char *defaultquota = NULL; + char *defaultmaxmsgcount = NULL; + storage_t tmpdefaultquota; + int ret; - char dir[156]; - uid_t uid; - gid_t gid; - FILE *fs; + int limitsmodified = 0; + struct vlimits defaultlimits; + struct vlimits limits; if (!(acl_features & ACL_DOMAIN_CREATE)) { global_warning("Create Domain: Permission denied"); t_open(T_MAIN, 1); } - domain = cgi_is_var("dname"); - passwd = cgi_is_var("pp"); - - lusers = cgi_is_var("lusers"); - lfor = cgi_is_var("lfor"); - lalias = cgi_is_var("lalias"); - lresponder = cgi_is_var("lresponder"); - llists = cgi_is_var("llists"); - - quota = cgi_is_var("quota"); - upop = cgi_is_var("upop"); - uimap = cgi_is_var("uimap"); - udialup = cgi_is_var("udialup"); - upassc = cgi_is_var("upassc"); - uweb = cgi_is_var("uweb"); - urelay = cgi_is_var("urelay"); - uspam = cgi_is_var("uspam"); - /* get the domain name */ + domain = cgi_is_var("dname"); if (domain==NULL || strlen(domain)==0) { global_warning("Create Domain: Failed: Must supply domain name"); t_open("html/add_domain.html", 1); } - /* get the password */ - if (passwd==NULL || strlen(passwd)==0 ) { - global_warning("Create Domain: Failed: Must supply password"); - t_open("html/add_domain.html", 1); - } - /* add the domain with defaults */ ret = vadddomain(domain, VPOPMAILDIR, VPOPMAILUID, VPOPMAILGID ); if (ret != VA_SUCCESS) { @@ -110,43 +98,14 @@ global_warning("Created Domain"); } - /* setup the .qmailadmin-limits file */ - vget_assign(domain,dir,156,&uid,&gid); - strncat(dir,"/.qmailadmin-limits", 156); - if ( (fs = fopen(dir,"w+")) == NULL ) { - global_warning("Create Domain: open .qmailadmin-limits failed"); - t_open(T_MAIN, 1); + /* get the password for postmaster */ + passwd = cgi_is_var("ppass"); + if (passwd==NULL || strlen(passwd)==0 ) { + global_warning("Create Domain: Failed: Must supply password"); + t_open("html/add_domain.html", 1); } - if (lusers!=NULL&&strlen(lusers)>0) - fprintf(fs, "maxpopaccounts: %s\n", lusers); - - if (lalias!=NULL&&strlen(lalias)>0) - fprintf(fs, "maxaliases: %s\n", lalias); - - if (lfor!=NULL&&strlen(lfor)>0) - fprintf(fs, "maxforwards: %s\n", lfor); - - if (lresponder!=NULL&&strlen(lresponder)>0) - fprintf(fs, "maxautoresponders: %s\n", lresponder); - - if (llists!=NULL&&strlen(llists)>0) - fprintf(fs, "maxmailinglists: %s\n", llists); - - if (quota!=NULL && strlen(quota)>0) - fprintf(fs,"default_quota: %s\n",quota); - - if (upop!=NULL) fprintf(fs, "disable_pop\n"); - if (uimap!=NULL) fprintf(fs, "disable_imap\n"); - if (udialup!=NULL) fprintf(fs, "disable_dialup\n"); - if (upassc!=NULL) fprintf(fs, "disable_password_changing\n"); - if (uweb!=NULL) fprintf(fs, "disable_webmail\n"); - if (urelay!=NULL) fprintf(fs, "disable_external_relay\n"); - if (uspam!=NULL) fprintf(fs, "disable_spamassasin\n"); - fclose(fs); - chown(dir,uid, gid); - chmod(dir, S_IRUSR | S_IWUSR); - + /* add the postmaster user */ ret = vadduser("postmaster", domain, passwd, "Postmaster", USE_POP ); if (ret != VA_SUCCESS) { global_warning(verror(ret)); @@ -155,6 +114,125 @@ global_warning("Domain postmaster added"); } +//-------------- FORM VALUES -------------- + + //-------------- DOMAIN LIMITS -------------- + lusers = cgi_is_var("lusers"); + lfor = cgi_is_var("lfor"); + lalias = cgi_is_var("lalias"); + lresponder = cgi_is_var("lresponder"); + llists = cgi_is_var("llists"); + quota = cgi_is_var("quota"); + maxmsgcount = cgi_is_var("maxmsgcount"); + defaultquota = cgi_is_var("defaultquota"); + defaultmaxmsgcount = cgi_is_var("defaultmaxmsgcount"); + + //-------------- DOMAIN PERMISSIONS -------------- + upop = cgi_is_var("upop"); + uimap = cgi_is_var("uimap"); + udialup = cgi_is_var("udialup"); + upassc = cgi_is_var("upassc"); + uweb = cgi_is_var("uweb"); + urelay = cgi_is_var("urelay"); + uspam = cgi_is_var("uspam"); + usmtp = cgi_is_var("usmtp"); + udeletespam = cgi_is_var("udeletespam"); + umaildrop = cgi_is_var("umaildrop"); + + // INITIALIZE DEFAULT STRUCTS + vdefault_limits (&defaultlimits); + + // FETCH DEFAULT DOMAIN LIMITS FROM "VLIMITS_DEFAULT_FILE" + if (vlimits_read_limits_file (VLIMITS_DEFAULT_FILE, &defaultlimits) != 0) { + snprintf(WarningBuff, MAX_WARNING_BUFF,"Failed to get limits from vlimits_default_file for domain %s", domain); + global_warning(WarningBuff); + global_par("DN", domain); + t_open("html/view_domain.html", 1); + } + + // CLONE DEFAULT LIMITS TO DETECT IF THE USER CHANGED THE DEFAULTS + memcpy(&limits, &defaultlimits, sizeof(limits)); + + // PROCESS NEW LIMITS + if (lusers!=NULL && strlen(lusers)>0) { + limits.maxpopaccounts = atoi(lusers); + } + if (lfor!=NULL && strlen(lfor)>0) { + limits.maxforwards = atoi(lfor); + } + if (lalias!=NULL && strlen(lalias)>0) { + limits.maxaliases = atoi(lalias); + } + if (lresponder!=NULL && strlen(lresponder)>0) { + limits.maxautoresponders = atoi(lresponder); + } + if (llists!=NULL && strlen(llists)>0) { + limits.maxmailinglists = atoi(llists); + } + if (quota!=NULL && strlen(quota)>0) { + limits.diskquota = strtoll(quota, NULL, 10); + } + if (maxmsgcount!=NULL && strlen(maxmsgcount)>0) { + limits.maxmsgcount = strtoll(maxmsgcount, NULL, 10); + } + if (defaultquota!=NULL && strlen(defaultquota)>0) { + // CONVERT bytes->Mbytes + if ((tmpdefaultquota = strtoll(defaultquota, NULL, 10))) { + tmpdefaultquota *= 1048576; + limits.defaultquota = tmpdefaultquota; + } + } + if (defaultmaxmsgcount!=NULL && strlen(defaultmaxmsgcount)>0) { + limits.defaultmaxmsgcount = strtoll(defaultmaxmsgcount, NULL, 10); + } + + // PROCESS NEW PERMISSIONS + if (upop!=NULL) {limits.disable_pop = 1;} + if (uimap!=NULL) {limits.disable_imap = 1;} + if (udialup!=NULL) {limits.disable_dialup = 1;} + if (upassc!=NULL) {limits.disable_passwordchanging = 1;} + if (uweb!=NULL) {limits.disable_webmail = 1;} + if (urelay!=NULL) {limits.disable_relay = 1;} + if (uspam!=NULL) {limits.disable_spamassassin = 1;} + if (usmtp!=NULL) {limits.disable_smtp = 1;} + if (udeletespam!=NULL) {limits.delete_spam = 1;} + if (umaildrop!=NULL) {limits.disable_maildrop = 1;} + + // DETECT DEVIATIONS FROM DEFAULT LIMITS, IF ANY + if (limits.maxpopaccounts != defaultlimits.maxpopaccounts) {limitsmodified = 1;} + if (limits.maxaliases != defaultlimits.maxaliases) {limitsmodified = 1;} + if (limits.maxforwards != defaultlimits.maxforwards) {limitsmodified = 1;} + if (limits.maxautoresponders != defaultlimits.maxautoresponders) {limitsmodified = 1;} + if (limits.maxmailinglists != defaultlimits.maxmailinglists) {limitsmodified = 1;} + if (limits.diskquota != defaultlimits.diskquota) {limitsmodified = 1;} + if (limits.maxmsgcount != defaultlimits.maxmsgcount) {limitsmodified = 1;} + if (limits.defaultquota != defaultlimits.defaultquota) {limitsmodified = 1;} + if (limits.defaultmaxmsgcount != defaultlimits.defaultmaxmsgcount) {limitsmodified = 1;} + + // DETECT DEVIATIONS FROM DEFAULT PERMISSIONS, IF ANY + if (limits.disable_pop != defaultlimits.disable_pop) {limitsmodified = 1;} + if (limits.disable_imap != defaultlimits.disable_imap) {limitsmodified = 1;} + if (limits.disable_dialup != defaultlimits.disable_dialup) {limitsmodified = 1;} + if (limits.disable_passwordchanging != defaultlimits.disable_passwordchanging) {limitsmodified = 1;} + if (limits.disable_webmail != defaultlimits.disable_webmail) {limitsmodified = 1;} + if (limits.disable_relay != defaultlimits.disable_relay) {limitsmodified = 1;} + if (limits.disable_smtp != defaultlimits.disable_smtp) {limitsmodified = 1;} + if (limits.disable_spamassassin != defaultlimits.disable_spamassassin) {limitsmodified = 1;} + if (limits.delete_spam != defaultlimits.delete_spam) {limitsmodified = 1;} + if (limits.disable_maildrop != defaultlimits.disable_maildrop) {limitsmodified = 1;} + + // APPLY NEW LIMITS, IF ANY CHANGE DETECTED + if (limitsmodified) { + if (vset_limits(domain,&limits) != 0) { + snprintf(WarningBuff, MAX_WARNING_BUFF,"Failed to set limits for domain %s", domain); + global_warning(WarningBuff); + global_par("DN", domain); + t_open("html/view_domain.html", 1); + } + } + +//-------------- DOMAIN LIMITS FINISHED -------------- + #ifdef ENABLE_ISOQLOG add_isoqlog(domain); /* add the domain to isoqlog's domains file */ #endif @@ -178,15 +256,15 @@ global_warning("Delete Domain: Failed: Must supply domain name"); t_open("html/del_domain.html", 1); } - + ret = vdeldomain(domain); if (ret != VA_SUCCESS) global_warning("Delete Domain: Failed"); else global_warning("Deleted Domain"); - + #ifdef ENABLE_ISOQLOG del_isoqlog(domain); /* remove the domain from the isoqlog domains file */ #endif - + t_open(T_MAIN, 1); } @@ -216,97 +294,200 @@ void mod_domain() { char *domain = NULL; - char *ppass = NULL; + char *passwd = NULL; + char *lusers = NULL; char *lfor = NULL; char *lalias = NULL; char *lresponder = NULL; char *llists = NULL; char *quota = NULL; + char *upop = NULL; char *uimap = NULL; char *udialup = NULL; char *upassc = NULL; char *uweb = NULL; char *urelay = NULL; - int ret; - char dir[156]; - uid_t uid; - gid_t gid; - FILE *fs; + char *uspam = NULL; + char *usmtp = NULL; + char *udeletespam = NULL; + char *umaildrop = NULL; + char *maxmsgcount = NULL; + char *defaultquota = NULL; + char *defaultmaxmsgcount = NULL; + storage_t tmpdefaultquota; + + int ret; + int limitsmodified = 0; + struct vlimits defaultlimits; + struct vlimits limits; if (!(acl_features & ACL_DOMAIN_MOD)) { global_warning("Mod Domain: Permission denied"); t_open(T_MAIN, 1); } - domain = cgi_is_var("dname"); - /* get the domain name */ + domain = cgi_is_var("dname"); if (domain==NULL || strlen(domain)==0) { - global_warning("Mod Domain: Failed: Must supply domain name"); + global_warning("Mod Domain: Failed: Missing domain name"); t_open("html/mod_domain.html", 1); } + /* Change the postmaster password (if requested) */ + passwd = cgi_is_var("ppass"); + if (passwd!=NULL && strlen(passwd)>0) { + ret = vpasswd("postmaster", domain, passwd, USE_POP); + if ( ret != VA_SUCCESS ) { + snprintf(WarningBuff, MAX_WARNING_BUFF, + "Postmaster Password error %s", verror(ret)); + global_warning(WarningBuff); + } else { + global_warning("Postmaster password set"); + } + } + +//-------------- FORM VALUES -------------- + + //-------------- DOMAIN LIMITS -------------- lusers = cgi_is_var("lusers"); lfor = cgi_is_var("lfor"); lalias = cgi_is_var("lalias"); lresponder = cgi_is_var("lresponder"); llists = cgi_is_var("llists"); + quota = cgi_is_var("quota"); + maxmsgcount = cgi_is_var("maxmsgcount"); + defaultquota = cgi_is_var("defaultquota"); + defaultmaxmsgcount = cgi_is_var("defaultmaxmsgcount"); + + //-------------- DOMAIN PERMISSIONS -------------- upop = cgi_is_var("upop"); uimap = cgi_is_var("uimap"); udialup = cgi_is_var("udialup"); upassc = cgi_is_var("upassc"); uweb = cgi_is_var("uweb"); urelay = cgi_is_var("urelay"); + uspam = cgi_is_var("uspam"); + usmtp = cgi_is_var("usmtp"); + udeletespam = cgi_is_var("udeletespam"); + umaildrop = cgi_is_var("umaildrop"); - vget_assign(domain,dir,156,&uid,&gid); - strncat(dir,"/.qmailadmin-limits", 156); - if ( (fs = fopen(dir,"w+")) == NULL ) { - global_warning("Create Domain: open .qmailadmin-limits failed"); - t_open(T_MAIN, 1); + + // INITIALIZE DEFAULT STRUCT + vdefault_limits (&defaultlimits); + + // FETCH DEFAULT DOMAIN LIMITS FROM "VLIMITS_DEFAULT_FILE" + if (vlimits_read_limits_file (VLIMITS_DEFAULT_FILE, &defaultlimits) != 0) { + snprintf(WarningBuff, MAX_WARNING_BUFF,"Failed to get limits from vlimits_default_file for domain %s", domain); + global_warning(WarningBuff); + global_par("DN", domain); + t_open("html/view_domain.html", 1); } - if ( lusers!=NULL && strlen(lusers) > 0 ) - fprintf(fs, "maxpopaccounts: %s\n", lusers); - if ( lalias!=NULL && strlen(lalias) > 0 ) - fprintf(fs, "maxaliases: %s\n", lalias); - if ( lfor!=NULL && strlen(lfor) > 0 ) - fprintf(fs, "maxforwards: %s\n", lfor); - if ( lresponder!=NULL && strlen(lresponder) > 0 ) - fprintf(fs, "maxautoresponders: %s\n", lresponder); - if ( llists!=NULL && strlen(llists) > 0 ) - fprintf(fs, "maxmailinglists: %s\n", llists); - if (quota!=NULL && strlen(quota)>0) - fprintf(fs,"default_quota: %s\n",quota); - - if (upop!=NULL) fprintf(fs, "disable_pop\n"); - if (uimap!=NULL) fprintf(fs, "disable_imap\n"); - if (udialup!=NULL) fprintf(fs, "disable_dialup\n"); - if (upassc!=NULL) fprintf(fs, "disable_password_changing\n"); - if (uweb!=NULL) fprintf(fs, "disable_webmail\n"); - if (urelay!=NULL) fprintf(fs, "disable_external_relay\n"); - fclose(fs); - chown(dir,uid, gid); - chmod(dir, S_IRUSR | S_IWUSR); +#ifdef ENABLE_MYSQL_LIMITS + // DUMMY CALL TO "vget_limits", OTHERWISE "vdel_limits" WILL CORE DUMP AT THE END + if (vget_limits(domain, &limits) != 0) { + snprintf(WarningBuff, MAX_WARNING_BUFF,"Failed to vget_limits for domain %s", domain); + global_warning(WarningBuff); + global_par("DN", domain); + t_open("html/view_domain.html", 1); + } +#endif - ppass = cgi_is_var("ppass"); - if (ppass!=NULL && strlen(ppass)>0) { - ret = vpasswd("postmaster", domain, ppass, USE_POP); - if ( ret != VA_SUCCESS ) { - snprintf(WarningBuff, MAX_WARNING_BUFF, - "Postmaster Password error %s", verror(ret)); + // CLONE LIMITS TO CHECK IF THE USER CHANGED THE DEFAULTS + memcpy(&limits, &defaultlimits, sizeof(limits)); + + // PROCESS NEW LIMITS + if (lusers!=NULL && strlen(lusers)>0) { + limits.maxpopaccounts = atoi(lusers); + } + if (lfor!=NULL && strlen(lfor)>0) { + limits.maxforwards = atoi(lfor); + } + if (lalias!=NULL && strlen(lalias)>0) { + limits.maxaliases = atoi(lalias); + } + if (lresponder!=NULL && strlen(lresponder)>0) { + limits.maxautoresponders = atoi(lresponder); + } + if (llists!=NULL && strlen(llists)>0) { + limits.maxmailinglists = atoi(llists); + } + if (quota!=NULL && strlen(quota)>0) { + limits.diskquota = strtoll(quota, NULL, 10); + } + if (maxmsgcount!=NULL && strlen(maxmsgcount)>0) { + limits.maxmsgcount = strtoll(maxmsgcount, NULL, 10); + } + if (defaultquota!=NULL && strlen(defaultquota)>0) { + // CONVERT bytes->Mbytes + if ((tmpdefaultquota = strtoll(defaultquota, NULL, 10))) { + tmpdefaultquota *= 1048576; + limits.defaultquota = tmpdefaultquota; + } + } + if (defaultmaxmsgcount!=NULL && strlen(defaultmaxmsgcount)>0) { + limits.defaultmaxmsgcount = strtoll(defaultmaxmsgcount, NULL, 10); + } + + // PROCESS NEW PERMISSIONS + if (upop!=NULL) {limits.disable_pop = 1;} + if (uimap!=NULL) {limits.disable_imap = 1;} + if (udialup!=NULL) {limits.disable_dialup = 1;} + if (upassc!=NULL) {limits.disable_passwordchanging = 1;} + if (uweb!=NULL) {limits.disable_webmail = 1;} + if (urelay!=NULL) {limits.disable_relay = 1;} + if (uspam!=NULL) {limits.disable_spamassassin = 1;} + if (usmtp!=NULL) {limits.disable_smtp = 1;} + if (udeletespam!=NULL) {limits.delete_spam = 1;} + if (umaildrop!=NULL) {limits.disable_maildrop = 1;} + + // DETECT DEVIATIONS FROM DEFAULT, IF ANY + if (limits.maxpopaccounts != defaultlimits.maxpopaccounts) {limitsmodified = 1;} + if (limits.maxaliases != defaultlimits.maxaliases) {limitsmodified = 1;} + if (limits.maxforwards != defaultlimits.maxforwards) {limitsmodified = 1;} + if (limits.maxautoresponders != defaultlimits.maxautoresponders) {limitsmodified = 1;} + if (limits.maxmailinglists != defaultlimits.maxmailinglists) {limitsmodified = 1;} + if (limits.diskquota != defaultlimits.diskquota) {limitsmodified = 1;} + if (limits.maxmsgcount != defaultlimits.maxmsgcount) {limitsmodified = 1;} + if (limits.defaultquota != defaultlimits.defaultquota) {limitsmodified = 1;} + if (limits.defaultmaxmsgcount != defaultlimits.defaultmaxmsgcount) {limitsmodified = 1;} + + // DETECT DEVIATIONS FROM DEFAULT PERMISSIONS, IF ANY + if (limits.disable_pop != defaultlimits.disable_pop) {limitsmodified = 1;} + if (limits.disable_imap != defaultlimits.disable_imap) {limitsmodified = 1;} + if (limits.disable_dialup != defaultlimits.disable_dialup) {limitsmodified = 1;} + if (limits.disable_passwordchanging != defaultlimits.disable_passwordchanging) {limitsmodified = 1;} + if (limits.disable_webmail != defaultlimits.disable_webmail) {limitsmodified = 1;} + if (limits.disable_relay != defaultlimits.disable_relay) {limitsmodified = 1;} + if (limits.disable_smtp != defaultlimits.disable_smtp) {limitsmodified = 1;} + if (limits.disable_spamassassin != defaultlimits.disable_spamassassin) {limitsmodified = 1;} + if (limits.delete_spam != defaultlimits.delete_spam) {limitsmodified = 1;} + if (limits.disable_maildrop != defaultlimits.disable_maildrop) {limitsmodified = 1;} + + // PURGE EXISTING DOMAIN LIMITS + if (vdel_limits(domain)!=0) { + snprintf(WarningBuff, MAX_WARNING_BUFF,"Failed to reset limits for domain %s", domain); + global_warning(WarningBuff); + global_par("DN", domain); + t_open("html/view_domain.html", 1); + } + + // APPLY NEW LIMITS, IF ANY CHANGE DETECTED + if (limitsmodified) { + if (vset_limits(domain,&limits) != 0) { + snprintf(WarningBuff, MAX_WARNING_BUFF,"Failed to set limits for domain %s", domain); global_warning(WarningBuff); - } else { - global_warning("Postmaster password set"); + global_par("DN", domain); + t_open("html/view_domain.html", 1); } - } + } +//-------------- DOMAIN LIMITS FINISHED -------------- post_domain_info(domain); - t_open("html/mod_domain.html", 1); - } void post_domain_info(char *domain) @@ -315,12 +496,12 @@ char cuid[10]; char cgid[10]; char cusers[10]; - char *tmpstr1; - char *tmpstr2; + char qconvert[11]; uid_t uid; gid_t gid; - FILE *fs; + struct vlimits limits; struct vqpasswd *vpw; + storage_t tmpdefaultquota; if ( vget_assign(domain,Dir,156,&uid,&gid) == NULL ) { snprintf(WarningBuff, MAX_WARNING_BUFF, @@ -348,67 +529,73 @@ if ( vpw != NULL ) global_par("DP", vpw->pw_clear_passwd); else global_par("DP", "Domain has no postmaster!!"); - strncat(Dir,"/.qmailadmin-limits", 156); - fs = fopen(Dir,"r"); - if ( fs != NULL ) { - global_par("QL", "CHECKED"); - while(fgets(Dir,156,fs)!=NULL) { - if ( (tmpstr1 = strtok(Dir,TOKENS))==NULL) continue; - - if ( strcmp(tmpstr1, "maxpopaccounts") == 0 ) { - if ( (tmpstr2 = strtok(NULL,TOKENS))==NULL) continue; - global_par("MU", tmpstr2); - - } else if ( strcmp(tmpstr1, "maxaliases") == 0 ) { - if ( (tmpstr2 = strtok(NULL,TOKENS))==NULL) continue; - global_par("MA", tmpstr2); - - } else if ( strcmp(tmpstr1, "maxforwards") == 0 ) { - if ( (tmpstr2 = strtok(NULL,TOKENS))==NULL) continue; - global_par("MF", tmpstr2); +// FETCH DOMAIN LIMITS - } else if ( strcmp(tmpstr1, "maxautoresponders") == 0 ) { - if ( (tmpstr2 = strtok(NULL,TOKENS))==NULL) continue; - global_par("MR", tmpstr2); - - } else if ( strcmp(tmpstr1, "maxmailinglists") == 0 ) { - if ( (tmpstr2 = strtok(NULL,TOKENS))==NULL) continue; - global_par("ML", tmpstr2); + if (vget_limits(domain, &limits) != 0) { + snprintf(WarningBuff, MAX_WARNING_BUFF, + "Failed to vget_limits for domain %s", domain); + global_warning(WarningBuff); + global_par("DN", domain); + t_open("html/view_domain.html", 1); + } else { + char buffer[20]; - } else if ( strcmp(tmpstr1, "quota") == 0 ) { - if ( (tmpstr2 = strtok(NULL,TOKENS))==NULL) continue; - global_par("MQ", tmpstr2); + if(limits.maxpopaccounts != -1) { + snprintf(buffer, sizeof(buffer), "%d", limits.maxpopaccounts); + global_par("MU", buffer); + } - } else if ( strcmp(tmpstr1, "default_quota") == 0 ) { - if ( (tmpstr2 = strtok(NULL,TOKENS))==NULL) continue; - global_par("MQ", tmpstr2); + if(limits.maxaliases != -1) { + snprintf(buffer, sizeof(buffer), "%d", limits.maxaliases); + global_par("MA", buffer); + } - } else if ( strcmp(tmpstr1, "disable_pop") == 0 ) { - global_par("MP", "checked"); + if(limits.maxforwards != -1) { + snprintf(buffer, sizeof(buffer), "%d", limits.maxforwards); + global_par("MF", buffer); + } - } else if ( strcmp(tmpstr1, "disable_imap") == 0 ) { - global_par("MI", "checked"); + if(limits.maxautoresponders != -1) { + snprintf(buffer, sizeof(buffer), "%d", limits.maxautoresponders); + global_par("MR", buffer); + } - } else if ( strcmp(tmpstr1, "disable_dialup") == 0 ) { - global_par("MD", "checked"); + if(limits.maxmailinglists != -1) { + snprintf(buffer, sizeof(buffer), "%d", limits.maxmailinglists); + global_par("ML", buffer); + } - } else if ( strcmp(tmpstr1, "disable_password_changing") == 0 ) { - global_par("MC", "checked"); + if(limits.diskquota != 0) { + snprintf(buffer, sizeof(buffer), "%lu", limits.diskquota); + global_par("MQ", buffer); + } - } else if ( strcmp(tmpstr1, "disable_external_relay") == 0 ) { - global_par("MS", "checked"); - - } else if ( strcmp(tmpstr1, "disable_spamassassin") == 0 ) { - global_par("MZ", "checked"); + if(limits.maxmsgcount != 0) { + snprintf(buffer, sizeof(buffer), "%lu", limits.maxmsgcount); + global_par("ME", buffer); + } - } else if ( strcmp(tmpstr1, "disable_webmail") == 0 ) { - global_par("MW", "checked"); + if(limits.defaultquota != 0) { + tmpdefaultquota = limits.defaultquota/1048576.0; + sprintf(qconvert, "%.2lf", (double)tmpdefaultquota); + global_par("MB", qconvert); + } - } + if(limits.defaultmaxmsgcount != 0) { + snprintf(buffer, sizeof(buffer), "%lu", limits.defaultmaxmsgcount); + global_par("MG", buffer); } - fclose(fs); - } else { - global_par("QU", "CHECKED"); + + if (limits.disable_pop) global_par("MP", "checked"); + if (limits.disable_imap) global_par("MI", "checked"); + if (limits.disable_dialup) global_par("MD", "checked"); + if (limits.disable_passwordchanging) global_par("MC", "checked"); + if (limits.disable_webmail) global_par("MW", "checked"); + if (limits.disable_relay) global_par("MS", "checked"); + if (limits.disable_smtp) global_par("MH", "checked"); + if (limits.disable_spamassassin) global_par("MZ", "checked"); + if (limits.delete_spam) global_par("ML", "checked"); + if (limits.disable_maildrop) global_par("MN", "checked"); } } @@ -446,9 +633,8 @@ strncpy( face, get_lang_code("057"), 30); strncpy( size, get_lang_code("058"), 30); - printf("List Domains\n"); - printf("\n", - bgcolor, fgcolor, fgcolor, fgcolor); + printf("List Domains\n"); + printf("\n"); printf("\n", face, size, fgcolor); @@ -476,18 +662,17 @@ printf("%s
\n", assign_alias_domain, assign_alias_domain); } else { - printf( -"%s Aliased to %s
\n", + printf("%s Aliased to %s
\n", assign_alias_domain, assign_domain, assign_alias_domain); } } fclose(fs); - + printf("
\n"); printf("Main VqAdmin Menu

\n"); - printf("%s %s
\n", + printf("%s %s
\n", VQA_PACKAGE, VQA_VERSION); - printf("%s %s
\n", + printf("%s %s
\n", PACKAGE, VERSION); free(tmpbuf); @@ -546,7 +731,7 @@ char *dom; /* pointer to temp buffer */ char tmpbuf[100]; char status[100]; - + snprintf(tmpbuf, 100, "%s.tmp", ISOQLOGPATH); infile = fopen(ISOQLOGPATH, "a+"); /* open the existing domains file */ if (infile == NULL) { @@ -555,7 +740,7 @@ global_warning(status); return; } /* reports error opening input file */ - + tmpfile = fopen(tmpbuf,"w+"); /* open the temporary file */ if (tmpfile == NULL) { snprintf(status, 100, "Error: Unable to open temporary file %s You \ @@ -563,15 +748,15 @@ global_warning(status); return; } /* reports error opening temp file */ - - + + /* * this loop is pretty pointless. it simply copies one file into the other * and then we add to it right after the loop completes. However, it * does attempt to clean up a messy file, which is good, who likes * messy files? :) */ - + /* while there's something to be read */ while( fgets (buffer, 100, infile) != NULL ) { /* munge */ @@ -596,9 +781,9 @@ char *dom; /* pointer to temp buffer */ char tmpbuf[100]; char status[100]; - + snprintf(tmpbuf, 100, "%s.tmp", ISOQLOGPATH); - + infile = fopen(ISOQLOGPATH, "r+"); /* open the existing domains file */ if (infile == NULL) { snprintf(status, 100, "Error: Unable to open input file %s you may \ @@ -606,23 +791,23 @@ global_warning(status); return; } /* reports error opening input file */ - + tmpfile = fopen(tmpbuf,"w+"); /* open the temporary file */ if (tmpfile == NULL) { snprintf(status, 100, "Error: Unable to open temporary file %s you may have to remove the domain from isoqlog manually", tmpbuf); global_warning(status); return; } /* reports error opening temp file */ - + while( fgets (buffer, 100, infile) != NULL ) { /* while there's something to be read */ dom = strtok( buffer, " \n\t\r"); /* munge */ if (dom == NULL) continue; /* blank line */ if (strcmp(dom, domain) == 0) continue; /* hey! we found our domain! */ fprintf(tmpfile, "%s\n", dom); /* nope, wasn't him, spit it out */ - } - + } + fclose(infile); fclose(tmpfile); /* close files */ - + rename ( tmpbuf, ISOQLOGPATH ); /* move the modified file into place */ } diff -ruN ../vqadmin-2.3.7-original/global.c vqadmin-2.3.7/global.c --- ../vqadmin-2.3.7-original/global.c 2003-01-27 18:51:52.000000000 +0100 +++ vqadmin-2.3.7/global.c 2023-02-18 17:12:21.689617259 +0100 @@ -193,3 +193,45 @@ vclose(); exit(exit_code); } + +/* quota_to_bytes: used to convert user entered quota (given in MB) + back to bytes for vpasswd file + return value: 0 for success, 1 for failure +*/ +int quota_to_bytes(char returnval[], char *quota) { + storage_t tmp; + + if (quota == NULL) { return 1; } + if ((tmp = strtoll(quota, NULL, 10))) { + tmp *= 1048576; + sprintf(returnval, "%.0lf", (double)tmp); + return 0; + } else { + strcpy (returnval, ""); + return 1; + } +} + +/* quota_to_megabytes: used to convert vpasswd representation of quota + to number of megabytes. + return value: 0 for success, 1 for failure +*/ +int quota_to_megabytes(char *returnval, char *quota) { + storage_t tmp; + int i; + + if (quota == NULL) { return 1; } + i = strlen(quota); + if ((quota[i-1] == 'M') || (quota[i-1] == 'm')) { + tmp = strtoll(quota, NULL, 10); /* already in megabytes */ + } else if ((quota[i-1] == 'K') || (quota[i-1] == 'k')) { + tmp = strtoll(quota, NULL, 10) * 1024; /* convert kilobytes to megabytes */ + } else if ((tmp = strtoll(quota, NULL, 10))) { + tmp /= 1048576.0; + } else { + strcpy (returnval, ""); + return 1; + } + sprintf(returnval, "%.2lf", (double)tmp); + return 0; +} diff -ruN ../vqadmin-2.3.7-original/global.h vqadmin-2.3.7/global.h --- ../vqadmin-2.3.7-original/global.h 2003-01-27 19:24:03.000000000 +0100 +++ vqadmin-2.3.7/global.h 2023-02-18 17:21:17.483070293 +0100 @@ -23,6 +23,7 @@ #include #include #include +#include #define MAX_WARNING_BUFF 500 @@ -146,3 +147,7 @@ void modify_file(); void show_controls(); void delete_file(); + +typedef uint64_t storage_t; +int quota_to_bytes(char[], char*); //jhopper prototype +int quota_to_megabytes(char[], char*); //jhopper prototype diff -ruN ../vqadmin-2.3.7-original/html/add_alias_domain.html vqadmin-2.3.7/html/add_alias_domain.html --- ../vqadmin-2.3.7-original/html/add_alias_domain.html 2003-02-14 19:49:00.000000000 +0100 +++ vqadmin-2.3.7/html/add_alias_domain.html 2020-06-24 18:23:11.000000000 +0200 @@ -1,26 +1,26 @@ -#-003 %-U (%-G) - - - - - -
%-W
-
#-059 %-U (%-G)
-#-059
-
-
- - - - - - - - -
#-060
#-010
-
-
-
-#-000

-%-V - +#-003 %-U (%-G) + + + + + +
%-W
+
#-059 %-U (%-G)
+#-059
+
+
+ + + + + + + + +
#-060
#-010
+
+
+
+#-000

+%-V + diff -ruN ../vqadmin-2.3.7-original/html/add_domain.html vqadmin-2.3.7/html/add_domain.html --- ../vqadmin-2.3.7-original/html/add_domain.html 2005-01-11 21:25:26.000000000 +0100 +++ vqadmin-2.3.7/html/add_domain.html 2023-02-18 17:12:21.689617259 +0100 @@ -1,69 +1,113 @@ -#-003 %-U (%-G) - - - - - -
%-W
-
#-003 %-U (%-G)
-#-003
-
-
- - - - - -
#-010
#-011
- -
-#-012
- - - - - - - - - - - - - - - - - - -
#-015#-050
#-016#-050
#-017#-050
#-018#-050
#-019#-050
#-039
- - - - - - - - - - - - -

-
-
- - -
-#-000

-%-V - +#-003 %-U (%-G) + + + + +
%-W
+
#-003 %-U (%-G)
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
#-003

#-010
#-011
#-035
 
#-012

#-015#-050
#-016#-050
#-017#-050
#-018#-050
#-019#-050
#-074#-077
#-075#-077
 
#-078

+ + + + + + +
+ + + + + + +
+
  + + + + + + +
+
+
 
+ +
+
+#-000

+%-V + diff -ruN ../vqadmin-2.3.7-original/html/add_user.html vqadmin-2.3.7/html/add_user.html --- ../vqadmin-2.3.7-original/html/add_user.html 2005-01-11 21:43:10.000000000 +0100 +++ vqadmin-2.3.7/html/add_user.html 2023-02-18 17:12:21.690617256 +0100 @@ -1,49 +1,74 @@ -#-038 %-U (%-G) - - - - - -
%-W
-
#-008 %-U (%-G)
-#-008 -
-
- - - - - - - - - - -
#-020
#-021
#-039
#-022
#-040
- - - - - - - - - - -
-
-
-
-
-
-
-
-

- -
- -
-
-#-000

-%-V - + + + #-008 %-U (%-G) + + + +
%-W
+
#-008 %-U (%-G)
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
 
#-008

#-020
#-021
#-039
#-022
#-051
#-052
#-035
 
#-040

+ + + + + + +
+ + + + + + + +
+
  + + + + + + + +
+
+
 
+ +
+
+#-000

+%-V + diff -ruN ../vqadmin-2.3.7-original/html/control.html vqadmin-2.3.7/html/control.html --- ../vqadmin-2.3.7-original/html/control.html 2003-02-14 19:49:06.000000000 +0100 +++ vqadmin-2.3.7/html/control.html 2020-06-24 18:23:11.000000000 +0200 @@ -1,38 +1,38 @@ - - - #-061 %-U (%-G) - - - - -
%-W
-#-061 %-U (%-G)
-
- -
-#-000

-%-V - + + + #-061 %-U (%-G) + + + + +
%-W
+#-061 %-U (%-G)
+
+ +
+#-000

+%-V + diff -ruN ../vqadmin-2.3.7-original/html/ctrl_file.html vqadmin-2.3.7/html/ctrl_file.html --- ../vqadmin-2.3.7-original/html/ctrl_file.html 2003-02-14 19:49:07.000000000 +0100 +++ vqadmin-2.3.7/html/ctrl_file.html 2020-06-24 18:23:11.000000000 +0200 @@ -1,30 +1,30 @@ - - -#-062 %-U (%-G) - - - -
%-W
-#-062 %-U (%-G)
-#-062 -
-
- - - - -
-$-NM
- -
- -
-
- - - -
-
-#-000

-%-V - + + +#-062 %-U (%-G) + + + +
%-W
+#-062 %-U (%-G)
+#-062 +
+ + + + + +
+$-NM
+ +
+ +
+
+ + + +
+
+#-000

+%-V + diff -ruN ../vqadmin-2.3.7-original/html/del_domain.html vqadmin-2.3.7/html/del_domain.html --- ../vqadmin-2.3.7-original/html/del_domain.html 2003-02-14 19:49:09.000000000 +0100 +++ vqadmin-2.3.7/html/del_domain.html 2020-06-24 18:23:11.000000000 +0200 @@ -1,28 +1,28 @@ -#-004 %-U (%-G) - - - - - -
%-W
-
#-004 %-U (%-G)
-#-004 -
- - - - - - - - - - -
#-010
-
- -
-
-#-000

-%-V - +#-004 %-U (%-G) + + + + + +
%-W
+
#-004 %-U (%-G)
+#-004 +
+
+ + + + + + + + + +
#-010
+
+ +
+
+#-000

+%-V + diff -ruN ../vqadmin-2.3.7-original/html/del_user.html vqadmin-2.3.7/html/del_user.html --- ../vqadmin-2.3.7-original/html/del_user.html 2003-02-14 19:49:10.000000000 +0100 +++ vqadmin-2.3.7/html/del_user.html 2020-06-24 18:23:11.000000000 +0200 @@ -1,27 +1,27 @@ -#-009 %-U (%-G) - - - - -
%-W
-
#-009 %-U (%-G)
-#-009 -
-
- - - - - - - - -
#-020
- -
- -
-
-#-000

-%-V - +#-009 %-U (%-G) + + + + +
%-W
+
#-009 %-U (%-G)
+#-009 +
+
+ + + + + + + + +
#-020
+ +
+ +
+
+#-000

+%-V + diff -ruN ../vqadmin-2.3.7-original/html/en vqadmin-2.3.7/html/en --- ../vqadmin-2.3.7-original/html/en 2005-01-11 21:24:52.000000000 +0100 +++ vqadmin-2.3.7/html/en 2023-02-18 17:12:21.690617256 +0100 @@ -1,8 +1,8 @@ 000 VqAdmin Main Menu -001 Domains +001 Domains 002 View Domain 003 Add Domain -004 Delete Domain +004 Delete Domain 005 Email Accounts 006 View Email Account 007 Show Users @@ -10,7 +10,7 @@ 009 Delete Email Account 010 Domain Name 011 Postmaster Password -012 Options +012 Domain Limits 013 Limit 014 Unlimited 015 Accounts @@ -32,23 +32,23 @@ 031 Error 032 error occured while initiating the interface. 033 Modify Domain -034 Users -035 Directory +034 Accounts +035 Mail Directory 036 User ID 037 Group ID 038 Modify Email Account -039 Quota in bytes +039 Quota in Mbytes 040 Permissions 041 List Domains -042 Disable pop access -043 Disable web access -044 Disable imap access +042 Disable POP access +043 Disable webmail access +044 Disable IMAP access 045 Disable change password -046 Bounce email -047 Disable email relay +046 Bounce email +047 Disable email relay 048 Domain Administrator 049 Disable dialup access -050 0 disables this feature +050 0 = disabled 051 Last authentication time 052 Last authentication ip 053 List Domains @@ -62,7 +62,15 @@ 061 Qmail Control Files 062 Modify Control File 063 Modify File -067 user: +067 user: 068 permission: -069 Disable SpamAssassin - +069 Disable spamassassin +070 Disable SMTP access +071 Delete spam mails +072 Disable maildrop +073 Max Mail Count/Domain +074 Quota/User (Mbytes) +075 Mails/User +076 Update +077 Leave blank for defaults +078 Domain Permissions diff -ruN ../vqadmin-2.3.7-original/html/en-us vqadmin-2.3.7/html/en-us --- ../vqadmin-2.3.7-original/html/en-us 2003-01-09 21:15:21.000000000 +0100 +++ vqadmin-2.3.7/html/en-us 2023-02-18 17:12:21.690617256 +0100 @@ -1,64 +1,76 @@ -000 Main VqAdmin Menu -001 Domains -002 View Domain -003 Add Domain -004 Delete Domain -005 Email Accounts -006 View Email Account -007 Show Users -008 Add Email Account -009 Delete Email Account -010 Domain Name -011 Postmaster Password -012 Options -013 Limit -014 Unlimited -015 Accounts -016 Forwards -017 Aliases -018 Autoresponders -019 Mailing Lists -020 Email Address -021 Password -022 Full Name -023 Authentication Failed -024 vQadmin was unable to determine your username, which -025 means your webserver is improperly configured to run -026 with this CGI. For security reasons, this script -027 will not run without Apache htaccess lists. -028 Unrecoverable Error -029 An unrecoverable error occured while processing your request. -030 Please contact the administrator if this continues. -031 Error -032 error occured while initiating the interface. -033 Modify Domain -034 Users -035 Directory -036 User ID -037 Group ID -038 Modify Email Account -039 Quota in bytes -040 Permissions -041 List Domains -042 Disable pop access -043 Disable web access -044 Disable imap access -045 Disable change password -046 Bounce email -047 Disable email relay -048 Domain Administrator -049 Disable dialup access -050 0 disables this feature -051 Last authentication time -052 Last authentication ip -053 List Domains -054 Search string: -055 #000066 -056 #FFFFFF -057 Verdana -058 3 -059 Add Alias Domain -060 Alias Domain Name +000 VqAdmin Main Menu +001 Domains +002 View Domain +003 Add Domain +004 Delete Domain +005 Email Accounts +006 View Email Account +007 Show Users +008 Add Email Account +009 Delete Email Account +010 Domain Name +011 Postmaster Password +012 Domain Limits +013 Limit +014 Unlimited +015 Accounts +016 Forwards +017 Aliases +018 Autoresponders +019 Mailing Lists +020 Email Address +021 Password +022 Full Name +023 Authentication Failed +024 vQadmin was unable to determine your username, which +025 means your webserver is improperly configured to run +026 with this CGI. For security reasons, this script +027 will not run without Apache htaccess lists. +028 Unrecoverable Error +029 An unrecoverable error occured while processing your request. +030 Please contact the administrator if this continues. +031 Error +032 error occured while initiating the interface. +033 Modify Domain +034 Accounts +035 Mail Directory +036 User ID +037 Group ID +038 Modify Email Account +039 Quota in Mbytes +040 Permissions +041 List Domains +042 Disable POP access +043 Disable webmail access +044 Disable IMAP access +045 Disable change password +046 Bounce email +047 Disable email relay +048 Domain Administrator +049 Disable dialup access +050 0 = disabled +051 Last authentication time +052 Last authentication ip +053 List Domains +054 Search string: +055 #000066 +056 #FFFFFF +057 Verdana +058 3 +059 Add Alias Domain +060 Alias Domain Name 061 Qmail Control Files 062 Modify Control File 063 Modify File +067 user: +068 permission: +069 Disable spamassassin +070 Disable SMTP access +071 Delete spam mails +072 Disable maildrop +073 Max Mail Count/Domain +074 Quota/User (Mbytes) +075 Mails/User +076 Update +077 Leave blank for defaults +078 Domain Permissions diff -ruN ../vqadmin-2.3.7-original/html/hu vqadmin-2.3.7/html/hu --- ../vqadmin-2.3.7-original/html/hu 2003-03-23 16:46:42.000000000 +0100 +++ vqadmin-2.3.7/html/hu 2020-06-24 18:23:11.000000000 +0200 @@ -1,66 +1,66 @@ -000 Főmenü -001 Domének -002 Domén megtekintése -003 Domén létrehozása -004 Domén törlése -005 Postafiókok -006 Postafiók megtekintése -007 Felhasználók megtekintése -008 Postafiók létrehozása -009 Postafiók törlése -010 Domén név -011 Postamesteri jelszó -012 Beállítások -013 Korlát -014 Korlátlan -015 Fiókok -016 Továbbítások -017 Másodlagos címek -018 Automatikus válaszok -019 Levelezőlisták -020 Postafiókok -021 Jelszó -022 Teljes név -023 Sikertelen hitelesítés -024 A program nem tudja meghatározni a felhasznalói nevet, vagyis -025 a webszerver nem megfelelően konfigurált, hogy ezzel a -026 CGI-al fusson. Biztonsági okokból ez a kódrészlet -027 Apache htaccess nélkül nem fog muködni. -028 Visszaállíthatatlan hiba -029 Visszaállíthatatlan hiba történt a kérés feldolgozása alatt -030 Lépjen kapcsolatba az adminisztrátorral, ha ez folytatódik -031 Hiba -032 Hiba történt az illesztofelület betöltésekor -033 Domén módosítása -034 Felhasználók -035 Könyvtár -036 Felhasználó azonosító -037 Csoport azonosító -038 Postafiók módosítása -039 Korlát byteokban -040 Hozzáférések -041 Domének megtekintése -042 POP letiltása -043 Webmail letiltása -044 IMAP letiltása -045 Jelszóváltoztatás letiltása -046 Visszapattanó levél -047 SMTP továbbítás letiltása -048 Domén Adminisztrátor -049 Telefonos hozzáférés letiltása -050 0 beírásával tiltható -051 Utolsó azonosítás ideje -052 Utolsó azonosítás IP-je -053 Domének megtekintése -054 Domén név tartalmazza:
Hagyja üressen az összes domén megjelenítéséhez. -055 #807060 -056 #FFFFFF -057 helvetica -058 3 -059 Másodlagos domén hozzáadása -060 Másodlagos domén -061 Qmail Control Files -062 Modify Control File -063 Modify File -067 user: -068 permission: +000 Főmenü +001 Domének +002 Domén megtekintése +003 Domén létrehozása +004 Domén törlése +005 Postafiókok +006 Postafiók megtekintése +007 Felhasználók megtekintése +008 Postafiók létrehozása +009 Postafiók törlése +010 Domén név +011 Postamesteri jelszó +012 Beállítások +013 Korlát +014 Korlátlan +015 Fiókok +016 Továbbítások +017 Másodlagos címek +018 Automatikus válaszok +019 Levelezőlisták +020 Postafiókok +021 Jelszó +022 Teljes név +023 Sikertelen hitelesítés +024 A program nem tudja meghatározni a felhasznalói nevet, vagyis +025 a webszerver nem megfelelően konfigurált, hogy ezzel a +026 CGI-al fusson. Biztonsági okokból ez a kódrészlet +027 Apache htaccess nélkül nem fog muködni. +028 Visszaállíthatatlan hiba +029 Visszaállíthatatlan hiba történt a kérés feldolgozása alatt +030 Lépjen kapcsolatba az adminisztrátorral, ha ez folytatódik +031 Hiba +032 Hiba történt az illesztofelület betöltésekor +033 Domén módosítása +034 Felhasználók +035 Könyvtár +036 Felhasználó azonosító +037 Csoport azonosító +038 Postafiók módosítása +039 Korlát byteokban +040 Hozzáférések +041 Domének megtekintése +042 POP letiltása +043 Webmail letiltása +044 IMAP letiltása +045 Jelszóváltoztatás letiltása +046 Visszapattanó levél +047 SMTP továbbítás letiltása +048 Domén Adminisztrátor +049 Telefonos hozzáférés letiltása +050 0 beírásával tiltható +051 Utolsó azonosítás ideje +052 Utolsó azonosítás IP-je +053 Domének megtekintése +054 Domén név tartalmazza:
Hagyja üressen az összes domén megjelenítéséhez. +055 #807060 +056 #FFFFFF +057 helvetica +058 3 +059 Másodlagos domén hozzáadása +060 Másodlagos domén +061 Qmail Control Files +062 Modify Control File +063 Modify File +067 user: +068 permission: diff -ruN ../vqadmin-2.3.7-original/html/main.html vqadmin-2.3.7/html/main.html --- ../vqadmin-2.3.7-original/html/main.html 2003-02-14 19:49:22.000000000 +0100 +++ vqadmin-2.3.7/html/main.html 2020-06-24 18:23:11.000000000 +0200 @@ -1,35 +1,35 @@ - - -#-000 - - - -
-%-W
-#-000
-#-067 %-U
-#-068 %-G
-
-
- - -
-%-V - + + +#-000 + + + +
+%-W
+#-000
+#-067 %-U
+#-068 %-G
+
+
+ + +
+%-V + diff -ruN ../vqadmin-2.3.7-original/html/mod_domain.html vqadmin-2.3.7/html/mod_domain.html --- ../vqadmin-2.3.7-original/html/mod_domain.html 2005-01-11 21:47:51.000000000 +0100 +++ vqadmin-2.3.7/html/mod_domain.html 2023-02-18 17:12:21.691617253 +0100 @@ -1,76 +1,115 @@ -#-033 %-U (%-G) - - - - - -
%-W
-
#-033 %-U (%-G)
-#-033 -
-
- - - - - - - - - - - - - - - - - -
#-010
#-034$-DS
#-011
#-035$-DD
- - - - - - - - - - - - - - - - - - - - - - - - - - -
#-036$-DU
#-037$-DG
#-015#-050
#-016#-050
#-017#-050
#-018#-050
#-019#-050
#-039
- - - - - - - - - - - -

- -
-
-Show Users -
-#-000

-%-V - +#-033 %-U (%-G) + + + + +
%-W
+
#-033 %-U (%-G)
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
#-033 / #-007

#-010
#-011 + #-076
#-035
 
#-012 (#-034: $-DS)

#-015#-050
#-016#-050
#-017#-050
#-018#-050
#-019#-050
#-074#-077
#-075#-077
 
#-078

+ + + + + + +
+ + + + + + +
+
  + + + + + + +
+
+
 
+ + +
+
+#-000

+%-V + diff -ruN ../vqadmin-2.3.7-original/html/mod_user.html vqadmin-2.3.7/html/mod_user.html --- ../vqadmin-2.3.7-original/html/mod_user.html 2005-01-11 21:42:28.000000000 +0100 +++ vqadmin-2.3.7/html/mod_user.html 2023-02-18 17:12:21.691617253 +0100 @@ -1,59 +1,76 @@ -#-038 %-U (%-G) - - - - - -
%-W
-
#-038 %-U (%-G)
-#-038 -
-
- - - - - - - - - -
#-020
#-021
#-039
#-022
- - - - - - - -
#-035$-UD
#-051$-UT
#-052$-UZ
-
#-040 - - - - - - - - - - - -
-
-
- -
-
- - - -
- - $-UA
- -
-
-#-000

-%-V - + + + #-038 %-U (%-G) + + + +
%-W
+
#-038 %-U (%-G)
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
 
#-038

#-020
#-021 + #-076
#-039
#-022
#-051
#-052
#-035
 
#-040

+ + + + + + +
+ + + + + + + +
+
  + + + + + + + +
+
+
 
+ + +
+
+#-000

+%-V + diff -ruN ../vqadmin-2.3.7-original/html/show_domains.html vqadmin-2.3.7/html/show_domains.html --- ../vqadmin-2.3.7-original/html/show_domains.html 2003-02-14 19:49:58.000000000 +0100 +++ vqadmin-2.3.7/html/show_domains.html 2020-06-24 18:23:11.000000000 +0200 @@ -1,28 +1,28 @@ -#-002 %-U (%-G) - - - - -
%-W
-
#-053 %-U (%-G)
-#-053 -
-
- - - - - - - - - -
#-054
- - -
-
-
-#-000

-%-V - +#-002 %-U (%-G) + + + + +
%-W
+
#-053 %-U (%-G)
+#-053 +
+
+ + + + + + + + + +
#-054
+ + +
+
+
+#-000

+%-V + diff -ruN ../vqadmin-2.3.7-original/html/show_users.html vqadmin-2.3.7/html/show_users.html --- ../vqadmin-2.3.7-original/html/show_users.html 2003-02-14 19:49:59.000000000 +0100 +++ vqadmin-2.3.7/html/show_users.html 2020-06-24 18:23:11.000000000 +0200 @@ -1,27 +1,27 @@ -#-007 %-U (%-G) - - - - -
%-W
-
#-007 %-U (%-G)
-#-007 -
-
- - - - - - - - - -
#-010
-
- -
-
-#-000

-%-V - +#-007 %-U (%-G) + + + + +
%-W
+
#-007 %-U (%-G)
+#-007 +
+
+ + + + + + + + + +
#-010
+
+ +
+
+#-000

+%-V + diff -ruN ../vqadmin-2.3.7-original/html/view_domain.html vqadmin-2.3.7/html/view_domain.html --- ../vqadmin-2.3.7-original/html/view_domain.html 2003-02-14 19:50:01.000000000 +0100 +++ vqadmin-2.3.7/html/view_domain.html 2020-06-24 18:23:11.000000000 +0200 @@ -1,28 +1,28 @@ -#-002 %-U (%-G) - - - - - -
%-W
-
#-002 %-U (%-G)
-#-002 -
-
- - - - - - - - - -
#-010
-
- -
-
-#-000

-%-V - +#-002 %-U (%-G) + + + + + +
%-W
+
#-002 %-U (%-G)
+#-002 +
+
+ + + + + + + + + +
#-010
+
+ +
+
+#-000

+%-V + diff -ruN ../vqadmin-2.3.7-original/html/view_user.html vqadmin-2.3.7/html/view_user.html --- ../vqadmin-2.3.7-original/html/view_user.html 2003-02-14 19:50:04.000000000 +0100 +++ vqadmin-2.3.7/html/view_user.html 2020-06-24 18:23:11.000000000 +0200 @@ -1,27 +1,27 @@ -#-006 %-U (%-G) - - - - -
%-W
-
#-006 %-U (%-G)
-#-006 -
-
- - - - - - - - -
#-020
- -
- -
-
-#-000

-%-V - +#-006 %-U (%-G) + + + + +
%-W
+
#-006 %-U (%-G)
+#-006 +
+
+ + + + + + + + +
#-020
+ +
+ +
+
+#-000

+%-V + diff -ruN ../vqadmin-2.3.7-original/lang.c vqadmin-2.3.7/lang.c --- ../vqadmin-2.3.7-original/lang.c 2002-08-09 01:27:07.000000000 +0200 +++ vqadmin-2.3.7/lang.c 2023-02-18 16:59:10.271902281 +0100 @@ -25,6 +25,9 @@ #include #include #include + +#include + #include "global.h" #include "vauth.h" @@ -70,9 +73,13 @@ char tmpfile[MAX_TMPBUF]; struct stat mystat; + /* Lowercase the language name to fix a bug where chrome users can't access + * the page. */ + lowerit(lang); + /* only open files in the local directory */ if ( strstr(lang, ".") != NULL || strstr(lang, "/") != NULL ) { - global_error("invalid language file",1,0); + strcpy(lang, "en"); } if ( lang_fs == NULL ) { diff -ruN ../vqadmin-2.3.7-original/user.c vqadmin-2.3.7/user.c --- ../vqadmin-2.3.7-original/user.c 2005-01-11 22:10:35.000000000 +0100 +++ vqadmin-2.3.7/user.c 2023-02-18 17:12:21.691617253 +0100 @@ -116,15 +116,23 @@ static char domain[156]; char *gecos; char *passwd; - char *shell; - char *udisable; - char *uweb; + char *uquota; + + char *upop; char *uimap; + char *udialup; char *upassc; + char *uweb; char *ubounce; char *urelay; char *uspam; + char *usmtp; + char *umaildrop; + char *udeletespam; char *uqadmin; + + char *formattedquota = NULL; + char qconvert[11]; int ret; int i; int GidFlag = 0; @@ -138,24 +146,30 @@ eaddr = cgi_is_var("eaddr"); gecos = cgi_is_var("fname"); passwd = cgi_is_var("cpass"); - shell = cgi_is_var("quota"); - udisable = cgi_is_var("udisable"); - uweb = cgi_is_var("uweb"); + uquota = cgi_is_var("quota"); + + upop = cgi_is_var("upop"); uimap = cgi_is_var("uimap"); + udialup = cgi_is_var("udialup"); upassc = cgi_is_var("upassc"); + uweb = cgi_is_var("uweb"); ubounce = cgi_is_var("ubounce"); + urelay = cgi_is_var("urelay"); uspam = cgi_is_var("uspam"); + usmtp = cgi_is_var("usmtp"); + umaildrop = cgi_is_var("umaildrop"); + udeletespam = cgi_is_var("udeletespam"); uqadmin = cgi_is_var("uqadmin"); if ( eaddr==NULL || strlen(eaddr)==0 ) { global_warning("Modify Email Account: Failed: no email address given"); t_open("html/mod_user.html", 1); } - + parse_email( eaddr, user, domain, 156); - vpw = vauth_getpw(user,domain); + vpw = vauth_getpw(user, domain); if (vpw == NULL) { global_warning("Modify User: account does not exist"); t_open("html/mod_user.html", 1); @@ -179,32 +193,45 @@ vpw->pw_gecos = gecos; } - if ( shell!=NULL && strlen(shell)>0 ){ - vpw->pw_shell = shell; + // UPDATE USER QUOTA ("maildirsize" file will be created at the end, only if the update is successfull. + formattedquota="NOQUOTA"; // START WITH DEAFULT "NOQUOTA" + if (uquota!=NULL) { // QUOTA FIELD IS SET + if (strlen(uquota)==0 || strcmp(uquota, "NOQUOTA")==0 || strcmp(uquota, "BADQUOTA")==0) { // RESET QUOTA + formattedquota = "NOQUOTA"; + } else { // QUOTA IS REQUESTED, CONVERT bytes->Mbytes + if (quota_to_bytes(qconvert, uquota)) { + global_warning("Invalid quota string."); + t_open("html/mod_user.html", 1); + } else { + formattedquota = format_maildirquota(qconvert); + } + } } + vpw->pw_shell = formattedquota; - if (udisable!=NULL) GidFlag |= NO_POP; - if (uweb!=NULL) GidFlag |= NO_WEBMAIL; + // UPDATE PERMISSIONS + if (upop!=NULL) GidFlag |= NO_POP; if (uimap!=NULL) GidFlag |= NO_IMAP; - if (ubounce!=NULL) GidFlag |= BOUNCE_MAIL; + if (udialup!=NULL) GidFlag |= NO_DIALUP; if (upassc!=NULL) GidFlag |= NO_PASSWD_CHNG; + if (uweb!=NULL) GidFlag |= NO_WEBMAIL; + if (ubounce!=NULL) GidFlag |= BOUNCE_MAIL; if (urelay!=NULL) GidFlag |= NO_RELAY; -#ifdef SPAMASSASSIN + if (usmtp!=NULL) GidFlag |= NO_SMTP; if (uspam!=NULL) GidFlag |= NO_SPAMASSASSIN; -#endif + if (udeletespam!=NULL) GidFlag |= DELETE_SPAM; + if (umaildrop!=NULL) GidFlag |= NO_MAILDROP; if (uqadmin!=NULL) GidFlag |= QA_ADMIN; vpw->pw_gid = GidFlag; ret = vauth_setpw(vpw, domain); if ( ret != VA_SUCCESS ) { - snprintf(WarningBuff, MAX_WARNING_BUFF, + snprintf(WarningBuff, MAX_WARNING_BUFF, "Modify Account %s error %s", eaddr, verror(ret)); global_warning(WarningBuff); } else { - snprintf(WarningBuff, MAX_WARNING_BUFF, - "Modify Account %s success", eaddr); - global_warning(WarningBuff); + update_maildirsize(domain, vpw->pw_dir, formattedquota); // CREATE "maildirsize" file in user's Maildir. } post_email_info( eaddr, vpw, domain); @@ -214,6 +241,7 @@ void post_email_info( char *eaddr, struct vqpasswd *vpw, char *domain) { + char qconvert[11]; #ifdef ENABLE_AUTH_LOGGING time_t mytime; char *authip; @@ -221,30 +249,36 @@ global_par("UA", eaddr); global_par("UN", vpw->pw_gecos); - global_par("UQ", vpw->pw_shell); + +// SHOW USER QUOTA IN MB + if (strncmp(vpw->pw_shell, "NOQUOTA", 2) != 0) { + if(quota_to_megabytes(qconvert, vpw->pw_shell)) { + global_par("UQ", "BADQUOTA"); + } + else { + global_par("UQ", qconvert); + } + } + global_par("UD", vpw->pw_dir); #ifdef CLEAR_PASS global_par("UO", vpw->pw_clear_passwd); #endif - if (vpw->pw_gid & NO_PASSWD_CHNG) global_par("UC", "CHECKED"); - - if (vpw->pw_gid & NO_POP) global_par("UP", "CHECKED"); - - if (vpw->pw_gid & NO_WEBMAIL) global_par("UW", "CHECKED"); - - if (vpw->pw_gid & NO_IMAP) global_par("UI", "CHECKED"); - - if (vpw->pw_gid & BOUNCE_MAIL) global_par("UB", "CHECKED"); - - if (vpw->pw_gid & NO_RELAY) global_par("US", "CHECKED"); - -#ifdef SPAMASSASSIN - if (vpw->pw_gid & NO_SPAMASSASSIN) global_par("UF", "CHECKED"); -#endif - - if (vpw->pw_gid & QA_ADMIN) global_par("UK", "CHECKED"); + if (vpw->pw_gid & NO_POP) global_par("MP", "CHECKED"); + if (vpw->pw_gid & NO_IMAP) global_par("MI", "CHECKED"); + if (vpw->pw_gid & NO_DIALUP) global_par("MD", "CHECKED"); + if (vpw->pw_gid & NO_PASSWD_CHNG) global_par("MC", "CHECKED"); + if (vpw->pw_gid & NO_WEBMAIL) global_par("MW", "CHECKED"); + if (vpw->pw_gid & BOUNCE_MAIL) global_par("MB", "CHECKED"); + + if (vpw->pw_gid & NO_RELAY) global_par("MS", "CHECKED"); + if (vpw->pw_gid & NO_SMTP) global_par("MH", "CHECKED"); + if (vpw->pw_gid & NO_SPAMASSASSIN) global_par("MZ", "CHECKED"); + if (vpw->pw_gid & DELETE_SPAM) global_par("ML", "CHECKED"); + if (vpw->pw_gid & NO_MAILDROP) global_par("MN", "CHECKED"); + if (vpw->pw_gid & QA_ADMIN) global_par("MK", "CHECKED"); #ifdef ENABLE_AUTH_LOGGING mytime = vget_lastauth(vpw, domain); @@ -315,9 +349,8 @@ strncpy( face, get_lang_code("057"), 29); strncpy( size, get_lang_code("058"), 29); - printf("Show Users\n"); - printf("\n", - bgcolor, fgcolor, fgcolor, fgcolor); + printf("Show Users\n"); + printf("\n"); printf("\n", face, size, fgcolor); @@ -330,10 +363,12 @@ } else { printf("User\n", face, fgcolor); +/* #ifdef CLEAR_PASS printf("Password\n", face, fgcolor); #endif +*/ printf("Forward\n", face, fgcolor); printf("Vacation\n", @@ -343,7 +378,7 @@ printf("Domain Administrator\n", face, fgcolor); printf("Last Logon
\n", - face, fgcolor); + face, fgcolor); } count = 0; while(vpw != NULL && count < 128000 ){ @@ -353,12 +388,12 @@ printf("", vpw->pw_name, domain); printf("%s
\n", vpw->pw_name); - +/* #ifdef CLEAR_PASS printf("%s\n", face, fgcolor, vpw->pw_clear_passwd); #endif - +*/ printf("", face, fgcolor ); snprintf(workdir, 156, "%s/.qmail", vpw->pw_dir); fs=fopen(workdir,"r"); @@ -471,7 +506,6 @@ *tmpstr = 0; while (*tmpstr!='/') --tmpstr; ++tmpstr; - printf("alias: %s
\n", face, fgcolor, tmpstr); } @@ -529,14 +563,23 @@ static char domain[156]; char *gecos; char *passwd; - char *shell; - char *udisable; - char *uweb; + char *uquota; + + char *upop; char *uimap; + char *udialup; char *upassc; + char *uweb; char *ubounce; char *urelay; + char *uspam; + char *usmtp; + char *umaildrop; + char *udeletespam; char *uqadmin; + + char *formattedquota = NULL; + char qconvert[11]; int ret; int GidFlag = 0; struct vqpasswd *vpw; @@ -549,15 +592,23 @@ eaddr = cgi_is_var("eaddr"); gecos = cgi_is_var("fname"); passwd = cgi_is_var("cpass"); - shell = cgi_is_var("quota"); - udisable = cgi_is_var("udisable"); - uweb = cgi_is_var("uweb"); + uquota = cgi_is_var("quota"); + + upop = cgi_is_var("upop"); uimap = cgi_is_var("uimap"); + udialup = cgi_is_var("udialup"); upassc = cgi_is_var("upassc"); + uweb = cgi_is_var("uweb"); ubounce = cgi_is_var("ubounce"); + urelay = cgi_is_var("urelay"); + uspam = cgi_is_var("uspam"); + usmtp = cgi_is_var("usmtp"); + umaildrop = cgi_is_var("umaildrop"); + udeletespam = cgi_is_var("udeletespam"); uqadmin = cgi_is_var("uqadmin"); + if ( eaddr==NULL || strlen(eaddr)==0 ) { global_warning("Add Email Account: Failed: no email address given"); t_open("html/add_user.html", 1); @@ -591,24 +642,48 @@ vpw = vauth_getpw(user, domain); - if (udisable!=NULL) GidFlag |= NO_POP; - if (uweb!=NULL) GidFlag |= NO_WEBMAIL; + // UPDATE USER QUOTA ("maildirsize" file will be created at the end, only if the update is successfull. + formattedquota="NOQUOTA"; // START WITH DEAFULT "NOQUOTA" + if (uquota!=NULL) { // QUOTA FIELD IS SET + if (strlen(uquota)==0 || strcmp(uquota, "NOQUOTA")==0 || strcmp(uquota, "BADQUOTA")==0) { // RESET QUOTA + formattedquota = "NOQUOTA"; + } else { // QUOTA IS REQUESTED, CONVERT bytes->Mbytes + if (quota_to_bytes(qconvert, uquota)) { + global_warning("Invalid quota string."); + t_open("html/mod_user.html", 1); + } else { + formattedquota = format_maildirquota(qconvert); + } + } + } + vpw->pw_shell = formattedquota; + + // USER PERMISSIONS + if (upop!=NULL) GidFlag |= NO_POP; if (uimap!=NULL) GidFlag |= NO_IMAP; - if (ubounce!=NULL) GidFlag |= BOUNCE_MAIL; + if (udialup!=NULL) GidFlag |= NO_DIALUP; if (upassc!=NULL) GidFlag |= NO_PASSWD_CHNG; + if (uweb!=NULL) GidFlag |= NO_WEBMAIL; + if (ubounce!=NULL) GidFlag |= BOUNCE_MAIL; if (urelay!=NULL) GidFlag |= NO_RELAY; + if (usmtp!=NULL) GidFlag |= NO_SMTP; + if (uspam!=NULL) GidFlag |= NO_SPAMASSASSIN; + if (udeletespam!=NULL) GidFlag |= DELETE_SPAM; + if (umaildrop!=NULL) GidFlag |= NO_MAILDROP; if (uqadmin!=NULL) GidFlag |= QA_ADMIN; vpw->pw_gid = GidFlag; - if ( shell != NULL && strlen(shell) > 0 ) vpw->pw_shell = shell; ret = vauth_setpw(vpw, domain); if ( ret != VA_SUCCESS ) { snprintf(WarningBuff, MAX_WARNING_BUFF, "Add Account: Failure: %s set options", eaddr); global_warning(WarningBuff); + } else { + update_maildirsize(domain, vpw->pw_dir, formattedquota); // CREATE "maildirsize" file in user's Maildir. } - post_email_info( eaddr, vpw, domain); + + post_email_info(eaddr, vpw, domain); t_open(T_MAIN, 1);