#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)
		{
		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("The password was \"%s\"\n", pwd);

			// I want to change the password, so I first have to //
			// remove the old one!										  //

			ExtraDel(xtra, pwd);
			}
		else
			{
			puts("There was no password for this node");
			}
		ExtraUnlock(xtra);

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

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

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

	CloseLibrary(NodelistBase);
	}

/*-------------------------------------------------------------------------*/
/* ID: 38.27@1853  Last Changed: 01 Nov 1990 03:40:50 by mjl */
