]> andersk Git - openssh.git/blobdiff - match.c
- markus@cvs.openbsd.org 2001/11/07 22:53:21
[openssh.git] / match.c
diff --git a/match.c b/match.c
index 2e2d630926637f502ea079a85139b0b4eacef609..188b9a4169f69e77477c2a35ad49b02812bd7fa0 100644 (file)
--- a/match.c
+++ b/match.c
@@ -35,7 +35,7 @@
  */
 
 #include "includes.h"
-RCSID("$OpenBSD: match.c,v 1.13 2001/06/24 05:25:10 markus Exp $");
+RCSID("$OpenBSD: match.c,v 1.14 2001/06/27 04:48:53 markus Exp $");
 
 #include "match.h"
 #include "xmalloc.h"
@@ -184,6 +184,30 @@ match_host_and_ip(const char *host, const char *ipaddr,
        return 1;
 }
 
+/*
+ * match user, user@host_or_ip, user@host_or_ip_list against pattern
+ */
+int
+match_user(const char *user, const char *host, const char *ipaddr,
+    const char *pattern)
+{
+       char *p, *pat;
+       int ret;
+
+       if ((p = strchr(pattern,'@')) == NULL)
+               return match_pattern(user, pattern);
+
+       pat = xstrdup(pattern);
+       p = strchr(pat, '@');
+       *p++ = '\0';
+
+       if ((ret = match_pattern(user, pat)) == 1)
+               ret = match_host_and_ip(host, ipaddr, p);
+       xfree(pat);
+
+       return ret;
+}
+
 /*
  * Returns first item from client-list that is also supported by server-list,
  * caller must xfree() returned string.
This page took 0.029884 seconds and 4 git commands to generate.