Virgin import of AMD (am-utils) v6.0b1
This commit is contained in:
parent
663d5a0f32
commit
c6e3533e1e
@ -30,6 +30,8 @@ files.
|
||||
January 27, 1998: support pid files in the amd.conf file. Provide base name
|
||||
for hesiod zone files. Always use /etc/amd.conf if exists.
|
||||
|
||||
August 8, 1998: add detection support for NFS V.3 for NetBSD 1.3F.
|
||||
|
||||
* Hannes Reinecke <hare@MathI.UNI-Heidelberg.DE>
|
||||
|
||||
Back in 1995, contributed code for linux. A new parser for file system
|
||||
@ -89,6 +91,9 @@ options. Minor type wrt "ro" option in libamu/mount_fs.c. Added more
|
||||
fillers of mnttab options, for acdirmax, acdirmin, acregmax, acregmin, noac,
|
||||
grpid, nosuid, and actimo.
|
||||
|
||||
August 15, 1998: fix memory leak in processing of /defaults, and avoid
|
||||
accessing uninitialized memory in osf1.
|
||||
|
||||
* Roman Hodek <Roman.Hodek@informatik.uni-erlangen.de>
|
||||
|
||||
July 23, 1997: Got lots of patches from the Debian Linux folks, who fixed
|
||||
@ -171,6 +176,9 @@ January 12, 1998: minor bug in output of amd -H.
|
||||
January 13, 1998: use case insensitive comparisons for variables that need
|
||||
it (such as all hostname related ones, and more).
|
||||
|
||||
July 20, 1998: don't leak memory in the private version of yp_all (when
|
||||
vendor yp_all is bad).
|
||||
|
||||
* Fred Korz <korz@smarts.com>
|
||||
|
||||
January 30, 1998: minor typo fixed to tftp example in am-utils.texi.
|
||||
@ -186,5 +194,12 @@ allow startup script to redirect it. Set a temporary secure umask(0022)
|
||||
before writing log file and restore it afterwards.
|
||||
|
||||
* Matthew Crosby <mcrosby@ms.com>
|
||||
|
||||
April 20, 1998: allow arbitrary number of interfaces in wire listing.
|
||||
|
||||
* David O'Brien <obrien@NUXI.com>
|
||||
|
||||
September 4, 1998: bug fix to avoid overrunning hostname buffer, and minor
|
||||
amd.conf man page typo correction.
|
||||
|
||||
|
||||
|
@ -71,3 +71,19 @@ that nfsd is running. Normally these are not required.
|
||||
[4B] "Stefan Vogel" <vogel@physik.unizh.ch> reports that if your amq
|
||||
executable dump core unexpectedly, then it may be a bug in gcc 2.7.x.
|
||||
Upgrade to gcc 2.8.x or use IBM's xlC compiler.
|
||||
|
||||
|
||||
(5) *-linux-gnu (RedHat Linux 5.1)
|
||||
|
||||
There's a UDP file descriptor leak in libnsl in RedHat Linux 5.1. This
|
||||
library part of glibc2. Am-utils currently declares redhat 5.1 systems as
|
||||
having a "broken yp_all" and using an internal, slower, leak-free version.
|
||||
The leak is known to the glibc maintainers and a fix from them is due soon,
|
||||
but it is not yet in the glibc-2.0.7-19 RPM.
|
||||
|
||||
|
||||
(6) rs6000-ibm-aix4.1.x
|
||||
|
||||
A bug in libc results in an amq binary that doesn't work; amq -v dumps core
|
||||
in xdr_string. There is no known fix (source code or vendor patch) at this
|
||||
time. (Please let amd-dev know if you know of a fix.)
|
||||
|
@ -1,3 +1,158 @@
|
||||
1998-10-20 Erez Zadok <ezk@shekel.mcl.cs.columbia.edu>
|
||||
|
||||
*******************************************************************
|
||||
*** Released am-utils-6.0b1 ***
|
||||
*******************************************************************
|
||||
|
||||
1998-10-18 Erez Zadok <ezk@shekel.mcl.cs.columbia.edu>
|
||||
|
||||
* mk-amd-map/mk-amd-map.c (main): use perror not strerror.
|
||||
(main): set return type to int if no ndbm maps.
|
||||
|
||||
* include/am_defs.h: avoid conflicts with <sys/mount.h> in 2.1
|
||||
kernels.
|
||||
|
||||
1998-10-18 Erez Zadok <ezk@london.mcl.cs.columbia.edu>
|
||||
|
||||
* A.i386-unknown-netbsd1.3.2/amu_nfs_prot.h: trim down and cleanup
|
||||
for netbsd 1.3.2.
|
||||
|
||||
1998-10-17 Erez Zadok <ezk@shekel.mcl.cs.columbia.edu>
|
||||
|
||||
* aux/configure.in: check for yp_all in libnsl, b/c redhat 5.1
|
||||
systems put NIS functions there.
|
||||
|
||||
* mk-amd-map/mk-amd-map.c: patch from "David O'Brien"
|
||||
<obrien@NUXI.com> merged in. Use POSIX -1 return code from
|
||||
getopt(), not EOF. Use .db extentions for systems that use it,
|
||||
instead of .{pag,dir}.
|
||||
|
||||
1998-10-15 Erez Zadok <ezk@shekel.mcl.cs.columbia.edu>
|
||||
|
||||
* wire-test/wire-test.c, hlfsd/hlfsd.c, fixmount/fixmount.c,
|
||||
amd/amd.c (main): avoid overrunning hostname buffer. Bug fix from
|
||||
"David O'Brien" <obrien@NUXI.com>.
|
||||
|
||||
* scripts/amd.conf.5: minor typo reported by "David O'Brien"
|
||||
<obrien@NUXI.com> in .TH section of man page.
|
||||
|
||||
* amd/info_nis.c (am_yp_all): don't leak key-val entries. Patch
|
||||
from Thomas Richter <richter@chemie.fu-berlin.de>.
|
||||
|
||||
1998-10-12 Erez Zadok <ezk@shekel.mcl.cs.columbia.edu>
|
||||
|
||||
* doc/am-utils.texi (Program Filesystem): minor typo fixed as per
|
||||
Andreas Stolcke <stolcke@speech.sri.com>.
|
||||
|
||||
* minor new ports: sparc64-unknown-linux-gnu, i386-pc-solaris2.7,
|
||||
and sparc-sun-solaris2.7.
|
||||
|
||||
* conf/mount/mount_freebsd3.c (mount_freebsd3): freebsd 3.0 is now
|
||||
a 4.4lite kernel, and somethings were removed, such as
|
||||
INITMOUNTNAMES.
|
||||
|
||||
* amd/ops_autofs.c (autofs_lookuppn): don't leak memory while
|
||||
processing /defaults. Free temporary opts. Patch from
|
||||
dsr@mail.lns.cornell.edu (Daniel S. Riley)
|
||||
|
||||
* amd/amfs_auto.c (amfs_auto_lookuppn): don't leak memory while
|
||||
processing /defaults. Free temporary opts. Patch from
|
||||
dsr@mail.lns.cornell.edu (Daniel S. Riley)
|
||||
|
||||
* conf/mtab/mtab_osf.c (read_mtab): patch from
|
||||
dsr@mail.lns.cornell.edu (Daniel S. Riley) not to access
|
||||
uninitialized memory on Digital Unix.
|
||||
|
||||
1998-10-09 Erez Zadok <ezk@shekel.mcl.cs.columbia.edu>
|
||||
|
||||
* aux/macros/{check_mtype_type,check_mtype_printf_type}.m4: most
|
||||
systems now use "char *" as their mount type.
|
||||
|
||||
1998-10-08 Erez Zadok <ezk@shekel.mcl.cs.columbia.edu>
|
||||
|
||||
* amd/conf.c (gopt_map_type, ropt_map_type): check if map type
|
||||
exists.
|
||||
|
||||
* amd/mapc.c (mapc_type_exists): function to test if a map of
|
||||
certain type exists.
|
||||
|
||||
1998-10-08 Erez Zadok <ezk@horatio.mcl.cs.columbia.edu>
|
||||
|
||||
* aux/macros/{mount_headers,try_compile_anyfs,try_compile_nfs}.m4,
|
||||
include/am_defs.h: Avoid a conflict in definitions of ntohl/htonl
|
||||
in RH-5.1 sparc64 between <netinet/in.h> and
|
||||
<linux/byteorder/generic.h> (2.1 kernels).
|
||||
|
||||
1998-09-28 Erez Zadok <ezk@shekel.mcl.cs.columbia.edu>
|
||||
|
||||
* aux/macros/func_bad_yp_all.m4 (ac_cv_func_yp_all_clean): RedHat
|
||||
5.1 systems with glibc glibc-2.0.7-19 or below leak a UDP socket
|
||||
from yp_all().
|
||||
|
||||
1998-09-25 Erez Zadok <ezk@shekel.mcl.cs.columbia.edu>
|
||||
|
||||
* conf/mount/mount_linux.c (parse_opts): check for pcfs support
|
||||
only if autoconfigured.
|
||||
|
||||
1998-09-18 Erez Zadok <ezk@shekel.mcl.cs.columbia.edu>
|
||||
|
||||
* Makefile.am (EXTRA_DIST): distribute README.yk2 file.
|
||||
|
||||
* README.y2k: explain y2k compliance status of am-utils.
|
||||
|
||||
1998-09-16 Erez Zadok <ezk@iguana.mcl.cs.columbia.edu>
|
||||
|
||||
* amd/amfs_host.c (fetch_fhandle, amfs_host_fmount,
|
||||
amfs_host_umounted): clnt_sperrno() may return a const.
|
||||
|
||||
Sat Aug 8 23:28:32 1998 Erez Zadok <ezk@shekel.mcl.cs.columbia.edu>
|
||||
|
||||
* aux/configure.in: check for <nfs/nfsmount.h>, as per Christos
|
||||
Zoulas. Turned on checking for mount options: async, synchronous,
|
||||
deadthresh, leasterm, nqnfs, and readahead.
|
||||
|
||||
* amd/info_nis.c: patch from christos@zoulas.com (Christos Zoulas)
|
||||
to include prototype definition for nis_isup().
|
||||
|
||||
Sun Jul 19 18:50:10 1998 Erez Zadok <ezk@shekel.mcl.cs.columbia.edu>
|
||||
|
||||
* hlfsd/stubs.c (getcreds): force sscanf arg to u_long.
|
||||
|
||||
Tue Jul 14 20:34:25 1998 Erez Zadok <ezk@shekel.mcl.cs.columbia.edu>
|
||||
|
||||
* released snapshot am-utils-6.0a17s1
|
||||
|
||||
Wed Jul 8 21:49:15 1998 Erez Zadok <ezk@shekel.mcl.cs.columbia.edu>
|
||||
|
||||
* aux/macros/host_macros.m4: all x86 hosts should have $arch be
|
||||
i386, not i[456]86.
|
||||
|
||||
Tue Jul 7 18:55:09 1998 Erez Zadok <ezk@shekel.mcl.cs.columbia.edu>
|
||||
|
||||
* aux/macros/{mount_headers,try_compile_anyfs,try_compile_nfs}.m4,
|
||||
include/am_defs.h: include <linux/posix_types.h> before
|
||||
<linux/fs.h> because on redhat 5.1, there is a bug (misuse) of
|
||||
headers in <socketbits.h> (it defines _LINUX_TYPES_H instead of
|
||||
__KERNEL_STRICT_NAMES).
|
||||
|
||||
* aux/configure.in: check for <linux/posix_types.h> because it is
|
||||
need for RedHat 5.1.
|
||||
|
||||
Wed Jun 17 00:05:33 1998 Erez Zadok <ezk@shekel.mcl.cs.columbia.edu>
|
||||
|
||||
* scripts/Makefile.am (EXTRA_DIST): have fixrmtab generated from
|
||||
.in as well, so it doesn't get removed by make clean.
|
||||
|
||||
Tue Jun 16 22:00:15 1998 Erez Zadok <ezk@shekel.mcl.cs.columbia.edu>
|
||||
|
||||
* aux/macros/{check_fs_mntent.m4, check_mnttab_type.m4,
|
||||
check_mount_type.m4}: redhat 5.1 puts some modules in
|
||||
/lib/modules/preferred/.
|
||||
|
||||
Wed May 13 16:33:57 1998 Erez Zadok <ezk@shekel.mcl.cs.columbia.edu>
|
||||
|
||||
* amd/ops_autofs.c (mount_autofs): cast pid to long.
|
||||
|
||||
Thu Apr 23 00:22:17 1998 Erez Zadok <ezk@shekel.mcl.cs.columbia.edu>
|
||||
|
||||
*******************************************************************
|
||||
|
@ -21,6 +21,7 @@ i386-pc-bsdi3.0 ezk ezk ezk
|
||||
i386-pc-bsdi3.1 ezk ezk ezk
|
||||
i386-pc-solaris2.5.1 ezk ezk ezk ezk
|
||||
i386-pc-solaris2.6 ezk ezk ezk ezk
|
||||
i386-pc-solaris2.7 ezk ezk ezk ezk
|
||||
i386-unknown-freebsd2.1.0 ezk ezk ezk
|
||||
i386-unknown-freebsd2.2.1 ezk ezk ezk ezk
|
||||
i386-unknown-freebsd3.0 ezk ezk ezk ezk
|
||||
@ -30,8 +31,10 @@ i386-unknown-netbsd1.3.1 ezk ezk ezk ezk
|
||||
i386-unknown-openbsd2.1 ezk ezk ezk ezk
|
||||
i486-ncr-sysv4.3.03 ezk ezk
|
||||
i486-pc-linux-gnulibc1 ezk ezk ezk ezk
|
||||
i586-pc-linux-gnu ezk ezk ezk ezk
|
||||
i586-pc-linux-gnulibc1 ezk ezk ezk ezk
|
||||
i686-pc-linux-gnu ezk ezk ezk ezk
|
||||
i686-pc-linux-gnulibc ezk ezk ezk ezk
|
||||
m68k-hp-hpux9.00 ezk[4] ezk[4] nrh/ezk
|
||||
m68k-next-nextstep3 ezk ezk ezk
|
||||
m68k-sun-sunos4.1.1 ezk ezk
|
||||
@ -50,6 +53,7 @@ sparc-sun-solaris2.4 ezk ezk ezk ezk
|
||||
sparc-sun-solaris2.5 ezk ezk ezk ezk
|
||||
sparc-sun-solaris2.5.1 ezk ezk ezk ezk
|
||||
sparc-sun-solaris2.6 ezk ezk[2] ezk ezk
|
||||
sparc-sun-solaris2.7 ezk ezk[2] ezk ezk
|
||||
sparc-sun-sunos4.1.1 ezk ezk ezk ezk
|
||||
sparc-sun-sunos4.1.3 ezk ezk ezk ezk
|
||||
sparc-sun-sunos4.1.3C ezk ezk ezk ezk
|
||||
@ -57,6 +61,7 @@ sparc-sun-sunos4.1.3_U1 ezk ezk ezk ezk
|
||||
sparc-sun-sunos4.1.4 ezk ezk ezk ezk
|
||||
sparc-unknown-linux-gnulibc1 ezk ezk ezk ezk
|
||||
sparc-unknown-netbsd1.2E ezk ezk ezk
|
||||
sparc64-unknown-linux-gnu ezk ezk ezk ezk
|
||||
|
||||
EMAIL ID LEGEND:
|
||||
|
||||
|
@ -11,12 +11,15 @@ U.S.A:
|
||||
New York (Primary Site):
|
||||
ftp://shekel.mcl.cs.columbia.edu/pub/am-utils
|
||||
Maintainer: ezk@cs.columbia.edu
|
||||
Maryland:
|
||||
Minnesota:
|
||||
ftp://ftp.cs.umn.edu/pub/AMD
|
||||
Maintainer: dokas@cs.umn.edu
|
||||
Virginia (Newport News):
|
||||
* ftp://www.ferginc.com/pub/unix/am-utils
|
||||
ftp://www.ferginc.com/pub/unix/am-utils
|
||||
Maintainer: Branson.Matheson@FergInc.com
|
||||
Ohio (Kent State University):
|
||||
ftp://info.mcs.kent.edu/pub/am-utils
|
||||
Maintainer: root@mcs.kent.edu
|
||||
|
||||
Europe:
|
||||
Germany:
|
||||
@ -27,7 +30,7 @@ Europe:
|
||||
Maintainer: archive@ftp.sunet.se
|
||||
Sweden:
|
||||
ftp://ftp.matematik.su.se/pub/mirrors/shekel.mcl.cs.columbia.edu/pub/am-utils
|
||||
Maintainer: lifj@matematik.su.se
|
||||
Maintainer: leifj@matematik.su.se
|
||||
UK:
|
||||
ftp://sunsite.org.uk/packages/am-utils
|
||||
Maintainer: lmjm@icparc.ic.ac.uk
|
||||
|
@ -1,3 +1,19 @@
|
||||
*** Notes specific to am-utils version 6.0b1:
|
||||
|
||||
- updated or minor new ports:
|
||||
- *-pc-linux-gnu (glibc2 systems such as RedHat 5.1)
|
||||
- sparc-sun-solaris2.7
|
||||
- i386-pc-solaris2.7
|
||||
- i386-unknown-freebsd3.0 (official release, post 4.4lite port)
|
||||
- sparc64-unknown-linux-gnu (RH 5.1 on Sun Sparc Ultra)
|
||||
|
||||
- bugs fixed:
|
||||
- major memory leak in processing of /defaults
|
||||
- core dump if map_type given in amd.conf doesn't exist
|
||||
- memory leak in replacement yp_all
|
||||
- don't access uninitialized memory in DU 4.0
|
||||
- other smaller bugs, see ChangeLog
|
||||
|
||||
*** Notes specific to am-utils version 6.0a16:
|
||||
|
||||
- new ports:
|
||||
|
18
contrib/amd/README.y2k
Normal file
18
contrib/amd/README.y2k
Normal file
@ -0,0 +1,18 @@
|
||||
# -*- text -*-
|
||||
AM-UTILS YEAR-2000 COMPLIANCE
|
||||
|
||||
Most likely am-utils is y2k compliant.
|
||||
|
||||
I do not know for sure because I have not certified am-utils myself, nor do
|
||||
I have the time for it. I do not think that amd will be affected by y2k at
|
||||
all, because it does not do anything with dates other than print the date on
|
||||
the log file, in whatever format is provided by your os/libc --- especially
|
||||
the ctime(3) call.
|
||||
|
||||
However, on Friday, September 18th 1998, Matthew Crosby <mcrosby@ms.com>
|
||||
reported that they evaluated 6.0a16 and found it to be compliant.
|
||||
|
||||
Erez Zadok.
|
||||
Maintainer, am-utils package and AMD-DEV list.
|
||||
Email: amd-dev-owner@majordomo.cs.columbia.edu
|
||||
WWW: http://www.cs.columbia.edu/~ezk/am-utils/
|
@ -57,8 +57,8 @@ struct amu_global_options gopt; /* where global options are stored */
|
||||
char pid_fsname[16 + MAXHOSTNAMELEN]; /* "kiska.southseas.nz:(pid%d)" */
|
||||
char *progname; /* "amd" */
|
||||
char *hostdomain = "unknown.domain";
|
||||
char hostname[MAXHOSTNAMELEN] = "localhost"; /* Hostname */
|
||||
char hostd[2 * MAXHOSTNAMELEN]; /* Host+domain */
|
||||
char hostname[MAXHOSTNAMELEN + 1] = "localhost"; /* Hostname */
|
||||
char hostd[2 * MAXHOSTNAMELEN + 1]; /* Host+domain */
|
||||
char *endian = ARCH_ENDIAN; /* Big or Little endian */
|
||||
char *cpu = HOST_CPU; /* CPU type */
|
||||
char *PrimNetName; /* name of primary network */
|
||||
@ -349,6 +349,7 @@ main(int argc, char *argv[])
|
||||
plog(XLOG_FATAL, "gethostname: %m");
|
||||
going_down(1);
|
||||
}
|
||||
hostname[sizeof(hostname) - 1] = '\0';
|
||||
|
||||
/*
|
||||
* Check it makes sense
|
||||
|
@ -1128,6 +1128,7 @@ amfs_auto_lookuppn(am_node *mp, char *fname, int *error_return, int op)
|
||||
memset((char *) &ap, 0, sizeof(am_opts));
|
||||
pt = ops_match(&ap, *sp, "", mp->am_path, "/defaults",
|
||||
mp->am_parent->am_mnt->mf_info);
|
||||
free_opts(&ap); /* don't leak */
|
||||
if (pt == &amfs_error_ops) {
|
||||
plog(XLOG_MAP, "failed to match defaults for \"%s\"", *sp);
|
||||
} else {
|
||||
|
@ -256,7 +256,7 @@ fetch_fhandle(CLIENT * client, char *dir, am_nfs_handle_t *fhp, u_long nfs_versi
|
||||
(SVC_IN_ARG_TYPE) &fhp->v2,
|
||||
tv);
|
||||
if (clnt_stat != RPC_SUCCESS) {
|
||||
char *msg = clnt_sperrno(clnt_stat);
|
||||
const char *msg = clnt_sperrno(clnt_stat);
|
||||
plog(XLOG_ERROR, "mountd rpc failed: %s", msg);
|
||||
return EIO;
|
||||
}
|
||||
@ -392,7 +392,7 @@ amfs_host_fmount(mntfs *mf)
|
||||
(SVC_IN_ARG_TYPE) & exlist,
|
||||
tv2);
|
||||
if (clnt_stat != RPC_SUCCESS) {
|
||||
char *msg = clnt_sperrno(clnt_stat);
|
||||
const char *msg = clnt_sperrno(clnt_stat);
|
||||
plog(XLOG_ERROR, "host_fmount rpc failed: %s", msg);
|
||||
/* clnt_perror(client, "rpc"); */
|
||||
error = EIO;
|
||||
@ -673,7 +673,7 @@ amfs_host_umounted(am_node *mp)
|
||||
tv);
|
||||
if (clnt_stat != RPC_SUCCESS && clnt_stat != RPC_SYSTEMERROR) {
|
||||
/* RPC_SYSTEMERROR seems to be returned for no good reason ... */
|
||||
char *msg = clnt_sperrno(clnt_stat);
|
||||
const char *msg = clnt_sperrno(clnt_stat);
|
||||
plog(XLOG_ERROR, "unmount all from %s rpc failed: %s", host, msg, clnt_stat);
|
||||
goto out;
|
||||
}
|
||||
|
@ -534,6 +534,11 @@ gopt_map_options(const char *val)
|
||||
static int
|
||||
gopt_map_type(const char *val)
|
||||
{
|
||||
/* check if map type exist */
|
||||
if (!mapc_type_exists(val)) {
|
||||
fprintf(stderr, "conf: no such map type \"%s\"\n", val);
|
||||
return 1;
|
||||
}
|
||||
gopt.map_type = strdup((char *)val);
|
||||
return 0;
|
||||
}
|
||||
@ -846,6 +851,11 @@ ropt_map_options(const char *val, cf_map_t *cfm)
|
||||
static int
|
||||
ropt_map_type(const char *val, cf_map_t *cfm)
|
||||
{
|
||||
/* check if map type exist */
|
||||
if (!mapc_type_exists(val)) {
|
||||
fprintf(stderr, "conf: no such map type \"%s\"\n", val);
|
||||
return 1;
|
||||
}
|
||||
cfm->cfm_type = strdup((char *)val);
|
||||
return 0;
|
||||
}
|
||||
|
@ -52,6 +52,7 @@
|
||||
#include <am_defs.h>
|
||||
#include <amd.h>
|
||||
|
||||
|
||||
/*
|
||||
* NIS+ servers in NIS compat mode don't have yp_order()
|
||||
*/
|
||||
@ -61,6 +62,7 @@ static int has_yp_order = FALSE;
|
||||
int nis_reload(mnt_map *m, char *map, void (*fn) (mnt_map *, char *, char *));
|
||||
int nis_search(mnt_map *m, char *map, char *key, char **val, time_t *tp);
|
||||
int nis_init(mnt_map *m, char *map, time_t *tp);
|
||||
int nis_isup(mnt_map *m, char *map);
|
||||
int nis_mtime(mnt_map *m, char *map, time_t *tp);
|
||||
|
||||
/* typedefs */
|
||||
@ -120,27 +122,20 @@ callback(int status, char *key, int kl, char *val, int vl, char *data)
|
||||
|
||||
if (status == YP_TRUE) {
|
||||
|
||||
/*
|
||||
* Add to list of maps
|
||||
*/
|
||||
/* add to list of maps */
|
||||
char *kp = strnsave(key, kl);
|
||||
char *vp = strnsave(val, vl);
|
||||
|
||||
(*ncdp->ncd_fn) (ncdp->ncd_m, kp, vp);
|
||||
|
||||
/*
|
||||
* We want more ...
|
||||
*/
|
||||
/* we want more ... */
|
||||
return FALSE;
|
||||
|
||||
} else {
|
||||
|
||||
/*
|
||||
* NOMORE means end of map - otherwise log error
|
||||
*/
|
||||
/* NOMORE means end of map - otherwise log error */
|
||||
if (status != YP_NOMORE) {
|
||||
/*
|
||||
* Check what went wrong
|
||||
*/
|
||||
/* check what went wrong */
|
||||
int e = ypprot_err(status);
|
||||
|
||||
#ifdef DEBUG
|
||||
@ -378,16 +373,25 @@ am_yp_all(char *indomain, char *inmap, struct ypall_callback *incallback)
|
||||
incallback->data);
|
||||
if (j != FALSE) /* terminate loop */
|
||||
break;
|
||||
|
||||
/*
|
||||
* We have to manually free all char ** arguments to yp_first/yp_next
|
||||
* outval must be freed *before* calling yp_next again, outkey can be
|
||||
* freed as outkey_old *after* the call (this saves one call to
|
||||
* strnsave).
|
||||
*/
|
||||
XFREE(outval);
|
||||
outkey_old = outkey;
|
||||
outkeylen_old = outkeylen;
|
||||
i = yp_next(indomain,
|
||||
inmap,
|
||||
outkey_old,
|
||||
outkeylen_old,
|
||||
&outkey,
|
||||
&outkey,
|
||||
&outkeylen,
|
||||
&outval,
|
||||
&outvallen);
|
||||
XFREE(outkey_old);
|
||||
} while (!i);
|
||||
#ifdef DEBUG
|
||||
if (i) {
|
||||
|
@ -349,11 +349,33 @@ mapc_showtypes(char *buf)
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* Check if a map of a certain type exists.
|
||||
* Return 1 (true) if exists, 0 (false) if not.
|
||||
*/
|
||||
int
|
||||
mapc_type_exists(const char *type)
|
||||
{
|
||||
map_type *mt;
|
||||
|
||||
if (!type)
|
||||
return 0;
|
||||
for (mt = maptypes;
|
||||
mt < maptypes + sizeof(maptypes) / sizeof(maptypes[0]);
|
||||
mt++) {
|
||||
if (STREQ(type, mt->name))
|
||||
return 1;
|
||||
}
|
||||
return 0; /* not found anywhere */
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* Add key and val to the map m.
|
||||
* key and val are assumed to be safe copies
|
||||
*/
|
||||
void mapc_add_kv(mnt_map *m, char *key, char *val)
|
||||
void
|
||||
mapc_add_kv(mnt_map *m, char *key, char *val)
|
||||
{
|
||||
kv **h;
|
||||
kv *n;
|
||||
|
@ -284,7 +284,7 @@ mount_autofs(char *dir, char *opts)
|
||||
/*
|
||||
* Make a ``hostname'' string for the kernel
|
||||
*/
|
||||
sprintf(fs_hostname, "pid%ld@%s:%s", foreground ? mypid : getppid(),
|
||||
sprintf(fs_hostname, "pid%ld@%s:%s", (long) (foreground ? mypid : getppid()),
|
||||
hostname, dir);
|
||||
|
||||
/*
|
||||
@ -1131,6 +1131,7 @@ autofs_lookuppn(am_node *mp, char *fname, int *error_return, int op)
|
||||
memset((char *) &ap, 0, sizeof(am_opts));
|
||||
pt = ops_match(&ap, *sp, "", mp->am_path, "/defaults",
|
||||
mp->am_parent->am_mnt->mf_info);
|
||||
free_opts(&ap); /* don't leak */
|
||||
if (pt == &amfs_error_ops) {
|
||||
plog(XLOG_MAP, "failed to match defaults for \"%s\"", *sp);
|
||||
} else {
|
||||
|
@ -141,15 +141,16 @@ typedef writeargs nfswriteargs;
|
||||
|
||||
/*
|
||||
*
|
||||
* FreeBSD 3.0 has NFS V3, but you need to regenrate the rpcsc header files
|
||||
* as follows:
|
||||
* FreeBSD 3.0 snapshots have NFS V3, but you need to regenrate the rpcsc
|
||||
* header files as follows:
|
||||
* cd /usr/local/rpcsvc
|
||||
* rpcgen -DWANT_NFS3 mount.x
|
||||
* rpcgen -DWANT_NFS3 nfs_prot.x
|
||||
* But that's not expected of everyone, plus there are additional things
|
||||
* needed so I define everything that's neede for NFS V3 here.
|
||||
* needed so I define everything that's needed for NFS V3 here.
|
||||
* The problem is fixed in FreeBSD-3.0-19981006-BETA hence this code is off.
|
||||
*/
|
||||
#ifdef NFSMNT_NFSV3
|
||||
#ifdef NFSMNT_NFSV3_off
|
||||
|
||||
# define MOUNT_NFS3 MOUNT_NFS
|
||||
# define MNTOPT_NFS3 "nfs"
|
||||
|
@ -745,6 +745,10 @@ features.
|
||||
@c {Config} {Compile} {Amd} {NFS V.3} {Shlib} {Hlfsd}
|
||||
@tab yes @tab yes @tab yes @tab yes @tab yes @tab yes
|
||||
|
||||
@item @b{i386-pc-solaris2.7}
|
||||
@c {Config} {Compile} {Amd} {NFS V.3} {Shlib} {Hlfsd}
|
||||
@tab yes @tab yes @tab yes @tab yes @tab yes @tab yes
|
||||
|
||||
@item @b{i386-unknown-freebsd2.1.0}
|
||||
@c {Config} {Compile} {Amd} {NFS V.3} {Shlib} {Hlfsd}
|
||||
@tab yes @tab yes @tab yes @tab n/a @tab @tab
|
||||
@ -781,7 +785,11 @@ features.
|
||||
@c {Config} {Compile} {Amd} {NFS V.3} {Shlib} {Hlfsd}
|
||||
@tab yes @tab yes @tab yes @tab n/a @tab yes @tab
|
||||
|
||||
@item @b{i586-pc-linux-gnulinc1}
|
||||
@item @b{i586-pc-linux-gnu}
|
||||
@c {Config} {Compile} {Amd} {NFS V.3} {Shlib} {Hlfsd}
|
||||
@tab yes @tab yes @tab yes @tab n/a @tab yes @tab
|
||||
|
||||
@item @b{i586-pc-linux-gnulibc1}
|
||||
@c {Config} {Compile} {Amd} {NFS V.3} {Shlib} {Hlfsd}
|
||||
@tab yes @tab yes @tab yes @tab n/a @tab yes @tab
|
||||
|
||||
@ -789,6 +797,10 @@ features.
|
||||
@c {Config} {Compile} {Amd} {NFS V.3} {Shlib} {Hlfsd}
|
||||
@tab yes @tab yes @tab yes @tab n/a @tab yes @tab
|
||||
|
||||
@item @b{i686-pc-linux-gnulibc1}
|
||||
@c {Config} {Compile} {Amd} {NFS V.3} {Shlib} {Hlfsd}
|
||||
@tab yes @tab yes @tab yes @tab n/a @tab yes @tab
|
||||
|
||||
@item @b{m68k-hp-hpux9.00}
|
||||
@c {Config} {Compile} {Amd} {NFS V.3} {Shlib} {Hlfsd}
|
||||
@tab yes @tab yes @tab yes @tab n/a @tab @tab
|
||||
@ -865,6 +877,10 @@ features.
|
||||
@c {Config} {Compile} {Amd} {NFS V.3} {Shlib} {Hlfsd}
|
||||
@tab yes @tab yes @tab yes @tab yes @tab yes @tab yes
|
||||
|
||||
@item @b{sparc-sun-solaris2.7}
|
||||
@c {Config} {Compile} {Amd} {NFS V.3} {Shlib} {Hlfsd}
|
||||
@tab yes @tab yes @tab yes @tab yes @tab yes @tab yes
|
||||
|
||||
@item @b{sparc-sun-sunos4.1.1}
|
||||
@c {Config} {Compile} {Amd} {NFS V.3} {Shlib} {Hlfsd}
|
||||
@tab yes @tab yes @tab yes @tab n/a @tab yes @tab
|
||||
@ -893,6 +909,10 @@ features.
|
||||
@c {Config} {Compile} {Amd} {NFS V.3} {Shlib} {Hlfsd}
|
||||
@tab yes @tab yes @tab yes @tab @tab @tab
|
||||
|
||||
@item @b{sparc64-unknown-linux-gnu}
|
||||
@c {Config} {Compile} {Amd} {NFS V.3} {Shlib} {Hlfsd}
|
||||
@tab yes @tab yes @tab yes @tab n/a @tab yes @tab
|
||||
|
||||
@end multitable
|
||||
|
||||
See the @file{INSTALL} in the distribution for more specific details on
|
||||
@ -3396,8 +3416,9 @@ if that is required in an argument. There is no way to escape or change
|
||||
the quote character.
|
||||
|
||||
To run the program @samp{rvdmount} with a host name and filesystem as
|
||||
arguments would be specified by @samp{mount:="/etc/rvdmount rvdmount
|
||||
fserver $@{path@}"}.
|
||||
arguments would be specified by
|
||||
@samp{fs:=$@{autodir@}$@{path@};mount:="/etc/rvdmount rvdmount fserver
|
||||
$@{fs@}"}.
|
||||
|
||||
The first element in the array is taken as the pathname of the program
|
||||
to execute. The other members of the array form the argument vector to
|
||||
|
@ -1,3 +1,3 @@
|
||||
@set UPDATED 22 April 1998
|
||||
@set EDITION 6.0a16
|
||||
@set VERSION 6.0a16
|
||||
@set UPDATED 19 October 1998
|
||||
@set EDITION 6.0b1
|
||||
@set VERSION 6.0b1
|
||||
|
@ -1,3 +1,3 @@
|
||||
@set UPDATED 22 April 1998
|
||||
@set EDITION 6.0a16
|
||||
@set VERSION 6.0a16
|
||||
@set UPDATED 19 October 1998
|
||||
@set EDITION 6.0b1
|
||||
@set VERSION 6.0b1
|
||||
|
@ -68,7 +68,7 @@ extern int fixmount_check_mount(char *host, struct in_addr hostaddr, char *path)
|
||||
|
||||
static char dir_path[NFS_MAXPATHLEN];
|
||||
static char localhost[] = "localhost";
|
||||
static char thishost[MAXHOSTNAMELEN] = "";
|
||||
static char thishost[MAXHOSTNAMELEN + 1] = "";
|
||||
static exports mntexports;
|
||||
static int quiet = 0;
|
||||
static int type = 0;
|
||||
@ -354,6 +354,7 @@ main(int argc, char *argv[])
|
||||
perror("gethostname");
|
||||
exit(1);
|
||||
}
|
||||
thishost[sizeof(thishost) - 1] = '\0';
|
||||
|
||||
/*
|
||||
* We need the hostname as it appears to the other side's
|
||||
|
@ -85,7 +85,7 @@ char *logfile = DEFAULT_LOGFILE;
|
||||
char *passwdfile = NULL; /* alternate passwd file to use */
|
||||
char *progname;
|
||||
char *slinkname = 0;
|
||||
char hostname[MAXHOSTNAMELEN] = "localhost";
|
||||
char hostname[MAXHOSTNAMELEN + 1] = "localhost";
|
||||
int cache_interval = DEFAULT_CACHE_INTERVAL;
|
||||
int foreground = 1; /* This is the top-level server */
|
||||
gid_t hlfs_gid = (gid_t) INVALIDID;
|
||||
@ -308,7 +308,8 @@ main(int argc, char *argv[])
|
||||
}
|
||||
|
||||
/* get hostname for logging and open log before we reset umask */
|
||||
gethostname(hostname, MAXHOSTNAMELEN);
|
||||
gethostname(hostname, sizeof(hostname));
|
||||
hostname[sizeof(hostname) - 1] = '\0';
|
||||
if ((dot = strchr(hostname, '.')) != NULL)
|
||||
*dot = '\0';
|
||||
if (logfile)
|
||||
|
@ -279,7 +279,7 @@ getcreds(struct svc_req *rp, uid_t *u, gid_t *g)
|
||||
case AUTH_DES:
|
||||
adp = (struct authdes_cred *) rp->rq_clntcred;
|
||||
*g = INVALIDID; /* some unknown group id */
|
||||
if (sscanf(adp->adc_fullname.name, "unix.%lu@", u) == 1)
|
||||
if (sscanf(adp->adc_fullname.name, "unix.%lu@", (u_long *) u) == 1)
|
||||
break;
|
||||
/* fall through */
|
||||
#endif /* HAVE_RPC_AUTH_DES_H */
|
||||
|
@ -487,6 +487,18 @@ extern int errno;
|
||||
/* conflicts with <statfsbuf.h> */
|
||||
# define _SYS_STATFS_H
|
||||
# endif /* HAVE_SOCKETBITS_H */
|
||||
# ifdef HAVE_LINUX_POSIX_TYPES_H
|
||||
# include <linux/posix_types.h>
|
||||
# endif /* HAVE_LINUX_POSIX_TYPES_H */
|
||||
# ifndef _LINUX_BYTEORDER_GENERIC_H
|
||||
# define _LINUX_BYTEORDER_GENERIC_H
|
||||
# endif /* _LINUX_BYTEORDER_GENERIC_H */
|
||||
/* conflicts with <sys/mount.h> in 2.1 kernels */
|
||||
# ifdef _SYS_MOUNT_H
|
||||
# ifdef BLOCK_SIZE
|
||||
# undef BLOCK_SIZE
|
||||
# endif /* BLOCK_SIZE */
|
||||
# endif /* _SYS_MOUNT_H */
|
||||
# include <linux/fs.h>
|
||||
#endif /* HAVE_LINUX_FS_H */
|
||||
|
||||
|
@ -565,6 +565,7 @@ extern int make_nfs_auth(void);
|
||||
extern int make_rpc_packet(char *, int, u_long, struct rpc_msg *, voidp, XDRPROC_T_TYPE, AUTH *);
|
||||
extern int mapc_keyiter(mnt_map *, void(*)(char *, voidp), voidp);
|
||||
extern int mapc_search(mnt_map *, char *, char **);
|
||||
extern int mapc_type_exists(const char *type);
|
||||
extern int mkdirs(char *, int);
|
||||
extern int mount_auto_node(char *, voidp);
|
||||
extern int mount_automounter(int);
|
||||
|
147
contrib/amd/libamu/clnt_sperrno.c
Normal file
147
contrib/amd/libamu/clnt_sperrno.c
Normal file
@ -0,0 +1,147 @@
|
||||
/*
|
||||
* Copyright (c) 1997-1998 Erez Zadok
|
||||
* Copyright (c) 1990 Jan-Simon Pendry
|
||||
* Copyright (c) 1990 Imperial College of Science, Technology & Medicine
|
||||
* Copyright (c) 1990 The Regents of the University of California.
|
||||
* All rights reserved.
|
||||
*
|
||||
* This code is derived from software contributed to Berkeley by
|
||||
* Jan-Simon Pendry at Imperial College, London.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
* 1. Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
* 3. All advertising materials mentioning features or use of this software
|
||||
* must display the following acknowledgement:
|
||||
* This product includes software developed by the University of
|
||||
* California, Berkeley and its contributors.
|
||||
* 4. Neither the name of the University nor the names of its contributors
|
||||
* may be used to endorse or promote products derived from this software
|
||||
* without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
|
||||
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||
* ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
|
||||
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||||
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
||||
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
||||
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
||||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||
* SUCH DAMAGE.
|
||||
*
|
||||
* %W% (Berkeley) %G%
|
||||
*
|
||||
* $Id: clnt_sperrno.c,v 5.2.2.1 1992/02/09 15:08:40 jsp beta $
|
||||
*
|
||||
*/
|
||||
|
||||
/*
|
||||
* Early RPC seems to be missing these..
|
||||
* Extracted from the RPC 3.9 sources as indicated
|
||||
*/
|
||||
|
||||
/* @(#)clnt_perror.c 1.1 87/11/04 3.9 RPCSRC */
|
||||
/*
|
||||
* Sun RPC is a product of Sun Microsystems, Inc. and is provided for
|
||||
* unrestricted use provided that this legend is included on all tape
|
||||
* media and as a part of the software program in whole or part. Users
|
||||
* may copy or modify Sun RPC without charge, but are not authorized
|
||||
* to license or distribute it to anyone else except as part of a product or
|
||||
* program developed by the user.
|
||||
*
|
||||
* SUN RPC IS PROVIDED AS IS WITH NO WARRANTIES OF ANY KIND INCLUDING THE
|
||||
* WARRANTIES OF DESIGN, MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
|
||||
* PURPOSE, OR ARISING FROM A COURSE OF DEALING, USAGE OR TRADE PRACTICE.
|
||||
*
|
||||
* Sun RPC is provided with no support and without any obligation on the
|
||||
* part of Sun Microsystems, Inc. to assist in its use, correction,
|
||||
* modification or enhancement.
|
||||
*
|
||||
* SUN MICROSYSTEMS, INC. SHALL HAVE NO LIABILITY WITH RESPECT TO THE
|
||||
* INFRINGEMENT OF COPYRIGHTS, TRADE SECRETS OR ANY PATENTS BY SUN RPC
|
||||
* OR ANY PART THEREOF.
|
||||
*
|
||||
* In no event will Sun Microsystems, Inc. be liable for any lost revenue
|
||||
* or profits or other special, indirect and consequential damages, even if
|
||||
* Sun has been advised of the possibility of such damages.
|
||||
*
|
||||
* Sun Microsystems, Inc.
|
||||
* 2550 Garcia Avenue
|
||||
* Mountain View, California 94043
|
||||
*/
|
||||
|
||||
#ifdef HAVE_CONFIG_H
|
||||
# include <config.h>
|
||||
#endif /* HAVE_CONFIG_H */
|
||||
#include <am_defs.h>
|
||||
#include <amu.h>
|
||||
|
||||
|
||||
struct rpc_errtab {
|
||||
enum clnt_stat status;
|
||||
char *message;
|
||||
};
|
||||
|
||||
static struct rpc_errtab rpc_errlist[] =
|
||||
{
|
||||
{RPC_SUCCESS,
|
||||
"RPC: Success"},
|
||||
{RPC_CANTENCODEARGS,
|
||||
"RPC: Can't encode arguments"},
|
||||
{RPC_CANTDECODERES,
|
||||
"RPC: Can't decode result"},
|
||||
{RPC_CANTSEND,
|
||||
"RPC: Unable to send"},
|
||||
{RPC_CANTRECV,
|
||||
"RPC: Unable to receive"},
|
||||
{RPC_TIMEDOUT,
|
||||
"RPC: Timed out"},
|
||||
{RPC_VERSMISMATCH,
|
||||
"RPC: Incompatible versions of RPC"},
|
||||
{RPC_AUTHERROR,
|
||||
"RPC: Authentication error"},
|
||||
{RPC_PROGUNAVAIL,
|
||||
"RPC: Program unavailable"},
|
||||
{RPC_PROGVERSMISMATCH,
|
||||
"RPC: Program/version mismatch"},
|
||||
{RPC_PROCUNAVAIL,
|
||||
"RPC: Procedure unavailable"},
|
||||
{RPC_CANTDECODEARGS,
|
||||
"RPC: Server can't decode arguments"},
|
||||
{RPC_SYSTEMERROR,
|
||||
"RPC: Remote system error"},
|
||||
{RPC_UNKNOWNHOST,
|
||||
"RPC: Unknown host"},
|
||||
/* { RPC_UNKNOWNPROTO,
|
||||
* "RPC: Unknown protocol" }, */
|
||||
{RPC_PMAPFAILURE,
|
||||
"RPC: Port mapper failure"},
|
||||
{RPC_PROGNOTREGISTERED,
|
||||
"RPC: Program not registered"},
|
||||
{RPC_FAILED,
|
||||
"RPC: Failed (unspecified error)"}
|
||||
};
|
||||
|
||||
|
||||
/*
|
||||
* This interface for use by clntrpc
|
||||
*/
|
||||
char *
|
||||
clnt_sperrno(enum clnt_stat stat)
|
||||
{
|
||||
int i;
|
||||
|
||||
for (i = 0; i < sizeof(rpc_errlist) / sizeof(struct rpc_errtab); i++) {
|
||||
if (rpc_errlist[i].status == stat) {
|
||||
return (rpc_errlist[i].message);
|
||||
}
|
||||
}
|
||||
return ("RPC: (unknown error code)");
|
||||
}
|
@ -797,6 +797,7 @@ amu_release_controlling_tty(void)
|
||||
#endif /* TIOCNOTTY */
|
||||
|
||||
#ifdef HAVE_SETSID
|
||||
/* XXX: one day maybe use vhangup(2) */
|
||||
if (setsid() < 0) {
|
||||
plog(XLOG_WARNING, "Could not release controlling tty using setsid(): %m");
|
||||
} else {
|
||||
|
@ -57,6 +57,11 @@ int orig_umask, foreground, debug_flags;
|
||||
pid_t mypid;
|
||||
serv_state amd_state;
|
||||
|
||||
/* (libdb version 2) uses .db extensions but an old dbm API */
|
||||
/* check for libgdbm to distinguish it from linux systems */
|
||||
#if defined(DBM_SUFFIX) && !defined(HAVE_LIBGDBM)
|
||||
# define HAVE_DB_SUFFIX
|
||||
#endif /* not defined(DBM_SUFFIX) && !defined(HAVE_LIBGDBM) */
|
||||
|
||||
#ifdef HAVE_MAP_NDBM
|
||||
|
||||
@ -119,7 +124,7 @@ read_file(FILE *fp, char *map, voidp db)
|
||||
int line_no = 0;
|
||||
int errs = 0;
|
||||
|
||||
while (read_line(key_val, sizeof(key_val), fp)) {
|
||||
while (read_line(key_val, 2048, fp)) {
|
||||
char *kp;
|
||||
char *cp;
|
||||
char *hash;
|
||||
@ -213,14 +218,18 @@ remove_file(char *f)
|
||||
int
|
||||
main(int argc, char *argv[])
|
||||
{
|
||||
FILE *mapf;
|
||||
int mapfd = -1;
|
||||
char *map;
|
||||
int rc = 0;
|
||||
DBM *mapd = NULL;
|
||||
FILE *mapf; /* the input file to read from */
|
||||
int error;
|
||||
char *mapsrc;
|
||||
DBM *db = NULL;
|
||||
static char maptmp[] = "dbmXXXXXX";
|
||||
#ifdef HAVE_DB_SUFFIX
|
||||
char maptdb[16];
|
||||
char *map_name_db = (char *) NULL;
|
||||
#else /* not HAVE_DB_SUFFIX */
|
||||
char maptpag[16], maptdir[16];
|
||||
char *mappag = (char *) NULL, *mapdir = (char *) NULL;
|
||||
char *map_name_pag = (char *) NULL, *map_name_dir = (char *) NULL;
|
||||
#endif /* not HAVE_DB_SUFFIX */
|
||||
int len;
|
||||
char *sl;
|
||||
int printit = 0;
|
||||
@ -229,7 +238,7 @@ main(int argc, char *argv[])
|
||||
extern int optind;
|
||||
|
||||
/* test options */
|
||||
while ((ch = getopt(argc, argv, "p")) != EOF)
|
||||
while ((ch = getopt(argc, argv, "p")) != -1)
|
||||
switch (ch) {
|
||||
case 'p':
|
||||
printit = 1;
|
||||
@ -243,110 +252,134 @@ main(int argc, char *argv[])
|
||||
fputs("Usage: mk-amd-map [-p] file-map\n", stderr);
|
||||
exit(1);
|
||||
}
|
||||
map = argv[optind];
|
||||
mapsrc = argv[optind];
|
||||
|
||||
/* test if can get to the map directory */
|
||||
sl = strrchr(map, '/');
|
||||
sl = strrchr(mapsrc, '/');
|
||||
if (sl) {
|
||||
*sl = '\0';
|
||||
if (chdir(map) < 0) {
|
||||
if (chdir(mapsrc) < 0) {
|
||||
fputs("Can't chdir to ", stderr);
|
||||
perror(map);
|
||||
perror(mapsrc);
|
||||
exit(1);
|
||||
}
|
||||
map = sl + 1;
|
||||
mapsrc = sl + 1;
|
||||
}
|
||||
|
||||
/* open source file */
|
||||
mapf = fopen(mapsrc, "r");
|
||||
if (!mapf) {
|
||||
fprintf(stderr, "cannot open source file ");
|
||||
perror(mapsrc);
|
||||
exit(1);
|
||||
}
|
||||
|
||||
#ifndef DEBUG
|
||||
signal(SIGINT, SIG_IGN);
|
||||
#endif /* DEBUG */
|
||||
|
||||
if (!printit) {
|
||||
len = strlen(map);
|
||||
mappag = (char *) malloc(len + 5);
|
||||
mapdir = (char *) malloc(len + 5);
|
||||
if (!mappag || !mapdir) {
|
||||
len = strlen(mapsrc);
|
||||
#ifdef HAVE_DB_SUFFIX
|
||||
map_name_db = (char *) malloc(len + 4);
|
||||
error = (map_name_db == NULL);
|
||||
#else /* not HAVE_DB_SUFFIX */
|
||||
map_name_pag = (char *) malloc(len + 5);
|
||||
map_name_dir = (char *) malloc(len + 5);
|
||||
error = (map_name_pag == NULL || map_name_dir == NULL);
|
||||
#endif /* not HAVE_DB_SUFFIX */
|
||||
if (error) {
|
||||
perror("mk-amd-map: malloc");
|
||||
exit(1);
|
||||
}
|
||||
#ifdef HAVE_MKSTEMP
|
||||
mapfd = mkstemp(maptmp);
|
||||
#else /* not HAVE_MKSTEMP */
|
||||
map = mktemp(maptmp);
|
||||
if (!maptmp) {
|
||||
fprintf(stderr, "cannot create temporary file\n");
|
||||
|
||||
mktemp(maptmp);
|
||||
|
||||
/* remove existing temps (if any) */
|
||||
#ifdef HAVE_DB_SUFFIX
|
||||
sprintf(maptdb, "%s.db", maptmp);
|
||||
if (remove_file(maptdb) < 0) {
|
||||
fprintf(stderr, "Can't remove existing temporary file; ");
|
||||
perror(maptdb);
|
||||
exit(1);
|
||||
}
|
||||
mapfd = open(map, O_RDONLY);
|
||||
#endif /* not HAVE_MKSTEMP */
|
||||
|
||||
/* open DBM files */
|
||||
#else /* not HAVE_DB_SUFFIX */
|
||||
sprintf(maptpag, "%s.pag", maptmp);
|
||||
sprintf(maptdir, "%s.dir", maptmp);
|
||||
if (remove_file(maptpag) < 0 || remove_file(maptdir) < 0) {
|
||||
fprintf(stderr, "Can't remove existing temporary files; %s and", maptpag);
|
||||
fprintf(stderr, "Can't remove existing temporary files; %s and ", maptpag);
|
||||
perror(maptdir);
|
||||
exit(1);
|
||||
}
|
||||
}
|
||||
/* open and check if map file was opened OK */
|
||||
mapf = fdopen(mapfd, "r");
|
||||
if (mapf && !printit)
|
||||
mapd = dbm_open(maptmp, O_RDWR|O_CREAT, 0444);
|
||||
else
|
||||
mapd = 0;
|
||||
#endif /* not HAVE_DB_SUFFIX */
|
||||
|
||||
#ifndef DEBUG
|
||||
/* ignore ^C if debuggung is on (but why?) */
|
||||
signal(SIGINT, SIG_IGN);
|
||||
#endif /* not DEBUG */
|
||||
|
||||
if (mapd || printit) {
|
||||
int error = read_file(mapf, map, mapd);
|
||||
(void) close(mapfd);
|
||||
(void) fclose(mapf);
|
||||
if (printit) {
|
||||
if (error) {
|
||||
fprintf(stderr, "Error creating ndbm map for %s\n", map);
|
||||
rc = 1;
|
||||
}
|
||||
} else {
|
||||
|
||||
if (error) {
|
||||
fprintf(stderr, "Error reading source file %s\n", map);
|
||||
rc = 1;
|
||||
} else {
|
||||
sprintf(mappag, "%s.pag", map);
|
||||
sprintf(mapdir, "%s.dir", map);
|
||||
if (rename(maptpag, mappag) < 0) {
|
||||
fprintf(stderr, "Couldn't rename %s to ", maptpag);
|
||||
perror(mappag);
|
||||
/* Throw away the temporary map */
|
||||
unlink(maptpag);
|
||||
unlink(maptdir);
|
||||
rc = 1;
|
||||
|
||||
} else if (rename(maptdir, mapdir) < 0) {
|
||||
fprintf(stderr, "Couldn't rename %s to ", maptdir);
|
||||
perror(mapdir);
|
||||
/* Put the .pag file back */
|
||||
rename(mappag, maptpag);
|
||||
/* Throw away remaining part of original map */
|
||||
unlink(mapdir);
|
||||
fprintf(stderr,
|
||||
"WARNING: existing map \"%s.{dir,pag}\" destroyed\n",
|
||||
map);
|
||||
rc = 1;
|
||||
}
|
||||
}
|
||||
db = dbm_open(maptmp, O_RDWR|O_CREAT, 0444);
|
||||
if (!db) {
|
||||
fprintf(stderr, "cannot initialize temporary database: %s", maptmp);
|
||||
exit(1);
|
||||
}
|
||||
|
||||
} else {
|
||||
fprintf(stderr, "Can't open \"%s.{dir,pag}\" for ", map);
|
||||
perror("writing");
|
||||
rc = 1;
|
||||
}
|
||||
exit(rc);
|
||||
|
||||
/* print db to stdout or to temp database */
|
||||
error = read_file(mapf, mapsrc, db);
|
||||
fclose(mapf);
|
||||
if (error) {
|
||||
if (printit)
|
||||
fprintf(stderr, "Error reading source file %s\n", mapsrc);
|
||||
else
|
||||
fprintf(stderr, "Error creating database map for %s\n", mapsrc);
|
||||
exit(1);
|
||||
}
|
||||
|
||||
if (printit)
|
||||
exit(0); /* nothing more to do */
|
||||
|
||||
/* if gets here, we wrote to a database */
|
||||
|
||||
dbm_close(db);
|
||||
/* all went well */
|
||||
|
||||
#ifdef HAVE_DB_SUFFIX
|
||||
sprintf(map_name_db, "%s.db", mapsrc);
|
||||
if (rename(maptdb, map_name_db) < 0) {
|
||||
fprintf(stderr, "Couldn't rename %s to ", maptdb);
|
||||
perror(map_name_db);
|
||||
/* Throw away the temporary map */
|
||||
unlink(maptdb);
|
||||
exit(1);
|
||||
}
|
||||
#else /* not HAVE_DB_SUFFIX */
|
||||
sprintf(map_name_pag, "%s.pag", mapsrc);
|
||||
sprintf(map_name_dir, "%s.dir", mapsrc);
|
||||
if (rename(maptpag, map_name_pag) < 0) {
|
||||
fprintf(stderr, "Couldn't rename %s to ", maptpag);
|
||||
perror(map_name_pag);
|
||||
/* Throw away the temporary map */
|
||||
unlink(maptpag);
|
||||
unlink(maptdir);
|
||||
exit(1);
|
||||
}
|
||||
if (rename(maptdir, map_name_dir) < 0) {
|
||||
fprintf(stderr, "Couldn't rename %s to ", maptdir);
|
||||
perror(map_name_dir);
|
||||
/* remove the (presumably bad) .pag file */
|
||||
unlink(map_name_pag);
|
||||
/* throw away remaining part of original map */
|
||||
unlink(map_name_dir);
|
||||
/* throw away the temporary map */
|
||||
unlink(maptdir);
|
||||
fprintf(stderr, "WARNING: existing map \"%s.{dir,pag}\" destroyed\n",
|
||||
mapsrc);
|
||||
exit(1);
|
||||
}
|
||||
#endif /* not HAVE_DB_SUFFIX */
|
||||
|
||||
exit(0);
|
||||
}
|
||||
|
||||
#else /* not HAVE_MAP_NDBM */
|
||||
|
||||
int
|
||||
main()
|
||||
{
|
||||
fputs("mk-amd-map: This system does not support hashed database files\n", stderr);
|
||||
|
@ -34,7 +34,7 @@ EXTRA_DIST = \
|
||||
amd2sun.in \
|
||||
ctl-amd.in \
|
||||
ctl-hlfsd.in \
|
||||
fixrmtab \
|
||||
fixrmtab.in \
|
||||
fix-amd-map.in \
|
||||
lostaltmail.in \
|
||||
wait4amd.in \
|
||||
|
@ -1,4 +1,4 @@
|
||||
# Makefile.in generated automatically by automake 1.3.1 from Makefile.am
|
||||
# Makefile.in generated automatically by automake 1.3.2 from Makefile.am
|
||||
|
||||
# Copyright (C) 1994, 1995, 1996, 1997, 1998 Free Software Foundation, Inc.
|
||||
# This Makefile.in is free software; the Free Software Foundation
|
||||
@ -106,7 +106,7 @@ EXTRA_DIST = \
|
||||
amd2sun.in \
|
||||
ctl-amd.in \
|
||||
ctl-hlfsd.in \
|
||||
fixrmtab \
|
||||
fixrmtab.in \
|
||||
fix-amd-map.in \
|
||||
lostaltmail.in \
|
||||
wait4amd.in \
|
||||
@ -122,7 +122,7 @@ CLEANFILES = $(sbin_SCRIPTS) $(bin_SCRIPTS)
|
||||
mkinstalldirs = $(SHELL) $(top_srcdir)/aux/mkinstalldirs
|
||||
CONFIG_HEADER = ../config.h
|
||||
CONFIG_CLEAN_FILES = am-eject amd2ldif amd2sun ctl-amd ctl-hlfsd expn \
|
||||
fix-amd-map lostaltmail wait4amd wait4amd2die
|
||||
fixrmtab fix-amd-map lostaltmail wait4amd wait4amd2die
|
||||
SCRIPTS = $(bin_SCRIPTS) $(sbin_SCRIPTS)
|
||||
|
||||
man1dir = $(mandir)/man1
|
||||
@ -133,7 +133,7 @@ NROFF = nroff
|
||||
DATA = $(sysconf_DATA)
|
||||
|
||||
DIST_COMMON = Makefile.am Makefile.in am-eject.in amd2ldif.in \
|
||||
amd2sun.in ctl-amd.in ctl-hlfsd.in expn.in fix-amd-map.in \
|
||||
amd2sun.in ctl-amd.in ctl-hlfsd.in expn.in fix-amd-map.in fixrmtab.in \
|
||||
lostaltmail.in wait4amd.in wait4amd2die.in
|
||||
|
||||
|
||||
@ -163,6 +163,8 @@ ctl-hlfsd: $(top_builddir)/config.status ctl-hlfsd.in
|
||||
cd $(top_builddir) && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= ./config.status
|
||||
expn: $(top_builddir)/config.status expn.in
|
||||
cd $(top_builddir) && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= ./config.status
|
||||
fixrmtab: $(top_builddir)/config.status fixrmtab.in
|
||||
cd $(top_builddir) && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= ./config.status
|
||||
fix-amd-map: $(top_builddir)/config.status fix-amd-map.in
|
||||
cd $(top_builddir) && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= ./config.status
|
||||
lostaltmail: $(top_builddir)/config.status lostaltmail.in
|
||||
|
@ -40,7 +40,7 @@
|
||||
.\"
|
||||
.\" $Id: amd.conf.5,v 5.2.2.1 1997/02/09 15:11:15 ezk beta $
|
||||
.\"
|
||||
.TH AMQ.CONF 8 "7 August 1997"
|
||||
.TH AMD.CONF 8 "7 August 1997"
|
||||
.SH NAME
|
||||
amd.conf \- amd configuration file
|
||||
.SH SYNOPSIS
|
||||
|
24
contrib/amd/scripts/fixrmtab.in
Executable file
24
contrib/amd/scripts/fixrmtab.in
Executable file
@ -0,0 +1,24 @@
|
||||
#!/bin/sh
|
||||
#
|
||||
# Invalidate /etc/rmtab entries for hosts named.
|
||||
# Restart mountd for changes to take effect.
|
||||
#
|
||||
# usage: fixrmtab host1 host2 ...
|
||||
#
|
||||
# Package: am-utils-6.0
|
||||
# Author: Andreas Stolcke <stolcke@icsi.berkeley.edu>
|
||||
|
||||
#set -x
|
||||
|
||||
RMTAB=/etc/rmtab
|
||||
TMP=/tmp/rmtab.$$
|
||||
|
||||
if [ ! -f /etc/rmtab ]; then
|
||||
exit 0
|
||||
fi
|
||||
|
||||
for host in $*
|
||||
do
|
||||
sed -e '/^'$host':/s/^./#/' $RMTAB > $TMP && cp $TMP $RMTAB
|
||||
done
|
||||
rm -f $TMP
|
@ -62,3 +62,9 @@ through.
|
||||
amd.conf file (right now amd.conf overrides cmd-line options).
|
||||
|
||||
- y2k compliance.
|
||||
|
||||
- an un/install script for binaries
|
||||
|
||||
- update README
|
||||
add am-utils URL and COPYRIGHT to all distributed scripts and
|
||||
sources and programs etc.
|
||||
|
@ -50,7 +50,7 @@
|
||||
#define STRMAX 100
|
||||
|
||||
/* dummy variables */
|
||||
char *progname, hostname[MAXHOSTNAMELEN];
|
||||
char *progname, hostname[MAXHOSTNAMELEN + 1];
|
||||
int orig_umask, foreground, debug_flags;
|
||||
pid_t mypid;
|
||||
serv_state amd_state;
|
||||
@ -69,10 +69,11 @@ main(int argc, char **argv)
|
||||
mypid = getpid();
|
||||
orig_umask = umask(0);
|
||||
|
||||
if (gethostname(hostname, MAXHOSTNAMELEN) < 0) {
|
||||
if (gethostname(hostname, sizeof(hostname)) < 0) {
|
||||
perror(argv[0]);
|
||||
exit(1);
|
||||
}
|
||||
hostname[sizeof(hostname) - 1] = '\0';
|
||||
|
||||
/* get list of networks */
|
||||
getwire(&networkName1, &networkNumber1);
|
||||
|
Loading…
x
Reference in New Issue
Block a user