Index: arpwatch/Makefile.in diff -u arpwatch/Makefile.in:1.1.1.1 arpwatch/Makefile.in:1.1.1.1.30.1 --- arpwatch/Makefile.in:1.1.1.1 Tue Apr 17 13:31:36 2001 +++ arpwatch/Makefile.in Thu Aug 12 15:10:44 2004 @@ -65,7 +65,7 @@ @rm -f $@ $(CC) $(CFLAGS) -c $(srcdir)/$*.c -CSRC = db.c dns.c ec.c file.c intoa.c machdep.c util.c report.c setsignal.c +CSRC = db.c dns.c ec.c file.c intoa.c machdep.c util.c report.c localhost.c setsignal.c WSRC = arpwatch.c SSRC = arpsnmp.c GENSRC = version.c @@ -77,7 +77,7 @@ OBJ = $(WSRC:.c=.o) $(SSRC:.c=.o) $(CSRC:.c=.o) $(GENSRC:.c=.o) @LIBOBJS@ WOBJ = $(WSRC:.c=.o) $(CSRC:.c=.o) $(GENSRC:.c=.o) @LIBOBJS@ SOBJ = $(SSRC:.c=.o) $(CSRC:.c=.o) $(GENSRC:.c=.o) @LIBOBJS@ -HDR = arpwatch.h db.h dns.h ec.h file.h machdep.h report.h setsignal.h +HDR = arpwatch.h db.h dns.h ec.h file.h machdep.h report.h localhost.h setsignal.h TAGHDR = \ /usr/include/net/if.h \ Index: arpwatch/localhost.c diff -u /dev/null arpwatch/localhost.c:1.1.2.1 --- /dev/null Sat Aug 14 03:19:35 2004 +++ arpwatch/localhost.c Fri Aug 13 01:51:30 2004 @@ -0,0 +1,70 @@ +/* A slightly more convenient wrapper for gethostname + + Copyright (C) 1996 Free Software Foundation, Inc. + + Written by Miles Bader + + This program is free software; you can redistribute it and/or + modify it under the terms of the GNU General Public License as + published by the Free Software Foundation; either version 2, or (at + your option) any later version. + + This program is distributed in the hope that it will be useful, but + WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ + +#ifdef HAVE_CONFIG_H +#include +#endif + +#include +#include +#include +#include +#include + +#include "localhost.h" +/* Return the name of the localhost. This is just a wrapper for gethostname, + which takes care of allocating a big enough buffer, and caches the result + after the first call (so the result should be copied before modification). + If something goes wrong, 0 is returned, and errno set. */ +char * +localhost (void) +{ + static char *buf = 0; + static size_t buf_len = 0; + int myerror = 0; + + if (! buf) { + do { + errno = 0; + if (buf) { + buf_len += buf_len; + buf = realloc (buf, buf_len); + } else { + buf_len = 128; /* Initial guess */ + buf = malloc (buf_len); + } + if (! buf) { + errno = ENOMEM; + return 0; + } + } while ( ( + (myerror = gethostname(buf, buf_len)) == 0 + && !memchr (buf, '\0', buf_len)) + || errno == ENAMETOOLONG + ); + + if (myerror) { + /* gethostname failed, abort. */ + free (buf); + buf = "(unknown host)"; + } + } + return buf; +} Index: arpwatch/localhost.h diff -u /dev/null arpwatch/localhost.h:1.1.2.1 --- /dev/null Sat Aug 14 03:19:35 2004 +++ arpwatch/localhost.h Fri Aug 13 01:51:30 2004 @@ -0,0 +1 @@ +char * localhost(void); Index: arpwatch/report.c diff -u arpwatch/report.c:1.1.1.1 arpwatch/report.c:1.1.1.1.30.2 --- arpwatch/report.c:1.1.1.1 Tue Apr 17 13:31:37 2001 +++ arpwatch/report.c Fri Aug 13 01:49:30 2004 @@ -67,6 +67,7 @@ #include "report.h" #include "setsignal.h" #include "util.h" +#include "localhost.h" #define PLURAL(n) ((n) == 1 || (n) == -1 ? "" : "s") @@ -300,7 +301,7 @@ syslog(LOG_ERR, "unlink(%s): %m", tempfile); } - (void)fprintf(f, "From: %s\n", watchee); + (void)fprintf(f, "From: arpwatch (Arpwatch %s)\n", localhost()); (void)fprintf(f, "To: %s\n", watcher); hn = gethname(a); if (!isdigit(*hn))