[comp.sys.next] netinfo problem

scott@sage.uchicago.edu (Scott Deerwester) (05/31/89)

I've been trying to figure out, for the last two weeks or so, why I
can't send out any mail.  Turns out that niload, when I load a hosts
file, is taking the *last* entry for hosts that have duplicate
entries, meaning that it's finding a bogus entry for my mailhost.  In
other words, it overwrites any entries that it loads in with
subsequent entries for the same host.  Blech.  A kludge of a solution
is to reverse the lines of the hosts file before you feed it to
niload.  A better solution would depend on being able to muck with
niload.  Here's a cheap way to reverse the lines in the file.  Compile
the code included here into rcat, and then do the following:

# rev /etc/hosts > /tmp/blurfle
# rcat /tmp/blurfle > hosts.rev
# niload hosts . < hosts.rev
# rm blurfle

You could, of course, do the same thing with an awk script, but then
it would have to read the whole thing into memory at the same time.
Of course, niload takes a    v  e  r  y    l  o  n  g    t  i  m  e
to run, so any effiency gained here probably won't matter much...
Here's rcat.c:
----- cut here -----
#include <stdio.h>
#define BufSize 4096
/*
 * rcat
 *
 *	Reverses a text file.  Can be used in conjunction with rev to
 *	reverse the lines in a file (the first shall be last...).
 *
 * Copyright 1989, Scott Deerwester.  This code may be freely used,
 * hacked, used for kitty litter... provide that this notice
 * accompanies all copies (except for copies used for kitty litter :-)
 */

char
	buf[BufSize],
	rbuf[BufSize];

main (int argc, char *argv[])
{
	register i;
	FILE *fp;

	if (argc == 1)
		reverse (stdin);
	else for (i = 1; i < argc; i++)
	{
		if ((fp = fopen (argv[i], "r")) == NULL)
		{
			fprintf (stderr, "Can't open %s\n", argv[i]);
			continue;
		}

		reverse (fp);
		fclose (fp);
	}

	exit (0);
}

reverse (FILE *fp)
{
	register j;
	long fsize;

	fseek (fp, 0L, 2);
	fsize = ftell (fp);

	for (j = fsize / BufSize; j >= 0; j--)
	{
		register n, k;
		
		fseek (fp, (long) j * BufSize, 0);

		if ((n = fread (buf, 1, BufSize, fp)) <= 0)
		{
			fprintf (stderr, "Read error at block %d\n", j);
			break;
		}
		
/*
 *	The last line in the file is a newline.  Don't print it.
 */
		if (n < BufSize)
			n--;

		for (k = 0; k < n; k++)
		{
			rbuf[n - k - 1] = buf[k];
		}
		fwrite (rbuf, n, 1, stdout);
	}
/*
 *	We *do*, on the other hand, want to end the first line with a
 *	newline.  Tack one on.
 */
	putchar ('\n');
}
-------
How might I avoid going through all of this if I can connect to a name
server?  I've been hesitant to mess with it, not really understanding
the innards of NetInfo.
-------
Scott Deerwester		| Internet: scott@tira.uchicago.edu
C* {for,of,in} Information S*	| Phone:    312-702-6948
University of Chicago		|

Scott Deerwester		| Internet: scott@tira.uchicago.edu
C* {for,of,in} Information S*	| Phone:    312-702-6948
University of Chicago		|

davidp@skat.usc.edu (David Peterson) (08/01/90)

Hello,
	Does anyone have any idea why a NeXT running as a NetInfo parent
server for the past 7 months would suddenly crash then come back up
asking for a NetInfo parent server? (The crash wasn't sudden, it does
that now and then) Watching in the rom monitor shows when it starts
portmap it gets the problem (It pauses for a few seconds after
printing out portmap then says it can't find parent NetInfo server;
type c to continue without network).
	The only thing that I can think of thats changed is that we
started using a GatorBox to mount the NFS exports on Macs. The exports
file was changed, and also the tftp configuration was changed in
inetd.conf. Commented out the line pointing to /private/tftpboot and
uncommented the "normal" tftp line.
	I can't think of anything else of consequence that has changed
other than adding a few more users.

	Any help/suggestions would be appreciated.

Thanks,
-dave.
davidp@skat.usc.edu

rwb@vi.ri.cmu.edu (Bob Berger) (03/01/91)

I recently added some machines running 2.0 to my net. The parent netinfo
domain is still on a 1.0 machine. 

The 2.0 machines keep getting an error on the console that says
	loginwindow: netinfo problem - No such directory

Although the 2.0 machines can read the parent domain, new items added
to the parent domain don't show up until the client 2.0 machine is rebooted.

What's going on here? It might help if I knew what directory the error
message was referring to; it's rather uninformative the way it is.

rwb@vi.ri.cmu.edu

lacsap@plethora.media.mit.edu (Pascal Chesnais) (03/01/91)

In article <12163@pt.cs.cmu.edu> rwb@vi.ri.cmu.edu (Bob Berger) writes:
> The 2.0 machines keep getting an error on the console that says
> 	loginwindow: netinfo problem - No such directory

The netinfo problem is because the /keyboard directory is missing.  
It's benign.

Pascal Chesnais, Research Specialist, Electronic Publishing Group
Media Laboratory, E15-351, 20 Ames Street, Cambridge, Ma, 02139 (617) 253-0311
email: lacsap@plethora.media.mit.edu (NeXT)

eps@toaster.SFSU.EDU (Eric P. Scott) (03/02/91)

In article <5401@media-lab.MEDIA.MIT.EDU> lacsap@plethora.media.mit.edu writes:
>The netinfo problem is because the /keyboard directory is missing.  
>It's benign.

But annoying.

	niutil -create . /keyboard

					-=EPS=-