#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);
}