libgphoto2 photo camera library (libgphoto2) API 2.5.29
gphoto2-filesys.h
Go to the documentation of this file.
1
30#ifndef LIBGPHOTO2_GPHOTO2_FILESYS_H
31#define LIBGPHOTO2_GPHOTO2_FILESYS_H
32
33#include <time.h>
34#include <stdint.h>
35
39
40#ifdef __cplusplus
41extern "C" {
42#endif /* __cplusplus */
43
55typedef enum {
64 GP_FILE_INFO_ALL = 0xFF
66
72typedef enum {
76 GP_FILE_PERM_ALL = 0xFF
78
84typedef enum {
88
95typedef struct _CameraFileInfoFile {
98 uint64_t size;
99 char type[64];
100 uint32_t width;
101 uint32_t height;
103 time_t mtime;
105
115 uint64_t size;
116 char type[64];
118 uint32_t width;
119 uint32_t height;
121
128typedef struct _CameraFileInfoAudio {
131 uint64_t size;
132 char type[64];
134
141typedef struct _CameraFileInfo {
142 CameraFileInfoPreview preview;
146
153typedef enum {
154 GP_STORAGEINFO_BASE = (1<<0),
157 GP_STORAGEINFO_LABEL = (1<<1),
168
175typedef enum {
182
189typedef enum {
194
201typedef enum {
207
216 char basedir[256];
217 char label[256];
218 char description[256];
222 uint64_t capacitykbytes;
223 uint64_t freekbytes;
224 uint64_t freeimages;
226
235
238
239/* Manual editing */
240int gp_filesystem_append (CameraFilesystem *fs, const char *folder,
241 const char *filename, GPContext *context);
243 const char *folder, const char *filename,
244 CameraFileInfo info, GPContext *context);
246 const char *folder, const char *filename,
247 GPContext *context);
249 const char *folder, const char *filename,
250 CameraFileType type,
251 CameraFile *file, GPContext *context);
252int gp_filesystem_delete_file_noop (CameraFilesystem *fs, const char *folder,
253 const char *filename, GPContext *context);
255
256/* Information retrieval */
257int gp_filesystem_count (CameraFilesystem *fs, const char *folder,
258 GPContext *context);
259int gp_filesystem_name (CameraFilesystem *fs, const char *folder,
260 int filenumber, const char **filename,
261 GPContext *context);
262int gp_filesystem_get_folder (CameraFilesystem *fs, const char *filename,
263 char **folder, GPContext *context);
264int gp_filesystem_number (CameraFilesystem *fs, const char *folder,
265 const char *filename, GPContext *context);
266
267/* Listings */
268typedef int (*CameraFilesystemListFunc) (CameraFilesystem *fs,
269 const char *folder, CameraList *list,
270 void *data, GPContext *context);
271int gp_filesystem_list_files (CameraFilesystem *fs, const char *folder,
272 CameraList *list, GPContext *context);
273int gp_filesystem_list_folders (CameraFilesystem *fs, const char *folder,
274 CameraList *list, GPContext *context);
275
276/* File information */
277typedef int (*CameraFilesystemSetInfoFunc) (CameraFilesystem *fs,
278 const char *folder,
279 const char *filename,
280 CameraFileInfo info, void *data,
281 GPContext *context);
282typedef int (*CameraFilesystemGetInfoFunc) (CameraFilesystem *fs,
283 const char *folder,
284 const char *filename,
285 CameraFileInfo *info, void *data,
286 GPContext *context);
287int gp_filesystem_get_info (CameraFilesystem *fs, const char *folder,
288 const char *filename, CameraFileInfo *info,
289 GPContext *context);
290int gp_filesystem_set_info (CameraFilesystem *fs, const char *folder,
291 const char *filename, CameraFileInfo info,
292 GPContext *context);
293
294/* Files */
295typedef int (*CameraFilesystemGetFileFunc) (CameraFilesystem *fs,
296 const char *folder,
297 const char *filename,
298 CameraFileType type,
299 CameraFile *file, void *data,
300 GPContext *context);
301typedef int (*CameraFilesystemReadFileFunc) (CameraFilesystem *fs,
302 const char *folder,
303 const char *filename,
304 CameraFileType type,
305 uint64_t offset,
306 char *buf,
307 uint64_t *size,
308 void *data,
309 GPContext *context);
310typedef int (*CameraFilesystemDeleteFileFunc) (CameraFilesystem *fs,
311 const char *folder,
312 const char *filename,
313 void *data, GPContext *context);
314int gp_filesystem_get_file (CameraFilesystem *fs, const char *folder,
315 const char *filename, CameraFileType type,
316 CameraFile *file, GPContext *context);
317int gp_filesystem_read_file (CameraFilesystem *fs, const char *folder,
318 const char *filename, CameraFileType type,
319 uint64_t offset, char *buf, uint64_t *size,
320 GPContext *context);
321int gp_filesystem_delete_file (CameraFilesystem *fs, const char *folder,
322 const char *filename, GPContext *context);
323
324/* Folders */
325typedef int (*CameraFilesystemPutFileFunc) (CameraFilesystem *fs,
326 const char *folder,
327 const char *filename,
328 CameraFileType type,
329 CameraFile *file,
330 void *data,
331 GPContext *context);
332typedef int (*CameraFilesystemDeleteAllFunc) (CameraFilesystem *fs,
333 const char *folder, void *data,
334 GPContext *context);
335typedef int (*CameraFilesystemDirFunc) (CameraFilesystem *fs,
336 const char *folder,
337 const char *name, void *data,
338 GPContext *context);
339
340typedef int (*CameraFilesystemStorageInfoFunc) (CameraFilesystem *fs,
342 int *nrofstorageinformations,
343 void *data, GPContext *context);
344
347 int *nrofstorageinformations,
348 GPContext *context);
349
352 CameraFilesystemListFunc file_list_func;
353 CameraFilesystemListFunc folder_list_func;
354 CameraFilesystemPutFileFunc put_file_func;
355 CameraFilesystemDeleteAllFunc delete_all_func;
356 CameraFilesystemGetInfoFunc get_info_func;
357 CameraFilesystemSetInfoFunc set_info_func;
358 CameraFilesystemDirFunc make_dir_func;
359 CameraFilesystemDirFunc remove_dir_func;
360 CameraFilesystemGetFileFunc get_file_func;
361 CameraFilesystemReadFileFunc read_file_func;
362 CameraFilesystemDeleteFileFunc del_file_func;
363 CameraFilesystemStorageInfoFunc storage_info_func;
364
365 /* for later use. Remove one if you add a new function */
366 void *unused[31];
367};
370 void *data);
371int gp_filesystem_put_file (CameraFilesystem *fs, const char *folder, const char *filename,
372 CameraFileType type, CameraFile *file, GPContext *context);
373int gp_filesystem_delete_all (CameraFilesystem *fs, const char *folder,
374 GPContext *context);
375int gp_filesystem_make_dir (CameraFilesystem *fs, const char *folder,
376 const char *name, GPContext *context);
377int gp_filesystem_remove_dir (CameraFilesystem *fs, const char *folder,
378 const char *name, GPContext *context);
379
380/* For debugging */
382
383#ifdef __cplusplus
384}
385#endif /* __cplusplus */
386
387#endif /* !defined(LIBGPHOTO2_GPHOTO2_FILESYS_H) */
Context callback operation functions.
Abstracted gphoto2 file operations.
CameraFileType
The type of view on the specified file.
Definition: gphoto2-file.h:73
int gp_filesystem_get_folder(CameraFilesystem *fs, const char *filename, char **folder, GPContext *context)
Search a folder that contains a given filename.
Definition: gphoto2-filesys.c:1500
int gp_filesystem_free(CameraFilesystem *fs)
Free filesystem struct.
Definition: gphoto2-filesys.c:674
int gp_filesystem_dump(CameraFilesystem *fs)
Dump the current filesystem.
Definition: gphoto2-filesys.c:790
CameraFilePermissions
Bitmask containing the file permission flags.
Definition: gphoto2-filesys.h:72
@ GP_FILE_PERM_ALL
Internal.
Definition: gphoto2-filesys.h:76
@ GP_FILE_PERM_DELETE
Write permissions.
Definition: gphoto2-filesys.h:75
@ GP_FILE_PERM_READ
Read permissions.
Definition: gphoto2-filesys.h:74
@ GP_FILE_PERM_NONE
No permissions.
Definition: gphoto2-filesys.h:73
int gp_filesystem_new(CameraFilesystem **fs)
Create a new filesystem struct.
Definition: gphoto2-filesys.c:643
int gp_filesystem_set_info(CameraFilesystem *fs, const char *folder, const char *filename, CameraFileInfo info, GPContext *context)
Set information about a file.
Definition: gphoto2-filesys.c:2383
int gp_filesystem_make_dir(CameraFilesystem *fs, const char *folder, const char *name, GPContext *context)
Create a subfolder within a folder.
Definition: gphoto2-filesys.c:1168
int gp_filesystem_delete_file(CameraFilesystem *fs, const char *folder, const char *filename, GPContext *context)
Delete a file from a folder.
Definition: gphoto2-filesys.c:1098
int gp_filesystem_set_info_noop(CameraFilesystem *fs, const char *folder, const char *filename, CameraFileInfo info, GPContext *context)
Store the file information in the virtual fs.
Definition: gphoto2-filesys.c:2320
struct _CameraFileInfo CameraFileInfo
File information structure.
int gp_filesystem_reset(CameraFilesystem *fs)
Clear the filesystem.
Definition: gphoto2-filesys.c:615
struct _CameraFileInfoAudio CameraFileInfoAudio
File information of an audio file.
struct _CameraFileInfoPreview CameraFileInfoPreview
File information of a preview file.
int gp_filesystem_set_info_dirty(CameraFilesystem *fs, const char *folder, const char *filename, GPContext *context)
Mark the file info as dirty.
Definition: gphoto2-filesys.c:2352
int gp_filesystem_delete_all(CameraFilesystem *fs, const char *folder, GPContext *context)
Delete all files in specified folder.
Definition: gphoto2-filesys.c:876
CameraFileInfoFields
Bitmask on what fields are set in the CameraFileInfo structure.
Definition: gphoto2-filesys.h:55
@ GP_FILE_INFO_WIDTH
The width is set.
Definition: gphoto2-filesys.h:59
@ GP_FILE_INFO_HEIGHT
The height is set.
Definition: gphoto2-filesys.h:60
@ GP_FILE_INFO_TYPE
The MIME type is set.
Definition: gphoto2-filesys.h:57
@ GP_FILE_INFO_STATUS
The status is set (downloaded).
Definition: gphoto2-filesys.h:62
@ GP_FILE_INFO_NONE
No fields set.
Definition: gphoto2-filesys.h:56
@ GP_FILE_INFO_ALL
All possible fields set. Internal.
Definition: gphoto2-filesys.h:64
@ GP_FILE_INFO_SIZE
The filesize is set.
Definition: gphoto2-filesys.h:58
@ GP_FILE_INFO_MTIME
The modification time is set.
Definition: gphoto2-filesys.h:63
@ GP_FILE_INFO_PERMISSIONS
The access permissions are set.
Definition: gphoto2-filesys.h:61
int gp_filesystem_set_funcs(CameraFilesystem *fs, CameraFilesystemFuncs *funcs, void *data)
Set all filesystem related function pointers.
Definition: gphoto2-filesys.c:1809
int gp_filesystem_get_file(CameraFilesystem *fs, const char *folder, const char *filename, CameraFileType type, CameraFile *file, GPContext *context)
Get file data from the filesystem.
Definition: gphoto2-filesys.c:1619
int gp_filesystem_set_file_noop(CameraFilesystem *fs, const char *folder, const char *filename, CameraFileType type, CameraFile *file, GPContext *context)
Attach file content to a specified file.
Definition: gphoto2-filesys.c:2185
int gp_filesystem_count(CameraFilesystem *fs, const char *folder, GPContext *context)
Count files a folder of a filesystem.
Definition: gphoto2-filesys.c:1061
struct _CameraFileInfoFile CameraFileInfoFile
File information of a regular file.
int gp_filesystem_get_storageinfo(CameraFilesystem *fs, CameraStorageInformation **, int *nrofstorageinformations, GPContext *context)
Get the storage information about this filesystem.
Definition: gphoto2-filesys.c:2465
CameraFileStatus
Possible status values.
Definition: gphoto2-filesys.h:84
@ GP_FILE_STATUS_NOT_DOWNLOADED
Definition: gphoto2-filesys.h:85
@ GP_FILE_STATUS_DOWNLOADED
Definition: gphoto2-filesys.h:86
struct _CameraStorageInformation CameraStorageInformation
Storage information structue.
int gp_filesystem_list_files(CameraFilesystem *fs, const char *folder, CameraList *list, GPContext *context)
Get the list of files in a folder.
Definition: gphoto2-filesys.c:937
int gp_filesystem_delete_file_noop(CameraFilesystem *fs, const char *folder, const char *filename, GPContext *context)
Delete a virtal file from a folder in the filesystem.
Definition: gphoto2-filesys.c:1142
int gp_filesystem_name(CameraFilesystem *fs, const char *folder, int filenumber, const char **filename, GPContext *context)
Lookup the filename of an indexed file within a folder.
Definition: gphoto2-filesys.c:1323
CameraStorageType
Hardware storage types.
Definition: gphoto2-filesys.h:175
@ GP_STORAGEINFO_ST_FIXED_ROM
A fixed ROM storage.
Definition: gphoto2-filesys.h:177
@ GP_STORAGEINFO_ST_REMOVABLE_ROM
A removable ROM storage.
Definition: gphoto2-filesys.h:178
@ GP_STORAGEINFO_ST_UNKNOWN
Unknown storage type.
Definition: gphoto2-filesys.h:176
@ GP_STORAGEINFO_ST_FIXED_RAM
A fixed RAM storage. (e.g. SDRAM)
Definition: gphoto2-filesys.h:179
@ GP_STORAGEINFO_ST_REMOVABLE_RAM
A removable RAM storage. (any kind of cards etc)
Definition: gphoto2-filesys.h:180
int gp_filesystem_get_info(CameraFilesystem *fs, const char *folder, const char *filename, CameraFileInfo *info, GPContext *context)
Get information about the specified file.
Definition: gphoto2-filesys.c:1842
int gp_filesystem_put_file(CameraFilesystem *fs, const char *folder, const char *filename, CameraFileType type, CameraFile *file, GPContext *context)
Upload a file to a folder on the device filesystem.
Definition: gphoto2-filesys.c:1277
int gp_filesystem_list_folders(CameraFilesystem *fs, const char *folder, CameraList *list, GPContext *context)
List all subfolders within a filesystem folder.
Definition: gphoto2-filesys.c:1003
CameraStorageInfoFields
Storage information flags.
Definition: gphoto2-filesys.h:153
@ GP_STORAGEINFO_FREESPACEKBYTES
Free space in kbytes.
Definition: gphoto2-filesys.h:165
@ GP_STORAGEINFO_FILESYSTEMTYPE
Filesystem type.
Definition: gphoto2-filesys.h:163
@ GP_STORAGEINFO_MAXCAPACITY
Maximum capacity in kbytes.
Definition: gphoto2-filesys.h:164
@ GP_STORAGEINFO_ACCESS
Access permissions.
Definition: gphoto2-filesys.h:161
@ GP_STORAGEINFO_LABEL
Label of the filesystem. Could also be a DOS label.
Definition: gphoto2-filesys.h:157
@ GP_STORAGEINFO_FREESPACEIMAGES
Free space in images.
Definition: gphoto2-filesys.h:166
@ GP_STORAGEINFO_DESCRIPTION
More verbose description.
Definition: gphoto2-filesys.h:160
@ GP_STORAGEINFO_BASE
The base directory. Usually / if just 1 storage is attached.
Definition: gphoto2-filesys.h:154
@ GP_STORAGEINFO_STORAGETYPE
Hardware type.
Definition: gphoto2-filesys.h:162
CameraStorageFilesystemType
Filesystem hierarchy types.
Definition: gphoto2-filesys.h:201
@ GP_STORAGEINFO_FST_GENERICFLAT
Generic flat storage (all in 1 directory).
Definition: gphoto2-filesys.h:203
@ GP_STORAGEINFO_FST_GENERICHIERARCHICAL
Generic tree hierarchy.
Definition: gphoto2-filesys.h:204
@ GP_STORAGEINFO_FST_DCF
DCIM style storage.
Definition: gphoto2-filesys.h:205
@ GP_STORAGEINFO_FST_UNDEFINED
Undefined or unknown filesystem hierarchy.
Definition: gphoto2-filesys.h:202
int gp_filesystem_read_file(CameraFilesystem *fs, const char *folder, const char *filename, CameraFileType type, uint64_t offset, char *buf, uint64_t *size, GPContext *context)
Get partial file data from the filesystem.
Definition: gphoto2-filesys.c:1752
CameraStorageAccessType
Storage access modes.
Definition: gphoto2-filesys.h:189
@ GP_STORAGEINFO_AC_READONLY
Storage is Ready Only.
Definition: gphoto2-filesys.h:191
@ GP_STORAGEINFO_AC_READWRITE
Storage is Read / Write.
Definition: gphoto2-filesys.h:190
@ GP_STORAGEINFO_AC_READONLY_WITH_DELETE
Storage is Ready Only, but allows Delete.
Definition: gphoto2-filesys.h:192
int gp_filesystem_remove_dir(CameraFilesystem *fs, const char *folder, const char *name, GPContext *context)
Remove a subfolder from within a folder.
Definition: gphoto2-filesys.c:1202
int gp_filesystem_number(CameraFilesystem *fs, const char *folder, const char *filename, GPContext *context)
Get the index of a file in specified folder.
Definition: gphoto2-filesys.c:1369
File structure.
File information of an audio file.
Definition: gphoto2-filesys.h:128
CameraFileStatus status
Status of the preview file.
Definition: gphoto2-filesys.h:130
uint64_t size
Size of the audio file.
Definition: gphoto2-filesys.h:131
char type[64]
MIME type of the audio file.
Definition: gphoto2-filesys.h:132
CameraFileInfoFields fields
Bitmask containing the set members.
Definition: gphoto2-filesys.h:129
File information of a regular file.
Definition: gphoto2-filesys.h:95
CameraFileStatus status
Status of the file.
Definition: gphoto2-filesys.h:97
CameraFileInfoFields fields
Bitmask containing the set members.
Definition: gphoto2-filesys.h:96
CameraFilePermissions permissions
Permissions of the file.
Definition: gphoto2-filesys.h:102
uint64_t size
Size of the file.
Definition: gphoto2-filesys.h:98
char type[64]
MIME type of the file.
Definition: gphoto2-filesys.h:99
uint32_t width
Height of the file.
Definition: gphoto2-filesys.h:100
time_t mtime
Modification time of the file.
Definition: gphoto2-filesys.h:103
uint32_t height
Width of the file.
Definition: gphoto2-filesys.h:101
File information of a preview file.
Definition: gphoto2-filesys.h:112
CameraFileStatus status
Status of the preview.
Definition: gphoto2-filesys.h:114
uint32_t width
Width of the preview.
Definition: gphoto2-filesys.h:118
uint32_t height
Height of the preview.
Definition: gphoto2-filesys.h:119
char type[64]
MIME type of the preview.
Definition: gphoto2-filesys.h:116
CameraFileInfoFields fields
Bitmask containing the set members.
Definition: gphoto2-filesys.h:113
uint64_t size
Size of the preview.
Definition: gphoto2-filesys.h:115
File information structure.
Definition: gphoto2-filesys.h:141
Definition: gphoto2-filesys.h:351
The internal camera filesystem structure.
Definition: gphoto2-filesys.c:226
Definition: gphoto2-list.c:47
Storage information structue.
Definition: gphoto2-filesys.h:214
uint64_t freekbytes
Free space in kbytes.
Definition: gphoto2-filesys.h:223
CameraStorageInfoFields fields
Bitmask of struct members that are specified.
Definition: gphoto2-filesys.h:215
char description[256]
Description of the storage.
Definition: gphoto2-filesys.h:218
char basedir[256]
Basedirectory of the storage. Will be "/" if just 1 storage on the camera.
Definition: gphoto2-filesys.h:216
uint64_t capacitykbytes
Total capacity in kbytes.
Definition: gphoto2-filesys.h:222
uint64_t freeimages
Free space in images (guessed by camera).
Definition: gphoto2-filesys.h:224
CameraStorageType type
Hardware type of the storage.
Definition: gphoto2-filesys.h:219
CameraStorageFilesystemType fstype
Hierarchy type of the filesystem.
Definition: gphoto2-filesys.h:220
CameraStorageAccessType access
Access permissions.
Definition: gphoto2-filesys.h:221
char label[256]
Label of the storage. Similar to DOS label.
Definition: gphoto2-filesys.h:217
Definition: gphoto2-context.c:39