Module: ngircd.git
Branch: master
Commit: e23f025dd6006eec2fe854ca0eaa623f0feb18ba
URL: http://ngircd.barton.de/cgi-bin/gitweb.cgi?p=ngircd.git&a=commit;h=e23f025d…
Author: Alexander Barton <alex(a)barton.de>
Date: Sun Dec 25 16:52:31 2011 +0100
Op_Check(): return client that initiated the request or NULL
The old behavior of returning true/false is compatible to this change,
so there are no other code changes required.
---
src/ngircd/op.c | 20 ++++++++++++++------
src/ngircd/op.h | 4 ++--
2 files changed, 16 insertions(+), 8 deletions(-)
diff --git a/src/ngircd/op.c b/src/ngircd/op.c
index 7c0737f..c93133c 100644
--- a/src/ngircd/op.c
+++ b/src/ngircd/op.c
@@ -58,9 +58,15 @@ Op_NoPrivileges(CLIENT * Client, REQUEST * Req)
/**
- * Check that the client is an IRC operator allowed to administer this server.
+ * Check that the originator of a request is an IRC operator and allowed
+ * to administer this server.
+ *
+ * @param CLient Client from which the command has been received.
+ * @param Req Request structure.
+ * @return CLIENT structure of the client that initiated the command or
+ * NULL if client is not allowed to execute operator commands.
*/
-GLOBAL bool
+GLOBAL CLIENT *
Op_Check(CLIENT * Client, REQUEST * Req)
{
CLIENT *c;
@@ -72,15 +78,17 @@ Op_Check(CLIENT * Client, REQUEST * Req)
c = Client_Search(Req->prefix);
else
c = Client;
+
if (!c)
- return false;
+ return NULL;
if (!Client_HasMode(c, 'o'))
- return false;
+ return NULL;
if (!Client_OperByMe(c) && !Conf_AllowRemoteOper)
- return false;
+ return NULL;
+
/* The client is an local IRC operator, or this server is configured
* to trust remote operators. */
- return true;
+ return c;
} /* Op_Check */
diff --git a/src/ngircd/op.h b/src/ngircd/op.h
index a1a84a3..71748eb 100644
--- a/src/ngircd/op.h
+++ b/src/ngircd/op.h
@@ -1,6 +1,6 @@
/*
* ngIRCd -- The Next Generation IRC Daemon
- * Copyright (c)2001-2009 Alexander Barton (alex(a)barton.de)
+ * Copyright (c)2001-2011 Alexander Barton (alex(a)barton.de) and Contributors.
*
* 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
@@ -18,7 +18,7 @@
*/
GLOBAL bool Op_NoPrivileges PARAMS((CLIENT * Client, REQUEST * Req));
-GLOBAL bool Op_Check PARAMS((CLIENT * Client, REQUEST * Req));
+GLOBAL CLIENT *Op_Check PARAMS((CLIENT * Client, REQUEST * Req));
#endif