diff options
author | Jörg Frings-Fürst <debian@jff-webhosting.net> | 2014-09-01 13:56:46 +0200 |
---|---|---|
committer | Jörg Frings-Fürst <debian@jff-webhosting.net> | 2014-09-01 13:56:46 +0200 |
commit | 22f703cab05b7cd368f4de9e03991b7664dc5022 (patch) | |
tree | 6f4d50beaa42328e24b1c6b56b6ec059e4ef21a5 /spectro/oemarch.h |
Initial import of argyll version 1.5.1-8debian/1.5.1-8
Diffstat (limited to 'spectro/oemarch.h')
-rw-r--r-- | spectro/oemarch.h | 102 |
1 files changed, 102 insertions, 0 deletions
diff --git a/spectro/oemarch.h b/spectro/oemarch.h new file mode 100644 index 0000000..72a3bb6 --- /dev/null +++ b/spectro/oemarch.h @@ -0,0 +1,102 @@ + +#ifndef OEMARCH_H + + /* OEM archive access library. + /* This supports installing OEM data files */ + +/* + * Argyll Color Correction System + * + * Author: Graeme W. Gill + * Date: 13/11/2012 + * + * Copyright 2006 - 2013 Graeme W. Gill + * All rights reserved. + * + * This material is licenced under the GNU GENERAL PUBLIC LICENSE Version 2 or later :- + * see the License2.txt file for licencing details. + * + */ + +#ifdef __cplusplus + extern "C" { +#endif + +#define MAX_ARCH_LISTS 40 + +/* Possible type of files/stage of processing */ +typedef enum { + file_none = 0x0000, /* None */ + file_vol = 0x0001, /* Volume name */ + file_arch = 0x0002, /* Archive file */ + file_dllcab = 0x0004, /* .dll or .cab */ + file_data = 0x0008 /* final data file */ +} file_type; + +/* Possible type of target */ +typedef enum { + targ_none = 0x0000, /* None */ + targ_spyd_pld = 0x0001, /* Spyder PLD pattern */ + targ_spyd_cal = 0x0002, /* Spyder spectral calibration */ + targ_i1d3_edr = 0x0004, /* i1d3 .edr or .ccss */ + targ_ccmx = 0x0008 /* .ccmx */ +} targ_type; + +/* An install path, volume name or archive name */ +typedef struct { + char *path; + targ_type ttype; /* Hint to target type */ + file_type ftype; /* Hint to file type (instpaths only) */ +} oem_source; + +/* A definition of an install target */ +typedef struct { + oem_source instpaths[MAX_ARCH_LISTS]; /* Possible archive install paths, NULL terminated */ + oem_source volnames[MAX_ARCH_LISTS]; /* Possible volume names, NULL terminated */ + oem_source archnames[MAX_ARCH_LISTS]; /* Possible archive file names, NULL terminated */ +} oem_target; + +/* A list of files stored in memory. */ +typedef struct { + char *name; /* Name of file, NULL for last entry */ + unsigned char *buf; /* It's contents */ + size_t len; /* The length of the contents */ + file_type ftype; /* Hint to file type */ + targ_type ttype; /* Target type */ +} xfile; + +/* return a list with the given number of available entries */ +xfile *new_xf(int n); + +/* Add an entry to the list. Create the list if it is NULL */ +/* Return point to that entry */ +xfile *add_xf(xfile **l); + +/* Append an entry and copy details to the list. Create the list if it is NULL */ +/* Return point to that entry */ +xfile *new_add_xf(xfile **l, char *name, unsigned char *buf, unsigned long len, + file_type ftype, targ_type ttype); + +/* Free up a whole list */ +void del_xf(xfile *l); + +/* Allocate and load the given entry. */ +/* Return NZ on error */ +int load_xfile(xfile *xf, int verb); + +/* Save a file to the given sname, or of it is NULL, */ +/* to prefix + file name (path is ignored) */ +/* Error on failure */ +void save_xfile(xfile *xf, char *sname, char *pfx, int verb); + +/* Given a list of source archives or files, convert them to a list of install files, */ +/* or if no files are given look for installed files or files from a CD. */ +/* Return NULL if none found. files is deleted. */ +xfile *oemarch_get_ifiles(xfile *files, int verb); + +#ifdef __cplusplus + } +#endif + +#define OEMARCH_H +#endif /* OEMARCH_H */ |