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