kodi
Filesystem.h
1 /*
2  * Copyright (C) 2005-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 "addons/kodi-dev-kit/include/kodi/Filesystem.h"
12 
13 extern "C"
14 {
15 
16 struct VFSDirEntry;
18 
19 namespace ADDON
20 {
21 
23 {
24  static void Init(AddonGlobalInterface* addonInterface);
25  static void DeInit(AddonGlobalInterface* addonInterface);
26 
27  static unsigned int TranslateFileReadBitsToKodi(unsigned int addonFlags);
28 
39  static bool can_open_directory(void* kodiBase, const char* url);
41  static bool create_directory(void* kodiBase, const char* path);
42  static bool directory_exists(void* kodiBase, const char* path);
43  static bool remove_directory(void* kodiBase, const char* path);
44  static bool remove_directory_recursive(void* kodiBase, const char* path);
45  static bool get_directory(void* kodiBase,
46  const char* path,
47  const char* mask,
48  struct VFSDirEntry** items,
49  unsigned int* num_items);
50  static void free_directory(void* kodiBase, struct VFSDirEntry* items, unsigned int num_items);
51 
52  static bool file_exists(void* kodiBase, const char* filename, bool useCache);
53  static bool stat_file(void* kodiBase, const char* filename, struct STAT_STRUCTURE* buffer);
54  static bool delete_file(void* kodiBase, const char* filename);
55  static bool rename_file(void* kodiBase, const char* filename, const char* newFileName);
56  static bool copy_file(void* kodiBase, const char* filename, const char* dest);
57  static char* get_file_md5(void* kodiBase, const char* filename);
58  static char* get_cache_thumb_name(void* kodiBase, const char* filename);
59  static char* make_legal_filename(void* kodiBase, const char* filename);
60  static char* make_legal_path(void* kodiBase, const char* path);
61  static char* translate_special_protocol(void* kodiBase, const char* strSource);
62  static bool get_disk_space(
63  void* kodiBase, const char* path, uint64_t* capacity, uint64_t* free, uint64_t* available);
64  static bool is_internet_stream(void* kodiBase, const char* path, bool strictCheck);
65  static bool is_on_lan(void* kodiBase, const char* path);
66  static bool is_remote(void* kodiBase, const char* path);
67  static bool is_local(void* kodiBase, const char* path);
68  static bool is_url(void* kodiBase, const char* path);
69 
70  static bool get_http_header(void* kodiBase, const char* url, struct KODI_HTTP_HEADER* headers);
71  static bool get_mime_type(void* kodiBase, const char* url, char** content, const char* useragent);
72  static bool get_content_type(void* kodiBase,
73  const char* url,
74  char** content,
75  const char* useragent);
76  static bool get_cookies(void* kodiBase, const char* url, char** cookies);
77 
81  static bool http_header_create(void* kodiBase, struct KODI_HTTP_HEADER* headers);
83  static void http_header_free(void* kodiBase, struct KODI_HTTP_HEADER* headers);
84 
85  static char* http_header_get_value(void* kodiBase, void* handle, const char* param);
86  static char** http_header_get_values(void* kodiBase,
87  void* handle,
88  const char* param,
89  int* length);
90  static char* http_header_get_header(void* kodiBase, void* handle);
91  static char* http_header_get_mime_type(void* kodiBase, void* handle);
92  static char* http_header_get_charset(void* kodiBase, void* handle);
93  static char* http_header_get_proto_line(void* kodiBase, void* handle);
95 
99  static void* open_file(void* kodiBase, const char* filename, unsigned int flags);
101  static void* open_file_for_write(void* kodiBase, const char* filename, bool overwrite);
102  static ssize_t read_file(void* kodiBase, void* file, void* ptr, size_t size);
103  static bool read_file_string(void* kodiBase, void* file, char* szLine, int lineLength);
104  static ssize_t write_file(void* kodiBase, void* file, const void* ptr, size_t size);
105  static void flush_file(void* kodiBase, void* file);
106  static int64_t seek_file(void* kodiBase, void* file, int64_t position, int whence);
107  static int truncate_file(void* kodiBase, void* file, int64_t size);
108  static int64_t get_file_position(void* kodiBase, void* file);
109  static int64_t get_file_length(void* kodiBase, void* file);
110  static double get_file_download_speed(void* kodiBase, void* file);
111  static void close_file(void* kodiBase, void* file);
112  static int get_file_chunk_size(void* kodiBase, void* file);
113  static bool io_control_get_seek_possible(void* kodiBase, void* file);
114  static bool io_control_get_cache_status(void* kodiBase,
115  void* file,
116  struct VFS_CACHE_STATUS_DATA* status);
117  static bool io_control_set_cache_rate(void* kodiBase, void* file, uint32_t rate);
118  static bool io_control_set_retry(void* kodiBase, void* file, bool retry);
119  static char** get_property_values(
120  void* kodiBase, void* file, int type, const char* name, int* numValues);
121 
122  static void* curl_create(void* kodiBase, const char* url);
123  static bool curl_add_option(
124  void* kodiBase, void* file, int type, const char* name, const char* value);
125  static bool curl_open(void* kodiBase, void* file, unsigned int flags);
128 };
129 
130 } /* namespace ADDON */
131 } /* extern "C" */
Definition: filesystem.h:219
Definition: Filesystem.h:22
Main structure passed from kodi to addon with basic information needed to create add-on.
Definition: addon_base.h:378
static void * open_file(void *kodiBase, const char *filename, unsigned int flags)
Callback functions addon class kodi::vfs::CFile.
Definition: Filesystem.cpp:807
Definition: filesystem.h:176
static bool http_header_create(void *kodiBase, struct KODI_HTTP_HEADER *headers)
Callback functions addon class kodi::vfs::CFile.
Definition: Filesystem.cpp:652
Definition: filesystem.h:188
Definition: filesystem.h:233
Definition: Addon.cpp:39
static bool can_open_directory(void *kodiBase, const char *url)
callback functions from add-on to kodi
Definition: Filesystem.cpp:159