]> git.imager.perl.org - imager.git/blobdiff - imageri.h
update Changes
[imager.git] / imageri.h
index 59d333a70f8202baa728035c94a5cc564862a1f2..1b5e4a8d3e8a9dcc1fbdd8bc76d7e2f2edd61a27 100644 (file)
--- a/imageri.h
+++ b/imageri.h
@@ -112,14 +112,36 @@ i_img_dim i_abs(i_img_dim x);
 
 #define color_to_grey(col) ((col)->rgb.r * 0.222  + (col)->rgb.g * 0.707 + (col)->rgb.b * 0.071)
 
+struct file_magic_entry {
+  unsigned char *magic;
+  size_t magic_size;
+  char *name;
+  unsigned char *mask;  
+};
+
+
+typedef struct im_file_magic im_file_magic;
+struct im_file_magic {
+  struct file_magic_entry m;
+
+  /* more magic to check */
+  im_file_magic *next;
+};
+
 #define IM_ERROR_COUNT 20
 typedef struct im_context_tag {
   int error_sp;
   size_t error_alloc[IM_ERROR_COUNT];
   i_errmsg error_stack[IM_ERROR_COUNT];
 #ifdef IMAGER_LOG
-  int log_level;
+  /* the log file and level for this context */
   FILE *lg_file;
+  int log_level;
+
+  /* whether we own the lg_file, false for stderr and for cloned contexts */
+  int own_log;
+
+  /* values supplied by lhead */
   const char *filename;
   int line;
 #endif
@@ -128,9 +150,18 @@ typedef struct im_context_tag {
   i_img_dim max_width, max_height;
   size_t max_bytes;
 
+  /* per context storage */
+  size_t slot_alloc;
+  void **slots;
+
+  /* registered file type magic */
+  im_file_magic *file_magic;
+
   ptrdiff_t refcount;
 } im_context_struct;
 
 #define DEF_BYTES_LIMIT 0x40000000
 
+#define im_size_t_max (~(size_t)0)
+
 #endif