added beginining of gphoto2 utility library for frontends

git-svn-id: https://svn.code.sf.net/p/gphoto/code/trunk/libgphoto2@552 67ed7778-7388-44ab-90cf-0a291f65f57c
This commit is contained in:
Scott Fritzinger
2000-06-19 17:01:15 +00:00
parent 6344abb313
commit e00aa2fb42
7 changed files with 230 additions and 2 deletions

View File

@@ -1,3 +1,3 @@
## Process this file with automake to generate a GNU Makefile
SUBDIRS = command-line
SUBDIRS = command-line libgphoto2-util

View File

@@ -7,4 +7,5 @@ CFLAGS = @CFLAGS@ -I$(top_srcdir)/include
gphoto2_SOURCES = main.c main.h \
interface.c interface.h
gphoto2_LDADD = ../../libgphoto2/libgphoto2.la
gphoto2_LDADD = ../../libgphoto2/libgphoto2.la \
../libgphoto2-util/libgphoto2-util.la

View File

@@ -0,0 +1,10 @@
lib_LTLIBRARIES = libgphoto2-util.la
CFLAGS= @CFLAGS@ \
-Wall \
-I$(top_srcdir)/include \
-DCAMLIBS=\"$(pkglibdir)\"
libgphoto2-util_la_LDFLAGS = -version-info 0:0:0
libgphoto2-util_la_SOURCES = \
cache.c cache.h

View File

@@ -0,0 +1,184 @@
#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

@@ -0,0 +1,5 @@
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

@@ -0,0 +1,22 @@
int gp_file_image_rotate (CameraFile *old_file, CameraFile *new_file,
int degrees) {
return(GP_OK);
}
int gp_file_image_scale (CameraFile *old_file, CameraFile *new_file,
int width, int height) {
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);
}

View File

@@ -0,0 +1,6 @@
int gp_file_image_rotate (CameraFile *old_file, CameraFile *new_file,
int degrees);
int gp_file_image_scale (CameraFile *old_file, CameraFile *new_file,
int new_width, int new_height);
int gp_file_image_flip_h (CameraFile *old_file, CameraFile *new_file);
int gp_file_image_flip_v (CameraFile *old_file, CameraFile *new_file);