squid-
cache.org
Optimising Web Delivery
Docs
Download
Donate
Support
About
Contact
Shop
Blog
src
acl
HierCodeData.cc
Go to the documentation of this file.
1
/*
2
* Copyright (C) 1996-2019 The Squid Software Foundation and contributors
3
*
4
* Squid software is distributed under GPLv2+ license and includes
5
* contributions from numerous individuals and organizations.
6
* Please see the COPYING and CONTRIBUTORS files for details.
7
*/
8
9
#include "
squid.h
"
10
#include "
acl/Checklist.h
"
11
#include "
acl/HierCodeData.h
"
12
#include "
ConfigParser.h
"
13
#include "
fatal.h
"
14
#include "
hier_code.h
"
15
16
ACLHierCodeData::ACLHierCodeData
()
17
{
18
// initialize mask to NULL
19
memset(
values
, 0,
sizeof
(
values
));
20
}
21
22
ACLHierCodeData::ACLHierCodeData
(
ACLHierCodeData
const
&old)
23
{
24
memcpy(
values
, old.
values
,
sizeof
(
values
) );
25
}
26
27
ACLHierCodeData::~ACLHierCodeData
()
28
{ }
29
30
bool
31
ACLHierCodeData::match
(
hier_code
toFind)
32
{
33
return
values
[toFind];
34
}
35
36
SBufList
37
ACLHierCodeData::dump
()
const
38
{
39
SBufList
sl;
40
41
for
(
hier_code
iter=
HIER_NONE
; iter<
HIER_MAX
; ++iter) {
42
if
(!
values
[iter])
continue
;
43
sl.push_back(
SBuf
(
hier_code_str
[iter]));
44
}
45
46
return
sl;
47
}
48
49
void
50
ACLHierCodeData::parse
()
51
{
52
char
*t =
NULL
;
53
54
while
((t =
ConfigParser::strtokFile
())) {
55
for
(
hier_code
iter =
HIER_NONE
; iter <=
HIER_MAX
; ++iter) {
56
if
(iter ==
HIER_MAX
) {
57
fatalf
(
"ERROR: No such hier_code '%s'"
,t);
58
return
;
59
}
60
if
(strcmp(
hier_code_str
[iter],t) == 0) {
61
values
[iter] =
true
;
62
break
;
// back to while-loop
63
}
64
}
65
}
66
}
67
68
bool
69
ACLHierCodeData::empty
()
const
70
{
71
for
(
hier_code
iter =
HIER_NONE
; iter <=
HIER_MAX
; ++iter) {
72
if
(
values
[iter])
return
false
;
// not empty.
73
}
74
return
true
;
75
}
76
77
ACLData<hier_code>
*
78
ACLHierCodeData::clone
()
const
79
{
80
return
new
ACLHierCodeData
(*
this
);
81
}
82
squid.h
ACLHierCodeData::values
bool values[HIER_MAX]
mask of codes this ACL might match.
Definition:
HierCodeData.h:32
SBuf
Definition:
SBuf.h:86
Checklist.h
ACLHierCodeData::empty
bool empty() const
Definition:
HierCodeData.cc:69
ACLHierCodeData::~ACLHierCodeData
virtual ~ACLHierCodeData()
Definition:
HierCodeData.cc:27
ACLHierCodeData::parse
void parse()
Definition:
HierCodeData.cc:50
fatal.h
ACLData< hier_code >
fatalf
void fatalf(const char *fmt,...)
Definition:
fatal.cc:68
SBufList
std::list< SBuf > SBufList
Definition:
forward.h:22
ConfigParser.h
ACLHierCodeData::match
bool match(hier_code)
Definition:
HierCodeData.cc:31
ACLHierCodeData::ACLHierCodeData
ACLHierCodeData()
Definition:
HierCodeData.cc:16
ACLHierCodeData
Definition:
HierCodeData.h:16
hier_code
hier_code
Definition:
hier_code.h:12
ConfigParser::strtokFile
static char * strtokFile()
Definition:
ConfigParser.cc:82
ACLHierCodeData::clone
virtual ACLData< hier_code > * clone() const
Definition:
HierCodeData.cc:78
hier_code.h
hier_code_str
const char * hier_code_str[]
HIER_NONE
Definition:
hier_code.h:13
ACLHierCodeData::dump
virtual SBufList dump() const
Definition:
HierCodeData.cc:37
NULL
#define NULL
Definition:
types.h:166
HierCodeData.h
HIER_MAX
Definition:
hier_code.h:38
Introduction
About Squid
Why Squid?
Squid Developers
How to Donate
How to Help Out
Getting Squid
Squid Source Packages
Squid Deployment Case-Studies
Squid Software Foundation
Documentation
Configuration:
Reference
Examples
FAQ
and
Wiki
Guide Books:
Beginners
Definitive
Non-English
More...
Support
Security Advisories
Bugzilla Database
Mailing lists
Contacting us
Commercial services
Project Sponsors
Squid-based products
Miscellaneous
Developer Resources
Related Writings
Related Software:
Authenticators
Ecap
Icap
Ident
Log Analysis
Monitor
Proxies
Redirectors
General
Squid Artwork
Web Site Translations
Japanese
Mirrors
Website:
gr
gr
id
il
it
pl
us
...
full list
FTP Package Archive