Logo Search packages:      
Sourcecode: libgphoto2 version File versions

int gp_filesystem_append ( CameraFilesystem fs,
const char *  folder,
const char *  filename,
GPContext context 
)

Append a file to a folder in a filesystem.

Parameters:
fs a CameraFilesystem
folder the folder where to put the file in
filename filename of the file
context a GPContext
Tells the fs that there is a file called filename in folder called folder. Usually camera drivers will call this function after capturing an image in order to tell the fs about the new file. A front-end should not use this function.

Returns:
a gphoto2 error code.

Definition at line 697 of file gphoto2-filesys.c.

References CHECK_MEM, CHECK_NULL, GP_ERROR_FILE_EXISTS, GP_ERROR_NO_MEMORY, gp_log(), GP_LOG_DEBUG, GP_OK, and _CameraFilesystem::rootfolder.

Referenced by gp_filesystem_list_files().

{
      CameraFilesystemFile *new;
      CameraFilesystemFolder *f;

      CHECK_NULL (fs && folder);
      CC (context);
      CA (folder, context);

      gp_log (GP_LOG_DEBUG, "gphoto2-filesystem", "Append %s/%s to filesystem", folder, filename);
      /* Check folder for existence, if not, create it. */
      f = lookup_folder (fs, fs->rootfolder, folder, context);
      if (!f)
            CR (append_folder (fs, folder, &f, context));

      new = f->files;
      while (new) {
            if (!strcmp(new->name, filename)) break;
            new = new->next;
      }
      if (new) {
            gp_context_error (context,
                  _("Could not append '%s' to folder '%s' because "
                    "this file already exists."), filename, folder);
            return (GP_ERROR_FILE_EXISTS);
      }

      CHECK_MEM (new = calloc (sizeof (CameraFilesystemFile), 1))
      new->name = strdup (filename);
      if (!new->name) {
            free (new);
            return (GP_ERROR_NO_MEMORY);
      }
      new->info_dirty = 1;

      new->next = f->files;
      f->files = new;
      f->files_dirty = 0;
      return (GP_OK);
}


Generated by  Doxygen 1.6.0   Back to index