windows-nt/Source/XPSP1/NT/base/ntsetup/legacy/dll/inf2.c
2020-09-26 16:20:57 +08:00

208 lines
6.5 KiB
C

#include "precomp.h"
#pragma hdrstop
/**************************************************************************/
/***** Common Library Component - INF File Handling Routines 19 ***********/
/**************************************************************************/
/*
** Purpose:
** Prints the contents of an Option Element Record to a file.
** Arguments:
** pfh: non-NULL file handle pointer returned from a successful call
** to PfhOpenFile() with write privileges.
** poer: OER to print.
** Returns:
** fFalse if error.
** fTrue if successful.
**
**************************************************************************/
BOOL APIENTRY FPrintPoer(pfh, poer)
PFH pfh;
POER poer;
{
BOOL fOkay = fTrue;
CHP rgchp[40];
AssertDataSeg();
ChkArg(pfh != (PFH)NULL, 1, fFalse);
ChkArg(poer != (POER)NULL, 2, fFalse);
fOkay &= FWriteSzToFile(pfh, "\r\n\r\n Flag Value\r\n----------------------------------");
if (poer->szAppend == (SZ)NULL)
fOkay &= FWriteSzToFile(pfh, "\r\n APPEND NULL");
else
{
fOkay &= FWriteSzToFile(pfh, "\r\n APPEND ");
fOkay &= FWriteSzToFile(pfh, (poer->szAppend));
}
if (poer->szBackup == (SZ)NULL)
fOkay &= FWriteSzToFile(pfh, "\r\n BACKUP NULL");
else
{
fOkay &= FWriteSzToFile(pfh, "\r\n BACKUP ");
fOkay &= FWriteSzToFile(pfh, (poer->szBackup));
}
if (poer->oef & oefCopy)
fOkay &= FWriteSzToFile(pfh, "\r\n COPY ON");
else
fOkay &= FWriteSzToFile(pfh, "\r\n COPY OFF");
if (poer->szDate == (SZ)NULL)
fOkay &= FWriteSzToFile(pfh, "\r\n DATE NULL");
else
{
fOkay &= FWriteSzToFile(pfh, "\r\n DATE ");
fOkay &= FWriteSzToFile(pfh, (poer->szDate));
}
if (poer->oef & oefDecompress)
fOkay &= FWriteSzToFile(pfh, "\r\n DECOMPRESS ON");
else
fOkay &= FWriteSzToFile(pfh, "\r\n DECOMPRESS OFF");
if (poer->szDescription == (SZ)NULL)
fOkay &= FWriteSzToFile(pfh, "\r\n DESCRIPTION NULL");
else
{
fOkay &= FWriteSzToFile(pfh, "\r\n DESCRIPTION ");
fOkay &= FWriteSzToFile(pfh, (poer->szDescription));
}
if (poer->szDest == (SZ)NULL) /* REVIEW EBU */
fOkay &= FWriteSzToFile(pfh, "\r\n DESTINATION NULL");
else
{
fOkay &= FWriteSzToFile(pfh, "\r\n DESTINATION ");
fOkay &= FWriteSzToFile(pfh, (poer->szDest));
}
fOkay &= FWriteSzToFile(pfh, "\r\n OVERWRITE ");
if (poer->owm == owmAlways)
fOkay &= FWriteSzToFile(pfh, "ALWAYS");
else if (poer->owm == owmNever)
fOkay &= FWriteSzToFile(pfh, "NEVER");
else if (poer->owm == owmUnprotected)
fOkay &= FWriteSzToFile(pfh, "UNPROTECTED");
else if (poer->owm == owmOlder)
fOkay &= FWriteSzToFile(pfh, "OLDER");
else if (poer->owm == owmVerifySourceOlder)
fOkay &= FWriteSzToFile(pfh, "VERIFYSOURCEOLDER");
else
fOkay = fFalse;
if (poer->oef & oefUpgradeOnly) {
fOkay &= FWriteSzToFile(pfh, "\r\n UPGRADEONLY ON");
}
else {
fOkay &= FWriteSzToFile(pfh, "\r\n UPGRADEONLY OFF");
}
if (poer->oef & oefReadOnly)
fOkay &= FWriteSzToFile(pfh, "\r\n READONLY ON");
else
fOkay &= FWriteSzToFile(pfh, "\r\n READONLY OFF");
if (poer->szRename == (SZ)NULL)
fOkay &= FWriteSzToFile(pfh, "\r\n RENAME NULL");
else
{
fOkay &= FWriteSzToFile(pfh, "\r\n RENAME ");
fOkay &= FWriteSzToFile(pfh, (poer->szRename));
}
if (poer->oef & oefRoot)
fOkay &= FWriteSzToFile(pfh, "\r\n ROOT ON");
else
fOkay &= FWriteSzToFile(pfh, "\r\n ROOT OFF");
if (poer->oef & oefTimeStamp)
fOkay &= FWriteSzToFile(pfh, "\r\n SETTIMESTAMP ON");
else
fOkay &= FWriteSzToFile(pfh, "\r\n SETTIMESTAMP OFF");
fOkay &= FWriteSzToFile(pfh, "\r\n SIZE ");
fOkay &= (_ltoa(poer->lSize, (LPSTR)rgchp, 10) == (LPSTR)rgchp);
fOkay &= FWriteSzToFile(pfh, rgchp);
fOkay &= FWriteSzToFile(pfh, "\r\n TIME ");
fOkay &= (_ltoa((LONG)(poer->ctuCopyTime), (LPSTR)rgchp,10) == (LPSTR)rgchp);
fOkay &= FWriteSzToFile(pfh, rgchp);
if (poer->oef & oefUndo)
fOkay &= FWriteSzToFile(pfh, "\r\n UNDO ON");
else
fOkay &= FWriteSzToFile(pfh, "\r\n UNDO OFF");
fOkay &= FWriteSzToFile(pfh, "\r\n VERSION ");
fOkay &= (_ltoa((poer->ulVerMS) >> 16, (LPSTR)rgchp, 10) == (LPSTR)rgchp);
fOkay &= FWriteSzToFile(pfh, rgchp);
fOkay &= FWriteSzToFile(pfh, ",");
fOkay &= (_ltoa((poer->ulVerMS) & 0xFFFF, (LPSTR)rgchp, 10) == (LPSTR)rgchp);
fOkay &= FWriteSzToFile(pfh, rgchp);
fOkay &= FWriteSzToFile(pfh, ",");
fOkay &= (_ltoa((poer->ulVerLS) >> 16, (LPSTR)rgchp, 10) == (LPSTR)rgchp);
fOkay &= FWriteSzToFile(pfh, rgchp);
fOkay &= FWriteSzToFile(pfh, ",");
fOkay &= (_ltoa((poer->ulVerLS) & 0xFFFF, (LPSTR)rgchp, 10) == (LPSTR)rgchp);
fOkay &= FWriteSzToFile(pfh, rgchp);
if (poer->oef & oefVital)
fOkay &= FWriteSzToFile(pfh, "\r\n VITAL ON");
else
fOkay &= FWriteSzToFile(pfh, "\r\n VITAL OFF");
return(fOkay);
}
/*
** Purpose:
** Prints the contents of a Section File Descriptor to a file.
** Arguments:
** pfh: non-NULL file handle pointer returned from a successful call
** to PfhOpenFile() with write privileges.
** psfd: SFD to print.
** Returns:
** fFalse if error.
** fTrue if successful.
**
**************************************************************************/
BOOL APIENTRY FPrintPsfd(pfh, psfd)
PFH pfh;
PSFD psfd;
{
BOOL fOkay = fTrue;
PCHP rgchp;
AssertDataSeg();
ChkArg(pfh != (PFH)NULL, 1, fFalse);
ChkArg(psfd != (PSFD)NULL, 2, fFalse);
if (psfd->did < didMin ||
psfd->did > didMost ||
psfd->szFile == (SZ)NULL)
return(fFalse);
if ((rgchp = (PCHP)SAlloc((CB)(40 * sizeof(CHP)))) == (PCHP)NULL)
return(fFalse);
fOkay &= FWriteSzToFile(pfh, "\r\n\r\nDID = ");
fOkay &= (_itoa((INT)(psfd->did), rgchp, 10) == rgchp);
fOkay &= FWriteSzToFile(pfh, rgchp);
fOkay &= FWriteSzToFile(pfh, "\r\nszFile = ");
fOkay &= FWriteSzToFile(pfh, psfd->szFile);
fOkay &= FPrintPoer(pfh, &(psfd->oer));
SFree(rgchp);
return(fOkay);
}