From ca122199e6ffe303a89352b0ef52b505bfc745c4 Mon Sep 17 00:00:00 2001 From: wpaul Date: Thu, 30 Mar 1995 04:14:46 +0000 Subject: Fix up the way _PATH_YP is used to put together the pathname to the NIS maps (get rid of extraneous slash a la /var/yp//domainname). Have ypxfr log all output to /var/yp/ypxfr.log if stdin is not a tty. This should allow logging to be done when ypxfr is called from inside ypserv in response to a yppush request. Update man page to reflect the change (and fix a typo). --- gnu/libexec/ypxfr/ypxfr.8 | 16 +++++++++------- gnu/libexec/ypxfr/ypxfr.c | 27 +++++++++++++++++++++------ 2 files changed, 30 insertions(+), 13 deletions(-) diff --git a/gnu/libexec/ypxfr/ypxfr.8 b/gnu/libexec/ypxfr/ypxfr.8 index a62ad4b..1e7ae62 100644 --- a/gnu/libexec/ypxfr/ypxfr.8 +++ b/gnu/libexec/ypxfr/ypxfr.8 @@ -29,7 +29,7 @@ .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" -.\" $Id$ +.\" $Id: ypxfr.8,v 1.1 1995/02/06 22:15:21 wpaul Exp $ .\" .Dd February 5, 1995 .Dt YPXFR 8 @@ -114,9 +114,16 @@ when is run on the NIS master server, however it is good practice on large networks where possible outages could cause NIS servers to fall out of sync with each other. +.Pp +When +.Nm ypxfr +is invoked without a controlling terminal, e.g. from inside +.Xr ypserv 8 , +it logs all its output to +.Pa /var/yp/ypxfr.log . .Sh OPTIONS The following options are supported by -.Nm yppxfr : +.Nm ypxfr : .Bl -tag -width flag .It Fl f Force a map transfer. Normally, @@ -182,11 +189,6 @@ The NIS maps for a particular NIS domain. .Xr ypserv 8 , .Xr ypxfr 8 , .Xr yp 8 -.Sh BUGS -.Nm ypxfr -should log its output to /var/yp/ypxfr.log when it is started without -a controlling terminal. Hopefully this feature will be added in the -next release of FreeBSD. .Sh LICENSE This program is covered by the GNU Public License version 2. .Sh AUTHOR diff --git a/gnu/libexec/ypxfr/ypxfr.c b/gnu/libexec/ypxfr/ypxfr.c index d8589e9..655ec63 100644 --- a/gnu/libexec/ypxfr/ypxfr.c +++ b/gnu/libexec/ypxfr/ypxfr.c @@ -18,7 +18,7 @@ Modified for use with FreeBSD 2.x by Bill Paul (wpaul@ctr.columbia.edu) - $Id: ypxfr.c,v 1.1 1995/01/31 09:28:47 wpaul Exp $ + $Id: ypxfr.c,v 1.2 1995/02/06 23:35:49 wpaul Exp $ */ #include @@ -29,6 +29,7 @@ #include #include #include +#include #include #include #include @@ -36,7 +37,7 @@ DB *db; #ifndef _PATH_YP -#define _PATH_YP "/var/yp" +#define _PATH_YP "/var/yp/" #endif #define PERM_SECURE (S_IRUSR|S_IWUSR) @@ -190,7 +191,7 @@ ypxfr(char *mapName) { if (!Force) { DBT inKey, inVal; - sprintf(dbName, "%s/%s/%s", _PATH_YP, TargetDomain, mapName); + sprintf(dbName, "%s%s/%s", _PATH_YP, TargetDomain, mapName); if ((db = dbopen(dbName,O_RDWR|O_EXCL, PERM_SECURE, DB_HASH, &openinfo)) == NULL) { perror("dbopen"); @@ -215,7 +216,7 @@ ypxfr(char *mapName) { if (localOrderNum>=masterOrderNum) return YPXFR_AGE; } - sprintf(dbName, "%s/%s/%s~", _PATH_YP, TargetDomain, mapName); + sprintf(dbName, "%s%s/%s~", _PATH_YP, TargetDomain, mapName); if ((db = dbopen(dbName,O_RDWR|O_EXCL|O_CREAT, PERM_SECURE, DB_HASH, &openinfo)) == NULL) { fprintf(stderr, "%s: Cannot open\n", dbName); @@ -240,8 +241,8 @@ ypxfr(char *mapName) { y=__yp_all(SourceDomain, mapName, &callback); (void)(db->close)(db); - sprintf(dbName, "%s/%s/%s~", _PATH_YP, TargetDomain, mapName); - sprintf(dbName2, "%s/%s/%s", _PATH_YP, TargetDomain, mapName); + sprintf(dbName, "%s%s/%s~", _PATH_YP, TargetDomain, mapName); + sprintf(dbName2, "%s%s/%s", _PATH_YP, TargetDomain, mapName); unlink(dbName2); rename(dbName, dbName2); @@ -266,6 +267,20 @@ char *progname; void main (int argc, char **argv) { + if (!isatty(0)) { + int fd; + char logfile[MAXPATHLEN]; + sprintf (logfile, "%sypxfr.log", _PATH_YP); + if ((fd = open("/var/yp/ypxfr.log", + O_CREAT|O_WRONLY|O_APPEND, 0644))) { + close(0); + dup(fd); + close(1); + dup(fd); + close(2); + dup(fd); + } + } if (argc < 2) { -- cgit v1.1