]> git.ipfire.org Git - thirdparty/cups.git/blob - ppdc/ppdc-file.cxx
Import CUPS v1.7.1
[thirdparty/cups.git] / ppdc / ppdc-file.cxx
1 //
2 // "$Id: ppdc-file.cxx 3755 2012-03-30 05:59:14Z msweet $"
3 //
4 // File class for the CUPS PPD Compiler.
5 //
6 // Copyright 2007-2010 by Apple Inc.
7 // Copyright 2002-2005 by Easy Software Products.
8 //
9 // These coded instructions, statements, and computer programs are the
10 // property of Apple Inc. and are protected by Federal copyright
11 // law. Distribution and use rights are outlined in the file "LICENSE.txt"
12 // which should have been included with this file. If this file is
13 // file is missing or damaged, see the license at "http://www.cups.org/".
14 //
15 // Contents:
16 //
17 // ppdcFile::ppdcFile() - Create (open) a file.
18 // ppdcFile::~ppdcFile() - Delete (close) a file.
19 // ppdcFile::get() - Get a character from a file.
20 // ppdcFile::peek() - Look at the next character from a file.
21 //
22
23 //
24 // Include necessary headers...
25 //
26
27 #include "ppdc-private.h"
28
29
30 //
31 // 'ppdcFile::ppdcFile()' - Create (open) a file.
32 //
33
34 ppdcFile::ppdcFile(const char *f, // I - File to open
35 cups_file_t *ffp) // I - File pointer to use
36 {
37 if (ffp)
38 {
39 fp = ffp;
40 cupsFileRewind(fp);
41 }
42 else
43 fp = cupsFileOpen(f, "r");
44
45 close_on_delete = !ffp;
46 filename = f;
47 line = 1;
48
49 if (!fp)
50 _cupsLangPrintf(stderr, _("ppdc: Unable to open %s: %s"), f,
51 strerror(errno));
52 }
53
54
55 //
56 // 'ppdcFile::~ppdcFile()' - Delete (close) a file.
57 //
58
59 ppdcFile::~ppdcFile()
60 {
61 if (close_on_delete && fp)
62 cupsFileClose(fp);
63 }
64
65
66 //
67 // 'ppdcFile::get()' - Get a character from a file.
68 //
69
70 int
71 ppdcFile::get()
72 {
73 int ch; // Character from file
74
75
76 // Return EOF if there is no open file...
77 if (!fp)
78 return (EOF);
79
80 // Get the character...
81 ch = cupsFileGetChar(fp);
82
83 // Update the line number as needed...
84 if (ch == '\n')
85 line ++;
86
87 // Return the character...
88 return (ch);
89 }
90
91
92 //
93 // 'ppdcFile::peek()' - Look at the next character from a file.
94 //
95
96 int // O - Next character in file
97 ppdcFile::peek()
98 {
99 // Return immediaely if there is no open file...
100 if (!fp)
101 return (EOF);
102
103 // Otherwise return the next character without advancing...
104 return (cupsFilePeekChar(fp));
105 }
106
107
108 //
109 // End of "$Id: ppdc-file.cxx 3755 2012-03-30 05:59:14Z msweet $".
110 //