2 * Sherlock Library -- Miscellaneous Functions
4 * (c) 1997 Martin Mares, <mj@atrey.karlin.mff.cuni.cz>
7 #ifndef _SHERLOCK_LIB_H
8 #define _SHERLOCK_LIB_H
10 #include <lib/config.h>
22 void open_temp(struct tempfile *, byte *);
23 void delete_temp(struct tempfile *);
26 #define TF_GENERIC "t"
27 #define TF_QUEUE_CONTROL "c"
28 #define TF_QUEUE_DATA "d"
30 #define TF_TRANSFORM "s"
46 typedef byte *(*ci_func)(struct cfitem *, byte *);
48 void cf_read(byte *, struct cfitem *);
58 void log(byte *, ...);
59 void die(byte *, ...) NONRET;
61 void open_log_file(byte *);
66 void *xrealloc(void *, uns);
67 byte *stralloc(byte *);
69 /* Content-Type pattern matching and filters */
73 int match_ct_patt(byte *, byte *);
75 struct ct_filter *new_ct_filter(void);
76 byte *add_ct_filter(struct ct_filter *, byte *);
77 int match_ct_filter(struct ct_filter *, byte *);
85 struct odes { /* Object description */
90 struct oattr { /* Object attribute */
91 struct oattr *next, *same;
96 void obj_dump(struct odes *);
97 struct odes *obj_fload(FILE *);
98 struct odes *obj_new(void);
99 struct odes *obj_load(byte *);
100 void obj_fwrite(FILE *, struct odes *);
101 void obj_write(byte *, struct odes *);
102 void obj_free(struct odes *);
103 struct oattr *find_attr(struct odes *, uns);
104 struct oattr *find_attr_last(struct odes *, uns);
105 uns del_attr(struct odes *, struct oattr *);
106 byte *find_aval(struct odes *, uns);
107 struct oattr *set_attr(struct odes *, uns, byte *);
108 struct oattr *set_attr_num(struct odes *, uns, uns);
109 struct oattr *add_attr(struct odes *, struct oattr *, uns, byte *);
110 struct oattr *prepend_attr(struct odes *, uns, byte *);
114 #define OID_MIN 0x10000 /* Values less than this have special meaning */
117 void mk_obj_name(byte *, ulg, byte *);
118 int dump_obj_to_file(byte *, ulg, struct odes *, int);
122 int wordsplit(byte *, byte **, uns);
126 int match_pattern(byte *, byte *);
127 int match_pattern_nocase(byte *, byte *);
131 void md5_to_hex(byte *, byte *);
132 void hex_to_md5(byte *, byte *);
135 #define MD5_HEX_SIZE 33
144 void init_timer(void);
149 typedef struct regex regex;
151 regex *rx_compile(byte *r);
152 void rx_free(regex *r);
153 int rx_match(regex *r, byte *s);
154 int rx_subst(regex *r, byte *by, byte *src, byte *dest, uns destlen);