diff options
author | Arthur de Jong <arthur@arthurdejong.org> | 2009-12-28 13:18:12 +0100 |
---|---|---|
committer | Arthur de Jong <arthur@arthurdejong.org> | 2009-12-28 13:18:12 +0100 |
commit | 9c0cf90c858dd020756d7cd51661beedacdf9924 (patch) | |
tree | 215b28b4e0f754819590185e02e290df814c5b74 /common/expr.h | |
parent | 93182ac6939bece7e538bc06e5f09f47bcaddf8a (diff) |
implement attribute mapping using shell-like expressions
git-svn-id: http://arthurdejong.org/svn/nss-pam-ldapd/nss-pam-ldapd@1041 ef36b2f9-881f-0410-afb5-c4e39611909c
Diffstat (limited to 'common/expr.h')
-rw-r--r-- | common/expr.h | 41 |
1 files changed, 41 insertions, 0 deletions
diff --git a/common/expr.h b/common/expr.h new file mode 100644 index 0000000..9861a49 --- /dev/null +++ b/common/expr.h @@ -0,0 +1,41 @@ +/* + expr.h - limited shell-like expression parsing functions + This file is part of the nss-pam-ldapd library. + + Copyright (C) 2009 Arthur de Jong + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA + 02110-1301 USA +*/ + +#ifndef _EXPR_H +#define _EXPR_H 1 + +#include "compat/attrs.h" +#include "common/set.h" + +typedef const char *(*expander_t)(const char *name,void *expander_arg); + +/* Parse the expression and store the result in buffer, using the + expander function to expand variable names to values. If the expression + is invalid or the result didn't fit in the buffer NULL is returned. */ +MUST_USE const char *expr_parse(const char *expr,char *buffer,size_t buflen, + expander_t expander,void *expander_arg); + +/* Return the variable names that are used in expr. If set is NULL a new one + is allocated, otherwise the passed set is added to. */ +SET *expr_vars(const char *expr,SET *set); + +#endif /* not _EXPR_H */ |