#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:
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 |