123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250 |
- {
- apr.pas
- Copyright (C) 2006 Felipe Monteiro de Carvalho
- This unit is a pascal binding for the Apache 2.0.58 headers.
- The headers were released under the following copyright:
- }
- { Copyright 2000-2005 The Apache Software Foundation or its licensors, as
- * applicable.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- }
- unit apr;
- interface
- {$ifdef fpc}
- {$mode delphi}{$H+}
- {$endif}
- {$IFNDEF FPC}
- {$DEFINE WINDOWS}
- {$ENDIF}
- {$IFDEF WIN32}
- {$DEFINE WINDOWS}
- {$ENDIF}
- {$ifdef Unix}
- {$PACKRECORDS C}
- {$endif}
- {$define Apache2_0}
- uses
- {$ifdef WINDOWS}
- Windows, winsock,
- {$ELSE}
- UnixType,
- {$ENDIF}
- SysUtils, ctypes;
-
- const
- {$IFDEF WINDOWS}
- LibAPR = 'libapr.dll';
- {$ELSE}
- LibAPR = '';
- {$ENDIF}
- {$IFDEF WINDOWS}
- LibNamePrefix = '_';
- LibSuff0 = '@0';
- LibSuff4 = '@4';
- LibSuff8 = '@8';
- LibSuff12 = '@12';
- LibSuff16 = '@16';
- LibSuff20 = '@20';
- LibSuff24 = '@24';
- LibSuff28 = '@28';
- LibSuff32 = '@32';
- {$ELSE}
- LibNamePrefix = '';
- LibSuff0 = '';
- LibSuff4 = '';
- LibSuff8 = '';
- LibSuff12 = '';
- LibSuff16 = '';
- LibSuff20 = '';
- LibSuff24 = '';
- LibSuff28 = '';
- LibSuff32 = '';
- {$ENDIF}
- type
- uid_t = Integer;
- gid_t = Integer;
- time_t = LongInt;
- size_t = Integer;
- pid_t = Integer;
- Ppid_t = ^pid_t;
- apr_uint16_t = Word;
- apr_uint32_t = Cardinal;
- apr_int64_t = Int64;
- apr_uint64_t = Int64;
- apr_socklen_t = Integer;
-
- apr_uint32_tso_handle_t = cuint;
- type
- {$IFDEF WINDOWS}
- apr_off_t = Int64;
- {$ENDIF}
- {$IFDEF UNIX}
- {$ifdef CPU64}
- apr_off_t = int64;
- {$else}
- apr_off_t = Integer;
- {$endif}
- {$ENDIF}
- apr_int32_t = Integer;
- Papr_int32_t = ^Integer;
- apr_size_t = size_t;
- Papr_size_t = ^apr_size_t;
- apr_int16_t = SmallInt;
- Papr_int16_t = ^SmallInt;
- // Network structures
-
- sockaddr = record
- sa_family: cushort; // address family, AF_xxx
- sa_data: array [1..14] of Char; // (NBO) 14 bytes of protocol address
- end;
-
- {$ifndef windows}
- va_list = Pointer;
- in_addr = record
- s_addr: culong; // load with inet_aton()
- end;
- sockaddr_in = record
- sin_family: cshort; // e.g. AF_INET
- sin_port: cushort; // e.g. htons(3490)
- sin_addr: in_addr; // see struct in_addr, below
- sin_zero: array [1..8] of Char; // zero this if you want to
- end;
-
- {$endif}
- in6_addr = record
- Case Integer of
- 1: (u6_addr8: array [1..16] of Byte);
- 2: (u6_addr16: array [1..8] of Word);
- 3: (u6_addr32: array [1..4] of Cardinal);
- end;
- //#define s6_addr in6_u.u6_addr8
- //#define s6_addr16 in6_u.u6_addr16
- //#define s6_addr32 in6_u.u6_addr32
- sockaddr_in6 = record
- sin6_family: cushort;
- sin6_port: Word;
- sin6_flowinfo: Cardinal;
- sin6_addr: in6_addr;
- sin6_scope_id: Cardinal;
- end;
- // TEMPORARY
-
- Papr_xml_ns_scope = Pointer;
- Pap_method_list_t = Pointer;
- Pcore_output_filter_ctx_t = Pointer;
- Pap_directive_t = Pointer;
- Pap_filter_t = Pointer;
- Papr_file_t = Pointer;
- Papr_off_t = Pointer;
- iovec = record
- /// byte count to read/write
- iov_len: culong;
- /// data to be read/written
- iov_base: PChar;
- end;
-
- Piovec = ^iovec;
- {$include apr_errno.inc}
- {$include apr_pools.inc}
- {$include apr_general.inc}
- {$include apr_dso.inc}
- {$include apr_user.inc}
- {$include apr_time.inc}
- {$include apr_tables.inc}
- {$include apr_file_info.inc}
- {$include apr_file_io.inc}
- {$include apr_strings.inc}
- {$include apr_lib.inc}
- {$include apr_signal.inc}
- {$include apr_network_io.inc}
- {.$include apr_portable.inc}
- {.$include ../aprutils/apr_uri.inc}
- {$include apr_thread_proc.inc}
- {$include apr_version.inc}
- {$include apr_poll.inc}
- implementation
- {
- Macros transformed into functions in the translation
- }
- { apr_pools.inc }
- {$ifndef DOXYGEN}
- function apr_pool_create(newpool: PPapr_pool_t; parent: Papr_pool_t): apr_status_t;
- begin
- Result := apr_pool_create_ex(newpool, parent, nil, nil);
- end;
- {$endif}
- function apr_pool_sub_make(newpool: PPapr_pool_t; parent: Papr_pool_t;
- abort_fn: apr_abortfunc_t): apr_status_t;
- begin
- Result := apr_pool_create_ex(newpool, parent, abort_fn, nil);
- end;
- { apr_lib.inc }
- function apr_tolower(c: Char): Char;
- var
- buf: array[0..1] of Char;
- begin
- buf[0] := c;
- buf[1] := #0;
-
- buf := StrLower(@buf[0]);
-
- Result := buf[0];
- end;
- function apr_toupper(c: Char): Char;
- var
- buf: array[0..1] of Char;
- begin
- buf[0] := c;
- buf[1] := #0;
- buf := StrUpper(@buf[0]);
- Result := buf[0];
- end;
- end.
|