1 /*
2  *  Copyright (C) 2012-2018 Team Kodi
3  *  This file is part of Kodi - https://kodi.tv
4  *
5  *  SPDX-License-Identifier: GPL-2.0-or-later
6  *  See LICENSES/README.md for more information.
7  */
8 
9 #pragma once
10 
11 #include "URL.h"
12 #include "filesystem/IFile.h"
13 
14 struct zip;
15 struct zip_file;
16 
17 namespace XFILE
18 {
19   class CAPKFile : public IFile
20   {
21   public:
22     CAPKFile();
23     ~CAPKFile() override = default;
24     bool Open(const CURL& url) override;
25     void Close() override;
26     bool Exists(const CURL& url) override;
27 
28     int64_t Seek(int64_t iFilePosition, int iWhence = SEEK_SET) override;
29     ssize_t Read(void* lpBuf, size_t uiBufSize) override;
30     int Stat(struct __stat64* buffer) override;
31     int Stat(const CURL& url, struct __stat64* buffer) override;
32     int64_t GetLength() override;
33     int64_t GetPosition() override;
34     int GetChunkSize() override;
35 
36   protected:
37     CURL              m_url;
38     int               m_zip_index;
39     int64_t           m_file_pos;
40     int64_t           m_file_size;
41     struct zip_file   *m_zip_file;
42     struct zip        *m_zip_archive;
43   };
44 }
45