summaryrefslogtreecommitdiff
path: root/noncore/unsupported/qpdf/xpdf/XRef.h
Unidiff
Diffstat (limited to 'noncore/unsupported/qpdf/xpdf/XRef.h') (more/less context) (ignore whitespace changes)
-rw-r--r--noncore/unsupported/qpdf/xpdf/XRef.h25
1 files changed, 15 insertions, 10 deletions
diff --git a/noncore/unsupported/qpdf/xpdf/XRef.h b/noncore/unsupported/qpdf/xpdf/XRef.h
index a44c495..7876fa6 100644
--- a/noncore/unsupported/qpdf/xpdf/XRef.h
+++ b/noncore/unsupported/qpdf/xpdf/XRef.h
@@ -1,11 +1,11 @@
1//======================================================================== 1//========================================================================
2// 2//
3// XRef.h 3// XRef.h
4// 4//
5// Copyright 1996 Derek B. Noonburg 5// Copyright 1996-2002 Glyph & Cog, LLC
6// 6//
7//======================================================================== 7//========================================================================
8 8
9#ifndef XREF_H 9#ifndef XREF_H
10#define XREF_H 10#define XREF_H
11 11
@@ -21,13 +21,13 @@ class Stream;
21 21
22//------------------------------------------------------------------------ 22//------------------------------------------------------------------------
23// XRef 23// XRef
24//------------------------------------------------------------------------ 24//------------------------------------------------------------------------
25 25
26struct XRefEntry { 26struct XRefEntry {
27 int offset; 27 Guint offset;
28 int gen; 28 int gen;
29 GBool used; 29 GBool used;
30}; 30};
31 31
32class XRef { 32class XRef {
33public: 33public:
@@ -38,12 +38,15 @@ public:
38 // Destructor. 38 // Destructor.
39 ~XRef(); 39 ~XRef();
40 40
41 // Is xref table valid? 41 // Is xref table valid?
42 GBool isOk() { return ok; } 42 GBool isOk() { return ok; }
43 43
44 // Get the error code (if isOk() returns false).
45 int getErrorCode() { return errCode; }
46
44 // Is the file encrypted? 47 // Is the file encrypted?
45#ifndef NO_DECRYPTION 48#ifndef NO_DECRYPTION
46 GBool isEncrypted() { return encrypted; } 49 GBool isEncrypted() { return encrypted; }
47#else 50#else
48 GBool isEncrypted() { return gFalse; } 51 GBool isEncrypted() { return gFalse; }
49#endif 52#endif
@@ -65,47 +68,49 @@ public:
65 Object *getDocInfoNF(Object *obj); 68 Object *getDocInfoNF(Object *obj);
66 69
67 // Return the number of objects in the xref table. 70 // Return the number of objects in the xref table.
68 int getNumObjects() { return size; } 71 int getNumObjects() { return size; }
69 72
70 // Return the offset of the last xref table. 73 // Return the offset of the last xref table.
71 int getLastXRefPos() { return lastXRefPos; } 74 Guint getLastXRefPos() { return lastXRefPos; }
72 75
73 // Return the catalog object reference. 76 // Return the catalog object reference.
74 int getRootNum() { return rootNum; } 77 int getRootNum() { return rootNum; }
75 int getRootGen() { return rootGen; } 78 int getRootGen() { return rootGen; }
76 79
77 // Get end position for a stream in a damaged file. 80 // Get end position for a stream in a damaged file.
78 // Returns -1 if unknown or file is not damaged. 81 // Returns false if unknown or file is not damaged.
79 int getStreamEnd(int streamStart); 82 GBool getStreamEnd(Guint streamStart, Guint *streamEnd);
80 83
81private: 84private:
82 85
83 BaseStream *str; // input stream 86 BaseStream *str; // input stream
84 int start; // offset in file (to allow for garbage 87 Guint start; // offset in file (to allow for garbage
85 // at beginning of file) 88 // at beginning of file)
86 XRefEntry *entries; // xref entries 89 XRefEntry *entries; // xref entries
87 int size; // size of <entries> array 90 int size; // size of <entries> array
88 int rootNum, rootGen; // catalog dict 91 int rootNum, rootGen; // catalog dict
89 GBool ok; // true if xref table is valid 92 GBool ok; // true if xref table is valid
93 int errCode; // error code (if <ok> is false)
90 Object trailerDict; // trailer dictionary 94 Object trailerDict; // trailer dictionary
91 int lastXRefPos; // offset of last xref table 95 Guint lastXRefPos; // offset of last xref table
92 int *streamEnds; // 'endstream' positions - only used in 96 Guint *streamEnds; // 'endstream' positions - only used in
93 // damaged files 97 // damaged files
94 int streamEndsLen; // number of valid entries in streamEnds 98 int streamEndsLen; // number of valid entries in streamEnds
95#ifndef NO_DECRYPTION 99#ifndef NO_DECRYPTION
96 GBool encrypted; // true if file is encrypted 100 GBool encrypted; // true if file is encrypted
97 int encVersion; // encryption algorithm 101 int encVersion; // encryption algorithm
98 int encRevision; // security handler revision 102 int encRevision; // security handler revision
99 int keyLength; // length of key, in bytes 103 int keyLength; // length of key, in bytes
100 int permFlags; // permission bits 104 int permFlags; // permission bits
101 Guchar fileKey[16]; // file decryption key 105 Guchar fileKey[16]; // file decryption key
102 GBool ownerPasswordOk;// true if owner password is correct 106 GBool ownerPasswordOk;// true if owner password is correct
103#endif 107#endif
104 108
105 int readTrailer(); 109 Guint readTrailer();
106 GBool readXRef(int *pos); 110 GBool readXRef(Guint *pos);
107 GBool constructXRef(); 111 GBool constructXRef();
108 GBool checkEncrypted(GString *ownerPassword, GString *userPassword); 112 GBool checkEncrypted(GString *ownerPassword, GString *userPassword);
113 Guint strToUnsigned(char *s);
109}; 114};
110 115
111#endif 116#endif