/*
* Copyright Likewise Software 2004-2009
* All rights reserved.
*
* This library is free software; you can redistribute it and/or modify it
* under the terms of the GNU Lesser General Public License as published by
* the Free Software Foundation; either version 2.1 of the license, or (at
* your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser
* General Public License for more details. You should have received a copy
* of the GNU Lesser General Public License along with this program. If
* not, see .
*
* LIKEWISE SOFTWARE MAKES THIS SOFTWARE AVAILABLE UNDER OTHER LICENSING
* TERMS AS WELL. IF YOU HAVE ENTERED INTO A SEPARATE LICENSE AGREEMENT
* WITH LIKEWISE SOFTWARE, THEN YOU MAY ELECT TO USE THE SOFTWARE UNDER THE
* TERMS OF THAT SOFTWARE LICENSE AGREEMENT INSTEAD OF THE TERMS OF THE GNU
* LESSER GENERAL PUBLIC LICENSE, NOTWITHSTANDING THE ABOVE NOTICE. IF YOU
* HAVE QUESTIONS, OR WISH TO REQUEST A COPY OF THE ALTERNATE LICENSING
* TERMS OFFERED BY LIKEWISE SOFTWARE, PLEASE CONTACT LIKEWISE SOFTWARE AT
* license@likewisesoftware.com
*/
/*
* Copyright (C) Likewise Software. All rights reserved.
*
* Module Name:
*
* regio_test.c
*
* Abstract:
*
* Registry
*
* Registry .REG parser file I/O test harness
*
* Authors: Adam Bernstein (abernstein@likewise.com)
*/
#include
#include
void
testInteractive(void)
{
DWORD dwError = 0;
CHAR inBuf[1024];
PSTR ptr = NULL;
DWORD inBufLen = 0;
HANDLE ioH = NULL;
CHAR inC = '\0';
BOOLEAN eof = FALSE;
dwError = RegIOBufferOpen(&ioH);
if (dwError)
{
fprintf(stderr, "RegIOBufferOpen: failed %d\n", dwError);
return;
}
do
{
printf("> ");
fflush(stdout);
ptr = fgets(inBuf, sizeof(inBuf)-1, stdin);
if (ptr)
{
inBufLen = strlen(ptr);
dwError = RegIOBufferSetData(ioH, inBuf, inBufLen);
if (dwError) return;
}
do
{
dwError = RegIOGetChar(ioH, &inC, &eof);
if (!eof)
{
putchar(inC);
}
else
{
printf("\n");
}
}
while (!eof);
} while (!feof(stdin));
RegIOClose(ioH);
}
int main(int argc, char *argv[])
{
DWORD dwError;
HANDLE ioH;
CHAR inC;
BOOLEAN eof = FALSE;
if (argc == 1)
{
printf("usage: %s regfile.reg | %s --shell\n", argv[0], argv[0]);
return 0;
}
if (strcmp(argv[1], "--shell") == 0)
{
testInteractive();
return 0;
}
dwError = RegIOOpen(argv[1], &ioH);
if (dwError)
{
fprintf(stderr, "RegIOOpen: failed %d\n", dwError);
return 1;
}
dwError = RegIOGetChar(ioH, &inC, &eof);
if (eof || dwError != ERROR_SUCCESS)
{
fprintf(stderr, "RegIOGetChar: failed %d\n", dwError);
}
dwError = RegIOUnGetChar(ioH, NULL);
if (dwError != ERROR_SUCCESS)
{
printf("RegIOUnGetChar: 1 UnGetChar failed!\n");
}
do
{
dwError = RegIOGetChar(ioH, &inC, &eof);
if (!eof)
{
putchar(inC);
}
else
{
printf("\n");
}
}
while (!eof);
RegIOClose(ioH);
return 0;
}