X-Git-Url: http://mj.ucw.cz/gitweb/?a=blobdiff_plain;f=lib%2Flib.h;h=70b2e3661788be4d62360aa94fa480a68c14ca9a;hb=af73897286e5feff4d60f182c26b719d544b142d;hp=3c94ea0c884cfd5d2aa5952b6a5d1ebd1ca2605e;hpb=4ecd6b5eabaf81c764a8ecf4ba8bacb7452a26d1;p=libucw.git diff --git a/lib/lib.h b/lib/lib.h index 3c94ea0c..70b2e366 100644 --- a/lib/lib.h +++ b/lib/lib.h @@ -4,6 +4,9 @@ * (c) 1997 Martin Mares, */ +#ifndef _SHERLOCK_LIB_H +#define _SHERLOCK_LIB_H + #include /* Temporary Files */ @@ -43,6 +46,7 @@ struct cfitem { typedef byte *(*ci_func)(struct cfitem *, byte *); void cf_read(byte *, struct cfitem *); +int cf_read_err(byte *, struct cfitem *); /* Read with possible error, 1 = succeeded */ /* Logging */ @@ -55,10 +59,12 @@ void cf_read(byte *, struct cfitem *); void log(byte *, ...); void die(byte *, ...) NONRET; void initlog(byte *); +void open_log_file(byte *); /* Allocation */ void *xmalloc(uns); +void *xrealloc(void *, uns); byte *stralloc(byte *); /* Content-Type pattern matching and filters */ @@ -73,16 +79,13 @@ int match_ct_filter(struct ct_filter *, byte *); /* Binary log */ -#ifdef HAVE_FFS -#define log2(x) (ffs(x) - 1) -#else int log2(ulg); -#endif /* obj.c */ struct odes { /* Object description */ struct oattr *attrs; + struct mempool *pool; }; struct oattr { /* Object attribute */ @@ -92,13 +95,15 @@ struct oattr { /* Object attribute */ }; void obj_dump(struct odes *); -struct odes *obj_fload(FILE *); +struct odes *obj_fload(FILE *, byte *); struct odes *obj_new(void); struct odes *obj_load(byte *); -void obj_fwrite(FILE *, struct odes *); /* Closes the file afterwards... */ +void obj_fwrite(FILE *, struct odes *); +void obj_write(byte *, struct odes *); void obj_free(struct odes *); struct oattr *find_attr(struct odes *, uns); struct oattr *find_attr_last(struct odes *, uns); +uns del_attr(struct odes *, struct oattr *); byte *find_aval(struct odes *, uns); struct oattr *set_attr(struct odes *, uns, byte *); struct oattr *set_attr_num(struct odes *, uns, uns); @@ -107,8 +112,11 @@ struct oattr *prepend_attr(struct odes *, uns, byte *); /* oname.c */ +#define OID_MIN 0x10000 /* Values less than this have special meaning */ + +ulg new_oid(uns); void mk_obj_name(byte *, ulg, byte *); -FILE *create_obj_file(byte *, ulg); +int dump_obj_to_file(byte *, ulg, struct odes *, int); /* wordsplit.c */ @@ -127,10 +135,6 @@ void hex_to_md5(byte *, byte *); #define MD5_SIZE 16 #define MD5_HEX_SIZE 33 -/* fcopy.c */ - -void fcopy(FILE *, FILE *, uns, byte *, uns); - /* prime.c */ int isprime(uns); @@ -140,3 +144,14 @@ uns nextprime(uns); void init_timer(void); uns get_timer(void); + +/* regex.c */ + +typedef struct regex regex; + +regex *rx_compile(byte *r); +void rx_free(regex *r); +int rx_match(regex *r, byte *s); +int rx_subst(regex *r, byte *by, byte *src, byte *dest, uns destlen); + +#endif