Directory Entries

Name

Directory Entries -- 

Synopsis


#include <canon.h>


int         canon_usb_get_dirents           (Camera *camera,
                                             unsigned char **dirent_data,
                                             unsigned int *dirents_length,
                                             const char *path,
                                             GPContext *context);
int         canon_usb_list_all_dirs         (Camera *camera,
                                             unsigned char **dirent_data,
                                             unsigned int *dirents_length,
                                             GPContext *context);
enum        canonDirentOffset;

Description

Details

canon_usb_get_dirents ()

int         canon_usb_get_dirents           (Camera *camera,
                                             unsigned char **dirent_data,
                                             unsigned int *dirents_length,
                                             const char *path,
                                             GPContext *context);

Lists a directory.

camera :

camera to initialize

dirent_data :

to receive directory data

dirents_length :

to receive length of dirent_data

path :

pathname of directory to list

context :

context for error reporting

Returns :

gphoto2 error code


canon_usb_list_all_dirs ()

int         canon_usb_list_all_dirs         (Camera *camera,
                                             unsigned char **dirent_data,
                                             unsigned int *dirents_length,
                                             GPContext *context);

Lists all directories on camera. This can be executed before and after a "capture image" operation. By comparing the results, we can see where the new image went. Unfortunately, this seems to be the only way to find out, as Canon doesn't return that information from a capture command.

camera :

camera to initialize

dirent_data :

to receive directory data

dirents_length :

to receive length of dirent_data

context :

context for error reporting

Returns :

gphoto2 error code


enum canonDirentOffset

typedef enum {
	CANON_DIRENT_ATTRS = 0,
	CANON_DIRENT_SIZE  = 2,
	CANON_DIRENT_TIME  = 6,
	CANON_DIRENT_NAME = 10,
	CANON_MINIMUM_DIRENT_SIZE
} canonDirentOffset;

Offsets of fields of direntry in bytes. A minimum directory entry is: 2 bytes attributes, 4 bytes file date (UNIX localtime), 4 bytes file size, 1 byte empty path '' plus NULL byte.

Wouldn't this be better as a struct?

CANON_DIRENT_ATTRS

Attribute byte

CANON_DIRENT_SIZE

4 byte file size

CANON_DIRENT_TIME

4 byte Unix time

CANON_DIRENT_NAME

Variable length ASCII path name

CANON_MINIMUM_DIRENT_SIZE

Minimum size of a directory entry, including a null byte for an empty path name