File: | home/maarten/src/libreoffice/core/lotuswordpro/source/filter/lwpobjhdr.cxx |
Warning: | line 120, column 17 Value stored to 'nVersionID' is never read |
Press '?' to see keyboard shortcuts
Keyboard shortcuts:
1 | /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ |
2 | /************************************************************************* |
3 | * |
4 | * The Contents of this file are made available subject to the terms of |
5 | * either of the following licenses |
6 | * |
7 | * - GNU Lesser General Public License Version 2.1 |
8 | * - Sun Industry Standards Source License Version 1.1 |
9 | * |
10 | * Sun Microsystems Inc., October, 2000 |
11 | * |
12 | * GNU Lesser General Public License Version 2.1 |
13 | * ============================================= |
14 | * Copyright 2000 by Sun Microsystems, Inc. |
15 | * 901 San Antonio Road, Palo Alto, CA 94303, USA |
16 | * |
17 | * This library is free software; you can redistribute it and/or |
18 | * modify it under the terms of the GNU Lesser General Public |
19 | * License version 2.1, as published by the Free Software Foundation. |
20 | * |
21 | * This library is distributed in the hope that it will be useful, |
22 | * but WITHOUT ANY WARRANTY; without even the implied warranty of |
23 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
24 | * Lesser General Public License for more details. |
25 | * |
26 | * You should have received a copy of the GNU Lesser General Public |
27 | * License along with this library; if not, write to the Free Software |
28 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, |
29 | * MA 02111-1307 USA |
30 | * |
31 | * |
32 | * Sun Industry Standards Source License Version 1.1 |
33 | * ================================================= |
34 | * The contents of this file are subject to the Sun Industry Standards |
35 | * Source License Version 1.1 (the "License"); You may not use this file |
36 | * except in compliance with the License. You may obtain a copy of the |
37 | * License at http://www.openoffice.org/license.html. |
38 | * |
39 | * Software provided under this License is provided on an "AS IS" basis, |
40 | * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, |
41 | * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS, |
42 | * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING. |
43 | * See the License for the specific provisions governing your rights and |
44 | * obligations concerning the Software. |
45 | * |
46 | * The Initial Developer of the Original Code is: IBM Corporation |
47 | * |
48 | * Copyright: 2008 by IBM Corporation |
49 | * |
50 | * All Rights Reserved. |
51 | * |
52 | * Contributor(s): _______________________________________ |
53 | * |
54 | * |
55 | ************************************************************************/ |
56 | /************************************************************************* |
57 | * @file |
58 | * For LWP filter architecture prototype |
59 | ************************************************************************/ |
60 | |
61 | #include <lwpobjhdr.hxx> |
62 | #include <lwpobjtags.hxx> |
63 | #include <lwpdefs.hxx> |
64 | #include <lwpfilehdr.hxx> |
65 | |
66 | LwpObjectHeader::LwpObjectHeader() |
67 | : m_nTag(0), m_ID(), m_nSize(0), m_bCompressed(false) |
68 | {} |
69 | /** |
70 | * @descr read header from stream |
71 | */ |
72 | bool LwpObjectHeader::Read(LwpSvStream &rStrm) |
73 | { |
74 | sal_uInt32 nVersionID = 0; |
75 | sal_uInt32 nRefCount = 0; |
76 | sal_uInt32 nNextVersionOffset = 0; |
77 | sal_uInt32 nHeaderSize = 0; |
78 | |
79 | sal_Int64 nStartPos = rStrm.Tell(); |
80 | |
81 | if ( LwpFileHeader::m_nFileRevision < 0x000B) |
82 | { |
83 | rStrm.ReadUInt32( m_nTag ); |
84 | m_ID.Read(&rStrm); |
85 | rStrm.ReadUInt32( nVersionID ); |
86 | rStrm.ReadUInt32( nRefCount ); |
87 | rStrm.ReadUInt32( nNextVersionOffset ); |
88 | |
89 | nHeaderSize = sizeof(m_nTag) + LwpObjectID::DiskSize() |
90 | + sizeof(nVersionID) |
91 | + sizeof(nRefCount) |
92 | + sizeof(nNextVersionOffset) |
93 | + sizeof(m_nSize); |
94 | |
95 | if ((m_nTag == TAG_AMI0x3750574CUL) || ( LwpFileHeader::m_nFileRevision < 0x0006)) |
96 | { |
97 | sal_uInt32 nNextVersionID = 0; |
98 | rStrm.ReadUInt32( nNextVersionID ); |
99 | nHeaderSize += sizeof(nNextVersionID); |
100 | } |
101 | rStrm.ReadUInt32( m_nSize ); |
102 | } |
103 | else |
104 | { |
105 | sal_uInt8 nFlagBits = 0; |
106 | sal_uInt16 VOType = 0; |
107 | rStrm.ReadUInt16( VOType ); |
108 | rStrm.ReadUInt8( nFlagBits ); |
109 | |
110 | m_nTag = static_cast<sal_uInt32>(VOType); |
111 | m_ID.ReadIndexed(&rStrm); |
112 | nHeaderSize = sizeof(VOType) + sizeof(nFlagBits) + m_ID.DiskSizeIndexed(); |
113 | |
114 | sal_uInt8 tmpByte; |
115 | sal_uInt16 tmpShort; |
116 | switch (nFlagBits & VERSION_BITS) |
117 | { |
118 | case ONE_BYTE_VERSION: |
119 | rStrm.ReadUInt8( tmpByte ); |
120 | nVersionID = static_cast<sal_uInt32>( tmpByte ); |
Value stored to 'nVersionID' is never read | |
121 | nHeaderSize++; |
122 | break; |
123 | |
124 | case TWO_BYTE_VERSION: |
125 | rStrm.ReadUInt16( tmpShort ); |
126 | nVersionID = static_cast<sal_uInt32>( tmpShort ); |
127 | nHeaderSize += 2; |
128 | break; |
129 | |
130 | case FOUR_BYTE_VERSION: |
131 | rStrm.ReadUInt32( nVersionID ); |
132 | nHeaderSize += 4; |
133 | break; |
134 | case DEFAULT_VERSION: //fall through |
135 | default: |
136 | nVersionID = 2; |
137 | break; // nothing |
138 | } |
139 | |
140 | switch (nFlagBits & REFCOUNT_BITS) |
141 | { |
142 | case ONE_BYTE_REFCOUNT: |
143 | rStrm.ReadUInt8( tmpByte ); |
144 | nRefCount = static_cast<sal_uInt32>( tmpByte ); |
145 | nHeaderSize++; |
146 | break; |
147 | |
148 | case TWO_BYTE_REFCOUNT: |
149 | rStrm.ReadUInt16( tmpShort ); |
150 | nRefCount = static_cast<sal_uInt32>( tmpShort ); |
151 | nHeaderSize += 2; |
152 | break; |
153 | |
154 | case FOUR_BYTE_REFCOUNT: //through |
155 | default: |
156 | rStrm.ReadUInt32( nRefCount ); |
157 | nHeaderSize += 4; |
158 | break; |
159 | } |
160 | |
161 | if (nFlagBits & HAS_PREVOFFSET) |
162 | { |
163 | rStrm.ReadUInt32( nNextVersionOffset ); |
164 | nHeaderSize += 4; |
165 | } |
166 | else |
167 | nNextVersionOffset = BAD_OFFSET0xFFFFFFFFUL; |
168 | |
169 | switch (nFlagBits & SIZE_BITS) |
170 | { |
171 | case ONE_BYTE_SIZE: |
172 | rStrm.ReadUInt8( tmpByte ); |
173 | m_nSize = static_cast<sal_uInt32>( tmpByte ); |
174 | nHeaderSize++; |
175 | break; |
176 | |
177 | case TWO_BYTE_SIZE: |
178 | rStrm.ReadUInt16( tmpShort ); |
179 | m_nSize = static_cast<sal_uInt32>(tmpShort); |
180 | nHeaderSize += 2; |
181 | break; |
182 | |
183 | case FOUR_BYTE_SIZE: //go through |
184 | default: |
185 | rStrm.ReadUInt32( m_nSize ); |
186 | nHeaderSize += 4; |
187 | break; |
188 | } |
189 | |
190 | if (nFlagBits & DATA_COMPRESSED) |
191 | { |
192 | m_bCompressed = true; |
193 | } |
194 | } |
195 | sal_Int64 nEndPos = rStrm.Tell(); |
196 | return (nStartPos + nHeaderSize == nEndPos); |
197 | } |
198 | |
199 | /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ |