X-Git-Url: http://git.madism.org/?a=blobdiff_plain;f=postlicyd%2Fquery.h;h=61f894d24bf811e7181ebcfbd7ce4f9315416872;hb=81227d766b6cd49042c042ac18c66bd9ec661d47;hp=87ee01e814df299be1750a6accb06616af37b5c2;hpb=909ec25baf2070c99d812698727943f19c900ee5;p=apps%2Fpfixtools.git diff --git a/postlicyd/query.h b/postlicyd/query.h index 87ee01e..61f894d 100644 --- a/postlicyd/query.h +++ b/postlicyd/query.h @@ -39,6 +39,7 @@ #include "mem.h" #include "common.h" +#include "policy_tokens.h" enum smtp_state { SMTP_CONNECT, @@ -94,18 +95,6 @@ typedef struct query_t { const char *eoq; } query_t; -static inline query_t *query_new(void) -{ - return p_new(query_t, 1); -} - -static inline void query_delete(query_t **query) -{ - if (*query) { - p_delete(query); - } -} - /** Parse the content of the text to fill the query. * The text pointed by \p p is segmented (and modified to add * a \0 at the end of each segment) and used to fill the query @@ -114,4 +103,21 @@ static inline void query_delete(query_t **query) __attribute__((nonnull(1,2))) bool query_parse(query_t *query, char *p); +/** Return the value of the field with the given name. + */ +__attribute__((nonnull(1,2))) +const char *query_field_for_name(const query_t *query, const char *name); + +/** Returns the value of the field with the given id. + */ +__attribute__((nonnull)) +const char *query_field_for_id(const query_t *query, postlicyd_token id); + +/** Formats the given string by replacing ${field_name} with the content + * of the query. + * Unknown and empty fields are filled with (null). + */ +__attribute__((nonnull(3))) +ssize_t query_format(char *dest, size_t len, const char* fmt, const query_t *query); + #endif