mirror of https://gitee.com/openkylin/cups.git
93 lines
1.5 KiB
C++
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));
|
|
}
|