Page Menu
Home
Phabricator
Search
Configure Global Search
Log In
Files
F1370
checkaddress.pl
Public
Actions
Download File
Edit File
Delete File
View Transforms
Subscribe
Authored By
•
bzimport
Nov 21 2014, 7:03 PM
2014-11-21 19:03:45 (UTC+0)
Size
2 KB
Referenced Files
None
Subscribers
None
checkaddress.pl
View Options
#
This
program
is
copyright
2001
-
2002
by
Paul
Warren
#
Modified
in
2005
by
Ævar
Arnfjörð
Bjarmason
#
#
Permission
is
hereby
granted
,
free
of
charge
,
to
any
person
obtaining
a
copy
of
#
this
software
and
associated
documentation
files
(
the
"Software"
),
to
deal
in
#
the
Software
without
restriction
,
including
without
limitation
the
rights
to
#
use
,
copy
,
modify
,
merge
,
publish
,
distribute
,
sublicense
,
and
/
or
sell
copies
#
of
the
Software
,
and
to
permit
persons
to
whom
the
Software
is
furnished
to
do
#
so
,
subject
to
the
following
conditions
:
The
above
copyright
notice
and
this
#
permission
notice
shall
be
included
in
all
copies
or
substantial
portions
of
#
the
Software
.
#
#
THE
SOFTWARE
IS
PROVIDED
"AS IS"
,
WITHOUT
WARRANTY
OF
ANY
KIND
,
EXPRESS
OR
#
IMPLIED
,
INCLUDING
BUT
NOT
LIMITED
TO
THE
WARRANTIES
OF
MERCHANTABILITY
,
#
FITNESS
FOR
A
PARTICULAR
PURPOSE
AND
NONINFRINGEMENT
.
IN
NO
EVENT
SHALL
THE
#
AUTHOR
BE
LIABLE
FOR
ANY
CLAIM
,
DAMAGES
OR
OTHER
LIABILITY
,
WHETHER
IN
AN
#
ACTION
OF
CONTRACT
,
TORT
OR
OTHERWISE
,
ARISING
FROM
,
OUT
OF
OR
IN
CONNECTION
#
WITH
THE
SOFTWARE
OR
THE
USE
OR
OTHER
DEALINGS
IN
THE
SOFTWARE
.
use
strict
;
END
{
exit
1
unless
valid
(
$
ARGV
[
0
]);
}
my
$
rfc822re
;
my
$
lwsp
=
"
(
?:
(
?:\\r\\n
)
?
[
\\t
])
"
;
my
$
char
=
'[\\000-\\177]'
;
sub
rfc822
{
my
$
specials
=
'()<>@,;:\\\\".\\[\\]'
;
my
$
controls
=
'\\000-\\037\\177'
;
my
$
dtext
=
"
[
^\\
[
\\
]
\\r\\\\
]
";
my $domain_literal = "
\\
[(
?:
$
dtext
|
\\\\.
)
*\\
]
$
lwsp*
";
my $quoted_string = "
\
"
(
?:
[
^\\\
"
\\r\\\\
]|
\\\\.
|
$
lwsp
)
*\
"$lwsp*"
;
my
$
atom
=
"
[
^
$
specials
$
controls
]
+
(
?:
$
lwsp+
|
\\
Z
|(
?=
[
\\
[
\
"$specials]))"
;
my
$
word
=
"(?:$atom|$quoted_string)"
;
my
$
localpart
=
"$
word
(
?:\\.
$
lwsp*
$
word
)
*
";
my $sub_domain = "
(
?:
$
atom
|
$
domain_literal
)
";
my $domain = "
$
sub_domain
(
?:\\.
$
lwsp*
$
sub_domain
)
*
";
my $addr_spec = "
$
localpart\@
$
lwsp*
$
domain
";
my $phrase = "
$
word*
";
my $route = "
(
?:\@
$
domain
(
?:
,
\@
$
lwsp*
$
domain
)
*:
$
lwsp*
)
";
my $route_addr = "
\\<
$
lwsp*
$
route?
$
addr_spec\\>
$
lwsp*
";
my $mailbox = "
(
?:
$
addr_spec
|
$
phrase$route_addr
)
";
my $group = "
$
phrase
:
$
lwsp*
(
?:
$
mailbox
(
?:
,
\\s*
$
mailbox
)
*
)
?
;
\\s*
";
my $address = "
(
?:
$
mailbox
|
$
group
)
";
"
$
lwsp*
$
address
";
}
sub strip_comments {
local $_ = shift;
while ($_ =~ s/^((?:[^"
\\
]|
\\.
)
*
(
?:
"(?:[^"
\\
]|
\\.
)
*
"(?:[^"
\\
]|
\\.
)
*
)
*
)
\
((
?:
[
^
()
\\
]|
\\.
)
*\
)
/
$
1
/
osx
)
{}
$
_
;
}
sub
valid
(
$
)
{
local
$
_
=
strip_comments
(
shift
);
$
rfc822re
or
$
rfc822re
=
rfc822
();
$
_
=~
m/^
$
rfc822re$
/
so
&&
$
_
=~
m/^
$
char*
$
/
;
}
File Metadata
Details
Attached
Mime Type
text/x-c
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
1269
Default Alt Text
checkaddress.pl (2 KB)
Attached To
Mode
T2959: Check email addresses before storing in database for compliance with RFC 2822
Attached
Detach File
Event Timeline
Log In to Comment