X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~mdw/git/disorder/blobdiff_plain/5df73aebf27f6c3b57a91ecfd504fa6ee367d20a..477b12ff719d3749b8d8f85035bd6384fee9be0d:/lib/rights.c
diff --git a/lib/rights.c b/lib/rights.c
index 8d84743..75a3d8e 100644
--- a/lib/rights.c
+++ b/lib/rights.c
@@ -2,29 +2,25 @@
* This file is part of DisOrder
* Copyright (C) 2007 Richard Kettlewell
*
- * This program is free software; you can redistribute it and/or modify
+ * This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
+ * the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
- *
- * This program 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
- * General Public License for more details.
- *
+ *
+ * This program 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 General Public License for more details.
+ *
* You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
- * USA
+ * along with this program. If not, see .
*/
/** @file lib/rights.c
* @brief User rights
*/
-#include
-#include "types.h"
+#include "common.h"
-#include
#include "mem.h"
#include "log.h"
@@ -53,7 +49,8 @@ static const struct {
{ RIGHT_REGISTER, "register" },
{ RIGHT_USERINFO, "userinfo" },
{ RIGHT_PREFS, "prefs" },
- { RIGHT_GLOBAL_PREFS, "global prefs" }
+ { RIGHT_GLOBAL_PREFS, "global prefs" },
+ { RIGHT_PAUSE, "pause" }
};
#define NRIGHTS (sizeof rights_names / sizeof *rights_names)
@@ -74,41 +71,21 @@ char *rights_string(rights_type r) {
return d->vec;
}
-/** @brief Compute default rights for a new user
- * @return Default rights value
- */
-rights_type default_rights(void) {
- /* TODO get rights from config */
- rights_type r = RIGHTS__MASK & ~(RIGHT_ADMIN|RIGHT_REGISTER
- |RIGHT_MOVE__MASK
- |RIGHT_SCRATCH__MASK
- |RIGHT_REMOVE__MASK);
- if(config->restrictions & RESTRICT_SCRATCH)
- r |= RIGHT_SCRATCH_MINE|RIGHT_SCRATCH_RANDOM;
- else
- r |= RIGHT_SCRATCH_ANY;
- if(!(config->restrictions & RESTRICT_MOVE))
- r |= RIGHT_MOVE_ANY;
- if(config->restrictions & RESTRICT_REMOVE)
- r |= RIGHT_REMOVE_MINE;
- else
- r |= RIGHT_REMOVE_ANY;
- return 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)
+ disorder_error(0, "empty rights string");
return -1;
}
while(*s) {
@@ -124,7 +101,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)
+ disorder_error(0, "unknown user right '%.*s'", (int)l, s);
return -1;
}
r |= rights_names[n].bit;