KLone APIs | Modules | Data Structures | File List | Data Fields | Globals

emb.h

Go to the documentation of this file.
00001 /*
00002  * Copyright (c) 2005, 2006 by KoanLogic s.r.l. <http://www.koanlogic.com>
00003  * All rights reserved.
00004  *
00005  * This file is part of KLone, and as such it is subject to the license stated
00006  * in the LICENSE file which you have received as part of this distribution.
00007  *
00008  * $Id: emb.h,v 1.17 2008/10/27 21:28:03 tat Exp $
00009  */
00010 
00011 #ifndef _KLONE_EMB_H_
00012 #define _KLONE_EMB_H_
00013 
00014 #include "klone_conf.h"
00015 #include <sys/stat.h>
00016 #ifdef HAVE_STDINT
00017 #include <stdint.h>
00018 #endif /* HAVE_STDINT */
00019 #include <u/libu.h>
00020 #include <klone/klone.h>
00021 #include <klone/dypage.h>
00022 
00023 #ifdef __cplusplus
00024 extern "C" {
00025 #endif 
00026 
00027 /* supported embedded resource type */
00028 enum {
00029     ET_FILE,                /* embedded file                */
00030     ET_PAGE                 /* dynamic web page             */
00031 };
00032 
00033 /* define resource list */
00034 LIST_HEAD(emblist_s, embres_s);
00035 
00036 /* common struct for embedded resources */
00037 typedef struct embres_s
00038 {
00039     LIST_ENTRY(embres_s) np;/* next & prev pointers         */
00040     const char *filename;   /* emb resource file name       */
00041     int type;               /* emb resource type (ET_*)     */
00042 } embres_t;
00043 
00044 /* embedded file */
00045 typedef struct embfile_s
00046 {
00047     embres_t res;           /* any emb resource must start with a embres_t    */
00048     size_t size;            /* size of the data block                         */
00049     unsigned char *data;    /* file data                                      */
00050     int comp;               /* if data is compressed                          */
00051     int encrypted;          /* if data is encrypted                           */
00052     time_t mtime;           /* time of last modification                      */
00053     const char *mime_type;  /* guessed mime type                              */
00054     size_t file_size;       /* size of the source file (not compressed)       */
00055 } embfile_t;
00056 
00057 /* embedded dynamic klone page */
00058 typedef struct embpage_s
00059 {
00060     embres_t res;           /* any emb resource must start with a embres_t  */
00061     dypage_fun_t fun;
00062 } embpage_t;
00063 
00064 int emb_init(void);
00065 int emb_term(void);
00066 int emb_register(embres_t *r);
00067 int emb_unregister(embres_t *r);
00068 int emb_lookup(const char *filename, embres_t **pr);
00069 int emb_count(void);
00070 int emb_getn(size_t n, embres_t **pr);
00071 int emb_open(const char *file, io_t **pio);
00072 
00073 #ifdef __cplusplus
00074 }
00075 #endif 
00076 
00077 #endif