home *** CD-ROM | disk | FTP | other *** search
- /* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
- *
- * The contents of this file are subject to the Netscape Public License
- * Version 1.0 (the "NPL"); you may not use this file except in
- * compliance with the NPL. You may obtain a copy of the NPL at
- * http://www.mozilla.org/NPL/
- *
- * Software distributed under the NPL is distributed on an "AS IS" basis,
- * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
- * for the specific language governing rights and limitations under the
- * NPL.
- *
- * The Initial Developer of this code under the NPL is Netscape
- * Communications Corporation. Portions created by Netscape are
- * Copyright (C) 1998 Netscape Communications Corporation. All Rights
- * Reserved.
- */
-
- #include <stdlib.h>
- #include <stdio.h>
- #include <io.h>
- #include <fcntl.h>
- #include <sys/stat.h>
- #include <string.h>
-
- #include "NSReg.h"
- #include "VerReg.h"
-
- extern void interp(void);
-
- #define REGFILE "c:\\temp\\reg.dat"
-
- char *gRegistry;
-
- int main(int argc, char *argv[]);
-
- char *errstr(REGERR err)
- {
-
- switch( err )
- {
- case REGERR_OK:
- return "REGERR_OK";
- case REGERR_FAIL:
- return "REGERR_FAIL";
- case REGERR_NOMORE:
- return "REGERR_MORE";
- case REGERR_NOFIND:
- return "REGERR_NOFIND";
- case REGERR_BADREAD:
- return "REGERR_BADREAD";
- case REGERR_BADLOCN:
- return "REGERR_BADLOCN";
- case REGERR_PARAM:
- return "REGERR_PARAM";
- case REGERR_BADMAGIC:
- return "REGERR_BADMAGIC";
- default:
- return "<Unknown>";
- }
-
- } // errstr
-
-
- int CreateEmptyRegistry(void)
- {
-
- #if 0
- int fh;
- remove(REGFILE); // ignore errors like file not found
-
- fh = _open(REGFILE, _O_CREAT, _S_IREAD|_S_IWRITE);
- if (fh < 0)
- return -1;
- close(fh);
- return 0;
- #endif
-
- return VR_CreateRegistry(CR_NEWREGISTRY, "4.0");
-
- } // CreateEmptyRegistry
-
-
-
- int BuildTree(void)
- {
-
- REGERR err;
-
- err = NR_RegAdd(0,"/Machine/Old");
- if (err != REGERR_OK)
- {
- printf("NR_RegAdd() returned %s.\n", errstr(err));
- return err;
- }
- err = NR_RegAdd(0,"/User");
- if (err != REGERR_OK)
- {
- printf("NR_RegAdd() returned %s.\n", errstr(err));
- return err;
- }
- err = NR_RegAdd(0,"/Machine/4.0/Name1=Val1");
- if (err != REGERR_OK)
- {
- printf("NR_RegAdd() returned %s.\n", errstr(err));
- return err;
- }
- err = NR_RegAdd(0,"/Machine/4.0/Name2=Val2");
- if (err != REGERR_OK)
- {
- printf("NR_RegAdd() returned %s.\n", errstr(err));
- return err;
- }
- err = NR_RegAdd(0,"/Machine/4.0/Name2=Val3");
- if (err != REGERR_OK)
- {
- printf("NR_RegAdd() returned %s.\n", errstr(err));
- return err;
- }
- err = NR_RegAdd(0,"/Machine/4.0/Name3=Val4");
- if (err != REGERR_OK)
- {
- printf("NR_RegAdd() returned %s.\n", errstr(err));
- return err;
- }
-
- return VR_Checkpoint();
-
- } // BuildTree
-
-
- int FindKeys(void)
- {
-
- RKEY key;
- REGERR err;
- char buf[80];
-
- if (NR_RegGetKey(0, "", &key) == REGERR_OK)
- {
- printf("NR_RegGetKey returns ok for an empty path.\n");
- return 1;
- }
-
- if (NR_RegGetKey(0, "/", &key) != REGERR_OK)
- {
- printf("NR_RegGetKey couldn't find root.\n");
- return 1;
- }
-
- if (NR_RegGetKey(0, "/Machine/Old", &key) != REGERR_OK)
- {
- printf("NR_RegGetKey couldn't find Old\n");
- return 1;
- }
- printf("NR_RegGetKey returns key for Old as: 0x%lx\n", (long) key);
-
- if (NR_RegGetKey(0, "/Machine/4.0", &key) != REGERR_OK)
- {
- printf("NR_RegGetKey couldn't find 4.0\n");
- return 1;
- }
- printf("NR_RegGetKey returns key for 4.0 as: 0x%lx\n", (long) key);
-
- // ----------------------------------------
- if ((err = NR_RegFindValue(0, "/Machine/4.0/Name3", 64, buf)) != REGERR_OK)
- {
- printf("NR_RegFindValue (no key) returns %s\n", errstr(err));
- return 1;
- }
- printf("NR_RegFindValue (no key) of Name3 = %s\n", buf);
-
- if (NR_RegFindValue(key, "Aliens", 64, buf) == REGERR_OK)
- {
- printf("NR_RegFindValue finds Aliens.\n");
- return 1;
- }
-
- if ((err = NR_RegFindValue(key, "Name3", 64, buf)) != REGERR_OK)
- {
- printf("NR_RegFindValue (w/key) returns %s\n", errstr(err));
- return 1;
- }
- printf("NR_RegFindValue (w/key) of Name3 = %s\n", buf);
-
- return 0;
-
- } // FindTree
-
- int DumpTree(void)
- {
-
- char *path;
- char *line = "------------------------------------------------------------";
-
- path = malloc(2048);
- if (!path)
- return REGERR_FAIL;
-
- strcpy(path, "/");
- puts(line);
- puts(path);
-
- while (NR_RegNext( 0, 512, path ) == REGERR_OK)
- {
- puts(path);
- }
-
- puts(line);
-
- return 0;
-
- } // DumpTree
-
-
- int ChangeKeys(void)
- {
-
- REGERR err;
-
- err = NR_RegUpdate(0,"/Machine/4.0/name3", "Infospect Software, Inc.");
- if (err)
- {
- printf("Couldn't update name3's value to ISI.\n");
- return err;
- }
-
- err = NR_RegUpdate(0,"/Machine/4.0/name3=Infospect Software, Inc.", "\"Jonathan=Kid1\"");
- if (err)
- {
- printf("Couldn't update name3's value to Jon.\n");
- return err;
- }
-
- err = NR_RegRename(0,"/Machine/4.0/name3=\"Jonathan=Kid1\"", "First born");
- if (err)
- {
- printf("Couldn't update name3's name to First born.\n");
- return err;
- }
-
- err = NR_RegUpdate(0,"/Machine/4.0/name2=Val2", "Kelley Ann");
- if (err)
- {
- printf("Couldn't update name2's value to Kelley.\n");
- return err;
- }
-
-
- return VR_Checkpoint();
-
- } // ChangeKeys
-
-
- int DeleteKeys(void)
- {
-
- REGERR err;
-
- err = NR_RegDelete(0, "/User");
- if (err)
- {
- printf("NR_RegDelete returned %s.\n", errstr(err));
- return err;
- }
-
- return VR_Checkpoint();
-
- } // DeleteKeys
-
-
- int StressTest(void)
- {
-
- REGERR err;
- RKEY key;
-
- printf("Starting stress...\n");
-
- err = NR_RegGetKey(0, "/Machine/4.0", &key);
- if (err)
- {
- printf("Error getting key for 4.0 = %s\n", errstr(err));
- return err;
- }
-
- err = NR_RegAdd(key, "A/B/C/D/E/F/G/H/I/J/K/L/M/N/O/P/Q/R/S/T/U/V/W/X/Y/Z/"
- "A/B/C/D/E/F/G/H/I/J/K/L/M/N/O/P/Q/R/S/T/U/V/W/X/Y/Z/"
- "A/B/C/D/E/F/G/H/I/J/K/L/M/N/O/P/Q/R/S/T/U/V/W/X/Y/Z/" );
-
- if (err)
- {
- printf("Adding humungous string returned %s\n", errstr(err));
- return err;
- }
-
- // TODO: Add a value to one of the middle keys, get it back.
-
- printf("Stress done.\n");
- return 0;
-
- } // StressTest
-
-
- int Install(void)
- {
-
- int err;
- VERSION ver;
-
- ver.major = 4;
- ver.minor = 2;
- ver.release = 10;
- ver.build = 937;
- ver.check = 0;
-
- err = VR_Install("Web/Navigator/netscape.exe",
- "c:\\Netscape\\NETSCAPE.EXE", &ver);
- if (err)
- return err;
-
- ver.release = 19;
- ver.build = 722;
- ver.check = 0;
- err = VR_Install("Web/Navigator/nspr.dll",
- "c:\\Netscape\\System\\Vtcprac.386", &ver);
-
- if (err)
- return err;
-
- return VR_Checkpoint();
-
- }
-
- int GetInfo(void)
- {
-
- int err;
- char buf[256];
- VERSION ver;
-
- err = VR_GetPath("Web/Navigator/nspr.dll", 256, buf);
- if (err)
- return err;
-
- printf("GetPath(nspr.dll) returns %s\n", buf);
-
- err = VR_GetVersion("Web/Navigator/netscape.exe", &ver);
- if (err)
- return err;
- printf("GetVersion(netscape.exe) returns %d.%d.%d.%d and check=%d\n",
- ver.major, ver.minor, ver.release, ver.build, ver.check);
-
- return 0;
-
- }
-
-
- int main(int argc, char *argv[])
- {
-
- printf("Registry Test 10/01/96.\n");
-
- if (argc > 1)
- {
- gRegistry = argv[1];
- }
- else
- {
- gRegistry = REGFILE;
- }
- VR_RegistryName(gRegistry);
-
- #if 1
- if (NR_RegOpen(gRegistry) != REGERR_OK)
- VR_CreateRegistry(CR_NEWREGISTRY, "4.0");
- interp();
- #else
- if (CreateEmptyRegistry())
- goto abort;
-
- if (Install())
- goto done;
-
- if (DumpTree())
- goto done;
-
- if (GetInfo())
- goto done;
-
-
- #if defined(TEST_NR)
- if ((err = NR_RegOpen(REGFILE)) != REGERR_OK)
- {
- printf("NR_RegOpen(%s) returned %s...Test aborted.\n", REGFILE, errstr(err));
- goto abort;
- }
-
- if (BuildTree())
- goto done;
-
- if (FindKeys())
- goto done;
-
- if (DumpTree())
- goto done;
-
- if (ChangeKeys())
- goto done;
-
- if (DeleteKeys())
- goto done;
-
- if (DumpTree())
- goto done;
-
- if (StressTest())
- goto done;
-
- if (DumpTree())
- goto done;
-
- done:
- NR_RegClose();
- #else
- done:
- #endif
-
- abort:
- puts("Press Enter to continue...");
- getchar();
- #endif
-
- return 0;
-
- }
-
-
-