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