#include <string.h>
#include <exec/types.h>
#include <proto/exec.h>
#include "nl.h"

/*------------------------------------------------------------------------*/
// A "real" application should look it up in some config!

#define NODELISTDIR	"Nodelist:"
/// Accomodate max's taste for directories

/*-------------------------------------------------------------------------*/
extern void printf(char *,...);
extern void puts(char *);
extern int atol(char *);
extern void exit(int);

void main(int, char **);

/*------------------------------------------------------------------------*/
struct Library *NodelistBase;

/*-------------------------------------------------------------------------*/
void main(int argc, char **argv)
	{
	Extra xtra;
	Addr addr;
	char *pwd;

	if((argc != 3) && (argc != 2))
		{
		printf("Usage: %s FQFA [pwd]\n", argv[0]);
		exit(5);
		}

	if(!(NodelistBase = OpenLibrary(TRAPLIST_NAME, TRAPLIST_VER)))
		{
		printf("Can't open library\n");
		exit(5);
		}


	// First, open the Extra database //

	if((xtra = ExtraOpen(NODELISTDIR)))
		{
		NLParseAddr(&addr, argv[1], NULL);

		// Example how to obtain data from the data base //
		// Note the ExtraLock()/ExtraUnlock() pair		 //

		ExtraLock(xtra);
		if(pwd = ExtraFind(xtra, &addr, ID_PASS, NULL))
			{
			printf("Current password is \"%.80s\"\n", pwd);
			if (argc>2)
				{
				ExtraDel(xtra, pwd);
				if (!*argv[2])
					puts("Password removed");
				}
			}
		else
			{
			puts("No password set for this node");
			}
		ExtraUnlock(xtra);

		if(argc>2 && *argv[2])
			{
			// How to write data into the data base //

			if(ExtraPut(xtra, &addr, ID_PASS, strlen(argv[2])+1, argv[2]))
				printf("Password set to \"%.80s\"\n", argv[2]);
			else
				puts("Password can't be changed");
			}

		ExtraClose(xtra);
		}
	else	
		puts("Extra won't open");

	CloseLibrary(NodelistBase);
	}

/*-------------------------------------------------------------------------*/
/* ID: 59.1@2002  Last Changed: 11 Feb 1992 14:50:59 by max */
