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:
Scott Fritzinger
2000-06-19 17:06:02 +00:00
parent e00aa2fb42
commit 93f4ec0ea9
6 changed files with 6 additions and 380 deletions

View File

@@ -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

View File

@@ -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);
}

View File

@@ -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);

View File

@@ -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)
---------------------------------------------------------------------------- */

View File

@@ -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
???
*/

View File