X-Git-Url: https://git.distorted.org.uk/~mdw/disorder/blobdiff_plain/04e1fa7cf5163aa784baaf3292ccb3b49e296410..e194c23144e69c1acbebb2d872c8d45fd1b52762:/lib/rights.c diff --git a/lib/rights.c b/lib/rights.c index d03eae1..416c6a7 100644 --- a/lib/rights.c +++ b/lib/rights.c @@ -21,10 +21,8 @@ * @brief User rights */ -#include -#include "types.h" +#include "common.h" -#include #include "mem.h" #include "log.h" @@ -78,16 +76,18 @@ char *rights_string(rights_type r) { /** @brief Parse a rights list * @param s Rights list in string form * @param rp Where to store rights, or NULL to just validate + * @param report Nonzero to log errors * @return 0 on success, non-0 if @p s is not valid */ -int parse_rights(const char *s, rights_type *rp) { +int parse_rights(const char *s, rights_type *rp, int report) { rights_type r = 0; const char *t; size_t n, l; if(!*s) { /* You can't have no rights */ - error(0, "empty rights string"); + if(report) + error(0, "empty rights string"); return -1; } while(*s) { @@ -103,7 +103,8 @@ int parse_rights(const char *s, rights_type *rp) { && !strncmp(rights_names[n].name, s, l)) break; if(n >= NRIGHTS) { - error(0, "unknown user right '%.*s'", (int)l, s); + if(report) + error(0, "unknown user right '%.*s'", (int)l, s); return -1; } r |= rights_names[n].bit;