#include "config.h"#include <gphoto2/gphoto2-filesys.h>#include <stdlib.h>#include <string.h>#include <stdio.h>#include <unistd.h>#include <gphoto2/gphoto2-result.h>#include <gphoto2/gphoto2-port-log.h>#include <gphoto2/gphoto2-setting.h>#include <limits.h>Include dependency graph for gphoto2-filesys.c:

Data Structures | |
| struct | _CameraFilesystemFile |
| struct | CameraFilesystemFolder |
| struct | _CameraFilesystem |
| The internal camera filesystem structure. More... | |
Defines | |
| #define | _BSD_SOURCE |
| #define | textdomain(String) (String) |
| #define | gettext(String) (String) |
| #define | dgettext(Domain, Message) (Message) |
| #define | dcgettext(Domain, Message, Type) (Message) |
| #define | bindtextdomain(Domain, Directory) (Domain) |
| #define | _(String) (String) |
| #define | N_(String) (String) |
| #define | GP_MODULE "libgphoto2" |
| #define | PATH_MAX 4096 |
| #define | PICTURES_TO_KEEP 2 |
| #define | MIN(a, b) (((a) < (b)) ? (a) : (b)) |
| #define | CHECK_NULL(r) {if (!(r)) return (GP_ERROR_BAD_PARAMETERS);} |
| #define | CR(result) {int r = (result); if (r < 0) return (r);} |
| #define | CHECK_MEM(m) {if (!(m)) return (GP_ERROR_NO_MEMORY);} |
| #define | CL(result, list) |
| #define | CU(result, file) |
| #define | CC(context) |
| #define | CA(f, c) |
| #define | CBO(bufsize, string_len, msg) |
Typedefs | |
| typedef _CameraFilesystemFile | CameraFilesystemFile |
Functions | |
| int | gp_filesystem_reset (CameraFilesystem *fs) |
| Clear the filesystem. | |
| int | gp_filesystem_new (CameraFilesystem **fs) |
| Create a new filesystem struct. | |
| int | gp_filesystem_free (CameraFilesystem *fs) |
| Free filesystem struct. | |
| int | gp_filesystem_append (CameraFilesystem *fs, const char *folder, const char *filename, GPContext *context) |
| Append a file to a folder in a filesystem. | |
| int | gp_filesystem_dump (CameraFilesystem *fs) |
| Dump the current filesystem. | |
| int | gp_filesystem_delete_all (CameraFilesystem *fs, const char *folder, GPContext *context) |
| Delete all files in specified folder. | |
| int | gp_filesystem_list_files (CameraFilesystem *fs, const char *folder, CameraList *list, GPContext *context) |
| Get the list of files in a folder. | |
| int | gp_filesystem_list_folders (CameraFilesystem *fs, const char *folder, CameraList *list, GPContext *context) |
| List all subfolders within a filesystem folder. | |
| int | gp_filesystem_count (CameraFilesystem *fs, const char *folder, GPContext *context) |
| Count files a folder of a filesystem. | |
| int | gp_filesystem_delete_file (CameraFilesystem *fs, const char *folder, const char *filename, GPContext *context) |
| Delete a file from a folder. | |
| 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. | |
| int | gp_filesystem_make_dir (CameraFilesystem *fs, const char *folder, const char *name, GPContext *context) |
| Create a subfolder within a folder. | |
| int | gp_filesystem_remove_dir (CameraFilesystem *fs, const char *folder, const char *name, GPContext *context) |
| Remove a subfolder from within a folder. | |
| int | gp_filesystem_put_file (CameraFilesystem *fs, const char *folder, CameraFile *file, GPContext *context) |
| Upload a file to a folder on the device filesystem. | |
| 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. | |
| int | gp_filesystem_number (CameraFilesystem *fs, const char *folder, const char *filename, GPContext *context) |
| Get the index of a file in specified folder. | |
| int | gp_filesystem_get_folder (CameraFilesystem *fs, const char *filename, const char **folder, GPContext *context) |
| Search a folder that contains a given filename. | |
| int | gp_filesystem_set_list_funcs (CameraFilesystem *fs, CameraFilesystemListFunc file_list_func, CameraFilesystemListFunc folder_list_func, void *data) |
| Set the functions to list folders and files. | |
| int | gp_filesystem_set_file_funcs (CameraFilesystem *fs, CameraFilesystemGetFileFunc get_file_func, CameraFilesystemDeleteFileFunc del_file_func, void *data) |
| Set camera filesystem file related functions. | |
| int | gp_filesystem_set_folder_funcs (CameraFilesystem *fs, CameraFilesystemPutFileFunc put_file_func, CameraFilesystemDeleteAllFunc delete_all_func, CameraFilesystemDirFunc make_dir_func, CameraFilesystemDirFunc remove_dir_func, void *data) |
| Set folder related functions of the filesystem. | |
| 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. | |
| int | gp_filesystem_set_info_funcs (CameraFilesystem *fs, CameraFilesystemGetInfoFunc get_info_func, CameraFilesystemSetInfoFunc set_info_func, void *data) |
| Set file information functions. | |
| int | gp_filesystem_set_funcs (CameraFilesystem *fs, CameraFilesystemFuncs *funcs, void *data) |
| Set all filesystem related function pointers. | |
| int | gp_filesystem_get_info (CameraFilesystem *fs, const char *folder, const char *filename, CameraFileInfo *info, GPContext *context) |
| Get information about the specified file. | |
| int | gp_filesystem_set_file_noop (CameraFilesystem *fs, const char *folder, CameraFile *file, GPContext *context) |
| Attach file content to a specified file. | |
| int | gp_filesystem_set_info_noop (CameraFilesystem *fs, const char *folder, CameraFileInfo info, GPContext *context) |
| Store the file information in the virtual fs. | |
| int | gp_filesystem_set_info (CameraFilesystem *fs, const char *folder, const char *filename, CameraFileInfo info, GPContext *context) |
| Set information about a file. | |
| int | gp_filesystem_get_storageinfo (CameraFilesystem *fs, CameraStorageInformation **storageinfo, int *nrofstorageinfos, GPContext *context) |
| Get the storage information about this filesystem. | |
| #define CA | ( | f, | |||
| c | ) |
Value:
{ \
if ((f)[0] != '/') { \
gp_context_error ((c), \
_("The path '%s' is not absolute."), (f)); \
return (GP_ERROR_PATH_NOT_ABSOLUTE); \
} \
}
| #define CBO | ( | bufsize, | |||
| string_len, | |||||
| msg | ) |
Value:
if (bufsize <= string_len) { \ GP_DEBUG ("%s: strlen(...) = %d " \ ">= sizeof(buffer) = %d", \ msg, (int)string_len, (int)bufsize \ ); \ gp_context_error (context, "preventing buffer overflow"); \ return GP_ERROR; \ }
| #define CC | ( | context | ) |
Value:
{ \
if (gp_context_cancel (context) == GP_CONTEXT_FEEDBACK_CANCEL) \
return GP_ERROR_CANCEL; \
}
| #define CL | ( | result, | |||
| list | ) |
Value:
{ \
int r = (result); \
\
if (r < 0) { \
gp_list_free (list); \
return (r); \
} \
}
| #define CU | ( | result, | |||
| file | ) |
Value:
{ \
int r = (result); \
\
if (r < 0) { \
gp_file_unref (file); \
return (r); \
} \
}
| #define PICTURES_TO_KEEP 2 |
The default number of pictures to keep in the internal cache, can be overriden by settings.
| int gp_filesystem_append | ( | CameraFilesystem * | fs, | |
| const char * | folder, | |||
| const char * | filename, | |||
| GPContext * | context | |||
| ) |
Append a file to a folder in a filesystem.
| fs | a CameraFilesystem | |
| folder | the folder where to put the file in | |
| filename | filename of the file | |
| context | a GPContext |
| int gp_filesystem_count | ( | CameraFilesystem * | fs, | |
| const char * | folder, | |||
| GPContext * | context | |||
| ) |
Count files a folder of a filesystem.
| fs | a CameraFilesystem | |
| folder | a folder in which to count the files | |
| context | a GPContext |
| int gp_filesystem_delete_all | ( | CameraFilesystem * | fs, | |
| const char * | folder, | |||
| GPContext * | context | |||
| ) |
Delete all files in specified folder.
| fs | a CameraFilesystem | |
| folder | the folder in which to delete all files | |
| context | a GPContext |
| int gp_filesystem_delete_file | ( | CameraFilesystem * | fs, | |
| const char * | folder, | |||
| const char * | filename, | |||
| GPContext * | context | |||
| ) |
Delete a file from a folder.
| fs | a CameraFilesystem | |
| folder | a folder in which to delete the file | |
| filename | the name of the file to delete | |
| context | a GPContext |
| 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.
| fs | a CameraFilesystem | |
| folder | a folder in which to delete the file | |
| filename | the name of the file to delete | |
| context | a GPContext |
| int gp_filesystem_dump | ( | CameraFilesystem * | fs | ) |
Dump the current filesystem.
| fs | the CameraFilesystem |
| int gp_filesystem_free | ( | CameraFilesystem * | fs | ) |
Free filesystem struct.
| fs | a CameraFilesystem |
| 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.
| fs | a CameraFilesystem | |
| folder | the folder in which the file can be found | |
| filename | the name of the file to download | |
| type | the type of the file | |
| file | the file that receives the data | |
| context | a GPContext |
| int gp_filesystem_get_folder | ( | CameraFilesystem * | fs, | |
| const char * | filename, | |||
| const char ** | folder, | |||
| GPContext * | context | |||
| ) |
Search a folder that contains a given filename.
| fs | a CameraFilesystem | |
| filename | the name of the file to search in the fs | |
| folder | pointer to value where the string is stored in | |
| context | a GPContext |
Note that you get a reference to the string stored in the filesystem structure, so do not free it yourself.
| int gp_filesystem_get_info | ( | CameraFilesystem * | fs, | |
| const char * | folder, | |||
| const char * | filename, | |||
| CameraFileInfo * | info, | |||
| GPContext * | context | |||
| ) |
Get information about the specified file.
| fs | a CameraFilesystem | |
| folder | the folder that contains the file | |
| filename | the filename | |
| info | pointer to CameraFileInfo that receives the information | |
| context | a GPContext |
| int gp_filesystem_get_storageinfo | ( | CameraFilesystem * | fs, | |
| CameraStorageInformation ** | storageinfo, | |||
| int * | nrofstorageinfos, | |||
| GPContext * | context | |||
| ) |
Get the storage information about this filesystem.
| fs | the filesystem | |
| storageinfo | pointer to receive the array of informations | |
| nrofstorageinfos | pointer to receive number of array entries | |
| context | a GPContext |
| int gp_filesystem_list_files | ( | CameraFilesystem * | fs, | |
| const char * | folder, | |||
| CameraList * | list, | |||
| GPContext * | context | |||
| ) |
Get the list of files in a folder.
| fs | a CameraFilesystem | |
| folder | a folder of which a file list should be generated | |
| list | a CameraList where to put the list of files into | |
| context | a GPContext |
| int gp_filesystem_list_folders | ( | CameraFilesystem * | fs, | |
| const char * | folder, | |||
| CameraList * | list, | |||
| GPContext * | context | |||
| ) |
List all subfolders within a filesystem folder.
| fs | a CameraFilesystem | |
| folder | a folder | |
| list | a CameraList where subfolders should be listed | |
| context | a GPContext |
| int gp_filesystem_make_dir | ( | CameraFilesystem * | fs, | |
| const char * | folder, | |||
| const char * | name, | |||
| GPContext * | context | |||
| ) |
Create a subfolder within a folder.
| fs | a CameraFilesystem | |
| folder | the folder in which the directory should be created | |
| name | the name of the directory to be created | |
| context | a GPContext |
| 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.
| fs | a CameraFilesystem | |
| folder | the folder where to look up the file with the filenumber | |
| filenumber | the number of the file | |
| filename | pointer to a filename where the result is stored | |
| context | a GPContext |
| int gp_filesystem_new | ( | CameraFilesystem ** | fs | ) |
Create a new filesystem struct.
| fs | a pointer to a CameraFilesystem |
| int gp_filesystem_number | ( | CameraFilesystem * | fs, | |
| const char * | folder, | |||
| const char * | filename, | |||
| GPContext * | context | |||
| ) |
Get the index of a file in specified folder.
| fs | a CameraFilesystem | |
| folder | the folder where to look for file called filename | |
| filename | the file to look for | |
| context | a GPContext |
| int gp_filesystem_put_file | ( | CameraFilesystem * | fs, | |
| const char * | folder, | |||
| CameraFile * | file, | |||
| GPContext * | context | |||
| ) |
Upload a file to a folder on the device filesystem.
| fs | a CameraFilesystem | |
| folder | the folder where to put the file into | |
| file | the file | |
| context | a GPContext |
| int gp_filesystem_remove_dir | ( | CameraFilesystem * | fs, | |
| const char * | folder, | |||
| const char * | name, | |||
| GPContext * | context | |||
| ) |
Remove a subfolder from within a folder.
| fs | a CameraFilesystem | |
| folder | the folder in which the directory should be created | |
| name | the name of the directory to be created | |
| context | a GPContext |
| int gp_filesystem_reset | ( | CameraFilesystem * | fs | ) |
Clear the filesystem.
| fs | the filesystem to be cleared |
| int gp_filesystem_set_file_funcs | ( | CameraFilesystem * | fs, | |
| CameraFilesystemGetFileFunc | get_file_func, | |||
| CameraFilesystemDeleteFileFunc | del_file_func, | |||
| void * | data | |||
| ) |
Set camera filesystem file related functions.
| fs | a CameraFilesystem | |
| get_file_func | the function downloading files | |
| del_file_func | the function deleting files | |
| data | private data structure |
| int gp_filesystem_set_file_noop | ( | CameraFilesystem * | fs, | |
| const char * | folder, | |||
| CameraFile * | file, | |||
| GPContext * | context | |||
| ) |
Attach file content to a specified file.
| fs | a CameraFilesystem | |
| folder | a folder in the filesystem | |
| file | a CameraFile | |
| context,: | a GPContext |
| int gp_filesystem_set_folder_funcs | ( | CameraFilesystem * | fs, | |
| CameraFilesystemPutFileFunc | put_file_func, | |||
| CameraFilesystemDeleteAllFunc | delete_all_func, | |||
| CameraFilesystemDirFunc | make_dir_func, | |||
| CameraFilesystemDirFunc | remove_dir_func, | |||
| void * | data | |||
| ) |
Set folder related functions of the filesystem.
| fs | a CameraFilesystem | |
| put_file_func | function used to upload files | |
| delete_all_func | function used to delete all files in a folder | |
| make_dir_func | function used to create a new directory | |
| remove_dir_func | function used to remove an existing directory | |
| data | a data object that will passed to all called functions |
The fs will try to compensate missing delete_all_func functionality with the delete_file_func if such a function has been supplied.
| int gp_filesystem_set_funcs | ( | CameraFilesystem * | fs, | |
| CameraFilesystemFuncs * | funcs, | |||
| void * | data | |||
| ) |
Set all filesystem related function pointers.
| fs | a CameraFilesystem | |
| funcs | pointer to a struct of filesystem functions | |
| data | private data |
| int gp_filesystem_set_info | ( | CameraFilesystem * | fs, | |
| const char * | folder, | |||
| const char * | filename, | |||
| CameraFileInfo | info, | |||
| GPContext * | context | |||
| ) |
Set information about a file.
| fs | a CameraFilesystem | |
| folder | foldername where the file resides | |
| filename | the files name | |
| info | the CameraFileInfo to set | |
| context | a GPContext |
| int gp_filesystem_set_info_funcs | ( | CameraFilesystem * | fs, | |
| CameraFilesystemGetInfoFunc | get_info_func, | |||
| CameraFilesystemSetInfoFunc | set_info_func, | |||
| void * | data | |||
| ) |
Set file information functions.
| fs | a CameraFilesystem | |
| get_info_func | the function to retrieve file information | |
| set_info_func | the function to set file information | |
| data | private data |
| int gp_filesystem_set_info_noop | ( | CameraFilesystem * | fs, | |
| const char * | folder, | |||
| CameraFileInfo | info, | |||
| GPContext * | context | |||
| ) |
Store the file information in the virtual fs.
| fs | a CameraFilesystem | |
| folder | the foldername | |
| info | the CameraFileInfo to store | |
| context | a GPContext |
| int gp_filesystem_set_list_funcs | ( | CameraFilesystem * | fs, | |
| CameraFilesystemListFunc | file_list_func, | |||
| CameraFilesystemListFunc | folder_list_func, | |||
| void * | data | |||
| ) |
Set the functions to list folders and files.
| fs | a CameraFilesystem | |
| file_list_func | the function that will return listings of files | |
| folder_list_func | the function that will return listings of folders | |
| data | private data structure |
1.5.1