mirror of
https://github.com/archlinuxarm/PKGBUILDs.git
synced 2024-11-28 22:57:37 +00:00
49 lines
1.6 KiB
Diff
Executable file
49 lines
1.6 KiB
Diff
Executable file
--- hosts_access.c Wed Feb 12 03:13:23 1997
|
|
+++ hosts_access.c Wed Jul 19 08:37:02 2000
|
|
@@ -240,6 +255,26 @@
|
|
}
|
|
}
|
|
|
|
+/* hostfile_match - look up host patterns from file */
|
|
+
|
|
+static int hostfile_match(path, host)
|
|
+char *path;
|
|
+struct hosts_info *host;
|
|
+{
|
|
+ char tok[BUFSIZ];
|
|
+ int match = NO;
|
|
+ FILE *fp;
|
|
+
|
|
+ if ((fp = fopen(path, "r")) != 0) {
|
|
+ while (fscanf(fp, "%s", tok) == 1 && !(match = host_match(tok, host)))
|
|
+ /* void */ ;
|
|
+ fclose(fp);
|
|
+ } else if (errno != ENOENT) {
|
|
+ tcpd_warn("open %s: %m", path);
|
|
+ }
|
|
+ return (match);
|
|
+}
|
|
+
|
|
/* host_match - match host name and/or address against pattern */
|
|
|
|
static int host_match(tok, host)
|
|
@@ -267,6 +302,8 @@
|
|
tcpd_warn("netgroup support is disabled"); /* not tcpd_jump() */
|
|
return (NO);
|
|
#endif
|
|
+ } else if (tok[0] == '/') { /* /file hack */
|
|
+ return (hostfile_match(tok, host));
|
|
} else if (STR_EQ(tok, "KNOWN")) { /* check address and name */
|
|
char *name = eval_hostname(host);
|
|
return (STR_NE(eval_hostaddr(host), unknown) && HOSTNAME_KNOWN(name));
|
|
--- hosts_access.5 2003-08-03 19:09:56.000000000 +0000
|
|
+++ hosts_access.5 2003-08-03 19:13:32.000000000 +0000
|
|
@@ -91,0 +92,7 @@
|
|
+.IP \(bu
|
|
+A string that begins with a `/\' character is treated as a file
|
|
+name. A host name or address is matched if it matches any host name
|
|
+or address pattern listed in the named file. The file format is
|
|
+zero or more lines with zero or more host name or address patterns
|
|
+separated by whitespace. A file name pattern can be used anywhere
|
|
+a host name or address pattern can be used.
|
|
|