cups/ppdc/ppdc-file.cxx

93 lines
1.5 KiB
C++

//
// File class for the CUPS PPD Compiler.
//
// Copyright 2007-2010 by Apple Inc.
// Copyright 2002-2005 by Easy Software Products.
//
// Licensed under Apache License v2.0. See the file "LICENSE" for more information.
//
//
// Include necessary headers...
//
#include "ppdc-private.h"
//
// 'ppdcFile::ppdcFile()' - Create (open) a file.
//
ppdcFile::ppdcFile(const char *f, // I - File to open
cups_file_t *ffp) // I - File pointer to use
{
if (ffp)
{
fp = ffp;
cupsFileRewind(fp);
}
else
fp = cupsFileOpen(f, "r");
close_on_delete = !ffp;
filename = f;
line = 1;
if (!fp)
_cupsLangPrintf(stderr, _("ppdc: Unable to open %s: %s"), f,
strerror(errno));
}
//
// 'ppdcFile::~ppdcFile()' - Delete (close) a file.
//
ppdcFile::~ppdcFile()
{
if (close_on_delete && fp)
cupsFileClose(fp);
}
//
// 'ppdcFile::get()' - Get a character from a file.
//
int
ppdcFile::get()
{
int ch; // Character from file
// Return EOF if there is no open file...
if (!fp)
return (EOF);
// Get the character...
ch = cupsFileGetChar(fp);
// Update the line number as needed...
if (ch == '\n')
line ++;
// Return the character...
return (ch);
}
//
// 'ppdcFile::peek()' - Look at the next character from a file.
//
int // O - Next character in file
ppdcFile::peek()
{
// Return immediaely if there is no open file...
if (!fp)
return (EOF);
// Otherwise return the next character without advancing...
return (cupsFilePeekChar(fp));
}