LCOV - code coverage report
Current view: top level - modules/libjar/zipwriter - nsZipHeader.h (source / functions) Hit Total Coverage
Test: output.info Lines: 0 8 0.0 %
Date: 2017-07-14 16:53:18 Functions: 0 2 0.0 %
Legend: Lines: hit not hit

          Line data    Source code
       1             : /* This Source Code Form is subject to the terms of the Mozilla Public
       2             :  * License, v. 2.0. If a copy of the MPL was not distributed with this
       3             :  * file, You can obtain one at http://mozilla.org/MPL/2.0/.
       4             :  */
       5             : 
       6             : #ifndef _nsZipHeader_h_
       7             : #define _nsZipHeader_h_
       8             : 
       9             : #include "nsString.h"
      10             : #include "nsIOutputStream.h"
      11             : #include "nsIInputStream.h"
      12             : #include "nsIZipReader.h"
      13             : #include "mozilla/Attributes.h"
      14             : #include "mozilla/UniquePtr.h"
      15             : 
      16             : // High word is S_IFREG, low word is DOS file attribute
      17             : #define ZIP_ATTRS_FILE 0x80000000
      18             : // High word is S_IFDIR, low word is DOS dir attribute
      19             : #define ZIP_ATTRS_DIRECTORY 0x40000010
      20             : #define PERMISSIONS_FILE 0644
      21             : #define PERMISSIONS_DIR 0755
      22             : 
      23             : // Combine file type attributes with unix style permissions
      24             : #define ZIP_ATTRS(p, a) ((p & 0xfff) << 16) | a
      25             : 
      26             : class nsZipHeader final : public nsIZipEntry
      27             : {
      28           0 :     ~nsZipHeader()
      29           0 :     {
      30           0 :         mExtraField = nullptr;
      31           0 :         mLocalExtraField = nullptr;
      32           0 :     }
      33             : 
      34             : public:
      35             :     NS_DECL_ISUPPORTS
      36             :     NS_DECL_NSIZIPENTRY
      37             : 
      38           0 :     nsZipHeader() :
      39             :         mCRC(0),
      40             :         mCSize(0),
      41             :         mUSize(0),
      42             :         mEAttr(0),
      43             :         mOffset(0),
      44             :         mFieldLength(0),
      45             :         mLocalFieldLength(0),
      46             :         mVersionMade(0x0300 + 23), // Generated on Unix by v2.3 (matches infozip)
      47             :         mVersionNeeded(20), // Requires v2.0 to extract
      48             :         mFlags(0),
      49             :         mMethod(0),
      50             :         mTime(0),
      51             :         mDate(0),
      52             :         mDisk(0),
      53             :         mIAttr(0),
      54             :         mInited(false),
      55             :         mWriteOnClose(false),
      56             :         mExtraField(nullptr),
      57           0 :         mLocalExtraField(nullptr)
      58             :     {
      59           0 :     }
      60             : 
      61             :     uint32_t mCRC;
      62             :     uint32_t mCSize;
      63             :     uint32_t mUSize;
      64             :     uint32_t mEAttr;
      65             :     uint32_t mOffset;
      66             :     uint32_t mFieldLength;
      67             :     uint32_t mLocalFieldLength;
      68             :     uint16_t mVersionMade;
      69             :     uint16_t mVersionNeeded;
      70             :     uint16_t mFlags;
      71             :     uint16_t mMethod;
      72             :     uint16_t mTime;
      73             :     uint16_t mDate;
      74             :     uint16_t mDisk;
      75             :     uint16_t mIAttr;
      76             :     bool mInited;
      77             :     bool mWriteOnClose;
      78             :     nsCString mName;
      79             :     nsCString mComment;
      80             :     mozilla::UniquePtr<uint8_t[]> mExtraField;
      81             :     mozilla::UniquePtr<uint8_t[]> mLocalExtraField;
      82             : 
      83             :     void Init(const nsACString & aPath, PRTime aDate, uint32_t aAttr,
      84             :               uint32_t aOffset);
      85             :     uint32_t GetFileHeaderLength();
      86             :     nsresult WriteFileHeader(nsIOutputStream *aStream);
      87             :     uint32_t GetCDSHeaderLength();
      88             :     nsresult WriteCDSHeader(nsIOutputStream *aStream);
      89             :     nsresult ReadCDSHeader(nsIInputStream *aStream);
      90             :     const uint8_t * GetExtraField(uint16_t aTag, bool aLocal, uint16_t *aBlockSize);
      91             :     nsresult PadExtraField(uint32_t aOffset, uint16_t aAlignSize);
      92             : };
      93             : 
      94             : #endif

Generated by: LCOV version 1.13