moving around files
git-svn-id: https://svn.code.sf.net/p/gphoto/code/trunk/libgphoto2@553 67ed7778-7388-44ab-90cf-0a291f65f57c
This commit is contained in:
@@ -6,9 +6,9 @@ CFLAGS= @CFLAGS@ \
|
||||
-DCAMLIBS=\"$(pkglibdir)\"
|
||||
|
||||
libgphoto2_la_LDFLAGS = -version-info 0:0:0
|
||||
libgphoto2_la_SOURCES = cache.c cache.h \
|
||||
libgphoto2_la_SOURCES = \
|
||||
core.c core.h \
|
||||
helpers.c helpers.h \
|
||||
file.c file.h \
|
||||
library.c library.h \
|
||||
settings.c settings.h \
|
||||
util.c util.h
|
||||
|
||||
@@ -1,184 +0,0 @@
|
||||
#include <dirent.h>
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <sys/stat.h>
|
||||
#include <sys/types.h>
|
||||
#include <unistd.h>
|
||||
#include <gphoto2.h>
|
||||
|
||||
#include "cache.h"
|
||||
|
||||
int cache_put (int camera_number, int folder_number, int file_number, CameraFile *file) {
|
||||
|
||||
FILE *fp;
|
||||
char buf[1024];
|
||||
|
||||
sprintf(buf, "%s/.gphoto/cache/%i-%i-%i.%i", getenv("HOME"),
|
||||
camera_number, folder_number, file_number, file->type);
|
||||
#ifdef DEBUG
|
||||
printf("cache: putting \"%s\"... ", buf);
|
||||
fflush(stdout);
|
||||
#endif
|
||||
fp = fopen(buf, "w");
|
||||
fwrite(file->data, (size_t)sizeof(char), (size_t)file->size, fp);
|
||||
fclose(fp);
|
||||
|
||||
#ifdef DEBUG
|
||||
printf("done!\n");
|
||||
#endif
|
||||
return (GP_OK);
|
||||
}
|
||||
|
||||
int cache_get (int camera_number, int folder_number, int file_number, CameraFile *file) {
|
||||
|
||||
FILE *fp;
|
||||
DIR *d;
|
||||
struct dirent *de;
|
||||
long int s;
|
||||
int camn, foldn, filen, filet;
|
||||
char buf[1024], cachedir[1024];
|
||||
|
||||
sprintf(cachedir, "%s/.gphoto/cache", getenv("HOME"));
|
||||
d = opendir(cachedir);
|
||||
#ifdef DEBUG
|
||||
printf("cache: getting (%i, %i, %i)... ",
|
||||
camera_number, folder_number, file_number);
|
||||
fflush(stdout);
|
||||
#endif
|
||||
|
||||
do {
|
||||
camn = -1;
|
||||
foldn = -1;
|
||||
filen = -1;
|
||||
/* Read each entry */
|
||||
de = readdir(d);
|
||||
if (de) {
|
||||
sscanf(de->d_name, "%i-%i-%i.%i",
|
||||
&camn, &foldn, &filen, &filet);
|
||||
if ((camn == camera_number) &&
|
||||
(foldn == folder_number) &&
|
||||
(filen == file_number)) {
|
||||
sprintf(buf, "%s/%s", cachedir, de->d_name);
|
||||
#ifdef DEBUG
|
||||
printf("found! (%s)\n", de->d_name);
|
||||
#endif
|
||||
fp = fopen(buf, "w");
|
||||
fseek(fp, 0, SEEK_END);
|
||||
s = ftell(fp);
|
||||
rewind(fp);
|
||||
file->data = (char*)malloc(sizeof(char)*s);
|
||||
fread(file->data, (size_t)sizeof(char),
|
||||
(size_t)file->size, fp);
|
||||
fclose(fp);
|
||||
file->size = s;
|
||||
file->type = filet;
|
||||
return (GP_OK);
|
||||
}
|
||||
}
|
||||
} while (de);
|
||||
#ifdef DEBUG
|
||||
printf("error! didn't exist!\n");
|
||||
#endif
|
||||
return (GP_ERROR);
|
||||
}
|
||||
|
||||
int cache_delete (int camera_number, int folder_number, int file_number) {
|
||||
|
||||
/* if file_number == -1, all the files in the folder get deleted */
|
||||
/* if folder_number == -1, all the folders for camera get deleted */
|
||||
/* if camera_number == -1, ALL the camera's files get delete */
|
||||
|
||||
DIR *d;
|
||||
struct dirent *de;
|
||||
int camn, foldn, filen, filet;
|
||||
char buf[1024], cachedir[1024];
|
||||
|
||||
#ifdef DEBUG
|
||||
printf("cache: Deleting (%i, %i, %i)...\n",
|
||||
camera_number, folder_number, file_number);
|
||||
fflush(stdout);
|
||||
#endif
|
||||
sprintf(cachedir, "%s/.gphoto/cache", getenv("HOME"));
|
||||
d = opendir(cachedir);
|
||||
do {
|
||||
camn = -2;
|
||||
foldn = -2;
|
||||
filen = -2;
|
||||
/* Read each entry */
|
||||
de = readdir(d);
|
||||
if (de) {
|
||||
sscanf(de->d_name, "%i-%i-%i.%i",
|
||||
&camn, &foldn, &filen, &filet);
|
||||
if ((camn>=0)&&(foldn>=0)&&(filen>=0)) {
|
||||
sprintf(buf, "%s/%s", cachedir, de->d_name);
|
||||
if (((camn == camera_number) &&
|
||||
(foldn == folder_number) &&
|
||||
(filen == file_number))
|
||||
||
|
||||
((camn == camera_number) &&
|
||||
(foldn == folder_number) &&
|
||||
(file_number == -1))
|
||||
||
|
||||
((camn == camera_number) &&
|
||||
(folder_number == -1))
|
||||
||
|
||||
(camera_number == -1)) {
|
||||
#ifdef DEBUG
|
||||
printf("cache: Removing %s\n", buf);
|
||||
#endif
|
||||
unlink(buf);
|
||||
} else {
|
||||
#ifdef DEBUG
|
||||
printf("cache: Leaving %s\n", buf);
|
||||
#endif
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
} while (de);
|
||||
|
||||
return (GP_OK);
|
||||
}
|
||||
|
||||
int cache_exists (int camera_number, int folder_number, int file_number) {
|
||||
|
||||
DIR *d;
|
||||
struct dirent *de;
|
||||
int camn, foldn, filen, filet;
|
||||
char cachedir[1024];
|
||||
|
||||
#ifdef DEBUG
|
||||
printf("cache: looking for (%i, %i, %i)... ",
|
||||
camera_number, folder_number, file_number);
|
||||
fflush(stdout);
|
||||
#endif
|
||||
|
||||
sprintf(cachedir, "%s/.gphoto/cache", getenv("HOME"));
|
||||
d = opendir(cachedir);
|
||||
do {
|
||||
camn = -1;
|
||||
foldn = -1;
|
||||
filen = -1;
|
||||
/* Read each entry */
|
||||
de = readdir(d);
|
||||
if (de) {
|
||||
sscanf(de->d_name, "%i-%i-%i.%i",
|
||||
&camn, &foldn, &filen, &filet);
|
||||
if ((camn == camera_number) &&
|
||||
(foldn == folder_number) &&
|
||||
(filen == file_number)) {
|
||||
#ifdef DEBUG
|
||||
printf("found! (%s)\n", de->d_name);
|
||||
#endif
|
||||
return (GP_OK);
|
||||
}
|
||||
}
|
||||
} while (de);
|
||||
|
||||
#ifdef DEBUG
|
||||
printf("missing!\n");
|
||||
#endif
|
||||
|
||||
return (GP_ERROR);
|
||||
}
|
||||
@@ -1,5 +0,0 @@
|
||||
int cache_put (int camera_number, int folder_number, int file_number, CameraFile *file);
|
||||
int cache_get (int camera_number, int folder_number, int file_number, CameraFile *file);
|
||||
int cache_exists (int camera_number, int folder_number, int file_number);
|
||||
int cache_delete (int camera_number, int folder_number, int file_number);
|
||||
|
||||
@@ -13,7 +13,6 @@
|
||||
#endif
|
||||
|
||||
#include "core.h"
|
||||
#include "cache.h"
|
||||
#include "library.h"
|
||||
#include "settings.h"
|
||||
|
||||
@@ -58,13 +57,11 @@ int gp_init () {
|
||||
|
||||
#ifdef DEBUG
|
||||
printf(" > Debug Mode On < \n");
|
||||
printf("core: Creating $HOME/.gphoto and $HOME/.gphoto/cache\n");
|
||||
printf("core: Creating $HOME/.gphoto\n");
|
||||
#endif
|
||||
/* Make sure the directories are created */
|
||||
sprintf(buf, "%s/.gphoto", getenv("HOME"));
|
||||
(void)mkdir(buf, 0700);
|
||||
sprintf(buf, "%s/.gphoto/cache", getenv("HOME"));
|
||||
(void)mkdir(buf, 0700);
|
||||
|
||||
#ifdef DEBUG
|
||||
printf("core: Camera library dir: %s\n", CAMLIBS);
|
||||
@@ -107,15 +104,12 @@ int gp_init () {
|
||||
printf("core:\tNone\n");
|
||||
}
|
||||
#endif
|
||||
cache_delete(-1, -1, -1); /* wipe all the cache clean */
|
||||
if (gp_get_setting("camera", buf) == GP_OK)
|
||||
return (load_library(buf));
|
||||
return (GP_OK);
|
||||
}
|
||||
|
||||
int gp_exit () {
|
||||
|
||||
cache_delete(-1, -1, -1); /* wipe all the cache clean */
|
||||
|
||||
gp_camera_exit();
|
||||
return (GP_OK);
|
||||
@@ -247,42 +241,24 @@ int gp_file_get (int file_number, CameraFile *file) {
|
||||
if (glob_c.file_get == NULL)
|
||||
return (GP_ERROR);
|
||||
|
||||
if (cache_exists(glob_camera_number, glob_folder_number, file_number) == GP_OK)
|
||||
return (cache_get(glob_camera_number, glob_folder_number, file_number, file));
|
||||
|
||||
gp_file_clean(file);
|
||||
glob_c.file_get(file_number, file);
|
||||
cache_put(glob_camera_number, glob_folder_number, file_number, file);
|
||||
|
||||
return (GP_OK);
|
||||
return (glob_c.file_get(file_number, file))
|
||||
}
|
||||
|
||||
int gp_file_get_preview (int file_number, CameraFile *preview) {
|
||||
|
||||
if (glob_c.file_get_preview == NULL)
|
||||
return (GP_ERROR);
|
||||
if (cache_exists(glob_camera_number, glob_folder_number, file_number)==GP_OK)
|
||||
return (cache_get(glob_camera_number, glob_folder_number, file_number, preview));
|
||||
|
||||
gp_file_clean(preview);
|
||||
glob_c.file_get_preview(file_number, preview);
|
||||
|
||||
cache_put(glob_camera_number, glob_folder_number, file_number, preview);
|
||||
|
||||
return(GP_OK);
|
||||
return (glob_c.file_get_preview(file_number, preview));
|
||||
}
|
||||
|
||||
int gp_file_delete (int file_number) {
|
||||
|
||||
/*
|
||||
if (glob_c.file_delete == NULL)
|
||||
return (GP_ERROR);
|
||||
glob_c.file_delete(file_number)
|
||||
Remove from the cache
|
||||
update cache itself (picture number shifting)
|
||||
*/
|
||||
|
||||
return(GP_OK);
|
||||
return (glob_c.file_delete(file_number));
|
||||
}
|
||||
|
||||
int gp_file_lock (int file_number) {
|
||||
@@ -295,81 +271,6 @@ int gp_file_unlock (int file_number) {
|
||||
return (GP_ERROR);
|
||||
}
|
||||
|
||||
int gp_file_save_to_disk (CameraFile *file, char *filename) {
|
||||
|
||||
FILE *fp;
|
||||
|
||||
if ((fp = fopen(filename, "w"))==NULL)
|
||||
return (GP_ERROR);
|
||||
fwrite(file->data, (size_t)sizeof(char), (size_t)file->size, fp);
|
||||
fclose(fp);
|
||||
|
||||
return (GP_OK);
|
||||
}
|
||||
|
||||
int gp_file_save (int file_number, char *filename) {
|
||||
|
||||
/*
|
||||
write image data to disk as "filename"
|
||||
*/
|
||||
|
||||
CameraFile *f;
|
||||
|
||||
f = gp_file_new();
|
||||
if (cache_exists(glob_camera_number,glob_folder_number,file_number)
|
||||
== GP_ERROR)
|
||||
return (GP_ERROR);
|
||||
cache_get(glob_camera_number,glob_folder_number,file_number,f);
|
||||
|
||||
return (gp_file_save_to_disk(f, filename));
|
||||
}
|
||||
|
||||
|
||||
CameraFile* gp_file_new () {
|
||||
|
||||
/*
|
||||
Allocates a new CameraFile
|
||||
*/
|
||||
|
||||
CameraFile *f;
|
||||
|
||||
f = (CameraFile*)malloc(sizeof(CameraFile));
|
||||
f->type = GP_FILE_UNKNOWN;
|
||||
f->name = NULL;
|
||||
f->data = NULL;
|
||||
f->size = 0;
|
||||
|
||||
return(f);
|
||||
}
|
||||
|
||||
int gp_file_clean (CameraFile *file) {
|
||||
|
||||
/*
|
||||
frees a CameraFile's components
|
||||
*/
|
||||
|
||||
if (file->name)
|
||||
free(file->name);
|
||||
if (file->data)
|
||||
free(file->data);
|
||||
file->name = NULL;
|
||||
file->data = NULL;
|
||||
file->size = 0;
|
||||
return(GP_OK);
|
||||
}
|
||||
|
||||
|
||||
int gp_file_free (CameraFile *file) {
|
||||
|
||||
/*
|
||||
frees a CameraFile from memory
|
||||
*/
|
||||
|
||||
gp_file_clean(file);
|
||||
free(file);
|
||||
return(GP_OK);
|
||||
}
|
||||
|
||||
|
||||
int gp_config_get (char *config_dialog_filename) {
|
||||
|
||||
@@ -420,75 +321,6 @@ int gp_about (char *about) {
|
||||
return(glob_c.about(about));
|
||||
}
|
||||
|
||||
/* Utility (helper) functions for Front-ends
|
||||
---------------------------------------------------------------------------- */
|
||||
|
||||
/* Image previews */
|
||||
int gp_image_preview_rotate (int file_number, int degrees, CameraFile *new_file) {
|
||||
|
||||
return(GP_OK);
|
||||
}
|
||||
|
||||
int gp_image_preview_scale (int file_number, int width, int height, CameraFile *new_file) {
|
||||
|
||||
return(GP_OK);
|
||||
}
|
||||
|
||||
int gp_image_preview_flip_h (int file_number, CameraFile *new_file) {
|
||||
|
||||
return(GP_OK);
|
||||
}
|
||||
|
||||
int gp_image_preview_flip_v (int file_number, CameraFile *new_file) {
|
||||
|
||||
return(GP_OK);
|
||||
}
|
||||
|
||||
/* Full-size images */
|
||||
int gp_image_rotate (int file_number, int degrees, CameraFile *new_file) {
|
||||
|
||||
return(GP_OK);
|
||||
}
|
||||
|
||||
int gp_image_scale (int file_number, int width, int height, CameraFile *new_file) {
|
||||
|
||||
return(GP_OK);
|
||||
}
|
||||
|
||||
int gp_image_flip_h (int file_number, CameraFile *new_file) {
|
||||
|
||||
return(GP_OK);
|
||||
}
|
||||
|
||||
int gp_image_flip_v (int file_number, CameraFile *new_file) {
|
||||
|
||||
return(GP_OK);
|
||||
}
|
||||
|
||||
|
||||
/* Utility (helper) functions for libraries
|
||||
---------------------------------------------------------------------------- */
|
||||
|
||||
int gp_file_image_rotate (CameraFile *old_file, int degrees, CameraFile *new_file) {
|
||||
|
||||
return(GP_OK);
|
||||
}
|
||||
|
||||
int gp_file_image_scale (CameraFile *old_file, int width, int height, CameraFile *new_file) {
|
||||
|
||||
return(GP_OK);
|
||||
}
|
||||
|
||||
int gp_file_image_flip_h (CameraFile *old_file, CameraFile *new_file) {
|
||||
|
||||
return(GP_OK);
|
||||
}
|
||||
|
||||
int gp_file_image_flip_v (CameraFile *old_file, CameraFile *new_file) {
|
||||
|
||||
return(GP_OK);
|
||||
}
|
||||
|
||||
/* Configuration file functions (for front-ends and libraries)
|
||||
---------------------------------------------------------------------------- */
|
||||
|
||||
|
||||
@@ -1,17 +0,0 @@
|
||||
/*
|
||||
Contains the command-lines for altering various image types
|
||||
|
||||
|
||||
JPEG | JPG
|
||||
flip_h
|
||||
jpegtran -copy all -flip horizontal %s
|
||||
|
||||
flip_v
|
||||
jpegtran -copy all -flip vertical %s
|
||||
|
||||
rotate
|
||||
jpegtran -copy all -rotate %i %s
|
||||
|
||||
scale
|
||||
???
|
||||
*/
|
||||
Reference in New Issue
Block a user