Compare commits
131 Commits
dynamic_li
...
master
Author | SHA1 | Date | |
---|---|---|---|
7ba0017ab1 | |||
![]() |
e88ee36f63 | ||
![]() |
d1143bee85 | ||
![]() |
e8a014ad18 | ||
![]() |
364410438a | ||
![]() |
50cbef999c | ||
![]() |
3f641c6e8d | ||
![]() |
da31c93c98 | ||
![]() |
f0928a82fc | ||
![]() |
2e53d02ca2 | ||
![]() |
f156d94713 | ||
![]() |
3c628d6832 | ||
![]() |
394cc9ac6d | ||
![]() |
a0144ff183 | ||
![]() |
ffd878ebc5 | ||
![]() |
e551b98cfb | ||
![]() |
97f9dc139f | ||
![]() |
8f54afac36 | ||
![]() |
1fbc39ce62 | ||
![]() |
ae73ee5094 | ||
![]() |
a1462fc77b | ||
![]() |
d8144b6969 | ||
![]() |
0ca1109cc8 | ||
![]() |
c6b7016330 | ||
![]() |
062d116f33 | ||
![]() |
e02ae5d350 | ||
![]() |
b244466563 | ||
![]() |
943b73001c | ||
![]() |
34b0cbd170 | ||
![]() |
37c3424cd5 | ||
![]() |
734f36df4e | ||
![]() |
dfa2da5ce8 | ||
![]() |
a2c463c1bd | ||
![]() |
1aa603aff2 | ||
![]() |
5a26ac47f4 | ||
![]() |
3690534459 | ||
![]() |
47ff192c6a | ||
![]() |
75734d2899 | ||
![]() |
7f31dace87 | ||
![]() |
49d46da35e | ||
![]() |
5ff162d145 | ||
![]() |
4419684028 | ||
![]() |
29e5b9a740 | ||
![]() |
e2c5ed7505 | ||
![]() |
5140065b3e | ||
![]() |
780bdb30ce | ||
![]() |
725228882d | ||
![]() |
17c287e5c0 | ||
![]() |
360dc19fb0 | ||
![]() |
5660da9844 | ||
![]() |
5f841e752b | ||
![]() |
a7e940eebb | ||
![]() |
6313196963 | ||
![]() |
ae9fa335fc | ||
![]() |
2ae47fca0b | ||
![]() |
8ce1196012 | ||
![]() |
026c4d93f0 | ||
![]() |
2c02025332 | ||
![]() |
f03172ab10 | ||
![]() |
8b7af6781f | ||
![]() |
d51b06a396 | ||
![]() |
c8257af1bc | ||
![]() |
b8a0a2a1bb | ||
![]() |
928e2ca7bc | ||
![]() |
b75f59fdd8 | ||
![]() |
5832197bde | ||
![]() |
4f3d692726 | ||
![]() |
344765d725 | ||
![]() |
812b35bf8c | ||
![]() |
55d6e766a4 | ||
![]() |
ec836e7873 | ||
![]() |
d383a66530 | ||
![]() |
7d82f677f5 | ||
![]() |
4b6954543e | ||
![]() |
aff20e6a45 | ||
![]() |
b76313bfdb | ||
![]() |
b07243b9c4 | ||
![]() |
8576bc0cd1 | ||
![]() |
ef7f203672 | ||
![]() |
2e75bee478 | ||
![]() |
c50deaec33 | ||
![]() |
406b297b4c | ||
![]() |
70c97ea841 | ||
![]() |
c2ddba5117 | ||
![]() |
2edd5699af | ||
![]() |
4d3428cfe3 | ||
![]() |
b941ada2af | ||
![]() |
cd88928614 | ||
![]() |
11838b31df | ||
![]() |
e6666d6c7a | ||
![]() |
95d3897971 | ||
![]() |
06aaebadc4 | ||
![]() |
326f9f7b19 | ||
![]() |
589a4f2f12 | ||
![]() |
00cf457a23 | ||
![]() |
2b79539c82 | ||
![]() |
44719d72e5 | ||
![]() |
82e2f931e7 | ||
![]() |
ae9fc97ea1 | ||
![]() |
d01974a95e | ||
![]() |
1888e7548e | ||
![]() |
ce4f26b134 | ||
![]() |
2d4e3ffaf6 | ||
![]() |
9de6cf1de0 | ||
![]() |
7e2b1365b4 | ||
![]() |
cafbf37771 | ||
![]() |
f24c18bb4a | ||
![]() |
db9eed56a1 | ||
![]() |
8bb4298c3a | ||
![]() |
945dd84829 | ||
![]() |
40649c7d3c | ||
![]() |
d3c0f80aaf | ||
![]() |
ae46b70398 | ||
![]() |
ec14ad4e99 | ||
![]() |
e64af682dc | ||
![]() |
7e407c1fb6 | ||
![]() |
1b0dd3f54c | ||
![]() |
d7322c983a | ||
![]() |
8a16d6e8f9 | ||
![]() |
258d83ed5b | ||
![]() |
ae25bb22fc | ||
![]() |
9403e7c8ac | ||
![]() |
d56117cbb3 | ||
![]() |
ab782fdb54 | ||
![]() |
9052673b36 | ||
![]() |
1e2a4c461d | ||
![]() |
0885316155 | ||
![]() |
19223f6f37 | ||
![]() |
a7512898a7 | ||
![]() |
276a203119 | ||
![]() |
802aad75cb |
339
LICENSE
Normal file
339
LICENSE
Normal file
@ -0,0 +1,339 @@
|
|||||||
|
GNU GENERAL PUBLIC LICENSE
|
||||||
|
Version 2, June 1991
|
||||||
|
|
||||||
|
Copyright (C) 1989, 1991 Free Software Foundation, Inc., <http://fsf.org/>
|
||||||
|
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||||
|
Everyone is permitted to copy and distribute verbatim copies
|
||||||
|
of this license document, but changing it is not allowed.
|
||||||
|
|
||||||
|
Preamble
|
||||||
|
|
||||||
|
The licenses for most software are designed to take away your
|
||||||
|
freedom to share and change it. By contrast, the GNU General Public
|
||||||
|
License is intended to guarantee your freedom to share and change free
|
||||||
|
software--to make sure the software is free for all its users. This
|
||||||
|
General Public License applies to most of the Free Software
|
||||||
|
Foundation's software and to any other program whose authors commit to
|
||||||
|
using it. (Some other Free Software Foundation software is covered by
|
||||||
|
the GNU Lesser General Public License instead.) You can apply it to
|
||||||
|
your programs, too.
|
||||||
|
|
||||||
|
When we speak of free software, we are referring to freedom, not
|
||||||
|
price. Our General Public Licenses are designed to make sure that you
|
||||||
|
have the freedom to distribute copies of free software (and charge for
|
||||||
|
this service if you wish), that you receive source code or can get it
|
||||||
|
if you want it, that you can change the software or use pieces of it
|
||||||
|
in new free programs; and that you know you can do these things.
|
||||||
|
|
||||||
|
To protect your rights, we need to make restrictions that forbid
|
||||||
|
anyone to deny you these rights or to ask you to surrender the rights.
|
||||||
|
These restrictions translate to certain responsibilities for you if you
|
||||||
|
distribute copies of the software, or if you modify it.
|
||||||
|
|
||||||
|
For example, if you distribute copies of such a program, whether
|
||||||
|
gratis or for a fee, you must give the recipients all the rights that
|
||||||
|
you have. You must make sure that they, too, receive or can get the
|
||||||
|
source code. And you must show them these terms so they know their
|
||||||
|
rights.
|
||||||
|
|
||||||
|
We protect your rights with two steps: (1) copyright the software, and
|
||||||
|
(2) offer you this license which gives you legal permission to copy,
|
||||||
|
distribute and/or modify the software.
|
||||||
|
|
||||||
|
Also, for each author's protection and ours, we want to make certain
|
||||||
|
that everyone understands that there is no warranty for this free
|
||||||
|
software. If the software is modified by someone else and passed on, we
|
||||||
|
want its recipients to know that what they have is not the original, so
|
||||||
|
that any problems introduced by others will not reflect on the original
|
||||||
|
authors' reputations.
|
||||||
|
|
||||||
|
Finally, any free program is threatened constantly by software
|
||||||
|
patents. We wish to avoid the danger that redistributors of a free
|
||||||
|
program will individually obtain patent licenses, in effect making the
|
||||||
|
program proprietary. To prevent this, we have made it clear that any
|
||||||
|
patent must be licensed for everyone's free use or not licensed at all.
|
||||||
|
|
||||||
|
The precise terms and conditions for copying, distribution and
|
||||||
|
modification follow.
|
||||||
|
|
||||||
|
GNU GENERAL PUBLIC LICENSE
|
||||||
|
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
|
||||||
|
|
||||||
|
0. This License applies to any program or other work which contains
|
||||||
|
a notice placed by the copyright holder saying it may be distributed
|
||||||
|
under the terms of this General Public License. The "Program", below,
|
||||||
|
refers to any such program or work, and a "work based on the Program"
|
||||||
|
means either the Program or any derivative work under copyright law:
|
||||||
|
that is to say, a work containing the Program or a portion of it,
|
||||||
|
either verbatim or with modifications and/or translated into another
|
||||||
|
language. (Hereinafter, translation is included without limitation in
|
||||||
|
the term "modification".) Each licensee is addressed as "you".
|
||||||
|
|
||||||
|
Activities other than copying, distribution and modification are not
|
||||||
|
covered by this License; they are outside its scope. The act of
|
||||||
|
running the Program is not restricted, and the output from the Program
|
||||||
|
is covered only if its contents constitute a work based on the
|
||||||
|
Program (independent of having been made by running the Program).
|
||||||
|
Whether that is true depends on what the Program does.
|
||||||
|
|
||||||
|
1. You may copy and distribute verbatim copies of the Program's
|
||||||
|
source code as you receive it, in any medium, provided that you
|
||||||
|
conspicuously and appropriately publish on each copy an appropriate
|
||||||
|
copyright notice and disclaimer of warranty; keep intact all the
|
||||||
|
notices that refer to this License and to the absence of any warranty;
|
||||||
|
and give any other recipients of the Program a copy of this License
|
||||||
|
along with the Program.
|
||||||
|
|
||||||
|
You may charge a fee for the physical act of transferring a copy, and
|
||||||
|
you may at your option offer warranty protection in exchange for a fee.
|
||||||
|
|
||||||
|
2. You may modify your copy or copies of the Program or any portion
|
||||||
|
of it, thus forming a work based on the Program, and copy and
|
||||||
|
distribute such modifications or work under the terms of Section 1
|
||||||
|
above, provided that you also meet all of these conditions:
|
||||||
|
|
||||||
|
a) You must cause the modified files to carry prominent notices
|
||||||
|
stating that you changed the files and the date of any change.
|
||||||
|
|
||||||
|
b) You must cause any work that you distribute or publish, that in
|
||||||
|
whole or in part contains or is derived from the Program or any
|
||||||
|
part thereof, to be licensed as a whole at no charge to all third
|
||||||
|
parties under the terms of this License.
|
||||||
|
|
||||||
|
c) If the modified program normally reads commands interactively
|
||||||
|
when run, you must cause it, when started running for such
|
||||||
|
interactive use in the most ordinary way, to print or display an
|
||||||
|
announcement including an appropriate copyright notice and a
|
||||||
|
notice that there is no warranty (or else, saying that you provide
|
||||||
|
a warranty) and that users may redistribute the program under
|
||||||
|
these conditions, and telling the user how to view a copy of this
|
||||||
|
License. (Exception: if the Program itself is interactive but
|
||||||
|
does not normally print such an announcement, your work based on
|
||||||
|
the Program is not required to print an announcement.)
|
||||||
|
|
||||||
|
These requirements apply to the modified work as a whole. If
|
||||||
|
identifiable sections of that work are not derived from the Program,
|
||||||
|
and can be reasonably considered independent and separate works in
|
||||||
|
themselves, then this License, and its terms, do not apply to those
|
||||||
|
sections when you distribute them as separate works. But when you
|
||||||
|
distribute the same sections as part of a whole which is a work based
|
||||||
|
on the Program, the distribution of the whole must be on the terms of
|
||||||
|
this License, whose permissions for other licensees extend to the
|
||||||
|
entire whole, and thus to each and every part regardless of who wrote it.
|
||||||
|
|
||||||
|
Thus, it is not the intent of this section to claim rights or contest
|
||||||
|
your rights to work written entirely by you; rather, the intent is to
|
||||||
|
exercise the right to control the distribution of derivative or
|
||||||
|
collective works based on the Program.
|
||||||
|
|
||||||
|
In addition, mere aggregation of another work not based on the Program
|
||||||
|
with the Program (or with a work based on the Program) on a volume of
|
||||||
|
a storage or distribution medium does not bring the other work under
|
||||||
|
the scope of this License.
|
||||||
|
|
||||||
|
3. You may copy and distribute the Program (or a work based on it,
|
||||||
|
under Section 2) in object code or executable form under the terms of
|
||||||
|
Sections 1 and 2 above provided that you also do one of the following:
|
||||||
|
|
||||||
|
a) Accompany it with the complete corresponding machine-readable
|
||||||
|
source code, which must be distributed under the terms of Sections
|
||||||
|
1 and 2 above on a medium customarily used for software interchange; or,
|
||||||
|
|
||||||
|
b) Accompany it with a written offer, valid for at least three
|
||||||
|
years, to give any third party, for a charge no more than your
|
||||||
|
cost of physically performing source distribution, a complete
|
||||||
|
machine-readable copy of the corresponding source code, to be
|
||||||
|
distributed under the terms of Sections 1 and 2 above on a medium
|
||||||
|
customarily used for software interchange; or,
|
||||||
|
|
||||||
|
c) Accompany it with the information you received as to the offer
|
||||||
|
to distribute corresponding source code. (This alternative is
|
||||||
|
allowed only for noncommercial distribution and only if you
|
||||||
|
received the program in object code or executable form with such
|
||||||
|
an offer, in accord with Subsection b above.)
|
||||||
|
|
||||||
|
The source code for a work means the preferred form of the work for
|
||||||
|
making modifications to it. For an executable work, complete source
|
||||||
|
code means all the source code for all modules it contains, plus any
|
||||||
|
associated interface definition files, plus the scripts used to
|
||||||
|
control compilation and installation of the executable. However, as a
|
||||||
|
special exception, the source code distributed need not include
|
||||||
|
anything that is normally distributed (in either source or binary
|
||||||
|
form) with the major components (compiler, kernel, and so on) of the
|
||||||
|
operating system on which the executable runs, unless that component
|
||||||
|
itself accompanies the executable.
|
||||||
|
|
||||||
|
If distribution of executable or object code is made by offering
|
||||||
|
access to copy from a designated place, then offering equivalent
|
||||||
|
access to copy the source code from the same place counts as
|
||||||
|
distribution of the source code, even though third parties are not
|
||||||
|
compelled to copy the source along with the object code.
|
||||||
|
|
||||||
|
4. You may not copy, modify, sublicense, or distribute the Program
|
||||||
|
except as expressly provided under this License. Any attempt
|
||||||
|
otherwise to copy, modify, sublicense or distribute the Program is
|
||||||
|
void, and will automatically terminate your rights under this License.
|
||||||
|
However, parties who have received copies, or rights, from you under
|
||||||
|
this License will not have their licenses terminated so long as such
|
||||||
|
parties remain in full compliance.
|
||||||
|
|
||||||
|
5. You are not required to accept this License, since you have not
|
||||||
|
signed it. However, nothing else grants you permission to modify or
|
||||||
|
distribute the Program or its derivative works. These actions are
|
||||||
|
prohibited by law if you do not accept this License. Therefore, by
|
||||||
|
modifying or distributing the Program (or any work based on the
|
||||||
|
Program), you indicate your acceptance of this License to do so, and
|
||||||
|
all its terms and conditions for copying, distributing or modifying
|
||||||
|
the Program or works based on it.
|
||||||
|
|
||||||
|
6. Each time you redistribute the Program (or any work based on the
|
||||||
|
Program), the recipient automatically receives a license from the
|
||||||
|
original licensor to copy, distribute or modify the Program subject to
|
||||||
|
these terms and conditions. You may not impose any further
|
||||||
|
restrictions on the recipients' exercise of the rights granted herein.
|
||||||
|
You are not responsible for enforcing compliance by third parties to
|
||||||
|
this License.
|
||||||
|
|
||||||
|
7. If, as a consequence of a court judgment or allegation of patent
|
||||||
|
infringement or for any other reason (not limited to patent issues),
|
||||||
|
conditions are imposed on you (whether by court order, agreement or
|
||||||
|
otherwise) that contradict the conditions of this License, they do not
|
||||||
|
excuse you from the conditions of this License. If you cannot
|
||||||
|
distribute so as to satisfy simultaneously your obligations under this
|
||||||
|
License and any other pertinent obligations, then as a consequence you
|
||||||
|
may not distribute the Program at all. For example, if a patent
|
||||||
|
license would not permit royalty-free redistribution of the Program by
|
||||||
|
all those who receive copies directly or indirectly through you, then
|
||||||
|
the only way you could satisfy both it and this License would be to
|
||||||
|
refrain entirely from distribution of the Program.
|
||||||
|
|
||||||
|
If any portion of this section is held invalid or unenforceable under
|
||||||
|
any particular circumstance, the balance of the section is intended to
|
||||||
|
apply and the section as a whole is intended to apply in other
|
||||||
|
circumstances.
|
||||||
|
|
||||||
|
It is not the purpose of this section to induce you to infringe any
|
||||||
|
patents or other property right claims or to contest validity of any
|
||||||
|
such claims; this section has the sole purpose of protecting the
|
||||||
|
integrity of the free software distribution system, which is
|
||||||
|
implemented by public license practices. Many people have made
|
||||||
|
generous contributions to the wide range of software distributed
|
||||||
|
through that system in reliance on consistent application of that
|
||||||
|
system; it is up to the author/donor to decide if he or she is willing
|
||||||
|
to distribute software through any other system and a licensee cannot
|
||||||
|
impose that choice.
|
||||||
|
|
||||||
|
This section is intended to make thoroughly clear what is believed to
|
||||||
|
be a consequence of the rest of this License.
|
||||||
|
|
||||||
|
8. If the distribution and/or use of the Program is restricted in
|
||||||
|
certain countries either by patents or by copyrighted interfaces, the
|
||||||
|
original copyright holder who places the Program under this License
|
||||||
|
may add an explicit geographical distribution limitation excluding
|
||||||
|
those countries, so that distribution is permitted only in or among
|
||||||
|
countries not thus excluded. In such case, this License incorporates
|
||||||
|
the limitation as if written in the body of this License.
|
||||||
|
|
||||||
|
9. The Free Software Foundation may publish revised and/or new versions
|
||||||
|
of the General Public License from time to time. Such new versions will
|
||||||
|
be similar in spirit to the present version, but may differ in detail to
|
||||||
|
address new problems or concerns.
|
||||||
|
|
||||||
|
Each version is given a distinguishing version number. If the Program
|
||||||
|
specifies a version number of this License which applies to it and "any
|
||||||
|
later version", you have the option of following the terms and conditions
|
||||||
|
either of that version or of any later version published by the Free
|
||||||
|
Software Foundation. If the Program does not specify a version number of
|
||||||
|
this License, you may choose any version ever published by the Free Software
|
||||||
|
Foundation.
|
||||||
|
|
||||||
|
10. If you wish to incorporate parts of the Program into other free
|
||||||
|
programs whose distribution conditions are different, write to the author
|
||||||
|
to ask for permission. For software which is copyrighted by the Free
|
||||||
|
Software Foundation, write to the Free Software Foundation; we sometimes
|
||||||
|
make exceptions for this. Our decision will be guided by the two goals
|
||||||
|
of preserving the free status of all derivatives of our free software and
|
||||||
|
of promoting the sharing and reuse of software generally.
|
||||||
|
|
||||||
|
NO WARRANTY
|
||||||
|
|
||||||
|
11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
|
||||||
|
FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
|
||||||
|
OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
|
||||||
|
PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
|
||||||
|
OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
||||||
|
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
|
||||||
|
TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
|
||||||
|
PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
|
||||||
|
REPAIR OR CORRECTION.
|
||||||
|
|
||||||
|
12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
|
||||||
|
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
|
||||||
|
REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
|
||||||
|
INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
|
||||||
|
OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
|
||||||
|
TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
|
||||||
|
YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
|
||||||
|
PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
|
||||||
|
POSSIBILITY OF SUCH DAMAGES.
|
||||||
|
|
||||||
|
END OF TERMS AND CONDITIONS
|
||||||
|
|
||||||
|
How to Apply These Terms to Your New Programs
|
||||||
|
|
||||||
|
If you develop a new program, and you want it to be of the greatest
|
||||||
|
possible use to the public, the best way to achieve this is to make it
|
||||||
|
free software which everyone can redistribute and change under these terms.
|
||||||
|
|
||||||
|
To do so, attach the following notices to the program. It is safest
|
||||||
|
to attach them to the start of each source file to most effectively
|
||||||
|
convey the exclusion of warranty; and each file should have at least
|
||||||
|
the "copyright" line and a pointer to where the full notice is found.
|
||||||
|
|
||||||
|
smmapdfw
|
||||||
|
Copyright (C) 2020 Wolfgang Hottgenroth
|
||||||
|
|
||||||
|
This program is free software; you can redistribute it and/or modify
|
||||||
|
it under the terms of the GNU General Public License as published by
|
||||||
|
the Free Software Foundation; either version 2 of the License, or
|
||||||
|
(at your option) any later version.
|
||||||
|
|
||||||
|
This program is distributed in the hope that it will be useful,
|
||||||
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
GNU General Public License for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU General Public License along
|
||||||
|
with this program; if not, write to the Free Software Foundation, Inc.,
|
||||||
|
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||||
|
|
||||||
|
Also add information on how to contact you by electronic and paper mail.
|
||||||
|
|
||||||
|
If the program is interactive, make it output a short notice like this
|
||||||
|
when it starts in an interactive mode:
|
||||||
|
|
||||||
|
Gnomovision version 69, Copyright (C) year name of author
|
||||||
|
Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
|
||||||
|
This is free software, and you are welcome to redistribute it
|
||||||
|
under certain conditions; type `show c' for details.
|
||||||
|
|
||||||
|
The hypothetical commands `show w' and `show c' should show the appropriate
|
||||||
|
parts of the General Public License. Of course, the commands you use may
|
||||||
|
be called something other than `show w' and `show c'; they could even be
|
||||||
|
mouse-clicks or menu items--whatever suits your program.
|
||||||
|
|
||||||
|
You should also get your employer (if you work as a programmer) or your
|
||||||
|
school, if any, to sign a "copyright disclaimer" for the program, if
|
||||||
|
necessary. Here is a sample; alter the names:
|
||||||
|
|
||||||
|
Yoyodyne, Inc., hereby disclaims all copyright interest in the program
|
||||||
|
`Gnomovision' (which makes passes at compilers) written by James Hacker.
|
||||||
|
|
||||||
|
{signature of Ty Coon}, 1 April 1989
|
||||||
|
Ty Coon, President of Vice
|
||||||
|
|
||||||
|
This General Public License does not permit incorporating your program into
|
||||||
|
proprietary programs. If your program is a subroutine library, you may
|
||||||
|
consider it more useful to permit linking proprietary applications with the
|
||||||
|
library. If this is what you want to do, use the GNU Lesser General
|
||||||
|
Public License instead of this License.
|
139
pgworker/.in
Normal file
139
pgworker/.in
Normal file
@ -0,0 +1,139 @@
|
|||||||
|
/* .in. Generated from configure.ac by autoheader. */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <cfg.h> header file. */
|
||||||
|
#undef HAVE_CFG_H
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <containers_public.h> header file. */
|
||||||
|
#undef HAVE_CONTAINERS_PUBLIC_H
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <count.h> header file. */
|
||||||
|
#undef HAVE_COUNT_H
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `findcfgl' function. */
|
||||||
|
#undef HAVE_FINDCFGL
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `findcfglx' function. */
|
||||||
|
#undef HAVE_FINDCFGLX
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `fork' function. */
|
||||||
|
#undef HAVE_FORK
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `htmalloc' function. */
|
||||||
|
#undef HAVE_HTMALLOC
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <htmalloc.h> header file. */
|
||||||
|
#undef HAVE_HTMALLOC_H
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `htrealloc' function. */
|
||||||
|
#undef HAVE_HTREALLOC
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <inttypes.h> header file. */
|
||||||
|
#undef HAVE_INTTYPES_H
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `m' library (-lm). */
|
||||||
|
#undef HAVE_LIBM
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `pq' library (-lpq). */
|
||||||
|
#undef HAVE_LIBPQ
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <libpq-fe.h> header file. */
|
||||||
|
#undef HAVE_LIBPQ_FE_H
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `smmapdfw' library (-lsmmapdfw). */
|
||||||
|
#undef HAVE_LIBSMMAPDFW
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <memory.h> header file. */
|
||||||
|
#undef HAVE_MEMORY_H
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <queue.h> header file. */
|
||||||
|
#undef HAVE_QUEUE_H
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <smmapd.h> header file. */
|
||||||
|
#undef HAVE_SMMAPD_H
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <stdint.h> header file. */
|
||||||
|
#undef HAVE_STDINT_H
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <stdlib.h> header file. */
|
||||||
|
#undef HAVE_STDLIB_H
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <strings.h> header file. */
|
||||||
|
#undef HAVE_STRINGS_H
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <string.h> header file. */
|
||||||
|
#undef HAVE_STRING_H
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `syslog' function. */
|
||||||
|
#undef HAVE_SYSLOG
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <syslog.h> header file. */
|
||||||
|
#undef HAVE_SYSLOG_H
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <sys/select.h> header file. */
|
||||||
|
#undef HAVE_SYS_SELECT_H
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <sys/socket.h> header file. */
|
||||||
|
#undef HAVE_SYS_SOCKET_H
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <sys/stat.h> header file. */
|
||||||
|
#undef HAVE_SYS_STAT_H
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <sys/types.h> header file. */
|
||||||
|
#undef HAVE_SYS_TYPES_H
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <unistd.h> header file. */
|
||||||
|
#undef HAVE_UNISTD_H
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `vfork' function. */
|
||||||
|
#undef HAVE_VFORK
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <vfork.h> header file. */
|
||||||
|
#undef HAVE_VFORK_H
|
||||||
|
|
||||||
|
/* Define to 1 if `fork' works. */
|
||||||
|
#undef HAVE_WORKING_FORK
|
||||||
|
|
||||||
|
/* Define to 1 if `vfork' works. */
|
||||||
|
#undef HAVE_WORKING_VFORK
|
||||||
|
|
||||||
|
/* Define to the address where bug reports for this package should be sent. */
|
||||||
|
#undef PACKAGE_BUGREPORT
|
||||||
|
|
||||||
|
/* Define to the full name of this package. */
|
||||||
|
#undef PACKAGE_NAME
|
||||||
|
|
||||||
|
/* Define to the full name and version of this package. */
|
||||||
|
#undef PACKAGE_STRING
|
||||||
|
|
||||||
|
/* Define to the one symbol short name of this package. */
|
||||||
|
#undef PACKAGE_TARNAME
|
||||||
|
|
||||||
|
/* Define to the version of this package. */
|
||||||
|
#undef PACKAGE_VERSION
|
||||||
|
|
||||||
|
/* Define to the type of arg 1 for `select'. */
|
||||||
|
#undef SELECT_TYPE_ARG1
|
||||||
|
|
||||||
|
/* Define to the type of args 2, 3 and 4 for `select'. */
|
||||||
|
#undef SELECT_TYPE_ARG234
|
||||||
|
|
||||||
|
/* Define to the type of arg 5 for `select'. */
|
||||||
|
#undef SELECT_TYPE_ARG5
|
||||||
|
|
||||||
|
/* Define to 1 if you have the ANSI C header files. */
|
||||||
|
#undef STDC_HEADERS
|
||||||
|
|
||||||
|
/* Define to 1 if you can safely include both <sys/time.h> and <time.h>. */
|
||||||
|
#undef TIME_WITH_SYS_TIME
|
||||||
|
|
||||||
|
/* Define to empty if `const' does not conform to ANSI C. */
|
||||||
|
#undef const
|
||||||
|
|
||||||
|
/* Define to `int' if <sys/types.h> does not define. */
|
||||||
|
#undef pid_t
|
||||||
|
|
||||||
|
/* Define to `unsigned' if <sys/types.h> does not define. */
|
||||||
|
#undef size_t
|
||||||
|
|
||||||
|
/* Define as `fork' if `vfork' does not work. */
|
||||||
|
#undef vfork
|
1
pgworker/AUTHORS
Normal file
1
pgworker/AUTHORS
Normal file
@ -0,0 +1 @@
|
|||||||
|
Wolfgang Hottgenroth <woho@hottis.de>
|
340
pgworker/COPYING
Normal file
340
pgworker/COPYING
Normal file
@ -0,0 +1,340 @@
|
|||||||
|
GNU GENERAL PUBLIC LICENSE
|
||||||
|
Version 2, June 1991
|
||||||
|
|
||||||
|
Copyright (C) 1989, 1991 Free Software Foundation, Inc.
|
||||||
|
59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||||
|
Everyone is permitted to copy and distribute verbatim copies
|
||||||
|
of this license document, but changing it is not allowed.
|
||||||
|
|
||||||
|
Preamble
|
||||||
|
|
||||||
|
The licenses for most software are designed to take away your
|
||||||
|
freedom to share and change it. By contrast, the GNU General Public
|
||||||
|
License is intended to guarantee your freedom to share and change free
|
||||||
|
software--to make sure the software is free for all its users. This
|
||||||
|
General Public License applies to most of the Free Software
|
||||||
|
Foundation's software and to any other program whose authors commit to
|
||||||
|
using it. (Some other Free Software Foundation software is covered by
|
||||||
|
the GNU Library General Public License instead.) You can apply it to
|
||||||
|
your programs, too.
|
||||||
|
|
||||||
|
When we speak of free software, we are referring to freedom, not
|
||||||
|
price. Our General Public Licenses are designed to make sure that you
|
||||||
|
have the freedom to distribute copies of free software (and charge for
|
||||||
|
this service if you wish), that you receive source code or can get it
|
||||||
|
if you want it, that you can change the software or use pieces of it
|
||||||
|
in new free programs; and that you know you can do these things.
|
||||||
|
|
||||||
|
To protect your rights, we need to make restrictions that forbid
|
||||||
|
anyone to deny you these rights or to ask you to surrender the rights.
|
||||||
|
These restrictions translate to certain responsibilities for you if you
|
||||||
|
distribute copies of the software, or if you modify it.
|
||||||
|
|
||||||
|
For example, if you distribute copies of such a program, whether
|
||||||
|
gratis or for a fee, you must give the recipients all the rights that
|
||||||
|
you have. You must make sure that they, too, receive or can get the
|
||||||
|
source code. And you must show them these terms so they know their
|
||||||
|
rights.
|
||||||
|
|
||||||
|
We protect your rights with two steps: (1) copyright the software, and
|
||||||
|
(2) offer you this license which gives you legal permission to copy,
|
||||||
|
distribute and/or modify the software.
|
||||||
|
|
||||||
|
Also, for each author's protection and ours, we want to make certain
|
||||||
|
that everyone understands that there is no warranty for this free
|
||||||
|
software. If the software is modified by someone else and passed on, we
|
||||||
|
want its recipients to know that what they have is not the original, so
|
||||||
|
that any problems introduced by others will not reflect on the original
|
||||||
|
authors' reputations.
|
||||||
|
|
||||||
|
Finally, any free program is threatened constantly by software
|
||||||
|
patents. We wish to avoid the danger that redistributors of a free
|
||||||
|
program will individually obtain patent licenses, in effect making the
|
||||||
|
program proprietary. To prevent this, we have made it clear that any
|
||||||
|
patent must be licensed for everyone's free use or not licensed at all.
|
||||||
|
|
||||||
|
The precise terms and conditions for copying, distribution and
|
||||||
|
modification follow.
|
||||||
|
|
||||||
|
GNU GENERAL PUBLIC LICENSE
|
||||||
|
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
|
||||||
|
|
||||||
|
0. This License applies to any program or other work which contains
|
||||||
|
a notice placed by the copyright holder saying it may be distributed
|
||||||
|
under the terms of this General Public License. The "Program", below,
|
||||||
|
refers to any such program or work, and a "work based on the Program"
|
||||||
|
means either the Program or any derivative work under copyright law:
|
||||||
|
that is to say, a work containing the Program or a portion of it,
|
||||||
|
either verbatim or with modifications and/or translated into another
|
||||||
|
language. (Hereinafter, translation is included without limitation in
|
||||||
|
the term "modification".) Each licensee is addressed as "you".
|
||||||
|
|
||||||
|
Activities other than copying, distribution and modification are not
|
||||||
|
covered by this License; they are outside its scope. The act of
|
||||||
|
running the Program is not restricted, and the output from the Program
|
||||||
|
is covered only if its contents constitute a work based on the
|
||||||
|
Program (independent of having been made by running the Program).
|
||||||
|
Whether that is true depends on what the Program does.
|
||||||
|
|
||||||
|
1. You may copy and distribute verbatim copies of the Program's
|
||||||
|
source code as you receive it, in any medium, provided that you
|
||||||
|
conspicuously and appropriately publish on each copy an appropriate
|
||||||
|
copyright notice and disclaimer of warranty; keep intact all the
|
||||||
|
notices that refer to this License and to the absence of any warranty;
|
||||||
|
and give any other recipients of the Program a copy of this License
|
||||||
|
along with the Program.
|
||||||
|
|
||||||
|
You may charge a fee for the physical act of transferring a copy, and
|
||||||
|
you may at your option offer warranty protection in exchange for a fee.
|
||||||
|
|
||||||
|
2. You may modify your copy or copies of the Program or any portion
|
||||||
|
of it, thus forming a work based on the Program, and copy and
|
||||||
|
distribute such modifications or work under the terms of Section 1
|
||||||
|
above, provided that you also meet all of these conditions:
|
||||||
|
|
||||||
|
a) You must cause the modified files to carry prominent notices
|
||||||
|
stating that you changed the files and the date of any change.
|
||||||
|
|
||||||
|
b) You must cause any work that you distribute or publish, that in
|
||||||
|
whole or in part contains or is derived from the Program or any
|
||||||
|
part thereof, to be licensed as a whole at no charge to all third
|
||||||
|
parties under the terms of this License.
|
||||||
|
|
||||||
|
c) If the modified program normally reads commands interactively
|
||||||
|
when run, you must cause it, when started running for such
|
||||||
|
interactive use in the most ordinary way, to print or display an
|
||||||
|
announcement including an appropriate copyright notice and a
|
||||||
|
notice that there is no warranty (or else, saying that you provide
|
||||||
|
a warranty) and that users may redistribute the program under
|
||||||
|
these conditions, and telling the user how to view a copy of this
|
||||||
|
License. (Exception: if the Program itself is interactive but
|
||||||
|
does not normally print such an announcement, your work based on
|
||||||
|
the Program is not required to print an announcement.)
|
||||||
|
|
||||||
|
These requirements apply to the modified work as a whole. If
|
||||||
|
identifiable sections of that work are not derived from the Program,
|
||||||
|
and can be reasonably considered independent and separate works in
|
||||||
|
themselves, then this License, and its terms, do not apply to those
|
||||||
|
sections when you distribute them as separate works. But when you
|
||||||
|
distribute the same sections as part of a whole which is a work based
|
||||||
|
on the Program, the distribution of the whole must be on the terms of
|
||||||
|
this License, whose permissions for other licensees extend to the
|
||||||
|
entire whole, and thus to each and every part regardless of who wrote it.
|
||||||
|
|
||||||
|
Thus, it is not the intent of this section to claim rights or contest
|
||||||
|
your rights to work written entirely by you; rather, the intent is to
|
||||||
|
exercise the right to control the distribution of derivative or
|
||||||
|
collective works based on the Program.
|
||||||
|
|
||||||
|
In addition, mere aggregation of another work not based on the Program
|
||||||
|
with the Program (or with a work based on the Program) on a volume of
|
||||||
|
a storage or distribution medium does not bring the other work under
|
||||||
|
the scope of this License.
|
||||||
|
|
||||||
|
3. You may copy and distribute the Program (or a work based on it,
|
||||||
|
under Section 2) in object code or executable form under the terms of
|
||||||
|
Sections 1 and 2 above provided that you also do one of the following:
|
||||||
|
|
||||||
|
a) Accompany it with the complete corresponding machine-readable
|
||||||
|
source code, which must be distributed under the terms of Sections
|
||||||
|
1 and 2 above on a medium customarily used for software interchange; or,
|
||||||
|
|
||||||
|
b) Accompany it with a written offer, valid for at least three
|
||||||
|
years, to give any third party, for a charge no more than your
|
||||||
|
cost of physically performing source distribution, a complete
|
||||||
|
machine-readable copy of the corresponding source code, to be
|
||||||
|
distributed under the terms of Sections 1 and 2 above on a medium
|
||||||
|
customarily used for software interchange; or,
|
||||||
|
|
||||||
|
c) Accompany it with the information you received as to the offer
|
||||||
|
to distribute corresponding source code. (This alternative is
|
||||||
|
allowed only for noncommercial distribution and only if you
|
||||||
|
received the program in object code or executable form with such
|
||||||
|
an offer, in accord with Subsection b above.)
|
||||||
|
|
||||||
|
The source code for a work means the preferred form of the work for
|
||||||
|
making modifications to it. For an executable work, complete source
|
||||||
|
code means all the source code for all modules it contains, plus any
|
||||||
|
associated interface definition files, plus the scripts used to
|
||||||
|
control compilation and installation of the executable. However, as a
|
||||||
|
special exception, the source code distributed need not include
|
||||||
|
anything that is normally distributed (in either source or binary
|
||||||
|
form) with the major components (compiler, kernel, and so on) of the
|
||||||
|
operating system on which the executable runs, unless that component
|
||||||
|
itself accompanies the executable.
|
||||||
|
|
||||||
|
If distribution of executable or object code is made by offering
|
||||||
|
access to copy from a designated place, then offering equivalent
|
||||||
|
access to copy the source code from the same place counts as
|
||||||
|
distribution of the source code, even though third parties are not
|
||||||
|
compelled to copy the source along with the object code.
|
||||||
|
|
||||||
|
4. You may not copy, modify, sublicense, or distribute the Program
|
||||||
|
except as expressly provided under this License. Any attempt
|
||||||
|
otherwise to copy, modify, sublicense or distribute the Program is
|
||||||
|
void, and will automatically terminate your rights under this License.
|
||||||
|
However, parties who have received copies, or rights, from you under
|
||||||
|
this License will not have their licenses terminated so long as such
|
||||||
|
parties remain in full compliance.
|
||||||
|
|
||||||
|
5. You are not required to accept this License, since you have not
|
||||||
|
signed it. However, nothing else grants you permission to modify or
|
||||||
|
distribute the Program or its derivative works. These actions are
|
||||||
|
prohibited by law if you do not accept this License. Therefore, by
|
||||||
|
modifying or distributing the Program (or any work based on the
|
||||||
|
Program), you indicate your acceptance of this License to do so, and
|
||||||
|
all its terms and conditions for copying, distributing or modifying
|
||||||
|
the Program or works based on it.
|
||||||
|
|
||||||
|
6. Each time you redistribute the Program (or any work based on the
|
||||||
|
Program), the recipient automatically receives a license from the
|
||||||
|
original licensor to copy, distribute or modify the Program subject to
|
||||||
|
these terms and conditions. You may not impose any further
|
||||||
|
restrictions on the recipients' exercise of the rights granted herein.
|
||||||
|
You are not responsible for enforcing compliance by third parties to
|
||||||
|
this License.
|
||||||
|
|
||||||
|
7. If, as a consequence of a court judgment or allegation of patent
|
||||||
|
infringement or for any other reason (not limited to patent issues),
|
||||||
|
conditions are imposed on you (whether by court order, agreement or
|
||||||
|
otherwise) that contradict the conditions of this License, they do not
|
||||||
|
excuse you from the conditions of this License. If you cannot
|
||||||
|
distribute so as to satisfy simultaneously your obligations under this
|
||||||
|
License and any other pertinent obligations, then as a consequence you
|
||||||
|
may not distribute the Program at all. For example, if a patent
|
||||||
|
license would not permit royalty-free redistribution of the Program by
|
||||||
|
all those who receive copies directly or indirectly through you, then
|
||||||
|
the only way you could satisfy both it and this License would be to
|
||||||
|
refrain entirely from distribution of the Program.
|
||||||
|
|
||||||
|
If any portion of this section is held invalid or unenforceable under
|
||||||
|
any particular circumstance, the balance of the section is intended to
|
||||||
|
apply and the section as a whole is intended to apply in other
|
||||||
|
circumstances.
|
||||||
|
|
||||||
|
It is not the purpose of this section to induce you to infringe any
|
||||||
|
patents or other property right claims or to contest validity of any
|
||||||
|
such claims; this section has the sole purpose of protecting the
|
||||||
|
integrity of the free software distribution system, which is
|
||||||
|
implemented by public license practices. Many people have made
|
||||||
|
generous contributions to the wide range of software distributed
|
||||||
|
through that system in reliance on consistent application of that
|
||||||
|
system; it is up to the author/donor to decide if he or she is willing
|
||||||
|
to distribute software through any other system and a licensee cannot
|
||||||
|
impose that choice.
|
||||||
|
|
||||||
|
This section is intended to make thoroughly clear what is believed to
|
||||||
|
be a consequence of the rest of this License.
|
||||||
|
|
||||||
|
8. If the distribution and/or use of the Program is restricted in
|
||||||
|
certain countries either by patents or by copyrighted interfaces, the
|
||||||
|
original copyright holder who places the Program under this License
|
||||||
|
may add an explicit geographical distribution limitation excluding
|
||||||
|
those countries, so that distribution is permitted only in or among
|
||||||
|
countries not thus excluded. In such case, this License incorporates
|
||||||
|
the limitation as if written in the body of this License.
|
||||||
|
|
||||||
|
9. The Free Software Foundation may publish revised and/or new versions
|
||||||
|
of the General Public License from time to time. Such new versions will
|
||||||
|
be similar in spirit to the present version, but may differ in detail to
|
||||||
|
address new problems or concerns.
|
||||||
|
|
||||||
|
Each version is given a distinguishing version number. If the Program
|
||||||
|
specifies a version number of this License which applies to it and "any
|
||||||
|
later version", you have the option of following the terms and conditions
|
||||||
|
either of that version or of any later version published by the Free
|
||||||
|
Software Foundation. If the Program does not specify a version number of
|
||||||
|
this License, you may choose any version ever published by the Free Software
|
||||||
|
Foundation.
|
||||||
|
|
||||||
|
10. If you wish to incorporate parts of the Program into other free
|
||||||
|
programs whose distribution conditions are different, write to the author
|
||||||
|
to ask for permission. For software which is copyrighted by the Free
|
||||||
|
Software Foundation, write to the Free Software Foundation; we sometimes
|
||||||
|
make exceptions for this. Our decision will be guided by the two goals
|
||||||
|
of preserving the free status of all derivatives of our free software and
|
||||||
|
of promoting the sharing and reuse of software generally.
|
||||||
|
|
||||||
|
NO WARRANTY
|
||||||
|
|
||||||
|
11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
|
||||||
|
FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
|
||||||
|
OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
|
||||||
|
PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
|
||||||
|
OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
||||||
|
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
|
||||||
|
TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
|
||||||
|
PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
|
||||||
|
REPAIR OR CORRECTION.
|
||||||
|
|
||||||
|
12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
|
||||||
|
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
|
||||||
|
REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
|
||||||
|
INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
|
||||||
|
OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
|
||||||
|
TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
|
||||||
|
YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
|
||||||
|
PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
|
||||||
|
POSSIBILITY OF SUCH DAMAGES.
|
||||||
|
|
||||||
|
END OF TERMS AND CONDITIONS
|
||||||
|
|
||||||
|
How to Apply These Terms to Your New Programs
|
||||||
|
|
||||||
|
If you develop a new program, and you want it to be of the greatest
|
||||||
|
possible use to the public, the best way to achieve this is to make it
|
||||||
|
free software which everyone can redistribute and change under these terms.
|
||||||
|
|
||||||
|
To do so, attach the following notices to the program. It is safest
|
||||||
|
to attach them to the start of each source file to most effectively
|
||||||
|
convey the exclusion of warranty; and each file should have at least
|
||||||
|
the "copyright" line and a pointer to where the full notice is found.
|
||||||
|
|
||||||
|
<one line to give the program's name and a brief idea of what it does.>
|
||||||
|
Copyright (C) <year> <name of author>
|
||||||
|
|
||||||
|
This program is free software; you can redistribute it and/or modify
|
||||||
|
it under the terms of the GNU General Public License as published by
|
||||||
|
the Free Software Foundation; either version 2 of the License, or
|
||||||
|
(at your option) any later version.
|
||||||
|
|
||||||
|
This program is distributed in the hope that it will be useful,
|
||||||
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
GNU General Public License for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU General Public License
|
||||||
|
along with this program; if not, write to the Free Software
|
||||||
|
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||||
|
|
||||||
|
|
||||||
|
Also add information on how to contact you by electronic and paper mail.
|
||||||
|
|
||||||
|
If the program is interactive, make it output a short notice like this
|
||||||
|
when it starts in an interactive mode:
|
||||||
|
|
||||||
|
Gnomovision version 69, Copyright (C) year name of author
|
||||||
|
Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
|
||||||
|
This is free software, and you are welcome to redistribute it
|
||||||
|
under certain conditions; type `show c' for details.
|
||||||
|
|
||||||
|
The hypothetical commands `show w' and `show c' should show the appropriate
|
||||||
|
parts of the General Public License. Of course, the commands you use may
|
||||||
|
be called something other than `show w' and `show c'; they could even be
|
||||||
|
mouse-clicks or menu items--whatever suits your program.
|
||||||
|
|
||||||
|
You should also get your employer (if you work as a programmer) or your
|
||||||
|
school, if any, to sign a "copyright disclaimer" for the program, if
|
||||||
|
necessary. Here is a sample; alter the names:
|
||||||
|
|
||||||
|
Yoyodyne, Inc., hereby disclaims all copyright interest in the program
|
||||||
|
`Gnomovision' (which makes passes at compilers) written by James Hacker.
|
||||||
|
|
||||||
|
<signature of Ty Coon>, 1 April 1989
|
||||||
|
Ty Coon, President of Vice
|
||||||
|
|
||||||
|
This General Public License does not permit incorporating your program into
|
||||||
|
proprietary programs. If your program is a subroutine library, you may
|
||||||
|
consider it more useful to permit linking proprietary applications with the
|
||||||
|
library. If this is what you want to do, use the GNU Library General
|
||||||
|
Public License instead of this License.
|
0
pgworker/ChangeLog
Normal file
0
pgworker/ChangeLog
Normal file
182
pgworker/INSTALL
Normal file
182
pgworker/INSTALL
Normal file
@ -0,0 +1,182 @@
|
|||||||
|
Basic Installation
|
||||||
|
==================
|
||||||
|
|
||||||
|
These are generic installation instructions.
|
||||||
|
|
||||||
|
The `configure' shell script attempts to guess correct values for
|
||||||
|
various system-dependent variables used during compilation. It uses
|
||||||
|
those values to create a `Makefile' in each directory of the package.
|
||||||
|
It may also create one or more `.h' files containing system-dependent
|
||||||
|
definitions. Finally, it creates a shell script `config.status' that
|
||||||
|
you can run in the future to recreate the current configuration, a file
|
||||||
|
`config.cache' that saves the results of its tests to speed up
|
||||||
|
reconfiguring, and a file `config.log' containing compiler output
|
||||||
|
(useful mainly for debugging `configure').
|
||||||
|
|
||||||
|
If you need to do unusual things to compile the package, please try
|
||||||
|
to figure out how `configure' could check whether to do them, and mail
|
||||||
|
diffs or instructions to the address given in the `README' so they can
|
||||||
|
be considered for the next release. If at some point `config.cache'
|
||||||
|
contains results you don't want to keep, you may remove or edit it.
|
||||||
|
|
||||||
|
The file `configure.in' is used to create `configure' by a program
|
||||||
|
called `autoconf'. You only need `configure.in' if you want to change
|
||||||
|
it or regenerate `configure' using a newer version of `autoconf'.
|
||||||
|
|
||||||
|
The simplest way to compile this package is:
|
||||||
|
|
||||||
|
1. `cd' to the directory containing the package's source code and type
|
||||||
|
`./configure' to configure the package for your system. If you're
|
||||||
|
using `csh' on an old version of System V, you might need to type
|
||||||
|
`sh ./configure' instead to prevent `csh' from trying to execute
|
||||||
|
`configure' itself.
|
||||||
|
|
||||||
|
Running `configure' takes awhile. While running, it prints some
|
||||||
|
messages telling which features it is checking for.
|
||||||
|
|
||||||
|
2. Type `make' to compile the package.
|
||||||
|
|
||||||
|
3. Optionally, type `make check' to run any self-tests that come with
|
||||||
|
the package.
|
||||||
|
|
||||||
|
4. Type `make install' to install the programs and any data files and
|
||||||
|
documentation.
|
||||||
|
|
||||||
|
5. You can remove the program binaries and object files from the
|
||||||
|
source code directory by typing `make clean'. To also remove the
|
||||||
|
files that `configure' created (so you can compile the package for
|
||||||
|
a different kind of computer), type `make distclean'. There is
|
||||||
|
also a `make maintainer-clean' target, but that is intended mainly
|
||||||
|
for the package's developers. If you use it, you may have to get
|
||||||
|
all sorts of other programs in order to regenerate files that came
|
||||||
|
with the distribution.
|
||||||
|
|
||||||
|
Compilers and Options
|
||||||
|
=====================
|
||||||
|
|
||||||
|
Some systems require unusual options for compilation or linking that
|
||||||
|
the `configure' script does not know about. You can give `configure'
|
||||||
|
initial values for variables by setting them in the environment. Using
|
||||||
|
a Bourne-compatible shell, you can do that on the command line like
|
||||||
|
this:
|
||||||
|
CC=c89 CFLAGS=-O2 LIBS=-lposix ./configure
|
||||||
|
|
||||||
|
Or on systems that have the `env' program, you can do it like this:
|
||||||
|
env CPPFLAGS=-I/usr/local/include LDFLAGS=-s ./configure
|
||||||
|
|
||||||
|
Compiling For Multiple Architectures
|
||||||
|
====================================
|
||||||
|
|
||||||
|
You can compile the package for more than one kind of computer at the
|
||||||
|
same time, by placing the object files for each architecture in their
|
||||||
|
own directory. To do this, you must use a version of `make' that
|
||||||
|
supports the `VPATH' variable, such as GNU `make'. `cd' to the
|
||||||
|
directory where you want the object files and executables to go and run
|
||||||
|
the `configure' script. `configure' automatically checks for the
|
||||||
|
source code in the directory that `configure' is in and in `..'.
|
||||||
|
|
||||||
|
If you have to use a `make' that does not supports the `VPATH'
|
||||||
|
variable, you have to compile the package for one architecture at a time
|
||||||
|
in the source code directory. After you have installed the package for
|
||||||
|
one architecture, use `make distclean' before reconfiguring for another
|
||||||
|
architecture.
|
||||||
|
|
||||||
|
Installation Names
|
||||||
|
==================
|
||||||
|
|
||||||
|
By default, `make install' will install the package's files in
|
||||||
|
`/usr/local/bin', `/usr/local/man', etc. You can specify an
|
||||||
|
installation prefix other than `/usr/local' by giving `configure' the
|
||||||
|
option `--prefix=PATH'.
|
||||||
|
|
||||||
|
You can specify separate installation prefixes for
|
||||||
|
architecture-specific files and architecture-independent files. If you
|
||||||
|
give `configure' the option `--exec-prefix=PATH', the package will use
|
||||||
|
PATH as the prefix for installing programs and libraries.
|
||||||
|
Documentation and other data files will still use the regular prefix.
|
||||||
|
|
||||||
|
In addition, if you use an unusual directory layout you can give
|
||||||
|
options like `--bindir=PATH' to specify different values for particular
|
||||||
|
kinds of files. Run `configure --help' for a list of the directories
|
||||||
|
you can set and what kinds of files go in them.
|
||||||
|
|
||||||
|
If the package supports it, you can cause programs to be installed
|
||||||
|
with an extra prefix or suffix on their names by giving `configure' the
|
||||||
|
option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'.
|
||||||
|
|
||||||
|
Optional Features
|
||||||
|
=================
|
||||||
|
|
||||||
|
Some packages pay attention to `--enable-FEATURE' options to
|
||||||
|
`configure', where FEATURE indicates an optional part of the package.
|
||||||
|
They may also pay attention to `--with-PACKAGE' options, where PACKAGE
|
||||||
|
is something like `gnu-as' or `x' (for the X Window System). The
|
||||||
|
`README' should mention any `--enable-' and `--with-' options that the
|
||||||
|
package recognizes.
|
||||||
|
|
||||||
|
For packages that use the X Window System, `configure' can usually
|
||||||
|
find the X include and library files automatically, but if it doesn't,
|
||||||
|
you can use the `configure' options `--x-includes=DIR' and
|
||||||
|
`--x-libraries=DIR' to specify their locations.
|
||||||
|
|
||||||
|
Specifying the System Type
|
||||||
|
==========================
|
||||||
|
|
||||||
|
There may be some features `configure' can not figure out
|
||||||
|
automatically, but needs to determine by the type of host the package
|
||||||
|
will run on. Usually `configure' can figure that out, but if it prints
|
||||||
|
a message saying it can not guess the host type, give it the
|
||||||
|
`--host=TYPE' option. TYPE can either be a short name for the system
|
||||||
|
type, such as `sun4', or a canonical name with three fields:
|
||||||
|
CPU-COMPANY-SYSTEM
|
||||||
|
|
||||||
|
See the file `config.sub' for the possible values of each field. If
|
||||||
|
`config.sub' isn't included in this package, then this package doesn't
|
||||||
|
need to know the host type.
|
||||||
|
|
||||||
|
If you are building compiler tools for cross-compiling, you can also
|
||||||
|
use the `--target=TYPE' option to select the type of system they will
|
||||||
|
produce code for and the `--build=TYPE' option to select the type of
|
||||||
|
system on which you are compiling the package.
|
||||||
|
|
||||||
|
Sharing Defaults
|
||||||
|
================
|
||||||
|
|
||||||
|
If you want to set default values for `configure' scripts to share,
|
||||||
|
you can create a site shell script called `config.site' that gives
|
||||||
|
default values for variables like `CC', `cache_file', and `prefix'.
|
||||||
|
`configure' looks for `PREFIX/share/config.site' if it exists, then
|
||||||
|
`PREFIX/etc/config.site' if it exists. Or, you can set the
|
||||||
|
`CONFIG_SITE' environment variable to the location of the site script.
|
||||||
|
A warning: not all `configure' scripts look for a site script.
|
||||||
|
|
||||||
|
Operation Controls
|
||||||
|
==================
|
||||||
|
|
||||||
|
`configure' recognizes the following options to control how it
|
||||||
|
operates.
|
||||||
|
|
||||||
|
`--cache-file=FILE'
|
||||||
|
Use and save the results of the tests in FILE instead of
|
||||||
|
`./config.cache'. Set FILE to `/dev/null' to disable caching, for
|
||||||
|
debugging `configure'.
|
||||||
|
|
||||||
|
`--help'
|
||||||
|
Print a summary of the options to `configure', and exit.
|
||||||
|
|
||||||
|
`--quiet'
|
||||||
|
`--silent'
|
||||||
|
`-q'
|
||||||
|
Do not print messages saying which checks are being made. To
|
||||||
|
suppress all normal output, redirect it to `/dev/null' (any error
|
||||||
|
messages will still be shown).
|
||||||
|
|
||||||
|
`--srcdir=DIR'
|
||||||
|
Look for the package's source code in directory DIR. Usually
|
||||||
|
`configure' can determine that directory automatically.
|
||||||
|
|
||||||
|
`--version'
|
||||||
|
Print the version of Autoconf used to generate the `configure'
|
||||||
|
script, and exit.
|
||||||
|
|
||||||
|
`configure' also accepts some other, not widely useful, options.
|
3
pgworker/Makefile.am
Normal file
3
pgworker/Makefile.am
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
SUBDIRS = pgworker
|
||||||
|
|
||||||
|
|
378
pgworker/Makefile.in
Normal file
378
pgworker/Makefile.in
Normal file
@ -0,0 +1,378 @@
|
|||||||
|
# Makefile.in generated automatically by automake 1.4-p6 from Makefile.am
|
||||||
|
|
||||||
|
# Copyright (C) 1994, 1995-8, 1999, 2001 Free Software Foundation, Inc.
|
||||||
|
# This Makefile.in is free software; the Free Software Foundation
|
||||||
|
# gives unlimited permission to copy and/or distribute it,
|
||||||
|
# with or without modifications, as long as this notice is preserved.
|
||||||
|
|
||||||
|
# This program is distributed in the hope that it will be useful,
|
||||||
|
# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
|
||||||
|
# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
|
||||||
|
# PARTICULAR PURPOSE.
|
||||||
|
|
||||||
|
|
||||||
|
SHELL = @SHELL@
|
||||||
|
|
||||||
|
srcdir = @srcdir@
|
||||||
|
top_srcdir = @top_srcdir@
|
||||||
|
VPATH = @srcdir@
|
||||||
|
prefix = @prefix@
|
||||||
|
exec_prefix = @exec_prefix@
|
||||||
|
|
||||||
|
bindir = @bindir@
|
||||||
|
sbindir = @sbindir@
|
||||||
|
libexecdir = @libexecdir@
|
||||||
|
datadir = @datadir@
|
||||||
|
sysconfdir = @sysconfdir@
|
||||||
|
sharedstatedir = @sharedstatedir@
|
||||||
|
localstatedir = @localstatedir@
|
||||||
|
libdir = @libdir@
|
||||||
|
infodir = @infodir@
|
||||||
|
mandir = @mandir@
|
||||||
|
includedir = @includedir@
|
||||||
|
oldincludedir = /usr/include
|
||||||
|
|
||||||
|
DESTDIR =
|
||||||
|
|
||||||
|
pkgdatadir = $(datadir)/@PACKAGE@
|
||||||
|
pkglibdir = $(libdir)/@PACKAGE@
|
||||||
|
pkgincludedir = $(includedir)/@PACKAGE@
|
||||||
|
|
||||||
|
top_builddir = .
|
||||||
|
|
||||||
|
ACLOCAL = @ACLOCAL@
|
||||||
|
AUTOCONF = @AUTOCONF@
|
||||||
|
AUTOMAKE = @AUTOMAKE@
|
||||||
|
AUTOHEADER = @AUTOHEADER@
|
||||||
|
|
||||||
|
INSTALL = @INSTALL@
|
||||||
|
INSTALL_PROGRAM = @INSTALL_PROGRAM@ $(AM_INSTALL_PROGRAM_FLAGS)
|
||||||
|
INSTALL_DATA = @INSTALL_DATA@
|
||||||
|
INSTALL_SCRIPT = @INSTALL_SCRIPT@
|
||||||
|
transform = @program_transform_name@
|
||||||
|
|
||||||
|
NORMAL_INSTALL = :
|
||||||
|
PRE_INSTALL = :
|
||||||
|
POST_INSTALL = :
|
||||||
|
NORMAL_UNINSTALL = :
|
||||||
|
PRE_UNINSTALL = :
|
||||||
|
POST_UNINSTALL = :
|
||||||
|
host_alias = @host_alias@
|
||||||
|
host_triplet = @host@
|
||||||
|
AR = @AR@
|
||||||
|
AS = @AS@
|
||||||
|
CC = @CC@
|
||||||
|
CXX = @CXX@
|
||||||
|
CXXCPP = @CXXCPP@
|
||||||
|
DLLTOOL = @DLLTOOL@
|
||||||
|
ECHO = @ECHO@
|
||||||
|
EGREP = @EGREP@
|
||||||
|
EXEEXT = @EXEEXT@
|
||||||
|
F77 = @F77@
|
||||||
|
GCJ = @GCJ@
|
||||||
|
GCJFLAGS = @GCJFLAGS@
|
||||||
|
HAVE_LIB = @HAVE_LIB@
|
||||||
|
LIB = @LIB@
|
||||||
|
LIBTOOL = @LIBTOOL@
|
||||||
|
LN_S = @LN_S@
|
||||||
|
LTLIB = @LTLIB@
|
||||||
|
MAINT = @MAINT@
|
||||||
|
MAKEINFO = @MAKEINFO@
|
||||||
|
OBJDUMP = @OBJDUMP@
|
||||||
|
OBJEXT = @OBJEXT@
|
||||||
|
PACKAGE = @PACKAGE@
|
||||||
|
RANLIB = @RANLIB@
|
||||||
|
RC = @RC@
|
||||||
|
STRIP = @STRIP@
|
||||||
|
VERSION = @VERSION@
|
||||||
|
|
||||||
|
SUBDIRS = pgworker
|
||||||
|
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
|
||||||
|
mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
|
||||||
|
CONFIG_HEADER = config.h
|
||||||
|
CONFIG_CLEAN_FILES =
|
||||||
|
DIST_COMMON = README ./stamp-h.in AUTHORS COPYING ChangeLog INSTALL \
|
||||||
|
Makefile.am Makefile.in NEWS aclocal.m4 config.guess config.h.in \
|
||||||
|
config.sub configure configure.ac install-sh ltmain.sh missing \
|
||||||
|
mkinstalldirs
|
||||||
|
|
||||||
|
|
||||||
|
DISTFILES = $(DIST_COMMON) $(SOURCES) $(HEADERS) $(TEXINFOS) $(EXTRA_DIST)
|
||||||
|
|
||||||
|
TAR = tar
|
||||||
|
GZIP_ENV = --best
|
||||||
|
all: all-redirect
|
||||||
|
.SUFFIXES:
|
||||||
|
$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ Makefile.am $(top_srcdir)/configure.ac $(ACLOCAL_M4)
|
||||||
|
cd $(top_srcdir) && $(AUTOMAKE) --gnu Makefile
|
||||||
|
|
||||||
|
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status $(BUILT_SOURCES)
|
||||||
|
cd $(top_builddir) \
|
||||||
|
&& CONFIG_FILES=$@ CONFIG_HEADERS= $(SHELL) ./config.status
|
||||||
|
|
||||||
|
$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ configure.ac
|
||||||
|
cd $(srcdir) && $(ACLOCAL)
|
||||||
|
|
||||||
|
config.status: $(srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
|
||||||
|
$(SHELL) ./config.status --recheck
|
||||||
|
$(srcdir)/configure: @MAINTAINER_MODE_TRUE@$(srcdir)/configure.ac $(ACLOCAL_M4) $(CONFIGURE_DEPENDENCIES)
|
||||||
|
cd $(srcdir) && $(AUTOCONF)
|
||||||
|
|
||||||
|
config.h: stamp-h
|
||||||
|
@if test ! -f $@; then \
|
||||||
|
rm -f stamp-h; \
|
||||||
|
$(MAKE) stamp-h; \
|
||||||
|
else :; fi
|
||||||
|
stamp-h: $(srcdir)/config.h.in $(top_builddir)/config.status
|
||||||
|
cd $(top_builddir) \
|
||||||
|
&& CONFIG_FILES= CONFIG_HEADERS=config.h \
|
||||||
|
$(SHELL) ./config.status
|
||||||
|
@echo timestamp > stamp-h 2> /dev/null
|
||||||
|
$(srcdir)/config.h.in: @MAINTAINER_MODE_TRUE@$(srcdir)/stamp-h.in
|
||||||
|
@if test ! -f $@; then \
|
||||||
|
rm -f $(srcdir)/stamp-h.in; \
|
||||||
|
$(MAKE) $(srcdir)/stamp-h.in; \
|
||||||
|
else :; fi
|
||||||
|
$(srcdir)/stamp-h.in: $(top_srcdir)/configure.ac $(ACLOCAL_M4)
|
||||||
|
cd $(top_srcdir) && $(AUTOHEADER)
|
||||||
|
@echo timestamp > $(srcdir)/stamp-h.in 2> /dev/null
|
||||||
|
|
||||||
|
mostlyclean-hdr:
|
||||||
|
|
||||||
|
clean-hdr:
|
||||||
|
|
||||||
|
distclean-hdr:
|
||||||
|
-rm -f config.h
|
||||||
|
|
||||||
|
maintainer-clean-hdr:
|
||||||
|
|
||||||
|
# This directory's subdirectories are mostly independent; you can cd
|
||||||
|
# into them and run `make' without going through this Makefile.
|
||||||
|
# To change the values of `make' variables: instead of editing Makefiles,
|
||||||
|
# (1) if the variable is set in `config.status', edit `config.status'
|
||||||
|
# (which will cause the Makefiles to be regenerated when you run `make');
|
||||||
|
# (2) otherwise, pass the desired values on the `make' command line.
|
||||||
|
|
||||||
|
@SET_MAKE@
|
||||||
|
|
||||||
|
all-recursive install-data-recursive install-exec-recursive \
|
||||||
|
installdirs-recursive install-recursive uninstall-recursive \
|
||||||
|
check-recursive installcheck-recursive info-recursive dvi-recursive:
|
||||||
|
@set fnord $(MAKEFLAGS); amf=$$2; \
|
||||||
|
dot_seen=no; \
|
||||||
|
target=`echo $@ | sed s/-recursive//`; \
|
||||||
|
list='$(SUBDIRS)'; for subdir in $$list; do \
|
||||||
|
echo "Making $$target in $$subdir"; \
|
||||||
|
if test "$$subdir" = "."; then \
|
||||||
|
dot_seen=yes; \
|
||||||
|
local_target="$$target-am"; \
|
||||||
|
else \
|
||||||
|
local_target="$$target"; \
|
||||||
|
fi; \
|
||||||
|
(cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
|
||||||
|
|| case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \
|
||||||
|
done; \
|
||||||
|
if test "$$dot_seen" = "no"; then \
|
||||||
|
$(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
|
||||||
|
fi; test -z "$$fail"
|
||||||
|
|
||||||
|
mostlyclean-recursive clean-recursive distclean-recursive \
|
||||||
|
maintainer-clean-recursive:
|
||||||
|
@set fnord $(MAKEFLAGS); amf=$$2; \
|
||||||
|
dot_seen=no; \
|
||||||
|
rev=''; list='$(SUBDIRS)'; for subdir in $$list; do \
|
||||||
|
rev="$$subdir $$rev"; \
|
||||||
|
test "$$subdir" != "." || dot_seen=yes; \
|
||||||
|
done; \
|
||||||
|
test "$$dot_seen" = "no" && rev=". $$rev"; \
|
||||||
|
target=`echo $@ | sed s/-recursive//`; \
|
||||||
|
for subdir in $$rev; do \
|
||||||
|
echo "Making $$target in $$subdir"; \
|
||||||
|
if test "$$subdir" = "."; then \
|
||||||
|
local_target="$$target-am"; \
|
||||||
|
else \
|
||||||
|
local_target="$$target"; \
|
||||||
|
fi; \
|
||||||
|
(cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
|
||||||
|
|| case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \
|
||||||
|
done && test -z "$$fail"
|
||||||
|
tags-recursive:
|
||||||
|
list='$(SUBDIRS)'; for subdir in $$list; do \
|
||||||
|
test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
|
||||||
|
done
|
||||||
|
|
||||||
|
tags: TAGS
|
||||||
|
|
||||||
|
ID: $(HEADERS) $(SOURCES) $(LISP)
|
||||||
|
list='$(SOURCES) $(HEADERS)'; \
|
||||||
|
unique=`for i in $$list; do echo $$i; done | \
|
||||||
|
awk ' { files[$$0] = 1; } \
|
||||||
|
END { for (i in files) print i; }'`; \
|
||||||
|
here=`pwd` && cd $(srcdir) \
|
||||||
|
&& mkid -f$$here/ID $$unique $(LISP)
|
||||||
|
|
||||||
|
TAGS: tags-recursive $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) $(LISP)
|
||||||
|
tags=; \
|
||||||
|
here=`pwd`; \
|
||||||
|
list='$(SUBDIRS)'; for subdir in $$list; do \
|
||||||
|
if test "$$subdir" = .; then :; else \
|
||||||
|
test -f $$subdir/TAGS && tags="$$tags -i $$here/$$subdir/TAGS"; \
|
||||||
|
fi; \
|
||||||
|
done; \
|
||||||
|
list='$(SOURCES) $(HEADERS)'; \
|
||||||
|
unique=`for i in $$list; do echo $$i; done | \
|
||||||
|
awk ' { files[$$0] = 1; } \
|
||||||
|
END { for (i in files) print i; }'`; \
|
||||||
|
test -z "$(ETAGS_ARGS)config.h.in$$unique$(LISP)$$tags" \
|
||||||
|
|| (cd $(srcdir) && etags -o $$here/TAGS $(ETAGS_ARGS) $$tags config.h.in $$unique $(LISP))
|
||||||
|
|
||||||
|
mostlyclean-tags:
|
||||||
|
|
||||||
|
clean-tags:
|
||||||
|
|
||||||
|
distclean-tags:
|
||||||
|
-rm -f TAGS ID
|
||||||
|
|
||||||
|
maintainer-clean-tags:
|
||||||
|
|
||||||
|
distdir = $(PACKAGE)-$(VERSION)
|
||||||
|
top_distdir = $(distdir)
|
||||||
|
|
||||||
|
# This target untars the dist file and tries a VPATH configuration. Then
|
||||||
|
# it guarantees that the distribution is self-contained by making another
|
||||||
|
# tarfile.
|
||||||
|
distcheck: dist
|
||||||
|
-rm -rf $(distdir)
|
||||||
|
GZIP=$(GZIP_ENV) $(TAR) zxf $(distdir).tar.gz
|
||||||
|
mkdir $(distdir)/=build
|
||||||
|
mkdir $(distdir)/=inst
|
||||||
|
dc_install_base=`cd $(distdir)/=inst && pwd`; \
|
||||||
|
cd $(distdir)/=build \
|
||||||
|
&& ../configure --srcdir=.. --prefix=$$dc_install_base \
|
||||||
|
&& $(MAKE) $(AM_MAKEFLAGS) \
|
||||||
|
&& $(MAKE) $(AM_MAKEFLAGS) dvi \
|
||||||
|
&& $(MAKE) $(AM_MAKEFLAGS) check \
|
||||||
|
&& $(MAKE) $(AM_MAKEFLAGS) install \
|
||||||
|
&& $(MAKE) $(AM_MAKEFLAGS) installcheck \
|
||||||
|
&& $(MAKE) $(AM_MAKEFLAGS) dist
|
||||||
|
-rm -rf $(distdir)
|
||||||
|
@banner="$(distdir).tar.gz is ready for distribution"; \
|
||||||
|
dashes=`echo "$$banner" | sed s/./=/g`; \
|
||||||
|
echo "$$dashes"; \
|
||||||
|
echo "$$banner"; \
|
||||||
|
echo "$$dashes"
|
||||||
|
dist: distdir
|
||||||
|
-chmod -R a+r $(distdir)
|
||||||
|
GZIP=$(GZIP_ENV) $(TAR) chozf $(distdir).tar.gz $(distdir)
|
||||||
|
-rm -rf $(distdir)
|
||||||
|
dist-all: distdir
|
||||||
|
-chmod -R a+r $(distdir)
|
||||||
|
GZIP=$(GZIP_ENV) $(TAR) chozf $(distdir).tar.gz $(distdir)
|
||||||
|
-rm -rf $(distdir)
|
||||||
|
distdir: $(DISTFILES)
|
||||||
|
-rm -rf $(distdir)
|
||||||
|
mkdir $(distdir)
|
||||||
|
-chmod 777 $(distdir)
|
||||||
|
here=`cd $(top_builddir) && pwd`; \
|
||||||
|
top_distdir=`cd $(distdir) && pwd`; \
|
||||||
|
distdir=`cd $(distdir) && pwd`; \
|
||||||
|
cd $(top_srcdir) \
|
||||||
|
&& $(AUTOMAKE) --include-deps --build-dir=$$here --srcdir-name=$(top_srcdir) --output-dir=$$top_distdir --gnu Makefile
|
||||||
|
@for file in $(DISTFILES); do \
|
||||||
|
d=$(srcdir); \
|
||||||
|
if test -d $$d/$$file; then \
|
||||||
|
cp -pr $$d/$$file $(distdir)/$$file; \
|
||||||
|
else \
|
||||||
|
test -f $(distdir)/$$file \
|
||||||
|
|| ln $$d/$$file $(distdir)/$$file 2> /dev/null \
|
||||||
|
|| cp -p $$d/$$file $(distdir)/$$file || :; \
|
||||||
|
fi; \
|
||||||
|
done
|
||||||
|
for subdir in $(SUBDIRS); do \
|
||||||
|
if test "$$subdir" = .; then :; else \
|
||||||
|
test -d $(distdir)/$$subdir \
|
||||||
|
|| mkdir $(distdir)/$$subdir \
|
||||||
|
|| exit 1; \
|
||||||
|
chmod 777 $(distdir)/$$subdir; \
|
||||||
|
(cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir=../$(distdir) distdir=../$(distdir)/$$subdir distdir) \
|
||||||
|
|| exit 1; \
|
||||||
|
fi; \
|
||||||
|
done
|
||||||
|
info-am:
|
||||||
|
info: info-recursive
|
||||||
|
dvi-am:
|
||||||
|
dvi: dvi-recursive
|
||||||
|
check-am: all-am
|
||||||
|
check: check-recursive
|
||||||
|
installcheck-am:
|
||||||
|
installcheck: installcheck-recursive
|
||||||
|
all-recursive-am: config.h
|
||||||
|
$(MAKE) $(AM_MAKEFLAGS) all-recursive
|
||||||
|
|
||||||
|
install-exec-am:
|
||||||
|
install-exec: install-exec-recursive
|
||||||
|
|
||||||
|
install-data-am:
|
||||||
|
install-data: install-data-recursive
|
||||||
|
|
||||||
|
install-am: all-am
|
||||||
|
@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
|
||||||
|
install: install-recursive
|
||||||
|
uninstall-am:
|
||||||
|
uninstall: uninstall-recursive
|
||||||
|
all-am: Makefile config.h
|
||||||
|
all-redirect: all-recursive-am
|
||||||
|
install-strip:
|
||||||
|
$(MAKE) $(AM_MAKEFLAGS) AM_INSTALL_PROGRAM_FLAGS=-s install
|
||||||
|
installdirs: installdirs-recursive
|
||||||
|
installdirs-am:
|
||||||
|
|
||||||
|
|
||||||
|
mostlyclean-generic:
|
||||||
|
|
||||||
|
clean-generic:
|
||||||
|
|
||||||
|
distclean-generic:
|
||||||
|
-rm -f Makefile $(CONFIG_CLEAN_FILES)
|
||||||
|
-rm -f config.cache config.log stamp-h stamp-h[0-9]*
|
||||||
|
|
||||||
|
maintainer-clean-generic:
|
||||||
|
mostlyclean-am: mostlyclean-hdr mostlyclean-tags mostlyclean-generic
|
||||||
|
|
||||||
|
mostlyclean: mostlyclean-recursive
|
||||||
|
|
||||||
|
clean-am: clean-hdr clean-tags clean-generic mostlyclean-am
|
||||||
|
|
||||||
|
clean: clean-recursive
|
||||||
|
|
||||||
|
distclean-am: distclean-hdr distclean-tags distclean-generic clean-am
|
||||||
|
-rm -f libtool
|
||||||
|
|
||||||
|
distclean: distclean-recursive
|
||||||
|
-rm -f config.status
|
||||||
|
|
||||||
|
maintainer-clean-am: maintainer-clean-hdr maintainer-clean-tags \
|
||||||
|
maintainer-clean-generic distclean-am
|
||||||
|
@echo "This command is intended for maintainers to use;"
|
||||||
|
@echo "it deletes files that may require special tools to rebuild."
|
||||||
|
|
||||||
|
maintainer-clean: maintainer-clean-recursive
|
||||||
|
-rm -f config.status
|
||||||
|
|
||||||
|
.PHONY: mostlyclean-hdr distclean-hdr clean-hdr maintainer-clean-hdr \
|
||||||
|
install-data-recursive uninstall-data-recursive install-exec-recursive \
|
||||||
|
uninstall-exec-recursive installdirs-recursive uninstalldirs-recursive \
|
||||||
|
all-recursive check-recursive installcheck-recursive info-recursive \
|
||||||
|
dvi-recursive mostlyclean-recursive distclean-recursive clean-recursive \
|
||||||
|
maintainer-clean-recursive tags tags-recursive mostlyclean-tags \
|
||||||
|
distclean-tags clean-tags maintainer-clean-tags distdir info-am info \
|
||||||
|
dvi-am dvi check check-am installcheck-am installcheck all-recursive-am \
|
||||||
|
install-exec-am install-exec install-data-am install-data install-am \
|
||||||
|
install uninstall-am uninstall all-redirect all-am all installdirs-am \
|
||||||
|
installdirs mostlyclean-generic distclean-generic clean-generic \
|
||||||
|
maintainer-clean-generic clean mostlyclean distclean maintainer-clean
|
||||||
|
|
||||||
|
|
||||||
|
# Tell versions [3.59,3.63) of GNU make to not export all variables.
|
||||||
|
# Otherwise a system limit (for SysV at least) may be exceeded.
|
||||||
|
.NOEXPORT:
|
0
pgworker/NEWS
Normal file
0
pgworker/NEWS
Normal file
13
pgworker/README
Normal file
13
pgworker/README
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
smmapd.ini snippet:
|
||||||
|
|
||||||
|
[pgworker]
|
||||||
|
obj = /home/who/Sources/sf/test/pgworker/lib/libpg_worker.so
|
||||||
|
debug = 1
|
||||||
|
sql_statement = SELECT a.mailuser, a.mailtarget, a.mailalias FROM mailaddress_t
|
||||||
|
a, domain_t d WHERE a.address=$1 and d.name=$2 and a.domain = d.id
|
||||||
|
input_delimiter = |
|
||||||
|
output_format_string = <$1><$2><$3>
|
||||||
|
dbhost = confdb.hottis.de
|
||||||
|
dbname = config
|
||||||
|
dbuser = lurker
|
||||||
|
dbpass = lurker123
|
6927
pgworker/aclocal.m4
vendored
Normal file
6927
pgworker/aclocal.m4
vendored
Normal file
File diff suppressed because it is too large
Load Diff
5483
pgworker/autom4te.cache/output.0
Normal file
5483
pgworker/autom4te.cache/output.0
Normal file
File diff suppressed because it is too large
Load Diff
21748
pgworker/autom4te.cache/output.1
Normal file
21748
pgworker/autom4te.cache/output.1
Normal file
File diff suppressed because it is too large
Load Diff
224
pgworker/autom4te.cache/requests
Normal file
224
pgworker/autom4te.cache/requests
Normal file
@ -0,0 +1,224 @@
|
|||||||
|
# This file was generated by Autom4te Mon Sep 13 19:52:04 PDT 2004.
|
||||||
|
# It contains the lists of macros which have been traced.
|
||||||
|
# It can be safely removed.
|
||||||
|
|
||||||
|
@request = (
|
||||||
|
bless( [
|
||||||
|
'0',
|
||||||
|
1,
|
||||||
|
[
|
||||||
|
'/usr/share/autoconf'
|
||||||
|
],
|
||||||
|
[
|
||||||
|
'/usr/share/autoconf/autoconf/autoconf.m4f',
|
||||||
|
'configure.ac'
|
||||||
|
],
|
||||||
|
{
|
||||||
|
'm4_pattern_forbid' => 1,
|
||||||
|
'AC_CONFIG_LIBOBJ_DIR' => 1,
|
||||||
|
'AC_C_VOLATILE' => 1,
|
||||||
|
'AC_TYPE_OFF_T' => 1,
|
||||||
|
'AC_FUNC_CLOSEDIR_VOID' => 1,
|
||||||
|
'AC_REPLACE_FNMATCH' => 1,
|
||||||
|
'AC_PROG_LIBTOOL' => 1,
|
||||||
|
'AC_FUNC_STAT' => 1,
|
||||||
|
'AC_FUNC_WAIT3' => 1,
|
||||||
|
'AC_HEADER_TIME' => 1,
|
||||||
|
'AC_FUNC_LSTAT' => 1,
|
||||||
|
'AC_STRUCT_TM' => 1,
|
||||||
|
'AM_AUTOMAKE_VERSION' => 1,
|
||||||
|
'AC_FUNC_GETMNTENT' => 1,
|
||||||
|
'AC_TYPE_MODE_T' => 1,
|
||||||
|
'AC_FUNC_STRTOD' => 1,
|
||||||
|
'AC_CHECK_HEADERS' => 1,
|
||||||
|
'AC_FUNC_STRNLEN' => 1,
|
||||||
|
'm4_sinclude' => 1,
|
||||||
|
'AC_PROG_CXX' => 1,
|
||||||
|
'AC_PATH_X' => 1,
|
||||||
|
'AC_FUNC_LSTAT_FOLLOWS_SLASHED_SYMLINK' => 1,
|
||||||
|
'AC_PROG_AWK' => 1,
|
||||||
|
'_m4_warn' => 1,
|
||||||
|
'AC_HEADER_STDC' => 1,
|
||||||
|
'AC_HEADER_MAJOR' => 1,
|
||||||
|
'AC_FUNC_ERROR_AT_LINE' => 1,
|
||||||
|
'AC_PROG_GCC_TRADITIONAL' => 1,
|
||||||
|
'AC_LIBSOURCE' => 1,
|
||||||
|
'AC_FUNC_MBRTOWC' => 1,
|
||||||
|
'AC_STRUCT_ST_BLOCKS' => 1,
|
||||||
|
'AC_TYPE_SIGNAL' => 1,
|
||||||
|
'AC_TYPE_UID_T' => 1,
|
||||||
|
'AC_PROG_MAKE_SET' => 1,
|
||||||
|
'AC_CONFIG_AUX_DIR' => 1,
|
||||||
|
'm4_pattern_allow' => 1,
|
||||||
|
'sinclude' => 1,
|
||||||
|
'AC_DEFINE_TRACE_LITERAL' => 1,
|
||||||
|
'AC_FUNC_STRERROR_R' => 1,
|
||||||
|
'AC_PROG_CC' => 1,
|
||||||
|
'AC_DECL_SYS_SIGLIST' => 1,
|
||||||
|
'AC_FUNC_FORK' => 1,
|
||||||
|
'AC_FUNC_STRCOLL' => 1,
|
||||||
|
'AC_FUNC_VPRINTF' => 1,
|
||||||
|
'AC_PROG_YACC' => 1,
|
||||||
|
'AC_INIT' => 1,
|
||||||
|
'AC_STRUCT_TIMEZONE' => 1,
|
||||||
|
'AC_FUNC_CHOWN' => 1,
|
||||||
|
'AC_SUBST' => 1,
|
||||||
|
'AC_FUNC_ALLOCA' => 1,
|
||||||
|
'AC_CANONICAL_HOST' => 1,
|
||||||
|
'AC_FUNC_GETPGRP' => 1,
|
||||||
|
'AC_PROG_RANLIB' => 1,
|
||||||
|
'AM_INIT_AUTOMAKE' => 1,
|
||||||
|
'AC_FUNC_SETPGRP' => 1,
|
||||||
|
'AC_CONFIG_SUBDIRS' => 1,
|
||||||
|
'AC_FUNC_MMAP' => 1,
|
||||||
|
'AC_FUNC_REALLOC' => 1,
|
||||||
|
'AC_TYPE_SIZE_T' => 1,
|
||||||
|
'AC_CONFIG_LINKS' => 1,
|
||||||
|
'AC_CHECK_TYPES' => 1,
|
||||||
|
'AC_CHECK_MEMBERS' => 1,
|
||||||
|
'AM_MAINTAINER_MODE' => 1,
|
||||||
|
'AC_FUNC_UTIME_NULL' => 1,
|
||||||
|
'AC_FUNC_SELECT_ARGTYPES' => 1,
|
||||||
|
'AC_HEADER_STAT' => 1,
|
||||||
|
'AC_FUNC_STRFTIME' => 1,
|
||||||
|
'AC_PROG_CPP' => 1,
|
||||||
|
'AC_C_INLINE' => 1,
|
||||||
|
'AC_PROG_LEX' => 1,
|
||||||
|
'AC_C_CONST' => 1,
|
||||||
|
'AC_TYPE_PID_T' => 1,
|
||||||
|
'AC_CONFIG_FILES' => 1,
|
||||||
|
'include' => 1,
|
||||||
|
'AC_FUNC_SETVBUF_REVERSED' => 1,
|
||||||
|
'AC_PROG_INSTALL' => 1,
|
||||||
|
'AM_GNU_GETTEXT' => 1,
|
||||||
|
'AC_CHECK_LIB' => 1,
|
||||||
|
'AC_FUNC_OBSTACK' => 1,
|
||||||
|
'AC_FUNC_MALLOC' => 1,
|
||||||
|
'AC_FUNC_GETGROUPS' => 1,
|
||||||
|
'AC_FUNC_GETLOADAVG' => 1,
|
||||||
|
'AH_OUTPUT' => 1,
|
||||||
|
'AC_FUNC_FSEEKO' => 1,
|
||||||
|
'AM_PROG_CC_C_O' => 1,
|
||||||
|
'AC_FUNC_MKTIME' => 1,
|
||||||
|
'AC_CANONICAL_SYSTEM' => 1,
|
||||||
|
'AM_CONDITIONAL' => 1,
|
||||||
|
'AC_CONFIG_HEADERS' => 1,
|
||||||
|
'AC_HEADER_SYS_WAIT' => 1,
|
||||||
|
'AC_PROG_LN_S' => 1,
|
||||||
|
'AC_FUNC_MEMCMP' => 1,
|
||||||
|
'm4_include' => 1,
|
||||||
|
'AC_HEADER_DIRENT' => 1,
|
||||||
|
'AC_CHECK_FUNCS' => 1
|
||||||
|
}
|
||||||
|
], 'Autom4te::Request' ),
|
||||||
|
bless( [
|
||||||
|
'1',
|
||||||
|
1,
|
||||||
|
[
|
||||||
|
'/usr/share/autoconf'
|
||||||
|
],
|
||||||
|
[
|
||||||
|
'/usr/share/autoconf/autoconf/autoconf.m4f',
|
||||||
|
'aclocal.m4',
|
||||||
|
'configure.ac'
|
||||||
|
],
|
||||||
|
{
|
||||||
|
'm4_pattern_forbid' => 1,
|
||||||
|
'AC_CONFIG_LIBOBJ_DIR' => 1,
|
||||||
|
'AC_C_VOLATILE' => 1,
|
||||||
|
'AC_TYPE_OFF_T' => 1,
|
||||||
|
'AC_FUNC_CLOSEDIR_VOID' => 1,
|
||||||
|
'AC_REPLACE_FNMATCH' => 1,
|
||||||
|
'AC_PROG_LIBTOOL' => 1,
|
||||||
|
'AC_FUNC_STAT' => 1,
|
||||||
|
'AC_FUNC_WAIT3' => 1,
|
||||||
|
'AC_HEADER_TIME' => 1,
|
||||||
|
'AC_FUNC_LSTAT' => 1,
|
||||||
|
'AC_STRUCT_TM' => 1,
|
||||||
|
'AM_AUTOMAKE_VERSION' => 1,
|
||||||
|
'AC_FUNC_GETMNTENT' => 1,
|
||||||
|
'AC_TYPE_MODE_T' => 1,
|
||||||
|
'AC_FUNC_STRTOD' => 1,
|
||||||
|
'AC_CHECK_HEADERS' => 1,
|
||||||
|
'AC_FUNC_STRNLEN' => 1,
|
||||||
|
'm4_sinclude' => 1,
|
||||||
|
'AC_PROG_CXX' => 1,
|
||||||
|
'AC_PATH_X' => 1,
|
||||||
|
'AC_FUNC_LSTAT_FOLLOWS_SLASHED_SYMLINK' => 1,
|
||||||
|
'AC_PROG_AWK' => 1,
|
||||||
|
'_m4_warn' => 1,
|
||||||
|
'AC_HEADER_STDC' => 1,
|
||||||
|
'AC_HEADER_MAJOR' => 1,
|
||||||
|
'AC_FUNC_ERROR_AT_LINE' => 1,
|
||||||
|
'AC_PROG_GCC_TRADITIONAL' => 1,
|
||||||
|
'AC_LIBSOURCE' => 1,
|
||||||
|
'AC_FUNC_MBRTOWC' => 1,
|
||||||
|
'AC_STRUCT_ST_BLOCKS' => 1,
|
||||||
|
'AC_TYPE_SIGNAL' => 1,
|
||||||
|
'AC_TYPE_UID_T' => 1,
|
||||||
|
'AC_PROG_MAKE_SET' => 1,
|
||||||
|
'AC_CONFIG_AUX_DIR' => 1,
|
||||||
|
'm4_pattern_allow' => 1,
|
||||||
|
'sinclude' => 1,
|
||||||
|
'AC_DEFINE_TRACE_LITERAL' => 1,
|
||||||
|
'AC_FUNC_STRERROR_R' => 1,
|
||||||
|
'AC_PROG_CC' => 1,
|
||||||
|
'AC_FUNC_FORK' => 1,
|
||||||
|
'AC_DECL_SYS_SIGLIST' => 1,
|
||||||
|
'AC_FUNC_STRCOLL' => 1,
|
||||||
|
'AC_FUNC_VPRINTF' => 1,
|
||||||
|
'AC_PROG_YACC' => 1,
|
||||||
|
'AC_INIT' => 1,
|
||||||
|
'AC_STRUCT_TIMEZONE' => 1,
|
||||||
|
'AC_FUNC_CHOWN' => 1,
|
||||||
|
'AC_SUBST' => 1,
|
||||||
|
'AC_FUNC_ALLOCA' => 1,
|
||||||
|
'AC_CANONICAL_HOST' => 1,
|
||||||
|
'AC_FUNC_GETPGRP' => 1,
|
||||||
|
'AC_PROG_RANLIB' => 1,
|
||||||
|
'AM_INIT_AUTOMAKE' => 1,
|
||||||
|
'AC_FUNC_SETPGRP' => 1,
|
||||||
|
'AC_CONFIG_SUBDIRS' => 1,
|
||||||
|
'AC_FUNC_MMAP' => 1,
|
||||||
|
'AC_FUNC_REALLOC' => 1,
|
||||||
|
'AC_TYPE_SIZE_T' => 1,
|
||||||
|
'AC_CONFIG_LINKS' => 1,
|
||||||
|
'AC_CHECK_TYPES' => 1,
|
||||||
|
'AC_CHECK_MEMBERS' => 1,
|
||||||
|
'AM_MAINTAINER_MODE' => 1,
|
||||||
|
'AC_FUNC_UTIME_NULL' => 1,
|
||||||
|
'AC_FUNC_SELECT_ARGTYPES' => 1,
|
||||||
|
'AC_HEADER_STAT' => 1,
|
||||||
|
'AC_FUNC_STRFTIME' => 1,
|
||||||
|
'AC_PROG_CPP' => 1,
|
||||||
|
'AC_C_INLINE' => 1,
|
||||||
|
'AC_PROG_LEX' => 1,
|
||||||
|
'AC_C_CONST' => 1,
|
||||||
|
'AC_TYPE_PID_T' => 1,
|
||||||
|
'AC_CONFIG_FILES' => 1,
|
||||||
|
'include' => 1,
|
||||||
|
'AC_FUNC_SETVBUF_REVERSED' => 1,
|
||||||
|
'AC_PROG_INSTALL' => 1,
|
||||||
|
'AM_GNU_GETTEXT' => 1,
|
||||||
|
'AC_FUNC_OBSTACK' => 1,
|
||||||
|
'AC_CHECK_LIB' => 1,
|
||||||
|
'AC_FUNC_MALLOC' => 1,
|
||||||
|
'AC_FUNC_GETGROUPS' => 1,
|
||||||
|
'AC_FUNC_GETLOADAVG' => 1,
|
||||||
|
'AH_OUTPUT' => 1,
|
||||||
|
'AC_FUNC_FSEEKO' => 1,
|
||||||
|
'AM_PROG_CC_C_O' => 1,
|
||||||
|
'AC_FUNC_MKTIME' => 1,
|
||||||
|
'AC_CANONICAL_SYSTEM' => 1,
|
||||||
|
'AM_CONDITIONAL' => 1,
|
||||||
|
'AC_CONFIG_HEADERS' => 1,
|
||||||
|
'AC_HEADER_SYS_WAIT' => 1,
|
||||||
|
'AC_PROG_LN_S' => 1,
|
||||||
|
'AC_FUNC_MEMCMP' => 1,
|
||||||
|
'm4_include' => 1,
|
||||||
|
'AC_HEADER_DIRENT' => 1,
|
||||||
|
'AC_CHECK_FUNCS' => 1
|
||||||
|
}
|
||||||
|
], 'Autom4te::Request' )
|
||||||
|
);
|
||||||
|
|
220
pgworker/autom4te.cache/traces.0
Normal file
220
pgworker/autom4te.cache/traces.0
Normal file
@ -0,0 +1,220 @@
|
|||||||
|
m4trace:configure.ac:5: -1- AC_INIT([pgworker], [0.1], [woho@hottis.de])
|
||||||
|
m4trace:configure.ac:5: -1- m4_pattern_forbid([^_?A[CHUM]_])
|
||||||
|
m4trace:configure.ac:5: -1- m4_pattern_forbid([_AC_])
|
||||||
|
m4trace:configure.ac:5: -1- m4_pattern_forbid([^LIBOBJS$], [do not use LIBOBJS directly, use AC_LIBOBJ (see section `AC_LIBOBJ vs LIBOBJS'])
|
||||||
|
m4trace:configure.ac:5: -1- m4_pattern_allow([^AS_FLAGS$])
|
||||||
|
m4trace:configure.ac:5: -1- m4_pattern_forbid([^_?m4_])
|
||||||
|
m4trace:configure.ac:5: -1- m4_pattern_forbid([^dnl$])
|
||||||
|
m4trace:configure.ac:5: -1- m4_pattern_forbid([^_?AS_])
|
||||||
|
m4trace:configure.ac:5: -1- AC_SUBST([SHELL], [${CONFIG_SHELL-/bin/sh}])
|
||||||
|
m4trace:configure.ac:5: -1- AC_SUBST([PATH_SEPARATOR])
|
||||||
|
m4trace:configure.ac:5: -1- AC_SUBST([PACKAGE_NAME], [m4_ifdef([AC_PACKAGE_NAME], ['AC_PACKAGE_NAME'])])
|
||||||
|
m4trace:configure.ac:5: -1- AC_SUBST([PACKAGE_TARNAME], [m4_ifdef([AC_PACKAGE_TARNAME], ['AC_PACKAGE_TARNAME'])])
|
||||||
|
m4trace:configure.ac:5: -1- AC_SUBST([PACKAGE_VERSION], [m4_ifdef([AC_PACKAGE_VERSION], ['AC_PACKAGE_VERSION'])])
|
||||||
|
m4trace:configure.ac:5: -1- AC_SUBST([PACKAGE_STRING], [m4_ifdef([AC_PACKAGE_STRING], ['AC_PACKAGE_STRING'])])
|
||||||
|
m4trace:configure.ac:5: -1- AC_SUBST([PACKAGE_BUGREPORT], [m4_ifdef([AC_PACKAGE_BUGREPORT], ['AC_PACKAGE_BUGREPORT'])])
|
||||||
|
m4trace:configure.ac:5: -1- AC_SUBST([exec_prefix], [NONE])
|
||||||
|
m4trace:configure.ac:5: -1- AC_SUBST([prefix], [NONE])
|
||||||
|
m4trace:configure.ac:5: -1- AC_SUBST([program_transform_name], [s,x,x,])
|
||||||
|
m4trace:configure.ac:5: -1- AC_SUBST([bindir], ['${exec_prefix}/bin'])
|
||||||
|
m4trace:configure.ac:5: -1- AC_SUBST([sbindir], ['${exec_prefix}/sbin'])
|
||||||
|
m4trace:configure.ac:5: -1- AC_SUBST([libexecdir], ['${exec_prefix}/libexec'])
|
||||||
|
m4trace:configure.ac:5: -1- AC_SUBST([datadir], ['${prefix}/share'])
|
||||||
|
m4trace:configure.ac:5: -1- AC_SUBST([sysconfdir], ['${prefix}/etc'])
|
||||||
|
m4trace:configure.ac:5: -1- AC_SUBST([sharedstatedir], ['${prefix}/com'])
|
||||||
|
m4trace:configure.ac:5: -1- AC_SUBST([localstatedir], ['${prefix}/var'])
|
||||||
|
m4trace:configure.ac:5: -1- AC_SUBST([libdir], ['${exec_prefix}/lib'])
|
||||||
|
m4trace:configure.ac:5: -1- AC_SUBST([includedir], ['${prefix}/include'])
|
||||||
|
m4trace:configure.ac:5: -1- AC_SUBST([oldincludedir], ['/usr/include'])
|
||||||
|
m4trace:configure.ac:5: -1- AC_SUBST([infodir], ['${prefix}/info'])
|
||||||
|
m4trace:configure.ac:5: -1- AC_SUBST([mandir], ['${prefix}/man'])
|
||||||
|
m4trace:configure.ac:5: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_NAME])
|
||||||
|
m4trace:configure.ac:5: -1- AH_OUTPUT([PACKAGE_NAME], [/* Define to the full name of this package. */
|
||||||
|
#undef PACKAGE_NAME])
|
||||||
|
m4trace:configure.ac:5: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_TARNAME])
|
||||||
|
m4trace:configure.ac:5: -1- AH_OUTPUT([PACKAGE_TARNAME], [/* Define to the one symbol short name of this package. */
|
||||||
|
#undef PACKAGE_TARNAME])
|
||||||
|
m4trace:configure.ac:5: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_VERSION])
|
||||||
|
m4trace:configure.ac:5: -1- AH_OUTPUT([PACKAGE_VERSION], [/* Define to the version of this package. */
|
||||||
|
#undef PACKAGE_VERSION])
|
||||||
|
m4trace:configure.ac:5: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_STRING])
|
||||||
|
m4trace:configure.ac:5: -1- AH_OUTPUT([PACKAGE_STRING], [/* Define to the full name and version of this package. */
|
||||||
|
#undef PACKAGE_STRING])
|
||||||
|
m4trace:configure.ac:5: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_BUGREPORT])
|
||||||
|
m4trace:configure.ac:5: -1- AH_OUTPUT([PACKAGE_BUGREPORT], [/* Define to the address where bug reports for this package should be sent. */
|
||||||
|
#undef PACKAGE_BUGREPORT])
|
||||||
|
m4trace:configure.ac:5: -1- AC_SUBST([build_alias])
|
||||||
|
m4trace:configure.ac:5: -1- AC_SUBST([host_alias])
|
||||||
|
m4trace:configure.ac:5: -1- AC_SUBST([target_alias])
|
||||||
|
m4trace:configure.ac:5: -1- AC_SUBST([DEFS])
|
||||||
|
m4trace:configure.ac:5: -1- AC_SUBST([ECHO_C])
|
||||||
|
m4trace:configure.ac:5: -1- AC_SUBST([ECHO_N])
|
||||||
|
m4trace:configure.ac:5: -1- AC_SUBST([ECHO_T])
|
||||||
|
m4trace:configure.ac:5: -1- AC_SUBST([LIBS])
|
||||||
|
m4trace:configure.ac:9: -1- AC_CONFIG_HEADERS([config.h])
|
||||||
|
m4trace:configure.ac:11: -1- _m4_warn([obsolete], [The macro `AC_LANG_C' is obsolete.
|
||||||
|
You should run autoupdate.], [autoconf/c.m4:71: AC_LANG_C is expanded from...
|
||||||
|
configure.ac:11: the top level])
|
||||||
|
m4trace:configure.ac:26: -1- _m4_warn([obsolete], [The macro `AC_HELP_STRING' is obsolete.
|
||||||
|
You should run autoupdate.], [autoconf/general.m4:219: AC_HELP_STRING is expanded from...
|
||||||
|
autoconf/general.m4:1331: AC_ARG_WITH is expanded from...
|
||||||
|
configure.ac:26: the top level])
|
||||||
|
m4trace:configure.ac:41: -1- _m4_warn([obsolete], [The macro `AC_HELP_STRING' is obsolete.
|
||||||
|
You should run autoupdate.], [autoconf/general.m4:219: AC_HELP_STRING is expanded from...
|
||||||
|
autoconf/general.m4:1331: AC_ARG_WITH is expanded from...
|
||||||
|
configure.ac:41: the top level])
|
||||||
|
m4trace:configure.ac:56: -1- _m4_warn([obsolete], [The macro `AC_HELP_STRING' is obsolete.
|
||||||
|
You should run autoupdate.], [autoconf/general.m4:219: AC_HELP_STRING is expanded from...
|
||||||
|
autoconf/general.m4:1331: AC_ARG_WITH is expanded from...
|
||||||
|
configure.ac:56: the top level])
|
||||||
|
m4trace:configure.ac:71: -1- _m4_warn([obsolete], [The macro `AC_HELP_STRING' is obsolete.
|
||||||
|
You should run autoupdate.], [autoconf/general.m4:219: AC_HELP_STRING is expanded from...
|
||||||
|
autoconf/general.m4:1331: AC_ARG_WITH is expanded from...
|
||||||
|
configure.ac:71: the top level])
|
||||||
|
m4trace:configure.ac:77: -1- AC_PROG_CC
|
||||||
|
m4trace:configure.ac:77: -1- AC_SUBST([CC])
|
||||||
|
m4trace:configure.ac:77: -1- AC_SUBST([CFLAGS])
|
||||||
|
m4trace:configure.ac:77: -1- AC_SUBST([LDFLAGS])
|
||||||
|
m4trace:configure.ac:77: -1- AC_SUBST([CPPFLAGS])
|
||||||
|
m4trace:configure.ac:77: -1- AC_SUBST([CC])
|
||||||
|
m4trace:configure.ac:77: -1- AC_SUBST([ac_ct_CC])
|
||||||
|
m4trace:configure.ac:77: -1- AC_SUBST([CC])
|
||||||
|
m4trace:configure.ac:77: -1- AC_SUBST([ac_ct_CC])
|
||||||
|
m4trace:configure.ac:77: -1- AC_SUBST([CC])
|
||||||
|
m4trace:configure.ac:77: -1- AC_SUBST([CC])
|
||||||
|
m4trace:configure.ac:77: -1- AC_SUBST([ac_ct_CC])
|
||||||
|
m4trace:configure.ac:77: -1- AC_SUBST([EXEEXT], [$ac_cv_exeext])
|
||||||
|
m4trace:configure.ac:77: -1- AC_SUBST([OBJEXT], [$ac_cv_objext])
|
||||||
|
m4trace:configure.ac:79: -1- AC_PROG_MAKE_SET
|
||||||
|
m4trace:configure.ac:79: -1- AC_SUBST([SET_MAKE])
|
||||||
|
m4trace:configure.ac:82: -1- AC_CHECK_LIB([m], [sin])
|
||||||
|
m4trace:configure.ac:82: -1- AH_OUTPUT([HAVE_LIBM], [/* Define to 1 if you have the `m\' library (-lm). */
|
||||||
|
#undef HAVE_LIBM])
|
||||||
|
m4trace:configure.ac:82: -1- AC_DEFINE_TRACE_LITERAL([HAVE_LIBM])
|
||||||
|
m4trace:configure.ac:83: -1- AC_CHECK_LIB([pq], [PQstatus])
|
||||||
|
m4trace:configure.ac:83: -1- AH_OUTPUT([HAVE_LIBPQ], [/* Define to 1 if you have the `pq\' library (-lpq). */
|
||||||
|
#undef HAVE_LIBPQ])
|
||||||
|
m4trace:configure.ac:83: -1- AC_DEFINE_TRACE_LITERAL([HAVE_LIBPQ])
|
||||||
|
m4trace:configure.ac:84: -1- AC_CHECK_LIB([smmapdfw], [findcfgl])
|
||||||
|
m4trace:configure.ac:84: -1- AH_OUTPUT([HAVE_LIBSMMAPDFW], [/* Define to 1 if you have the `smmapdfw\' library (-lsmmapdfw). */
|
||||||
|
#undef HAVE_LIBSMMAPDFW])
|
||||||
|
m4trace:configure.ac:84: -1- AC_DEFINE_TRACE_LITERAL([HAVE_LIBSMMAPDFW])
|
||||||
|
m4trace:configure.ac:90: -1- AC_HEADER_STDC
|
||||||
|
m4trace:configure.ac:90: -1- AC_PROG_CPP
|
||||||
|
m4trace:configure.ac:90: -1- AC_SUBST([CPP])
|
||||||
|
m4trace:configure.ac:90: -1- AC_SUBST([CPPFLAGS])
|
||||||
|
m4trace:configure.ac:90: -1- AC_SUBST([CPP])
|
||||||
|
m4trace:configure.ac:90: -1- AC_SUBST([EGREP])
|
||||||
|
m4trace:configure.ac:90: -1- AC_DEFINE_TRACE_LITERAL([STDC_HEADERS])
|
||||||
|
m4trace:configure.ac:90: -1- AH_OUTPUT([STDC_HEADERS], [/* Define to 1 if you have the ANSI C header files. */
|
||||||
|
#undef STDC_HEADERS])
|
||||||
|
m4trace:configure.ac:91: -1- AC_CHECK_HEADERS([stdlib.h string.h strings.h syslog.h unistd.h libpq-fe.h cfg.h containers_public.h smmapd.h htmalloc.h queue.h count.h])
|
||||||
|
m4trace:configure.ac:91: -1- AH_OUTPUT([HAVE_STDLIB_H], [/* Define to 1 if you have the <stdlib.h> header file. */
|
||||||
|
#undef HAVE_STDLIB_H])
|
||||||
|
m4trace:configure.ac:91: -1- AH_OUTPUT([HAVE_STRING_H], [/* Define to 1 if you have the <string.h> header file. */
|
||||||
|
#undef HAVE_STRING_H])
|
||||||
|
m4trace:configure.ac:91: -1- AH_OUTPUT([HAVE_STRINGS_H], [/* Define to 1 if you have the <strings.h> header file. */
|
||||||
|
#undef HAVE_STRINGS_H])
|
||||||
|
m4trace:configure.ac:91: -1- AH_OUTPUT([HAVE_SYSLOG_H], [/* Define to 1 if you have the <syslog.h> header file. */
|
||||||
|
#undef HAVE_SYSLOG_H])
|
||||||
|
m4trace:configure.ac:91: -1- AH_OUTPUT([HAVE_UNISTD_H], [/* Define to 1 if you have the <unistd.h> header file. */
|
||||||
|
#undef HAVE_UNISTD_H])
|
||||||
|
m4trace:configure.ac:91: -1- AH_OUTPUT([HAVE_LIBPQ_FE_H], [/* Define to 1 if you have the <libpq-fe.h> header file. */
|
||||||
|
#undef HAVE_LIBPQ_FE_H])
|
||||||
|
m4trace:configure.ac:91: -1- AH_OUTPUT([HAVE_CFG_H], [/* Define to 1 if you have the <cfg.h> header file. */
|
||||||
|
#undef HAVE_CFG_H])
|
||||||
|
m4trace:configure.ac:91: -1- AH_OUTPUT([HAVE_CONTAINERS_PUBLIC_H], [/* Define to 1 if you have the <containers_public.h> header file. */
|
||||||
|
#undef HAVE_CONTAINERS_PUBLIC_H])
|
||||||
|
m4trace:configure.ac:91: -1- AH_OUTPUT([HAVE_SMMAPD_H], [/* Define to 1 if you have the <smmapd.h> header file. */
|
||||||
|
#undef HAVE_SMMAPD_H])
|
||||||
|
m4trace:configure.ac:91: -1- AH_OUTPUT([HAVE_HTMALLOC_H], [/* Define to 1 if you have the <htmalloc.h> header file. */
|
||||||
|
#undef HAVE_HTMALLOC_H])
|
||||||
|
m4trace:configure.ac:91: -1- AH_OUTPUT([HAVE_QUEUE_H], [/* Define to 1 if you have the <queue.h> header file. */
|
||||||
|
#undef HAVE_QUEUE_H])
|
||||||
|
m4trace:configure.ac:91: -1- AH_OUTPUT([HAVE_COUNT_H], [/* Define to 1 if you have the <count.h> header file. */
|
||||||
|
#undef HAVE_COUNT_H])
|
||||||
|
m4trace:configure.ac:91: -1- AC_CHECK_HEADERS([sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \
|
||||||
|
inttypes.h stdint.h unistd.h], [], [], [$ac_includes_default])
|
||||||
|
m4trace:configure.ac:91: -1- AH_OUTPUT([HAVE_SYS_TYPES_H], [/* Define to 1 if you have the <sys/types.h> header file. */
|
||||||
|
#undef HAVE_SYS_TYPES_H])
|
||||||
|
m4trace:configure.ac:91: -1- AH_OUTPUT([HAVE_SYS_STAT_H], [/* Define to 1 if you have the <sys/stat.h> header file. */
|
||||||
|
#undef HAVE_SYS_STAT_H])
|
||||||
|
m4trace:configure.ac:91: -1- AH_OUTPUT([HAVE_STDLIB_H], [/* Define to 1 if you have the <stdlib.h> header file. */
|
||||||
|
#undef HAVE_STDLIB_H])
|
||||||
|
m4trace:configure.ac:91: -1- AH_OUTPUT([HAVE_STRING_H], [/* Define to 1 if you have the <string.h> header file. */
|
||||||
|
#undef HAVE_STRING_H])
|
||||||
|
m4trace:configure.ac:91: -1- AH_OUTPUT([HAVE_MEMORY_H], [/* Define to 1 if you have the <memory.h> header file. */
|
||||||
|
#undef HAVE_MEMORY_H])
|
||||||
|
m4trace:configure.ac:91: -1- AH_OUTPUT([HAVE_STRINGS_H], [/* Define to 1 if you have the <strings.h> header file. */
|
||||||
|
#undef HAVE_STRINGS_H])
|
||||||
|
m4trace:configure.ac:91: -1- AH_OUTPUT([HAVE_INTTYPES_H], [/* Define to 1 if you have the <inttypes.h> header file. */
|
||||||
|
#undef HAVE_INTTYPES_H])
|
||||||
|
m4trace:configure.ac:91: -1- AH_OUTPUT([HAVE_STDINT_H], [/* Define to 1 if you have the <stdint.h> header file. */
|
||||||
|
#undef HAVE_STDINT_H])
|
||||||
|
m4trace:configure.ac:91: -1- AH_OUTPUT([HAVE_UNISTD_H], [/* Define to 1 if you have the <unistd.h> header file. */
|
||||||
|
#undef HAVE_UNISTD_H])
|
||||||
|
m4trace:configure.ac:95: -1- AC_C_CONST
|
||||||
|
m4trace:configure.ac:95: -1- AC_DEFINE_TRACE_LITERAL([const])
|
||||||
|
m4trace:configure.ac:95: -1- AH_OUTPUT([const], [/* Define to empty if `const\' does not conform to ANSI C. */
|
||||||
|
#undef const])
|
||||||
|
m4trace:configure.ac:96: -1- AC_TYPE_SIZE_T
|
||||||
|
m4trace:configure.ac:96: -1- AC_DEFINE_TRACE_LITERAL([size_t])
|
||||||
|
m4trace:configure.ac:96: -1- AH_OUTPUT([size_t], [/* Define to `unsigned\' if <sys/types.h> does not define. */
|
||||||
|
#undef size_t])
|
||||||
|
m4trace:configure.ac:97: -1- AC_HEADER_TIME
|
||||||
|
m4trace:configure.ac:97: -1- AC_DEFINE_TRACE_LITERAL([TIME_WITH_SYS_TIME])
|
||||||
|
m4trace:configure.ac:97: -1- AH_OUTPUT([TIME_WITH_SYS_TIME], [/* Define to 1 if you can safely include both <sys/time.h> and <time.h>. */
|
||||||
|
#undef TIME_WITH_SYS_TIME])
|
||||||
|
m4trace:configure.ac:100: -1- AC_FUNC_FORK
|
||||||
|
m4trace:configure.ac:100: -1- AC_TYPE_PID_T
|
||||||
|
m4trace:configure.ac:100: -1- AC_DEFINE_TRACE_LITERAL([pid_t])
|
||||||
|
m4trace:configure.ac:100: -1- AH_OUTPUT([pid_t], [/* Define to `int\' if <sys/types.h> does not define. */
|
||||||
|
#undef pid_t])
|
||||||
|
m4trace:configure.ac:100: -1- AC_CHECK_HEADERS([unistd.h vfork.h])
|
||||||
|
m4trace:configure.ac:100: -1- AH_OUTPUT([HAVE_UNISTD_H], [/* Define to 1 if you have the <unistd.h> header file. */
|
||||||
|
#undef HAVE_UNISTD_H])
|
||||||
|
m4trace:configure.ac:100: -1- AH_OUTPUT([HAVE_VFORK_H], [/* Define to 1 if you have the <vfork.h> header file. */
|
||||||
|
#undef HAVE_VFORK_H])
|
||||||
|
m4trace:configure.ac:100: -1- AC_CHECK_FUNCS([fork vfork])
|
||||||
|
m4trace:configure.ac:100: -1- AH_OUTPUT([HAVE_FORK], [/* Define to 1 if you have the `fork\' function. */
|
||||||
|
#undef HAVE_FORK])
|
||||||
|
m4trace:configure.ac:100: -1- AH_OUTPUT([HAVE_VFORK], [/* Define to 1 if you have the `vfork\' function. */
|
||||||
|
#undef HAVE_VFORK])
|
||||||
|
m4trace:configure.ac:100: -1- AC_DEFINE_TRACE_LITERAL([HAVE_WORKING_VFORK])
|
||||||
|
m4trace:configure.ac:100: -1- AH_OUTPUT([HAVE_WORKING_VFORK], [/* Define to 1 if `vfork\' works. */
|
||||||
|
#undef HAVE_WORKING_VFORK])
|
||||||
|
m4trace:configure.ac:100: -1- AC_DEFINE_TRACE_LITERAL([vfork])
|
||||||
|
m4trace:configure.ac:100: -1- AH_OUTPUT([vfork], [/* Define as `fork\' if `vfork\' does not work. */
|
||||||
|
#undef vfork])
|
||||||
|
m4trace:configure.ac:100: -1- AC_DEFINE_TRACE_LITERAL([HAVE_WORKING_FORK])
|
||||||
|
m4trace:configure.ac:100: -1- AH_OUTPUT([HAVE_WORKING_FORK], [/* Define to 1 if `fork\' works. */
|
||||||
|
#undef HAVE_WORKING_FORK])
|
||||||
|
m4trace:configure.ac:103: -1- AC_FUNC_SELECT_ARGTYPES
|
||||||
|
m4trace:configure.ac:103: -1- AC_CHECK_HEADERS([sys/select.h sys/socket.h])
|
||||||
|
m4trace:configure.ac:103: -1- AH_OUTPUT([HAVE_SYS_SELECT_H], [/* Define to 1 if you have the <sys/select.h> header file. */
|
||||||
|
#undef HAVE_SYS_SELECT_H])
|
||||||
|
m4trace:configure.ac:103: -1- AH_OUTPUT([HAVE_SYS_SOCKET_H], [/* Define to 1 if you have the <sys/socket.h> header file. */
|
||||||
|
#undef HAVE_SYS_SOCKET_H])
|
||||||
|
m4trace:configure.ac:103: -1- AC_DEFINE_TRACE_LITERAL([SELECT_TYPE_ARG1])
|
||||||
|
m4trace:configure.ac:103: -1- AH_OUTPUT([SELECT_TYPE_ARG1], [/* Define to the type of arg 1 for `select\'. */
|
||||||
|
#undef SELECT_TYPE_ARG1])
|
||||||
|
m4trace:configure.ac:103: -1- AC_DEFINE_TRACE_LITERAL([SELECT_TYPE_ARG234])
|
||||||
|
m4trace:configure.ac:103: -1- AH_OUTPUT([SELECT_TYPE_ARG234], [/* Define to the type of args 2, 3 and 4 for `select\'. */
|
||||||
|
#undef SELECT_TYPE_ARG234])
|
||||||
|
m4trace:configure.ac:103: -1- AC_DEFINE_TRACE_LITERAL([SELECT_TYPE_ARG5])
|
||||||
|
m4trace:configure.ac:103: -1- AH_OUTPUT([SELECT_TYPE_ARG5], [/* Define to the type of arg 5 for `select\'. */
|
||||||
|
#undef SELECT_TYPE_ARG5])
|
||||||
|
m4trace:configure.ac:105: -1- AC_CHECK_FUNCS([syslog findcfgl findcfglx htmalloc htrealloc], [], [AC_MSG_ERROR([*** missing function, we can't go without it])])
|
||||||
|
m4trace:configure.ac:105: -1- AH_OUTPUT([HAVE_SYSLOG], [/* Define to 1 if you have the `syslog\' function. */
|
||||||
|
#undef HAVE_SYSLOG])
|
||||||
|
m4trace:configure.ac:105: -1- AH_OUTPUT([HAVE_FINDCFGL], [/* Define to 1 if you have the `findcfgl\' function. */
|
||||||
|
#undef HAVE_FINDCFGL])
|
||||||
|
m4trace:configure.ac:105: -1- AH_OUTPUT([HAVE_FINDCFGLX], [/* Define to 1 if you have the `findcfglx\' function. */
|
||||||
|
#undef HAVE_FINDCFGLX])
|
||||||
|
m4trace:configure.ac:105: -1- AH_OUTPUT([HAVE_HTMALLOC], [/* Define to 1 if you have the `htmalloc\' function. */
|
||||||
|
#undef HAVE_HTMALLOC])
|
||||||
|
m4trace:configure.ac:105: -1- AH_OUTPUT([HAVE_HTREALLOC], [/* Define to 1 if you have the `htrealloc\' function. */
|
||||||
|
#undef HAVE_HTREALLOC])
|
||||||
|
m4trace:configure.ac:111: -1- AC_CONFIG_FILES([Makefile pgworker/Makefile])
|
||||||
|
m4trace:configure.ac:113: -1- AC_SUBST([LIB@&t@OBJS], [$ac_libobjs])
|
||||||
|
m4trace:configure.ac:113: -1- AC_SUBST([LTLIBOBJS], [$ac_ltlibobjs])
|
545
pgworker/autom4te.cache/traces.1
Normal file
545
pgworker/autom4te.cache/traces.1
Normal file
@ -0,0 +1,545 @@
|
|||||||
|
m4trace:configure.ac:5: -1- AC_INIT([pgworker], [0.1], [woho@hottis.de])
|
||||||
|
m4trace:configure.ac:5: -1- m4_pattern_forbid([^_?A[CHUM]_])
|
||||||
|
m4trace:configure.ac:5: -1- m4_pattern_forbid([_AC_])
|
||||||
|
m4trace:configure.ac:5: -1- m4_pattern_forbid([^LIBOBJS$], [do not use LIBOBJS directly, use AC_LIBOBJ (see section `AC_LIBOBJ vs LIBOBJS'])
|
||||||
|
m4trace:configure.ac:5: -1- m4_pattern_allow([^AS_FLAGS$])
|
||||||
|
m4trace:configure.ac:5: -1- m4_pattern_forbid([^_?m4_])
|
||||||
|
m4trace:configure.ac:5: -1- m4_pattern_forbid([^dnl$])
|
||||||
|
m4trace:configure.ac:5: -1- m4_pattern_forbid([^_?AS_])
|
||||||
|
m4trace:configure.ac:5: -1- AC_SUBST([SHELL], [${CONFIG_SHELL-/bin/sh}])
|
||||||
|
m4trace:configure.ac:5: -1- AC_SUBST([PATH_SEPARATOR])
|
||||||
|
m4trace:configure.ac:5: -1- AC_SUBST([PACKAGE_NAME], [m4_ifdef([AC_PACKAGE_NAME], ['AC_PACKAGE_NAME'])])
|
||||||
|
m4trace:configure.ac:5: -1- AC_SUBST([PACKAGE_TARNAME], [m4_ifdef([AC_PACKAGE_TARNAME], ['AC_PACKAGE_TARNAME'])])
|
||||||
|
m4trace:configure.ac:5: -1- AC_SUBST([PACKAGE_VERSION], [m4_ifdef([AC_PACKAGE_VERSION], ['AC_PACKAGE_VERSION'])])
|
||||||
|
m4trace:configure.ac:5: -1- AC_SUBST([PACKAGE_STRING], [m4_ifdef([AC_PACKAGE_STRING], ['AC_PACKAGE_STRING'])])
|
||||||
|
m4trace:configure.ac:5: -1- AC_SUBST([PACKAGE_BUGREPORT], [m4_ifdef([AC_PACKAGE_BUGREPORT], ['AC_PACKAGE_BUGREPORT'])])
|
||||||
|
m4trace:configure.ac:5: -1- AC_SUBST([exec_prefix], [NONE])
|
||||||
|
m4trace:configure.ac:5: -1- AC_SUBST([prefix], [NONE])
|
||||||
|
m4trace:configure.ac:5: -1- AC_SUBST([program_transform_name], [s,x,x,])
|
||||||
|
m4trace:configure.ac:5: -1- AC_SUBST([bindir], ['${exec_prefix}/bin'])
|
||||||
|
m4trace:configure.ac:5: -1- AC_SUBST([sbindir], ['${exec_prefix}/sbin'])
|
||||||
|
m4trace:configure.ac:5: -1- AC_SUBST([libexecdir], ['${exec_prefix}/libexec'])
|
||||||
|
m4trace:configure.ac:5: -1- AC_SUBST([datadir], ['${prefix}/share'])
|
||||||
|
m4trace:configure.ac:5: -1- AC_SUBST([sysconfdir], ['${prefix}/etc'])
|
||||||
|
m4trace:configure.ac:5: -1- AC_SUBST([sharedstatedir], ['${prefix}/com'])
|
||||||
|
m4trace:configure.ac:5: -1- AC_SUBST([localstatedir], ['${prefix}/var'])
|
||||||
|
m4trace:configure.ac:5: -1- AC_SUBST([libdir], ['${exec_prefix}/lib'])
|
||||||
|
m4trace:configure.ac:5: -1- AC_SUBST([includedir], ['${prefix}/include'])
|
||||||
|
m4trace:configure.ac:5: -1- AC_SUBST([oldincludedir], ['/usr/include'])
|
||||||
|
m4trace:configure.ac:5: -1- AC_SUBST([infodir], ['${prefix}/info'])
|
||||||
|
m4trace:configure.ac:5: -1- AC_SUBST([mandir], ['${prefix}/man'])
|
||||||
|
m4trace:configure.ac:5: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_NAME])
|
||||||
|
m4trace:configure.ac:5: -1- AH_OUTPUT([PACKAGE_NAME], [/* Define to the full name of this package. */
|
||||||
|
#undef PACKAGE_NAME])
|
||||||
|
m4trace:configure.ac:5: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_TARNAME])
|
||||||
|
m4trace:configure.ac:5: -1- AH_OUTPUT([PACKAGE_TARNAME], [/* Define to the one symbol short name of this package. */
|
||||||
|
#undef PACKAGE_TARNAME])
|
||||||
|
m4trace:configure.ac:5: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_VERSION])
|
||||||
|
m4trace:configure.ac:5: -1- AH_OUTPUT([PACKAGE_VERSION], [/* Define to the version of this package. */
|
||||||
|
#undef PACKAGE_VERSION])
|
||||||
|
m4trace:configure.ac:5: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_STRING])
|
||||||
|
m4trace:configure.ac:5: -1- AH_OUTPUT([PACKAGE_STRING], [/* Define to the full name and version of this package. */
|
||||||
|
#undef PACKAGE_STRING])
|
||||||
|
m4trace:configure.ac:5: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_BUGREPORT])
|
||||||
|
m4trace:configure.ac:5: -1- AH_OUTPUT([PACKAGE_BUGREPORT], [/* Define to the address where bug reports for this package should be sent. */
|
||||||
|
#undef PACKAGE_BUGREPORT])
|
||||||
|
m4trace:configure.ac:5: -1- AC_SUBST([build_alias])
|
||||||
|
m4trace:configure.ac:5: -1- AC_SUBST([host_alias])
|
||||||
|
m4trace:configure.ac:5: -1- AC_SUBST([target_alias])
|
||||||
|
m4trace:configure.ac:5: -1- AC_SUBST([DEFS])
|
||||||
|
m4trace:configure.ac:5: -1- AC_SUBST([ECHO_C])
|
||||||
|
m4trace:configure.ac:5: -1- AC_SUBST([ECHO_N])
|
||||||
|
m4trace:configure.ac:5: -1- AC_SUBST([ECHO_T])
|
||||||
|
m4trace:configure.ac:5: -1- AC_SUBST([LIBS])
|
||||||
|
m4trace:configure.ac:6: -1- AM_INIT_AUTOMAKE([pgworker], [0.1])
|
||||||
|
m4trace:configure.ac:6: -1- AM_AUTOMAKE_VERSION([1.4-p6])
|
||||||
|
m4trace:configure.ac:6: -1- AC_PROG_INSTALL
|
||||||
|
m4trace:configure.ac:6: -1- AC_SUBST([INSTALL_PROGRAM])
|
||||||
|
m4trace:configure.ac:6: -1- AC_SUBST([INSTALL_SCRIPT])
|
||||||
|
m4trace:configure.ac:6: -1- AC_SUBST([INSTALL_DATA])
|
||||||
|
m4trace:configure.ac:6: -1- AC_SUBST([PACKAGE])
|
||||||
|
m4trace:configure.ac:6: -1- AC_SUBST([VERSION])
|
||||||
|
m4trace:configure.ac:6: -2- AC_DEFINE_TRACE_LITERAL([PACKAGE])
|
||||||
|
m4trace:configure.ac:6: -2- AH_OUTPUT([PACKAGE], [/* Name of package */
|
||||||
|
#undef PACKAGE])
|
||||||
|
m4trace:configure.ac:6: -2- AC_DEFINE_TRACE_LITERAL([VERSION])
|
||||||
|
m4trace:configure.ac:6: -2- AH_OUTPUT([VERSION], [/* Version number of package */
|
||||||
|
#undef VERSION])
|
||||||
|
m4trace:configure.ac:6: -1- AC_SUBST([ACLOCAL])
|
||||||
|
m4trace:configure.ac:6: -1- AC_SUBST([AUTOCONF])
|
||||||
|
m4trace:configure.ac:6: -1- AC_SUBST([AUTOMAKE])
|
||||||
|
m4trace:configure.ac:6: -1- AC_SUBST([AUTOHEADER])
|
||||||
|
m4trace:configure.ac:6: -1- AC_SUBST([MAKEINFO])
|
||||||
|
m4trace:configure.ac:6: -1- AC_PROG_MAKE_SET
|
||||||
|
m4trace:configure.ac:6: -1- AC_SUBST([SET_MAKE])
|
||||||
|
m4trace:configure.ac:7: -1- AM_MAINTAINER_MODE
|
||||||
|
m4trace:configure.ac:7: -1- AM_CONDITIONAL([MAINTAINER_MODE], [test $USE_MAINTAINER_MODE = yes])
|
||||||
|
m4trace:configure.ac:7: -1- AC_SUBST([MAINTAINER_MODE_TRUE])
|
||||||
|
m4trace:configure.ac:7: -1- AC_SUBST([MAINTAINER_MODE_FALSE])
|
||||||
|
m4trace:configure.ac:7: -1- AC_SUBST([MAINT])
|
||||||
|
m4trace:configure.ac:9: -1- AC_CONFIG_HEADERS([config.h])
|
||||||
|
m4trace:configure.ac:9: -1- _m4_warn([obsolete], [The macro `AC_OUTPUT_COMMANDS' is obsolete.
|
||||||
|
You should run autoupdate.], [autoconf/status.m4:318: AC_OUTPUT_COMMANDS is expanded from...
|
||||||
|
aclocal.m4:1010: AM_CONFIG_HEADER is expanded from...
|
||||||
|
configure.ac:9: the top level])
|
||||||
|
m4trace:configure.ac:9: -3- _m4_warn([obsolete], [The macro `_AC_OUTPUT_COMMANDS_CNT' is obsolete.
|
||||||
|
You should run autoupdate.], [autoconf/status.m4:321: _AC_OUTPUT_COMMANDS_CNT is expanded from...
|
||||||
|
autoconf/status.m4:318: AC_OUTPUT_COMMANDS is expanded from...
|
||||||
|
aclocal.m4:1010: AM_CONFIG_HEADER is expanded from...
|
||||||
|
configure.ac:9: the top level])
|
||||||
|
m4trace:configure.ac:11: -1- _m4_warn([obsolete], [The macro `AC_LANG_C' is obsolete.
|
||||||
|
You should run autoupdate.], [autoconf/c.m4:71: AC_LANG_C is expanded from...
|
||||||
|
configure.ac:11: the top level])
|
||||||
|
m4trace:configure.ac:26: -1- _m4_warn([obsolete], [The macro `AC_HELP_STRING' is obsolete.
|
||||||
|
You should run autoupdate.], [autoconf/general.m4:219: AC_HELP_STRING is expanded from...
|
||||||
|
autoconf/general.m4:1331: AC_ARG_WITH is expanded from...
|
||||||
|
configure.ac:26: the top level])
|
||||||
|
m4trace:configure.ac:41: -1- _m4_warn([obsolete], [The macro `AC_HELP_STRING' is obsolete.
|
||||||
|
You should run autoupdate.], [autoconf/general.m4:219: AC_HELP_STRING is expanded from...
|
||||||
|
autoconf/general.m4:1331: AC_ARG_WITH is expanded from...
|
||||||
|
configure.ac:41: the top level])
|
||||||
|
m4trace:configure.ac:56: -1- _m4_warn([obsolete], [The macro `AC_HELP_STRING' is obsolete.
|
||||||
|
You should run autoupdate.], [autoconf/general.m4:219: AC_HELP_STRING is expanded from...
|
||||||
|
autoconf/general.m4:1331: AC_ARG_WITH is expanded from...
|
||||||
|
configure.ac:56: the top level])
|
||||||
|
m4trace:configure.ac:71: -1- _m4_warn([obsolete], [The macro `AC_HELP_STRING' is obsolete.
|
||||||
|
You should run autoupdate.], [autoconf/general.m4:219: AC_HELP_STRING is expanded from...
|
||||||
|
autoconf/general.m4:1331: AC_ARG_WITH is expanded from...
|
||||||
|
configure.ac:71: the top level])
|
||||||
|
m4trace:configure.ac:77: -1- AC_PROG_CC
|
||||||
|
m4trace:configure.ac:77: -1- AC_SUBST([CC])
|
||||||
|
m4trace:configure.ac:77: -1- AC_SUBST([CFLAGS])
|
||||||
|
m4trace:configure.ac:77: -1- AC_SUBST([LDFLAGS])
|
||||||
|
m4trace:configure.ac:77: -1- AC_SUBST([CPPFLAGS])
|
||||||
|
m4trace:configure.ac:77: -1- AC_SUBST([CC])
|
||||||
|
m4trace:configure.ac:77: -1- AC_SUBST([ac_ct_CC])
|
||||||
|
m4trace:configure.ac:77: -1- AC_SUBST([CC])
|
||||||
|
m4trace:configure.ac:77: -1- AC_SUBST([ac_ct_CC])
|
||||||
|
m4trace:configure.ac:77: -1- AC_SUBST([CC])
|
||||||
|
m4trace:configure.ac:77: -1- AC_SUBST([CC])
|
||||||
|
m4trace:configure.ac:77: -1- AC_SUBST([ac_ct_CC])
|
||||||
|
m4trace:configure.ac:77: -1- AC_SUBST([EXEEXT], [$ac_cv_exeext])
|
||||||
|
m4trace:configure.ac:77: -1- AC_SUBST([OBJEXT], [$ac_cv_objext])
|
||||||
|
m4trace:configure.ac:78: -1- AC_PROG_LIBTOOL
|
||||||
|
m4trace:configure.ac:78: -1- _m4_warn([obsolete], [The macro `AC_HELP_STRING' is obsolete.
|
||||||
|
You should run autoupdate.], [autoconf/general.m4:219: AC_HELP_STRING is expanded from...
|
||||||
|
autoconf/general.m4:1303: AC_ARG_ENABLE is expanded from...
|
||||||
|
aclocal.m4:2772: AC_ENABLE_SHARED is expanded from...
|
||||||
|
configure.ac:78: AC_ENABLE_SHARED is required by...
|
||||||
|
aclocal.m4:1222: AC_LIBTOOL_SETUP is expanded from...
|
||||||
|
configure.ac:78: AC_LIBTOOL_SETUP is required by...
|
||||||
|
aclocal.m4:1080: _AC_PROG_LIBTOOL is expanded from...
|
||||||
|
configure.ac:78: _AC_PROG_LIBTOOL is required by...
|
||||||
|
aclocal.m4:1060: AC_PROG_LIBTOOL is expanded from...
|
||||||
|
configure.ac:78: the top level])
|
||||||
|
m4trace:configure.ac:78: -1- _m4_warn([obsolete], [The macro `AC_HELP_STRING' is obsolete.
|
||||||
|
You should run autoupdate.], [autoconf/general.m4:219: AC_HELP_STRING is expanded from...
|
||||||
|
autoconf/general.m4:1303: AC_ARG_ENABLE is expanded from...
|
||||||
|
aclocal.m4:2811: AC_ENABLE_STATIC is expanded from...
|
||||||
|
configure.ac:78: AC_ENABLE_STATIC is required by...
|
||||||
|
aclocal.m4:1222: AC_LIBTOOL_SETUP is expanded from...
|
||||||
|
configure.ac:78: AC_LIBTOOL_SETUP is required by...
|
||||||
|
aclocal.m4:1080: _AC_PROG_LIBTOOL is expanded from...
|
||||||
|
configure.ac:78: _AC_PROG_LIBTOOL is required by...
|
||||||
|
aclocal.m4:1060: AC_PROG_LIBTOOL is expanded from...
|
||||||
|
configure.ac:78: the top level])
|
||||||
|
m4trace:configure.ac:78: -1- _m4_warn([obsolete], [The macro `AC_HELP_STRING' is obsolete.
|
||||||
|
You should run autoupdate.], [autoconf/general.m4:219: AC_HELP_STRING is expanded from...
|
||||||
|
autoconf/general.m4:1303: AC_ARG_ENABLE is expanded from...
|
||||||
|
aclocal.m4:2850: AC_ENABLE_FAST_INSTALL is expanded from...
|
||||||
|
configure.ac:78: AC_ENABLE_FAST_INSTALL is required by...
|
||||||
|
aclocal.m4:1222: AC_LIBTOOL_SETUP is expanded from...
|
||||||
|
configure.ac:78: AC_LIBTOOL_SETUP is required by...
|
||||||
|
aclocal.m4:1080: _AC_PROG_LIBTOOL is expanded from...
|
||||||
|
configure.ac:78: _AC_PROG_LIBTOOL is required by...
|
||||||
|
aclocal.m4:1060: AC_PROG_LIBTOOL is expanded from...
|
||||||
|
configure.ac:78: the top level])
|
||||||
|
m4trace:configure.ac:78: -1- AC_CANONICAL_HOST
|
||||||
|
m4trace:configure.ac:78: -1- AC_SUBST([build], [$ac_cv_build])
|
||||||
|
m4trace:configure.ac:78: -1- AC_SUBST([build_cpu], [`echo $ac_cv_build | sed 's/^\([[^-]]*\)-\([[^-]]*\)-\(.*\)$/\1/'`])
|
||||||
|
m4trace:configure.ac:78: -1- AC_SUBST([build_vendor], [`echo $ac_cv_build | sed 's/^\([[^-]]*\)-\([[^-]]*\)-\(.*\)$/\2/'`])
|
||||||
|
m4trace:configure.ac:78: -1- AC_SUBST([build_os], [`echo $ac_cv_build | sed 's/^\([[^-]]*\)-\([[^-]]*\)-\(.*\)$/\3/'`])
|
||||||
|
m4trace:configure.ac:78: -1- AC_SUBST([host], [$ac_cv_host])
|
||||||
|
m4trace:configure.ac:78: -1- AC_SUBST([host_cpu], [`echo $ac_cv_host | sed 's/^\([[^-]]*\)-\([[^-]]*\)-\(.*\)$/\1/'`])
|
||||||
|
m4trace:configure.ac:78: -1- AC_SUBST([host_vendor], [`echo $ac_cv_host | sed 's/^\([[^-]]*\)-\([[^-]]*\)-\(.*\)$/\2/'`])
|
||||||
|
m4trace:configure.ac:78: -1- AC_SUBST([host_os], [`echo $ac_cv_host | sed 's/^\([[^-]]*\)-\([[^-]]*\)-\(.*\)$/\3/'`])
|
||||||
|
m4trace:configure.ac:78: -1- _m4_warn([obsolete], [The macro `AC_HELP_STRING' is obsolete.
|
||||||
|
You should run autoupdate.], [autoconf/general.m4:219: AC_HELP_STRING is expanded from...
|
||||||
|
autoconf/general.m4:1331: AC_ARG_WITH is expanded from...
|
||||||
|
aclocal.m4:3047: AC_PROG_LD is expanded from...
|
||||||
|
configure.ac:78: AC_PROG_LD is required by...
|
||||||
|
aclocal.m4:1222: AC_LIBTOOL_SETUP is expanded from...
|
||||||
|
configure.ac:78: AC_LIBTOOL_SETUP is required by...
|
||||||
|
aclocal.m4:1080: _AC_PROG_LIBTOOL is expanded from...
|
||||||
|
configure.ac:78: _AC_PROG_LIBTOOL is required by...
|
||||||
|
aclocal.m4:1060: AC_PROG_LIBTOOL is expanded from...
|
||||||
|
configure.ac:78: the top level])
|
||||||
|
m4trace:configure.ac:78: -1- AC_SUBST([EGREP])
|
||||||
|
m4trace:configure.ac:78: -1- AC_PROG_LN_S
|
||||||
|
m4trace:configure.ac:78: -1- AC_SUBST([LN_S], [$as_ln_s])
|
||||||
|
m4trace:configure.ac:78: -1- AC_SUBST([ECHO])
|
||||||
|
m4trace:configure.ac:78: -1- AC_SUBST([AR])
|
||||||
|
m4trace:configure.ac:78: -1- AC_SUBST([ac_ct_AR])
|
||||||
|
m4trace:configure.ac:78: -1- AC_SUBST([RANLIB])
|
||||||
|
m4trace:configure.ac:78: -1- AC_SUBST([ac_ct_RANLIB])
|
||||||
|
m4trace:configure.ac:78: -1- AC_SUBST([STRIP])
|
||||||
|
m4trace:configure.ac:78: -1- AC_SUBST([ac_ct_STRIP])
|
||||||
|
m4trace:configure.ac:78: -1- _m4_warn([obsolete], [The macro `AC_HELP_STRING' is obsolete.
|
||||||
|
You should run autoupdate.], [autoconf/general.m4:219: AC_HELP_STRING is expanded from...
|
||||||
|
autoconf/general.m4:1303: AC_ARG_ENABLE is expanded from...
|
||||||
|
aclocal.m4:1222: AC_LIBTOOL_SETUP is expanded from...
|
||||||
|
configure.ac:78: AC_LIBTOOL_SETUP is required by...
|
||||||
|
aclocal.m4:1080: _AC_PROG_LIBTOOL is expanded from...
|
||||||
|
configure.ac:78: _AC_PROG_LIBTOOL is required by...
|
||||||
|
aclocal.m4:1060: AC_PROG_LIBTOOL is expanded from...
|
||||||
|
configure.ac:78: the top level])
|
||||||
|
m4trace:configure.ac:78: -1- _m4_warn([obsolete], [The macro `AC_HELP_STRING' is obsolete.
|
||||||
|
You should run autoupdate.], [autoconf/general.m4:219: AC_HELP_STRING is expanded from...
|
||||||
|
autoconf/general.m4:1331: AC_ARG_WITH is expanded from...
|
||||||
|
aclocal.m4:1222: AC_LIBTOOL_SETUP is expanded from...
|
||||||
|
configure.ac:78: AC_LIBTOOL_SETUP is required by...
|
||||||
|
aclocal.m4:1080: _AC_PROG_LIBTOOL is expanded from...
|
||||||
|
configure.ac:78: _AC_PROG_LIBTOOL is required by...
|
||||||
|
aclocal.m4:1060: AC_PROG_LIBTOOL is expanded from...
|
||||||
|
configure.ac:78: the top level])
|
||||||
|
m4trace:configure.ac:78: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete.
|
||||||
|
You should run autoupdate.], [autoconf/general.m4:2223: AC_TRY_LINK is expanded from...
|
||||||
|
autoconf/general.m4:1799: AC_CACHE_VAL is expanded from...
|
||||||
|
autoconf/general.m4:1808: AC_CACHE_CHECK is expanded from...
|
||||||
|
aclocal.m4:1549: _LT_AC_LOCK is expanded from...
|
||||||
|
configure.ac:78: _LT_AC_LOCK is required by...
|
||||||
|
aclocal.m4:1980: AC_LIBTOOL_SYS_HARD_LINK_LOCKS is expanded from...
|
||||||
|
aclocal.m4:3594: _LT_AC_LANG_C_CONFIG is expanded from...
|
||||||
|
aclocal.m4:3461: AC_LIBTOOL_LANG_C_CONFIG is expanded from...
|
||||||
|
aclocal.m4:1222: AC_LIBTOOL_SETUP is expanded from...
|
||||||
|
configure.ac:78: AC_LIBTOOL_SETUP is required by...
|
||||||
|
aclocal.m4:1080: _AC_PROG_LIBTOOL is expanded from...
|
||||||
|
configure.ac:78: _AC_PROG_LIBTOOL is required by...
|
||||||
|
aclocal.m4:1060: AC_PROG_LIBTOOL is expanded from...
|
||||||
|
configure.ac:78: the top level])
|
||||||
|
m4trace:configure.ac:78: -1- AC_CHECK_HEADERS([dlfcn.h])
|
||||||
|
m4trace:configure.ac:78: -1- AH_OUTPUT([HAVE_DLFCN_H], [/* Define to 1 if you have the <dlfcn.h> header file. */
|
||||||
|
#undef HAVE_DLFCN_H])
|
||||||
|
m4trace:configure.ac:78: -1- AC_HEADER_STDC
|
||||||
|
m4trace:configure.ac:78: -1- AC_PROG_CPP
|
||||||
|
m4trace:configure.ac:78: -1- AC_SUBST([CPP])
|
||||||
|
m4trace:configure.ac:78: -1- AC_SUBST([CPPFLAGS])
|
||||||
|
m4trace:configure.ac:78: -1- AC_SUBST([CPP])
|
||||||
|
m4trace:configure.ac:78: -1- AC_DEFINE_TRACE_LITERAL([STDC_HEADERS])
|
||||||
|
m4trace:configure.ac:78: -1- AH_OUTPUT([STDC_HEADERS], [/* Define to 1 if you have the ANSI C header files. */
|
||||||
|
#undef STDC_HEADERS])
|
||||||
|
m4trace:configure.ac:78: -1- AC_CHECK_HEADERS([sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \
|
||||||
|
inttypes.h stdint.h unistd.h], [], [], [$ac_includes_default])
|
||||||
|
m4trace:configure.ac:78: -1- AH_OUTPUT([HAVE_SYS_TYPES_H], [/* Define to 1 if you have the <sys/types.h> header file. */
|
||||||
|
#undef HAVE_SYS_TYPES_H])
|
||||||
|
m4trace:configure.ac:78: -1- AH_OUTPUT([HAVE_SYS_STAT_H], [/* Define to 1 if you have the <sys/stat.h> header file. */
|
||||||
|
#undef HAVE_SYS_STAT_H])
|
||||||
|
m4trace:configure.ac:78: -1- AH_OUTPUT([HAVE_STDLIB_H], [/* Define to 1 if you have the <stdlib.h> header file. */
|
||||||
|
#undef HAVE_STDLIB_H])
|
||||||
|
m4trace:configure.ac:78: -1- AH_OUTPUT([HAVE_STRING_H], [/* Define to 1 if you have the <string.h> header file. */
|
||||||
|
#undef HAVE_STRING_H])
|
||||||
|
m4trace:configure.ac:78: -1- AH_OUTPUT([HAVE_MEMORY_H], [/* Define to 1 if you have the <memory.h> header file. */
|
||||||
|
#undef HAVE_MEMORY_H])
|
||||||
|
m4trace:configure.ac:78: -1- AH_OUTPUT([HAVE_STRINGS_H], [/* Define to 1 if you have the <strings.h> header file. */
|
||||||
|
#undef HAVE_STRINGS_H])
|
||||||
|
m4trace:configure.ac:78: -1- AH_OUTPUT([HAVE_INTTYPES_H], [/* Define to 1 if you have the <inttypes.h> header file. */
|
||||||
|
#undef HAVE_INTTYPES_H])
|
||||||
|
m4trace:configure.ac:78: -1- AH_OUTPUT([HAVE_STDINT_H], [/* Define to 1 if you have the <stdint.h> header file. */
|
||||||
|
#undef HAVE_STDINT_H])
|
||||||
|
m4trace:configure.ac:78: -1- AH_OUTPUT([HAVE_UNISTD_H], [/* Define to 1 if you have the <unistd.h> header file. */
|
||||||
|
#undef HAVE_UNISTD_H])
|
||||||
|
m4trace:configure.ac:78: -1- AC_CHECK_LIB([dl], [dlopen], [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"], [
|
||||||
|
lt_cv_dlopen="dyld"
|
||||||
|
lt_cv_dlopen_libs=
|
||||||
|
lt_cv_dlopen_self=yes
|
||||||
|
])
|
||||||
|
m4trace:configure.ac:78: -1- AC_CHECK_LIB([dld], [shl_load], [lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-dld"], [AC_CHECK_FUNC([dlopen],
|
||||||
|
[lt_cv_dlopen="dlopen"],
|
||||||
|
[AC_CHECK_LIB([dl], [dlopen],
|
||||||
|
[lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"],
|
||||||
|
[AC_CHECK_LIB([svld], [dlopen],
|
||||||
|
[lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld"],
|
||||||
|
[AC_CHECK_LIB([dld], [dld_link],
|
||||||
|
[lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-dld"])
|
||||||
|
])
|
||||||
|
])
|
||||||
|
])
|
||||||
|
])
|
||||||
|
m4trace:configure.ac:78: -1- AC_CHECK_LIB([dl], [dlopen], [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"], [AC_CHECK_LIB([svld], [dlopen],
|
||||||
|
[lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld"],
|
||||||
|
[AC_CHECK_LIB([dld], [dld_link],
|
||||||
|
[lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-dld"])
|
||||||
|
])
|
||||||
|
])
|
||||||
|
m4trace:configure.ac:78: -1- AC_CHECK_LIB([svld], [dlopen], [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld"], [AC_CHECK_LIB([dld], [dld_link],
|
||||||
|
[lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-dld"])
|
||||||
|
])
|
||||||
|
m4trace:configure.ac:78: -1- AC_CHECK_LIB([dld], [dld_link], [lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-dld"])
|
||||||
|
m4trace:configure.ac:78: -1- _m4_warn([obsolete], [The macro `AC_HELP_STRING' is obsolete.
|
||||||
|
You should run autoupdate.], [autoconf/general.m4:219: AC_HELP_STRING is expanded from...
|
||||||
|
autoconf/general.m4:1331: AC_ARG_WITH is expanded from...
|
||||||
|
aclocal.m4:2726: _LT_AC_TAGCONFIG is expanded from...
|
||||||
|
aclocal.m4:1222: AC_LIBTOOL_SETUP is expanded from...
|
||||||
|
configure.ac:78: AC_LIBTOOL_SETUP is required by...
|
||||||
|
aclocal.m4:1080: _AC_PROG_LIBTOOL is expanded from...
|
||||||
|
configure.ac:78: _AC_PROG_LIBTOOL is required by...
|
||||||
|
aclocal.m4:1060: AC_PROG_LIBTOOL is expanded from...
|
||||||
|
configure.ac:78: the top level])
|
||||||
|
m4trace:configure.ac:78: -1- _m4_warn([obsolete], [back quotes and double quotes must not be escaped in: $as_me:$LINENO: error: tag name \"$tagname\" already exists], [aclocal.m4:2726: _LT_AC_TAGCONFIG is expanded from...
|
||||||
|
aclocal.m4:1222: AC_LIBTOOL_SETUP is expanded from...
|
||||||
|
configure.ac:78: AC_LIBTOOL_SETUP is required by...
|
||||||
|
aclocal.m4:1080: _AC_PROG_LIBTOOL is expanded from...
|
||||||
|
configure.ac:78: _AC_PROG_LIBTOOL is required by...
|
||||||
|
aclocal.m4:1060: AC_PROG_LIBTOOL is expanded from...
|
||||||
|
configure.ac:78: the top level])
|
||||||
|
m4trace:configure.ac:78: -1- _m4_warn([obsolete], [back quotes and double quotes must not be escaped in: $as_me: error: tag name \"$tagname\" already exists], [aclocal.m4:2726: _LT_AC_TAGCONFIG is expanded from...
|
||||||
|
aclocal.m4:1222: AC_LIBTOOL_SETUP is expanded from...
|
||||||
|
configure.ac:78: AC_LIBTOOL_SETUP is required by...
|
||||||
|
aclocal.m4:1080: _AC_PROG_LIBTOOL is expanded from...
|
||||||
|
configure.ac:78: _AC_PROG_LIBTOOL is required by...
|
||||||
|
aclocal.m4:1060: AC_PROG_LIBTOOL is expanded from...
|
||||||
|
configure.ac:78: the top level])
|
||||||
|
m4trace:configure.ac:78: -1- AC_PROG_CXX
|
||||||
|
m4trace:configure.ac:78: -1- AC_SUBST([CXX])
|
||||||
|
m4trace:configure.ac:78: -1- AC_SUBST([CXXFLAGS])
|
||||||
|
m4trace:configure.ac:78: -1- AC_SUBST([LDFLAGS])
|
||||||
|
m4trace:configure.ac:78: -1- AC_SUBST([CPPFLAGS])
|
||||||
|
m4trace:configure.ac:78: -1- AC_SUBST([CXX])
|
||||||
|
m4trace:configure.ac:78: -1- AC_SUBST([ac_ct_CXX])
|
||||||
|
m4trace:configure.ac:78: -1- AC_SUBST([CXXCPP])
|
||||||
|
m4trace:configure.ac:78: -1- AC_SUBST([CPPFLAGS])
|
||||||
|
m4trace:configure.ac:78: -1- AC_SUBST([CXXCPP])
|
||||||
|
m4trace:configure.ac:78: -1- AC_CHECK_LIB([dl], [dlopen], [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"], [
|
||||||
|
lt_cv_dlopen="dyld"
|
||||||
|
lt_cv_dlopen_libs=
|
||||||
|
lt_cv_dlopen_self=yes
|
||||||
|
])
|
||||||
|
m4trace:configure.ac:78: -1- AC_CHECK_LIB([dld], [shl_load], [lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-dld"], [AC_CHECK_FUNC([dlopen],
|
||||||
|
[lt_cv_dlopen="dlopen"],
|
||||||
|
[AC_CHECK_LIB([dl], [dlopen],
|
||||||
|
[lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"],
|
||||||
|
[AC_CHECK_LIB([svld], [dlopen],
|
||||||
|
[lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld"],
|
||||||
|
[AC_CHECK_LIB([dld], [dld_link],
|
||||||
|
[lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-dld"])
|
||||||
|
])
|
||||||
|
])
|
||||||
|
])
|
||||||
|
])
|
||||||
|
m4trace:configure.ac:78: -1- AC_CHECK_LIB([dl], [dlopen], [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"], [AC_CHECK_LIB([svld], [dlopen],
|
||||||
|
[lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld"],
|
||||||
|
[AC_CHECK_LIB([dld], [dld_link],
|
||||||
|
[lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-dld"])
|
||||||
|
])
|
||||||
|
])
|
||||||
|
m4trace:configure.ac:78: -1- AC_CHECK_LIB([svld], [dlopen], [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld"], [AC_CHECK_LIB([dld], [dld_link],
|
||||||
|
[lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-dld"])
|
||||||
|
])
|
||||||
|
m4trace:configure.ac:78: -1- AC_CHECK_LIB([dld], [dld_link], [lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-dld"])
|
||||||
|
m4trace:configure.ac:78: -1- AC_SUBST([F77])
|
||||||
|
m4trace:configure.ac:78: -1- AC_SUBST([FFLAGS])
|
||||||
|
m4trace:configure.ac:78: -1- AC_SUBST([LDFLAGS])
|
||||||
|
m4trace:configure.ac:78: -1- AC_SUBST([F77])
|
||||||
|
m4trace:configure.ac:78: -1- AC_SUBST([ac_ct_F77])
|
||||||
|
m4trace:configure.ac:78: -1- _m4_warn([obsolete], [The macro `AC_LANG_SAVE' is obsolete.
|
||||||
|
You should run autoupdate.], [autoconf/lang.m4:166: AC_LANG_SAVE is expanded from...
|
||||||
|
aclocal.m4:4771: _LT_AC_LANG_GCJ_CONFIG is expanded from...
|
||||||
|
aclocal.m4:4728: AC_LIBTOOL_LANG_GCJ_CONFIG is expanded from...
|
||||||
|
aclocal.m4:2726: _LT_AC_TAGCONFIG is expanded from...
|
||||||
|
aclocal.m4:1222: AC_LIBTOOL_SETUP is expanded from...
|
||||||
|
configure.ac:78: AC_LIBTOOL_SETUP is required by...
|
||||||
|
aclocal.m4:1080: _AC_PROG_LIBTOOL is expanded from...
|
||||||
|
configure.ac:78: _AC_PROG_LIBTOOL is required by...
|
||||||
|
aclocal.m4:1060: AC_PROG_LIBTOOL is expanded from...
|
||||||
|
configure.ac:78: the top level])
|
||||||
|
m4trace:configure.ac:78: -1- _m4_warn([obsolete], [instead of using `AC_LANG', `AC_LANG_SAVE',
|
||||||
|
and `AC_LANG_RESTORE', you should use `AC_LANG_PUSH' and `AC_LANG_POP'.], [autoconf/lang.m4:166: AC_LANG_SAVE is expanded from...
|
||||||
|
aclocal.m4:4771: _LT_AC_LANG_GCJ_CONFIG is expanded from...
|
||||||
|
aclocal.m4:4728: AC_LIBTOOL_LANG_GCJ_CONFIG is expanded from...
|
||||||
|
aclocal.m4:2726: _LT_AC_TAGCONFIG is expanded from...
|
||||||
|
aclocal.m4:1222: AC_LIBTOOL_SETUP is expanded from...
|
||||||
|
configure.ac:78: AC_LIBTOOL_SETUP is required by...
|
||||||
|
aclocal.m4:1080: _AC_PROG_LIBTOOL is expanded from...
|
||||||
|
configure.ac:78: _AC_PROG_LIBTOOL is required by...
|
||||||
|
aclocal.m4:1060: AC_PROG_LIBTOOL is expanded from...
|
||||||
|
configure.ac:78: the top level])
|
||||||
|
m4trace:configure.ac:78: -1- AC_CHECK_LIB([dl], [dlopen], [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"], [
|
||||||
|
lt_cv_dlopen="dyld"
|
||||||
|
lt_cv_dlopen_libs=
|
||||||
|
lt_cv_dlopen_self=yes
|
||||||
|
])
|
||||||
|
m4trace:configure.ac:78: -1- AC_CHECK_LIB([dld], [shl_load], [lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-dld"], [AC_CHECK_FUNC([dlopen],
|
||||||
|
[lt_cv_dlopen="dlopen"],
|
||||||
|
[AC_CHECK_LIB([dl], [dlopen],
|
||||||
|
[lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"],
|
||||||
|
[AC_CHECK_LIB([svld], [dlopen],
|
||||||
|
[lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld"],
|
||||||
|
[AC_CHECK_LIB([dld], [dld_link],
|
||||||
|
[lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-dld"])
|
||||||
|
])
|
||||||
|
])
|
||||||
|
])
|
||||||
|
])
|
||||||
|
m4trace:configure.ac:78: -1- AC_CHECK_LIB([dl], [dlopen], [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"], [AC_CHECK_LIB([svld], [dlopen],
|
||||||
|
[lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld"],
|
||||||
|
[AC_CHECK_LIB([dld], [dld_link],
|
||||||
|
[lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-dld"])
|
||||||
|
])
|
||||||
|
])
|
||||||
|
m4trace:configure.ac:78: -1- AC_CHECK_LIB([svld], [dlopen], [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld"], [AC_CHECK_LIB([dld], [dld_link],
|
||||||
|
[lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-dld"])
|
||||||
|
])
|
||||||
|
m4trace:configure.ac:78: -1- AC_CHECK_LIB([dld], [dld_link], [lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-dld"])
|
||||||
|
m4trace:configure.ac:78: -1- _m4_warn([obsolete], [The macro `AC_LANG_RESTORE' is obsolete.
|
||||||
|
You should run autoupdate.], [autoconf/lang.m4:172: AC_LANG_RESTORE is expanded from...
|
||||||
|
aclocal.m4:4771: _LT_AC_LANG_GCJ_CONFIG is expanded from...
|
||||||
|
aclocal.m4:4728: AC_LIBTOOL_LANG_GCJ_CONFIG is expanded from...
|
||||||
|
aclocal.m4:2726: _LT_AC_TAGCONFIG is expanded from...
|
||||||
|
aclocal.m4:1222: AC_LIBTOOL_SETUP is expanded from...
|
||||||
|
configure.ac:78: AC_LIBTOOL_SETUP is required by...
|
||||||
|
aclocal.m4:1080: _AC_PROG_LIBTOOL is expanded from...
|
||||||
|
configure.ac:78: _AC_PROG_LIBTOOL is required by...
|
||||||
|
aclocal.m4:1060: AC_PROG_LIBTOOL is expanded from...
|
||||||
|
configure.ac:78: the top level])
|
||||||
|
m4trace:configure.ac:78: -1- _m4_warn([obsolete], [The macro `AC_LANG_SAVE' is obsolete.
|
||||||
|
You should run autoupdate.], [autoconf/lang.m4:166: AC_LANG_SAVE is expanded from...
|
||||||
|
aclocal.m4:4810: _LT_AC_LANG_RC_CONFIG is expanded from...
|
||||||
|
aclocal.m4:4779: AC_LIBTOOL_LANG_RC_CONFIG is expanded from...
|
||||||
|
aclocal.m4:2726: _LT_AC_TAGCONFIG is expanded from...
|
||||||
|
aclocal.m4:1222: AC_LIBTOOL_SETUP is expanded from...
|
||||||
|
configure.ac:78: AC_LIBTOOL_SETUP is required by...
|
||||||
|
aclocal.m4:1080: _AC_PROG_LIBTOOL is expanded from...
|
||||||
|
configure.ac:78: _AC_PROG_LIBTOOL is required by...
|
||||||
|
aclocal.m4:1060: AC_PROG_LIBTOOL is expanded from...
|
||||||
|
configure.ac:78: the top level])
|
||||||
|
m4trace:configure.ac:78: -1- _m4_warn([obsolete], [instead of using `AC_LANG', `AC_LANG_SAVE',
|
||||||
|
and `AC_LANG_RESTORE', you should use `AC_LANG_PUSH' and `AC_LANG_POP'.], [autoconf/lang.m4:166: AC_LANG_SAVE is expanded from...
|
||||||
|
aclocal.m4:4810: _LT_AC_LANG_RC_CONFIG is expanded from...
|
||||||
|
aclocal.m4:4779: AC_LIBTOOL_LANG_RC_CONFIG is expanded from...
|
||||||
|
aclocal.m4:2726: _LT_AC_TAGCONFIG is expanded from...
|
||||||
|
aclocal.m4:1222: AC_LIBTOOL_SETUP is expanded from...
|
||||||
|
configure.ac:78: AC_LIBTOOL_SETUP is required by...
|
||||||
|
aclocal.m4:1080: _AC_PROG_LIBTOOL is expanded from...
|
||||||
|
configure.ac:78: _AC_PROG_LIBTOOL is required by...
|
||||||
|
aclocal.m4:1060: AC_PROG_LIBTOOL is expanded from...
|
||||||
|
configure.ac:78: the top level])
|
||||||
|
m4trace:configure.ac:78: -1- _m4_warn([obsolete], [The macro `AC_LANG_RESTORE' is obsolete.
|
||||||
|
You should run autoupdate.], [autoconf/lang.m4:172: AC_LANG_RESTORE is expanded from...
|
||||||
|
aclocal.m4:4810: _LT_AC_LANG_RC_CONFIG is expanded from...
|
||||||
|
aclocal.m4:4779: AC_LIBTOOL_LANG_RC_CONFIG is expanded from...
|
||||||
|
aclocal.m4:2726: _LT_AC_TAGCONFIG is expanded from...
|
||||||
|
aclocal.m4:1222: AC_LIBTOOL_SETUP is expanded from...
|
||||||
|
configure.ac:78: AC_LIBTOOL_SETUP is required by...
|
||||||
|
aclocal.m4:1080: _AC_PROG_LIBTOOL is expanded from...
|
||||||
|
configure.ac:78: _AC_PROG_LIBTOOL is required by...
|
||||||
|
aclocal.m4:1060: AC_PROG_LIBTOOL is expanded from...
|
||||||
|
configure.ac:78: the top level])
|
||||||
|
m4trace:configure.ac:78: -1- AC_SUBST([LIBTOOL])
|
||||||
|
m4trace:configure.ac:79: -1- AC_PROG_MAKE_SET
|
||||||
|
m4trace:configure.ac:79: -1- AC_SUBST([SET_MAKE])
|
||||||
|
m4trace:configure.ac:82: -1- AC_CHECK_LIB([m], [sin])
|
||||||
|
m4trace:configure.ac:82: -1- AH_OUTPUT([HAVE_LIBM], [/* Define to 1 if you have the `m\' library (-lm). */
|
||||||
|
#undef HAVE_LIBM])
|
||||||
|
m4trace:configure.ac:82: -1- AC_DEFINE_TRACE_LITERAL([HAVE_LIBM])
|
||||||
|
m4trace:configure.ac:83: -1- AC_CHECK_LIB([pq], [PQstatus])
|
||||||
|
m4trace:configure.ac:83: -1- AH_OUTPUT([HAVE_LIBPQ], [/* Define to 1 if you have the `pq\' library (-lpq). */
|
||||||
|
#undef HAVE_LIBPQ])
|
||||||
|
m4trace:configure.ac:83: -1- AC_DEFINE_TRACE_LITERAL([HAVE_LIBPQ])
|
||||||
|
m4trace:configure.ac:84: -1- AC_CHECK_LIB([smmapdfw], [findcfgl])
|
||||||
|
m4trace:configure.ac:84: -1- AH_OUTPUT([HAVE_LIBSMMAPDFW], [/* Define to 1 if you have the `smmapdfw\' library (-lsmmapdfw). */
|
||||||
|
#undef HAVE_LIBSMMAPDFW])
|
||||||
|
m4trace:configure.ac:84: -1- AC_DEFINE_TRACE_LITERAL([HAVE_LIBSMMAPDFW])
|
||||||
|
m4trace:configure.ac:90: -1- AC_HEADER_STDC
|
||||||
|
m4trace:configure.ac:90: -1- AC_DEFINE_TRACE_LITERAL([STDC_HEADERS])
|
||||||
|
m4trace:configure.ac:90: -1- AH_OUTPUT([STDC_HEADERS], [/* Define to 1 if you have the ANSI C header files. */
|
||||||
|
#undef STDC_HEADERS])
|
||||||
|
m4trace:configure.ac:91: -1- AC_CHECK_HEADERS([stdlib.h string.h strings.h syslog.h unistd.h libpq-fe.h cfg.h containers_public.h smmapd.h htmalloc.h queue.h count.h])
|
||||||
|
m4trace:configure.ac:91: -1- AH_OUTPUT([HAVE_STDLIB_H], [/* Define to 1 if you have the <stdlib.h> header file. */
|
||||||
|
#undef HAVE_STDLIB_H])
|
||||||
|
m4trace:configure.ac:91: -1- AH_OUTPUT([HAVE_STRING_H], [/* Define to 1 if you have the <string.h> header file. */
|
||||||
|
#undef HAVE_STRING_H])
|
||||||
|
m4trace:configure.ac:91: -1- AH_OUTPUT([HAVE_STRINGS_H], [/* Define to 1 if you have the <strings.h> header file. */
|
||||||
|
#undef HAVE_STRINGS_H])
|
||||||
|
m4trace:configure.ac:91: -1- AH_OUTPUT([HAVE_SYSLOG_H], [/* Define to 1 if you have the <syslog.h> header file. */
|
||||||
|
#undef HAVE_SYSLOG_H])
|
||||||
|
m4trace:configure.ac:91: -1- AH_OUTPUT([HAVE_UNISTD_H], [/* Define to 1 if you have the <unistd.h> header file. */
|
||||||
|
#undef HAVE_UNISTD_H])
|
||||||
|
m4trace:configure.ac:91: -1- AH_OUTPUT([HAVE_LIBPQ_FE_H], [/* Define to 1 if you have the <libpq-fe.h> header file. */
|
||||||
|
#undef HAVE_LIBPQ_FE_H])
|
||||||
|
m4trace:configure.ac:91: -1- AH_OUTPUT([HAVE_CFG_H], [/* Define to 1 if you have the <cfg.h> header file. */
|
||||||
|
#undef HAVE_CFG_H])
|
||||||
|
m4trace:configure.ac:91: -1- AH_OUTPUT([HAVE_CONTAINERS_PUBLIC_H], [/* Define to 1 if you have the <containers_public.h> header file. */
|
||||||
|
#undef HAVE_CONTAINERS_PUBLIC_H])
|
||||||
|
m4trace:configure.ac:91: -1- AH_OUTPUT([HAVE_SMMAPD_H], [/* Define to 1 if you have the <smmapd.h> header file. */
|
||||||
|
#undef HAVE_SMMAPD_H])
|
||||||
|
m4trace:configure.ac:91: -1- AH_OUTPUT([HAVE_HTMALLOC_H], [/* Define to 1 if you have the <htmalloc.h> header file. */
|
||||||
|
#undef HAVE_HTMALLOC_H])
|
||||||
|
m4trace:configure.ac:91: -1- AH_OUTPUT([HAVE_QUEUE_H], [/* Define to 1 if you have the <queue.h> header file. */
|
||||||
|
#undef HAVE_QUEUE_H])
|
||||||
|
m4trace:configure.ac:91: -1- AH_OUTPUT([HAVE_COUNT_H], [/* Define to 1 if you have the <count.h> header file. */
|
||||||
|
#undef HAVE_COUNT_H])
|
||||||
|
m4trace:configure.ac:95: -1- AC_C_CONST
|
||||||
|
m4trace:configure.ac:95: -1- AC_DEFINE_TRACE_LITERAL([const])
|
||||||
|
m4trace:configure.ac:95: -1- AH_OUTPUT([const], [/* Define to empty if `const\' does not conform to ANSI C. */
|
||||||
|
#undef const])
|
||||||
|
m4trace:configure.ac:96: -1- AC_TYPE_SIZE_T
|
||||||
|
m4trace:configure.ac:96: -1- AC_DEFINE_TRACE_LITERAL([size_t])
|
||||||
|
m4trace:configure.ac:96: -1- AH_OUTPUT([size_t], [/* Define to `unsigned\' if <sys/types.h> does not define. */
|
||||||
|
#undef size_t])
|
||||||
|
m4trace:configure.ac:97: -1- AC_HEADER_TIME
|
||||||
|
m4trace:configure.ac:97: -1- AC_DEFINE_TRACE_LITERAL([TIME_WITH_SYS_TIME])
|
||||||
|
m4trace:configure.ac:97: -1- AH_OUTPUT([TIME_WITH_SYS_TIME], [/* Define to 1 if you can safely include both <sys/time.h> and <time.h>. */
|
||||||
|
#undef TIME_WITH_SYS_TIME])
|
||||||
|
m4trace:configure.ac:100: -1- AC_FUNC_FORK
|
||||||
|
m4trace:configure.ac:100: -1- AC_TYPE_PID_T
|
||||||
|
m4trace:configure.ac:100: -1- AC_DEFINE_TRACE_LITERAL([pid_t])
|
||||||
|
m4trace:configure.ac:100: -1- AH_OUTPUT([pid_t], [/* Define to `int\' if <sys/types.h> does not define. */
|
||||||
|
#undef pid_t])
|
||||||
|
m4trace:configure.ac:100: -1- AC_CHECK_HEADERS([unistd.h vfork.h])
|
||||||
|
m4trace:configure.ac:100: -1- AH_OUTPUT([HAVE_UNISTD_H], [/* Define to 1 if you have the <unistd.h> header file. */
|
||||||
|
#undef HAVE_UNISTD_H])
|
||||||
|
m4trace:configure.ac:100: -1- AH_OUTPUT([HAVE_VFORK_H], [/* Define to 1 if you have the <vfork.h> header file. */
|
||||||
|
#undef HAVE_VFORK_H])
|
||||||
|
m4trace:configure.ac:100: -1- AC_CHECK_FUNCS([fork vfork])
|
||||||
|
m4trace:configure.ac:100: -1- AH_OUTPUT([HAVE_FORK], [/* Define to 1 if you have the `fork\' function. */
|
||||||
|
#undef HAVE_FORK])
|
||||||
|
m4trace:configure.ac:100: -1- AH_OUTPUT([HAVE_VFORK], [/* Define to 1 if you have the `vfork\' function. */
|
||||||
|
#undef HAVE_VFORK])
|
||||||
|
m4trace:configure.ac:100: -1- AC_DEFINE_TRACE_LITERAL([HAVE_WORKING_VFORK])
|
||||||
|
m4trace:configure.ac:100: -1- AH_OUTPUT([HAVE_WORKING_VFORK], [/* Define to 1 if `vfork\' works. */
|
||||||
|
#undef HAVE_WORKING_VFORK])
|
||||||
|
m4trace:configure.ac:100: -1- AC_DEFINE_TRACE_LITERAL([vfork])
|
||||||
|
m4trace:configure.ac:100: -1- AH_OUTPUT([vfork], [/* Define as `fork\' if `vfork\' does not work. */
|
||||||
|
#undef vfork])
|
||||||
|
m4trace:configure.ac:100: -1- AC_DEFINE_TRACE_LITERAL([HAVE_WORKING_FORK])
|
||||||
|
m4trace:configure.ac:100: -1- AH_OUTPUT([HAVE_WORKING_FORK], [/* Define to 1 if `fork\' works. */
|
||||||
|
#undef HAVE_WORKING_FORK])
|
||||||
|
m4trace:configure.ac:103: -1- AC_FUNC_SELECT_ARGTYPES
|
||||||
|
m4trace:configure.ac:103: -1- AC_CHECK_HEADERS([sys/select.h sys/socket.h])
|
||||||
|
m4trace:configure.ac:103: -1- AH_OUTPUT([HAVE_SYS_SELECT_H], [/* Define to 1 if you have the <sys/select.h> header file. */
|
||||||
|
#undef HAVE_SYS_SELECT_H])
|
||||||
|
m4trace:configure.ac:103: -1- AH_OUTPUT([HAVE_SYS_SOCKET_H], [/* Define to 1 if you have the <sys/socket.h> header file. */
|
||||||
|
#undef HAVE_SYS_SOCKET_H])
|
||||||
|
m4trace:configure.ac:103: -1- AC_DEFINE_TRACE_LITERAL([SELECT_TYPE_ARG1])
|
||||||
|
m4trace:configure.ac:103: -1- AH_OUTPUT([SELECT_TYPE_ARG1], [/* Define to the type of arg 1 for `select\'. */
|
||||||
|
#undef SELECT_TYPE_ARG1])
|
||||||
|
m4trace:configure.ac:103: -1- AC_DEFINE_TRACE_LITERAL([SELECT_TYPE_ARG234])
|
||||||
|
m4trace:configure.ac:103: -1- AH_OUTPUT([SELECT_TYPE_ARG234], [/* Define to the type of args 2, 3 and 4 for `select\'. */
|
||||||
|
#undef SELECT_TYPE_ARG234])
|
||||||
|
m4trace:configure.ac:103: -1- AC_DEFINE_TRACE_LITERAL([SELECT_TYPE_ARG5])
|
||||||
|
m4trace:configure.ac:103: -1- AH_OUTPUT([SELECT_TYPE_ARG5], [/* Define to the type of arg 5 for `select\'. */
|
||||||
|
#undef SELECT_TYPE_ARG5])
|
||||||
|
m4trace:configure.ac:105: -1- AC_CHECK_FUNCS([syslog findcfgl findcfglx htmalloc htrealloc], [], [AC_MSG_ERROR([*** missing function, we can't go without it])])
|
||||||
|
m4trace:configure.ac:105: -1- AH_OUTPUT([HAVE_SYSLOG], [/* Define to 1 if you have the `syslog\' function. */
|
||||||
|
#undef HAVE_SYSLOG])
|
||||||
|
m4trace:configure.ac:105: -1- AH_OUTPUT([HAVE_FINDCFGL], [/* Define to 1 if you have the `findcfgl\' function. */
|
||||||
|
#undef HAVE_FINDCFGL])
|
||||||
|
m4trace:configure.ac:105: -1- AH_OUTPUT([HAVE_FINDCFGLX], [/* Define to 1 if you have the `findcfglx\' function. */
|
||||||
|
#undef HAVE_FINDCFGLX])
|
||||||
|
m4trace:configure.ac:105: -1- AH_OUTPUT([HAVE_HTMALLOC], [/* Define to 1 if you have the `htmalloc\' function. */
|
||||||
|
#undef HAVE_HTMALLOC])
|
||||||
|
m4trace:configure.ac:105: -1- AH_OUTPUT([HAVE_HTREALLOC], [/* Define to 1 if you have the `htrealloc\' function. */
|
||||||
|
#undef HAVE_HTREALLOC])
|
||||||
|
m4trace:configure.ac:111: -1- AC_CONFIG_FILES([Makefile pgworker/Makefile])
|
||||||
|
m4trace:configure.ac:113: -1- AC_SUBST([LIB@&t@OBJS], [$ac_libobjs])
|
||||||
|
m4trace:configure.ac:113: -1- AC_SUBST([LTLIBOBJS], [$ac_ltlibobjs])
|
1441
pgworker/config.guess
vendored
Executable file
1441
pgworker/config.guess
vendored
Executable file
File diff suppressed because it is too large
Load Diff
148
pgworker/config.h.in
Normal file
148
pgworker/config.h.in
Normal file
@ -0,0 +1,148 @@
|
|||||||
|
/* config.h.in. Generated from configure.ac by autoheader. */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <cfg.h> header file. */
|
||||||
|
#undef HAVE_CFG_H
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <containers_public.h> header file. */
|
||||||
|
#undef HAVE_CONTAINERS_PUBLIC_H
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <count.h> header file. */
|
||||||
|
#undef HAVE_COUNT_H
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <dlfcn.h> header file. */
|
||||||
|
#undef HAVE_DLFCN_H
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `findcfgl' function. */
|
||||||
|
#undef HAVE_FINDCFGL
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `findcfglx' function. */
|
||||||
|
#undef HAVE_FINDCFGLX
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `fork' function. */
|
||||||
|
#undef HAVE_FORK
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `htmalloc' function. */
|
||||||
|
#undef HAVE_HTMALLOC
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <htmalloc.h> header file. */
|
||||||
|
#undef HAVE_HTMALLOC_H
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `htrealloc' function. */
|
||||||
|
#undef HAVE_HTREALLOC
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <inttypes.h> header file. */
|
||||||
|
#undef HAVE_INTTYPES_H
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `m' library (-lm). */
|
||||||
|
#undef HAVE_LIBM
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `pq' library (-lpq). */
|
||||||
|
#undef HAVE_LIBPQ
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <libpq-fe.h> header file. */
|
||||||
|
#undef HAVE_LIBPQ_FE_H
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `smmapdfw' library (-lsmmapdfw). */
|
||||||
|
#undef HAVE_LIBSMMAPDFW
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <memory.h> header file. */
|
||||||
|
#undef HAVE_MEMORY_H
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <queue.h> header file. */
|
||||||
|
#undef HAVE_QUEUE_H
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <smmapd.h> header file. */
|
||||||
|
#undef HAVE_SMMAPD_H
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <stdint.h> header file. */
|
||||||
|
#undef HAVE_STDINT_H
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <stdlib.h> header file. */
|
||||||
|
#undef HAVE_STDLIB_H
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <strings.h> header file. */
|
||||||
|
#undef HAVE_STRINGS_H
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <string.h> header file. */
|
||||||
|
#undef HAVE_STRING_H
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `syslog' function. */
|
||||||
|
#undef HAVE_SYSLOG
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <syslog.h> header file. */
|
||||||
|
#undef HAVE_SYSLOG_H
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <sys/select.h> header file. */
|
||||||
|
#undef HAVE_SYS_SELECT_H
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <sys/socket.h> header file. */
|
||||||
|
#undef HAVE_SYS_SOCKET_H
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <sys/stat.h> header file. */
|
||||||
|
#undef HAVE_SYS_STAT_H
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <sys/types.h> header file. */
|
||||||
|
#undef HAVE_SYS_TYPES_H
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <unistd.h> header file. */
|
||||||
|
#undef HAVE_UNISTD_H
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `vfork' function. */
|
||||||
|
#undef HAVE_VFORK
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <vfork.h> header file. */
|
||||||
|
#undef HAVE_VFORK_H
|
||||||
|
|
||||||
|
/* Define to 1 if `fork' works. */
|
||||||
|
#undef HAVE_WORKING_FORK
|
||||||
|
|
||||||
|
/* Define to 1 if `vfork' works. */
|
||||||
|
#undef HAVE_WORKING_VFORK
|
||||||
|
|
||||||
|
/* Name of package */
|
||||||
|
#undef PACKAGE
|
||||||
|
|
||||||
|
/* Define to the address where bug reports for this package should be sent. */
|
||||||
|
#undef PACKAGE_BUGREPORT
|
||||||
|
|
||||||
|
/* Define to the full name of this package. */
|
||||||
|
#undef PACKAGE_NAME
|
||||||
|
|
||||||
|
/* Define to the full name and version of this package. */
|
||||||
|
#undef PACKAGE_STRING
|
||||||
|
|
||||||
|
/* Define to the one symbol short name of this package. */
|
||||||
|
#undef PACKAGE_TARNAME
|
||||||
|
|
||||||
|
/* Define to the version of this package. */
|
||||||
|
#undef PACKAGE_VERSION
|
||||||
|
|
||||||
|
/* Define to the type of arg 1 for `select'. */
|
||||||
|
#undef SELECT_TYPE_ARG1
|
||||||
|
|
||||||
|
/* Define to the type of args 2, 3 and 4 for `select'. */
|
||||||
|
#undef SELECT_TYPE_ARG234
|
||||||
|
|
||||||
|
/* Define to the type of arg 5 for `select'. */
|
||||||
|
#undef SELECT_TYPE_ARG5
|
||||||
|
|
||||||
|
/* Define to 1 if you have the ANSI C header files. */
|
||||||
|
#undef STDC_HEADERS
|
||||||
|
|
||||||
|
/* Define to 1 if you can safely include both <sys/time.h> and <time.h>. */
|
||||||
|
#undef TIME_WITH_SYS_TIME
|
||||||
|
|
||||||
|
/* Version number of package */
|
||||||
|
#undef VERSION
|
||||||
|
|
||||||
|
/* Define to empty if `const' does not conform to ANSI C. */
|
||||||
|
#undef const
|
||||||
|
|
||||||
|
/* Define to `int' if <sys/types.h> does not define. */
|
||||||
|
#undef pid_t
|
||||||
|
|
||||||
|
/* Define to `unsigned' if <sys/types.h> does not define. */
|
||||||
|
#undef size_t
|
||||||
|
|
||||||
|
/* Define as `fork' if `vfork' does not work. */
|
||||||
|
#undef vfork
|
1552
pgworker/config.sub
vendored
Executable file
1552
pgworker/config.sub
vendored
Executable file
File diff suppressed because it is too large
Load Diff
21748
pgworker/configure
vendored
Executable file
21748
pgworker/configure
vendored
Executable file
File diff suppressed because it is too large
Load Diff
113
pgworker/configure.ac
Normal file
113
pgworker/configure.ac
Normal file
@ -0,0 +1,113 @@
|
|||||||
|
# -*- Autoconf -*-
|
||||||
|
# Process this file with autoconf to produce a configure script.
|
||||||
|
|
||||||
|
|
||||||
|
AC_INIT(pgworker, 0.1, woho@hottis.de)
|
||||||
|
AM_INIT_AUTOMAKE(pgworker, 0.1)
|
||||||
|
AM_MAINTAINER_MODE
|
||||||
|
|
||||||
|
AM_CONFIG_HEADER(config.h)
|
||||||
|
|
||||||
|
AC_LANG_C
|
||||||
|
|
||||||
|
AC_ARG_WITH(smmapdfw-lib-dir,
|
||||||
|
[AC_HELP_STRING(--with-smmapdfw-lib-dir, [
|
||||||
|
Directory for smmapdfw library files])],
|
||||||
|
[ case "$withval" in
|
||||||
|
no)
|
||||||
|
AC_MSG_ERROR(Need smmapdfw-lib-dir)
|
||||||
|
;;
|
||||||
|
yes)
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
LDFLAGS="$LDFLAGS -L$withval -R$withval"
|
||||||
|
;;
|
||||||
|
esac ]
|
||||||
|
)
|
||||||
|
|
||||||
|
AC_ARG_WITH(smmapdfw-inc-dir,
|
||||||
|
[AC_HELP_STRING(--with-smmapdfw-inc-dir, [
|
||||||
|
Directory for smmapdfw include files])],
|
||||||
|
[ case "$withval" in
|
||||||
|
no)
|
||||||
|
AC_MSG_ERROR(Need smmapdfw-inc-dir)
|
||||||
|
;;
|
||||||
|
yes)
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
CPPFLAGS="$CPPFLAGS -I$withval"
|
||||||
|
;;
|
||||||
|
esac ]
|
||||||
|
)
|
||||||
|
|
||||||
|
AC_ARG_WITH(pgsql-lib-dir,
|
||||||
|
[AC_HELP_STRING(--with-pgsql-lib-dir, [
|
||||||
|
Directory for postgres library files])],
|
||||||
|
[ case "$withval" in
|
||||||
|
no)
|
||||||
|
AC_MSG_ERROR(Need pgsql-lib-dir)
|
||||||
|
;;
|
||||||
|
yes)
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
LDFLAGS="$LDFLAGS -L$withval -R$withval"
|
||||||
|
;;
|
||||||
|
esac ]
|
||||||
|
)
|
||||||
|
|
||||||
|
AC_ARG_WITH(pgsql-inc-dir,
|
||||||
|
[AC_HELP_STRING(--with-pgsql-inc-dir, [
|
||||||
|
Directory for postgres include files])],
|
||||||
|
[ case "$withval" in
|
||||||
|
no)
|
||||||
|
AC_MSG_ERROR(Need pgsql-inc-dir)
|
||||||
|
;;
|
||||||
|
yes)
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
CPPFLAGS="$CPPFLAGS -I$withval"
|
||||||
|
;;
|
||||||
|
esac ]
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
# Checks for programs.
|
||||||
|
AC_PROG_CC
|
||||||
|
AC_PROG_LIBTOOL
|
||||||
|
AC_PROG_MAKE_SET
|
||||||
|
|
||||||
|
# Checks for libraries.
|
||||||
|
AC_CHECK_LIB([m], [sin])
|
||||||
|
AC_CHECK_LIB([pq], [PQstatus])
|
||||||
|
AC_CHECK_LIB([smmapdfw], [findcfgl])
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
# Checks for header files.
|
||||||
|
AC_HEADER_STDC
|
||||||
|
AC_CHECK_HEADERS([stdlib.h string.h strings.h syslog.h unistd.h libpq-fe.h cfg.h containers_public.h smmapd.h htmalloc.h queue.h count.h])
|
||||||
|
|
||||||
|
|
||||||
|
# Checks for typedefs, structures, and compiler characteristics.
|
||||||
|
AC_C_CONST
|
||||||
|
AC_TYPE_SIZE_T
|
||||||
|
AC_HEADER_TIME
|
||||||
|
|
||||||
|
# Checks for library functions.
|
||||||
|
AC_FUNC_FORK
|
||||||
|
dnl AC_FUNC_MALLOC
|
||||||
|
dnl AC_FUNC_REALLOC
|
||||||
|
AC_FUNC_SELECT_ARGTYPES
|
||||||
|
AC_CHECK_FUNCS([syslog findcfgl findcfglx htmalloc htrealloc], [],
|
||||||
|
[AC_MSG_ERROR([*** missing function, we can't go without it])])
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
AC_CONFIG_FILES([Makefile pgworker/Makefile])
|
||||||
|
|
||||||
|
AC_OUTPUT
|
269
pgworker/install-sh
Executable file
269
pgworker/install-sh
Executable file
@ -0,0 +1,269 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
#
|
||||||
|
# install - install a program, script, or datafile
|
||||||
|
#
|
||||||
|
# This originates from X11R5 (mit/util/scripts/install.sh), which was
|
||||||
|
# later released in X11R6 (xc/config/util/install.sh) with the
|
||||||
|
# following copyright and license.
|
||||||
|
#
|
||||||
|
# Copyright (C) 1994 X Consortium
|
||||||
|
#
|
||||||
|
# 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
|
||||||
|
# X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
|
||||||
|
# AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNEC-
|
||||||
|
# TION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||||
|
#
|
||||||
|
# Except as contained in this notice, the name of the X Consortium shall not
|
||||||
|
# be used in advertising or otherwise to promote the sale, use or other deal-
|
||||||
|
# ings in this Software without prior written authorization from the X Consor-
|
||||||
|
# tium.
|
||||||
|
#
|
||||||
|
#
|
||||||
|
# FSF changes to this file are in the public domain.
|
||||||
|
#
|
||||||
|
# Calling this script install-sh is preferred over install.sh, to prevent
|
||||||
|
# `make' implicit rules from creating a file called install from it
|
||||||
|
# when there is no Makefile.
|
||||||
|
#
|
||||||
|
# This script is compatible with the BSD install script, but was written
|
||||||
|
# from scratch. It can only install one file at a time, a restriction
|
||||||
|
# shared with many OS's install programs.
|
||||||
|
|
||||||
|
|
||||||
|
# set DOITPROG to echo to test this script
|
||||||
|
|
||||||
|
# Don't use :- since 4.3BSD and earlier shells don't like it.
|
||||||
|
doit="${DOITPROG-}"
|
||||||
|
|
||||||
|
|
||||||
|
# put in absolute paths if you don't have them in your path; or use env. vars.
|
||||||
|
|
||||||
|
mvprog="${MVPROG-mv}"
|
||||||
|
cpprog="${CPPROG-cp}"
|
||||||
|
chmodprog="${CHMODPROG-chmod}"
|
||||||
|
chownprog="${CHOWNPROG-chown}"
|
||||||
|
chgrpprog="${CHGRPPROG-chgrp}"
|
||||||
|
stripprog="${STRIPPROG-strip}"
|
||||||
|
rmprog="${RMPROG-rm}"
|
||||||
|
mkdirprog="${MKDIRPROG-mkdir}"
|
||||||
|
|
||||||
|
transformbasename=""
|
||||||
|
transform_arg=""
|
||||||
|
instcmd="$mvprog"
|
||||||
|
chmodcmd="$chmodprog 0755"
|
||||||
|
chowncmd=""
|
||||||
|
chgrpcmd=""
|
||||||
|
stripcmd=""
|
||||||
|
rmcmd="$rmprog -f"
|
||||||
|
mvcmd="$mvprog"
|
||||||
|
src=""
|
||||||
|
dst=""
|
||||||
|
dir_arg=""
|
||||||
|
|
||||||
|
while [ x"$1" != x ]; do
|
||||||
|
case $1 in
|
||||||
|
-c) instcmd="$cpprog"
|
||||||
|
shift
|
||||||
|
continue;;
|
||||||
|
|
||||||
|
-d) dir_arg=true
|
||||||
|
shift
|
||||||
|
continue;;
|
||||||
|
|
||||||
|
-m) chmodcmd="$chmodprog $2"
|
||||||
|
shift
|
||||||
|
shift
|
||||||
|
continue;;
|
||||||
|
|
||||||
|
-o) chowncmd="$chownprog $2"
|
||||||
|
shift
|
||||||
|
shift
|
||||||
|
continue;;
|
||||||
|
|
||||||
|
-g) chgrpcmd="$chgrpprog $2"
|
||||||
|
shift
|
||||||
|
shift
|
||||||
|
continue;;
|
||||||
|
|
||||||
|
-s) stripcmd="$stripprog"
|
||||||
|
shift
|
||||||
|
continue;;
|
||||||
|
|
||||||
|
-t=*) transformarg=`echo $1 | sed 's/-t=//'`
|
||||||
|
shift
|
||||||
|
continue;;
|
||||||
|
|
||||||
|
-b=*) transformbasename=`echo $1 | sed 's/-b=//'`
|
||||||
|
shift
|
||||||
|
continue;;
|
||||||
|
|
||||||
|
*) if [ x"$src" = x ]
|
||||||
|
then
|
||||||
|
src=$1
|
||||||
|
else
|
||||||
|
# this colon is to work around a 386BSD /bin/sh bug
|
||||||
|
:
|
||||||
|
dst=$1
|
||||||
|
fi
|
||||||
|
shift
|
||||||
|
continue;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
|
||||||
|
if [ x"$src" = x ]
|
||||||
|
then
|
||||||
|
echo "install: no input file specified"
|
||||||
|
exit 1
|
||||||
|
else
|
||||||
|
true
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ x"$dir_arg" != x ]; then
|
||||||
|
dst=$src
|
||||||
|
src=""
|
||||||
|
|
||||||
|
if [ -d $dst ]; then
|
||||||
|
instcmd=:
|
||||||
|
chmodcmd=""
|
||||||
|
else
|
||||||
|
instcmd=mkdir
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
|
||||||
|
# Waiting for this to be detected by the "$instcmd $src $dsttmp" command
|
||||||
|
# might cause directories to be created, which would be especially bad
|
||||||
|
# if $src (and thus $dsttmp) contains '*'.
|
||||||
|
|
||||||
|
if [ -f $src -o -d $src ]
|
||||||
|
then
|
||||||
|
true
|
||||||
|
else
|
||||||
|
echo "install: $src does not exist"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ x"$dst" = x ]
|
||||||
|
then
|
||||||
|
echo "install: no destination specified"
|
||||||
|
exit 1
|
||||||
|
else
|
||||||
|
true
|
||||||
|
fi
|
||||||
|
|
||||||
|
# If destination is a directory, append the input filename; if your system
|
||||||
|
# does not like double slashes in filenames, you may need to add some logic
|
||||||
|
|
||||||
|
if [ -d $dst ]
|
||||||
|
then
|
||||||
|
dst="$dst"/`basename $src`
|
||||||
|
else
|
||||||
|
true
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
## this sed command emulates the dirname command
|
||||||
|
dstdir=`echo $dst | sed -e 's,[^/]*$,,;s,/$,,;s,^$,.,'`
|
||||||
|
|
||||||
|
# Make sure that the destination directory exists.
|
||||||
|
# this part is taken from Noah Friedman's mkinstalldirs script
|
||||||
|
|
||||||
|
# Skip lots of stat calls in the usual case.
|
||||||
|
if [ ! -d "$dstdir" ]; then
|
||||||
|
defaultIFS='
|
||||||
|
'
|
||||||
|
IFS="${IFS-${defaultIFS}}"
|
||||||
|
|
||||||
|
oIFS="${IFS}"
|
||||||
|
# Some sh's can't handle IFS=/ for some reason.
|
||||||
|
IFS='%'
|
||||||
|
set - `echo ${dstdir} | sed -e 's@/@%@g' -e 's@^%@/@'`
|
||||||
|
IFS="${oIFS}"
|
||||||
|
|
||||||
|
pathcomp=''
|
||||||
|
|
||||||
|
while [ $# -ne 0 ] ; do
|
||||||
|
pathcomp="${pathcomp}${1}"
|
||||||
|
shift
|
||||||
|
|
||||||
|
if [ ! -d "${pathcomp}" ] ;
|
||||||
|
then
|
||||||
|
$mkdirprog "${pathcomp}"
|
||||||
|
else
|
||||||
|
true
|
||||||
|
fi
|
||||||
|
|
||||||
|
pathcomp="${pathcomp}/"
|
||||||
|
done
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ x"$dir_arg" != x ]
|
||||||
|
then
|
||||||
|
$doit $instcmd $dst &&
|
||||||
|
|
||||||
|
if [ x"$chowncmd" != x ]; then $doit $chowncmd $dst; else true ; fi &&
|
||||||
|
if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd $dst; else true ; fi &&
|
||||||
|
if [ x"$stripcmd" != x ]; then $doit $stripcmd $dst; else true ; fi &&
|
||||||
|
if [ x"$chmodcmd" != x ]; then $doit $chmodcmd $dst; else true ; fi
|
||||||
|
else
|
||||||
|
|
||||||
|
# If we're going to rename the final executable, determine the name now.
|
||||||
|
|
||||||
|
if [ x"$transformarg" = x ]
|
||||||
|
then
|
||||||
|
dstfile=`basename $dst`
|
||||||
|
else
|
||||||
|
dstfile=`basename $dst $transformbasename |
|
||||||
|
sed $transformarg`$transformbasename
|
||||||
|
fi
|
||||||
|
|
||||||
|
# don't allow the sed command to completely eliminate the filename
|
||||||
|
|
||||||
|
if [ x"$dstfile" = x ]
|
||||||
|
then
|
||||||
|
dstfile=`basename $dst`
|
||||||
|
else
|
||||||
|
true
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Make a temp file name in the proper directory.
|
||||||
|
|
||||||
|
dsttmp=$dstdir/#inst.$$#
|
||||||
|
|
||||||
|
# Move or copy the file name to the temp name
|
||||||
|
|
||||||
|
$doit $instcmd $src $dsttmp &&
|
||||||
|
|
||||||
|
trap "rm -f ${dsttmp}" 0 &&
|
||||||
|
|
||||||
|
# and set any options; do chmod last to preserve setuid bits
|
||||||
|
|
||||||
|
# If any of these fail, we abort the whole thing. If we want to
|
||||||
|
# ignore errors from any of these, just make sure not to ignore
|
||||||
|
# errors from the above "$doit $instcmd $src $dsttmp" command.
|
||||||
|
|
||||||
|
if [ x"$chowncmd" != x ]; then $doit $chowncmd $dsttmp; else true;fi &&
|
||||||
|
if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd $dsttmp; else true;fi &&
|
||||||
|
if [ x"$stripcmd" != x ]; then $doit $stripcmd $dsttmp; else true;fi &&
|
||||||
|
if [ x"$chmodcmd" != x ]; then $doit $chmodcmd $dsttmp; else true;fi &&
|
||||||
|
|
||||||
|
# Now rename the file to the real destination.
|
||||||
|
|
||||||
|
$doit $rmcmd -f $dstdir/$dstfile &&
|
||||||
|
$doit $mvcmd $dsttmp $dstdir/$dstfile
|
||||||
|
|
||||||
|
fi &&
|
||||||
|
|
||||||
|
|
||||||
|
exit 0
|
6430
pgworker/ltmain.sh
Normal file
6430
pgworker/ltmain.sh
Normal file
File diff suppressed because it is too large
Load Diff
198
pgworker/missing
Executable file
198
pgworker/missing
Executable file
@ -0,0 +1,198 @@
|
|||||||
|
#! /bin/sh
|
||||||
|
# Common stub for a few missing GNU programs while installing.
|
||||||
|
# Copyright (C) 1996, 1997, 2001, 2002 Free Software Foundation, Inc.
|
||||||
|
# Franc,ois Pinard <pinard@iro.umontreal.ca>, 1996.
|
||||||
|
|
||||||
|
# This program is free software; you can redistribute it and/or modify
|
||||||
|
# it under the terms of the GNU General Public License as published by
|
||||||
|
# the Free Software Foundation; either version 2, or (at your option)
|
||||||
|
# any later version.
|
||||||
|
|
||||||
|
# This program is distributed in the hope that it will be useful,
|
||||||
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
# GNU General Public License for more details.
|
||||||
|
|
||||||
|
# You should have received a copy of the GNU General Public License
|
||||||
|
# along with this program; if not, write to the Free Software
|
||||||
|
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
|
||||||
|
# 02111-1307, USA.
|
||||||
|
|
||||||
|
if test $# -eq 0; then
|
||||||
|
echo 1>&2 "Try \`$0 --help' for more information"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# In the cases where this matters, `missing' is being run in the
|
||||||
|
# srcdir already.
|
||||||
|
if test -f configure.in; then
|
||||||
|
configure_ac=configure.ac
|
||||||
|
else
|
||||||
|
configure_ac=configure.in
|
||||||
|
fi
|
||||||
|
|
||||||
|
case "$1" in
|
||||||
|
|
||||||
|
-h|--h|--he|--hel|--help)
|
||||||
|
echo "\
|
||||||
|
$0 [OPTION]... PROGRAM [ARGUMENT]...
|
||||||
|
|
||||||
|
Handle \`PROGRAM [ARGUMENT]...' for when PROGRAM is missing, or return an
|
||||||
|
error status if there is no known handling for PROGRAM.
|
||||||
|
|
||||||
|
Options:
|
||||||
|
-h, --help display this help and exit
|
||||||
|
-v, --version output version information and exit
|
||||||
|
|
||||||
|
Supported PROGRAM values:
|
||||||
|
aclocal touch file \`aclocal.m4'
|
||||||
|
autoconf touch file \`configure'
|
||||||
|
autoheader touch file \`config.h.in'
|
||||||
|
automake touch all \`Makefile.in' files
|
||||||
|
bison create \`y.tab.[ch]', if possible, from existing .[ch]
|
||||||
|
flex create \`lex.yy.c', if possible, from existing .c
|
||||||
|
lex create \`lex.yy.c', if possible, from existing .c
|
||||||
|
makeinfo touch the output file
|
||||||
|
yacc create \`y.tab.[ch]', if possible, from existing .[ch]"
|
||||||
|
;;
|
||||||
|
|
||||||
|
-v|--v|--ve|--ver|--vers|--versi|--versio|--version)
|
||||||
|
echo "missing - GNU libit 0.0"
|
||||||
|
;;
|
||||||
|
|
||||||
|
-*)
|
||||||
|
echo 1>&2 "$0: Unknown \`$1' option"
|
||||||
|
echo 1>&2 "Try \`$0 --help' for more information"
|
||||||
|
exit 1
|
||||||
|
;;
|
||||||
|
|
||||||
|
aclocal*)
|
||||||
|
echo 1>&2 "\
|
||||||
|
WARNING: \`$1' is missing on your system. You should only need it if
|
||||||
|
you modified \`acinclude.m4' or \`$configure_ac'. You might want
|
||||||
|
to install the \`Automake' and \`Perl' packages. Grab them from
|
||||||
|
any GNU archive site."
|
||||||
|
touch aclocal.m4
|
||||||
|
;;
|
||||||
|
|
||||||
|
autoconf)
|
||||||
|
echo 1>&2 "\
|
||||||
|
WARNING: \`$1' is missing on your system. You should only need it if
|
||||||
|
you modified \`$configure_ac'. You might want to install the
|
||||||
|
\`Autoconf' and \`GNU m4' packages. Grab them from any GNU
|
||||||
|
archive site."
|
||||||
|
touch configure
|
||||||
|
;;
|
||||||
|
|
||||||
|
autoheader)
|
||||||
|
echo 1>&2 "\
|
||||||
|
WARNING: \`$1' is missing on your system. You should only need it if
|
||||||
|
you modified \`acconfig.h' or \`$configure_ac'. You might want
|
||||||
|
to install the \`Autoconf' and \`GNU m4' packages. Grab them
|
||||||
|
from any GNU archive site."
|
||||||
|
files=`sed -n 's/^[ ]*A[CM]_CONFIG_HEADER(\([^)]*\)).*/\1/p' $configure_ac`
|
||||||
|
test -z "$files" && files="config.h"
|
||||||
|
touch_files=
|
||||||
|
for f in $files; do
|
||||||
|
case "$f" in
|
||||||
|
*:*) touch_files="$touch_files "`echo "$f" |
|
||||||
|
sed -e 's/^[^:]*://' -e 's/:.*//'`;;
|
||||||
|
*) touch_files="$touch_files $f.in";;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
touch $touch_files
|
||||||
|
;;
|
||||||
|
|
||||||
|
automake*)
|
||||||
|
echo 1>&2 "\
|
||||||
|
WARNING: \`$1' is missing on your system. You should only need it if
|
||||||
|
you modified \`Makefile.am', \`acinclude.m4' or \`$configure_ac'.
|
||||||
|
You might want to install the \`Automake' and \`Perl' packages.
|
||||||
|
Grab them from any GNU archive site."
|
||||||
|
find . -type f -name Makefile.am -print |
|
||||||
|
sed 's/\.am$/.in/' |
|
||||||
|
while read f; do touch "$f"; done
|
||||||
|
;;
|
||||||
|
|
||||||
|
bison|yacc)
|
||||||
|
echo 1>&2 "\
|
||||||
|
WARNING: \`$1' is missing on your system. You should only need it if
|
||||||
|
you modified a \`.y' file. You may need the \`Bison' package
|
||||||
|
in order for those modifications to take effect. You can get
|
||||||
|
\`Bison' from any GNU archive site."
|
||||||
|
rm -f y.tab.c y.tab.h
|
||||||
|
if [ $# -ne 1 ]; then
|
||||||
|
eval LASTARG="\${$#}"
|
||||||
|
case "$LASTARG" in
|
||||||
|
*.y)
|
||||||
|
SRCFILE=`echo "$LASTARG" | sed 's/y$/c/'`
|
||||||
|
if [ -f "$SRCFILE" ]; then
|
||||||
|
cp "$SRCFILE" y.tab.c
|
||||||
|
fi
|
||||||
|
SRCFILE=`echo "$LASTARG" | sed 's/y$/h/'`
|
||||||
|
if [ -f "$SRCFILE" ]; then
|
||||||
|
cp "$SRCFILE" y.tab.h
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
fi
|
||||||
|
if [ ! -f y.tab.h ]; then
|
||||||
|
echo >y.tab.h
|
||||||
|
fi
|
||||||
|
if [ ! -f y.tab.c ]; then
|
||||||
|
echo 'main() { return 0; }' >y.tab.c
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
|
||||||
|
lex|flex)
|
||||||
|
echo 1>&2 "\
|
||||||
|
WARNING: \`$1' is missing on your system. You should only need it if
|
||||||
|
you modified a \`.l' file. You may need the \`Flex' package
|
||||||
|
in order for those modifications to take effect. You can get
|
||||||
|
\`Flex' from any GNU archive site."
|
||||||
|
rm -f lex.yy.c
|
||||||
|
if [ $# -ne 1 ]; then
|
||||||
|
eval LASTARG="\${$#}"
|
||||||
|
case "$LASTARG" in
|
||||||
|
*.l)
|
||||||
|
SRCFILE=`echo "$LASTARG" | sed 's/l$/c/'`
|
||||||
|
if [ -f "$SRCFILE" ]; then
|
||||||
|
cp "$SRCFILE" lex.yy.c
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
fi
|
||||||
|
if [ ! -f lex.yy.c ]; then
|
||||||
|
echo 'main() { return 0; }' >lex.yy.c
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
|
||||||
|
makeinfo)
|
||||||
|
echo 1>&2 "\
|
||||||
|
WARNING: \`$1' is missing on your system. You should only need it if
|
||||||
|
you modified a \`.texi' or \`.texinfo' file, or any other file
|
||||||
|
indirectly affecting the aspect of the manual. The spurious
|
||||||
|
call might also be the consequence of using a buggy \`make' (AIX,
|
||||||
|
DU, IRIX). You might want to install the \`Texinfo' package or
|
||||||
|
the \`GNU make' package. Grab either from any GNU archive site."
|
||||||
|
file=`echo "$*" | sed -n 's/.*-o \([^ ]*\).*/\1/p'`
|
||||||
|
if test -z "$file"; then
|
||||||
|
file=`echo "$*" | sed 's/.* \([^ ]*\) *$/\1/'`
|
||||||
|
file=`sed -n '/^@setfilename/ { s/.* \([^ ]*\) *$/\1/; p; q; }' $file`
|
||||||
|
fi
|
||||||
|
touch $file
|
||||||
|
;;
|
||||||
|
|
||||||
|
*)
|
||||||
|
echo 1>&2 "\
|
||||||
|
WARNING: \`$1' is needed, and you do not seem to have it handy on your
|
||||||
|
system. You might have modified some files without having the
|
||||||
|
proper tools for further handling them. Check the \`README' file,
|
||||||
|
it often tells you about the needed prerequirements for installing
|
||||||
|
this package. You may also peek at any GNU archive site, in case
|
||||||
|
some other package would contain this missing \`$1' program."
|
||||||
|
exit 1
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
exit 0
|
40
pgworker/mkinstalldirs
Executable file
40
pgworker/mkinstalldirs
Executable file
@ -0,0 +1,40 @@
|
|||||||
|
#! /bin/sh
|
||||||
|
# mkinstalldirs --- make directory hierarchy
|
||||||
|
# Author: Noah Friedman <friedman@prep.ai.mit.edu>
|
||||||
|
# Created: 1993-05-16
|
||||||
|
# Public domain
|
||||||
|
|
||||||
|
# $Id$
|
||||||
|
|
||||||
|
errstatus=0
|
||||||
|
|
||||||
|
for file
|
||||||
|
do
|
||||||
|
set fnord `echo ":$file" | sed -ne 's/^:\//#/;s/^://;s/\// /g;s/^#/\//;p'`
|
||||||
|
shift
|
||||||
|
|
||||||
|
pathcomp=
|
||||||
|
for d
|
||||||
|
do
|
||||||
|
pathcomp="$pathcomp$d"
|
||||||
|
case "$pathcomp" in
|
||||||
|
-* ) pathcomp=./$pathcomp ;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
if test ! -d "$pathcomp"; then
|
||||||
|
echo "mkdir $pathcomp"
|
||||||
|
|
||||||
|
mkdir "$pathcomp" || lasterr=$?
|
||||||
|
|
||||||
|
if test ! -d "$pathcomp"; then
|
||||||
|
errstatus=$lasterr
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
pathcomp="$pathcomp/"
|
||||||
|
done
|
||||||
|
done
|
||||||
|
|
||||||
|
exit $errstatus
|
||||||
|
|
||||||
|
# mkinstalldirs ends here
|
4
pgworker/pgworker/Makefile.am
Normal file
4
pgworker/pgworker/Makefile.am
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
lib_LTLIBRARIES = libpg_worker.la
|
||||||
|
libpg_worker_la_SOURCES = pg_worker.c
|
||||||
|
|
||||||
|
|
358
pgworker/pgworker/Makefile.in
Normal file
358
pgworker/pgworker/Makefile.in
Normal file
@ -0,0 +1,358 @@
|
|||||||
|
# Makefile.in generated automatically by automake 1.4-p6 from Makefile.am
|
||||||
|
|
||||||
|
# Copyright (C) 1994, 1995-8, 1999, 2001 Free Software Foundation, Inc.
|
||||||
|
# This Makefile.in is free software; the Free Software Foundation
|
||||||
|
# gives unlimited permission to copy and/or distribute it,
|
||||||
|
# with or without modifications, as long as this notice is preserved.
|
||||||
|
|
||||||
|
# This program is distributed in the hope that it will be useful,
|
||||||
|
# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
|
||||||
|
# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
|
||||||
|
# PARTICULAR PURPOSE.
|
||||||
|
|
||||||
|
|
||||||
|
SHELL = @SHELL@
|
||||||
|
|
||||||
|
srcdir = @srcdir@
|
||||||
|
top_srcdir = @top_srcdir@
|
||||||
|
VPATH = @srcdir@
|
||||||
|
prefix = @prefix@
|
||||||
|
exec_prefix = @exec_prefix@
|
||||||
|
|
||||||
|
bindir = @bindir@
|
||||||
|
sbindir = @sbindir@
|
||||||
|
libexecdir = @libexecdir@
|
||||||
|
datadir = @datadir@
|
||||||
|
sysconfdir = @sysconfdir@
|
||||||
|
sharedstatedir = @sharedstatedir@
|
||||||
|
localstatedir = @localstatedir@
|
||||||
|
libdir = @libdir@
|
||||||
|
infodir = @infodir@
|
||||||
|
mandir = @mandir@
|
||||||
|
includedir = @includedir@
|
||||||
|
oldincludedir = /usr/include
|
||||||
|
|
||||||
|
DESTDIR =
|
||||||
|
|
||||||
|
pkgdatadir = $(datadir)/@PACKAGE@
|
||||||
|
pkglibdir = $(libdir)/@PACKAGE@
|
||||||
|
pkgincludedir = $(includedir)/@PACKAGE@
|
||||||
|
|
||||||
|
top_builddir = ..
|
||||||
|
|
||||||
|
ACLOCAL = @ACLOCAL@
|
||||||
|
AUTOCONF = @AUTOCONF@
|
||||||
|
AUTOMAKE = @AUTOMAKE@
|
||||||
|
AUTOHEADER = @AUTOHEADER@
|
||||||
|
|
||||||
|
INSTALL = @INSTALL@
|
||||||
|
INSTALL_PROGRAM = @INSTALL_PROGRAM@ $(AM_INSTALL_PROGRAM_FLAGS)
|
||||||
|
INSTALL_DATA = @INSTALL_DATA@
|
||||||
|
INSTALL_SCRIPT = @INSTALL_SCRIPT@
|
||||||
|
transform = @program_transform_name@
|
||||||
|
|
||||||
|
NORMAL_INSTALL = :
|
||||||
|
PRE_INSTALL = :
|
||||||
|
POST_INSTALL = :
|
||||||
|
NORMAL_UNINSTALL = :
|
||||||
|
PRE_UNINSTALL = :
|
||||||
|
POST_UNINSTALL = :
|
||||||
|
host_alias = @host_alias@
|
||||||
|
host_triplet = @host@
|
||||||
|
AR = @AR@
|
||||||
|
AS = @AS@
|
||||||
|
CC = @CC@
|
||||||
|
CXX = @CXX@
|
||||||
|
CXXCPP = @CXXCPP@
|
||||||
|
DLLTOOL = @DLLTOOL@
|
||||||
|
ECHO = @ECHO@
|
||||||
|
EGREP = @EGREP@
|
||||||
|
EXEEXT = @EXEEXT@
|
||||||
|
F77 = @F77@
|
||||||
|
GCJ = @GCJ@
|
||||||
|
GCJFLAGS = @GCJFLAGS@
|
||||||
|
HAVE_LIB = @HAVE_LIB@
|
||||||
|
LIB = @LIB@
|
||||||
|
LIBTOOL = @LIBTOOL@
|
||||||
|
LN_S = @LN_S@
|
||||||
|
LTLIB = @LTLIB@
|
||||||
|
MAINT = @MAINT@
|
||||||
|
MAKEINFO = @MAKEINFO@
|
||||||
|
OBJDUMP = @OBJDUMP@
|
||||||
|
OBJEXT = @OBJEXT@
|
||||||
|
PACKAGE = @PACKAGE@
|
||||||
|
RANLIB = @RANLIB@
|
||||||
|
RC = @RC@
|
||||||
|
STRIP = @STRIP@
|
||||||
|
VERSION = @VERSION@
|
||||||
|
|
||||||
|
lib_LTLIBRARIES = libpg_worker.la
|
||||||
|
libpg_worker_la_SOURCES = pg_worker.c
|
||||||
|
mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
|
||||||
|
CONFIG_HEADER = ../config.h
|
||||||
|
CONFIG_CLEAN_FILES =
|
||||||
|
LTLIBRARIES = $(lib_LTLIBRARIES)
|
||||||
|
|
||||||
|
|
||||||
|
DEFS = @DEFS@ -I. -I$(srcdir) -I..
|
||||||
|
CPPFLAGS = @CPPFLAGS@
|
||||||
|
LDFLAGS = @LDFLAGS@
|
||||||
|
LIBS = @LIBS@
|
||||||
|
libpg_worker_la_LDFLAGS =
|
||||||
|
libpg_worker_la_LIBADD =
|
||||||
|
libpg_worker_la_OBJECTS = pg_worker.lo
|
||||||
|
CFLAGS = @CFLAGS@
|
||||||
|
COMPILE = $(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
|
||||||
|
LTCOMPILE = $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
|
||||||
|
CCLD = $(CC)
|
||||||
|
LINK = $(LIBTOOL) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(LDFLAGS) -o $@
|
||||||
|
DIST_COMMON = Makefile.am Makefile.in
|
||||||
|
|
||||||
|
|
||||||
|
DISTFILES = $(DIST_COMMON) $(SOURCES) $(HEADERS) $(TEXINFOS) $(EXTRA_DIST)
|
||||||
|
|
||||||
|
TAR = tar
|
||||||
|
GZIP_ENV = --best
|
||||||
|
DEP_FILES = .deps/pg_worker.P
|
||||||
|
SOURCES = $(libpg_worker_la_SOURCES)
|
||||||
|
OBJECTS = $(libpg_worker_la_OBJECTS)
|
||||||
|
|
||||||
|
all: all-redirect
|
||||||
|
.SUFFIXES:
|
||||||
|
.SUFFIXES: .S .c .lo .o .obj .s
|
||||||
|
$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ Makefile.am $(top_srcdir)/configure.ac $(ACLOCAL_M4)
|
||||||
|
cd $(top_srcdir) && $(AUTOMAKE) --gnu pgworker/Makefile
|
||||||
|
|
||||||
|
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status $(BUILT_SOURCES)
|
||||||
|
cd $(top_builddir) \
|
||||||
|
&& CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status
|
||||||
|
|
||||||
|
|
||||||
|
mostlyclean-libLTLIBRARIES:
|
||||||
|
|
||||||
|
clean-libLTLIBRARIES:
|
||||||
|
-test -z "$(lib_LTLIBRARIES)" || rm -f $(lib_LTLIBRARIES)
|
||||||
|
|
||||||
|
distclean-libLTLIBRARIES:
|
||||||
|
|
||||||
|
maintainer-clean-libLTLIBRARIES:
|
||||||
|
|
||||||
|
install-libLTLIBRARIES: $(lib_LTLIBRARIES)
|
||||||
|
@$(NORMAL_INSTALL)
|
||||||
|
$(mkinstalldirs) $(DESTDIR)$(libdir)
|
||||||
|
@list='$(lib_LTLIBRARIES)'; for p in $$list; do \
|
||||||
|
if test -f $$p; then \
|
||||||
|
echo "$(LIBTOOL) --mode=install $(INSTALL) $$p $(DESTDIR)$(libdir)/$$p"; \
|
||||||
|
$(LIBTOOL) --mode=install $(INSTALL) $$p $(DESTDIR)$(libdir)/$$p; \
|
||||||
|
else :; fi; \
|
||||||
|
done
|
||||||
|
|
||||||
|
uninstall-libLTLIBRARIES:
|
||||||
|
@$(NORMAL_UNINSTALL)
|
||||||
|
list='$(lib_LTLIBRARIES)'; for p in $$list; do \
|
||||||
|
$(LIBTOOL) --mode=uninstall rm -f $(DESTDIR)$(libdir)/$$p; \
|
||||||
|
done
|
||||||
|
|
||||||
|
# FIXME: We should only use cygpath when building on Windows,
|
||||||
|
# and only if it is available.
|
||||||
|
.c.obj:
|
||||||
|
$(COMPILE) -c `cygpath -w $<`
|
||||||
|
|
||||||
|
.s.o:
|
||||||
|
$(COMPILE) -c $<
|
||||||
|
|
||||||
|
.S.o:
|
||||||
|
$(COMPILE) -c $<
|
||||||
|
|
||||||
|
mostlyclean-compile:
|
||||||
|
-rm -f *.o core *.core
|
||||||
|
-rm -f *.$(OBJEXT)
|
||||||
|
|
||||||
|
clean-compile:
|
||||||
|
|
||||||
|
distclean-compile:
|
||||||
|
-rm -f *.tab.c
|
||||||
|
|
||||||
|
maintainer-clean-compile:
|
||||||
|
|
||||||
|
.s.lo:
|
||||||
|
$(LIBTOOL) --mode=compile $(COMPILE) -c $<
|
||||||
|
|
||||||
|
.S.lo:
|
||||||
|
$(LIBTOOL) --mode=compile $(COMPILE) -c $<
|
||||||
|
|
||||||
|
mostlyclean-libtool:
|
||||||
|
-rm -f *.lo
|
||||||
|
|
||||||
|
clean-libtool:
|
||||||
|
-rm -rf .libs _libs
|
||||||
|
|
||||||
|
distclean-libtool:
|
||||||
|
|
||||||
|
maintainer-clean-libtool:
|
||||||
|
|
||||||
|
libpg_worker.la: $(libpg_worker_la_OBJECTS) $(libpg_worker_la_DEPENDENCIES)
|
||||||
|
$(LINK) -rpath $(libdir) $(libpg_worker_la_LDFLAGS) $(libpg_worker_la_OBJECTS) $(libpg_worker_la_LIBADD) $(LIBS)
|
||||||
|
|
||||||
|
tags: TAGS
|
||||||
|
|
||||||
|
ID: $(HEADERS) $(SOURCES) $(LISP)
|
||||||
|
list='$(SOURCES) $(HEADERS)'; \
|
||||||
|
unique=`for i in $$list; do echo $$i; done | \
|
||||||
|
awk ' { files[$$0] = 1; } \
|
||||||
|
END { for (i in files) print i; }'`; \
|
||||||
|
here=`pwd` && cd $(srcdir) \
|
||||||
|
&& mkid -f$$here/ID $$unique $(LISP)
|
||||||
|
|
||||||
|
TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) $(LISP)
|
||||||
|
tags=; \
|
||||||
|
here=`pwd`; \
|
||||||
|
list='$(SOURCES) $(HEADERS)'; \
|
||||||
|
unique=`for i in $$list; do echo $$i; done | \
|
||||||
|
awk ' { files[$$0] = 1; } \
|
||||||
|
END { for (i in files) print i; }'`; \
|
||||||
|
test -z "$(ETAGS_ARGS)$$unique$(LISP)$$tags" \
|
||||||
|
|| (cd $(srcdir) && etags -o $$here/TAGS $(ETAGS_ARGS) $$tags $$unique $(LISP))
|
||||||
|
|
||||||
|
mostlyclean-tags:
|
||||||
|
|
||||||
|
clean-tags:
|
||||||
|
|
||||||
|
distclean-tags:
|
||||||
|
-rm -f TAGS ID
|
||||||
|
|
||||||
|
maintainer-clean-tags:
|
||||||
|
|
||||||
|
distdir = $(top_builddir)/$(PACKAGE)-$(VERSION)/$(subdir)
|
||||||
|
|
||||||
|
subdir = pgworker
|
||||||
|
|
||||||
|
distdir: $(DISTFILES)
|
||||||
|
here=`cd $(top_builddir) && pwd`; \
|
||||||
|
top_distdir=`cd $(top_distdir) && pwd`; \
|
||||||
|
distdir=`cd $(distdir) && pwd`; \
|
||||||
|
cd $(top_srcdir) \
|
||||||
|
&& $(AUTOMAKE) --include-deps --build-dir=$$here --srcdir-name=$(top_srcdir) --output-dir=$$top_distdir --gnu pgworker/Makefile
|
||||||
|
@for file in $(DISTFILES); do \
|
||||||
|
d=$(srcdir); \
|
||||||
|
if test -d $$d/$$file; then \
|
||||||
|
cp -pr $$d/$$file $(distdir)/$$file; \
|
||||||
|
else \
|
||||||
|
test -f $(distdir)/$$file \
|
||||||
|
|| ln $$d/$$file $(distdir)/$$file 2> /dev/null \
|
||||||
|
|| cp -p $$d/$$file $(distdir)/$$file || :; \
|
||||||
|
fi; \
|
||||||
|
done
|
||||||
|
|
||||||
|
DEPS_MAGIC := $(shell mkdir .deps > /dev/null 2>&1 || :)
|
||||||
|
|
||||||
|
-include $(DEP_FILES)
|
||||||
|
|
||||||
|
mostlyclean-depend:
|
||||||
|
|
||||||
|
clean-depend:
|
||||||
|
|
||||||
|
distclean-depend:
|
||||||
|
-rm -rf .deps
|
||||||
|
|
||||||
|
maintainer-clean-depend:
|
||||||
|
|
||||||
|
%.o: %.c
|
||||||
|
@echo '$(COMPILE) -c $<'; \
|
||||||
|
$(COMPILE) -Wp,-MD,.deps/$(*F).pp -c $<
|
||||||
|
@-cp .deps/$(*F).pp .deps/$(*F).P; \
|
||||||
|
tr ' ' '\012' < .deps/$(*F).pp \
|
||||||
|
| sed -e 's/^\\$$//' -e '/^$$/ d' -e '/:$$/ d' -e 's/$$/ :/' \
|
||||||
|
>> .deps/$(*F).P; \
|
||||||
|
rm .deps/$(*F).pp
|
||||||
|
|
||||||
|
%.lo: %.c
|
||||||
|
@echo '$(LTCOMPILE) -c $<'; \
|
||||||
|
$(LTCOMPILE) -Wp,-MD,.deps/$(*F).pp -c $<
|
||||||
|
@-sed -e 's/^\([^:]*\)\.o[ ]*:/\1.lo \1.o :/' \
|
||||||
|
< .deps/$(*F).pp > .deps/$(*F).P; \
|
||||||
|
tr ' ' '\012' < .deps/$(*F).pp \
|
||||||
|
| sed -e 's/^\\$$//' -e '/^$$/ d' -e '/:$$/ d' -e 's/$$/ :/' \
|
||||||
|
>> .deps/$(*F).P; \
|
||||||
|
rm -f .deps/$(*F).pp
|
||||||
|
info-am:
|
||||||
|
info: info-am
|
||||||
|
dvi-am:
|
||||||
|
dvi: dvi-am
|
||||||
|
check-am: all-am
|
||||||
|
check: check-am
|
||||||
|
installcheck-am:
|
||||||
|
installcheck: installcheck-am
|
||||||
|
install-exec-am: install-libLTLIBRARIES
|
||||||
|
install-exec: install-exec-am
|
||||||
|
|
||||||
|
install-data-am:
|
||||||
|
install-data: install-data-am
|
||||||
|
|
||||||
|
install-am: all-am
|
||||||
|
@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
|
||||||
|
install: install-am
|
||||||
|
uninstall-am: uninstall-libLTLIBRARIES
|
||||||
|
uninstall: uninstall-am
|
||||||
|
all-am: Makefile $(LTLIBRARIES)
|
||||||
|
all-redirect: all-am
|
||||||
|
install-strip:
|
||||||
|
$(MAKE) $(AM_MAKEFLAGS) AM_INSTALL_PROGRAM_FLAGS=-s install
|
||||||
|
installdirs:
|
||||||
|
$(mkinstalldirs) $(DESTDIR)$(libdir)
|
||||||
|
|
||||||
|
|
||||||
|
mostlyclean-generic:
|
||||||
|
|
||||||
|
clean-generic:
|
||||||
|
|
||||||
|
distclean-generic:
|
||||||
|
-rm -f Makefile $(CONFIG_CLEAN_FILES)
|
||||||
|
-rm -f config.cache config.log stamp-h stamp-h[0-9]*
|
||||||
|
|
||||||
|
maintainer-clean-generic:
|
||||||
|
mostlyclean-am: mostlyclean-libLTLIBRARIES mostlyclean-compile \
|
||||||
|
mostlyclean-libtool mostlyclean-tags mostlyclean-depend \
|
||||||
|
mostlyclean-generic
|
||||||
|
|
||||||
|
mostlyclean: mostlyclean-am
|
||||||
|
|
||||||
|
clean-am: clean-libLTLIBRARIES clean-compile clean-libtool clean-tags \
|
||||||
|
clean-depend clean-generic mostlyclean-am
|
||||||
|
|
||||||
|
clean: clean-am
|
||||||
|
|
||||||
|
distclean-am: distclean-libLTLIBRARIES distclean-compile \
|
||||||
|
distclean-libtool distclean-tags distclean-depend \
|
||||||
|
distclean-generic clean-am
|
||||||
|
-rm -f libtool
|
||||||
|
|
||||||
|
distclean: distclean-am
|
||||||
|
|
||||||
|
maintainer-clean-am: maintainer-clean-libLTLIBRARIES \
|
||||||
|
maintainer-clean-compile maintainer-clean-libtool \
|
||||||
|
maintainer-clean-tags maintainer-clean-depend \
|
||||||
|
maintainer-clean-generic distclean-am
|
||||||
|
@echo "This command is intended for maintainers to use;"
|
||||||
|
@echo "it deletes files that may require special tools to rebuild."
|
||||||
|
|
||||||
|
maintainer-clean: maintainer-clean-am
|
||||||
|
|
||||||
|
.PHONY: mostlyclean-libLTLIBRARIES distclean-libLTLIBRARIES \
|
||||||
|
clean-libLTLIBRARIES maintainer-clean-libLTLIBRARIES \
|
||||||
|
uninstall-libLTLIBRARIES install-libLTLIBRARIES mostlyclean-compile \
|
||||||
|
distclean-compile clean-compile maintainer-clean-compile \
|
||||||
|
mostlyclean-libtool distclean-libtool clean-libtool \
|
||||||
|
maintainer-clean-libtool tags mostlyclean-tags distclean-tags \
|
||||||
|
clean-tags maintainer-clean-tags distdir mostlyclean-depend \
|
||||||
|
distclean-depend clean-depend maintainer-clean-depend info-am info \
|
||||||
|
dvi-am dvi check check-am installcheck-am installcheck install-exec-am \
|
||||||
|
install-exec install-data-am install-data install-am install \
|
||||||
|
uninstall-am uninstall all-redirect all-am all installdirs \
|
||||||
|
mostlyclean-generic distclean-generic clean-generic \
|
||||||
|
maintainer-clean-generic clean mostlyclean distclean maintainer-clean
|
||||||
|
|
||||||
|
|
||||||
|
# Tell versions [3.59,3.63) of GNU make to not export all variables.
|
||||||
|
# Otherwise a system limit (for SysV at least) may be exceeded.
|
||||||
|
.NOEXPORT:
|
447
pgworker/pgworker/pg_worker.c
Normal file
447
pgworker/pgworker/pg_worker.c
Normal file
@ -0,0 +1,447 @@
|
|||||||
|
/*
|
||||||
|
Copyright (C) 2004, 2005 Wolfgang Hottgenroth
|
||||||
|
|
||||||
|
This file is part of smmapdfw-pgworker.
|
||||||
|
|
||||||
|
smmapdfw is free software; you can redistribute it and/or modify it
|
||||||
|
under the terms of the GNU General Public License as published by
|
||||||
|
the Free Software Foundation; either version 2 of the License, or
|
||||||
|
(at your option) any later version.
|
||||||
|
|
||||||
|
smmapdfw is distributed in the hope that it will be useful, but WITHOUT
|
||||||
|
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
|
||||||
|
or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
|
||||||
|
License for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU General Public License
|
||||||
|
along with smmapdfw. If not, write to the Free Software Foundation, 59
|
||||||
|
Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include <syslog.h>
|
||||||
|
#include <ctype.h>
|
||||||
|
|
||||||
|
#include <libpq-fe.h>
|
||||||
|
|
||||||
|
#include <containers_public.h>
|
||||||
|
|
||||||
|
#include "htmalloc.h"
|
||||||
|
#include "htbuffer.h"
|
||||||
|
#include "smmapd.h"
|
||||||
|
|
||||||
|
|
||||||
|
int pg_worker_init(cfgl_t *cfg, void **handle);
|
||||||
|
int pg_worker_destroy(void *handle);
|
||||||
|
int pg_worker_work_setup(void *handle, void **work_handle);
|
||||||
|
int pg_worker_work_destroy(void *handle, void *work_handle);
|
||||||
|
int pg_worker_work(void *handle, void *work_handle, char *input, htbuffer_t *output);
|
||||||
|
|
||||||
|
class_descriptor_t pgworker = {
|
||||||
|
"pgworker",
|
||||||
|
&pg_worker_init,
|
||||||
|
&pg_worker_destroy,
|
||||||
|
&pg_worker_work_setup,
|
||||||
|
&pg_worker_work,
|
||||||
|
&pg_worker_work_destroy
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
typedef struct pg_container_handle_s {
|
||||||
|
int counter;
|
||||||
|
cfgl_t *cfg;
|
||||||
|
char *sql_statement;
|
||||||
|
int param_cnt;
|
||||||
|
char *input_delimiter;
|
||||||
|
char *output_format_string;
|
||||||
|
char *dbhost;
|
||||||
|
char *dbname;
|
||||||
|
char *dbuser;
|
||||||
|
char *dbpass;
|
||||||
|
int allow_multiple_result_items;
|
||||||
|
char *multiple_result_item_separator;
|
||||||
|
int consider_many_items_as_failure;
|
||||||
|
} pg_container_handle_t;
|
||||||
|
|
||||||
|
typedef struct pg_worker_handle_s {
|
||||||
|
int counter;
|
||||||
|
pg_container_handle_t *pch;
|
||||||
|
char **param_array; /* pre-allocated space for separated params */
|
||||||
|
PGconn *dbconn;
|
||||||
|
} pg_worker_handle_t;
|
||||||
|
|
||||||
|
static int process(pg_worker_handle_t *pwh, char *input, htbuffer_t *output);
|
||||||
|
static int count_params(const char *stmt);
|
||||||
|
static int break_input(pg_worker_handle_t *pwh, char *input);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
int debug = 0;
|
||||||
|
|
||||||
|
|
||||||
|
#define MAX_PARAM_DIGIT_NUM 2
|
||||||
|
#define MAX_PARAM_COUNT 99
|
||||||
|
static int count_params(const char *stmt) {
|
||||||
|
const char *paramPtr = stmt;
|
||||||
|
const char *spacePtr;
|
||||||
|
char numBuf[MAX_PARAM_DIGIT_NUM + 1];
|
||||||
|
char checkArray[MAX_PARAM_COUNT];
|
||||||
|
int i, x, cnt=0, done, res=0;
|
||||||
|
|
||||||
|
memset(checkArray, 0, MAX_PARAM_COUNT);
|
||||||
|
|
||||||
|
if (debug) syslog(LOG_DEBUG, "pgworker count_params: start %s", paramPtr);
|
||||||
|
while ((paramPtr = strchr(paramPtr, '$')) && (res == 0)) {
|
||||||
|
paramPtr++;
|
||||||
|
if (debug) syslog(LOG_DEBUG, "pgworker count_params: step %s", paramPtr);
|
||||||
|
for (i = 0, done = 0; (i <= MAX_PARAM_DIGIT_NUM) && !done; i++) {
|
||||||
|
if (isdigit(*paramPtr)) {
|
||||||
|
numBuf[i] = *paramPtr;
|
||||||
|
if (debug) syslog(LOG_DEBUG, "pgworker count_params: i=%d, nb=%c",
|
||||||
|
i, numBuf[i]);
|
||||||
|
paramPtr++;
|
||||||
|
} else {
|
||||||
|
numBuf[i] = '\0';
|
||||||
|
if (debug) syslog(LOG_DEBUG, "pgworker count_params: end, i=%d, nb=%s",
|
||||||
|
i, numBuf);
|
||||||
|
x = atoi(numBuf);
|
||||||
|
if (x == 0) {
|
||||||
|
syslog(LOG_ERR, "pgworker count_params: failure, x=0");
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
if (x >= MAX_PARAM_COUNT) {
|
||||||
|
syslog(LOG_ERR, "pgworker count_params: failure, x > MAX_PARAM_COUNT");
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
checkArray[x-1] = 1;
|
||||||
|
cnt++;
|
||||||
|
done = 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (!done) {
|
||||||
|
syslog(LOG_ERR, "pgworker count_params: not done, failure");
|
||||||
|
res = -1;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (done) {
|
||||||
|
for (i = 0; (i <= MAX_PARAM_COUNT) && checkArray[i]; i++);
|
||||||
|
if (i != cnt) {
|
||||||
|
syslog(LOG_ERR,
|
||||||
|
"pgworker count_params: none continuous sequence of param numbers, failure");
|
||||||
|
res = -1;
|
||||||
|
} else {
|
||||||
|
if (debug) syslog(LOG_DEBUG, "pgworker count_params: %d params", cnt);
|
||||||
|
res = cnt;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (debug) syslog(LOG_DEBUG, "pgworker count_params: finish, res=%d", res);
|
||||||
|
return res;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
int pg_worker_init(cfgl_t *cfg, void **handle) {
|
||||||
|
pg_container_handle_t *pch =
|
||||||
|
(pg_container_handle_t*)htmalloc(sizeof(pg_container_handle_t));
|
||||||
|
pch->counter = 0;
|
||||||
|
pch->cfg = cfg;
|
||||||
|
debug = atoi(findcfglx(pch->cfg, "debug", "0"));
|
||||||
|
pch->sql_statement = findcfgl(pch->cfg, "sql_statement");
|
||||||
|
if (pch->sql_statement == NULL) {
|
||||||
|
syslog(LOG_ERR, "pgworker pg_worker_init: missing SQL statement");
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
pch->param_cnt = count_params(pch->sql_statement);
|
||||||
|
if (pch->param_cnt <= 0)
|
||||||
|
return -1;
|
||||||
|
pch->input_delimiter = findcfgl(pch->cfg, "input_delimiter");
|
||||||
|
if ((pch->param_cnt > 1) && (pch->input_delimiter == NULL)) {
|
||||||
|
syslog(LOG_ERR,
|
||||||
|
"pgworker pg_worker_init: more than one parameter but no input_delimiter given");
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
pch->output_format_string = findcfgl(pch->cfg, "output_format_string");
|
||||||
|
pch->dbhost = findcfgl(pch->cfg, "dbhost");
|
||||||
|
if (pch->dbhost == NULL) {
|
||||||
|
syslog(LOG_ERR, "pgworker pg_worker_init: missing dbhost");
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
pch->dbname = findcfgl(pch->cfg, "dbname");
|
||||||
|
if (pch->dbname == NULL) {
|
||||||
|
syslog(LOG_ERR, "pgworker pg_worker_init: missing dbname");
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
pch->dbuser = findcfgl(pch->cfg, "dbuser");
|
||||||
|
if (pch->dbuser == NULL) {
|
||||||
|
syslog(LOG_ERR, "pgworker pg_worker_init: missing dbuser");
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
pch->dbpass = findcfgl(pch->cfg, "dbpass");
|
||||||
|
if (pch->dbpass == NULL) {
|
||||||
|
syslog(LOG_ERR, "pgworker pg_worker_init: missing dbpass");
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
pch->allow_multiple_result_items = atoi(findcfglx(pch->cfg, "allow_multiple_result_items", "0"));
|
||||||
|
pch->multiple_result_item_separator = findcfgl(pch->cfg, "multiple_result_item_separator");
|
||||||
|
pch->consider_many_items_as_failure = atoi(findcfglx(pch->cfg, "consider_many_items_as_failure", "0"));
|
||||||
|
if (pch->allow_multiple_result_items && pch->consider_many_items_as_failure) {
|
||||||
|
syslog(LOG_ERR, "pgworker pg_worker_init: allow_multiple_result_items and consider_many_items_as failure exclude each other");
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
if (pch->allow_multiple_result_items && ! pch->multiple_result_item_separator) {
|
||||||
|
syslog(LOG_ERR, "pgworker pg_worker_init: multiple result items allowed but no separator given");
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
*handle = pch;
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
int pg_worker_destroy(void *handle) {
|
||||||
|
pg_container_handle_t *pch = (pg_container_handle_t*)handle;
|
||||||
|
free(pch);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
int pg_worker_work_setup(void *handle, void **work_handle) {
|
||||||
|
pg_worker_handle_t *pwh =
|
||||||
|
(pg_worker_handle_t*)htmalloc(sizeof(pg_worker_handle_t));
|
||||||
|
pwh->counter = 0;
|
||||||
|
pwh->pch = handle;
|
||||||
|
*work_handle = pwh;
|
||||||
|
pwh->param_array = (char **) htmalloc(sizeof(char*) * pwh->pch->param_cnt);
|
||||||
|
syslog(LOG_DEBUG, "pgworker c=%p w=%p", pwh->pch, pwh);
|
||||||
|
|
||||||
|
pwh->dbconn = PQsetdbLogin(pwh->pch->dbhost,
|
||||||
|
NULL,
|
||||||
|
NULL,
|
||||||
|
NULL,
|
||||||
|
pwh->pch->dbname,
|
||||||
|
pwh->pch->dbuser,
|
||||||
|
pwh->pch->dbpass);
|
||||||
|
syslog(LOG_DEBUG, "pgworker (%p) pg_worker_work_setup: dbconn=%p",
|
||||||
|
pwh, pwh->dbconn);
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
int pg_worker_work_destroy(void *handle, void *work_handle) {
|
||||||
|
pg_worker_handle_t *pwh = (pg_worker_handle_t*) work_handle;
|
||||||
|
syslog(LOG_DEBUG, "pgworker (%p) pg_worker_destroy: freeing the worker handle",
|
||||||
|
pwh);
|
||||||
|
PQfinish(pwh->dbconn);
|
||||||
|
free(pwh->param_array);
|
||||||
|
free(pwh);
|
||||||
|
}
|
||||||
|
|
||||||
|
int pg_worker_work(void *handle, void *work_handle, char *input, htbuffer_t *output) {
|
||||||
|
int res;
|
||||||
|
pg_worker_handle_t *pwh = (pg_worker_handle_t*) work_handle;
|
||||||
|
|
||||||
|
syslog(LOG_DEBUG, "pgworker (%p) pg_worker_work entered", pwh);
|
||||||
|
|
||||||
|
res = process(pwh, input, output);
|
||||||
|
|
||||||
|
return res;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
static int break_input(pg_worker_handle_t *pwh, char *input) {
|
||||||
|
char *param, *nextptr;
|
||||||
|
int cnt=0;
|
||||||
|
|
||||||
|
if (pwh->pch->input_delimiter == NULL) {
|
||||||
|
syslog(LOG_DEBUG, "pgworker (%p) break_input: input is %s", pwh, input);
|
||||||
|
pwh->param_array[0] = input;
|
||||||
|
} else {
|
||||||
|
nextptr = input;
|
||||||
|
while (NULL != (param = strstr(nextptr, pwh->pch->input_delimiter))) {
|
||||||
|
*param = '\0';
|
||||||
|
if (cnt >= pwh->pch->param_cnt) {
|
||||||
|
syslog(LOG_ERR, "pgworker (%p) break_input: too much parameters", pwh);
|
||||||
|
return SMM_ILLEGAL_INPUT;
|
||||||
|
}
|
||||||
|
pwh->param_array[cnt] = nextptr;
|
||||||
|
cnt++;
|
||||||
|
syslog(LOG_DEBUG, "pgworker (%p) break_input: param found (cnt=%d): {%s}",
|
||||||
|
pwh, cnt, nextptr);
|
||||||
|
nextptr = param + strlen(pwh->pch->input_delimiter);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* last */
|
||||||
|
if (cnt >= pwh->pch->param_cnt) {
|
||||||
|
syslog(LOG_ERR, "pgworker (%p) break_input: too much parameters", pwh);
|
||||||
|
return SMM_ILLEGAL_INPUT;
|
||||||
|
}
|
||||||
|
pwh->param_array[cnt] = nextptr;
|
||||||
|
cnt++;
|
||||||
|
syslog(LOG_DEBUG, "pgworker (%p) break_input: last param (cnt=%d): {%s}",
|
||||||
|
pwh, cnt, nextptr);
|
||||||
|
|
||||||
|
if (cnt < pwh->pch->param_cnt) {
|
||||||
|
syslog(LOG_ERR, "pgworker (%p) break_input: too few parameters", pwh);
|
||||||
|
return SMM_ILLEGAL_INPUT;
|
||||||
|
}
|
||||||
|
|
||||||
|
syslog(LOG_DEBUG, "pgworker (%p) break_input: end", pwh);
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
#define MAX_RESULT_DIGIT_NUM 2
|
||||||
|
static int populate_output_format(pg_worker_handle_t *pwh, PGresult *pgr,
|
||||||
|
htbuffer_t *output, int tuple_num) {
|
||||||
|
const char *formatPtr = pwh->pch->output_format_string;
|
||||||
|
const char *tmpPtr = formatPtr;
|
||||||
|
char numBuf[MAX_PARAM_DIGIT_NUM + 1];
|
||||||
|
char *s;
|
||||||
|
int i, x, cnt=0, done, res=0;
|
||||||
|
|
||||||
|
syslog(LOG_DEBUG, "pgworker (%p) populate_output_format OUTPUT: %s",
|
||||||
|
pwh, output->buf);
|
||||||
|
|
||||||
|
|
||||||
|
while ((formatPtr = strchr(formatPtr, '$')) && (res == 0)) {
|
||||||
|
syslog(LOG_DEBUG, "pgworker (%p) populate_output_format tmpPtr: %s, formatPtr: %s, d: %i",
|
||||||
|
pwh, tmpPtr, formatPtr, formatPtr - tmpPtr);
|
||||||
|
htbuffer_strncat(output, tmpPtr, formatPtr - tmpPtr);
|
||||||
|
syslog(LOG_DEBUG, "pgworker (%p) populate_output_format OUTPUT: %s",
|
||||||
|
pwh, output->buf);
|
||||||
|
formatPtr++;
|
||||||
|
for (i = 0, done = 0; (i <= MAX_RESULT_DIGIT_NUM) && !done; i++) {
|
||||||
|
if (isdigit(*formatPtr)) {
|
||||||
|
numBuf[i] = *formatPtr;
|
||||||
|
formatPtr++;
|
||||||
|
tmpPtr = formatPtr;
|
||||||
|
} else {
|
||||||
|
numBuf[i] = '\0';
|
||||||
|
x = atoi(numBuf) - 1;
|
||||||
|
if (x > PQnfields(pgr)) {
|
||||||
|
syslog(LOG_ERR,
|
||||||
|
"pgworker (%p) populate_output_format param num too high");
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
s = PQgetvalue(pgr, tuple_num, x);
|
||||||
|
syslog(LOG_DEBUG, "pgworker (%p) populate_output_format OUTPUT PARAM: %s",
|
||||||
|
pwh, s);
|
||||||
|
htbuffer_strcat(output, s);
|
||||||
|
done = 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (!done) {
|
||||||
|
syslog(LOG_ERR, "pgworker (%p) populate_outputformat, not done, failure",
|
||||||
|
pwh);
|
||||||
|
htbuffer_strcpy(output, "");
|
||||||
|
res = SMM_ILLEGAL_INPUT;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (done == 1) {
|
||||||
|
/* reminds */
|
||||||
|
htbuffer_strncat(output, tmpPtr, formatPtr - tmpPtr);
|
||||||
|
syslog(LOG_DEBUG, "OUTPUT: %s", output->buf);
|
||||||
|
}
|
||||||
|
|
||||||
|
return res;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
static int process(pg_worker_handle_t *pwh, char *input, htbuffer_t *output) {
|
||||||
|
int i, j, t, f, res;
|
||||||
|
char *s;
|
||||||
|
PGresult *pgr;
|
||||||
|
|
||||||
|
|
||||||
|
if (0 == (res = break_input(pwh, input))) {
|
||||||
|
pgr = PQexecParams(pwh->dbconn,
|
||||||
|
pwh->pch->sql_statement,
|
||||||
|
pwh->pch->param_cnt,
|
||||||
|
NULL,
|
||||||
|
(const char * const *) pwh->param_array,
|
||||||
|
NULL,
|
||||||
|
NULL,
|
||||||
|
0);
|
||||||
|
syslog(LOG_DEBUG, "pgworker (%p) process pgr=%p", pwh, pgr);
|
||||||
|
|
||||||
|
t = PQntuples(pgr);
|
||||||
|
syslog(LOG_DEBUG, "pgworker (%p) process PQntuples=%d", pwh, t);
|
||||||
|
|
||||||
|
f = PQnfields(pgr);
|
||||||
|
syslog(LOG_DEBUG, "pgworker (%p) process PQnfields=%d", pwh, f);
|
||||||
|
|
||||||
|
if (t == 0) {
|
||||||
|
syslog(LOG_DEBUG, "pgworker (%p) process: no output", pwh);
|
||||||
|
res = SMM_NOT_FOUND_NOK;
|
||||||
|
} else if ((t > 1) && pwh->pch->consider_many_items_as_failure) {
|
||||||
|
syslog(LOG_DEBUG, "pgworker (%p) process: many items, considered as failure", pwh);
|
||||||
|
res = SMM_NOT_FOUND_NOK;
|
||||||
|
} else if (t > 0) {
|
||||||
|
t = (pwh->pch->allow_multiple_result_items) ? t : 1;
|
||||||
|
for (i = 0; i < t; i++) {
|
||||||
|
if (i > 0)
|
||||||
|
htbuffer_strcat(output, pwh->pch->multiple_result_item_separator);
|
||||||
|
if (NULL == pwh->pch->output_format_string) {
|
||||||
|
if (f > 1)
|
||||||
|
syslog(LOG_WARNING,
|
||||||
|
"pgworker (%p) process: more than one result fields (%d) but no format string",
|
||||||
|
pwh, f);
|
||||||
|
htbuffer_strcat(output, PQgetvalue(pgr, i, 0));
|
||||||
|
res = SMM_OK;
|
||||||
|
} else {
|
||||||
|
if (0 == (res = populate_output_format(pwh, pgr, output, i))) {
|
||||||
|
syslog(LOG_DEBUG, "pgworker (%p) process: output %s", pwh, output->buf);
|
||||||
|
res = SMM_OK;
|
||||||
|
} else {
|
||||||
|
syslog(LOG_ERR, "pgworker (%p) process failure in population of output", pwh);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
PQclear(pgr);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
return res;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
A:
|
||||||
|
- An instance of the pgworker will get an SQL-statement.
|
||||||
|
- The SQL-statement may contain multiple parameter.
|
||||||
|
- A separator token to be used in the input from sendmail will be defined.
|
||||||
|
- The SQL-statement contains one result parameter.
|
||||||
|
- A cache file can be defined.
|
||||||
|
|
||||||
|
B:
|
||||||
|
- Multiple instances of the pgworker will get exactly the same SQL-statement.
|
||||||
|
- The SQL-statement may contain multiple parameter.
|
||||||
|
- A separator token to be used in the input from sendmail will be defined.
|
||||||
|
- The SQL-statement contains multiple result parameters, usually as many
|
||||||
|
as instances are using it.
|
||||||
|
- A position argument to identify the result parameter for the particular
|
||||||
|
instance will be defined.
|
||||||
|
- If a cache file should be used, the same cache file can be used of
|
||||||
|
instances using the same SQL-statement.
|
||||||
|
|
||||||
|
C:
|
||||||
|
- As B, but for each instance a list of position arguments can be given
|
||||||
|
to return multiple output results.
|
||||||
|
- A separator token for the different result items must be given.
|
||||||
|
|
||||||
|
D:
|
||||||
|
- As C, but instead of a separator token a format string must be given.
|
||||||
|
|
||||||
|
E:
|
||||||
|
- As D, but instead of given output positions in a separate list, the
|
||||||
|
position numbers will be used directly in the format string.
|
||||||
|
*/
|
@ -1 +1 @@
|
|||||||
#AUTHOR# <#EMAIL#>
|
Wolfgang Hottgenroth <woho@hottis.de>
|
||||||
|
@ -0,0 +1 @@
|
|||||||
|
2004-11-09: 0.94: first public release
|
@ -0,0 +1 @@
|
|||||||
|
See doc/smmapdfw.info please.
|
@ -1,2 +1,3 @@
|
|||||||
SUBDIRS = libsmmapdfw smmapd verify_worker test_worker cyrus_worker
|
SUBDIRS = libsmmapdfw verify_worker test_worker cyrus_worker recpverify_worker rateconn_worker smmapd doc m4
|
||||||
|
|
||||||
|
|
||||||
|
@ -1,6 +1,8 @@
|
|||||||
# Makefile.in generated automatically by automake 1.4-p6 from Makefile.am
|
# Makefile.in generated by automake 1.9.6 from Makefile.am.
|
||||||
|
# @configure_input@
|
||||||
|
|
||||||
# Copyright (C) 1994, 1995-8, 1999, 2001 Free Software Foundation, Inc.
|
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
|
||||||
|
# 2003, 2004, 2005 Free Software Foundation, Inc.
|
||||||
# This Makefile.in is free software; the Free Software Foundation
|
# This Makefile.in is free software; the Free Software Foundation
|
||||||
# gives unlimited permission to copy and/or distribute it,
|
# gives unlimited permission to copy and/or distribute it,
|
||||||
# with or without modifications, as long as this notice is preserved.
|
# with or without modifications, as long as this notice is preserved.
|
||||||
@ -10,142 +12,237 @@
|
|||||||
# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
|
# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
|
||||||
# PARTICULAR PURPOSE.
|
# PARTICULAR PURPOSE.
|
||||||
|
|
||||||
|
@SET_MAKE@
|
||||||
SHELL = @SHELL@
|
|
||||||
|
|
||||||
srcdir = @srcdir@
|
srcdir = @srcdir@
|
||||||
top_srcdir = @top_srcdir@
|
top_srcdir = @top_srcdir@
|
||||||
VPATH = @srcdir@
|
VPATH = @srcdir@
|
||||||
prefix = @prefix@
|
|
||||||
exec_prefix = @exec_prefix@
|
|
||||||
|
|
||||||
bindir = @bindir@
|
|
||||||
sbindir = @sbindir@
|
|
||||||
libexecdir = @libexecdir@
|
|
||||||
datadir = @datadir@
|
|
||||||
sysconfdir = @sysconfdir@
|
|
||||||
sharedstatedir = @sharedstatedir@
|
|
||||||
localstatedir = @localstatedir@
|
|
||||||
libdir = @libdir@
|
|
||||||
infodir = @infodir@
|
|
||||||
mandir = @mandir@
|
|
||||||
includedir = @includedir@
|
|
||||||
oldincludedir = /usr/include
|
|
||||||
|
|
||||||
DESTDIR =
|
|
||||||
|
|
||||||
pkgdatadir = $(datadir)/@PACKAGE@
|
pkgdatadir = $(datadir)/@PACKAGE@
|
||||||
pkglibdir = $(libdir)/@PACKAGE@
|
pkglibdir = $(libdir)/@PACKAGE@
|
||||||
pkgincludedir = $(includedir)/@PACKAGE@
|
pkgincludedir = $(includedir)/@PACKAGE@
|
||||||
|
|
||||||
top_builddir = .
|
top_builddir = .
|
||||||
|
am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
|
||||||
ACLOCAL = @ACLOCAL@
|
|
||||||
AUTOCONF = @AUTOCONF@
|
|
||||||
AUTOMAKE = @AUTOMAKE@
|
|
||||||
AUTOHEADER = @AUTOHEADER@
|
|
||||||
|
|
||||||
INSTALL = @INSTALL@
|
INSTALL = @INSTALL@
|
||||||
INSTALL_PROGRAM = @INSTALL_PROGRAM@ $(AM_INSTALL_PROGRAM_FLAGS)
|
install_sh_DATA = $(install_sh) -c -m 644
|
||||||
INSTALL_DATA = @INSTALL_DATA@
|
install_sh_PROGRAM = $(install_sh) -c
|
||||||
INSTALL_SCRIPT = @INSTALL_SCRIPT@
|
install_sh_SCRIPT = $(install_sh) -c
|
||||||
transform = @program_transform_name@
|
INSTALL_HEADER = $(INSTALL_DATA)
|
||||||
|
transform = $(program_transform_name)
|
||||||
NORMAL_INSTALL = :
|
NORMAL_INSTALL = :
|
||||||
PRE_INSTALL = :
|
PRE_INSTALL = :
|
||||||
POST_INSTALL = :
|
POST_INSTALL = :
|
||||||
NORMAL_UNINSTALL = :
|
NORMAL_UNINSTALL = :
|
||||||
PRE_UNINSTALL = :
|
PRE_UNINSTALL = :
|
||||||
POST_UNINSTALL = :
|
POST_UNINSTALL = :
|
||||||
host_alias = @host_alias@
|
build_triplet = @build@
|
||||||
host_triplet = @host@
|
host_triplet = @host@
|
||||||
|
DIST_COMMON = README $(am__configure_deps) $(srcdir)/Makefile.am \
|
||||||
|
$(srcdir)/Makefile.in $(srcdir)/config.h.in \
|
||||||
|
$(top_srcdir)/configure AUTHORS COPYING ChangeLog INSTALL NEWS \
|
||||||
|
config.guess config.sub depcomp install-sh ltmain.sh missing \
|
||||||
|
mkinstalldirs
|
||||||
|
subdir = .
|
||||||
|
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
|
||||||
|
am__aclocal_m4_deps = $(top_srcdir)/configure.ac
|
||||||
|
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
|
||||||
|
$(ACLOCAL_M4)
|
||||||
|
am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \
|
||||||
|
configure.lineno configure.status.lineno
|
||||||
|
mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
|
||||||
|
CONFIG_HEADER = config.h
|
||||||
|
CONFIG_CLEAN_FILES =
|
||||||
|
SOURCES =
|
||||||
|
DIST_SOURCES =
|
||||||
|
RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
|
||||||
|
html-recursive info-recursive install-data-recursive \
|
||||||
|
install-exec-recursive install-info-recursive \
|
||||||
|
install-recursive installcheck-recursive installdirs-recursive \
|
||||||
|
pdf-recursive ps-recursive uninstall-info-recursive \
|
||||||
|
uninstall-recursive
|
||||||
|
ETAGS = etags
|
||||||
|
CTAGS = ctags
|
||||||
|
DIST_SUBDIRS = $(SUBDIRS)
|
||||||
|
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
|
||||||
|
distdir = $(PACKAGE)-$(VERSION)
|
||||||
|
top_distdir = $(distdir)
|
||||||
|
am__remove_distdir = \
|
||||||
|
{ test ! -d $(distdir) \
|
||||||
|
|| { find $(distdir) -type d ! -perm -200 -exec chmod u+w {} ';' \
|
||||||
|
&& rm -fr $(distdir); }; }
|
||||||
|
DIST_ARCHIVES = $(distdir).tar.gz
|
||||||
|
GZIP_ENV = --best
|
||||||
|
distuninstallcheck_listfiles = find . -type f -print
|
||||||
|
distcleancheck_listfiles = find . -type f -print
|
||||||
|
ACLOCAL = @ACLOCAL@
|
||||||
|
AMDEP_FALSE = @AMDEP_FALSE@
|
||||||
|
AMDEP_TRUE = @AMDEP_TRUE@
|
||||||
|
AMTAR = @AMTAR@
|
||||||
AR = @AR@
|
AR = @AR@
|
||||||
AS = @AS@
|
AUTOCONF = @AUTOCONF@
|
||||||
|
AUTOHEADER = @AUTOHEADER@
|
||||||
|
AUTOMAKE = @AUTOMAKE@
|
||||||
|
AWK = @AWK@
|
||||||
BDB_LIBS = @BDB_LIBS@
|
BDB_LIBS = @BDB_LIBS@
|
||||||
CC = @CC@
|
CC = @CC@
|
||||||
|
CCDEPMODE = @CCDEPMODE@
|
||||||
|
CFLAGS = @CFLAGS@
|
||||||
|
CPP = @CPP@
|
||||||
|
CPPFLAGS = @CPPFLAGS@
|
||||||
CXX = @CXX@
|
CXX = @CXX@
|
||||||
CXXCPP = @CXXCPP@
|
CXXCPP = @CXXCPP@
|
||||||
DLLTOOL = @DLLTOOL@
|
CXXDEPMODE = @CXXDEPMODE@
|
||||||
|
CXXFLAGS = @CXXFLAGS@
|
||||||
|
CYGPATH_W = @CYGPATH_W@
|
||||||
|
DEFS = @DEFS@
|
||||||
|
DEPDIR = @DEPDIR@
|
||||||
ECHO = @ECHO@
|
ECHO = @ECHO@
|
||||||
|
ECHO_C = @ECHO_C@
|
||||||
|
ECHO_N = @ECHO_N@
|
||||||
|
ECHO_T = @ECHO_T@
|
||||||
EGREP = @EGREP@
|
EGREP = @EGREP@
|
||||||
EXEEXT = @EXEEXT@
|
EXEEXT = @EXEEXT@
|
||||||
F77 = @F77@
|
F77 = @F77@
|
||||||
GCJ = @GCJ@
|
FFLAGS = @FFLAGS@
|
||||||
GCJFLAGS = @GCJFLAGS@
|
GREP = @GREP@
|
||||||
HAVE_LIB = @HAVE_LIB@
|
INSTALL_DATA = @INSTALL_DATA@
|
||||||
LIB = @LIB@
|
INSTALL_PROGRAM = @INSTALL_PROGRAM@
|
||||||
|
INSTALL_SCRIPT = @INSTALL_SCRIPT@
|
||||||
|
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
|
||||||
|
LDFLAGS = @LDFLAGS@
|
||||||
|
LIBOBJS = @LIBOBJS@
|
||||||
|
LIBS = @LIBS@
|
||||||
LIBTOOL = @LIBTOOL@
|
LIBTOOL = @LIBTOOL@
|
||||||
LN_S = @LN_S@
|
LN_S = @LN_S@
|
||||||
LTLIB = @LTLIB@
|
LTLIBOBJS = @LTLIBOBJS@
|
||||||
MAINT = @MAINT@
|
MAINT = @MAINT@
|
||||||
|
MAINTAINER_MODE_FALSE = @MAINTAINER_MODE_FALSE@
|
||||||
|
MAINTAINER_MODE_TRUE = @MAINTAINER_MODE_TRUE@
|
||||||
MAKEINFO = @MAKEINFO@
|
MAKEINFO = @MAKEINFO@
|
||||||
OBJDUMP = @OBJDUMP@
|
|
||||||
OBJEXT = @OBJEXT@
|
OBJEXT = @OBJEXT@
|
||||||
PACKAGE = @PACKAGE@
|
PACKAGE = @PACKAGE@
|
||||||
|
PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
|
||||||
|
PACKAGE_NAME = @PACKAGE_NAME@
|
||||||
|
PACKAGE_STRING = @PACKAGE_STRING@
|
||||||
|
PACKAGE_TARNAME = @PACKAGE_TARNAME@
|
||||||
|
PACKAGE_VERSION = @PACKAGE_VERSION@
|
||||||
|
PATH_SEPARATOR = @PATH_SEPARATOR@
|
||||||
RANLIB = @RANLIB@
|
RANLIB = @RANLIB@
|
||||||
RC = @RC@
|
SED = @SED@
|
||||||
|
SET_MAKE = @SET_MAKE@
|
||||||
|
SHELL = @SHELL@
|
||||||
STRIP = @STRIP@
|
STRIP = @STRIP@
|
||||||
VERSION = @VERSION@
|
VERSION = @VERSION@
|
||||||
|
ac_ct_CC = @ac_ct_CC@
|
||||||
|
ac_ct_CXX = @ac_ct_CXX@
|
||||||
|
ac_ct_F77 = @ac_ct_F77@
|
||||||
|
am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
|
||||||
|
am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
|
||||||
|
am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@
|
||||||
|
am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@
|
||||||
|
am__include = @am__include@
|
||||||
|
am__leading_dot = @am__leading_dot@
|
||||||
|
am__quote = @am__quote@
|
||||||
|
am__tar = @am__tar@
|
||||||
|
am__untar = @am__untar@
|
||||||
|
bindir = @bindir@
|
||||||
|
build = @build@
|
||||||
|
build_alias = @build_alias@
|
||||||
|
build_cpu = @build_cpu@
|
||||||
|
build_os = @build_os@
|
||||||
|
build_vendor = @build_vendor@
|
||||||
|
datadir = @datadir@
|
||||||
|
datarootdir = @datarootdir@
|
||||||
|
docdir = @docdir@
|
||||||
|
dvidir = @dvidir@
|
||||||
|
exec_prefix = @exec_prefix@
|
||||||
|
host = @host@
|
||||||
|
host_alias = @host_alias@
|
||||||
|
host_cpu = @host_cpu@
|
||||||
|
host_os = @host_os@
|
||||||
|
host_vendor = @host_vendor@
|
||||||
|
htmldir = @htmldir@
|
||||||
|
includedir = @includedir@
|
||||||
|
infodir = @infodir@
|
||||||
|
install_sh = @install_sh@
|
||||||
|
libdir = @libdir@
|
||||||
|
libexecdir = @libexecdir@
|
||||||
|
localedir = @localedir@
|
||||||
|
localstatedir = @localstatedir@
|
||||||
|
mandir = @mandir@
|
||||||
|
mkdir_p = @mkdir_p@
|
||||||
|
oldincludedir = @oldincludedir@
|
||||||
|
pdfdir = @pdfdir@
|
||||||
|
prefix = @prefix@
|
||||||
|
program_transform_name = @program_transform_name@
|
||||||
|
psdir = @psdir@
|
||||||
|
sbindir = @sbindir@
|
||||||
|
sharedstatedir = @sharedstatedir@
|
||||||
|
sysconfdir = @sysconfdir@
|
||||||
|
target_alias = @target_alias@
|
||||||
|
SUBDIRS = libsmmapdfw verify_worker test_worker cyrus_worker recpverify_worker rateconn_worker smmapd doc m4
|
||||||
|
all: config.h
|
||||||
|
$(MAKE) $(AM_MAKEFLAGS) all-recursive
|
||||||
|
|
||||||
SUBDIRS = libsmmapdfw smmapd verify_worker test_worker cyrus_worker
|
|
||||||
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
|
|
||||||
mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
|
|
||||||
CONFIG_HEADER = config.h
|
|
||||||
CONFIG_CLEAN_FILES =
|
|
||||||
DIST_COMMON = README ./stamp-h.in AUTHORS COPYING ChangeLog INSTALL \
|
|
||||||
Makefile.am Makefile.in NEWS aclocal.m4 config.guess config.h.in \
|
|
||||||
config.sub configure configure.ac install-sh ltmain.sh missing \
|
|
||||||
mkinstalldirs
|
|
||||||
|
|
||||||
|
|
||||||
DISTFILES = $(DIST_COMMON) $(SOURCES) $(HEADERS) $(TEXINFOS) $(EXTRA_DIST)
|
|
||||||
|
|
||||||
TAR = tar
|
|
||||||
GZIP_ENV = --best
|
|
||||||
all: all-redirect
|
|
||||||
.SUFFIXES:
|
.SUFFIXES:
|
||||||
$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ Makefile.am $(top_srcdir)/configure.ac $(ACLOCAL_M4)
|
am--refresh:
|
||||||
cd $(top_srcdir) && $(AUTOMAKE) --gnu Makefile
|
@:
|
||||||
|
$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps)
|
||||||
|
@for dep in $?; do \
|
||||||
|
case '$(am__configure_deps)' in \
|
||||||
|
*$$dep*) \
|
||||||
|
echo ' cd $(srcdir) && $(AUTOMAKE) --gnu '; \
|
||||||
|
cd $(srcdir) && $(AUTOMAKE) --gnu \
|
||||||
|
&& exit 0; \
|
||||||
|
exit 1;; \
|
||||||
|
esac; \
|
||||||
|
done; \
|
||||||
|
echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu Makefile'; \
|
||||||
|
cd $(top_srcdir) && \
|
||||||
|
$(AUTOMAKE) --gnu Makefile
|
||||||
|
.PRECIOUS: Makefile
|
||||||
|
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
|
||||||
|
@case '$?' in \
|
||||||
|
*config.status*) \
|
||||||
|
echo ' $(SHELL) ./config.status'; \
|
||||||
|
$(SHELL) ./config.status;; \
|
||||||
|
*) \
|
||||||
|
echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe)'; \
|
||||||
|
cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe);; \
|
||||||
|
esac;
|
||||||
|
|
||||||
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status $(BUILT_SOURCES)
|
$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
|
||||||
cd $(top_builddir) \
|
|
||||||
&& CONFIG_FILES=$@ CONFIG_HEADERS= $(SHELL) ./config.status
|
|
||||||
|
|
||||||
$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ configure.ac
|
|
||||||
cd $(srcdir) && $(ACLOCAL)
|
|
||||||
|
|
||||||
config.status: $(srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
|
|
||||||
$(SHELL) ./config.status --recheck
|
$(SHELL) ./config.status --recheck
|
||||||
$(srcdir)/configure: @MAINTAINER_MODE_TRUE@$(srcdir)/configure.ac $(ACLOCAL_M4) $(CONFIGURE_DEPENDENCIES)
|
|
||||||
|
$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
|
||||||
cd $(srcdir) && $(AUTOCONF)
|
cd $(srcdir) && $(AUTOCONF)
|
||||||
|
$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
|
||||||
|
cd $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS)
|
||||||
|
|
||||||
config.h: stamp-h
|
config.h: stamp-h1
|
||||||
@if test ! -f $@; then \
|
@if test ! -f $@; then \
|
||||||
rm -f stamp-h; \
|
rm -f stamp-h1; \
|
||||||
$(MAKE) stamp-h; \
|
$(MAKE) stamp-h1; \
|
||||||
else :; fi
|
else :; fi
|
||||||
stamp-h: $(srcdir)/config.h.in $(top_builddir)/config.status
|
|
||||||
cd $(top_builddir) \
|
stamp-h1: $(srcdir)/config.h.in $(top_builddir)/config.status
|
||||||
&& CONFIG_FILES= CONFIG_HEADERS=config.h \
|
@rm -f stamp-h1
|
||||||
$(SHELL) ./config.status
|
cd $(top_builddir) && $(SHELL) ./config.status config.h
|
||||||
@echo timestamp > stamp-h 2> /dev/null
|
$(srcdir)/config.h.in: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
|
||||||
$(srcdir)/config.h.in: @MAINTAINER_MODE_TRUE@$(srcdir)/stamp-h.in
|
|
||||||
@if test ! -f $@; then \
|
|
||||||
rm -f $(srcdir)/stamp-h.in; \
|
|
||||||
$(MAKE) $(srcdir)/stamp-h.in; \
|
|
||||||
else :; fi
|
|
||||||
$(srcdir)/stamp-h.in: $(top_srcdir)/configure.ac $(ACLOCAL_M4)
|
|
||||||
cd $(top_srcdir) && $(AUTOHEADER)
|
cd $(top_srcdir) && $(AUTOHEADER)
|
||||||
@echo timestamp > $(srcdir)/stamp-h.in 2> /dev/null
|
rm -f stamp-h1
|
||||||
|
touch $@
|
||||||
mostlyclean-hdr:
|
|
||||||
|
|
||||||
clean-hdr:
|
|
||||||
|
|
||||||
distclean-hdr:
|
distclean-hdr:
|
||||||
-rm -f config.h
|
-rm -f config.h stamp-h1
|
||||||
|
|
||||||
maintainer-clean-hdr:
|
mostlyclean-libtool:
|
||||||
|
-rm -f *.lo
|
||||||
|
|
||||||
|
clean-libtool:
|
||||||
|
-rm -rf .libs _libs
|
||||||
|
|
||||||
|
distclean-libtool:
|
||||||
|
-rm -f libtool
|
||||||
|
uninstall-info-am:
|
||||||
|
|
||||||
# This directory's subdirectories are mostly independent; you can cd
|
# This directory's subdirectories are mostly independent; you can cd
|
||||||
# into them and run `make' without going through this Makefile.
|
# into them and run `make' without going through this Makefile.
|
||||||
@ -153,13 +250,14 @@ maintainer-clean-hdr:
|
|||||||
# (1) if the variable is set in `config.status', edit `config.status'
|
# (1) if the variable is set in `config.status', edit `config.status'
|
||||||
# (which will cause the Makefiles to be regenerated when you run `make');
|
# (which will cause the Makefiles to be regenerated when you run `make');
|
||||||
# (2) otherwise, pass the desired values on the `make' command line.
|
# (2) otherwise, pass the desired values on the `make' command line.
|
||||||
|
$(RECURSIVE_TARGETS):
|
||||||
@SET_MAKE@
|
@failcom='exit 1'; \
|
||||||
|
for f in x $$MAKEFLAGS; do \
|
||||||
all-recursive install-data-recursive install-exec-recursive \
|
case $$f in \
|
||||||
installdirs-recursive install-recursive uninstall-recursive \
|
*=* | --[!k]*);; \
|
||||||
check-recursive installcheck-recursive info-recursive dvi-recursive:
|
*k*) failcom='fail=yes';; \
|
||||||
@set fnord $(MAKEFLAGS); amf=$$2; \
|
esac; \
|
||||||
|
done; \
|
||||||
dot_seen=no; \
|
dot_seen=no; \
|
||||||
target=`echo $@ | sed s/-recursive//`; \
|
target=`echo $@ | sed s/-recursive//`; \
|
||||||
list='$(SUBDIRS)'; for subdir in $$list; do \
|
list='$(SUBDIRS)'; for subdir in $$list; do \
|
||||||
@ -171,7 +269,7 @@ check-recursive installcheck-recursive info-recursive dvi-recursive:
|
|||||||
local_target="$$target"; \
|
local_target="$$target"; \
|
||||||
fi; \
|
fi; \
|
||||||
(cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
|
(cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
|
||||||
|| case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \
|
|| eval $$failcom; \
|
||||||
done; \
|
done; \
|
||||||
if test "$$dot_seen" = "no"; then \
|
if test "$$dot_seen" = "no"; then \
|
||||||
$(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
|
$(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
|
||||||
@ -179,13 +277,24 @@ check-recursive installcheck-recursive info-recursive dvi-recursive:
|
|||||||
|
|
||||||
mostlyclean-recursive clean-recursive distclean-recursive \
|
mostlyclean-recursive clean-recursive distclean-recursive \
|
||||||
maintainer-clean-recursive:
|
maintainer-clean-recursive:
|
||||||
@set fnord $(MAKEFLAGS); amf=$$2; \
|
@failcom='exit 1'; \
|
||||||
dot_seen=no; \
|
for f in x $$MAKEFLAGS; do \
|
||||||
rev=''; list='$(SUBDIRS)'; for subdir in $$list; do \
|
case $$f in \
|
||||||
rev="$$subdir $$rev"; \
|
*=* | --[!k]*);; \
|
||||||
test "$$subdir" != "." || dot_seen=yes; \
|
*k*) failcom='fail=yes';; \
|
||||||
|
esac; \
|
||||||
done; \
|
done; \
|
||||||
test "$$dot_seen" = "no" && rev=". $$rev"; \
|
dot_seen=no; \
|
||||||
|
case "$@" in \
|
||||||
|
distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
|
||||||
|
*) list='$(SUBDIRS)' ;; \
|
||||||
|
esac; \
|
||||||
|
rev=''; for subdir in $$list; do \
|
||||||
|
if test "$$subdir" = "."; then :; else \
|
||||||
|
rev="$$subdir $$rev"; \
|
||||||
|
fi; \
|
||||||
|
done; \
|
||||||
|
rev="$$rev ."; \
|
||||||
target=`echo $@ | sed s/-recursive//`; \
|
target=`echo $@ | sed s/-recursive//`; \
|
||||||
for subdir in $$rev; do \
|
for subdir in $$rev; do \
|
||||||
echo "Making $$target in $$subdir"; \
|
echo "Making $$target in $$subdir"; \
|
||||||
@ -195,184 +304,314 @@ maintainer-clean-recursive:
|
|||||||
local_target="$$target"; \
|
local_target="$$target"; \
|
||||||
fi; \
|
fi; \
|
||||||
(cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
|
(cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
|
||||||
|| case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \
|
|| eval $$failcom; \
|
||||||
done && test -z "$$fail"
|
done && test -z "$$fail"
|
||||||
tags-recursive:
|
tags-recursive:
|
||||||
list='$(SUBDIRS)'; for subdir in $$list; do \
|
list='$(SUBDIRS)'; for subdir in $$list; do \
|
||||||
test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
|
test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
|
||||||
done
|
done
|
||||||
|
ctags-recursive:
|
||||||
|
list='$(SUBDIRS)'; for subdir in $$list; do \
|
||||||
|
test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
|
||||||
|
done
|
||||||
|
|
||||||
|
ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
|
||||||
|
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
|
||||||
|
unique=`for i in $$list; do \
|
||||||
|
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
|
||||||
|
done | \
|
||||||
|
$(AWK) ' { files[$$0] = 1; } \
|
||||||
|
END { for (i in files) print i; }'`; \
|
||||||
|
mkid -fID $$unique
|
||||||
tags: TAGS
|
tags: TAGS
|
||||||
|
|
||||||
ID: $(HEADERS) $(SOURCES) $(LISP)
|
TAGS: tags-recursive $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \
|
||||||
list='$(SOURCES) $(HEADERS)'; \
|
$(TAGS_FILES) $(LISP)
|
||||||
unique=`for i in $$list; do echo $$i; done | \
|
|
||||||
awk ' { files[$$0] = 1; } \
|
|
||||||
END { for (i in files) print i; }'`; \
|
|
||||||
here=`pwd` && cd $(srcdir) \
|
|
||||||
&& mkid -f$$here/ID $$unique $(LISP)
|
|
||||||
|
|
||||||
TAGS: tags-recursive $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) $(LISP)
|
|
||||||
tags=; \
|
tags=; \
|
||||||
here=`pwd`; \
|
here=`pwd`; \
|
||||||
|
if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
|
||||||
|
include_option=--etags-include; \
|
||||||
|
empty_fix=.; \
|
||||||
|
else \
|
||||||
|
include_option=--include; \
|
||||||
|
empty_fix=; \
|
||||||
|
fi; \
|
||||||
list='$(SUBDIRS)'; for subdir in $$list; do \
|
list='$(SUBDIRS)'; for subdir in $$list; do \
|
||||||
if test "$$subdir" = .; then :; else \
|
if test "$$subdir" = .; then :; else \
|
||||||
test -f $$subdir/TAGS && tags="$$tags -i $$here/$$subdir/TAGS"; \
|
test ! -f $$subdir/TAGS || \
|
||||||
fi; \
|
tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \
|
||||||
|
fi; \
|
||||||
done; \
|
done; \
|
||||||
list='$(SOURCES) $(HEADERS)'; \
|
list='$(SOURCES) $(HEADERS) config.h.in $(LISP) $(TAGS_FILES)'; \
|
||||||
unique=`for i in $$list; do echo $$i; done | \
|
unique=`for i in $$list; do \
|
||||||
awk ' { files[$$0] = 1; } \
|
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
|
||||||
|
done | \
|
||||||
|
$(AWK) ' { files[$$0] = 1; } \
|
||||||
END { for (i in files) print i; }'`; \
|
END { for (i in files) print i; }'`; \
|
||||||
test -z "$(ETAGS_ARGS)config.h.in$$unique$(LISP)$$tags" \
|
if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
|
||||||
|| (cd $(srcdir) && etags -o $$here/TAGS $(ETAGS_ARGS) $$tags config.h.in $$unique $(LISP))
|
test -n "$$unique" || unique=$$empty_fix; \
|
||||||
|
$(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
|
||||||
|
$$tags $$unique; \
|
||||||
|
fi
|
||||||
|
ctags: CTAGS
|
||||||
|
CTAGS: ctags-recursive $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \
|
||||||
|
$(TAGS_FILES) $(LISP)
|
||||||
|
tags=; \
|
||||||
|
here=`pwd`; \
|
||||||
|
list='$(SOURCES) $(HEADERS) config.h.in $(LISP) $(TAGS_FILES)'; \
|
||||||
|
unique=`for i in $$list; do \
|
||||||
|
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
|
||||||
|
done | \
|
||||||
|
$(AWK) ' { files[$$0] = 1; } \
|
||||||
|
END { for (i in files) print i; }'`; \
|
||||||
|
test -z "$(CTAGS_ARGS)$$tags$$unique" \
|
||||||
|
|| $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
|
||||||
|
$$tags $$unique
|
||||||
|
|
||||||
mostlyclean-tags:
|
GTAGS:
|
||||||
|
here=`$(am__cd) $(top_builddir) && pwd` \
|
||||||
clean-tags:
|
&& cd $(top_srcdir) \
|
||||||
|
&& gtags -i $(GTAGS_ARGS) $$here
|
||||||
|
|
||||||
distclean-tags:
|
distclean-tags:
|
||||||
-rm -f TAGS ID
|
-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
|
||||||
|
|
||||||
maintainer-clean-tags:
|
distdir: $(DISTFILES)
|
||||||
|
$(am__remove_distdir)
|
||||||
|
mkdir $(distdir)
|
||||||
|
@srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
|
||||||
|
topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \
|
||||||
|
list='$(DISTFILES)'; for file in $$list; do \
|
||||||
|
case $$file in \
|
||||||
|
$(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \
|
||||||
|
$(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \
|
||||||
|
esac; \
|
||||||
|
if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
|
||||||
|
dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
|
||||||
|
if test "$$dir" != "$$file" && test "$$dir" != "."; then \
|
||||||
|
dir="/$$dir"; \
|
||||||
|
$(mkdir_p) "$(distdir)$$dir"; \
|
||||||
|
else \
|
||||||
|
dir=''; \
|
||||||
|
fi; \
|
||||||
|
if test -d $$d/$$file; then \
|
||||||
|
if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
|
||||||
|
cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
|
||||||
|
fi; \
|
||||||
|
cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
|
||||||
|
else \
|
||||||
|
test -f $(distdir)/$$file \
|
||||||
|
|| cp -p $$d/$$file $(distdir)/$$file \
|
||||||
|
|| exit 1; \
|
||||||
|
fi; \
|
||||||
|
done
|
||||||
|
list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
|
||||||
|
if test "$$subdir" = .; then :; else \
|
||||||
|
test -d "$(distdir)/$$subdir" \
|
||||||
|
|| $(mkdir_p) "$(distdir)/$$subdir" \
|
||||||
|
|| exit 1; \
|
||||||
|
distdir=`$(am__cd) $(distdir) && pwd`; \
|
||||||
|
top_distdir=`$(am__cd) $(top_distdir) && pwd`; \
|
||||||
|
(cd $$subdir && \
|
||||||
|
$(MAKE) $(AM_MAKEFLAGS) \
|
||||||
|
top_distdir="$$top_distdir" \
|
||||||
|
distdir="$$distdir/$$subdir" \
|
||||||
|
distdir) \
|
||||||
|
|| exit 1; \
|
||||||
|
fi; \
|
||||||
|
done
|
||||||
|
-find $(distdir) -type d ! -perm -777 -exec chmod a+rwx {} \; -o \
|
||||||
|
! -type d ! -perm -444 -links 1 -exec chmod a+r {} \; -o \
|
||||||
|
! -type d ! -perm -400 -exec chmod a+r {} \; -o \
|
||||||
|
! -type d ! -perm -444 -exec $(SHELL) $(install_sh) -c -m a+r {} {} \; \
|
||||||
|
|| chmod -R a+r $(distdir)
|
||||||
|
dist-gzip: distdir
|
||||||
|
tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz
|
||||||
|
$(am__remove_distdir)
|
||||||
|
|
||||||
distdir = $(PACKAGE)-$(VERSION)
|
dist-bzip2: distdir
|
||||||
top_distdir = $(distdir)
|
tardir=$(distdir) && $(am__tar) | bzip2 -9 -c >$(distdir).tar.bz2
|
||||||
|
$(am__remove_distdir)
|
||||||
|
|
||||||
|
dist-tarZ: distdir
|
||||||
|
tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z
|
||||||
|
$(am__remove_distdir)
|
||||||
|
|
||||||
|
dist-shar: distdir
|
||||||
|
shar $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).shar.gz
|
||||||
|
$(am__remove_distdir)
|
||||||
|
|
||||||
|
dist-zip: distdir
|
||||||
|
-rm -f $(distdir).zip
|
||||||
|
zip -rq $(distdir).zip $(distdir)
|
||||||
|
$(am__remove_distdir)
|
||||||
|
|
||||||
|
dist dist-all: distdir
|
||||||
|
tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz
|
||||||
|
$(am__remove_distdir)
|
||||||
|
|
||||||
# This target untars the dist file and tries a VPATH configuration. Then
|
# This target untars the dist file and tries a VPATH configuration. Then
|
||||||
# it guarantees that the distribution is self-contained by making another
|
# it guarantees that the distribution is self-contained by making another
|
||||||
# tarfile.
|
# tarfile.
|
||||||
distcheck: dist
|
distcheck: dist
|
||||||
-rm -rf $(distdir)
|
case '$(DIST_ARCHIVES)' in \
|
||||||
GZIP=$(GZIP_ENV) $(TAR) zxf $(distdir).tar.gz
|
*.tar.gz*) \
|
||||||
mkdir $(distdir)/=build
|
GZIP=$(GZIP_ENV) gunzip -c $(distdir).tar.gz | $(am__untar) ;;\
|
||||||
mkdir $(distdir)/=inst
|
*.tar.bz2*) \
|
||||||
dc_install_base=`cd $(distdir)/=inst && pwd`; \
|
bunzip2 -c $(distdir).tar.bz2 | $(am__untar) ;;\
|
||||||
cd $(distdir)/=build \
|
*.tar.Z*) \
|
||||||
&& ../configure --srcdir=.. --prefix=$$dc_install_base \
|
uncompress -c $(distdir).tar.Z | $(am__untar) ;;\
|
||||||
|
*.shar.gz*) \
|
||||||
|
GZIP=$(GZIP_ENV) gunzip -c $(distdir).shar.gz | unshar ;;\
|
||||||
|
*.zip*) \
|
||||||
|
unzip $(distdir).zip ;;\
|
||||||
|
esac
|
||||||
|
chmod -R a-w $(distdir); chmod a+w $(distdir)
|
||||||
|
mkdir $(distdir)/_build
|
||||||
|
mkdir $(distdir)/_inst
|
||||||
|
chmod a-w $(distdir)
|
||||||
|
dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \
|
||||||
|
&& dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \
|
||||||
|
&& cd $(distdir)/_build \
|
||||||
|
&& ../configure --srcdir=.. --prefix="$$dc_install_base" \
|
||||||
|
$(DISTCHECK_CONFIGURE_FLAGS) \
|
||||||
&& $(MAKE) $(AM_MAKEFLAGS) \
|
&& $(MAKE) $(AM_MAKEFLAGS) \
|
||||||
&& $(MAKE) $(AM_MAKEFLAGS) dvi \
|
&& $(MAKE) $(AM_MAKEFLAGS) dvi \
|
||||||
&& $(MAKE) $(AM_MAKEFLAGS) check \
|
&& $(MAKE) $(AM_MAKEFLAGS) check \
|
||||||
&& $(MAKE) $(AM_MAKEFLAGS) install \
|
&& $(MAKE) $(AM_MAKEFLAGS) install \
|
||||||
&& $(MAKE) $(AM_MAKEFLAGS) installcheck \
|
&& $(MAKE) $(AM_MAKEFLAGS) installcheck \
|
||||||
&& $(MAKE) $(AM_MAKEFLAGS) dist
|
&& $(MAKE) $(AM_MAKEFLAGS) uninstall \
|
||||||
-rm -rf $(distdir)
|
&& $(MAKE) $(AM_MAKEFLAGS) distuninstallcheck_dir="$$dc_install_base" \
|
||||||
@banner="$(distdir).tar.gz is ready for distribution"; \
|
distuninstallcheck \
|
||||||
dashes=`echo "$$banner" | sed s/./=/g`; \
|
&& chmod -R a-w "$$dc_install_base" \
|
||||||
echo "$$dashes"; \
|
&& ({ \
|
||||||
echo "$$banner"; \
|
(cd ../.. && umask 077 && mkdir "$$dc_destdir") \
|
||||||
echo "$$dashes"
|
&& $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" install \
|
||||||
dist: distdir
|
&& $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" uninstall \
|
||||||
-chmod -R a+r $(distdir)
|
&& $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" \
|
||||||
GZIP=$(GZIP_ENV) $(TAR) chozf $(distdir).tar.gz $(distdir)
|
distuninstallcheck_dir="$$dc_destdir" distuninstallcheck; \
|
||||||
-rm -rf $(distdir)
|
} || { rm -rf "$$dc_destdir"; exit 1; }) \
|
||||||
dist-all: distdir
|
&& rm -rf "$$dc_destdir" \
|
||||||
-chmod -R a+r $(distdir)
|
&& $(MAKE) $(AM_MAKEFLAGS) dist \
|
||||||
GZIP=$(GZIP_ENV) $(TAR) chozf $(distdir).tar.gz $(distdir)
|
&& rm -rf $(DIST_ARCHIVES) \
|
||||||
-rm -rf $(distdir)
|
&& $(MAKE) $(AM_MAKEFLAGS) distcleancheck
|
||||||
distdir: $(DISTFILES)
|
$(am__remove_distdir)
|
||||||
-rm -rf $(distdir)
|
@(echo "$(distdir) archives ready for distribution: "; \
|
||||||
mkdir $(distdir)
|
list='$(DIST_ARCHIVES)'; for i in $$list; do echo $$i; done) | \
|
||||||
-chmod 777 $(distdir)
|
sed -e '1{h;s/./=/g;p;x;}' -e '$${p;x;}'
|
||||||
here=`cd $(top_builddir) && pwd`; \
|
distuninstallcheck:
|
||||||
top_distdir=`cd $(distdir) && pwd`; \
|
@cd $(distuninstallcheck_dir) \
|
||||||
distdir=`cd $(distdir) && pwd`; \
|
&& test `$(distuninstallcheck_listfiles) | wc -l` -le 1 \
|
||||||
cd $(top_srcdir) \
|
|| { echo "ERROR: files left after uninstall:" ; \
|
||||||
&& $(AUTOMAKE) --include-deps --build-dir=$$here --srcdir-name=$(top_srcdir) --output-dir=$$top_distdir --gnu Makefile
|
if test -n "$(DESTDIR)"; then \
|
||||||
@for file in $(DISTFILES); do \
|
echo " (check DESTDIR support)"; \
|
||||||
d=$(srcdir); \
|
fi ; \
|
||||||
if test -d $$d/$$file; then \
|
$(distuninstallcheck_listfiles) ; \
|
||||||
cp -pr $$d/$$file $(distdir)/$$file; \
|
exit 1; } >&2
|
||||||
else \
|
distcleancheck: distclean
|
||||||
test -f $(distdir)/$$file \
|
@if test '$(srcdir)' = . ; then \
|
||||||
|| ln $$d/$$file $(distdir)/$$file 2> /dev/null \
|
echo "ERROR: distcleancheck can only run from a VPATH build" ; \
|
||||||
|| cp -p $$d/$$file $(distdir)/$$file || :; \
|
exit 1 ; \
|
||||||
fi; \
|
fi
|
||||||
done
|
@test `$(distcleancheck_listfiles) | wc -l` -eq 0 \
|
||||||
for subdir in $(SUBDIRS); do \
|
|| { echo "ERROR: files left in build directory after distclean:" ; \
|
||||||
if test "$$subdir" = .; then :; else \
|
$(distcleancheck_listfiles) ; \
|
||||||
test -d $(distdir)/$$subdir \
|
exit 1; } >&2
|
||||||
|| mkdir $(distdir)/$$subdir \
|
|
||||||
|| exit 1; \
|
|
||||||
chmod 777 $(distdir)/$$subdir; \
|
|
||||||
(cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir=../$(distdir) distdir=../$(distdir)/$$subdir distdir) \
|
|
||||||
|| exit 1; \
|
|
||||||
fi; \
|
|
||||||
done
|
|
||||||
info-am:
|
|
||||||
info: info-recursive
|
|
||||||
dvi-am:
|
|
||||||
dvi: dvi-recursive
|
|
||||||
check-am: all-am
|
check-am: all-am
|
||||||
check: check-recursive
|
check: check-recursive
|
||||||
installcheck-am:
|
all-am: Makefile config.h
|
||||||
installcheck: installcheck-recursive
|
installdirs: installdirs-recursive
|
||||||
all-recursive-am: config.h
|
installdirs-am:
|
||||||
$(MAKE) $(AM_MAKEFLAGS) all-recursive
|
install: install-recursive
|
||||||
|
|
||||||
install-exec-am:
|
|
||||||
install-exec: install-exec-recursive
|
install-exec: install-exec-recursive
|
||||||
|
|
||||||
install-data-am:
|
|
||||||
install-data: install-data-recursive
|
install-data: install-data-recursive
|
||||||
|
uninstall: uninstall-recursive
|
||||||
|
|
||||||
install-am: all-am
|
install-am: all-am
|
||||||
@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
|
@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
|
||||||
install: install-recursive
|
|
||||||
uninstall-am:
|
installcheck: installcheck-recursive
|
||||||
uninstall: uninstall-recursive
|
|
||||||
all-am: Makefile config.h
|
|
||||||
all-redirect: all-recursive-am
|
|
||||||
install-strip:
|
install-strip:
|
||||||
$(MAKE) $(AM_MAKEFLAGS) AM_INSTALL_PROGRAM_FLAGS=-s install
|
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
|
||||||
installdirs: installdirs-recursive
|
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
|
||||||
installdirs-am:
|
`test -z '$(STRIP)' || \
|
||||||
|
echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
|
||||||
|
|
||||||
mostlyclean-generic:
|
mostlyclean-generic:
|
||||||
|
|
||||||
clean-generic:
|
clean-generic:
|
||||||
|
|
||||||
distclean-generic:
|
distclean-generic:
|
||||||
-rm -f Makefile $(CONFIG_CLEAN_FILES)
|
-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
|
||||||
-rm -f config.cache config.log stamp-h stamp-h[0-9]*
|
|
||||||
|
|
||||||
maintainer-clean-generic:
|
maintainer-clean-generic:
|
||||||
mostlyclean-am: mostlyclean-hdr mostlyclean-tags mostlyclean-generic
|
@echo "This command is intended for maintainers to use"
|
||||||
|
@echo "it deletes files that may require special tools to rebuild."
|
||||||
|
clean: clean-recursive
|
||||||
|
|
||||||
|
clean-am: clean-generic clean-libtool mostlyclean-am
|
||||||
|
|
||||||
|
distclean: distclean-recursive
|
||||||
|
-rm -f $(am__CONFIG_DISTCLEAN_FILES)
|
||||||
|
-rm -f Makefile
|
||||||
|
distclean-am: clean-am distclean-generic distclean-hdr \
|
||||||
|
distclean-libtool distclean-tags
|
||||||
|
|
||||||
|
dvi: dvi-recursive
|
||||||
|
|
||||||
|
dvi-am:
|
||||||
|
|
||||||
|
html: html-recursive
|
||||||
|
|
||||||
|
info: info-recursive
|
||||||
|
|
||||||
|
info-am:
|
||||||
|
|
||||||
|
install-data-am:
|
||||||
|
|
||||||
|
install-exec-am:
|
||||||
|
|
||||||
|
install-info: install-info-recursive
|
||||||
|
|
||||||
|
install-man:
|
||||||
|
|
||||||
|
installcheck-am:
|
||||||
|
|
||||||
|
maintainer-clean: maintainer-clean-recursive
|
||||||
|
-rm -f $(am__CONFIG_DISTCLEAN_FILES)
|
||||||
|
-rm -rf $(top_srcdir)/autom4te.cache
|
||||||
|
-rm -f Makefile
|
||||||
|
maintainer-clean-am: distclean-am maintainer-clean-generic
|
||||||
|
|
||||||
mostlyclean: mostlyclean-recursive
|
mostlyclean: mostlyclean-recursive
|
||||||
|
|
||||||
clean-am: clean-hdr clean-tags clean-generic mostlyclean-am
|
mostlyclean-am: mostlyclean-generic mostlyclean-libtool
|
||||||
|
|
||||||
clean: clean-recursive
|
pdf: pdf-recursive
|
||||||
|
|
||||||
distclean-am: distclean-hdr distclean-tags distclean-generic clean-am
|
pdf-am:
|
||||||
-rm -f libtool
|
|
||||||
|
|
||||||
distclean: distclean-recursive
|
ps: ps-recursive
|
||||||
-rm -f config.status
|
|
||||||
|
|
||||||
maintainer-clean-am: maintainer-clean-hdr maintainer-clean-tags \
|
ps-am:
|
||||||
maintainer-clean-generic distclean-am
|
|
||||||
@echo "This command is intended for maintainers to use;"
|
|
||||||
@echo "it deletes files that may require special tools to rebuild."
|
|
||||||
|
|
||||||
maintainer-clean: maintainer-clean-recursive
|
uninstall-am: uninstall-info-am
|
||||||
-rm -f config.status
|
|
||||||
|
|
||||||
.PHONY: mostlyclean-hdr distclean-hdr clean-hdr maintainer-clean-hdr \
|
uninstall-info: uninstall-info-recursive
|
||||||
install-data-recursive uninstall-data-recursive install-exec-recursive \
|
|
||||||
uninstall-exec-recursive installdirs-recursive uninstalldirs-recursive \
|
|
||||||
all-recursive check-recursive installcheck-recursive info-recursive \
|
|
||||||
dvi-recursive mostlyclean-recursive distclean-recursive clean-recursive \
|
|
||||||
maintainer-clean-recursive tags tags-recursive mostlyclean-tags \
|
|
||||||
distclean-tags clean-tags maintainer-clean-tags distdir info-am info \
|
|
||||||
dvi-am dvi check check-am installcheck-am installcheck all-recursive-am \
|
|
||||||
install-exec-am install-exec install-data-am install-data install-am \
|
|
||||||
install uninstall-am uninstall all-redirect all-am all installdirs-am \
|
|
||||||
installdirs mostlyclean-generic distclean-generic clean-generic \
|
|
||||||
maintainer-clean-generic clean mostlyclean distclean maintainer-clean
|
|
||||||
|
|
||||||
|
.PHONY: $(RECURSIVE_TARGETS) CTAGS GTAGS all all-am am--refresh check \
|
||||||
|
check-am clean clean-generic clean-libtool clean-recursive \
|
||||||
|
ctags ctags-recursive dist dist-all dist-bzip2 dist-gzip \
|
||||||
|
dist-shar dist-tarZ dist-zip distcheck distclean \
|
||||||
|
distclean-generic distclean-hdr distclean-libtool \
|
||||||
|
distclean-recursive distclean-tags distcleancheck distdir \
|
||||||
|
distuninstallcheck dvi dvi-am html html-am info info-am \
|
||||||
|
install install-am install-data install-data-am install-exec \
|
||||||
|
install-exec-am install-info install-info-am install-man \
|
||||||
|
install-strip installcheck installcheck-am installdirs \
|
||||||
|
installdirs-am maintainer-clean maintainer-clean-generic \
|
||||||
|
maintainer-clean-recursive mostlyclean mostlyclean-generic \
|
||||||
|
mostlyclean-libtool mostlyclean-recursive pdf pdf-am ps ps-am \
|
||||||
|
tags tags-recursive uninstall uninstall-am uninstall-info-am
|
||||||
|
|
||||||
# Tell versions [3.59,3.63) of GNU make to not export all variables.
|
# Tell versions [3.59,3.63) of GNU make to not export all variables.
|
||||||
# Otherwise a system limit (for SysV at least) may be exceeded.
|
# Otherwise a system limit (for SysV at least) may be exceeded.
|
||||||
|
@ -0,0 +1 @@
|
|||||||
|
See doc/smmapd.info please.
|
3915
smmapdfw/aclocal.m4
vendored
3915
smmapdfw/aclocal.m4
vendored
File diff suppressed because it is too large
Load Diff
597
smmapdfw/config.guess
vendored
597
smmapdfw/config.guess
vendored
File diff suppressed because it is too large
Load Diff
@ -1,7 +1,10 @@
|
|||||||
/* config.h.in. Generated from configure.ac by autoheader. */
|
/* config.h.in. Generated from configure.ac by autoheader. */
|
||||||
|
|
||||||
/* enable verify cache */
|
/* enable cache */
|
||||||
#undef ENABLE_VERIFY_CACHE
|
#undef ENABLE_CACHE
|
||||||
|
|
||||||
|
/* enable Net-SNMP */
|
||||||
|
#undef ENABLE_NETSNMP
|
||||||
|
|
||||||
/* Define to 1 if you have the <arpa/inet.h> header file. */
|
/* Define to 1 if you have the <arpa/inet.h> header file. */
|
||||||
#undef HAVE_ARPA_INET_H
|
#undef HAVE_ARPA_INET_H
|
||||||
@ -33,6 +36,9 @@
|
|||||||
/* Define to 1 if you have the <inttypes.h> header file. */
|
/* Define to 1 if you have the <inttypes.h> header file. */
|
||||||
#undef HAVE_INTTYPES_H
|
#undef HAVE_INTTYPES_H
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `djbdns' library (-ldjbdns). */
|
||||||
|
#undef HAVE_LIBDJBDNS
|
||||||
|
|
||||||
/* Define to 1 if you have the `dl' library (-ldl). */
|
/* Define to 1 if you have the `dl' library (-ldl). */
|
||||||
#undef HAVE_LIBDL
|
#undef HAVE_LIBDL
|
||||||
|
|
||||||
@ -165,7 +171,7 @@
|
|||||||
/* Define to `int' if <sys/types.h> does not define. */
|
/* Define to `int' if <sys/types.h> does not define. */
|
||||||
#undef pid_t
|
#undef pid_t
|
||||||
|
|
||||||
/* Define to `unsigned' if <sys/types.h> does not define. */
|
/* Define to `unsigned int' if <sys/types.h> does not define. */
|
||||||
#undef size_t
|
#undef size_t
|
||||||
|
|
||||||
/* Define as `fork' if `vfork' does not work. */
|
/* Define as `fork' if `vfork' does not work. */
|
||||||
|
150
smmapdfw/config.sub
vendored
150
smmapdfw/config.sub
vendored
@ -1,9 +1,10 @@
|
|||||||
#! /bin/sh
|
#! /bin/sh
|
||||||
# Configuration validation subroutine script.
|
# Configuration validation subroutine script.
|
||||||
# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
|
# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
|
||||||
# 2000, 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
|
# 2000, 2001, 2002, 2003, 2004, 2005, 2006 Free Software Foundation,
|
||||||
|
# Inc.
|
||||||
|
|
||||||
timestamp='2004-06-24'
|
timestamp='2006-09-20'
|
||||||
|
|
||||||
# This file is (in principle) common to ALL GNU software.
|
# This file is (in principle) common to ALL GNU software.
|
||||||
# The presence of a machine in this file suggests that SOME GNU software
|
# The presence of a machine in this file suggests that SOME GNU software
|
||||||
@ -21,14 +22,15 @@ timestamp='2004-06-24'
|
|||||||
#
|
#
|
||||||
# You should have received a copy of the GNU General Public License
|
# You should have received a copy of the GNU General Public License
|
||||||
# along with this program; if not, write to the Free Software
|
# along with this program; if not, write to the Free Software
|
||||||
# Foundation, Inc., 59 Temple Place - Suite 330,
|
# Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA
|
||||||
# Boston, MA 02111-1307, USA.
|
# 02110-1301, USA.
|
||||||
|
#
|
||||||
# As a special exception to the GNU General Public License, if you
|
# As a special exception to the GNU General Public License, if you
|
||||||
# distribute this file as part of a program that contains a
|
# distribute this file as part of a program that contains a
|
||||||
# configuration script generated by Autoconf, you may include it under
|
# configuration script generated by Autoconf, you may include it under
|
||||||
# the same distribution terms that you use for the rest of that program.
|
# the same distribution terms that you use for the rest of that program.
|
||||||
|
|
||||||
|
|
||||||
# Please send patches to <config-patches@gnu.org>. Submit a context
|
# Please send patches to <config-patches@gnu.org>. Submit a context
|
||||||
# diff and a properly formatted ChangeLog entry.
|
# diff and a properly formatted ChangeLog entry.
|
||||||
#
|
#
|
||||||
@ -70,7 +72,7 @@ Report bugs and patches to <config-patches@gnu.org>."
|
|||||||
version="\
|
version="\
|
||||||
GNU config.sub ($timestamp)
|
GNU config.sub ($timestamp)
|
||||||
|
|
||||||
Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004
|
Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005
|
||||||
Free Software Foundation, Inc.
|
Free Software Foundation, Inc.
|
||||||
|
|
||||||
This is free software; see the source for copying conditions. There is NO
|
This is free software; see the source for copying conditions. There is NO
|
||||||
@ -83,11 +85,11 @@ Try \`$me --help' for more information."
|
|||||||
while test $# -gt 0 ; do
|
while test $# -gt 0 ; do
|
||||||
case $1 in
|
case $1 in
|
||||||
--time-stamp | --time* | -t )
|
--time-stamp | --time* | -t )
|
||||||
echo "$timestamp" ; exit 0 ;;
|
echo "$timestamp" ; exit ;;
|
||||||
--version | -v )
|
--version | -v )
|
||||||
echo "$version" ; exit 0 ;;
|
echo "$version" ; exit ;;
|
||||||
--help | --h* | -h )
|
--help | --h* | -h )
|
||||||
echo "$usage"; exit 0 ;;
|
echo "$usage"; exit ;;
|
||||||
-- ) # Stop option processing
|
-- ) # Stop option processing
|
||||||
shift; break ;;
|
shift; break ;;
|
||||||
- ) # Use stdin as input.
|
- ) # Use stdin as input.
|
||||||
@ -99,7 +101,7 @@ while test $# -gt 0 ; do
|
|||||||
*local*)
|
*local*)
|
||||||
# First pass through any local machine types.
|
# First pass through any local machine types.
|
||||||
echo $1
|
echo $1
|
||||||
exit 0;;
|
exit ;;
|
||||||
|
|
||||||
* )
|
* )
|
||||||
break ;;
|
break ;;
|
||||||
@ -118,8 +120,9 @@ esac
|
|||||||
# Here we must recognize all the valid KERNEL-OS combinations.
|
# Here we must recognize all the valid KERNEL-OS combinations.
|
||||||
maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'`
|
maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'`
|
||||||
case $maybe_os in
|
case $maybe_os in
|
||||||
nto-qnx* | linux-gnu* | linux-dietlibc | linux-uclibc* | uclinux-uclibc* | uclinux-gnu* | \
|
nto-qnx* | linux-gnu* | linux-dietlibc | linux-newlib* | linux-uclibc* | \
|
||||||
kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* | storm-chaos* | os2-emx* | rtmk-nova*)
|
uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* | \
|
||||||
|
storm-chaos* | os2-emx* | rtmk-nova*)
|
||||||
os=-$maybe_os
|
os=-$maybe_os
|
||||||
basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`
|
basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`
|
||||||
;;
|
;;
|
||||||
@ -170,6 +173,10 @@ case $os in
|
|||||||
-hiux*)
|
-hiux*)
|
||||||
os=-hiuxwe2
|
os=-hiuxwe2
|
||||||
;;
|
;;
|
||||||
|
-sco6)
|
||||||
|
os=-sco5v6
|
||||||
|
basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
|
||||||
|
;;
|
||||||
-sco5)
|
-sco5)
|
||||||
os=-sco3.2v5
|
os=-sco3.2v5
|
||||||
basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
|
basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
|
||||||
@ -186,6 +193,10 @@ case $os in
|
|||||||
# Don't forget version if it is 3.2v4 or newer.
|
# Don't forget version if it is 3.2v4 or newer.
|
||||||
basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
|
basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
|
||||||
;;
|
;;
|
||||||
|
-sco5v6*)
|
||||||
|
# Don't forget version if it is 3.2v4 or newer.
|
||||||
|
basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
|
||||||
|
;;
|
||||||
-sco*)
|
-sco*)
|
||||||
os=-sco3.2v2
|
os=-sco3.2v2
|
||||||
basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
|
basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
|
||||||
@ -230,14 +241,16 @@ case $basic_machine in
|
|||||||
| alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \
|
| alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \
|
||||||
| alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \
|
| alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \
|
||||||
| am33_2.0 \
|
| am33_2.0 \
|
||||||
| arc | arm | arm[bl]e | arme[lb] | armv[2345] | armv[345][lb] | avr \
|
| arc | arm | arm[bl]e | arme[lb] | armv[2345] | armv[345][lb] | avr | avr32 \
|
||||||
|
| bfin \
|
||||||
| c4x | clipper \
|
| c4x | clipper \
|
||||||
| d10v | d30v | dlx | dsp16xx \
|
| d10v | d30v | dlx | dsp16xx \
|
||||||
| fr30 | frv \
|
| fr30 | frv \
|
||||||
| h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \
|
| h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \
|
||||||
| i370 | i860 | i960 | ia64 \
|
| i370 | i860 | i960 | ia64 \
|
||||||
| ip2k | iq2000 \
|
| ip2k | iq2000 \
|
||||||
| m32r | m32rle | m68000 | m68k | m88k | mcore \
|
| m32c | m32r | m32rle | m68000 | m68k | m88k \
|
||||||
|
| maxq | mb | microblaze | mcore \
|
||||||
| mips | mipsbe | mipseb | mipsel | mipsle \
|
| mips | mipsbe | mipseb | mipsel | mipsle \
|
||||||
| mips16 \
|
| mips16 \
|
||||||
| mips64 | mips64el \
|
| mips64 | mips64el \
|
||||||
@ -246,6 +259,7 @@ case $basic_machine in
|
|||||||
| mips64vr4100 | mips64vr4100el \
|
| mips64vr4100 | mips64vr4100el \
|
||||||
| mips64vr4300 | mips64vr4300el \
|
| mips64vr4300 | mips64vr4300el \
|
||||||
| mips64vr5000 | mips64vr5000el \
|
| mips64vr5000 | mips64vr5000el \
|
||||||
|
| mips64vr5900 | mips64vr5900el \
|
||||||
| mipsisa32 | mipsisa32el \
|
| mipsisa32 | mipsisa32el \
|
||||||
| mipsisa32r2 | mipsisa32r2el \
|
| mipsisa32r2 | mipsisa32r2el \
|
||||||
| mipsisa64 | mipsisa64el \
|
| mipsisa64 | mipsisa64el \
|
||||||
@ -254,20 +268,24 @@ case $basic_machine in
|
|||||||
| mipsisa64sr71k | mipsisa64sr71kel \
|
| mipsisa64sr71k | mipsisa64sr71kel \
|
||||||
| mipstx39 | mipstx39el \
|
| mipstx39 | mipstx39el \
|
||||||
| mn10200 | mn10300 \
|
| mn10200 | mn10300 \
|
||||||
|
| mt \
|
||||||
| msp430 \
|
| msp430 \
|
||||||
|
| nios | nios2 \
|
||||||
| ns16k | ns32k \
|
| ns16k | ns32k \
|
||||||
| openrisc | or32 \
|
| or32 \
|
||||||
| pdp10 | pdp11 | pj | pjl \
|
| pdp10 | pdp11 | pj | pjl \
|
||||||
| powerpc | powerpc64 | powerpc64le | powerpcle | ppcbe \
|
| powerpc | powerpc64 | powerpc64le | powerpcle | ppcbe \
|
||||||
| pyramid \
|
| pyramid \
|
||||||
| sh | sh[1234] | sh[23]e | sh[34]eb | shbe | shle | sh[1234]le | sh3ele \
|
| score \
|
||||||
|
| sh | sh[1234] | sh[24]a | sh[23]e | sh[34]eb | sheb | shbe | shle | sh[1234]le | sh3ele \
|
||||||
| sh64 | sh64le \
|
| sh64 | sh64le \
|
||||||
| sparc | sparc64 | sparc86x | sparclet | sparclite | sparcv8 | sparcv9 | sparcv9b \
|
| sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet | sparclite \
|
||||||
| strongarm \
|
| sparcv8 | sparcv9 | sparcv9b | sparcv9v \
|
||||||
|
| spu | strongarm \
|
||||||
| tahoe | thumb | tic4x | tic80 | tron \
|
| tahoe | thumb | tic4x | tic80 | tron \
|
||||||
| v850 | v850e \
|
| v850 | v850e \
|
||||||
| we32k \
|
| we32k \
|
||||||
| x86 | xscale | xstormy16 | xtensa \
|
| x86 | xc16x | xscale | xscalee[bl] | xstormy16 | xtensa \
|
||||||
| z8k)
|
| z8k)
|
||||||
basic_machine=$basic_machine-unknown
|
basic_machine=$basic_machine-unknown
|
||||||
;;
|
;;
|
||||||
@ -278,6 +296,9 @@ case $basic_machine in
|
|||||||
;;
|
;;
|
||||||
m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | v70 | w65 | z8k)
|
m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | v70 | w65 | z8k)
|
||||||
;;
|
;;
|
||||||
|
ms1)
|
||||||
|
basic_machine=mt-unknown
|
||||||
|
;;
|
||||||
|
|
||||||
# We use `pc' rather than `unknown'
|
# We use `pc' rather than `unknown'
|
||||||
# because (1) that's what they normally are, and
|
# because (1) that's what they normally are, and
|
||||||
@ -297,8 +318,8 @@ case $basic_machine in
|
|||||||
| alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \
|
| alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \
|
||||||
| alphapca5[67]-* | alpha64pca5[67]-* | arc-* \
|
| alphapca5[67]-* | alpha64pca5[67]-* | arc-* \
|
||||||
| arm-* | armbe-* | armle-* | armeb-* | armv*-* \
|
| arm-* | armbe-* | armle-* | armeb-* | armv*-* \
|
||||||
| avr-* \
|
| avr-* | avr32-* \
|
||||||
| bs2000-* \
|
| bfin-* | bs2000-* \
|
||||||
| c[123]* | c30-* | [cjt]90-* | c4x-* | c54x-* | c55x-* | c6x-* \
|
| c[123]* | c30-* | [cjt]90-* | c4x-* | c54x-* | c55x-* | c6x-* \
|
||||||
| clipper-* | craynv-* | cydra-* \
|
| clipper-* | craynv-* | cydra-* \
|
||||||
| d10v-* | d30v-* | dlx-* \
|
| d10v-* | d30v-* | dlx-* \
|
||||||
@ -308,9 +329,9 @@ case $basic_machine in
|
|||||||
| hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \
|
| hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \
|
||||||
| i*86-* | i860-* | i960-* | ia64-* \
|
| i*86-* | i860-* | i960-* | ia64-* \
|
||||||
| ip2k-* | iq2000-* \
|
| ip2k-* | iq2000-* \
|
||||||
| m32r-* | m32rle-* \
|
| m32c-* | m32r-* | m32rle-* \
|
||||||
| m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \
|
| m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \
|
||||||
| m88110-* | m88k-* | mcore-* \
|
| m88110-* | m88k-* | maxq-* | mcore-* \
|
||||||
| mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \
|
| mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \
|
||||||
| mips16-* \
|
| mips16-* \
|
||||||
| mips64-* | mips64el-* \
|
| mips64-* | mips64el-* \
|
||||||
@ -319,6 +340,7 @@ case $basic_machine in
|
|||||||
| mips64vr4100-* | mips64vr4100el-* \
|
| mips64vr4100-* | mips64vr4100el-* \
|
||||||
| mips64vr4300-* | mips64vr4300el-* \
|
| mips64vr4300-* | mips64vr4300el-* \
|
||||||
| mips64vr5000-* | mips64vr5000el-* \
|
| mips64vr5000-* | mips64vr5000el-* \
|
||||||
|
| mips64vr5900-* | mips64vr5900el-* \
|
||||||
| mipsisa32-* | mipsisa32el-* \
|
| mipsisa32-* | mipsisa32el-* \
|
||||||
| mipsisa32r2-* | mipsisa32r2el-* \
|
| mipsisa32r2-* | mipsisa32r2el-* \
|
||||||
| mipsisa64-* | mipsisa64el-* \
|
| mipsisa64-* | mipsisa64el-* \
|
||||||
@ -327,24 +349,27 @@ case $basic_machine in
|
|||||||
| mipsisa64sr71k-* | mipsisa64sr71kel-* \
|
| mipsisa64sr71k-* | mipsisa64sr71kel-* \
|
||||||
| mipstx39-* | mipstx39el-* \
|
| mipstx39-* | mipstx39el-* \
|
||||||
| mmix-* \
|
| mmix-* \
|
||||||
|
| mt-* \
|
||||||
| msp430-* \
|
| msp430-* \
|
||||||
|
| nios-* | nios2-* \
|
||||||
| none-* | np1-* | ns16k-* | ns32k-* \
|
| none-* | np1-* | ns16k-* | ns32k-* \
|
||||||
| orion-* \
|
| orion-* \
|
||||||
| pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \
|
| pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \
|
||||||
| powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* | ppcbe-* \
|
| powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* | ppcbe-* \
|
||||||
| pyramid-* \
|
| pyramid-* \
|
||||||
| romp-* | rs6000-* \
|
| romp-* | rs6000-* \
|
||||||
| sh-* | sh[1234]-* | sh[23]e-* | sh[34]eb-* | shbe-* \
|
| sh-* | sh[1234]-* | sh[24]a-* | sh[23]e-* | sh[34]eb-* | sheb-* | shbe-* \
|
||||||
| shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \
|
| shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \
|
||||||
| sparc-* | sparc64-* | sparc86x-* | sparclet-* | sparclite-* \
|
| sparc-* | sparc64-* | sparc64b-* | sparc64v-* | sparc86x-* | sparclet-* \
|
||||||
| sparcv8-* | sparcv9-* | sparcv9b-* | strongarm-* | sv1-* | sx?-* \
|
| sparclite-* \
|
||||||
|
| sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | strongarm-* | sv1-* | sx?-* \
|
||||||
| tahoe-* | thumb-* \
|
| tahoe-* | thumb-* \
|
||||||
| tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \
|
| tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \
|
||||||
| tron-* \
|
| tron-* \
|
||||||
| v850-* | v850e-* | vax-* \
|
| v850-* | v850e-* | vax-* \
|
||||||
| we32k-* \
|
| we32k-* \
|
||||||
| x86-* | x86_64-* | xps100-* | xscale-* | xstormy16-* \
|
| x86-* | x86_64-* | xc16x-* | xps100-* | xscale-* | xscalee[bl]-* \
|
||||||
| xtensa-* \
|
| xstormy16-* | xtensa-* \
|
||||||
| ymp-* \
|
| ymp-* \
|
||||||
| z8k-*)
|
| z8k-*)
|
||||||
;;
|
;;
|
||||||
@ -457,6 +482,9 @@ case $basic_machine in
|
|||||||
crds | unos)
|
crds | unos)
|
||||||
basic_machine=m68k-crds
|
basic_machine=m68k-crds
|
||||||
;;
|
;;
|
||||||
|
crisv32 | crisv32-* | etraxfs*)
|
||||||
|
basic_machine=crisv32-axis
|
||||||
|
;;
|
||||||
cris | cris-* | etrax*)
|
cris | cris-* | etrax*)
|
||||||
basic_machine=cris-axis
|
basic_machine=cris-axis
|
||||||
;;
|
;;
|
||||||
@ -486,6 +514,10 @@ case $basic_machine in
|
|||||||
basic_machine=m88k-motorola
|
basic_machine=m88k-motorola
|
||||||
os=-sysv3
|
os=-sysv3
|
||||||
;;
|
;;
|
||||||
|
djgpp)
|
||||||
|
basic_machine=i586-pc
|
||||||
|
os=-msdosdjgpp
|
||||||
|
;;
|
||||||
dpx20 | dpx20-*)
|
dpx20 | dpx20-*)
|
||||||
basic_machine=rs6000-bull
|
basic_machine=rs6000-bull
|
||||||
os=-bosx
|
os=-bosx
|
||||||
@ -676,6 +708,9 @@ case $basic_machine in
|
|||||||
basic_machine=i386-pc
|
basic_machine=i386-pc
|
||||||
os=-msdos
|
os=-msdos
|
||||||
;;
|
;;
|
||||||
|
ms1-*)
|
||||||
|
basic_machine=`echo $basic_machine | sed -e 's/ms1-/mt-/'`
|
||||||
|
;;
|
||||||
mvs)
|
mvs)
|
||||||
basic_machine=i370-ibm
|
basic_machine=i370-ibm
|
||||||
os=-mvs
|
os=-mvs
|
||||||
@ -751,9 +786,8 @@ case $basic_machine in
|
|||||||
basic_machine=hppa1.1-oki
|
basic_machine=hppa1.1-oki
|
||||||
os=-proelf
|
os=-proelf
|
||||||
;;
|
;;
|
||||||
or32 | or32-*)
|
openrisc | openrisc-*)
|
||||||
basic_machine=or32-unknown
|
basic_machine=or32-unknown
|
||||||
os=-coff
|
|
||||||
;;
|
;;
|
||||||
os400)
|
os400)
|
||||||
basic_machine=powerpc-ibm
|
basic_machine=powerpc-ibm
|
||||||
@ -784,6 +818,12 @@ case $basic_machine in
|
|||||||
pc532 | pc532-*)
|
pc532 | pc532-*)
|
||||||
basic_machine=ns32k-pc532
|
basic_machine=ns32k-pc532
|
||||||
;;
|
;;
|
||||||
|
pc98)
|
||||||
|
basic_machine=i386-pc
|
||||||
|
;;
|
||||||
|
pc98-*)
|
||||||
|
basic_machine=i386-`echo $basic_machine | sed 's/^[^-]*-//'`
|
||||||
|
;;
|
||||||
pentium | p5 | k5 | k6 | nexgen | viac3)
|
pentium | p5 | k5 | k6 | nexgen | viac3)
|
||||||
basic_machine=i586-pc
|
basic_machine=i586-pc
|
||||||
;;
|
;;
|
||||||
@ -840,6 +880,10 @@ case $basic_machine in
|
|||||||
basic_machine=i586-unknown
|
basic_machine=i586-unknown
|
||||||
os=-pw32
|
os=-pw32
|
||||||
;;
|
;;
|
||||||
|
rdos)
|
||||||
|
basic_machine=i386-pc
|
||||||
|
os=-rdos
|
||||||
|
;;
|
||||||
rom68k)
|
rom68k)
|
||||||
basic_machine=m68k-rom68k
|
basic_machine=m68k-rom68k
|
||||||
os=-coff
|
os=-coff
|
||||||
@ -866,6 +910,10 @@ case $basic_machine in
|
|||||||
sb1el)
|
sb1el)
|
||||||
basic_machine=mipsisa64sb1el-unknown
|
basic_machine=mipsisa64sb1el-unknown
|
||||||
;;
|
;;
|
||||||
|
sde)
|
||||||
|
basic_machine=mipsisa32-sde
|
||||||
|
os=-elf
|
||||||
|
;;
|
||||||
sei)
|
sei)
|
||||||
basic_machine=mips-sei
|
basic_machine=mips-sei
|
||||||
os=-seiux
|
os=-seiux
|
||||||
@ -1026,6 +1074,10 @@ case $basic_machine in
|
|||||||
basic_machine=hppa1.1-winbond
|
basic_machine=hppa1.1-winbond
|
||||||
os=-proelf
|
os=-proelf
|
||||||
;;
|
;;
|
||||||
|
xbox)
|
||||||
|
basic_machine=i686-pc
|
||||||
|
os=-mingw32
|
||||||
|
;;
|
||||||
xps | xps100)
|
xps | xps100)
|
||||||
basic_machine=xps100-honeywell
|
basic_machine=xps100-honeywell
|
||||||
;;
|
;;
|
||||||
@ -1075,13 +1127,10 @@ case $basic_machine in
|
|||||||
we32k)
|
we32k)
|
||||||
basic_machine=we32k-att
|
basic_machine=we32k-att
|
||||||
;;
|
;;
|
||||||
sh3 | sh4 | sh[34]eb | sh[1234]le | sh[23]ele)
|
sh[1234] | sh[24]a | sh[34]eb | sh[1234]le | sh[23]ele)
|
||||||
basic_machine=sh-unknown
|
basic_machine=sh-unknown
|
||||||
;;
|
;;
|
||||||
sh64)
|
sparc | sparcv8 | sparcv9 | sparcv9b | sparcv9v)
|
||||||
basic_machine=sh64-unknown
|
|
||||||
;;
|
|
||||||
sparc | sparcv8 | sparcv9 | sparcv9b)
|
|
||||||
basic_machine=sparc-sun
|
basic_machine=sparc-sun
|
||||||
;;
|
;;
|
||||||
cydra)
|
cydra)
|
||||||
@ -1154,20 +1203,23 @@ case $os in
|
|||||||
| -aos* \
|
| -aos* \
|
||||||
| -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \
|
| -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \
|
||||||
| -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \
|
| -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \
|
||||||
| -hiux* | -386bsd* | -knetbsd* | -mirbsd* | -netbsd* | -openbsd* \
|
| -hiux* | -386bsd* | -knetbsd* | -mirbsd* | -netbsd* \
|
||||||
|
| -openbsd* | -solidbsd* \
|
||||||
| -ekkobsd* | -kfreebsd* | -freebsd* | -riscix* | -lynxos* \
|
| -ekkobsd* | -kfreebsd* | -freebsd* | -riscix* | -lynxos* \
|
||||||
| -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \
|
| -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \
|
||||||
| -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \
|
| -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \
|
||||||
| -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \
|
| -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \
|
||||||
| -chorusos* | -chorusrdb* \
|
| -chorusos* | -chorusrdb* \
|
||||||
| -cygwin* | -pe* | -psos* | -moss* | -proelf* | -rtems* \
|
| -cygwin* | -pe* | -psos* | -moss* | -proelf* | -rtems* \
|
||||||
| -mingw32* | -linux-gnu* | -linux-uclibc* | -uxpv* | -beos* | -mpeix* | -udk* \
|
| -mingw32* | -linux-gnu* | -linux-newlib* | -linux-uclibc* \
|
||||||
|
| -uxpv* | -beos* | -mpeix* | -udk* \
|
||||||
| -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \
|
| -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \
|
||||||
| -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \
|
| -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \
|
||||||
| -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \
|
| -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \
|
||||||
| -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \
|
| -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \
|
||||||
| -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \
|
| -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \
|
||||||
| -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly*)
|
| -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \
|
||||||
|
| -skyos* | -haiku* | -rdos* | -toppers*)
|
||||||
# Remember, each alternative MUST END IN *, to match a version number.
|
# Remember, each alternative MUST END IN *, to match a version number.
|
||||||
;;
|
;;
|
||||||
-qnx*)
|
-qnx*)
|
||||||
@ -1185,7 +1237,7 @@ case $os in
|
|||||||
os=`echo $os | sed -e 's|nto|nto-qnx|'`
|
os=`echo $os | sed -e 's|nto|nto-qnx|'`
|
||||||
;;
|
;;
|
||||||
-sim | -es1800* | -hms* | -xray | -os68k* | -none* | -v88r* \
|
-sim | -es1800* | -hms* | -xray | -os68k* | -none* | -v88r* \
|
||||||
| -windows* | -osx | -abug | -netware* | -os9* | -beos* \
|
| -windows* | -osx | -abug | -netware* | -os9* | -beos* | -haiku* \
|
||||||
| -macos* | -mpw* | -magic* | -mmixware* | -mon960* | -lnews*)
|
| -macos* | -mpw* | -magic* | -mmixware* | -mon960* | -lnews*)
|
||||||
;;
|
;;
|
||||||
-mac*)
|
-mac*)
|
||||||
@ -1294,6 +1346,9 @@ case $os in
|
|||||||
-kaos*)
|
-kaos*)
|
||||||
os=-kaos
|
os=-kaos
|
||||||
;;
|
;;
|
||||||
|
-zvmoe)
|
||||||
|
os=-zvmoe
|
||||||
|
;;
|
||||||
-none)
|
-none)
|
||||||
;;
|
;;
|
||||||
*)
|
*)
|
||||||
@ -1316,6 +1371,12 @@ else
|
|||||||
# system, and we'll never get to this point.
|
# system, and we'll never get to this point.
|
||||||
|
|
||||||
case $basic_machine in
|
case $basic_machine in
|
||||||
|
score-*)
|
||||||
|
os=-elf
|
||||||
|
;;
|
||||||
|
spu-*)
|
||||||
|
os=-elf
|
||||||
|
;;
|
||||||
*-acorn)
|
*-acorn)
|
||||||
os=-riscix1.2
|
os=-riscix1.2
|
||||||
;;
|
;;
|
||||||
@ -1325,9 +1386,9 @@ case $basic_machine in
|
|||||||
arm*-semi)
|
arm*-semi)
|
||||||
os=-aout
|
os=-aout
|
||||||
;;
|
;;
|
||||||
c4x-* | tic4x-*)
|
c4x-* | tic4x-*)
|
||||||
os=-coff
|
os=-coff
|
||||||
;;
|
;;
|
||||||
# This must come before the *-dec entry.
|
# This must come before the *-dec entry.
|
||||||
pdp10-*)
|
pdp10-*)
|
||||||
os=-tops20
|
os=-tops20
|
||||||
@ -1371,6 +1432,9 @@ case $basic_machine in
|
|||||||
*-be)
|
*-be)
|
||||||
os=-beos
|
os=-beos
|
||||||
;;
|
;;
|
||||||
|
*-haiku)
|
||||||
|
os=-haiku
|
||||||
|
;;
|
||||||
*-ibm)
|
*-ibm)
|
||||||
os=-aix
|
os=-aix
|
||||||
;;
|
;;
|
||||||
@ -1542,7 +1606,7 @@ case $basic_machine in
|
|||||||
esac
|
esac
|
||||||
|
|
||||||
echo $basic_machine$os
|
echo $basic_machine$os
|
||||||
exit 0
|
exit
|
||||||
|
|
||||||
# Local variables:
|
# Local variables:
|
||||||
# eval: (add-hook 'write-file-hooks 'time-stamp)
|
# eval: (add-hook 'write-file-hooks 'time-stamp)
|
||||||
|
14541
smmapdfw/configure
vendored
14541
smmapdfw/configure
vendored
File diff suppressed because it is too large
Load Diff
@ -2,10 +2,11 @@
|
|||||||
# Process this file with autoconf to produce a configure script.
|
# Process this file with autoconf to produce a configure script.
|
||||||
|
|
||||||
|
|
||||||
AC_INIT(smmapdfw, 0.9, woho@hottis.de)
|
AC_INIT(smmapdfw, 0.99-5, woho@hottis.de)
|
||||||
AM_INIT_AUTOMAKE(smmapdfw, 0.9)
|
AM_INIT_AUTOMAKE(smmapdfw, 0.99-5)
|
||||||
AM_MAINTAINER_MODE
|
AM_MAINTAINER_MODE
|
||||||
|
|
||||||
|
|
||||||
AM_CONFIG_HEADER(config.h)
|
AM_CONFIG_HEADER(config.h)
|
||||||
|
|
||||||
AC_LANG_C
|
AC_LANG_C
|
||||||
@ -15,14 +16,14 @@ AC_ARG_WITH(bdb-lib-dir,
|
|||||||
Directory for Berkeley DB library files])],
|
Directory for Berkeley DB library files])],
|
||||||
[ case "$withval" in
|
[ case "$withval" in
|
||||||
no)
|
no)
|
||||||
if test "x$ENABLE_VERIFY_CACHE" = "x1"; then
|
if test "x$ENABLE_CACHE" = "x1"; then
|
||||||
AC_MSG_ERROR(Need bdb-lib-dir)
|
AC_MSG_ERROR(Need bdb-lib-dir)
|
||||||
fi
|
fi
|
||||||
;;
|
;;
|
||||||
yes)
|
yes)
|
||||||
;;
|
;;
|
||||||
*)
|
*)
|
||||||
LDFLAGS="$LDFLAGS -L$withval -R$withval"
|
LDFLAGS="$LDFLAGS -L$withval"
|
||||||
;;
|
;;
|
||||||
esac ]
|
esac ]
|
||||||
)
|
)
|
||||||
@ -32,7 +33,7 @@ AC_ARG_WITH(bdb-inc-dir,
|
|||||||
Directory for Berkeley include files])],
|
Directory for Berkeley include files])],
|
||||||
[ case "$withval" in
|
[ case "$withval" in
|
||||||
no)
|
no)
|
||||||
if test "x$ENABLE_VERIFY_CACHE" = "x1"; then
|
if test "x$ENABLE_CACHE" = "x1"; then
|
||||||
AC_MSG_ERROR(Need bdb-inc-dir)
|
AC_MSG_ERROR(Need bdb-inc-dir)
|
||||||
fi
|
fi
|
||||||
;;
|
;;
|
||||||
@ -44,8 +45,99 @@ AC_ARG_WITH(bdb-inc-dir,
|
|||||||
esac ]
|
esac ]
|
||||||
)
|
)
|
||||||
|
|
||||||
|
WITHOUT_DJBDNS=0
|
||||||
|
AC_ARG_WITH(djbdns-lib-dir,
|
||||||
|
[AC_HELP_STRING(--with-djbdns-lib-dir, [
|
||||||
|
Directory for Bernstein's djbdns library files])],
|
||||||
|
[ case "$withval" in
|
||||||
|
no)
|
||||||
|
WITHOUT_DJBDNS=1
|
||||||
|
;;
|
||||||
|
yes)
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
LDFLAGS="$LDFLAGS -L$withval"
|
||||||
|
;;
|
||||||
|
esac ]
|
||||||
|
)
|
||||||
|
|
||||||
ENABLE_VERIFY_CACHE=1
|
AC_ARG_WITH(djbdns-inc-dir,
|
||||||
|
[AC_HELP_STRING(--with-djbdns-inc-dir, [
|
||||||
|
Directory for Bernstein's djbdns include files])],
|
||||||
|
[ case "$withval" in
|
||||||
|
no)
|
||||||
|
WITHOUT_DJBDNS=1
|
||||||
|
;;
|
||||||
|
yes)
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
CPPFLAGS="$CPPFLAGS -I$withval"
|
||||||
|
;;
|
||||||
|
esac ]
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
WITHOUT_NETSNMP=1
|
||||||
|
AC_ARG_WITH(netsnmp,
|
||||||
|
[AC_HELP_STRING(--with-netsnmp, [
|
||||||
|
With Net-SNMP])],
|
||||||
|
[ case "$withval" in
|
||||||
|
no)
|
||||||
|
WITHOUT_NETSNMP=1
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
WITHOUT_NETSNMP=0
|
||||||
|
;;
|
||||||
|
esac ]
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
AC_ARG_WITH(netsnmp-lib-dir,
|
||||||
|
[AC_HELP_STRING(--with-netsnmp-lib-dir, [
|
||||||
|
Directory for Net-SNMP library files])],
|
||||||
|
[ case "$withval" in
|
||||||
|
no)
|
||||||
|
;;
|
||||||
|
yes)
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
LDFLAGS="$LDFLAGS -L$withval"
|
||||||
|
;;
|
||||||
|
esac ]
|
||||||
|
)
|
||||||
|
|
||||||
|
AC_ARG_WITH(netsnmp-inc-dir,
|
||||||
|
[AC_HELP_STRING(--with-netsnmp-inc-dir, [
|
||||||
|
Directory for Net-SNMP include files])],
|
||||||
|
[ case "$withval" in
|
||||||
|
no)
|
||||||
|
;;
|
||||||
|
yes)
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
CPPFLAGS="$CPPFLAGS -I$withval"
|
||||||
|
;;
|
||||||
|
esac ]
|
||||||
|
)
|
||||||
|
|
||||||
|
NETSNMP_BINDIR=""
|
||||||
|
AC_ARG_WITH(netsnmp-bin-dir,
|
||||||
|
[AC_HELP_STRING(--with-netsnmp-bin-dir, [
|
||||||
|
Directory for Net-SNMP bin files, specifically net-snmp-config])],
|
||||||
|
[ case "$withval" in
|
||||||
|
no)
|
||||||
|
;;
|
||||||
|
yes)
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
NETSNMP_BINDIR="$withval/"
|
||||||
|
;;
|
||||||
|
esac ]
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
ENABLE_CACHE=1
|
||||||
dnl AC_ARG_ENABLE(verify-cache,
|
dnl AC_ARG_ENABLE(verify-cache,
|
||||||
dnl [AC_HELP_STRING(--enable-verify-cache, [
|
dnl [AC_HELP_STRING(--enable-verify-cache, [
|
||||||
dnl Enables the cache in the verify worker.
|
dnl Enables the cache in the verify worker.
|
||||||
@ -80,7 +172,6 @@ dnl cyrus_BUILD=libcyrus_worker.la
|
|||||||
dnl )
|
dnl )
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
# Checks for programs.
|
# Checks for programs.
|
||||||
AC_PROG_CC
|
AC_PROG_CC
|
||||||
AC_PROG_LIBTOOL
|
AC_PROG_LIBTOOL
|
||||||
@ -100,11 +191,21 @@ AC_CHECK_LIB(pthread, pthread_create,
|
|||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
AC_CHECK_LIB([resolv], [inet_aton])
|
AC_CHECK_LIB([resolv], [inet_aton])
|
||||||
AC_CHECK_LIB([socket], [connect])
|
AC_CHECK_LIB([socket], [connect])
|
||||||
|
|
||||||
|
|
||||||
|
ENABLE_NETSNMP=0
|
||||||
|
if test "x$WITHOUT_NETSNMP" = "x0"; then
|
||||||
|
NET_SNMP_CONFIG=$NETSNMP_BINDIR"net-snmp-config"
|
||||||
|
NETSNMP_LIBS_1=`$NET_SNMP_CONFIG --agent-libs`
|
||||||
|
NETSNMP_LIBS_2=`$NET_SNMP_CONFIG --libs`
|
||||||
|
LIBS="$LIBS $NETSNMP_LIBS_1 $NETSNMP_LIBS_2"
|
||||||
|
ENABLE_NETSNMP=1
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
# Checks for header files.
|
# Checks for header files.
|
||||||
AC_HEADER_STDC
|
AC_HEADER_STDC
|
||||||
AC_CHECK_HEADERS([arpa/inet.h fcntl.h netinet/in.h stdlib.h string.h strings.h sys/socket.h syslog.h unistd.h dlfcn.h])
|
AC_CHECK_HEADERS([arpa/inet.h fcntl.h netinet/in.h stdlib.h string.h strings.h sys/socket.h syslog.h unistd.h dlfcn.h])
|
||||||
@ -130,7 +231,7 @@ AC_CHECK_FUNCS([inet_ntoa memset select socket strchr strdup strerror strrchr st
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
if test "x$ENABLE_VERIFY_CACHE" = "x1"; then
|
if test "x$ENABLE_CACHE" = "x1"; then
|
||||||
AC_CHECK_LIB([db], [__db_ndbm_open],
|
AC_CHECK_LIB([db], [__db_ndbm_open],
|
||||||
[ BDB_LIBS="-ldb" ],
|
[ BDB_LIBS="-ldb" ],
|
||||||
AC_CHECK_LIB([db], [__db_ndbm_open_4002],
|
AC_CHECK_LIB([db], [__db_ndbm_open_4002],
|
||||||
@ -148,12 +249,18 @@ fi
|
|||||||
|
|
||||||
AC_SUBST(BDB_LIBS)
|
AC_SUBST(BDB_LIBS)
|
||||||
|
|
||||||
if test "x$BDB_NOT_FOUND" = "x1"; then
|
if test "x$WITHOUT_DJBDNS" = "x0"; then
|
||||||
echo "*** no db/dbm found, disabling verify cache"
|
AC_CHECK_LIB([djbdns], [dns_transmit_start])
|
||||||
ENABLE_VERIFY_CACHE=0
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
AC_DEFINE_UNQUOTED(ENABLE_VERIFY_CACHE, ${ENABLE_VERIFY_CACHE}, [enable verify cache])
|
|
||||||
|
if test "x$BDB_NOT_FOUND" = "x1"; then
|
||||||
|
echo "*** no db/dbm found, disabling verify cache"
|
||||||
|
ENABLE_CACHE=0
|
||||||
|
fi
|
||||||
|
|
||||||
|
AC_DEFINE_UNQUOTED(ENABLE_CACHE, ${ENABLE_CACHE}, [enable cache])
|
||||||
|
AC_DEFINE_UNQUOTED(ENABLE_NETSNMP, ${ENABLE_NETSNMP}, [enable Net-SNMP])
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@ -163,6 +270,6 @@ dnl AC_SUBST(test_BUILD)
|
|||||||
dnl AC_SUBST(cyrus_BUILD)
|
dnl AC_SUBST(cyrus_BUILD)
|
||||||
|
|
||||||
|
|
||||||
AC_CONFIG_FILES([Makefile libsmmapdfw/Makefile smmapd/Makefile test_worker/Makefile verify_worker/Makefile cyrus_worker/Makefile])
|
AC_CONFIG_FILES([Makefile libsmmapdfw/Makefile smmapd/Makefile test_worker/Makefile verify_worker/Makefile cyrus_worker/Makefile recpverify_worker/Makefile rateconn_worker/Makefile doc/Makefile m4/Makefile])
|
||||||
|
|
||||||
AC_OUTPUT
|
AC_OUTPUT
|
||||||
|
@ -1,6 +1,8 @@
|
|||||||
# Makefile.in generated automatically by automake 1.4-p6 from Makefile.am
|
# Makefile.in generated by automake 1.9.6 from Makefile.am.
|
||||||
|
# @configure_input@
|
||||||
|
|
||||||
# Copyright (C) 1994, 1995-8, 1999, 2001 Free Software Foundation, Inc.
|
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
|
||||||
|
# 2003, 2004, 2005 Free Software Foundation, Inc.
|
||||||
# This Makefile.in is free software; the Free Software Foundation
|
# This Makefile.in is free software; the Free Software Foundation
|
||||||
# gives unlimited permission to copy and/or distribute it,
|
# gives unlimited permission to copy and/or distribute it,
|
||||||
# with or without modifications, as long as this notice is preserved.
|
# with or without modifications, as long as this notice is preserved.
|
||||||
@ -10,180 +12,268 @@
|
|||||||
# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
|
# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
|
||||||
# PARTICULAR PURPOSE.
|
# PARTICULAR PURPOSE.
|
||||||
|
|
||||||
|
@SET_MAKE@
|
||||||
SHELL = @SHELL@
|
|
||||||
|
|
||||||
srcdir = @srcdir@
|
srcdir = @srcdir@
|
||||||
top_srcdir = @top_srcdir@
|
top_srcdir = @top_srcdir@
|
||||||
VPATH = @srcdir@
|
VPATH = @srcdir@
|
||||||
prefix = @prefix@
|
|
||||||
exec_prefix = @exec_prefix@
|
|
||||||
|
|
||||||
bindir = @bindir@
|
|
||||||
sbindir = @sbindir@
|
|
||||||
libexecdir = @libexecdir@
|
|
||||||
datadir = @datadir@
|
|
||||||
sysconfdir = @sysconfdir@
|
|
||||||
sharedstatedir = @sharedstatedir@
|
|
||||||
localstatedir = @localstatedir@
|
|
||||||
libdir = @libdir@
|
|
||||||
infodir = @infodir@
|
|
||||||
mandir = @mandir@
|
|
||||||
includedir = @includedir@
|
|
||||||
oldincludedir = /usr/include
|
|
||||||
|
|
||||||
DESTDIR =
|
|
||||||
|
|
||||||
pkgdatadir = $(datadir)/@PACKAGE@
|
pkgdatadir = $(datadir)/@PACKAGE@
|
||||||
pkglibdir = $(libdir)/@PACKAGE@
|
pkglibdir = $(libdir)/@PACKAGE@
|
||||||
pkgincludedir = $(includedir)/@PACKAGE@
|
pkgincludedir = $(includedir)/@PACKAGE@
|
||||||
|
|
||||||
top_builddir = ..
|
top_builddir = ..
|
||||||
|
am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
|
||||||
ACLOCAL = @ACLOCAL@
|
|
||||||
AUTOCONF = @AUTOCONF@
|
|
||||||
AUTOMAKE = @AUTOMAKE@
|
|
||||||
AUTOHEADER = @AUTOHEADER@
|
|
||||||
|
|
||||||
INSTALL = @INSTALL@
|
INSTALL = @INSTALL@
|
||||||
INSTALL_PROGRAM = @INSTALL_PROGRAM@ $(AM_INSTALL_PROGRAM_FLAGS)
|
install_sh_DATA = $(install_sh) -c -m 644
|
||||||
INSTALL_DATA = @INSTALL_DATA@
|
install_sh_PROGRAM = $(install_sh) -c
|
||||||
INSTALL_SCRIPT = @INSTALL_SCRIPT@
|
install_sh_SCRIPT = $(install_sh) -c
|
||||||
transform = @program_transform_name@
|
INSTALL_HEADER = $(INSTALL_DATA)
|
||||||
|
transform = $(program_transform_name)
|
||||||
NORMAL_INSTALL = :
|
NORMAL_INSTALL = :
|
||||||
PRE_INSTALL = :
|
PRE_INSTALL = :
|
||||||
POST_INSTALL = :
|
POST_INSTALL = :
|
||||||
NORMAL_UNINSTALL = :
|
NORMAL_UNINSTALL = :
|
||||||
PRE_UNINSTALL = :
|
PRE_UNINSTALL = :
|
||||||
POST_UNINSTALL = :
|
POST_UNINSTALL = :
|
||||||
host_alias = @host_alias@
|
build_triplet = @build@
|
||||||
host_triplet = @host@
|
host_triplet = @host@
|
||||||
|
subdir = cyrus_worker
|
||||||
|
DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
|
||||||
|
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
|
||||||
|
am__aclocal_m4_deps = $(top_srcdir)/configure.ac
|
||||||
|
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
|
||||||
|
$(ACLOCAL_M4)
|
||||||
|
mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
|
||||||
|
CONFIG_HEADER = $(top_builddir)/config.h
|
||||||
|
CONFIG_CLEAN_FILES =
|
||||||
|
am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
|
||||||
|
am__vpath_adj = case $$p in \
|
||||||
|
$(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
|
||||||
|
*) f=$$p;; \
|
||||||
|
esac;
|
||||||
|
am__strip_dir = `echo $$p | sed -e 's|^.*/||'`;
|
||||||
|
am__installdirs = "$(DESTDIR)$(libdir)"
|
||||||
|
libLTLIBRARIES_INSTALL = $(INSTALL)
|
||||||
|
LTLIBRARIES = $(lib_LTLIBRARIES)
|
||||||
|
libcyrus_worker_la_DEPENDENCIES = ../libsmmapdfw/libsmmapdfw.la
|
||||||
|
am_libcyrus_worker_la_OBJECTS = cyrus_worker.lo
|
||||||
|
libcyrus_worker_la_OBJECTS = $(am_libcyrus_worker_la_OBJECTS)
|
||||||
|
DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir)
|
||||||
|
depcomp = $(SHELL) $(top_srcdir)/depcomp
|
||||||
|
am__depfiles_maybe = depfiles
|
||||||
|
COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
|
||||||
|
$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
|
||||||
|
LTCOMPILE = $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) \
|
||||||
|
$(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
|
||||||
|
$(AM_CFLAGS) $(CFLAGS)
|
||||||
|
CCLD = $(CC)
|
||||||
|
LINK = $(LIBTOOL) --tag=CC --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
|
||||||
|
$(AM_LDFLAGS) $(LDFLAGS) -o $@
|
||||||
|
SOURCES = $(libcyrus_worker_la_SOURCES)
|
||||||
|
DIST_SOURCES = $(libcyrus_worker_la_SOURCES)
|
||||||
|
ETAGS = etags
|
||||||
|
CTAGS = ctags
|
||||||
|
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
|
||||||
|
ACLOCAL = @ACLOCAL@
|
||||||
|
AMDEP_FALSE = @AMDEP_FALSE@
|
||||||
|
AMDEP_TRUE = @AMDEP_TRUE@
|
||||||
|
AMTAR = @AMTAR@
|
||||||
AR = @AR@
|
AR = @AR@
|
||||||
AS = @AS@
|
AUTOCONF = @AUTOCONF@
|
||||||
|
AUTOHEADER = @AUTOHEADER@
|
||||||
|
AUTOMAKE = @AUTOMAKE@
|
||||||
|
AWK = @AWK@
|
||||||
BDB_LIBS = @BDB_LIBS@
|
BDB_LIBS = @BDB_LIBS@
|
||||||
CC = @CC@
|
CC = @CC@
|
||||||
|
CCDEPMODE = @CCDEPMODE@
|
||||||
|
CFLAGS = @CFLAGS@
|
||||||
|
CPP = @CPP@
|
||||||
|
CPPFLAGS = @CPPFLAGS@
|
||||||
CXX = @CXX@
|
CXX = @CXX@
|
||||||
CXXCPP = @CXXCPP@
|
CXXCPP = @CXXCPP@
|
||||||
DLLTOOL = @DLLTOOL@
|
CXXDEPMODE = @CXXDEPMODE@
|
||||||
|
CXXFLAGS = @CXXFLAGS@
|
||||||
|
CYGPATH_W = @CYGPATH_W@
|
||||||
|
DEFS = @DEFS@
|
||||||
|
DEPDIR = @DEPDIR@
|
||||||
ECHO = @ECHO@
|
ECHO = @ECHO@
|
||||||
|
ECHO_C = @ECHO_C@
|
||||||
|
ECHO_N = @ECHO_N@
|
||||||
|
ECHO_T = @ECHO_T@
|
||||||
EGREP = @EGREP@
|
EGREP = @EGREP@
|
||||||
EXEEXT = @EXEEXT@
|
EXEEXT = @EXEEXT@
|
||||||
F77 = @F77@
|
F77 = @F77@
|
||||||
GCJ = @GCJ@
|
FFLAGS = @FFLAGS@
|
||||||
GCJFLAGS = @GCJFLAGS@
|
GREP = @GREP@
|
||||||
HAVE_LIB = @HAVE_LIB@
|
INSTALL_DATA = @INSTALL_DATA@
|
||||||
LIB = @LIB@
|
INSTALL_PROGRAM = @INSTALL_PROGRAM@
|
||||||
|
INSTALL_SCRIPT = @INSTALL_SCRIPT@
|
||||||
|
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
|
||||||
|
LDFLAGS = @LDFLAGS@
|
||||||
|
LIBOBJS = @LIBOBJS@
|
||||||
|
LIBS = @LIBS@
|
||||||
LIBTOOL = @LIBTOOL@
|
LIBTOOL = @LIBTOOL@
|
||||||
LN_S = @LN_S@
|
LN_S = @LN_S@
|
||||||
LTLIB = @LTLIB@
|
LTLIBOBJS = @LTLIBOBJS@
|
||||||
MAINT = @MAINT@
|
MAINT = @MAINT@
|
||||||
|
MAINTAINER_MODE_FALSE = @MAINTAINER_MODE_FALSE@
|
||||||
|
MAINTAINER_MODE_TRUE = @MAINTAINER_MODE_TRUE@
|
||||||
MAKEINFO = @MAKEINFO@
|
MAKEINFO = @MAKEINFO@
|
||||||
OBJDUMP = @OBJDUMP@
|
|
||||||
OBJEXT = @OBJEXT@
|
OBJEXT = @OBJEXT@
|
||||||
PACKAGE = @PACKAGE@
|
PACKAGE = @PACKAGE@
|
||||||
|
PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
|
||||||
|
PACKAGE_NAME = @PACKAGE_NAME@
|
||||||
|
PACKAGE_STRING = @PACKAGE_STRING@
|
||||||
|
PACKAGE_TARNAME = @PACKAGE_TARNAME@
|
||||||
|
PACKAGE_VERSION = @PACKAGE_VERSION@
|
||||||
|
PATH_SEPARATOR = @PATH_SEPARATOR@
|
||||||
RANLIB = @RANLIB@
|
RANLIB = @RANLIB@
|
||||||
RC = @RC@
|
SED = @SED@
|
||||||
|
SET_MAKE = @SET_MAKE@
|
||||||
|
SHELL = @SHELL@
|
||||||
STRIP = @STRIP@
|
STRIP = @STRIP@
|
||||||
VERSION = @VERSION@
|
VERSION = @VERSION@
|
||||||
|
ac_ct_CC = @ac_ct_CC@
|
||||||
|
ac_ct_CXX = @ac_ct_CXX@
|
||||||
|
ac_ct_F77 = @ac_ct_F77@
|
||||||
|
am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
|
||||||
|
am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
|
||||||
|
am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@
|
||||||
|
am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@
|
||||||
|
am__include = @am__include@
|
||||||
|
am__leading_dot = @am__leading_dot@
|
||||||
|
am__quote = @am__quote@
|
||||||
|
am__tar = @am__tar@
|
||||||
|
am__untar = @am__untar@
|
||||||
|
bindir = @bindir@
|
||||||
|
build = @build@
|
||||||
|
build_alias = @build_alias@
|
||||||
|
build_cpu = @build_cpu@
|
||||||
|
build_os = @build_os@
|
||||||
|
build_vendor = @build_vendor@
|
||||||
|
datadir = @datadir@
|
||||||
|
datarootdir = @datarootdir@
|
||||||
|
docdir = @docdir@
|
||||||
|
dvidir = @dvidir@
|
||||||
|
exec_prefix = @exec_prefix@
|
||||||
|
host = @host@
|
||||||
|
host_alias = @host_alias@
|
||||||
|
host_cpu = @host_cpu@
|
||||||
|
host_os = @host_os@
|
||||||
|
host_vendor = @host_vendor@
|
||||||
|
htmldir = @htmldir@
|
||||||
|
includedir = @includedir@
|
||||||
|
infodir = @infodir@
|
||||||
|
install_sh = @install_sh@
|
||||||
|
libdir = @libdir@
|
||||||
|
libexecdir = @libexecdir@
|
||||||
|
localedir = @localedir@
|
||||||
|
localstatedir = @localstatedir@
|
||||||
|
mandir = @mandir@
|
||||||
|
mkdir_p = @mkdir_p@
|
||||||
|
oldincludedir = @oldincludedir@
|
||||||
|
pdfdir = @pdfdir@
|
||||||
|
prefix = @prefix@
|
||||||
|
program_transform_name = @program_transform_name@
|
||||||
|
psdir = @psdir@
|
||||||
|
sbindir = @sbindir@
|
||||||
|
sharedstatedir = @sharedstatedir@
|
||||||
|
sysconfdir = @sysconfdir@
|
||||||
|
target_alias = @target_alias@
|
||||||
lib_LTLIBRARIES = libcyrus_worker.la
|
lib_LTLIBRARIES = libcyrus_worker.la
|
||||||
libcyrus_worker_la_SOURCES = cyrus_worker.c
|
libcyrus_worker_la_SOURCES = cyrus_worker.c
|
||||||
libcyrus_worker_la_LIBADD = ../libsmmapdfw/libsmmapdfw.la
|
libcyrus_worker_la_LIBADD = ../libsmmapdfw/libsmmapdfw.la
|
||||||
|
|
||||||
INCLUDES = -I../libsmmapdfw
|
INCLUDES = -I../libsmmapdfw
|
||||||
mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
|
all: all-am
|
||||||
CONFIG_HEADER = ../config.h
|
|
||||||
CONFIG_CLEAN_FILES =
|
|
||||||
LTLIBRARIES = $(lib_LTLIBRARIES)
|
|
||||||
|
|
||||||
|
|
||||||
DEFS = @DEFS@ -I. -I$(srcdir) -I..
|
|
||||||
CPPFLAGS = @CPPFLAGS@
|
|
||||||
LDFLAGS = @LDFLAGS@
|
|
||||||
LIBS = @LIBS@
|
|
||||||
libcyrus_worker_la_LDFLAGS =
|
|
||||||
libcyrus_worker_la_DEPENDENCIES = ../libsmmapdfw/libsmmapdfw.la
|
|
||||||
libcyrus_worker_la_OBJECTS = cyrus_worker.lo
|
|
||||||
CFLAGS = @CFLAGS@
|
|
||||||
COMPILE = $(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
|
|
||||||
LTCOMPILE = $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
|
|
||||||
CCLD = $(CC)
|
|
||||||
LINK = $(LIBTOOL) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(LDFLAGS) -o $@
|
|
||||||
DIST_COMMON = Makefile.am Makefile.in
|
|
||||||
|
|
||||||
|
|
||||||
DISTFILES = $(DIST_COMMON) $(SOURCES) $(HEADERS) $(TEXINFOS) $(EXTRA_DIST)
|
|
||||||
|
|
||||||
TAR = tar
|
|
||||||
GZIP_ENV = --best
|
|
||||||
DEP_FILES = .deps/cyrus_worker.P
|
|
||||||
SOURCES = $(libcyrus_worker_la_SOURCES)
|
|
||||||
OBJECTS = $(libcyrus_worker_la_OBJECTS)
|
|
||||||
|
|
||||||
all: all-redirect
|
|
||||||
.SUFFIXES:
|
.SUFFIXES:
|
||||||
.SUFFIXES: .S .c .lo .o .obj .s
|
.SUFFIXES: .c .lo .o .obj
|
||||||
$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ Makefile.am $(top_srcdir)/configure.ac $(ACLOCAL_M4)
|
$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps)
|
||||||
cd $(top_srcdir) && $(AUTOMAKE) --gnu cyrus_worker/Makefile
|
@for dep in $?; do \
|
||||||
|
case '$(am__configure_deps)' in \
|
||||||
|
*$$dep*) \
|
||||||
|
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
|
||||||
|
&& exit 0; \
|
||||||
|
exit 1;; \
|
||||||
|
esac; \
|
||||||
|
done; \
|
||||||
|
echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu cyrus_worker/Makefile'; \
|
||||||
|
cd $(top_srcdir) && \
|
||||||
|
$(AUTOMAKE) --gnu cyrus_worker/Makefile
|
||||||
|
.PRECIOUS: Makefile
|
||||||
|
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
|
||||||
|
@case '$?' in \
|
||||||
|
*config.status*) \
|
||||||
|
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
|
||||||
|
*) \
|
||||||
|
echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
|
||||||
|
cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
|
||||||
|
esac;
|
||||||
|
|
||||||
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status $(BUILT_SOURCES)
|
$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
|
||||||
cd $(top_builddir) \
|
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
|
||||||
&& CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status
|
|
||||||
|
|
||||||
|
|
||||||
mostlyclean-libLTLIBRARIES:
|
|
||||||
|
|
||||||
clean-libLTLIBRARIES:
|
|
||||||
-test -z "$(lib_LTLIBRARIES)" || rm -f $(lib_LTLIBRARIES)
|
|
||||||
|
|
||||||
distclean-libLTLIBRARIES:
|
|
||||||
|
|
||||||
maintainer-clean-libLTLIBRARIES:
|
|
||||||
|
|
||||||
|
$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
|
||||||
|
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
|
||||||
|
$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
|
||||||
|
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
|
||||||
install-libLTLIBRARIES: $(lib_LTLIBRARIES)
|
install-libLTLIBRARIES: $(lib_LTLIBRARIES)
|
||||||
@$(NORMAL_INSTALL)
|
@$(NORMAL_INSTALL)
|
||||||
$(mkinstalldirs) $(DESTDIR)$(libdir)
|
test -z "$(libdir)" || $(mkdir_p) "$(DESTDIR)$(libdir)"
|
||||||
@list='$(lib_LTLIBRARIES)'; for p in $$list; do \
|
@list='$(lib_LTLIBRARIES)'; for p in $$list; do \
|
||||||
if test -f $$p; then \
|
if test -f $$p; then \
|
||||||
echo "$(LIBTOOL) --mode=install $(INSTALL) $$p $(DESTDIR)$(libdir)/$$p"; \
|
f=$(am__strip_dir) \
|
||||||
$(LIBTOOL) --mode=install $(INSTALL) $$p $(DESTDIR)$(libdir)/$$p; \
|
echo " $(LIBTOOL) --mode=install $(libLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) '$$p' '$(DESTDIR)$(libdir)/$$f'"; \
|
||||||
|
$(LIBTOOL) --mode=install $(libLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) "$$p" "$(DESTDIR)$(libdir)/$$f"; \
|
||||||
else :; fi; \
|
else :; fi; \
|
||||||
done
|
done
|
||||||
|
|
||||||
uninstall-libLTLIBRARIES:
|
uninstall-libLTLIBRARIES:
|
||||||
@$(NORMAL_UNINSTALL)
|
@$(NORMAL_UNINSTALL)
|
||||||
list='$(lib_LTLIBRARIES)'; for p in $$list; do \
|
@set -x; list='$(lib_LTLIBRARIES)'; for p in $$list; do \
|
||||||
$(LIBTOOL) --mode=uninstall rm -f $(DESTDIR)$(libdir)/$$p; \
|
p=$(am__strip_dir) \
|
||||||
|
echo " $(LIBTOOL) --mode=uninstall rm -f '$(DESTDIR)$(libdir)/$$p'"; \
|
||||||
|
$(LIBTOOL) --mode=uninstall rm -f "$(DESTDIR)$(libdir)/$$p"; \
|
||||||
done
|
done
|
||||||
|
|
||||||
# FIXME: We should only use cygpath when building on Windows,
|
clean-libLTLIBRARIES:
|
||||||
# and only if it is available.
|
-test -z "$(lib_LTLIBRARIES)" || rm -f $(lib_LTLIBRARIES)
|
||||||
.c.obj:
|
@list='$(lib_LTLIBRARIES)'; for p in $$list; do \
|
||||||
$(COMPILE) -c `cygpath -w $<`
|
dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \
|
||||||
|
test "$$dir" != "$$p" || dir=.; \
|
||||||
.s.o:
|
echo "rm -f \"$${dir}/so_locations\""; \
|
||||||
$(COMPILE) -c $<
|
rm -f "$${dir}/so_locations"; \
|
||||||
|
done
|
||||||
.S.o:
|
libcyrus_worker.la: $(libcyrus_worker_la_OBJECTS) $(libcyrus_worker_la_DEPENDENCIES)
|
||||||
$(COMPILE) -c $<
|
$(LINK) -rpath $(libdir) $(libcyrus_worker_la_LDFLAGS) $(libcyrus_worker_la_OBJECTS) $(libcyrus_worker_la_LIBADD) $(LIBS)
|
||||||
|
|
||||||
mostlyclean-compile:
|
mostlyclean-compile:
|
||||||
-rm -f *.o core *.core
|
|
||||||
-rm -f *.$(OBJEXT)
|
-rm -f *.$(OBJEXT)
|
||||||
|
|
||||||
clean-compile:
|
|
||||||
|
|
||||||
distclean-compile:
|
distclean-compile:
|
||||||
-rm -f *.tab.c
|
-rm -f *.tab.c
|
||||||
|
|
||||||
maintainer-clean-compile:
|
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cyrus_worker.Plo@am__quote@
|
||||||
|
|
||||||
.s.lo:
|
.c.o:
|
||||||
$(LIBTOOL) --mode=compile $(COMPILE) -c $<
|
@am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \
|
||||||
|
@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
|
||||||
|
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
|
||||||
|
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||||
|
@am__fastdepCC_FALSE@ $(COMPILE) -c $<
|
||||||
|
|
||||||
.S.lo:
|
.c.obj:
|
||||||
$(LIBTOOL) --mode=compile $(COMPILE) -c $<
|
@am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ `$(CYGPATH_W) '$<'`; \
|
||||||
|
@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
|
||||||
|
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
|
||||||
|
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||||
|
@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'`
|
||||||
|
|
||||||
|
.c.lo:
|
||||||
|
@am__fastdepCC_TRUE@ if $(LTCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \
|
||||||
|
@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Plo"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
|
||||||
|
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
|
||||||
|
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||||
|
@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $<
|
||||||
|
|
||||||
mostlyclean-libtool:
|
mostlyclean-libtool:
|
||||||
-rm -f *.lo
|
-rm -f *.lo
|
||||||
@ -192,170 +282,178 @@ clean-libtool:
|
|||||||
-rm -rf .libs _libs
|
-rm -rf .libs _libs
|
||||||
|
|
||||||
distclean-libtool:
|
distclean-libtool:
|
||||||
|
-rm -f libtool
|
||||||
|
uninstall-info-am:
|
||||||
|
|
||||||
maintainer-clean-libtool:
|
ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
|
||||||
|
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
|
||||||
libcyrus_worker.la: $(libcyrus_worker_la_OBJECTS) $(libcyrus_worker_la_DEPENDENCIES)
|
unique=`for i in $$list; do \
|
||||||
$(LINK) -rpath $(libdir) $(libcyrus_worker_la_LDFLAGS) $(libcyrus_worker_la_OBJECTS) $(libcyrus_worker_la_LIBADD) $(LIBS)
|
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
|
||||||
|
done | \
|
||||||
|
$(AWK) ' { files[$$0] = 1; } \
|
||||||
|
END { for (i in files) print i; }'`; \
|
||||||
|
mkid -fID $$unique
|
||||||
tags: TAGS
|
tags: TAGS
|
||||||
|
|
||||||
ID: $(HEADERS) $(SOURCES) $(LISP)
|
TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
|
||||||
list='$(SOURCES) $(HEADERS)'; \
|
$(TAGS_FILES) $(LISP)
|
||||||
unique=`for i in $$list; do echo $$i; done | \
|
|
||||||
awk ' { files[$$0] = 1; } \
|
|
||||||
END { for (i in files) print i; }'`; \
|
|
||||||
here=`pwd` && cd $(srcdir) \
|
|
||||||
&& mkid -f$$here/ID $$unique $(LISP)
|
|
||||||
|
|
||||||
TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) $(LISP)
|
|
||||||
tags=; \
|
tags=; \
|
||||||
here=`pwd`; \
|
here=`pwd`; \
|
||||||
list='$(SOURCES) $(HEADERS)'; \
|
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
|
||||||
unique=`for i in $$list; do echo $$i; done | \
|
unique=`for i in $$list; do \
|
||||||
awk ' { files[$$0] = 1; } \
|
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
|
||||||
|
done | \
|
||||||
|
$(AWK) ' { files[$$0] = 1; } \
|
||||||
END { for (i in files) print i; }'`; \
|
END { for (i in files) print i; }'`; \
|
||||||
test -z "$(ETAGS_ARGS)$$unique$(LISP)$$tags" \
|
if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
|
||||||
|| (cd $(srcdir) && etags -o $$here/TAGS $(ETAGS_ARGS) $$tags $$unique $(LISP))
|
test -n "$$unique" || unique=$$empty_fix; \
|
||||||
|
$(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
|
||||||
|
$$tags $$unique; \
|
||||||
|
fi
|
||||||
|
ctags: CTAGS
|
||||||
|
CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
|
||||||
|
$(TAGS_FILES) $(LISP)
|
||||||
|
tags=; \
|
||||||
|
here=`pwd`; \
|
||||||
|
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
|
||||||
|
unique=`for i in $$list; do \
|
||||||
|
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
|
||||||
|
done | \
|
||||||
|
$(AWK) ' { files[$$0] = 1; } \
|
||||||
|
END { for (i in files) print i; }'`; \
|
||||||
|
test -z "$(CTAGS_ARGS)$$tags$$unique" \
|
||||||
|
|| $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
|
||||||
|
$$tags $$unique
|
||||||
|
|
||||||
mostlyclean-tags:
|
GTAGS:
|
||||||
|
here=`$(am__cd) $(top_builddir) && pwd` \
|
||||||
clean-tags:
|
&& cd $(top_srcdir) \
|
||||||
|
&& gtags -i $(GTAGS_ARGS) $$here
|
||||||
|
|
||||||
distclean-tags:
|
distclean-tags:
|
||||||
-rm -f TAGS ID
|
-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
|
||||||
|
|
||||||
maintainer-clean-tags:
|
|
||||||
|
|
||||||
distdir = $(top_builddir)/$(PACKAGE)-$(VERSION)/$(subdir)
|
|
||||||
|
|
||||||
subdir = cyrus_worker
|
|
||||||
|
|
||||||
distdir: $(DISTFILES)
|
distdir: $(DISTFILES)
|
||||||
here=`cd $(top_builddir) && pwd`; \
|
@srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
|
||||||
top_distdir=`cd $(top_distdir) && pwd`; \
|
topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \
|
||||||
distdir=`cd $(distdir) && pwd`; \
|
list='$(DISTFILES)'; for file in $$list; do \
|
||||||
cd $(top_srcdir) \
|
case $$file in \
|
||||||
&& $(AUTOMAKE) --include-deps --build-dir=$$here --srcdir-name=$(top_srcdir) --output-dir=$$top_distdir --gnu cyrus_worker/Makefile
|
$(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \
|
||||||
@for file in $(DISTFILES); do \
|
$(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \
|
||||||
d=$(srcdir); \
|
esac; \
|
||||||
|
if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
|
||||||
|
dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
|
||||||
|
if test "$$dir" != "$$file" && test "$$dir" != "."; then \
|
||||||
|
dir="/$$dir"; \
|
||||||
|
$(mkdir_p) "$(distdir)$$dir"; \
|
||||||
|
else \
|
||||||
|
dir=''; \
|
||||||
|
fi; \
|
||||||
if test -d $$d/$$file; then \
|
if test -d $$d/$$file; then \
|
||||||
cp -pr $$d/$$file $(distdir)/$$file; \
|
if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
|
||||||
|
cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
|
||||||
|
fi; \
|
||||||
|
cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
|
||||||
else \
|
else \
|
||||||
test -f $(distdir)/$$file \
|
test -f $(distdir)/$$file \
|
||||||
|| ln $$d/$$file $(distdir)/$$file 2> /dev/null \
|
|| cp -p $$d/$$file $(distdir)/$$file \
|
||||||
|| cp -p $$d/$$file $(distdir)/$$file || :; \
|
|| exit 1; \
|
||||||
fi; \
|
fi; \
|
||||||
done
|
done
|
||||||
|
|
||||||
DEPS_MAGIC := $(shell mkdir .deps > /dev/null 2>&1 || :)
|
|
||||||
|
|
||||||
-include $(DEP_FILES)
|
|
||||||
|
|
||||||
mostlyclean-depend:
|
|
||||||
|
|
||||||
clean-depend:
|
|
||||||
|
|
||||||
distclean-depend:
|
|
||||||
-rm -rf .deps
|
|
||||||
|
|
||||||
maintainer-clean-depend:
|
|
||||||
|
|
||||||
%.o: %.c
|
|
||||||
@echo '$(COMPILE) -c $<'; \
|
|
||||||
$(COMPILE) -Wp,-MD,.deps/$(*F).pp -c $<
|
|
||||||
@-cp .deps/$(*F).pp .deps/$(*F).P; \
|
|
||||||
tr ' ' '\012' < .deps/$(*F).pp \
|
|
||||||
| sed -e 's/^\\$$//' -e '/^$$/ d' -e '/:$$/ d' -e 's/$$/ :/' \
|
|
||||||
>> .deps/$(*F).P; \
|
|
||||||
rm .deps/$(*F).pp
|
|
||||||
|
|
||||||
%.lo: %.c
|
|
||||||
@echo '$(LTCOMPILE) -c $<'; \
|
|
||||||
$(LTCOMPILE) -Wp,-MD,.deps/$(*F).pp -c $<
|
|
||||||
@-sed -e 's/^\([^:]*\)\.o[ ]*:/\1.lo \1.o :/' \
|
|
||||||
< .deps/$(*F).pp > .deps/$(*F).P; \
|
|
||||||
tr ' ' '\012' < .deps/$(*F).pp \
|
|
||||||
| sed -e 's/^\\$$//' -e '/^$$/ d' -e '/:$$/ d' -e 's/$$/ :/' \
|
|
||||||
>> .deps/$(*F).P; \
|
|
||||||
rm -f .deps/$(*F).pp
|
|
||||||
info-am:
|
|
||||||
info: info-am
|
|
||||||
dvi-am:
|
|
||||||
dvi: dvi-am
|
|
||||||
check-am: all-am
|
check-am: all-am
|
||||||
check: check-am
|
check: check-am
|
||||||
installcheck-am:
|
all-am: Makefile $(LTLIBRARIES)
|
||||||
installcheck: installcheck-am
|
installdirs:
|
||||||
install-exec-am: install-libLTLIBRARIES
|
for dir in "$(DESTDIR)$(libdir)"; do \
|
||||||
|
test -z "$$dir" || $(mkdir_p) "$$dir"; \
|
||||||
|
done
|
||||||
|
install: install-am
|
||||||
install-exec: install-exec-am
|
install-exec: install-exec-am
|
||||||
|
|
||||||
install-data-am:
|
|
||||||
install-data: install-data-am
|
install-data: install-data-am
|
||||||
|
uninstall: uninstall-am
|
||||||
|
|
||||||
install-am: all-am
|
install-am: all-am
|
||||||
@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
|
@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
|
||||||
install: install-am
|
|
||||||
uninstall-am: uninstall-libLTLIBRARIES
|
installcheck: installcheck-am
|
||||||
uninstall: uninstall-am
|
|
||||||
all-am: Makefile $(LTLIBRARIES)
|
|
||||||
all-redirect: all-am
|
|
||||||
install-strip:
|
install-strip:
|
||||||
$(MAKE) $(AM_MAKEFLAGS) AM_INSTALL_PROGRAM_FLAGS=-s install
|
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
|
||||||
installdirs:
|
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
|
||||||
$(mkinstalldirs) $(DESTDIR)$(libdir)
|
`test -z '$(STRIP)' || \
|
||||||
|
echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
|
||||||
|
|
||||||
mostlyclean-generic:
|
mostlyclean-generic:
|
||||||
|
|
||||||
clean-generic:
|
clean-generic:
|
||||||
|
|
||||||
distclean-generic:
|
distclean-generic:
|
||||||
-rm -f Makefile $(CONFIG_CLEAN_FILES)
|
-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
|
||||||
-rm -f config.cache config.log stamp-h stamp-h[0-9]*
|
|
||||||
|
|
||||||
maintainer-clean-generic:
|
maintainer-clean-generic:
|
||||||
mostlyclean-am: mostlyclean-libLTLIBRARIES mostlyclean-compile \
|
@echo "This command is intended for maintainers to use"
|
||||||
mostlyclean-libtool mostlyclean-tags mostlyclean-depend \
|
@echo "it deletes files that may require special tools to rebuild."
|
||||||
mostlyclean-generic
|
clean: clean-am
|
||||||
|
|
||||||
|
clean-am: clean-generic clean-libLTLIBRARIES clean-libtool \
|
||||||
|
mostlyclean-am
|
||||||
|
|
||||||
|
distclean: distclean-am
|
||||||
|
-rm -rf ./$(DEPDIR)
|
||||||
|
-rm -f Makefile
|
||||||
|
distclean-am: clean-am distclean-compile distclean-generic \
|
||||||
|
distclean-libtool distclean-tags
|
||||||
|
|
||||||
|
dvi: dvi-am
|
||||||
|
|
||||||
|
dvi-am:
|
||||||
|
|
||||||
|
html: html-am
|
||||||
|
|
||||||
|
info: info-am
|
||||||
|
|
||||||
|
info-am:
|
||||||
|
|
||||||
|
install-data-am:
|
||||||
|
|
||||||
|
install-exec-am: install-libLTLIBRARIES
|
||||||
|
|
||||||
|
install-info: install-info-am
|
||||||
|
|
||||||
|
install-man:
|
||||||
|
|
||||||
|
installcheck-am:
|
||||||
|
|
||||||
|
maintainer-clean: maintainer-clean-am
|
||||||
|
-rm -rf ./$(DEPDIR)
|
||||||
|
-rm -f Makefile
|
||||||
|
maintainer-clean-am: distclean-am maintainer-clean-generic
|
||||||
|
|
||||||
mostlyclean: mostlyclean-am
|
mostlyclean: mostlyclean-am
|
||||||
|
|
||||||
clean-am: clean-libLTLIBRARIES clean-compile clean-libtool clean-tags \
|
mostlyclean-am: mostlyclean-compile mostlyclean-generic \
|
||||||
clean-depend clean-generic mostlyclean-am
|
mostlyclean-libtool
|
||||||
|
|
||||||
clean: clean-am
|
pdf: pdf-am
|
||||||
|
|
||||||
distclean-am: distclean-libLTLIBRARIES distclean-compile \
|
pdf-am:
|
||||||
distclean-libtool distclean-tags distclean-depend \
|
|
||||||
distclean-generic clean-am
|
|
||||||
-rm -f libtool
|
|
||||||
|
|
||||||
distclean: distclean-am
|
ps: ps-am
|
||||||
|
|
||||||
maintainer-clean-am: maintainer-clean-libLTLIBRARIES \
|
ps-am:
|
||||||
maintainer-clean-compile maintainer-clean-libtool \
|
|
||||||
maintainer-clean-tags maintainer-clean-depend \
|
|
||||||
maintainer-clean-generic distclean-am
|
|
||||||
@echo "This command is intended for maintainers to use;"
|
|
||||||
@echo "it deletes files that may require special tools to rebuild."
|
|
||||||
|
|
||||||
maintainer-clean: maintainer-clean-am
|
uninstall-am: uninstall-info-am uninstall-libLTLIBRARIES
|
||||||
|
|
||||||
.PHONY: mostlyclean-libLTLIBRARIES distclean-libLTLIBRARIES \
|
|
||||||
clean-libLTLIBRARIES maintainer-clean-libLTLIBRARIES \
|
|
||||||
uninstall-libLTLIBRARIES install-libLTLIBRARIES mostlyclean-compile \
|
|
||||||
distclean-compile clean-compile maintainer-clean-compile \
|
|
||||||
mostlyclean-libtool distclean-libtool clean-libtool \
|
|
||||||
maintainer-clean-libtool tags mostlyclean-tags distclean-tags \
|
|
||||||
clean-tags maintainer-clean-tags distdir mostlyclean-depend \
|
|
||||||
distclean-depend clean-depend maintainer-clean-depend info-am info \
|
|
||||||
dvi-am dvi check check-am installcheck-am installcheck install-exec-am \
|
|
||||||
install-exec install-data-am install-data install-am install \
|
|
||||||
uninstall-am uninstall all-redirect all-am all installdirs \
|
|
||||||
mostlyclean-generic distclean-generic clean-generic \
|
|
||||||
maintainer-clean-generic clean mostlyclean distclean maintainer-clean
|
|
||||||
|
|
||||||
|
.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \
|
||||||
|
clean-libLTLIBRARIES clean-libtool ctags distclean \
|
||||||
|
distclean-compile distclean-generic distclean-libtool \
|
||||||
|
distclean-tags distdir dvi dvi-am html html-am info info-am \
|
||||||
|
install install-am install-data install-data-am install-exec \
|
||||||
|
install-exec-am install-info install-info-am \
|
||||||
|
install-libLTLIBRARIES install-man install-strip installcheck \
|
||||||
|
installcheck-am installdirs maintainer-clean \
|
||||||
|
maintainer-clean-generic mostlyclean mostlyclean-compile \
|
||||||
|
mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
|
||||||
|
tags uninstall uninstall-am uninstall-info-am \
|
||||||
|
uninstall-libLTLIBRARIES
|
||||||
|
|
||||||
# Tell versions [3.59,3.63) of GNU make to not export all variables.
|
# Tell versions [3.59,3.63) of GNU make to not export all variables.
|
||||||
# Otherwise a system limit (for SysV at least) may be exceeded.
|
# Otherwise a system limit (for SysV at least) may be exceeded.
|
||||||
|
@ -1,3 +1,23 @@
|
|||||||
|
/*
|
||||||
|
Copyright (C) 2004, Wolfgang Hottgenroth
|
||||||
|
|
||||||
|
This file is part of smmapdfw.
|
||||||
|
|
||||||
|
smmapdfw is free software; you can redistribute it and/or modify it
|
||||||
|
under the terms of the GNU General Public License as published by
|
||||||
|
the Free Software Foundation; either version 2 of the License, or
|
||||||
|
(at your option) any later version.
|
||||||
|
|
||||||
|
smmapdfw is distributed in the hope that it will be useful, but WITHOUT
|
||||||
|
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
|
||||||
|
or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
|
||||||
|
License for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU General Public License
|
||||||
|
along with smmapdfw. If not, write to the Free Software Foundation, 59
|
||||||
|
Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||||
|
*/
|
||||||
|
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <syslog.h>
|
#include <syslog.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
@ -6,16 +26,37 @@
|
|||||||
#include "smmapd.h"
|
#include "smmapd.h"
|
||||||
|
|
||||||
#include "smtp.h"
|
#include "smtp.h"
|
||||||
#include "dns.h"
|
#include "htdns.h"
|
||||||
|
#include "htmalloc.h"
|
||||||
|
#include "htbuffer.h"
|
||||||
|
#include "stats.h"
|
||||||
|
|
||||||
#define SMM_LOCAL_PERM_NOK 101
|
#define SMM_LOCAL_PERM_NOK 101
|
||||||
#define SMM_LOCAL_TEMP_NOK 102
|
#define SMM_LOCAL_TEMP_NOK 102
|
||||||
#define SMM_LOCAL_OK 103
|
#define SMM_LOCAL_OK 103
|
||||||
|
|
||||||
|
|
||||||
|
counterDef_t *cyrus_counterDefs = NULL;
|
||||||
|
void cyrus_setupCounterList() {
|
||||||
|
cyrus_counterDefs = addOneCounterDef(cyrus_counterDefs, SMM_TYPE_COUNTER, "Cyrus: checker");
|
||||||
|
cyrus_counterDefs = addOneCounterDef(cyrus_counterDefs, SMM_TYPE_COUNTER, "Cyrus: illegal input");
|
||||||
|
cyrus_counterDefs = addOneCounterDef(cyrus_counterDefs, SMM_TYPE_COUNTER, "Cyrus: depot dns failure");
|
||||||
|
cyrus_counterDefs = addOneCounterDef(cyrus_counterDefs, SMM_TYPE_COUNTER, "Cyrus: returned OK");
|
||||||
|
cyrus_counterDefs = addOneCounterDef(cyrus_counterDefs, SMM_TYPE_COUNTER, "Cyrus: returned NOK");
|
||||||
|
cyrus_counterDefs = addOneCounterDef(cyrus_counterDefs, SMM_TYPE_COUNTER, "Cyrus: returned TNOK");
|
||||||
|
};
|
||||||
|
|
||||||
|
#define STAT_CNT_CYRUS_WORKER 0
|
||||||
|
#define STAT_CNT_CYRUS_ILLEGAL_INPUT 1
|
||||||
|
#define STAT_CNT_CYRUS_DEPOT_DNS_FAILURE 2
|
||||||
|
#define STAT_CNT_CYRUS_RETURNED_OK 3
|
||||||
|
#define STAT_CNT_CYRUS_RETURNED_NOK 4
|
||||||
|
#define STAT_CNT_CYRUS_RETURNED_TNOK 5
|
||||||
|
|
||||||
|
|
||||||
struct cyrus_container_handle_s {
|
struct cyrus_container_handle_s {
|
||||||
cfgl_t *cfg;
|
cfgl_t *cfg;
|
||||||
|
statCounter_t *statCounter;
|
||||||
int timeout;
|
int timeout;
|
||||||
char *sender_address;
|
char *sender_address;
|
||||||
char *lhlo_arg;
|
char *lhlo_arg;
|
||||||
@ -25,6 +66,7 @@ struct cyrus_container_handle_s {
|
|||||||
typedef struct cyrus_container_handle_s cyrus_container_handle_t;
|
typedef struct cyrus_container_handle_s cyrus_container_handle_t;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
struct cyrus_work_handle_s {
|
struct cyrus_work_handle_s {
|
||||||
int id;
|
int id;
|
||||||
cyrus_container_handle_t *cch;
|
cyrus_container_handle_t *cch;
|
||||||
@ -36,31 +78,34 @@ typedef struct cyrus_work_handle_s cyrus_work_handle_t;
|
|||||||
|
|
||||||
int cyrus_init(cfgl_t *cfg, void **handle);
|
int cyrus_init(cfgl_t *cfg, void **handle);
|
||||||
int cyrus_destroy(void *handle);
|
int cyrus_destroy(void *handle);
|
||||||
/* int cyrus_work_setup(void *handle, void **work_handle); */
|
/* int cyrus_work_setup(void *handle, void **work_handle); */
|
||||||
int cyrus_work(void *handle, void *work_handle, char *input, char *output);
|
int cyrus_work(void *handle, void *work_handle, char *input, htbuffer_t *output);
|
||||||
/* int cyrus_work_destroy(void *handle, void *work_handle); */
|
/* int cyrus_work_destroy(void *handle, void *work_handle); */
|
||||||
|
|
||||||
|
|
||||||
class_descriptor_t cyruscheck = {
|
class_descriptor_t cyruscheck = {
|
||||||
"cyruscheck",
|
"cyruscheck",
|
||||||
&cyrus_init,
|
&cyrus_init,
|
||||||
&cyrus_destroy,
|
&cyrus_destroy,
|
||||||
NULL, /* &verify_work_setup, */
|
NULL, /* &cyrus_work_setup, */
|
||||||
&cyrus_work,
|
&cyrus_work,
|
||||||
NULL /* &cyrus_work_destroy */
|
NULL /* &cyrus_work_destroy */
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
int cyrus_init(cfgl_t *cfg, void **handle) {
|
int cyrus_init(cfgl_t *cfg, void **handle) {
|
||||||
cyrus_container_handle_t *cch;
|
cyrus_container_handle_t *cch;
|
||||||
|
|
||||||
cch = (cyrus_container_handle_t*) malloc(sizeof(cyrus_container_handle_t));
|
cch = (cyrus_container_handle_t*) htmalloc(sizeof(cyrus_container_handle_t));
|
||||||
cch->cfg = cfg;
|
cch->cfg = cfg;
|
||||||
|
|
||||||
cch->timeout = atoi(findcfglx(cch->cfg, "timeout", "5"));
|
cch->timeout = atoi(findcfglx(cch->cfg, "timeout", "5"));
|
||||||
cch->sender_address = findcfglx(cch->cfg, "sender_address", "<>");
|
cch->sender_address = findcfglx(cch->cfg, "sender_address", "<>");
|
||||||
cch->lhlo_arg = findcfglx(cch->cfg, "lhlo_arg", "local");
|
cch->lhlo_arg = findcfglx(cch->cfg, "lhlo_arg", "local");
|
||||||
cch->lmtp_port = atoi(findcfglx(cch->cfg, "lmtp_port", "24"));
|
cch->lmtp_port = atoi(findcfglx(cch->cfg, "lmtp_port", "24"));
|
||||||
|
|
||||||
|
cyrus_setupCounterList();
|
||||||
|
cch->statCounter = initStatCounter("cyrus", cyrus_counterDefs);
|
||||||
|
|
||||||
*handle = cch;
|
*handle = cch;
|
||||||
return 0;
|
return 0;
|
||||||
@ -74,7 +119,9 @@ int cyrus_destroy(void *handle) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
int cyrus_work(void *handle, void *work_handle, char *input, char *output) {
|
|
||||||
|
|
||||||
|
int cyrus_work(void *handle, void *work_handle, char *input, htbuffer_t *output) {
|
||||||
static const char *DEFAULT_ANSWER = "default answer";
|
static const char *DEFAULT_ANSWER = "default answer";
|
||||||
static const char *ILLEGAL_INPUT = "illegal input (must be 'depot_uid depot_host')";
|
static const char *ILLEGAL_INPUT = "illegal input (must be 'depot_uid depot_host')";
|
||||||
static const char *UNEXPECTED_ERROR = "unexpected error in lmtp dialog";
|
static const char *UNEXPECTED_ERROR = "unexpected error in lmtp dialog";
|
||||||
@ -82,6 +129,8 @@ int cyrus_work(void *handle, void *work_handle, char *input, char *output) {
|
|||||||
static const char *GO_AHEAD = "go ahead";
|
static const char *GO_AHEAD = "go ahead";
|
||||||
static const char *DEPOT_DNS_ERROR = "depot could not be found in dns";
|
static const char *DEPOT_DNS_ERROR = "depot could not be found in dns";
|
||||||
|
|
||||||
|
static int log_id = 0;
|
||||||
|
|
||||||
cyrus_container_handle_t *cch = (cyrus_container_handle_t*) handle;
|
cyrus_container_handle_t *cch = (cyrus_container_handle_t*) handle;
|
||||||
int result = SMM_TEMP_NOK;
|
int result = SMM_TEMP_NOK;
|
||||||
char *depot_uid, *depot_host, *response_text, *tmp_arg;
|
char *depot_uid, *depot_host, *response_text, *tmp_arg;
|
||||||
@ -95,12 +144,17 @@ int cyrus_work(void *handle, void *work_handle, char *input, char *output) {
|
|||||||
} state = CONNECT;
|
} state = CONNECT;
|
||||||
|
|
||||||
|
|
||||||
|
log_id++;
|
||||||
|
|
||||||
syslog(LOG_DEBUG, "cyrus_work: going to check %s", input);
|
syslog(LOG_DEBUG, "cyrus_work: (%04x) going to check %s", log_id, input);
|
||||||
|
|
||||||
|
incStatCounter(cch->statCounter, STAT_CNT_CYRUS_WORKER);
|
||||||
|
|
||||||
depot_uid = input;
|
depot_uid = input;
|
||||||
if (NULL == (depot_host = strchr(depot_uid, ' '))) {
|
if (NULL == (depot_host = strchr(depot_uid, ' '))) {
|
||||||
snprintf(output, ANSWER_BUFSIZE, ILLEGAL_INPUT);
|
// snprintf(output, ANSWER_BUFSIZE, ILLEGAL_INPUT);
|
||||||
|
htbuffer_strcpy(output, ILLEGAL_INPUT);
|
||||||
|
incStatCounter(cch->statCounter, STAT_CNT_CYRUS_ILLEGAL_INPUT);
|
||||||
return SMM_PERM_NOK;
|
return SMM_PERM_NOK;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -110,9 +164,11 @@ int cyrus_work(void *handle, void *work_handle, char *input, char *output) {
|
|||||||
|
|
||||||
a_rdata = get_a_rrs(depot_host);
|
a_rdata = get_a_rrs(depot_host);
|
||||||
if (NULL == a_rdata) {
|
if (NULL == a_rdata) {
|
||||||
syslog(LOG_DEBUG, "cyrus_work: depot_host %s could not be found in dns",
|
syslog(LOG_DEBUG, "cyrus_work: (%04x) depot_host %s could not be found in dns",
|
||||||
depot_host);
|
log_id, depot_host);
|
||||||
snprintf(output, ANSWER_BUFSIZE, DEPOT_DNS_ERROR);
|
// snprintf(output, ANSWER_BUFSIZE, DEPOT_DNS_ERROR);
|
||||||
|
htbuffer_strcpy(output, DEPOT_DNS_ERROR);
|
||||||
|
incStatCounter(cch->statCounter, STAT_CNT_CYRUS_DEPOT_DNS_FAILURE);
|
||||||
return SMM_TEMP_NOK;
|
return SMM_TEMP_NOK;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -120,13 +176,14 @@ int cyrus_work(void *handle, void *work_handle, char *input, char *output) {
|
|||||||
free_rrs((void**)a_rdata);
|
free_rrs((void**)a_rdata);
|
||||||
|
|
||||||
|
|
||||||
syslog(LOG_DEBUG, "cyrus_work: depot_uid %s, depot_host %s", depot_uid, depot_host);
|
syslog(LOG_DEBUG, "cyrus_work: (%04x) depot_uid %s, depot_host %s", log_id,
|
||||||
|
depot_uid, depot_host);
|
||||||
|
|
||||||
|
|
||||||
lmtp = smtp_init(ip_address, cch->lmtp_port, cch->timeout);
|
lmtp = smtp_init(ip_address, cch->lmtp_port, cch->timeout);
|
||||||
|
|
||||||
while ((END != state) && (0 == done)) {
|
while ((END != state) && (0 == done)) {
|
||||||
syslog(LOG_DEBUG, "cyrus_work, lmtp dialog state %d", state);
|
syslog(LOG_DEBUG, "cyrus_work: (%04x) lmtp dialog state %d", log_id, state);
|
||||||
switch(state) {
|
switch(state) {
|
||||||
case CONNECT:
|
case CONNECT:
|
||||||
err = smtp_connect(lmtp);
|
err = smtp_connect(lmtp);
|
||||||
@ -138,7 +195,7 @@ int cyrus_work(void *handle, void *work_handle, char *input, char *output) {
|
|||||||
err = smtp_mailfrom(lmtp, cch->sender_address);
|
err = smtp_mailfrom(lmtp, cch->sender_address);
|
||||||
break;
|
break;
|
||||||
case RCPTTO:
|
case RCPTTO:
|
||||||
tmp_arg = (char*) malloc(sizeof(char) * (strlen(depot_uid)+5));
|
tmp_arg = (char*) htmalloc(sizeof(char) * (strlen(depot_uid)+5));
|
||||||
*tmp_arg = '\0';
|
*tmp_arg = '\0';
|
||||||
strcat(tmp_arg, "<");
|
strcat(tmp_arg, "<");
|
||||||
strcat(tmp_arg, depot_uid);
|
strcat(tmp_arg, depot_uid);
|
||||||
@ -158,7 +215,7 @@ int cyrus_work(void *handle, void *work_handle, char *input, char *output) {
|
|||||||
|
|
||||||
switch(err) {
|
switch(err) {
|
||||||
case SMTP_TIMEOUT:
|
case SMTP_TIMEOUT:
|
||||||
syslog(LOG_DEBUG, "cyrus_work, timeout in lmtp dialog");
|
syslog(LOG_DEBUG, "cyrus_work: (%04x) timeout in lmtp dialog", log_id);
|
||||||
result = SMM_LOCAL_TEMP_NOK;
|
result = SMM_LOCAL_TEMP_NOK;
|
||||||
response_text = (char*)TIMEOUT_ERROR;
|
response_text = (char*)TIMEOUT_ERROR;
|
||||||
done = 1;
|
done = 1;
|
||||||
@ -167,13 +224,14 @@ int cyrus_work(void *handle, void *work_handle, char *input, char *output) {
|
|||||||
/* evaluate smtp_response, return or continue */
|
/* evaluate smtp_response, return or continue */
|
||||||
err = smtp_response(lmtp, &response_text);
|
err = smtp_response(lmtp, &response_text);
|
||||||
if (-1 == err) {
|
if (-1 == err) {
|
||||||
syslog(LOG_DEBUG, "cyrus_work, response could not be parsed");
|
syslog(LOG_DEBUG, "cyrus_work: (%04x) response could not be parsed", log_id);
|
||||||
result = SMM_LOCAL_TEMP_NOK;
|
result = SMM_LOCAL_TEMP_NOK;
|
||||||
response_text = (char*)UNEXPECTED_ERROR;
|
response_text = (char*)UNEXPECTED_ERROR;
|
||||||
done = 1;
|
done = 1;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
syslog(LOG_DEBUG, "cyrus_work, response: %d, %s", err, response_text);
|
syslog(LOG_DEBUG, "cyrus_work: (%04x) response: %d, %s", log_id,
|
||||||
|
err, response_text);
|
||||||
switch(err/100) {
|
switch(err/100) {
|
||||||
case 4:
|
case 4:
|
||||||
result = SMM_LOCAL_TEMP_NOK;
|
result = SMM_LOCAL_TEMP_NOK;
|
||||||
@ -193,7 +251,7 @@ int cyrus_work(void *handle, void *work_handle, char *input, char *output) {
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
syslog(LOG_DEBUG, "cyrus_work, unexpected error in lmtp dialog");
|
syslog(LOG_DEBUG, "cyrus_work: (%04x) unexpected error in lmtp dialog", log_id);
|
||||||
result = SMM_LOCAL_TEMP_NOK;
|
result = SMM_LOCAL_TEMP_NOK;
|
||||||
response_text = (char*)UNEXPECTED_ERROR;
|
response_text = (char*)UNEXPECTED_ERROR;
|
||||||
done = 1;
|
done = 1;
|
||||||
@ -206,24 +264,39 @@ int cyrus_work(void *handle, void *work_handle, char *input, char *output) {
|
|||||||
|
|
||||||
switch (result) {
|
switch (result) {
|
||||||
case SMM_LOCAL_TEMP_NOK:
|
case SMM_LOCAL_TEMP_NOK:
|
||||||
snprintf(output, ANSWER_BUFSIZE, "<TNOK><%s>", response_text);
|
htbuffer_strcat(output, "<TNOK><");
|
||||||
|
htbuffer_strcat(output, response_text);
|
||||||
|
htbuffer_strcat(output, ">");
|
||||||
|
//snprintf(output, ANSWER_BUFSIZE, "<TNOK><%s>", response_text);
|
||||||
result = SMM_OK;
|
result = SMM_OK;
|
||||||
|
incStatCounter(cch->statCounter, STAT_CNT_CYRUS_RETURNED_TNOK);
|
||||||
break;
|
break;
|
||||||
case SMM_LOCAL_PERM_NOK:
|
case SMM_LOCAL_PERM_NOK:
|
||||||
snprintf(output, ANSWER_BUFSIZE, "<NOK><%s>", response_text);
|
htbuffer_strcat(output, "<NOK><");
|
||||||
|
htbuffer_strcat(output, response_text);
|
||||||
|
htbuffer_strcat(output, ">");
|
||||||
|
//snprintf(output, ANSWER_BUFSIZE, "<NOK><%s>", response_text);
|
||||||
result = SMM_OK;
|
result = SMM_OK;
|
||||||
|
incStatCounter(cch->statCounter, STAT_CNT_CYRUS_RETURNED_NOK);
|
||||||
break;
|
break;
|
||||||
case SMM_LOCAL_OK:
|
case SMM_LOCAL_OK:
|
||||||
snprintf(output, ANSWER_BUFSIZE, "<OK><%s>", response_text);
|
htbuffer_strcat(output, "<OK><");
|
||||||
|
htbuffer_strcat(output, response_text);
|
||||||
|
htbuffer_strcat(output, ">");
|
||||||
|
//snprintf(output, ANSWER_BUFSIZE, "<OK><%s>", response_text);
|
||||||
result = SMM_OK;
|
result = SMM_OK;
|
||||||
|
incStatCounter(cch->statCounter, STAT_CNT_CYRUS_RETURNED_OK);
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
snprintf(output, ANSWER_BUFSIZE, response_text);
|
htbuffer_strcpy(output, response_text);
|
||||||
|
//snprintf(output, ANSWER_BUFSIZE, response_text);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
smtp_destroy(lmtp);
|
smtp_destroy(lmtp);
|
||||||
|
|
||||||
|
syslog(LOG_DEBUG, "cyrus_work: (%04x) result %d, %s", log_id,
|
||||||
|
result, output->buf);
|
||||||
|
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
423
smmapdfw/depcomp
Executable file
423
smmapdfw/depcomp
Executable file
@ -0,0 +1,423 @@
|
|||||||
|
#! /bin/sh
|
||||||
|
|
||||||
|
# depcomp - compile a program generating dependencies as side-effects
|
||||||
|
# Copyright 1999, 2000 Free Software Foundation, Inc.
|
||||||
|
|
||||||
|
# This program is free software; you can redistribute it and/or modify
|
||||||
|
# it under the terms of the GNU General Public License as published by
|
||||||
|
# the Free Software Foundation; either version 2, or (at your option)
|
||||||
|
# any later version.
|
||||||
|
|
||||||
|
# This program is distributed in the hope that it will be useful,
|
||||||
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
# GNU General Public License for more details.
|
||||||
|
|
||||||
|
# You should have received a copy of the GNU General Public License
|
||||||
|
# along with this program; if not, write to the Free Software
|
||||||
|
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
|
||||||
|
# 02111-1307, USA.
|
||||||
|
|
||||||
|
# As a special exception to the GNU General Public License, if you
|
||||||
|
# distribute this file as part of a program that contains a
|
||||||
|
# configuration script generated by Autoconf, you may include it under
|
||||||
|
# the same distribution terms that you use for the rest of that program.
|
||||||
|
|
||||||
|
# Originally written by Alexandre Oliva <oliva@dcc.unicamp.br>.
|
||||||
|
|
||||||
|
if test -z "$depmode" || test -z "$source" || test -z "$object"; then
|
||||||
|
echo "depcomp: Variables source, object and depmode must be set" 1>&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
# `libtool' can also be set to `yes' or `no'.
|
||||||
|
|
||||||
|
if test -z "$depfile"; then
|
||||||
|
base=`echo "$object" | sed -e 's,^.*/,,' -e 's,\.\([^.]*\)$,.P\1,'`
|
||||||
|
dir=`echo "$object" | sed 's,/.*$,/,'`
|
||||||
|
if test "$dir" = "$object"; then
|
||||||
|
dir=
|
||||||
|
fi
|
||||||
|
# FIXME: should be _deps on DOS.
|
||||||
|
depfile="$dir.deps/$base"
|
||||||
|
fi
|
||||||
|
|
||||||
|
tmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`}
|
||||||
|
|
||||||
|
rm -f "$tmpdepfile"
|
||||||
|
|
||||||
|
# Some modes work just like other modes, but use different flags. We
|
||||||
|
# parameterize here, but still list the modes in the big case below,
|
||||||
|
# to make depend.m4 easier to write. Note that we *cannot* use a case
|
||||||
|
# here, because this file can only contain one case statement.
|
||||||
|
if test "$depmode" = hp; then
|
||||||
|
# HP compiler uses -M and no extra arg.
|
||||||
|
gccflag=-M
|
||||||
|
depmode=gcc
|
||||||
|
fi
|
||||||
|
|
||||||
|
if test "$depmode" = dashXmstdout; then
|
||||||
|
# This is just like dashmstdout with a different argument.
|
||||||
|
dashmflag=-xM
|
||||||
|
depmode=dashmstdout
|
||||||
|
fi
|
||||||
|
|
||||||
|
case "$depmode" in
|
||||||
|
gcc3)
|
||||||
|
## gcc 3 implements dependency tracking that does exactly what
|
||||||
|
## we want. Yay! Note: for some reason libtool 1.4 doesn't like
|
||||||
|
## it if -MD -MP comes after the -MF stuff. Hmm.
|
||||||
|
"$@" -MT "$object" -MD -MP -MF "$tmpdepfile"
|
||||||
|
stat=$?
|
||||||
|
if test $stat -eq 0; then :
|
||||||
|
else
|
||||||
|
rm -f "$tmpdepfile"
|
||||||
|
exit $stat
|
||||||
|
fi
|
||||||
|
mv "$tmpdepfile" "$depfile"
|
||||||
|
;;
|
||||||
|
|
||||||
|
gcc)
|
||||||
|
## There are various ways to get dependency output from gcc. Here's
|
||||||
|
## why we pick this rather obscure method:
|
||||||
|
## - Don't want to use -MD because we'd like the dependencies to end
|
||||||
|
## up in a subdir. Having to rename by hand is ugly.
|
||||||
|
## (We might end up doing this anyway to support other compilers.)
|
||||||
|
## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like
|
||||||
|
## -MM, not -M (despite what the docs say).
|
||||||
|
## - Using -M directly means running the compiler twice (even worse
|
||||||
|
## than renaming).
|
||||||
|
if test -z "$gccflag"; then
|
||||||
|
gccflag=-MD,
|
||||||
|
fi
|
||||||
|
"$@" -Wp,"$gccflag$tmpdepfile"
|
||||||
|
stat=$?
|
||||||
|
if test $stat -eq 0; then :
|
||||||
|
else
|
||||||
|
rm -f "$tmpdepfile"
|
||||||
|
exit $stat
|
||||||
|
fi
|
||||||
|
rm -f "$depfile"
|
||||||
|
echo "$object : \\" > "$depfile"
|
||||||
|
alpha=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz
|
||||||
|
## The second -e expression handles DOS-style file names with drive letters.
|
||||||
|
sed -e 's/^[^:]*: / /' \
|
||||||
|
-e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile"
|
||||||
|
## This next piece of magic avoids the `deleted header file' problem.
|
||||||
|
## The problem is that when a header file which appears in a .P file
|
||||||
|
## is deleted, the dependency causes make to die (because there is
|
||||||
|
## typically no way to rebuild the header). We avoid this by adding
|
||||||
|
## dummy dependencies for each header file. Too bad gcc doesn't do
|
||||||
|
## this for us directly.
|
||||||
|
tr ' ' '
|
||||||
|
' < "$tmpdepfile" |
|
||||||
|
## Some versions of gcc put a space before the `:'. On the theory
|
||||||
|
## that the space means something, we add a space to the output as
|
||||||
|
## well.
|
||||||
|
## Some versions of the HPUX 10.20 sed can't process this invocation
|
||||||
|
## correctly. Breaking it into two sed invocations is a workaround.
|
||||||
|
sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
|
||||||
|
rm -f "$tmpdepfile"
|
||||||
|
;;
|
||||||
|
|
||||||
|
hp)
|
||||||
|
# This case exists only to let depend.m4 do its work. It works by
|
||||||
|
# looking at the text of this script. This case will never be run,
|
||||||
|
# since it is checked for above.
|
||||||
|
exit 1
|
||||||
|
;;
|
||||||
|
|
||||||
|
sgi)
|
||||||
|
if test "$libtool" = yes; then
|
||||||
|
"$@" "-Wp,-MDupdate,$tmpdepfile"
|
||||||
|
else
|
||||||
|
"$@" -MDupdate "$tmpdepfile"
|
||||||
|
fi
|
||||||
|
stat=$?
|
||||||
|
if test $stat -eq 0; then :
|
||||||
|
else
|
||||||
|
rm -f "$tmpdepfile"
|
||||||
|
exit $stat
|
||||||
|
fi
|
||||||
|
rm -f "$depfile"
|
||||||
|
|
||||||
|
if test -f "$tmpdepfile"; then # yes, the sourcefile depend on other files
|
||||||
|
echo "$object : \\" > "$depfile"
|
||||||
|
|
||||||
|
# Clip off the initial element (the dependent). Don't try to be
|
||||||
|
# clever and replace this with sed code, as IRIX sed won't handle
|
||||||
|
# lines with more than a fixed number of characters (4096 in
|
||||||
|
# IRIX 6.2 sed, 8192 in IRIX 6.5). We also remove comment lines;
|
||||||
|
# the IRIX cc adds comments like `#:fec' to the end of the
|
||||||
|
# dependency line.
|
||||||
|
tr ' ' '
|
||||||
|
' < "$tmpdepfile" \
|
||||||
|
| sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' | \
|
||||||
|
tr '
|
||||||
|
' ' ' >> $depfile
|
||||||
|
echo >> $depfile
|
||||||
|
|
||||||
|
# The second pass generates a dummy entry for each header file.
|
||||||
|
tr ' ' '
|
||||||
|
' < "$tmpdepfile" \
|
||||||
|
| sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \
|
||||||
|
>> $depfile
|
||||||
|
else
|
||||||
|
# The sourcefile does not contain any dependencies, so just
|
||||||
|
# store a dummy comment line, to avoid errors with the Makefile
|
||||||
|
# "include basename.Plo" scheme.
|
||||||
|
echo "#dummy" > "$depfile"
|
||||||
|
fi
|
||||||
|
rm -f "$tmpdepfile"
|
||||||
|
;;
|
||||||
|
|
||||||
|
aix)
|
||||||
|
# The C for AIX Compiler uses -M and outputs the dependencies
|
||||||
|
# in a .u file. This file always lives in the current directory.
|
||||||
|
# Also, the AIX compiler puts `$object:' at the start of each line;
|
||||||
|
# $object doesn't have directory information.
|
||||||
|
stripped=`echo "$object" | sed -e 's,^.*/,,' -e 's/\(.*\)\..*$/\1/'`
|
||||||
|
tmpdepfile="$stripped.u"
|
||||||
|
outname="$stripped.o"
|
||||||
|
if test "$libtool" = yes; then
|
||||||
|
"$@" -Wc,-M
|
||||||
|
else
|
||||||
|
"$@" -M
|
||||||
|
fi
|
||||||
|
|
||||||
|
stat=$?
|
||||||
|
if test $stat -eq 0; then :
|
||||||
|
else
|
||||||
|
rm -f "$tmpdepfile"
|
||||||
|
exit $stat
|
||||||
|
fi
|
||||||
|
|
||||||
|
if test -f "$tmpdepfile"; then
|
||||||
|
# Each line is of the form `foo.o: dependent.h'.
|
||||||
|
# Do two passes, one to just change these to
|
||||||
|
# `$object: dependent.h' and one to simply `dependent.h:'.
|
||||||
|
sed -e "s,^$outname:,$object :," < "$tmpdepfile" > "$depfile"
|
||||||
|
sed -e "s,^$outname: \(.*\)$,\1:," < "$tmpdepfile" >> "$depfile"
|
||||||
|
else
|
||||||
|
# The sourcefile does not contain any dependencies, so just
|
||||||
|
# store a dummy comment line, to avoid errors with the Makefile
|
||||||
|
# "include basename.Plo" scheme.
|
||||||
|
echo "#dummy" > "$depfile"
|
||||||
|
fi
|
||||||
|
rm -f "$tmpdepfile"
|
||||||
|
;;
|
||||||
|
|
||||||
|
tru64)
|
||||||
|
# The Tru64 compiler uses -MD to generate dependencies as a side
|
||||||
|
# effect. `cc -MD -o foo.o ...' puts the dependencies into `foo.o.d'.
|
||||||
|
# At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put
|
||||||
|
# dependencies in `foo.d' instead, so we check for that too.
|
||||||
|
# Subdirectories are respected.
|
||||||
|
dir=`echo "$object" | sed -e 's|/[^/]*$|/|'`
|
||||||
|
test "x$dir" = "x$object" && dir=
|
||||||
|
base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'`
|
||||||
|
|
||||||
|
if test "$libtool" = yes; then
|
||||||
|
tmpdepfile1="$dir.libs/$base.lo.d"
|
||||||
|
tmpdepfile2="$dir.libs/$base.d"
|
||||||
|
"$@" -Wc,-MD
|
||||||
|
else
|
||||||
|
tmpdepfile1="$dir$base.o.d"
|
||||||
|
tmpdepfile2="$dir$base.d"
|
||||||
|
"$@" -MD
|
||||||
|
fi
|
||||||
|
|
||||||
|
stat=$?
|
||||||
|
if test $stat -eq 0; then :
|
||||||
|
else
|
||||||
|
rm -f "$tmpdepfile1" "$tmpdepfile2"
|
||||||
|
exit $stat
|
||||||
|
fi
|
||||||
|
|
||||||
|
if test -f "$tmpdepfile1"; then
|
||||||
|
tmpdepfile="$tmpdepfile1"
|
||||||
|
else
|
||||||
|
tmpdepfile="$tmpdepfile2"
|
||||||
|
fi
|
||||||
|
if test -f "$tmpdepfile"; then
|
||||||
|
sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile"
|
||||||
|
# That's a space and a tab in the [].
|
||||||
|
sed -e 's,^.*\.[a-z]*:[ ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile"
|
||||||
|
else
|
||||||
|
echo "#dummy" > "$depfile"
|
||||||
|
fi
|
||||||
|
rm -f "$tmpdepfile"
|
||||||
|
;;
|
||||||
|
|
||||||
|
#nosideeffect)
|
||||||
|
# This comment above is used by automake to tell side-effect
|
||||||
|
# dependency tracking mechanisms from slower ones.
|
||||||
|
|
||||||
|
dashmstdout)
|
||||||
|
# Important note: in order to support this mode, a compiler *must*
|
||||||
|
# always write the proprocessed file to stdout, regardless of -o.
|
||||||
|
"$@" || exit $?
|
||||||
|
|
||||||
|
# Remove the call to Libtool.
|
||||||
|
if test "$libtool" = yes; then
|
||||||
|
while test $1 != '--mode=compile'; do
|
||||||
|
shift
|
||||||
|
done
|
||||||
|
shift
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Remove `-o $object'. We will use -o /dev/null later,
|
||||||
|
# however we can't do the remplacement now because
|
||||||
|
# `-o $object' might simply not be used
|
||||||
|
IFS=" "
|
||||||
|
for arg
|
||||||
|
do
|
||||||
|
case $arg in
|
||||||
|
-o)
|
||||||
|
shift
|
||||||
|
;;
|
||||||
|
$object)
|
||||||
|
shift
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
set fnord "$@" "$arg"
|
||||||
|
shift # fnord
|
||||||
|
shift # $arg
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
|
||||||
|
test -z "$dashmflag" && dashmflag=-M
|
||||||
|
"$@" -o /dev/null $dashmflag | sed 's:^[^:]*\:[ ]*:'"$object"'\: :' > "$tmpdepfile"
|
||||||
|
rm -f "$depfile"
|
||||||
|
cat < "$tmpdepfile" > "$depfile"
|
||||||
|
tr ' ' '
|
||||||
|
' < "$tmpdepfile" | \
|
||||||
|
## Some versions of the HPUX 10.20 sed can't process this invocation
|
||||||
|
## correctly. Breaking it into two sed invocations is a workaround.
|
||||||
|
sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
|
||||||
|
rm -f "$tmpdepfile"
|
||||||
|
;;
|
||||||
|
|
||||||
|
dashXmstdout)
|
||||||
|
# This case only exists to satisfy depend.m4. It is never actually
|
||||||
|
# run, as this mode is specially recognized in the preamble.
|
||||||
|
exit 1
|
||||||
|
;;
|
||||||
|
|
||||||
|
makedepend)
|
||||||
|
"$@" || exit $?
|
||||||
|
# X makedepend
|
||||||
|
shift
|
||||||
|
cleared=no
|
||||||
|
for arg in "$@"; do
|
||||||
|
case $cleared in
|
||||||
|
no)
|
||||||
|
set ""; shift
|
||||||
|
cleared=yes ;;
|
||||||
|
esac
|
||||||
|
case "$arg" in
|
||||||
|
-D*|-I*)
|
||||||
|
set fnord "$@" "$arg"; shift ;;
|
||||||
|
-*)
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
set fnord "$@" "$arg"; shift ;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
obj_suffix="`echo $object | sed 's/^.*\././'`"
|
||||||
|
touch "$tmpdepfile"
|
||||||
|
${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@"
|
||||||
|
rm -f "$depfile"
|
||||||
|
cat < "$tmpdepfile" > "$depfile"
|
||||||
|
sed '1,2d' "$tmpdepfile" | tr ' ' '
|
||||||
|
' | \
|
||||||
|
## Some versions of the HPUX 10.20 sed can't process this invocation
|
||||||
|
## correctly. Breaking it into two sed invocations is a workaround.
|
||||||
|
sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
|
||||||
|
rm -f "$tmpdepfile" "$tmpdepfile".bak
|
||||||
|
;;
|
||||||
|
|
||||||
|
cpp)
|
||||||
|
# Important note: in order to support this mode, a compiler *must*
|
||||||
|
# always write the proprocessed file to stdout.
|
||||||
|
"$@" || exit $?
|
||||||
|
|
||||||
|
# Remove the call to Libtool.
|
||||||
|
if test "$libtool" = yes; then
|
||||||
|
while test $1 != '--mode=compile'; do
|
||||||
|
shift
|
||||||
|
done
|
||||||
|
shift
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Remove `-o $object'.
|
||||||
|
IFS=" "
|
||||||
|
for arg
|
||||||
|
do
|
||||||
|
case $arg in
|
||||||
|
-o)
|
||||||
|
shift
|
||||||
|
;;
|
||||||
|
$object)
|
||||||
|
shift
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
set fnord "$@" "$arg"
|
||||||
|
shift # fnord
|
||||||
|
shift # $arg
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
|
||||||
|
"$@" -E |
|
||||||
|
sed -n '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' |
|
||||||
|
sed '$ s: \\$::' > "$tmpdepfile"
|
||||||
|
rm -f "$depfile"
|
||||||
|
echo "$object : \\" > "$depfile"
|
||||||
|
cat < "$tmpdepfile" >> "$depfile"
|
||||||
|
sed < "$tmpdepfile" '/^$/d;s/^ //;s/ \\$//;s/$/ :/' >> "$depfile"
|
||||||
|
rm -f "$tmpdepfile"
|
||||||
|
;;
|
||||||
|
|
||||||
|
msvisualcpp)
|
||||||
|
# Important note: in order to support this mode, a compiler *must*
|
||||||
|
# always write the proprocessed file to stdout, regardless of -o,
|
||||||
|
# because we must use -o when running libtool.
|
||||||
|
"$@" || exit $?
|
||||||
|
IFS=" "
|
||||||
|
for arg
|
||||||
|
do
|
||||||
|
case "$arg" in
|
||||||
|
"-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI")
|
||||||
|
set fnord "$@"
|
||||||
|
shift
|
||||||
|
shift
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
set fnord "$@" "$arg"
|
||||||
|
shift
|
||||||
|
shift
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
"$@" -E |
|
||||||
|
sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::echo "`cygpath -u \\"\1\\"`":p' | sort | uniq > "$tmpdepfile"
|
||||||
|
rm -f "$depfile"
|
||||||
|
echo "$object : \\" > "$depfile"
|
||||||
|
. "$tmpdepfile" | sed 's% %\\ %g' | sed -n '/^\(.*\)$/ s:: \1 \\:p' >> "$depfile"
|
||||||
|
echo " " >> "$depfile"
|
||||||
|
. "$tmpdepfile" | sed 's% %\\ %g' | sed -n '/^\(.*\)$/ s::\1\::p' >> "$depfile"
|
||||||
|
rm -f "$tmpdepfile"
|
||||||
|
;;
|
||||||
|
|
||||||
|
none)
|
||||||
|
exec "$@"
|
||||||
|
;;
|
||||||
|
|
||||||
|
*)
|
||||||
|
echo "Unknown depmode $depmode" 1>&2
|
||||||
|
exit 1
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
exit 0
|
1
smmapdfw/doc/Makefile.am
Normal file
1
smmapdfw/doc/Makefile.am
Normal file
@ -0,0 +1 @@
|
|||||||
|
info_TEXINFOS = smmapdfw.texi
|
478
smmapdfw/doc/Makefile.in
Normal file
478
smmapdfw/doc/Makefile.in
Normal file
@ -0,0 +1,478 @@
|
|||||||
|
# Makefile.in generated by automake 1.9.6 from Makefile.am.
|
||||||
|
# @configure_input@
|
||||||
|
|
||||||
|
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
|
||||||
|
# 2003, 2004, 2005 Free Software Foundation, Inc.
|
||||||
|
# This Makefile.in is free software; the Free Software Foundation
|
||||||
|
# gives unlimited permission to copy and/or distribute it,
|
||||||
|
# with or without modifications, as long as this notice is preserved.
|
||||||
|
|
||||||
|
# This program is distributed in the hope that it will be useful,
|
||||||
|
# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
|
||||||
|
# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
|
||||||
|
# PARTICULAR PURPOSE.
|
||||||
|
|
||||||
|
@SET_MAKE@
|
||||||
|
srcdir = @srcdir@
|
||||||
|
top_srcdir = @top_srcdir@
|
||||||
|
VPATH = @srcdir@
|
||||||
|
pkgdatadir = $(datadir)/@PACKAGE@
|
||||||
|
pkglibdir = $(libdir)/@PACKAGE@
|
||||||
|
pkgincludedir = $(includedir)/@PACKAGE@
|
||||||
|
top_builddir = ..
|
||||||
|
am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
|
||||||
|
INSTALL = @INSTALL@
|
||||||
|
install_sh_DATA = $(install_sh) -c -m 644
|
||||||
|
install_sh_PROGRAM = $(install_sh) -c
|
||||||
|
install_sh_SCRIPT = $(install_sh) -c
|
||||||
|
INSTALL_HEADER = $(INSTALL_DATA)
|
||||||
|
transform = $(program_transform_name)
|
||||||
|
NORMAL_INSTALL = :
|
||||||
|
PRE_INSTALL = :
|
||||||
|
POST_INSTALL = :
|
||||||
|
NORMAL_UNINSTALL = :
|
||||||
|
PRE_UNINSTALL = :
|
||||||
|
POST_UNINSTALL = :
|
||||||
|
build_triplet = @build@
|
||||||
|
host_triplet = @host@
|
||||||
|
subdir = doc
|
||||||
|
DIST_COMMON = README $(srcdir)/Makefile.am $(srcdir)/Makefile.in \
|
||||||
|
texinfo.tex
|
||||||
|
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
|
||||||
|
am__aclocal_m4_deps = $(top_srcdir)/configure.ac
|
||||||
|
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
|
||||||
|
$(ACLOCAL_M4)
|
||||||
|
mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
|
||||||
|
CONFIG_HEADER = $(top_builddir)/config.h
|
||||||
|
CONFIG_CLEAN_FILES =
|
||||||
|
SOURCES =
|
||||||
|
DIST_SOURCES =
|
||||||
|
INFO_DEPS = $(srcdir)/smmapdfw.info
|
||||||
|
am__TEXINFO_TEX_DIR = $(srcdir)
|
||||||
|
DVIS = smmapdfw.dvi
|
||||||
|
PDFS = smmapdfw.pdf
|
||||||
|
PSS = smmapdfw.ps
|
||||||
|
HTMLS = smmapdfw.html
|
||||||
|
TEXINFOS = smmapdfw.texi
|
||||||
|
TEXI2DVI = texi2dvi
|
||||||
|
TEXI2PDF = $(TEXI2DVI) --pdf --batch
|
||||||
|
MAKEINFOHTML = $(MAKEINFO) --html
|
||||||
|
AM_MAKEINFOHTMLFLAGS = $(AM_MAKEINFOFLAGS)
|
||||||
|
DVIPS = dvips
|
||||||
|
am__installdirs = "$(DESTDIR)$(infodir)"
|
||||||
|
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
|
||||||
|
ACLOCAL = @ACLOCAL@
|
||||||
|
AMDEP_FALSE = @AMDEP_FALSE@
|
||||||
|
AMDEP_TRUE = @AMDEP_TRUE@
|
||||||
|
AMTAR = @AMTAR@
|
||||||
|
AR = @AR@
|
||||||
|
AUTOCONF = @AUTOCONF@
|
||||||
|
AUTOHEADER = @AUTOHEADER@
|
||||||
|
AUTOMAKE = @AUTOMAKE@
|
||||||
|
AWK = @AWK@
|
||||||
|
BDB_LIBS = @BDB_LIBS@
|
||||||
|
CC = @CC@
|
||||||
|
CCDEPMODE = @CCDEPMODE@
|
||||||
|
CFLAGS = @CFLAGS@
|
||||||
|
CPP = @CPP@
|
||||||
|
CPPFLAGS = @CPPFLAGS@
|
||||||
|
CXX = @CXX@
|
||||||
|
CXXCPP = @CXXCPP@
|
||||||
|
CXXDEPMODE = @CXXDEPMODE@
|
||||||
|
CXXFLAGS = @CXXFLAGS@
|
||||||
|
CYGPATH_W = @CYGPATH_W@
|
||||||
|
DEFS = @DEFS@
|
||||||
|
DEPDIR = @DEPDIR@
|
||||||
|
ECHO = @ECHO@
|
||||||
|
ECHO_C = @ECHO_C@
|
||||||
|
ECHO_N = @ECHO_N@
|
||||||
|
ECHO_T = @ECHO_T@
|
||||||
|
EGREP = @EGREP@
|
||||||
|
EXEEXT = @EXEEXT@
|
||||||
|
F77 = @F77@
|
||||||
|
FFLAGS = @FFLAGS@
|
||||||
|
GREP = @GREP@
|
||||||
|
INSTALL_DATA = @INSTALL_DATA@
|
||||||
|
INSTALL_PROGRAM = @INSTALL_PROGRAM@
|
||||||
|
INSTALL_SCRIPT = @INSTALL_SCRIPT@
|
||||||
|
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
|
||||||
|
LDFLAGS = @LDFLAGS@
|
||||||
|
LIBOBJS = @LIBOBJS@
|
||||||
|
LIBS = @LIBS@
|
||||||
|
LIBTOOL = @LIBTOOL@
|
||||||
|
LN_S = @LN_S@
|
||||||
|
LTLIBOBJS = @LTLIBOBJS@
|
||||||
|
MAINT = @MAINT@
|
||||||
|
MAINTAINER_MODE_FALSE = @MAINTAINER_MODE_FALSE@
|
||||||
|
MAINTAINER_MODE_TRUE = @MAINTAINER_MODE_TRUE@
|
||||||
|
MAKEINFO = @MAKEINFO@
|
||||||
|
OBJEXT = @OBJEXT@
|
||||||
|
PACKAGE = @PACKAGE@
|
||||||
|
PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
|
||||||
|
PACKAGE_NAME = @PACKAGE_NAME@
|
||||||
|
PACKAGE_STRING = @PACKAGE_STRING@
|
||||||
|
PACKAGE_TARNAME = @PACKAGE_TARNAME@
|
||||||
|
PACKAGE_VERSION = @PACKAGE_VERSION@
|
||||||
|
PATH_SEPARATOR = @PATH_SEPARATOR@
|
||||||
|
RANLIB = @RANLIB@
|
||||||
|
SED = @SED@
|
||||||
|
SET_MAKE = @SET_MAKE@
|
||||||
|
SHELL = @SHELL@
|
||||||
|
STRIP = @STRIP@
|
||||||
|
VERSION = @VERSION@
|
||||||
|
ac_ct_CC = @ac_ct_CC@
|
||||||
|
ac_ct_CXX = @ac_ct_CXX@
|
||||||
|
ac_ct_F77 = @ac_ct_F77@
|
||||||
|
am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
|
||||||
|
am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
|
||||||
|
am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@
|
||||||
|
am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@
|
||||||
|
am__include = @am__include@
|
||||||
|
am__leading_dot = @am__leading_dot@
|
||||||
|
am__quote = @am__quote@
|
||||||
|
am__tar = @am__tar@
|
||||||
|
am__untar = @am__untar@
|
||||||
|
bindir = @bindir@
|
||||||
|
build = @build@
|
||||||
|
build_alias = @build_alias@
|
||||||
|
build_cpu = @build_cpu@
|
||||||
|
build_os = @build_os@
|
||||||
|
build_vendor = @build_vendor@
|
||||||
|
datadir = @datadir@
|
||||||
|
datarootdir = @datarootdir@
|
||||||
|
docdir = @docdir@
|
||||||
|
dvidir = @dvidir@
|
||||||
|
exec_prefix = @exec_prefix@
|
||||||
|
host = @host@
|
||||||
|
host_alias = @host_alias@
|
||||||
|
host_cpu = @host_cpu@
|
||||||
|
host_os = @host_os@
|
||||||
|
host_vendor = @host_vendor@
|
||||||
|
htmldir = @htmldir@
|
||||||
|
includedir = @includedir@
|
||||||
|
infodir = @infodir@
|
||||||
|
install_sh = @install_sh@
|
||||||
|
libdir = @libdir@
|
||||||
|
libexecdir = @libexecdir@
|
||||||
|
localedir = @localedir@
|
||||||
|
localstatedir = @localstatedir@
|
||||||
|
mandir = @mandir@
|
||||||
|
mkdir_p = @mkdir_p@
|
||||||
|
oldincludedir = @oldincludedir@
|
||||||
|
pdfdir = @pdfdir@
|
||||||
|
prefix = @prefix@
|
||||||
|
program_transform_name = @program_transform_name@
|
||||||
|
psdir = @psdir@
|
||||||
|
sbindir = @sbindir@
|
||||||
|
sharedstatedir = @sharedstatedir@
|
||||||
|
sysconfdir = @sysconfdir@
|
||||||
|
target_alias = @target_alias@
|
||||||
|
info_TEXINFOS = smmapdfw.texi
|
||||||
|
all: all-am
|
||||||
|
|
||||||
|
.SUFFIXES:
|
||||||
|
.SUFFIXES: .dvi .html .info .pdf .ps .texi
|
||||||
|
$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps)
|
||||||
|
@for dep in $?; do \
|
||||||
|
case '$(am__configure_deps)' in \
|
||||||
|
*$$dep*) \
|
||||||
|
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
|
||||||
|
&& exit 0; \
|
||||||
|
exit 1;; \
|
||||||
|
esac; \
|
||||||
|
done; \
|
||||||
|
echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu doc/Makefile'; \
|
||||||
|
cd $(top_srcdir) && \
|
||||||
|
$(AUTOMAKE) --gnu doc/Makefile
|
||||||
|
.PRECIOUS: Makefile
|
||||||
|
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
|
||||||
|
@case '$?' in \
|
||||||
|
*config.status*) \
|
||||||
|
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
|
||||||
|
*) \
|
||||||
|
echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
|
||||||
|
cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
|
||||||
|
esac;
|
||||||
|
|
||||||
|
$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
|
||||||
|
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
|
||||||
|
|
||||||
|
$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
|
||||||
|
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
|
||||||
|
$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
|
||||||
|
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
|
||||||
|
|
||||||
|
mostlyclean-libtool:
|
||||||
|
-rm -f *.lo
|
||||||
|
|
||||||
|
clean-libtool:
|
||||||
|
-rm -rf .libs _libs
|
||||||
|
|
||||||
|
distclean-libtool:
|
||||||
|
-rm -f libtool
|
||||||
|
|
||||||
|
.texi.info:
|
||||||
|
restore=: && backupdir="$(am__leading_dot)am$$$$" && \
|
||||||
|
am__cwd=`pwd` && cd $(srcdir) && \
|
||||||
|
rm -rf $$backupdir && mkdir $$backupdir && \
|
||||||
|
if ($(MAKEINFO) --version) >/dev/null 2>&1; then \
|
||||||
|
for f in $@ $@-[0-9] $@-[0-9][0-9] $(@:.info=).i[0-9] $(@:.info=).i[0-9][0-9]; do \
|
||||||
|
if test -f $$f; then mv $$f $$backupdir; restore=mv; else :; fi; \
|
||||||
|
done; \
|
||||||
|
else :; fi && \
|
||||||
|
cd "$$am__cwd"; \
|
||||||
|
if $(MAKEINFO) $(AM_MAKEINFOFLAGS) $(MAKEINFOFLAGS) -I $(srcdir) \
|
||||||
|
-o $@ $<; \
|
||||||
|
then \
|
||||||
|
rc=0; \
|
||||||
|
cd $(srcdir); \
|
||||||
|
else \
|
||||||
|
rc=$$?; \
|
||||||
|
cd $(srcdir) && \
|
||||||
|
$$restore $$backupdir/* `echo "./$@" | sed 's|[^/]*$$||'`; \
|
||||||
|
fi; \
|
||||||
|
rm -rf $$backupdir; exit $$rc
|
||||||
|
|
||||||
|
.texi.dvi:
|
||||||
|
TEXINPUTS="$(am__TEXINFO_TEX_DIR)$(PATH_SEPARATOR)$$TEXINPUTS" \
|
||||||
|
MAKEINFO='$(MAKEINFO) $(AM_MAKEINFOFLAGS) $(MAKEINFOFLAGS) -I $(srcdir)' \
|
||||||
|
$(TEXI2DVI) $<
|
||||||
|
|
||||||
|
.texi.pdf:
|
||||||
|
TEXINPUTS="$(am__TEXINFO_TEX_DIR)$(PATH_SEPARATOR)$$TEXINPUTS" \
|
||||||
|
MAKEINFO='$(MAKEINFO) $(AM_MAKEINFOFLAGS) $(MAKEINFOFLAGS) -I $(srcdir)' \
|
||||||
|
$(TEXI2PDF) $<
|
||||||
|
|
||||||
|
.texi.html:
|
||||||
|
rm -rf $(@:.html=.htp)
|
||||||
|
if $(MAKEINFOHTML) $(AM_MAKEINFOHTMLFLAGS) $(MAKEINFOFLAGS) -I $(srcdir) \
|
||||||
|
-o $(@:.html=.htp) $<; \
|
||||||
|
then \
|
||||||
|
rm -rf $@; \
|
||||||
|
if test ! -d $(@:.html=.htp) && test -d $(@:.html=); then \
|
||||||
|
mv $(@:.html=) $@; else mv $(@:.html=.htp) $@; fi; \
|
||||||
|
else \
|
||||||
|
if test ! -d $(@:.html=.htp) && test -d $(@:.html=); then \
|
||||||
|
rm -rf $(@:.html=); else rm -Rf $(@:.html=.htp) $@; fi; \
|
||||||
|
exit 1; \
|
||||||
|
fi
|
||||||
|
$(srcdir)/smmapdfw.info: smmapdfw.texi
|
||||||
|
smmapdfw.dvi: smmapdfw.texi
|
||||||
|
smmapdfw.pdf: smmapdfw.texi
|
||||||
|
smmapdfw.html: smmapdfw.texi
|
||||||
|
.dvi.ps:
|
||||||
|
TEXINPUTS="$(am__TEXINFO_TEX_DIR)$(PATH_SEPARATOR)$$TEXINPUTS" \
|
||||||
|
$(DVIPS) -o $@ $<
|
||||||
|
|
||||||
|
uninstall-info-am:
|
||||||
|
@$(PRE_UNINSTALL)
|
||||||
|
@if (install-info --version && \
|
||||||
|
install-info --version 2>&1 | sed 1q | grep -i -v debian) >/dev/null 2>&1; then \
|
||||||
|
list='$(INFO_DEPS)'; \
|
||||||
|
for file in $$list; do \
|
||||||
|
relfile=`echo "$$file" | sed 's|^.*/||'`; \
|
||||||
|
echo " install-info --info-dir='$(DESTDIR)$(infodir)' --remove '$(DESTDIR)$(infodir)/$$relfile'"; \
|
||||||
|
install-info --info-dir="$(DESTDIR)$(infodir)" --remove "$(DESTDIR)$(infodir)/$$relfile"; \
|
||||||
|
done; \
|
||||||
|
else :; fi
|
||||||
|
@$(NORMAL_UNINSTALL)
|
||||||
|
@list='$(INFO_DEPS)'; \
|
||||||
|
for file in $$list; do \
|
||||||
|
relfile=`echo "$$file" | sed 's|^.*/||'`; \
|
||||||
|
relfile_i=`echo "$$relfile" | sed 's|\.info$$||;s|$$|.i|'`; \
|
||||||
|
(if cd "$(DESTDIR)$(infodir)"; then \
|
||||||
|
echo " cd '$(DESTDIR)$(infodir)' && rm -f $$relfile $$relfile-[0-9] $$relfile-[0-9][0-9] $$relfile_i[0-9] $$relfile_i[0-9][0-9]"; \
|
||||||
|
rm -f $$relfile $$relfile-[0-9] $$relfile-[0-9][0-9] $$relfile_i[0-9] $$relfile_i[0-9][0-9]; \
|
||||||
|
else :; fi); \
|
||||||
|
done
|
||||||
|
|
||||||
|
dist-info: $(INFO_DEPS)
|
||||||
|
@srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
|
||||||
|
list='$(INFO_DEPS)'; \
|
||||||
|
for base in $$list; do \
|
||||||
|
case $$base in \
|
||||||
|
$(srcdir)/*) base=`echo "$$base" | sed "s|^$$srcdirstrip/||"`;; \
|
||||||
|
esac; \
|
||||||
|
if test -f $$base; then d=.; else d=$(srcdir); fi; \
|
||||||
|
for file in $$d/$$base*; do \
|
||||||
|
relfile=`expr "$$file" : "$$d/\(.*\)"`; \
|
||||||
|
test -f $(distdir)/$$relfile || \
|
||||||
|
cp -p $$file $(distdir)/$$relfile; \
|
||||||
|
done; \
|
||||||
|
done
|
||||||
|
|
||||||
|
mostlyclean-aminfo:
|
||||||
|
-rm -rf smmapdfw.aux smmapdfw.cp smmapdfw.cps smmapdfw.fn smmapdfw.fns \
|
||||||
|
smmapdfw.ky smmapdfw.kys smmapdfw.log smmapdfw.pg \
|
||||||
|
smmapdfw.pgs smmapdfw.tmp smmapdfw.toc smmapdfw.tp \
|
||||||
|
smmapdfw.tps smmapdfw.vr smmapdfw.vrs smmapdfw.dvi \
|
||||||
|
smmapdfw.pdf smmapdfw.ps smmapdfw.html
|
||||||
|
|
||||||
|
maintainer-clean-aminfo:
|
||||||
|
@list='$(INFO_DEPS)'; for i in $$list; do \
|
||||||
|
i_i=`echo "$$i" | sed 's|\.info$$||;s|$$|.i|'`; \
|
||||||
|
echo " rm -f $$i $$i-[0-9] $$i-[0-9][0-9] $$i_i[0-9] $$i_i[0-9][0-9]"; \
|
||||||
|
rm -f $$i $$i-[0-9] $$i-[0-9][0-9] $$i_i[0-9] $$i_i[0-9][0-9]; \
|
||||||
|
done
|
||||||
|
tags: TAGS
|
||||||
|
TAGS:
|
||||||
|
|
||||||
|
ctags: CTAGS
|
||||||
|
CTAGS:
|
||||||
|
|
||||||
|
|
||||||
|
distdir: $(DISTFILES)
|
||||||
|
@srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
|
||||||
|
topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \
|
||||||
|
list='$(DISTFILES)'; for file in $$list; do \
|
||||||
|
case $$file in \
|
||||||
|
$(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \
|
||||||
|
$(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \
|
||||||
|
esac; \
|
||||||
|
if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
|
||||||
|
dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
|
||||||
|
if test "$$dir" != "$$file" && test "$$dir" != "."; then \
|
||||||
|
dir="/$$dir"; \
|
||||||
|
$(mkdir_p) "$(distdir)$$dir"; \
|
||||||
|
else \
|
||||||
|
dir=''; \
|
||||||
|
fi; \
|
||||||
|
if test -d $$d/$$file; then \
|
||||||
|
if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
|
||||||
|
cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
|
||||||
|
fi; \
|
||||||
|
cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
|
||||||
|
else \
|
||||||
|
test -f $(distdir)/$$file \
|
||||||
|
|| cp -p $$d/$$file $(distdir)/$$file \
|
||||||
|
|| exit 1; \
|
||||||
|
fi; \
|
||||||
|
done
|
||||||
|
$(MAKE) $(AM_MAKEFLAGS) \
|
||||||
|
top_distdir="$(top_distdir)" distdir="$(distdir)" \
|
||||||
|
dist-info
|
||||||
|
check-am: all-am
|
||||||
|
check: check-am
|
||||||
|
all-am: Makefile $(INFO_DEPS)
|
||||||
|
installdirs:
|
||||||
|
for dir in "$(DESTDIR)$(infodir)"; do \
|
||||||
|
test -z "$$dir" || $(mkdir_p) "$$dir"; \
|
||||||
|
done
|
||||||
|
install: install-am
|
||||||
|
install-exec: install-exec-am
|
||||||
|
install-data: install-data-am
|
||||||
|
uninstall: uninstall-am
|
||||||
|
|
||||||
|
install-am: all-am
|
||||||
|
@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
|
||||||
|
|
||||||
|
installcheck: installcheck-am
|
||||||
|
install-strip:
|
||||||
|
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
|
||||||
|
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
|
||||||
|
`test -z '$(STRIP)' || \
|
||||||
|
echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
|
||||||
|
mostlyclean-generic:
|
||||||
|
|
||||||
|
clean-generic:
|
||||||
|
|
||||||
|
distclean-generic:
|
||||||
|
-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
|
||||||
|
|
||||||
|
maintainer-clean-generic:
|
||||||
|
@echo "This command is intended for maintainers to use"
|
||||||
|
@echo "it deletes files that may require special tools to rebuild."
|
||||||
|
clean: clean-am
|
||||||
|
|
||||||
|
clean-am: clean-generic clean-libtool mostlyclean-am
|
||||||
|
|
||||||
|
distclean: distclean-am
|
||||||
|
-rm -f Makefile
|
||||||
|
distclean-am: clean-am distclean-generic distclean-libtool
|
||||||
|
|
||||||
|
dvi: dvi-am
|
||||||
|
|
||||||
|
dvi-am: $(DVIS)
|
||||||
|
|
||||||
|
html: html-am
|
||||||
|
|
||||||
|
html-am: $(HTMLS)
|
||||||
|
|
||||||
|
info: info-am
|
||||||
|
|
||||||
|
info-am: $(INFO_DEPS)
|
||||||
|
|
||||||
|
install-data-am: install-info-am
|
||||||
|
|
||||||
|
install-exec-am:
|
||||||
|
|
||||||
|
install-info: install-info-am
|
||||||
|
|
||||||
|
install-info-am: $(INFO_DEPS)
|
||||||
|
@$(NORMAL_INSTALL)
|
||||||
|
test -z "$(infodir)" || $(mkdir_p) "$(DESTDIR)$(infodir)"
|
||||||
|
@srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
|
||||||
|
list='$(INFO_DEPS)'; \
|
||||||
|
for file in $$list; do \
|
||||||
|
case $$file in \
|
||||||
|
$(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \
|
||||||
|
esac; \
|
||||||
|
if test -f $$file; then d=.; else d=$(srcdir); fi; \
|
||||||
|
file_i=`echo "$$file" | sed 's|\.info$$||;s|$$|.i|'`; \
|
||||||
|
for ifile in $$d/$$file $$d/$$file-[0-9] $$d/$$file-[0-9][0-9] \
|
||||||
|
$$d/$$file_i[0-9] $$d/$$file_i[0-9][0-9] ; do \
|
||||||
|
if test -f $$ifile; then \
|
||||||
|
relfile=`echo "$$ifile" | sed 's|^.*/||'`; \
|
||||||
|
echo " $(INSTALL_DATA) '$$ifile' '$(DESTDIR)$(infodir)/$$relfile'"; \
|
||||||
|
$(INSTALL_DATA) "$$ifile" "$(DESTDIR)$(infodir)/$$relfile"; \
|
||||||
|
else : ; fi; \
|
||||||
|
done; \
|
||||||
|
done
|
||||||
|
@$(POST_INSTALL)
|
||||||
|
@if (install-info --version && \
|
||||||
|
install-info --version 2>&1 | sed 1q | grep -i -v debian) >/dev/null 2>&1; then \
|
||||||
|
list='$(INFO_DEPS)'; \
|
||||||
|
for file in $$list; do \
|
||||||
|
relfile=`echo "$$file" | sed 's|^.*/||'`; \
|
||||||
|
echo " install-info --info-dir='$(DESTDIR)$(infodir)' '$(DESTDIR)$(infodir)/$$relfile'";\
|
||||||
|
install-info --info-dir="$(DESTDIR)$(infodir)" "$(DESTDIR)$(infodir)/$$relfile" || :;\
|
||||||
|
done; \
|
||||||
|
else : ; fi
|
||||||
|
install-man:
|
||||||
|
|
||||||
|
installcheck-am:
|
||||||
|
|
||||||
|
maintainer-clean: maintainer-clean-am
|
||||||
|
-rm -f Makefile
|
||||||
|
maintainer-clean-am: distclean-am maintainer-clean-aminfo \
|
||||||
|
maintainer-clean-generic
|
||||||
|
|
||||||
|
mostlyclean: mostlyclean-am
|
||||||
|
|
||||||
|
mostlyclean-am: mostlyclean-aminfo mostlyclean-generic \
|
||||||
|
mostlyclean-libtool
|
||||||
|
|
||||||
|
pdf: pdf-am
|
||||||
|
|
||||||
|
pdf-am: $(PDFS)
|
||||||
|
|
||||||
|
ps: ps-am
|
||||||
|
|
||||||
|
ps-am: $(PSS)
|
||||||
|
|
||||||
|
uninstall-am: uninstall-info-am
|
||||||
|
|
||||||
|
.PHONY: all all-am check check-am clean clean-generic clean-libtool \
|
||||||
|
dist-info distclean distclean-generic distclean-libtool \
|
||||||
|
distdir dvi dvi-am html html-am info info-am install \
|
||||||
|
install-am install-data install-data-am install-exec \
|
||||||
|
install-exec-am install-info install-info-am install-man \
|
||||||
|
install-strip installcheck installcheck-am installdirs \
|
||||||
|
maintainer-clean maintainer-clean-aminfo \
|
||||||
|
maintainer-clean-generic mostlyclean mostlyclean-aminfo \
|
||||||
|
mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
|
||||||
|
uninstall uninstall-am uninstall-info-am
|
||||||
|
|
||||||
|
# Tell versions [3.59,3.63) of GNU make to not export all variables.
|
||||||
|
# Otherwise a system limit (for SysV at least) may be exceeded.
|
||||||
|
.NOEXPORT:
|
@ -13,6 +13,7 @@ Copyright @copyright{} 2004 Wolfgang Hottgenroth
|
|||||||
@titlepage
|
@titlepage
|
||||||
@title smmapdfw
|
@title smmapdfw
|
||||||
@subtitle A framework for workers for the sendmail socketmap
|
@subtitle A framework for workers for the sendmail socketmap
|
||||||
|
@subtitle --- featuring a sender-address verifier and a Cyrus mailbox checker ---
|
||||||
@author Wolfgang Hottgenroth
|
@author Wolfgang Hottgenroth
|
||||||
|
|
||||||
@page
|
@page
|
||||||
@ -32,6 +33,8 @@ Copyright @copyright{} 2004 Wolfgang Hottgenroth
|
|||||||
@menu
|
@menu
|
||||||
* Motivation::
|
* Motivation::
|
||||||
* Overview::
|
* Overview::
|
||||||
|
* Building smmapd from the sources::
|
||||||
|
* Command line options::
|
||||||
* Using from sendmail::
|
* Using from sendmail::
|
||||||
* Configuration::
|
* Configuration::
|
||||||
* API::
|
* API::
|
||||||
@ -39,29 +42,375 @@ Copyright @copyright{} 2004 Wolfgang Hottgenroth
|
|||||||
@detailmenu
|
@detailmenu
|
||||||
--- The Detailed Node Listing ---
|
--- The Detailed Node Listing ---
|
||||||
|
|
||||||
|
Overview
|
||||||
|
|
||||||
|
* Sender-address verification plugin::
|
||||||
|
* Cyrus mailbox check plugin::
|
||||||
|
|
||||||
|
Using from sendmail
|
||||||
|
|
||||||
|
* sender address verification::
|
||||||
|
* Cyrus IMAP server mailbox checks::
|
||||||
|
|
||||||
Configuration
|
Configuration
|
||||||
|
|
||||||
* Global::
|
* Global::
|
||||||
* Plugin::
|
* Plugin::
|
||||||
|
|
||||||
|
Plugin
|
||||||
|
|
||||||
|
* Sender-address verifier::
|
||||||
|
* Cyrus mailbox checker::
|
||||||
|
|
||||||
|
API
|
||||||
|
|
||||||
|
* Plugin interface::
|
||||||
|
* Obtaining configuration data::
|
||||||
|
* More or less useful stuff::
|
||||||
|
|
||||||
|
Plugin interface
|
||||||
|
|
||||||
|
* name::
|
||||||
|
* Container setup function::
|
||||||
|
* Container destroy function::
|
||||||
|
* Worker setup function::
|
||||||
|
* Worker destroy function::
|
||||||
|
* Worker function::
|
||||||
|
|
||||||
|
Obtaining configuration data
|
||||||
|
|
||||||
|
* Without default value::
|
||||||
|
* With default value::
|
||||||
|
|
||||||
|
More or less useful stuff
|
||||||
|
|
||||||
|
* count.h::
|
||||||
|
* queue.h::
|
||||||
|
* htdns.h::
|
||||||
|
* htmalloc.h::
|
||||||
|
* smtp.h::
|
||||||
|
* safe_write.h::
|
||||||
|
|
||||||
@end detailmenu
|
@end detailmenu
|
||||||
@end menu
|
@end menu
|
||||||
|
|
||||||
@node Motivation, Overview, Top, Top
|
@node Motivation, Overview, Top, Top
|
||||||
@chapter Motivation
|
@chapter Motivation
|
||||||
Why smmapdfw
|
With release 8.13 sendmail introduces the socket map type. A map can
|
||||||
|
be defined where a query is sent over an socket to an external daemon,
|
||||||
|
doing some computations on the query to send back the result over the
|
||||||
|
socket.
|
||||||
|
|
||||||
@node Overview, Using from sendmail, Motivation, Top
|
This opens another door to query data from external processes when
|
||||||
|
performing mail routing. Thereby the already rich feature set of
|
||||||
|
sendmail can be improved even more.
|
||||||
|
|
||||||
|
This framework provides all required stuff like a threaded tcp-server,
|
||||||
|
the netstring codec, map name dispatching, configuration file
|
||||||
|
processing and more, so someone who likes to design and implement a
|
||||||
|
particular socket map and concentrate completely on the particular
|
||||||
|
task the socket map has to perform.
|
||||||
|
|
||||||
|
The particular socket map processor appears as a shared object which
|
||||||
|
is dynamically loaded by the daemon depending on the configuration.
|
||||||
|
|
||||||
|
@node Overview, Building smmapd from the sources, Motivation, Top
|
||||||
@chapter Overview
|
@chapter Overview
|
||||||
Overview over smmapdfw
|
smmapdfw consists of the actual server -- smmapd --, a library --
|
||||||
|
libsmmapdfw -- providing the API and three plugins, one useless
|
||||||
|
example and two more useful ones: a sender-address verifier and a
|
||||||
|
Cyrus mailbox checker.
|
||||||
|
|
||||||
@node Using from sendmail, Configuration, Overview, Top
|
The server reads the configuration file, loads all configured plugins
|
||||||
|
(socket map processors) and opens the configured tcp socket. It
|
||||||
|
accepts requests on this tcp socket from sendmail in netstring
|
||||||
|
encoding. For each connections it starts a thread. In this thread it
|
||||||
|
dispatches the requests (the map name is part of the request) -- after
|
||||||
|
decoding it from netstring and stripping the map name -- to the
|
||||||
|
particular socket map processors. Afterwards it returns the result of
|
||||||
|
the socket map processor -- after encoding it into netstring -- to
|
||||||
|
sendmail.
|
||||||
|
|
||||||
|
The library provides all functions and types defined by the API. For
|
||||||
|
details go ahead to the API section.
|
||||||
|
|
||||||
|
The socket map processors are implemented as plugins which are
|
||||||
|
registered and loaded at run-time. They have to implement a worker
|
||||||
|
function and may implement container and worker setup and destroy
|
||||||
|
functions.
|
||||||
|
|
||||||
|
For each plugin two handles may be created: the container handle can
|
||||||
|
be created at server start up time and lasts the whole lifetime of the
|
||||||
|
server, the worker handle is created when a request is dispatched to a
|
||||||
|
plugin and lasts for all requests coming in during the
|
||||||
|
connection.
|
||||||
|
|
||||||
|
The container setup function, which a plugin can implement, is called
|
||||||
|
at start up time, and returns the container handle.
|
||||||
|
|
||||||
|
The worker setup function, which a plugin can implement, is called
|
||||||
|
when the first request of a connection is dispatched to the plugin,
|
||||||
|
and returns the worker handle.
|
||||||
|
|
||||||
|
Both container and worker handle are provided to the worker function.
|
||||||
|
|
||||||
|
The framework stores both container and worker handle as void pointer,
|
||||||
|
so each plugin has to define its own handle data structure.
|
||||||
|
|
||||||
|
|
||||||
|
@menu
|
||||||
|
* Sender-address verification plugin::
|
||||||
|
* Cyrus mailbox check plugin::
|
||||||
|
@end menu
|
||||||
|
|
||||||
|
@node Sender-address verification plugin, Cyrus mailbox check plugin, Overview, Overview
|
||||||
|
@section Sender-address verification plugin
|
||||||
|
This plugin performs verifications of sender-addresses.
|
||||||
|
|
||||||
|
An m4 file -- @file{verifysender.m4} -- providing a sendmail feature is
|
||||||
|
part of the smmapdfw distribution.
|
||||||
|
|
||||||
|
To verify a sender-address, the plugin looks up the primary MX record
|
||||||
|
of the domain of the sender-address and all IP addresses belonging to
|
||||||
|
the found MX names.
|
||||||
|
|
||||||
|
For each IP address it starts a checker thread. Each checker thread
|
||||||
|
starts an smtp dialog to the mail-server listening on the IP. It stops
|
||||||
|
the dialog after an failure or latest after the @code{rcpt} command.
|
||||||
|
It uses a configurable address as sender and the address under test as
|
||||||
|
recipient. It collects the result given after the @code{rcpt} and
|
||||||
|
returns depending on the code OK, temporary or permanent failure.
|
||||||
|
|
||||||
|
The first checker thread returning a permanent result (OK or permanent
|
||||||
|
failure) wins and its result is stored in the cache (if enabled) and
|
||||||
|
returned to sendmail.
|
||||||
|
|
||||||
|
If no checker thread delivers a permanent result within the result
|
||||||
|
timeout, a temporary failure is returned. However, no checker thread
|
||||||
|
is aborted and the result of the first one is then just stored in the
|
||||||
|
cache.
|
||||||
|
|
||||||
|
|
||||||
|
@node Cyrus mailbox check plugin, , Sender-address verification plugin, Overview
|
||||||
|
@section Cyrus mailbox checker
|
||||||
|
When sendmail performs final delivery via lmtp to a Cyrus IMAP server
|
||||||
|
and the IMAP server returns a overquota failure, sendmail is in a
|
||||||
|
somewhat unlucky position since it already has accepted the mail and
|
||||||
|
nevertheless can not deliver it. It has to keep it in the queue. (So,
|
||||||
|
the quota of a mailbox is unlimitly extended into sendmail's queue.)
|
||||||
|
|
||||||
|
Unlucky enough, but usually after five days of repeated unsuccessful
|
||||||
|
delivery attempt the message is returned to its sender.
|
||||||
|
|
||||||
|
But it comes even more bad: the sender-address might be invalid, and
|
||||||
|
now the message can not be returned.
|
||||||
|
|
||||||
|
So, it would be good to reject the message directly in the smtp dialog
|
||||||
|
if the recipients mailbox is overquota.
|
||||||
|
|
||||||
|
Again, an m4 file -- @file{cyruscheck.m4} -- providing a sendmail
|
||||||
|
feature is part of this distribution.
|
||||||
|
|
||||||
|
It hooks into the local parse ruleset and checks through the map
|
||||||
|
utilizing this plugin the Cyrus IMAP server to see whether the
|
||||||
|
particular mailbox can store more mail.
|
||||||
|
|
||||||
|
@node Building smmapd from the sources, Command line options, Overview, Top
|
||||||
|
@chapter Building smmapd from the sources
|
||||||
|
smmapd comes with a autoconf @file{configure} script.
|
||||||
|
|
||||||
|
To get some help for the parameters it supports, say
|
||||||
|
|
||||||
|
@verbatim
|
||||||
|
./configure --help
|
||||||
|
@end verbatim
|
||||||
|
|
||||||
|
Important options are these:
|
||||||
|
|
||||||
|
@verbatim
|
||||||
|
--enable-stats Enables statistics collection. (default=no)
|
||||||
|
--with-bdb-lib-dir Directory for Berkeley DB library files
|
||||||
|
--with-bdb-inc-dir Directory for Berkeley include files
|
||||||
|
--with-djbdns-lib-dir Directory for Bernstein's djbdns library files
|
||||||
|
--with-djbdns-inc-dir Directory for Bernstein's djbdns include files
|
||||||
|
--with-netsnmp With Net-SNMP
|
||||||
|
--with-netsnmp-lib-dir Directory for Net-SNMP library files
|
||||||
|
--with-netsnmp-inc-dir Directory for Net-SNMP include files
|
||||||
|
--with-netsnmp-bin-dir Directory for Net-SNMP bin files, specifically
|
||||||
|
net-snmp-config
|
||||||
|
@end verbatim
|
||||||
|
|
||||||
|
The Berkeley DB (tested with version 4.1.25) is required for the cache
|
||||||
|
of the verifier plugin.
|
||||||
|
|
||||||
|
DJB's resolver library (djbdns) is required on systems where the
|
||||||
|
default resolver library is not thread-safe. (In my test-bed this was
|
||||||
|
true for Solaris 8.)
|
||||||
|
|
||||||
|
To gather statistic data, use @code{--enable-stats}, to be able to
|
||||||
|
retrieve statistic data through snmp use @code{--with-netsnmp}. snmp
|
||||||
|
requires @code{--enable-stats}. If there are no direct paths to the
|
||||||
|
Net-SNMP stuff (tested with Net-SNMP 5.1.2), use
|
||||||
|
@code{--with-netsnmp-lib-dir}, @code{--with-netsnmp-inc-dir} and
|
||||||
|
@code{--with-netsnmp-bin-dir}.
|
||||||
|
|
||||||
|
|
||||||
|
@node Command line options, Using from sendmail, Building smmapd from the sources, Top
|
||||||
|
@chapter Command line options
|
||||||
|
|
||||||
|
@table @code
|
||||||
|
@item -F
|
||||||
|
Run smmapd in foreground instead of daemonizing. Overwrites the
|
||||||
|
@code{do_fork} configuration option.
|
||||||
|
|
||||||
|
@item -f <config-file>
|
||||||
|
Use the given configuration file instead of the default one.
|
||||||
|
|
||||||
|
@item -p <pid-file>
|
||||||
|
Write the pid when daemonizing to the given pid file instead of the
|
||||||
|
one mentioned in the configuration file.
|
||||||
|
|
||||||
|
@item -v
|
||||||
|
Display version information.
|
||||||
|
|
||||||
|
@item -h
|
||||||
|
Display usage information.
|
||||||
|
@end table
|
||||||
|
|
||||||
|
|
||||||
|
@node Using from sendmail, Configuration, Command line options, Top
|
||||||
@chapter Using from sendmail
|
@chapter Using from sendmail
|
||||||
How to use smmapdfw from sendmail
|
|
||||||
|
To use a socket map in sendmail, it must be defined in the cf:
|
||||||
|
|
||||||
|
@verbatim
|
||||||
|
Kverifier socket -T<temp> inet:8884@127.0.0.1
|
||||||
|
@end verbatim
|
||||||
|
|
||||||
|
Then, the socket map can be used in rules as any other map too:
|
||||||
|
|
||||||
|
@verbatim
|
||||||
|
R< $+ > $: < $1 > < $(verifier $1 $:none $) >
|
||||||
|
@end verbatim
|
||||||
|
|
||||||
|
|
||||||
|
Many socket maps can use the same socket:
|
||||||
|
|
||||||
|
@verbatim
|
||||||
|
Kverifier socket -T<temp> inet:8884@127.0.0.1
|
||||||
|
Kcyruscheck socket -T<temp> inet:8884@127.0.0.1
|
||||||
|
Kdontknow socket -T<temp> inet:8884@127.0.0.1
|
||||||
|
@end verbatim
|
||||||
|
|
||||||
|
(Here, the dispatcher of smmapdfw jumps in.)
|
||||||
|
|
||||||
|
@menu
|
||||||
|
* sender address verification::
|
||||||
|
* Cyrus IMAP server mailbox checks::
|
||||||
|
@end menu
|
||||||
|
|
||||||
|
@node sender address verification, Cyrus IMAP server mailbox checks, Using from sendmail, Using from sendmail
|
||||||
|
@section sender address verification
|
||||||
|
|
||||||
|
A sendmail feature file is delivered with smmapd to link the sender
|
||||||
|
address verification into the ruleset @code{check_mail} hook
|
||||||
|
@code{Local_check_mail}.
|
||||||
|
|
||||||
|
It takes three parameters and can be used in the @code{sendmail.mc}
|
||||||
|
like this:
|
||||||
|
|
||||||
|
@verbatim
|
||||||
|
FEATURE(`verifysender', `_mode_', `_return_', `_dummy_')
|
||||||
|
@end verbatim
|
||||||
|
|
||||||
|
@code{_mode_} must be replaced by either @code{black} or
|
||||||
|
@code{white}.
|
||||||
|
|
||||||
|
For @code{black} a blacklist in
|
||||||
|
@code{/etc/mail/verifier-black-list} is considered and only sender
|
||||||
|
addresses in there mentioned domains are verified.
|
||||||
|
|
||||||
|
The location of the blacklist can be configured using
|
||||||
|
|
||||||
|
@verbatim
|
||||||
|
define(`confVERIFIER_BLACKLIST', `hash -o /prod/sendmail/etc/verifier-black-list')
|
||||||
|
@end verbatim
|
||||||
|
|
||||||
|
|
||||||
|
For @code{white} a whitelist in
|
||||||
|
@code{/etc/mail/verifier-white-list} is considered and sender
|
||||||
|
addresses in the whitelist or in domains mentioned in the whitelist
|
||||||
|
are not verified.
|
||||||
|
|
||||||
|
The location of the whitelist can be configured using
|
||||||
|
|
||||||
|
@verbatim
|
||||||
|
define(`confVERIFIER_WHITELIST', `hash -o /prod/sendmail/etc/verifier-white-list')
|
||||||
|
@end verbatim
|
||||||
|
|
||||||
|
@code{confVERIFIER_BLACKLIST} and @code{confVERIFIER_WHITELIST} must
|
||||||
|
appear in the @code{sendmail.mc} before the feature is called.
|
||||||
|
|
||||||
|
@code{_return_} must be replaced by either @code{temp} or
|
||||||
|
@code{perm}.
|
||||||
|
|
||||||
|
If the sender address verification ends up in a permanent negative
|
||||||
|
response from the home-server of the address, for @code{temp} a
|
||||||
|
temporary failure (4xx), for @code{perm} a permanent
|
||||||
|
failure (5xx) is returned.
|
||||||
|
|
||||||
|
@code{_dummy_} must be replaced by either @code{active} or
|
||||||
|
@code{dummy}. If @code{dummy} is set here, the verifier is called but
|
||||||
|
its result is just logged and not further considered for the routing.
|
||||||
|
|
||||||
|
The connection to the smmapd is configured using
|
||||||
|
@code{define(`confVERIFIER_MAP')}.
|
||||||
|
The default is
|
||||||
|
|
||||||
|
@verbatim
|
||||||
|
define(`confVERIFIER_MAP', `inet:8884@127.0.0.1')
|
||||||
|
@end verbatim
|
||||||
|
|
||||||
|
@node Cyrus IMAP server mailbox checks, , sender address verification, Using from sendmail
|
||||||
|
@section Cyrus IMAP server mailbox checks
|
||||||
|
|
||||||
|
|
||||||
|
A sendmail feature file @code{cyruscheck.m4} is delivered with
|
||||||
|
smmapd. It provides a ruleset @code{cyruscheck}, which can by used in
|
||||||
|
ruleset @code{ParseLocal}.
|
||||||
|
|
||||||
|
It can be used in the @code{sendmail.mc} like this:
|
||||||
|
|
||||||
|
@verbatim
|
||||||
|
FEATURE(`cyruscheck', `_dummy_')
|
||||||
|
@end verbatim
|
||||||
|
|
||||||
|
@code{_dummy_} must be replaced by either @code{active} or
|
||||||
|
@code{dummy}. If @code{dummy} is set here, the verifier is called but
|
||||||
|
its result is just logged and not further considered for the routing.
|
||||||
|
|
||||||
|
However, remember that only the ruleset @code{cyruscheck} is
|
||||||
|
provided. You need to call it in your @code{LocalParse} ruleset on
|
||||||
|
your own.
|
||||||
|
|
||||||
|
The ruleset takes two parameters: The mailbox name on the Cyrus IMAP
|
||||||
|
server and the hostname of the Cyrus IMAP server, both in angle brackets.
|
||||||
|
|
||||||
|
The connection to the smmapd is configured using
|
||||||
|
@code{define(`confCYRUSCHECK_MAP')}.
|
||||||
|
The default is
|
||||||
|
|
||||||
|
@verbatim
|
||||||
|
define(`confCYRUSCHECK_MAP', `inet:8884@127.0.0.1')
|
||||||
|
@end verbatim
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@node Configuration, API, Using from sendmail, Top
|
@node Configuration, API, Using from sendmail, Top
|
||||||
@chapter Configuration
|
@chapter Configuration
|
||||||
How to configure smmapdfw
|
The configuration file of smmapdfw has one global section, for the
|
||||||
|
server itself and one section for each plugin.
|
||||||
|
|
||||||
|
|
||||||
@menu
|
@menu
|
||||||
* Global::
|
* Global::
|
||||||
@ -70,11 +419,202 @@ How to configure smmapdfw
|
|||||||
|
|
||||||
@node Global, Plugin, Configuration, Configuration
|
@node Global, Plugin, Configuration, Configuration
|
||||||
@section Global
|
@section Global
|
||||||
Global configuration items
|
|
||||||
|
@verbatim
|
||||||
|
[global]
|
||||||
|
do_fork = 0
|
||||||
|
pid_file = smmapd.pid
|
||||||
|
address = 127.0.0.1
|
||||||
|
port = 8887
|
||||||
|
; plugin_dir = /home/who/Sources/sf/smmapdfw
|
||||||
|
; plugins = test_worker1 test_worker2 verifier cyruscheck lua_worker
|
||||||
|
plugins = verifier
|
||||||
|
enable_stats = 1
|
||||||
|
enable_snmp = 1
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@end verbatim
|
||||||
|
|
||||||
|
@table @samp
|
||||||
|
@item do_fork
|
||||||
|
Should the server fork into background. 0 or 1. May be overwritten by
|
||||||
|
@code{-F} commandline switch.
|
||||||
|
|
||||||
|
@item pid_file
|
||||||
|
Path and filename of the pidfile. May be overwritten by @code{-p}
|
||||||
|
commandline switch.
|
||||||
|
|
||||||
|
@item address
|
||||||
|
Address to bind socket on. Leave it out to bind on @code{IN_ANYADDR}.
|
||||||
|
|
||||||
|
@item port
|
||||||
|
Port to bind socket on.
|
||||||
|
|
||||||
|
@item plugin_dir
|
||||||
|
Directory where plugins can be found. Usually this parameter is not
|
||||||
|
required, when plugins are installed in the lib path configured when
|
||||||
|
building smmapdfw. Only one path can be given.
|
||||||
|
|
||||||
|
@item plugins
|
||||||
|
Lists all plugins separated by spaces which should be loaded. The plugin name refers to
|
||||||
|
the section name of the particular configuration section.
|
||||||
|
|
||||||
|
@item enable_stats
|
||||||
|
This enables the statistics output thread. It is only available when
|
||||||
|
smmapd was built with @code{--enable-stats}. Further configuration in
|
||||||
|
section @code{stats} is required.
|
||||||
|
|
||||||
|
@item enable_snmp
|
||||||
|
This enables the snmp AgentX subagent to retrieve statistic data. It
|
||||||
|
is only available when smmapd was built with @code{--enable-stats} and
|
||||||
|
@code{--with-netsnmp}. Further configuration in section @code{snmp} is required.
|
||||||
|
@end table
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@section stats
|
||||||
|
|
||||||
|
@verbatim
|
||||||
|
[stats]
|
||||||
|
stdout_nice = 2
|
||||||
|
syslog_nice =1
|
||||||
|
period = 1
|
||||||
|
@end verbatim
|
||||||
|
|
||||||
|
The statistics output thread can write to stdout and/or syslog in two
|
||||||
|
different format, one more human-readable, the other one more
|
||||||
|
machine-readable.
|
||||||
|
|
||||||
|
The number after @code{stdout_nice} and @code{syslog_nice} specifies
|
||||||
|
the format. 0 means no output on this channel, 1 means
|
||||||
|
machine-readable output and 2 means human-readable output.
|
||||||
|
|
||||||
|
@code{period} specifies the time in seconds behind to statistic
|
||||||
|
outputs.
|
||||||
|
|
||||||
|
@section snmp
|
||||||
|
|
||||||
|
@verbatim
|
||||||
|
[snmp]
|
||||||
|
agentx_socket = /var/agentx/master
|
||||||
|
@end verbatim
|
||||||
|
|
||||||
|
The socket on which the snmpd is listening for AgentX subagents is
|
||||||
|
specified here.
|
||||||
|
|
||||||
|
|
||||||
@node Plugin, , Global, Configuration
|
@node Plugin, , Global, Configuration
|
||||||
@section Plugin
|
@section Plugin
|
||||||
General plugin configuration items
|
The section name of a plugin configuration section must be used in the
|
||||||
|
@code{plugins} parameter of the @code{global} section.
|
||||||
|
|
||||||
|
Each plugin section must have at least the name of the shared object
|
||||||
|
file from which the plugin should be loaded in the parameter @code{obj}.
|
||||||
|
|
||||||
|
All other parameters a completely under the control of the plugin
|
||||||
|
designer/implementor.
|
||||||
|
|
||||||
|
@menu
|
||||||
|
* Sender-address verifier::
|
||||||
|
* Cyrus mailbox checker::
|
||||||
|
@end menu
|
||||||
|
|
||||||
|
@node Sender-address verifier, Cyrus mailbox checker, Plugin, Plugin
|
||||||
|
@subsection Sender-address verifier
|
||||||
|
|
||||||
|
@verbatim
|
||||||
|
[verifier]
|
||||||
|
obj = libverify_worker.so
|
||||||
|
timeout_result = 5
|
||||||
|
timeout_dialog = 20
|
||||||
|
cache_enabled = 1
|
||||||
|
cache_expiry = 86400
|
||||||
|
cache_file = /var/lib/smmapdfw/verifier.cache
|
||||||
|
sender_address = <>
|
||||||
|
ehlo_arg = local
|
||||||
|
smtp_port = 25
|
||||||
|
max_checker_threads = 100
|
||||||
|
|
||||||
|
@end verbatim
|
||||||
|
|
||||||
|
|
||||||
|
@table @samp
|
||||||
|
@item obj
|
||||||
|
The plugin should be loaded from the file @code{libverify_worker.so}.
|
||||||
|
|
||||||
|
@item timeout_result
|
||||||
|
The plugin will return a result latest after this timeout. If there is
|
||||||
|
no result at this time, a temporary failure will be returned. However,
|
||||||
|
running verifications will not be aborted, so their results can go
|
||||||
|
into the cache.
|
||||||
|
|
||||||
|
@item timeout_dialog
|
||||||
|
Timeout for the smtp dialog to home servers of sender-addresses.
|
||||||
|
|
||||||
|
@item cache_enable
|
||||||
|
Cache permenant results of verifications.
|
||||||
|
|
||||||
|
@item cache_expiry
|
||||||
|
Expiry time of entries in the cache.
|
||||||
|
|
||||||
|
@item cache_file
|
||||||
|
Path and filename of the cache.
|
||||||
|
|
||||||
|
@item sender_address
|
||||||
|
This address will be used as sender-address in the verification
|
||||||
|
dialog. Use some special to avoid verification loops. The address must
|
||||||
|
be given in exactly that notation it should be used in the dialog.
|
||||||
|
|
||||||
|
@item ehlo_arg
|
||||||
|
Argument to the @code{ehlo} command in the verification dialog. Note
|
||||||
|
that certain MTA's require a full qualified domain name.
|
||||||
|
|
||||||
|
@item smtp_port
|
||||||
|
Port to be used for smtp verification dialog.
|
||||||
|
|
||||||
|
@item max_checker_threads
|
||||||
|
The verifier plugin looks up the primary MX for a sender-address and
|
||||||
|
resolves all IP addresses for the found MX records. For each IP
|
||||||
|
address it starts one checker thread. (The first one returning a
|
||||||
|
permenant result wins.) This parameter limits the number of checker
|
||||||
|
threads.
|
||||||
|
@end table
|
||||||
|
|
||||||
|
@node Cyrus mailbox checker, , Sender-address verifier, Plugin
|
||||||
|
@subsection Cyrus mailbox checker
|
||||||
|
|
||||||
|
@verbatim
|
||||||
|
[cyruscheck]
|
||||||
|
obj = libcyrus_worker.so
|
||||||
|
timeout = 10
|
||||||
|
sender_address = <testsender>
|
||||||
|
lhlo_arg = local
|
||||||
|
lmtp_port = 24
|
||||||
|
|
||||||
|
@end verbatim
|
||||||
|
|
||||||
|
|
||||||
|
@table @samp
|
||||||
|
@item obj
|
||||||
|
The cyrus mailbox checker should be loaded from the file
|
||||||
|
@code{libcyrus_worker.so}.
|
||||||
|
|
||||||
|
@item timeout
|
||||||
|
Timeout for the lmtp dialog.
|
||||||
|
|
||||||
|
@item sender_address
|
||||||
|
Address to be used as sender in the lmtp dialog.
|
||||||
|
|
||||||
|
@item lhlo_arg
|
||||||
|
Argument for @code{lhlo} in the lmtp dialog.
|
||||||
|
|
||||||
|
@item lmtp_port
|
||||||
|
Port to be used for the lmtp dialog.
|
||||||
|
@end table
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@ -82,5 +622,315 @@ General plugin configuration items
|
|||||||
@chapter API
|
@chapter API
|
||||||
API documentation for plugin programmers
|
API documentation for plugin programmers
|
||||||
|
|
||||||
|
@menu
|
||||||
|
* Plugin interface::
|
||||||
|
* Obtaining configuration data::
|
||||||
|
* More or less useful stuff::
|
||||||
|
@end menu
|
||||||
|
|
||||||
|
@node Plugin interface, Obtaining configuration data, API, API
|
||||||
|
@section Plugin interface
|
||||||
|
|
||||||
|
Each plugin has to defined a class descriptor of the type
|
||||||
|
@code{class_descriptor_t}.
|
||||||
|
|
||||||
|
@verbatim
|
||||||
|
struct class_descriptor_s {
|
||||||
|
char *name;
|
||||||
|
int (*init_function)(cfgl_t *cfg, void **handle);
|
||||||
|
int (*destroy_function)(void *handle);
|
||||||
|
int (*work_setup_function)(void *handle, void **work_handle);
|
||||||
|
int (*work_function)(void *handle, void *work_handle, char *input,
|
||||||
|
char *output);
|
||||||
|
int (*work_destroy_function)(void *handle, void *work_handle);
|
||||||
|
};
|
||||||
|
|
||||||
|
typedef struct class_descriptor_s class_descriptor_t;
|
||||||
|
|
||||||
|
@end verbatim
|
||||||
|
|
||||||
|
The variable name of the class descriptor must be the same as the
|
||||||
|
configuration section name from the configuration file. As an example:
|
||||||
|
here is the descriptor of the verifier plugin:
|
||||||
|
|
||||||
|
@verbatim
|
||||||
|
class_descriptor_t verifier = {
|
||||||
|
"verifier",
|
||||||
|
&verify_init,
|
||||||
|
&verify_destroy,
|
||||||
|
&verify_work_setup,
|
||||||
|
&verify_work,
|
||||||
|
&verify_work_destroy
|
||||||
|
};
|
||||||
|
|
||||||
|
@end verbatim
|
||||||
|
|
||||||
|
@menu
|
||||||
|
* name::
|
||||||
|
* Container setup function::
|
||||||
|
* Container destroy function::
|
||||||
|
* Worker setup function::
|
||||||
|
* Worker destroy function::
|
||||||
|
* Worker function::
|
||||||
|
@end menu
|
||||||
|
|
||||||
|
@node name, Container setup function, Plugin interface, Plugin interface
|
||||||
|
@subsection @code{name}
|
||||||
|
|
||||||
|
This is the name of the plugin. It must match to the name of the
|
||||||
|
plugin descriptor and the name of the plugin's configuration section.
|
||||||
|
|
||||||
|
@node Container setup function, Container destroy function, name, Plugin interface
|
||||||
|
@subsection Container setup function: @code{init_function}
|
||||||
|
|
||||||
|
@code{int (*init_function)(cfgl_t *cfg, void **handle);}
|
||||||
|
|
||||||
|
The Container setup function is called at start up time. A handle to
|
||||||
|
access the configuration is handed over and the container handle is
|
||||||
|
expected back.
|
||||||
|
|
||||||
|
Each plugin defines its own structure for the container
|
||||||
|
handle. Certainly it will store the configuration handle within.
|
||||||
|
|
||||||
|
|
||||||
|
@node Container destroy function, Worker setup function, Container setup function, Plugin interface
|
||||||
|
@subsection Container destroy function: @code{destroy_function}
|
||||||
|
|
||||||
|
@code{int (*destroy_function)(void *handle);}
|
||||||
|
|
||||||
|
The Container destroy function is called when the plugin is
|
||||||
|
unloaded. Is happens currently never.
|
||||||
|
|
||||||
|
However, free any resources allocated for the container within this
|
||||||
|
function.
|
||||||
|
|
||||||
|
|
||||||
|
@node Worker setup function, Worker destroy function, Container destroy function, Plugin interface
|
||||||
|
@subsection Worker setup function: @code{work_setup_function}
|
||||||
|
|
||||||
|
@code{int (*work_setup_function)(void *handle, void **work_handle);}
|
||||||
|
|
||||||
|
The worker setup function is called when the first request of one
|
||||||
|
connection is dispatched to the plugin. The container handle is
|
||||||
|
provided, the worker handle is expected back.
|
||||||
|
|
||||||
|
Each plugin defines its own structure for the worker handle.
|
||||||
|
|
||||||
|
|
||||||
|
@node Worker destroy function, Worker function, Worker setup function, Plugin interface
|
||||||
|
@subsection Worker destroy function: @code{work_destroy_function}
|
||||||
|
|
||||||
|
@code{int (*work_destroy_function)(void *handle, void *work_handle);}
|
||||||
|
|
||||||
|
The worker destroy function is called when the connection associated
|
||||||
|
with the worker is closed.
|
||||||
|
|
||||||
|
Free any resources allocated for this worker. Do not free resources
|
||||||
|
associated with the container.
|
||||||
|
|
||||||
|
@node Worker function, , Worker destroy function, Plugin interface
|
||||||
|
@subsection Worker function: @code{work_function}
|
||||||
|
|
||||||
|
@code{int (*work_function)(void *handle, void *work_handle, char *input, char *output);}
|
||||||
|
|
||||||
|
The worker function is called for each request dispatched to this
|
||||||
|
plugin. The container handle, the worker handle and of course the
|
||||||
|
input is provided.
|
||||||
|
|
||||||
|
The return value must be one of
|
||||||
|
|
||||||
|
@verbatim
|
||||||
|
#define SMM_OK 1
|
||||||
|
#define SMM_TEMP_NOK 2
|
||||||
|
#define SMM_PERM_NOK 3
|
||||||
|
#define SMM_NOT_FOUND_NOK 4
|
||||||
|
|
||||||
|
@end verbatim
|
||||||
|
|
||||||
|
which matches to the codes sendmail expects in the response from a
|
||||||
|
socket map.
|
||||||
|
|
||||||
|
@code{output} is the text returned with the code to
|
||||||
|
sendmail. Especially for @code{SMM_OK} this is the return value of the
|
||||||
|
map.
|
||||||
|
|
||||||
|
|
||||||
|
@node Obtaining configuration data, More or less useful stuff, Plugin interface, API
|
||||||
|
@section Obtaining configuration data
|
||||||
|
|
||||||
|
Each plugin can easily obtain data from its own configuration section.
|
||||||
|
|
||||||
|
|
||||||
|
@menu
|
||||||
|
* Without default value::
|
||||||
|
* With default value::
|
||||||
|
@end menu
|
||||||
|
|
||||||
|
@node Without default value, With default value, Obtaining configuration data, Obtaining configuration data
|
||||||
|
@subsection Without default value
|
||||||
|
|
||||||
|
@code{char *findcfgl(config_item_t *cfg, char *name);}
|
||||||
|
|
||||||
|
@table @samp
|
||||||
|
@item cfg
|
||||||
|
Configuration handle, handed over to the plugin through the container
|
||||||
|
setup function.
|
||||||
|
|
||||||
|
@item name
|
||||||
|
Name of the configuration parameter.
|
||||||
|
@end table
|
||||||
|
|
||||||
|
The value of the request configuration parameter is returned. If it
|
||||||
|
does not exist, @code{NULL} is returned.
|
||||||
|
|
||||||
|
@node With default value, , Without default value, Obtaining configuration data
|
||||||
|
@subsection With default value
|
||||||
|
|
||||||
|
@code{char *findcfglx(config_item_t *cfg, char *name, char *default_value);}
|
||||||
|
|
||||||
|
@table @samp
|
||||||
|
@item cfg
|
||||||
|
Configuration handle, handed over to the plugin through the container
|
||||||
|
setup function.
|
||||||
|
|
||||||
|
@item name
|
||||||
|
Name of the configuration parameter.
|
||||||
|
|
||||||
|
@item default_value
|
||||||
|
Default value to be returned instead of @code{NULL} if the parameter
|
||||||
|
is not mentioned in the configuration file.
|
||||||
|
@end table
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@node More or less useful stuff, , Obtaining configuration data, API
|
||||||
|
@section More or less useful stuff
|
||||||
|
|
||||||
|
The functions of the library are discussed here for each of the header files.
|
||||||
|
|
||||||
|
@menu
|
||||||
|
* count.h::
|
||||||
|
* queue.h::
|
||||||
|
* htdns.h::
|
||||||
|
* htmalloc.h::
|
||||||
|
* smtp.h::
|
||||||
|
* safe_write.h::
|
||||||
|
@end menu
|
||||||
|
|
||||||
|
@node count.h, queue.h, More or less useful stuff, More or less useful stuff
|
||||||
|
@subsection @code{count.h}
|
||||||
|
|
||||||
|
This is a threadsafe counter, wrapped around an @code{int}.
|
||||||
|
|
||||||
|
Define or allocate a handle of type @code{count_t} to use it.
|
||||||
|
|
||||||
|
It defines the following functions of hopefully obvious meaning:
|
||||||
|
|
||||||
|
@verbatim
|
||||||
|
void count_init(count_t *c);
|
||||||
|
void count_destroy(count_t *c);
|
||||||
|
int count_inc(count_t *c);
|
||||||
|
int count_dec(count_t *c);
|
||||||
|
int count_get(count_t *c);
|
||||||
|
@end verbatim
|
||||||
|
|
||||||
|
|
||||||
|
@node queue.h, htdns.h, count.h, More or less useful stuff
|
||||||
|
@subsection @code{queue.h}
|
||||||
|
|
||||||
|
This is a threadsafe queue. Pointers to anything (@code{void}) can be
|
||||||
|
stored in it.
|
||||||
|
|
||||||
|
Define or allocate a handle of type @code{ht_queue_t} to use it.
|
||||||
|
|
||||||
|
It defines the following functions of hopefully obvious meaning:
|
||||||
|
|
||||||
|
@verbatim
|
||||||
|
void queue_init(ht_queue_t *q);
|
||||||
|
void queue_destroy(ht_queue_t *q);
|
||||||
|
int queue_put(ht_queue_t *q, void *d);
|
||||||
|
void *queue_get_wait(ht_queue_t *q);
|
||||||
|
@end verbatim
|
||||||
|
|
||||||
|
|
||||||
|
@node htdns.h, htmalloc.h, queue.h, More or less useful stuff
|
||||||
|
@subsection @code{htdns.h}
|
||||||
|
|
||||||
|
This is a wrapper around the resolver library selected at build time
|
||||||
|
(currently traditional @code{libresolv} or djbdns).
|
||||||
|
|
||||||
|
It defines the following functions:
|
||||||
|
|
||||||
|
@verbatim
|
||||||
|
void free_rrs(void **resp);
|
||||||
|
mx_rdata_t** get_mx_rrs(char *domain);
|
||||||
|
mx_rdata_t** get_best_mx_rrs(char *domain);
|
||||||
|
a_rdata_t** get_a_rrs(char *domain);
|
||||||
|
cname_rdata_t** get_cname_rrs(char *domain);
|
||||||
|
@end verbatim
|
||||||
|
|
||||||
|
For details on the data types look into the header file.
|
||||||
|
|
||||||
|
Don't forget to free anything you got using @code{free_rrs}.
|
||||||
|
|
||||||
|
@node htmalloc.h, smtp.h, htdns.h, More or less useful stuff
|
||||||
|
@subsection @code{htmalloc.h}
|
||||||
|
|
||||||
|
This provides variants of @code{malloc}, @code{realloc} and
|
||||||
|
@code{strdup} which either returns or in case of out-of-memory sends
|
||||||
|
the whole process into nirwana.
|
||||||
|
|
||||||
|
@verbatim
|
||||||
|
void *htmalloc(size_t size);
|
||||||
|
void *htrealloc(void *ptr, size_t size);
|
||||||
|
char *htstrdup(const char *s);
|
||||||
|
@end verbatim
|
||||||
|
|
||||||
|
|
||||||
|
@node smtp.h, safe_write.h, htmalloc.h, More or less useful stuff
|
||||||
|
@subsection @code{smtp.h}
|
||||||
|
|
||||||
|
This is a simple smtp library, also useable for lmtp.
|
||||||
|
|
||||||
|
Define or allocate a handle of type @code{smtp_t} to use it.
|
||||||
|
|
||||||
|
@verbatim
|
||||||
|
smtp_t *smtp_init2(char *host_address, int port, int timeout);
|
||||||
|
smtp_t *smtp_init(unsigned int address, int port, int timeout);
|
||||||
|
void smtp_destroy(smtp_t *handle);
|
||||||
|
|
||||||
|
int smtp_response(smtp_t *handle, char **response);
|
||||||
|
int smtp_command(smtp_t *handle, char *command, char *arg);
|
||||||
|
|
||||||
|
int smtp_connect(smtp_t *handle);
|
||||||
|
int smtp_close(smtp_t *handle);
|
||||||
|
|
||||||
|
int smtp_helo(smtp_t *handle, char *arg);
|
||||||
|
int smtp_ehlo(smtp_t *handle, char *arg);
|
||||||
|
int smtp_lhlo(smtp_t *handle, char *arg);
|
||||||
|
int smtp_mailfrom(smtp_t *handle, char *arg);
|
||||||
|
int smtp_rcptto(smtp_t *handle, char *arg);
|
||||||
|
int smtp_data(smtp_t *handle);
|
||||||
|
int smtp_datasend(smtp_t *handle, char *data);
|
||||||
|
int smtp_dataend(smtp_t *handle);
|
||||||
|
int smtp_rset(smtp_t *handle);
|
||||||
|
int smtp_quit(smtp_t *handle);
|
||||||
|
@end verbatim
|
||||||
|
|
||||||
|
Note: @code{host_address} in @code{smtp_init2} is a quad-dotted IP
|
||||||
|
address, no hostname.
|
||||||
|
|
||||||
|
@node safe_write.h, , smtp.h, More or less useful stuff
|
||||||
|
@subsection @code{safe_write.h}
|
||||||
|
|
||||||
|
@verbatim
|
||||||
|
ssize_t safe_write(int fd, const void *buf, size_t count);
|
||||||
|
@end verbatim
|
||||||
|
|
||||||
|
This is a @code{SIGPIPE} death avoiding write function. However, no
|
||||||
|
input should be expected when trying to write with this function,
|
||||||
|
since at least one input character is eaten up.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@bye
|
@bye
|
||||||
|
6341
smmapdfw/doc/texinfo.tex
Normal file
6341
smmapdfw/doc/texinfo.tex
Normal file
File diff suppressed because it is too large
Load Diff
@ -1,5 +1,11 @@
|
|||||||
include_HEADERS=containers_public.h queue.h smtp.h cfg.h count.h safe_write.h sunos_comp.h dns.h smmapd.h
|
include_HEADERS=containers_public.h queue.h smtp.h cfg.h count.h safe_write.h sunos_comp.h htdns.h smmapd.h htmalloc.h stats.h htcache.h htbuffer.h dvl.h
|
||||||
lib_LTLIBRARIES = libsmmapdfw.la
|
lib_LTLIBRARIES = libsmmapdfw.la
|
||||||
libsmmapdfw_la_SOURCES = cfg.c queue.c count.c safe_write.c config_public.c dns.c smtp.c
|
libsmmapdfw_la_SOURCES = cfg.c queue.c count.c safe_write.c config_public.c htdns.c smtp.c htmalloc.c stats.c htcache.c htbuffer.c
|
||||||
|
libsmmapdfw_la_LIBADD = @BDB_LIBS@
|
||||||
|
bin_PROGRAMS = htcachetest htbuffertest htdnstest
|
||||||
|
htcachetest_SOURCES = htcachetest.c
|
||||||
|
htcachetest_LDADD = libsmmapdfw.la
|
||||||
|
htbuffertest_SOURCES = htbuffertest.c
|
||||||
|
htbuffertest_LDADD = libsmmapdfw.la
|
||||||
|
htdnstest_SOURCES = htdnstest.c
|
||||||
|
htdnstest_LDADD = libsmmapdfw.la
|
||||||
|
@ -1,6 +1,8 @@
|
|||||||
# Makefile.in generated automatically by automake 1.4-p6 from Makefile.am
|
# Makefile.in generated by automake 1.9.6 from Makefile.am.
|
||||||
|
# @configure_input@
|
||||||
|
|
||||||
# Copyright (C) 1994, 1995-8, 1999, 2001 Free Software Foundation, Inc.
|
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
|
||||||
|
# 2003, 2004, 2005 Free Software Foundation, Inc.
|
||||||
# This Makefile.in is free software; the Free Software Foundation
|
# This Makefile.in is free software; the Free Software Foundation
|
||||||
# gives unlimited permission to copy and/or distribute it,
|
# gives unlimited permission to copy and/or distribute it,
|
||||||
# with or without modifications, as long as this notice is preserved.
|
# with or without modifications, as long as this notice is preserved.
|
||||||
@ -10,182 +12,347 @@
|
|||||||
# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
|
# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
|
||||||
# PARTICULAR PURPOSE.
|
# PARTICULAR PURPOSE.
|
||||||
|
|
||||||
|
@SET_MAKE@
|
||||||
|
|
||||||
|
|
||||||
SHELL = @SHELL@
|
|
||||||
|
|
||||||
srcdir = @srcdir@
|
srcdir = @srcdir@
|
||||||
top_srcdir = @top_srcdir@
|
top_srcdir = @top_srcdir@
|
||||||
VPATH = @srcdir@
|
VPATH = @srcdir@
|
||||||
prefix = @prefix@
|
|
||||||
exec_prefix = @exec_prefix@
|
|
||||||
|
|
||||||
bindir = @bindir@
|
|
||||||
sbindir = @sbindir@
|
|
||||||
libexecdir = @libexecdir@
|
|
||||||
datadir = @datadir@
|
|
||||||
sysconfdir = @sysconfdir@
|
|
||||||
sharedstatedir = @sharedstatedir@
|
|
||||||
localstatedir = @localstatedir@
|
|
||||||
libdir = @libdir@
|
|
||||||
infodir = @infodir@
|
|
||||||
mandir = @mandir@
|
|
||||||
includedir = @includedir@
|
|
||||||
oldincludedir = /usr/include
|
|
||||||
|
|
||||||
DESTDIR =
|
|
||||||
|
|
||||||
pkgdatadir = $(datadir)/@PACKAGE@
|
pkgdatadir = $(datadir)/@PACKAGE@
|
||||||
pkglibdir = $(libdir)/@PACKAGE@
|
pkglibdir = $(libdir)/@PACKAGE@
|
||||||
pkgincludedir = $(includedir)/@PACKAGE@
|
pkgincludedir = $(includedir)/@PACKAGE@
|
||||||
|
|
||||||
top_builddir = ..
|
top_builddir = ..
|
||||||
|
am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
|
||||||
ACLOCAL = @ACLOCAL@
|
|
||||||
AUTOCONF = @AUTOCONF@
|
|
||||||
AUTOMAKE = @AUTOMAKE@
|
|
||||||
AUTOHEADER = @AUTOHEADER@
|
|
||||||
|
|
||||||
INSTALL = @INSTALL@
|
INSTALL = @INSTALL@
|
||||||
INSTALL_PROGRAM = @INSTALL_PROGRAM@ $(AM_INSTALL_PROGRAM_FLAGS)
|
install_sh_DATA = $(install_sh) -c -m 644
|
||||||
INSTALL_DATA = @INSTALL_DATA@
|
install_sh_PROGRAM = $(install_sh) -c
|
||||||
INSTALL_SCRIPT = @INSTALL_SCRIPT@
|
install_sh_SCRIPT = $(install_sh) -c
|
||||||
transform = @program_transform_name@
|
INSTALL_HEADER = $(INSTALL_DATA)
|
||||||
|
transform = $(program_transform_name)
|
||||||
NORMAL_INSTALL = :
|
NORMAL_INSTALL = :
|
||||||
PRE_INSTALL = :
|
PRE_INSTALL = :
|
||||||
POST_INSTALL = :
|
POST_INSTALL = :
|
||||||
NORMAL_UNINSTALL = :
|
NORMAL_UNINSTALL = :
|
||||||
PRE_UNINSTALL = :
|
PRE_UNINSTALL = :
|
||||||
POST_UNINSTALL = :
|
POST_UNINSTALL = :
|
||||||
host_alias = @host_alias@
|
build_triplet = @build@
|
||||||
host_triplet = @host@
|
host_triplet = @host@
|
||||||
|
bin_PROGRAMS = htcachetest$(EXEEXT) htbuffertest$(EXEEXT) \
|
||||||
|
htdnstest$(EXEEXT)
|
||||||
|
subdir = libsmmapdfw
|
||||||
|
DIST_COMMON = $(include_HEADERS) $(srcdir)/Makefile.am \
|
||||||
|
$(srcdir)/Makefile.in
|
||||||
|
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
|
||||||
|
am__aclocal_m4_deps = $(top_srcdir)/configure.ac
|
||||||
|
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
|
||||||
|
$(ACLOCAL_M4)
|
||||||
|
mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
|
||||||
|
CONFIG_HEADER = $(top_builddir)/config.h
|
||||||
|
CONFIG_CLEAN_FILES =
|
||||||
|
am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
|
||||||
|
am__vpath_adj = case $$p in \
|
||||||
|
$(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
|
||||||
|
*) f=$$p;; \
|
||||||
|
esac;
|
||||||
|
am__strip_dir = `echo $$p | sed -e 's|^.*/||'`;
|
||||||
|
am__installdirs = "$(DESTDIR)$(libdir)" "$(DESTDIR)$(bindir)" \
|
||||||
|
"$(DESTDIR)$(includedir)"
|
||||||
|
libLTLIBRARIES_INSTALL = $(INSTALL)
|
||||||
|
LTLIBRARIES = $(lib_LTLIBRARIES)
|
||||||
|
libsmmapdfw_la_DEPENDENCIES =
|
||||||
|
am_libsmmapdfw_la_OBJECTS = cfg.lo queue.lo count.lo safe_write.lo \
|
||||||
|
config_public.lo htdns.lo smtp.lo htmalloc.lo stats.lo \
|
||||||
|
htcache.lo htbuffer.lo
|
||||||
|
libsmmapdfw_la_OBJECTS = $(am_libsmmapdfw_la_OBJECTS)
|
||||||
|
binPROGRAMS_INSTALL = $(INSTALL_PROGRAM)
|
||||||
|
PROGRAMS = $(bin_PROGRAMS)
|
||||||
|
am_htbuffertest_OBJECTS = htbuffertest.$(OBJEXT)
|
||||||
|
htbuffertest_OBJECTS = $(am_htbuffertest_OBJECTS)
|
||||||
|
htbuffertest_DEPENDENCIES = libsmmapdfw.la
|
||||||
|
am_htcachetest_OBJECTS = htcachetest.$(OBJEXT)
|
||||||
|
htcachetest_OBJECTS = $(am_htcachetest_OBJECTS)
|
||||||
|
htcachetest_DEPENDENCIES = libsmmapdfw.la
|
||||||
|
am_htdnstest_OBJECTS = htdnstest.$(OBJEXT)
|
||||||
|
htdnstest_OBJECTS = $(am_htdnstest_OBJECTS)
|
||||||
|
htdnstest_DEPENDENCIES = libsmmapdfw.la
|
||||||
|
DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir)
|
||||||
|
depcomp = $(SHELL) $(top_srcdir)/depcomp
|
||||||
|
am__depfiles_maybe = depfiles
|
||||||
|
COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
|
||||||
|
$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
|
||||||
|
LTCOMPILE = $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) \
|
||||||
|
$(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
|
||||||
|
$(AM_CFLAGS) $(CFLAGS)
|
||||||
|
CCLD = $(CC)
|
||||||
|
LINK = $(LIBTOOL) --tag=CC --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
|
||||||
|
$(AM_LDFLAGS) $(LDFLAGS) -o $@
|
||||||
|
SOURCES = $(libsmmapdfw_la_SOURCES) $(htbuffertest_SOURCES) \
|
||||||
|
$(htcachetest_SOURCES) $(htdnstest_SOURCES)
|
||||||
|
DIST_SOURCES = $(libsmmapdfw_la_SOURCES) $(htbuffertest_SOURCES) \
|
||||||
|
$(htcachetest_SOURCES) $(htdnstest_SOURCES)
|
||||||
|
includeHEADERS_INSTALL = $(INSTALL_HEADER)
|
||||||
|
HEADERS = $(include_HEADERS)
|
||||||
|
ETAGS = etags
|
||||||
|
CTAGS = ctags
|
||||||
|
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
|
||||||
|
ACLOCAL = @ACLOCAL@
|
||||||
|
AMDEP_FALSE = @AMDEP_FALSE@
|
||||||
|
AMDEP_TRUE = @AMDEP_TRUE@
|
||||||
|
AMTAR = @AMTAR@
|
||||||
AR = @AR@
|
AR = @AR@
|
||||||
AS = @AS@
|
AUTOCONF = @AUTOCONF@
|
||||||
|
AUTOHEADER = @AUTOHEADER@
|
||||||
|
AUTOMAKE = @AUTOMAKE@
|
||||||
|
AWK = @AWK@
|
||||||
BDB_LIBS = @BDB_LIBS@
|
BDB_LIBS = @BDB_LIBS@
|
||||||
CC = @CC@
|
CC = @CC@
|
||||||
|
CCDEPMODE = @CCDEPMODE@
|
||||||
|
CFLAGS = @CFLAGS@
|
||||||
|
CPP = @CPP@
|
||||||
|
CPPFLAGS = @CPPFLAGS@
|
||||||
CXX = @CXX@
|
CXX = @CXX@
|
||||||
CXXCPP = @CXXCPP@
|
CXXCPP = @CXXCPP@
|
||||||
DLLTOOL = @DLLTOOL@
|
CXXDEPMODE = @CXXDEPMODE@
|
||||||
|
CXXFLAGS = @CXXFLAGS@
|
||||||
|
CYGPATH_W = @CYGPATH_W@
|
||||||
|
DEFS = @DEFS@
|
||||||
|
DEPDIR = @DEPDIR@
|
||||||
ECHO = @ECHO@
|
ECHO = @ECHO@
|
||||||
|
ECHO_C = @ECHO_C@
|
||||||
|
ECHO_N = @ECHO_N@
|
||||||
|
ECHO_T = @ECHO_T@
|
||||||
EGREP = @EGREP@
|
EGREP = @EGREP@
|
||||||
EXEEXT = @EXEEXT@
|
EXEEXT = @EXEEXT@
|
||||||
F77 = @F77@
|
F77 = @F77@
|
||||||
GCJ = @GCJ@
|
FFLAGS = @FFLAGS@
|
||||||
GCJFLAGS = @GCJFLAGS@
|
GREP = @GREP@
|
||||||
HAVE_LIB = @HAVE_LIB@
|
INSTALL_DATA = @INSTALL_DATA@
|
||||||
LIB = @LIB@
|
INSTALL_PROGRAM = @INSTALL_PROGRAM@
|
||||||
|
INSTALL_SCRIPT = @INSTALL_SCRIPT@
|
||||||
|
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
|
||||||
|
LDFLAGS = @LDFLAGS@
|
||||||
|
LIBOBJS = @LIBOBJS@
|
||||||
|
LIBS = @LIBS@
|
||||||
LIBTOOL = @LIBTOOL@
|
LIBTOOL = @LIBTOOL@
|
||||||
LN_S = @LN_S@
|
LN_S = @LN_S@
|
||||||
LTLIB = @LTLIB@
|
LTLIBOBJS = @LTLIBOBJS@
|
||||||
MAINT = @MAINT@
|
MAINT = @MAINT@
|
||||||
|
MAINTAINER_MODE_FALSE = @MAINTAINER_MODE_FALSE@
|
||||||
|
MAINTAINER_MODE_TRUE = @MAINTAINER_MODE_TRUE@
|
||||||
MAKEINFO = @MAKEINFO@
|
MAKEINFO = @MAKEINFO@
|
||||||
OBJDUMP = @OBJDUMP@
|
|
||||||
OBJEXT = @OBJEXT@
|
OBJEXT = @OBJEXT@
|
||||||
PACKAGE = @PACKAGE@
|
PACKAGE = @PACKAGE@
|
||||||
|
PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
|
||||||
|
PACKAGE_NAME = @PACKAGE_NAME@
|
||||||
|
PACKAGE_STRING = @PACKAGE_STRING@
|
||||||
|
PACKAGE_TARNAME = @PACKAGE_TARNAME@
|
||||||
|
PACKAGE_VERSION = @PACKAGE_VERSION@
|
||||||
|
PATH_SEPARATOR = @PATH_SEPARATOR@
|
||||||
RANLIB = @RANLIB@
|
RANLIB = @RANLIB@
|
||||||
RC = @RC@
|
SED = @SED@
|
||||||
|
SET_MAKE = @SET_MAKE@
|
||||||
|
SHELL = @SHELL@
|
||||||
STRIP = @STRIP@
|
STRIP = @STRIP@
|
||||||
VERSION = @VERSION@
|
VERSION = @VERSION@
|
||||||
|
ac_ct_CC = @ac_ct_CC@
|
||||||
include_HEADERS = containers_public.h queue.h smtp.h cfg.h count.h safe_write.h sunos_comp.h dns.h smmapd.h
|
ac_ct_CXX = @ac_ct_CXX@
|
||||||
|
ac_ct_F77 = @ac_ct_F77@
|
||||||
|
am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
|
||||||
|
am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
|
||||||
|
am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@
|
||||||
|
am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@
|
||||||
|
am__include = @am__include@
|
||||||
|
am__leading_dot = @am__leading_dot@
|
||||||
|
am__quote = @am__quote@
|
||||||
|
am__tar = @am__tar@
|
||||||
|
am__untar = @am__untar@
|
||||||
|
bindir = @bindir@
|
||||||
|
build = @build@
|
||||||
|
build_alias = @build_alias@
|
||||||
|
build_cpu = @build_cpu@
|
||||||
|
build_os = @build_os@
|
||||||
|
build_vendor = @build_vendor@
|
||||||
|
datadir = @datadir@
|
||||||
|
datarootdir = @datarootdir@
|
||||||
|
docdir = @docdir@
|
||||||
|
dvidir = @dvidir@
|
||||||
|
exec_prefix = @exec_prefix@
|
||||||
|
host = @host@
|
||||||
|
host_alias = @host_alias@
|
||||||
|
host_cpu = @host_cpu@
|
||||||
|
host_os = @host_os@
|
||||||
|
host_vendor = @host_vendor@
|
||||||
|
htmldir = @htmldir@
|
||||||
|
includedir = @includedir@
|
||||||
|
infodir = @infodir@
|
||||||
|
install_sh = @install_sh@
|
||||||
|
libdir = @libdir@
|
||||||
|
libexecdir = @libexecdir@
|
||||||
|
localedir = @localedir@
|
||||||
|
localstatedir = @localstatedir@
|
||||||
|
mandir = @mandir@
|
||||||
|
mkdir_p = @mkdir_p@
|
||||||
|
oldincludedir = @oldincludedir@
|
||||||
|
pdfdir = @pdfdir@
|
||||||
|
prefix = @prefix@
|
||||||
|
program_transform_name = @program_transform_name@
|
||||||
|
psdir = @psdir@
|
||||||
|
sbindir = @sbindir@
|
||||||
|
sharedstatedir = @sharedstatedir@
|
||||||
|
sysconfdir = @sysconfdir@
|
||||||
|
target_alias = @target_alias@
|
||||||
|
include_HEADERS = containers_public.h queue.h smtp.h cfg.h count.h safe_write.h sunos_comp.h htdns.h smmapd.h htmalloc.h stats.h htcache.h htbuffer.h dvl.h
|
||||||
lib_LTLIBRARIES = libsmmapdfw.la
|
lib_LTLIBRARIES = libsmmapdfw.la
|
||||||
libsmmapdfw_la_SOURCES = cfg.c queue.c count.c safe_write.c config_public.c dns.c smtp.c
|
libsmmapdfw_la_SOURCES = cfg.c queue.c count.c safe_write.c config_public.c htdns.c smtp.c htmalloc.c stats.c htcache.c htbuffer.c
|
||||||
mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
|
libsmmapdfw_la_LIBADD = @BDB_LIBS@
|
||||||
CONFIG_HEADER = ../config.h
|
htcachetest_SOURCES = htcachetest.c
|
||||||
CONFIG_CLEAN_FILES =
|
htcachetest_LDADD = libsmmapdfw.la
|
||||||
LTLIBRARIES = $(lib_LTLIBRARIES)
|
htbuffertest_SOURCES = htbuffertest.c
|
||||||
|
htbuffertest_LDADD = libsmmapdfw.la
|
||||||
|
htdnstest_SOURCES = htdnstest.c
|
||||||
|
htdnstest_LDADD = libsmmapdfw.la
|
||||||
|
all: all-am
|
||||||
|
|
||||||
|
|
||||||
DEFS = @DEFS@ -I. -I$(srcdir) -I..
|
|
||||||
CPPFLAGS = @CPPFLAGS@
|
|
||||||
LDFLAGS = @LDFLAGS@
|
|
||||||
LIBS = @LIBS@
|
|
||||||
libsmmapdfw_la_LDFLAGS =
|
|
||||||
libsmmapdfw_la_LIBADD =
|
|
||||||
libsmmapdfw_la_OBJECTS = cfg.lo queue.lo count.lo safe_write.lo \
|
|
||||||
config_public.lo dns.lo smtp.lo
|
|
||||||
CFLAGS = @CFLAGS@
|
|
||||||
COMPILE = $(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
|
|
||||||
LTCOMPILE = $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
|
|
||||||
CCLD = $(CC)
|
|
||||||
LINK = $(LIBTOOL) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(LDFLAGS) -o $@
|
|
||||||
HEADERS = $(include_HEADERS)
|
|
||||||
|
|
||||||
DIST_COMMON = Makefile.am Makefile.in
|
|
||||||
|
|
||||||
|
|
||||||
DISTFILES = $(DIST_COMMON) $(SOURCES) $(HEADERS) $(TEXINFOS) $(EXTRA_DIST)
|
|
||||||
|
|
||||||
TAR = tar
|
|
||||||
GZIP_ENV = --best
|
|
||||||
DEP_FILES = .deps/cfg.P .deps/config_public.P .deps/count.P .deps/dns.P \
|
|
||||||
.deps/queue.P .deps/safe_write.P .deps/smtp.P
|
|
||||||
SOURCES = $(libsmmapdfw_la_SOURCES)
|
|
||||||
OBJECTS = $(libsmmapdfw_la_OBJECTS)
|
|
||||||
|
|
||||||
all: all-redirect
|
|
||||||
.SUFFIXES:
|
.SUFFIXES:
|
||||||
.SUFFIXES: .S .c .lo .o .obj .s
|
.SUFFIXES: .c .lo .o .obj
|
||||||
$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ Makefile.am $(top_srcdir)/configure.ac $(ACLOCAL_M4)
|
$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps)
|
||||||
cd $(top_srcdir) && $(AUTOMAKE) --gnu libsmmapdfw/Makefile
|
@for dep in $?; do \
|
||||||
|
case '$(am__configure_deps)' in \
|
||||||
|
*$$dep*) \
|
||||||
|
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
|
||||||
|
&& exit 0; \
|
||||||
|
exit 1;; \
|
||||||
|
esac; \
|
||||||
|
done; \
|
||||||
|
echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu libsmmapdfw/Makefile'; \
|
||||||
|
cd $(top_srcdir) && \
|
||||||
|
$(AUTOMAKE) --gnu libsmmapdfw/Makefile
|
||||||
|
.PRECIOUS: Makefile
|
||||||
|
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
|
||||||
|
@case '$?' in \
|
||||||
|
*config.status*) \
|
||||||
|
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
|
||||||
|
*) \
|
||||||
|
echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
|
||||||
|
cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
|
||||||
|
esac;
|
||||||
|
|
||||||
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status $(BUILT_SOURCES)
|
$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
|
||||||
cd $(top_builddir) \
|
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
|
||||||
&& CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status
|
|
||||||
|
|
||||||
|
|
||||||
mostlyclean-libLTLIBRARIES:
|
|
||||||
|
|
||||||
clean-libLTLIBRARIES:
|
|
||||||
-test -z "$(lib_LTLIBRARIES)" || rm -f $(lib_LTLIBRARIES)
|
|
||||||
|
|
||||||
distclean-libLTLIBRARIES:
|
|
||||||
|
|
||||||
maintainer-clean-libLTLIBRARIES:
|
|
||||||
|
|
||||||
|
$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
|
||||||
|
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
|
||||||
|
$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
|
||||||
|
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
|
||||||
install-libLTLIBRARIES: $(lib_LTLIBRARIES)
|
install-libLTLIBRARIES: $(lib_LTLIBRARIES)
|
||||||
@$(NORMAL_INSTALL)
|
@$(NORMAL_INSTALL)
|
||||||
$(mkinstalldirs) $(DESTDIR)$(libdir)
|
test -z "$(libdir)" || $(mkdir_p) "$(DESTDIR)$(libdir)"
|
||||||
@list='$(lib_LTLIBRARIES)'; for p in $$list; do \
|
@list='$(lib_LTLIBRARIES)'; for p in $$list; do \
|
||||||
if test -f $$p; then \
|
if test -f $$p; then \
|
||||||
echo "$(LIBTOOL) --mode=install $(INSTALL) $$p $(DESTDIR)$(libdir)/$$p"; \
|
f=$(am__strip_dir) \
|
||||||
$(LIBTOOL) --mode=install $(INSTALL) $$p $(DESTDIR)$(libdir)/$$p; \
|
echo " $(LIBTOOL) --mode=install $(libLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) '$$p' '$(DESTDIR)$(libdir)/$$f'"; \
|
||||||
|
$(LIBTOOL) --mode=install $(libLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) "$$p" "$(DESTDIR)$(libdir)/$$f"; \
|
||||||
else :; fi; \
|
else :; fi; \
|
||||||
done
|
done
|
||||||
|
|
||||||
uninstall-libLTLIBRARIES:
|
uninstall-libLTLIBRARIES:
|
||||||
@$(NORMAL_UNINSTALL)
|
@$(NORMAL_UNINSTALL)
|
||||||
list='$(lib_LTLIBRARIES)'; for p in $$list; do \
|
@set -x; list='$(lib_LTLIBRARIES)'; for p in $$list; do \
|
||||||
$(LIBTOOL) --mode=uninstall rm -f $(DESTDIR)$(libdir)/$$p; \
|
p=$(am__strip_dir) \
|
||||||
|
echo " $(LIBTOOL) --mode=uninstall rm -f '$(DESTDIR)$(libdir)/$$p'"; \
|
||||||
|
$(LIBTOOL) --mode=uninstall rm -f "$(DESTDIR)$(libdir)/$$p"; \
|
||||||
done
|
done
|
||||||
|
|
||||||
# FIXME: We should only use cygpath when building on Windows,
|
clean-libLTLIBRARIES:
|
||||||
# and only if it is available.
|
-test -z "$(lib_LTLIBRARIES)" || rm -f $(lib_LTLIBRARIES)
|
||||||
.c.obj:
|
@list='$(lib_LTLIBRARIES)'; for p in $$list; do \
|
||||||
$(COMPILE) -c `cygpath -w $<`
|
dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \
|
||||||
|
test "$$dir" != "$$p" || dir=.; \
|
||||||
|
echo "rm -f \"$${dir}/so_locations\""; \
|
||||||
|
rm -f "$${dir}/so_locations"; \
|
||||||
|
done
|
||||||
|
libsmmapdfw.la: $(libsmmapdfw_la_OBJECTS) $(libsmmapdfw_la_DEPENDENCIES)
|
||||||
|
$(LINK) -rpath $(libdir) $(libsmmapdfw_la_LDFLAGS) $(libsmmapdfw_la_OBJECTS) $(libsmmapdfw_la_LIBADD) $(LIBS)
|
||||||
|
install-binPROGRAMS: $(bin_PROGRAMS)
|
||||||
|
@$(NORMAL_INSTALL)
|
||||||
|
test -z "$(bindir)" || $(mkdir_p) "$(DESTDIR)$(bindir)"
|
||||||
|
@list='$(bin_PROGRAMS)'; for p in $$list; do \
|
||||||
|
p1=`echo $$p|sed 's/$(EXEEXT)$$//'`; \
|
||||||
|
if test -f $$p \
|
||||||
|
|| test -f $$p1 \
|
||||||
|
; then \
|
||||||
|
f=`echo "$$p1" | sed 's,^.*/,,;$(transform);s/$$/$(EXEEXT)/'`; \
|
||||||
|
echo " $(INSTALL_PROGRAM_ENV) $(LIBTOOL) --mode=install $(binPROGRAMS_INSTALL) '$$p' '$(DESTDIR)$(bindir)/$$f'"; \
|
||||||
|
$(INSTALL_PROGRAM_ENV) $(LIBTOOL) --mode=install $(binPROGRAMS_INSTALL) "$$p" "$(DESTDIR)$(bindir)/$$f" || exit 1; \
|
||||||
|
else :; fi; \
|
||||||
|
done
|
||||||
|
|
||||||
.s.o:
|
uninstall-binPROGRAMS:
|
||||||
$(COMPILE) -c $<
|
@$(NORMAL_UNINSTALL)
|
||||||
|
@list='$(bin_PROGRAMS)'; for p in $$list; do \
|
||||||
|
f=`echo "$$p" | sed 's,^.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/'`; \
|
||||||
|
echo " rm -f '$(DESTDIR)$(bindir)/$$f'"; \
|
||||||
|
rm -f "$(DESTDIR)$(bindir)/$$f"; \
|
||||||
|
done
|
||||||
|
|
||||||
.S.o:
|
clean-binPROGRAMS:
|
||||||
$(COMPILE) -c $<
|
@list='$(bin_PROGRAMS)'; for p in $$list; do \
|
||||||
|
f=`echo $$p|sed 's/$(EXEEXT)$$//'`; \
|
||||||
|
echo " rm -f $$p $$f"; \
|
||||||
|
rm -f $$p $$f ; \
|
||||||
|
done
|
||||||
|
htbuffertest$(EXEEXT): $(htbuffertest_OBJECTS) $(htbuffertest_DEPENDENCIES)
|
||||||
|
@rm -f htbuffertest$(EXEEXT)
|
||||||
|
$(LINK) $(htbuffertest_LDFLAGS) $(htbuffertest_OBJECTS) $(htbuffertest_LDADD) $(LIBS)
|
||||||
|
htcachetest$(EXEEXT): $(htcachetest_OBJECTS) $(htcachetest_DEPENDENCIES)
|
||||||
|
@rm -f htcachetest$(EXEEXT)
|
||||||
|
$(LINK) $(htcachetest_LDFLAGS) $(htcachetest_OBJECTS) $(htcachetest_LDADD) $(LIBS)
|
||||||
|
htdnstest$(EXEEXT): $(htdnstest_OBJECTS) $(htdnstest_DEPENDENCIES)
|
||||||
|
@rm -f htdnstest$(EXEEXT)
|
||||||
|
$(LINK) $(htdnstest_LDFLAGS) $(htdnstest_OBJECTS) $(htdnstest_LDADD) $(LIBS)
|
||||||
|
|
||||||
mostlyclean-compile:
|
mostlyclean-compile:
|
||||||
-rm -f *.o core *.core
|
|
||||||
-rm -f *.$(OBJEXT)
|
-rm -f *.$(OBJEXT)
|
||||||
|
|
||||||
clean-compile:
|
|
||||||
|
|
||||||
distclean-compile:
|
distclean-compile:
|
||||||
-rm -f *.tab.c
|
-rm -f *.tab.c
|
||||||
|
|
||||||
maintainer-clean-compile:
|
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cfg.Plo@am__quote@
|
||||||
|
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/config_public.Plo@am__quote@
|
||||||
|
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/count.Plo@am__quote@
|
||||||
|
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/htbuffer.Plo@am__quote@
|
||||||
|
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/htbuffertest.Po@am__quote@
|
||||||
|
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/htcache.Plo@am__quote@
|
||||||
|
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/htcachetest.Po@am__quote@
|
||||||
|
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/htdns.Plo@am__quote@
|
||||||
|
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/htdnstest.Po@am__quote@
|
||||||
|
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/htmalloc.Plo@am__quote@
|
||||||
|
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/queue.Plo@am__quote@
|
||||||
|
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/safe_write.Plo@am__quote@
|
||||||
|
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/smtp.Plo@am__quote@
|
||||||
|
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/stats.Plo@am__quote@
|
||||||
|
|
||||||
.s.lo:
|
.c.o:
|
||||||
$(LIBTOOL) --mode=compile $(COMPILE) -c $<
|
@am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \
|
||||||
|
@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
|
||||||
|
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
|
||||||
|
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||||
|
@am__fastdepCC_FALSE@ $(COMPILE) -c $<
|
||||||
|
|
||||||
.S.lo:
|
.c.obj:
|
||||||
$(LIBTOOL) --mode=compile $(COMPILE) -c $<
|
@am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ `$(CYGPATH_W) '$<'`; \
|
||||||
|
@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
|
||||||
|
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
|
||||||
|
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||||
|
@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'`
|
||||||
|
|
||||||
|
.c.lo:
|
||||||
|
@am__fastdepCC_TRUE@ if $(LTCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \
|
||||||
|
@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Plo"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
|
||||||
|
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
|
||||||
|
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||||
|
@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $<
|
||||||
|
|
||||||
mostlyclean-libtool:
|
mostlyclean-libtool:
|
||||||
-rm -f *.lo
|
-rm -f *.lo
|
||||||
@ -194,186 +361,200 @@ clean-libtool:
|
|||||||
-rm -rf .libs _libs
|
-rm -rf .libs _libs
|
||||||
|
|
||||||
distclean-libtool:
|
distclean-libtool:
|
||||||
|
-rm -f libtool
|
||||||
maintainer-clean-libtool:
|
uninstall-info-am:
|
||||||
|
|
||||||
libsmmapdfw.la: $(libsmmapdfw_la_OBJECTS) $(libsmmapdfw_la_DEPENDENCIES)
|
|
||||||
$(LINK) -rpath $(libdir) $(libsmmapdfw_la_LDFLAGS) $(libsmmapdfw_la_OBJECTS) $(libsmmapdfw_la_LIBADD) $(LIBS)
|
|
||||||
|
|
||||||
install-includeHEADERS: $(include_HEADERS)
|
install-includeHEADERS: $(include_HEADERS)
|
||||||
@$(NORMAL_INSTALL)
|
@$(NORMAL_INSTALL)
|
||||||
$(mkinstalldirs) $(DESTDIR)$(includedir)
|
test -z "$(includedir)" || $(mkdir_p) "$(DESTDIR)$(includedir)"
|
||||||
@list='$(include_HEADERS)'; for p in $$list; do \
|
@list='$(include_HEADERS)'; for p in $$list; do \
|
||||||
if test -f "$$p"; then d= ; else d="$(srcdir)/"; fi; \
|
if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
|
||||||
echo " $(INSTALL_DATA) $$d$$p $(DESTDIR)$(includedir)/$$p"; \
|
f=$(am__strip_dir) \
|
||||||
$(INSTALL_DATA) $$d$$p $(DESTDIR)$(includedir)/$$p; \
|
echo " $(includeHEADERS_INSTALL) '$$d$$p' '$(DESTDIR)$(includedir)/$$f'"; \
|
||||||
|
$(includeHEADERS_INSTALL) "$$d$$p" "$(DESTDIR)$(includedir)/$$f"; \
|
||||||
done
|
done
|
||||||
|
|
||||||
uninstall-includeHEADERS:
|
uninstall-includeHEADERS:
|
||||||
@$(NORMAL_UNINSTALL)
|
@$(NORMAL_UNINSTALL)
|
||||||
list='$(include_HEADERS)'; for p in $$list; do \
|
@list='$(include_HEADERS)'; for p in $$list; do \
|
||||||
rm -f $(DESTDIR)$(includedir)/$$p; \
|
f=$(am__strip_dir) \
|
||||||
|
echo " rm -f '$(DESTDIR)$(includedir)/$$f'"; \
|
||||||
|
rm -f "$(DESTDIR)$(includedir)/$$f"; \
|
||||||
done
|
done
|
||||||
|
|
||||||
|
ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
|
||||||
|
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
|
||||||
|
unique=`for i in $$list; do \
|
||||||
|
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
|
||||||
|
done | \
|
||||||
|
$(AWK) ' { files[$$0] = 1; } \
|
||||||
|
END { for (i in files) print i; }'`; \
|
||||||
|
mkid -fID $$unique
|
||||||
tags: TAGS
|
tags: TAGS
|
||||||
|
|
||||||
ID: $(HEADERS) $(SOURCES) $(LISP)
|
TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
|
||||||
list='$(SOURCES) $(HEADERS)'; \
|
$(TAGS_FILES) $(LISP)
|
||||||
unique=`for i in $$list; do echo $$i; done | \
|
|
||||||
awk ' { files[$$0] = 1; } \
|
|
||||||
END { for (i in files) print i; }'`; \
|
|
||||||
here=`pwd` && cd $(srcdir) \
|
|
||||||
&& mkid -f$$here/ID $$unique $(LISP)
|
|
||||||
|
|
||||||
TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) $(LISP)
|
|
||||||
tags=; \
|
tags=; \
|
||||||
here=`pwd`; \
|
here=`pwd`; \
|
||||||
list='$(SOURCES) $(HEADERS)'; \
|
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
|
||||||
unique=`for i in $$list; do echo $$i; done | \
|
unique=`for i in $$list; do \
|
||||||
awk ' { files[$$0] = 1; } \
|
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
|
||||||
|
done | \
|
||||||
|
$(AWK) ' { files[$$0] = 1; } \
|
||||||
END { for (i in files) print i; }'`; \
|
END { for (i in files) print i; }'`; \
|
||||||
test -z "$(ETAGS_ARGS)$$unique$(LISP)$$tags" \
|
if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
|
||||||
|| (cd $(srcdir) && etags -o $$here/TAGS $(ETAGS_ARGS) $$tags $$unique $(LISP))
|
test -n "$$unique" || unique=$$empty_fix; \
|
||||||
|
$(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
|
||||||
|
$$tags $$unique; \
|
||||||
|
fi
|
||||||
|
ctags: CTAGS
|
||||||
|
CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
|
||||||
|
$(TAGS_FILES) $(LISP)
|
||||||
|
tags=; \
|
||||||
|
here=`pwd`; \
|
||||||
|
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
|
||||||
|
unique=`for i in $$list; do \
|
||||||
|
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
|
||||||
|
done | \
|
||||||
|
$(AWK) ' { files[$$0] = 1; } \
|
||||||
|
END { for (i in files) print i; }'`; \
|
||||||
|
test -z "$(CTAGS_ARGS)$$tags$$unique" \
|
||||||
|
|| $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
|
||||||
|
$$tags $$unique
|
||||||
|
|
||||||
mostlyclean-tags:
|
GTAGS:
|
||||||
|
here=`$(am__cd) $(top_builddir) && pwd` \
|
||||||
clean-tags:
|
&& cd $(top_srcdir) \
|
||||||
|
&& gtags -i $(GTAGS_ARGS) $$here
|
||||||
|
|
||||||
distclean-tags:
|
distclean-tags:
|
||||||
-rm -f TAGS ID
|
-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
|
||||||
|
|
||||||
maintainer-clean-tags:
|
|
||||||
|
|
||||||
distdir = $(top_builddir)/$(PACKAGE)-$(VERSION)/$(subdir)
|
|
||||||
|
|
||||||
subdir = libsmmapdfw
|
|
||||||
|
|
||||||
distdir: $(DISTFILES)
|
distdir: $(DISTFILES)
|
||||||
here=`cd $(top_builddir) && pwd`; \
|
@srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
|
||||||
top_distdir=`cd $(top_distdir) && pwd`; \
|
topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \
|
||||||
distdir=`cd $(distdir) && pwd`; \
|
list='$(DISTFILES)'; for file in $$list; do \
|
||||||
cd $(top_srcdir) \
|
case $$file in \
|
||||||
&& $(AUTOMAKE) --include-deps --build-dir=$$here --srcdir-name=$(top_srcdir) --output-dir=$$top_distdir --gnu libsmmapdfw/Makefile
|
$(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \
|
||||||
@for file in $(DISTFILES); do \
|
$(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \
|
||||||
d=$(srcdir); \
|
esac; \
|
||||||
|
if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
|
||||||
|
dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
|
||||||
|
if test "$$dir" != "$$file" && test "$$dir" != "."; then \
|
||||||
|
dir="/$$dir"; \
|
||||||
|
$(mkdir_p) "$(distdir)$$dir"; \
|
||||||
|
else \
|
||||||
|
dir=''; \
|
||||||
|
fi; \
|
||||||
if test -d $$d/$$file; then \
|
if test -d $$d/$$file; then \
|
||||||
cp -pr $$d/$$file $(distdir)/$$file; \
|
if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
|
||||||
|
cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
|
||||||
|
fi; \
|
||||||
|
cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
|
||||||
else \
|
else \
|
||||||
test -f $(distdir)/$$file \
|
test -f $(distdir)/$$file \
|
||||||
|| ln $$d/$$file $(distdir)/$$file 2> /dev/null \
|
|| cp -p $$d/$$file $(distdir)/$$file \
|
||||||
|| cp -p $$d/$$file $(distdir)/$$file || :; \
|
|| exit 1; \
|
||||||
fi; \
|
fi; \
|
||||||
done
|
done
|
||||||
|
|
||||||
DEPS_MAGIC := $(shell mkdir .deps > /dev/null 2>&1 || :)
|
|
||||||
|
|
||||||
-include $(DEP_FILES)
|
|
||||||
|
|
||||||
mostlyclean-depend:
|
|
||||||
|
|
||||||
clean-depend:
|
|
||||||
|
|
||||||
distclean-depend:
|
|
||||||
-rm -rf .deps
|
|
||||||
|
|
||||||
maintainer-clean-depend:
|
|
||||||
|
|
||||||
%.o: %.c
|
|
||||||
@echo '$(COMPILE) -c $<'; \
|
|
||||||
$(COMPILE) -Wp,-MD,.deps/$(*F).pp -c $<
|
|
||||||
@-cp .deps/$(*F).pp .deps/$(*F).P; \
|
|
||||||
tr ' ' '\012' < .deps/$(*F).pp \
|
|
||||||
| sed -e 's/^\\$$//' -e '/^$$/ d' -e '/:$$/ d' -e 's/$$/ :/' \
|
|
||||||
>> .deps/$(*F).P; \
|
|
||||||
rm .deps/$(*F).pp
|
|
||||||
|
|
||||||
%.lo: %.c
|
|
||||||
@echo '$(LTCOMPILE) -c $<'; \
|
|
||||||
$(LTCOMPILE) -Wp,-MD,.deps/$(*F).pp -c $<
|
|
||||||
@-sed -e 's/^\([^:]*\)\.o[ ]*:/\1.lo \1.o :/' \
|
|
||||||
< .deps/$(*F).pp > .deps/$(*F).P; \
|
|
||||||
tr ' ' '\012' < .deps/$(*F).pp \
|
|
||||||
| sed -e 's/^\\$$//' -e '/^$$/ d' -e '/:$$/ d' -e 's/$$/ :/' \
|
|
||||||
>> .deps/$(*F).P; \
|
|
||||||
rm -f .deps/$(*F).pp
|
|
||||||
info-am:
|
|
||||||
info: info-am
|
|
||||||
dvi-am:
|
|
||||||
dvi: dvi-am
|
|
||||||
check-am: all-am
|
check-am: all-am
|
||||||
check: check-am
|
check: check-am
|
||||||
installcheck-am:
|
all-am: Makefile $(LTLIBRARIES) $(PROGRAMS) $(HEADERS)
|
||||||
installcheck: installcheck-am
|
install-binPROGRAMS: install-libLTLIBRARIES
|
||||||
install-exec-am: install-libLTLIBRARIES
|
|
||||||
install-exec: install-exec-am
|
|
||||||
|
|
||||||
install-data-am: install-includeHEADERS
|
installdirs:
|
||||||
|
for dir in "$(DESTDIR)$(libdir)" "$(DESTDIR)$(bindir)" "$(DESTDIR)$(includedir)"; do \
|
||||||
|
test -z "$$dir" || $(mkdir_p) "$$dir"; \
|
||||||
|
done
|
||||||
|
install: install-am
|
||||||
|
install-exec: install-exec-am
|
||||||
install-data: install-data-am
|
install-data: install-data-am
|
||||||
|
uninstall: uninstall-am
|
||||||
|
|
||||||
install-am: all-am
|
install-am: all-am
|
||||||
@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
|
@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
|
||||||
install: install-am
|
|
||||||
uninstall-am: uninstall-libLTLIBRARIES uninstall-includeHEADERS
|
installcheck: installcheck-am
|
||||||
uninstall: uninstall-am
|
|
||||||
all-am: Makefile $(LTLIBRARIES) $(HEADERS)
|
|
||||||
all-redirect: all-am
|
|
||||||
install-strip:
|
install-strip:
|
||||||
$(MAKE) $(AM_MAKEFLAGS) AM_INSTALL_PROGRAM_FLAGS=-s install
|
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
|
||||||
installdirs:
|
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
|
||||||
$(mkinstalldirs) $(DESTDIR)$(libdir) $(DESTDIR)$(includedir)
|
`test -z '$(STRIP)' || \
|
||||||
|
echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
|
||||||
|
|
||||||
mostlyclean-generic:
|
mostlyclean-generic:
|
||||||
|
|
||||||
clean-generic:
|
clean-generic:
|
||||||
|
|
||||||
distclean-generic:
|
distclean-generic:
|
||||||
-rm -f Makefile $(CONFIG_CLEAN_FILES)
|
-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
|
||||||
-rm -f config.cache config.log stamp-h stamp-h[0-9]*
|
|
||||||
|
|
||||||
maintainer-clean-generic:
|
maintainer-clean-generic:
|
||||||
mostlyclean-am: mostlyclean-libLTLIBRARIES mostlyclean-compile \
|
@echo "This command is intended for maintainers to use"
|
||||||
mostlyclean-libtool mostlyclean-tags mostlyclean-depend \
|
@echo "it deletes files that may require special tools to rebuild."
|
||||||
mostlyclean-generic
|
clean: clean-am
|
||||||
|
|
||||||
|
clean-am: clean-binPROGRAMS clean-generic clean-libLTLIBRARIES \
|
||||||
|
clean-libtool mostlyclean-am
|
||||||
|
|
||||||
|
distclean: distclean-am
|
||||||
|
-rm -rf ./$(DEPDIR)
|
||||||
|
-rm -f Makefile
|
||||||
|
distclean-am: clean-am distclean-compile distclean-generic \
|
||||||
|
distclean-libtool distclean-tags
|
||||||
|
|
||||||
|
dvi: dvi-am
|
||||||
|
|
||||||
|
dvi-am:
|
||||||
|
|
||||||
|
html: html-am
|
||||||
|
|
||||||
|
info: info-am
|
||||||
|
|
||||||
|
info-am:
|
||||||
|
|
||||||
|
install-data-am: install-includeHEADERS
|
||||||
|
|
||||||
|
install-exec-am: install-binPROGRAMS install-libLTLIBRARIES
|
||||||
|
|
||||||
|
install-info: install-info-am
|
||||||
|
|
||||||
|
install-man:
|
||||||
|
|
||||||
|
installcheck-am:
|
||||||
|
|
||||||
|
maintainer-clean: maintainer-clean-am
|
||||||
|
-rm -rf ./$(DEPDIR)
|
||||||
|
-rm -f Makefile
|
||||||
|
maintainer-clean-am: distclean-am maintainer-clean-generic
|
||||||
|
|
||||||
mostlyclean: mostlyclean-am
|
mostlyclean: mostlyclean-am
|
||||||
|
|
||||||
clean-am: clean-libLTLIBRARIES clean-compile clean-libtool clean-tags \
|
mostlyclean-am: mostlyclean-compile mostlyclean-generic \
|
||||||
clean-depend clean-generic mostlyclean-am
|
mostlyclean-libtool
|
||||||
|
|
||||||
clean: clean-am
|
pdf: pdf-am
|
||||||
|
|
||||||
distclean-am: distclean-libLTLIBRARIES distclean-compile \
|
pdf-am:
|
||||||
distclean-libtool distclean-tags distclean-depend \
|
|
||||||
distclean-generic clean-am
|
|
||||||
-rm -f libtool
|
|
||||||
|
|
||||||
distclean: distclean-am
|
ps: ps-am
|
||||||
|
|
||||||
maintainer-clean-am: maintainer-clean-libLTLIBRARIES \
|
ps-am:
|
||||||
maintainer-clean-compile maintainer-clean-libtool \
|
|
||||||
maintainer-clean-tags maintainer-clean-depend \
|
|
||||||
maintainer-clean-generic distclean-am
|
|
||||||
@echo "This command is intended for maintainers to use;"
|
|
||||||
@echo "it deletes files that may require special tools to rebuild."
|
|
||||||
|
|
||||||
maintainer-clean: maintainer-clean-am
|
uninstall-am: uninstall-binPROGRAMS uninstall-includeHEADERS \
|
||||||
|
uninstall-info-am uninstall-libLTLIBRARIES
|
||||||
.PHONY: mostlyclean-libLTLIBRARIES distclean-libLTLIBRARIES \
|
|
||||||
clean-libLTLIBRARIES maintainer-clean-libLTLIBRARIES \
|
|
||||||
uninstall-libLTLIBRARIES install-libLTLIBRARIES mostlyclean-compile \
|
|
||||||
distclean-compile clean-compile maintainer-clean-compile \
|
|
||||||
mostlyclean-libtool distclean-libtool clean-libtool \
|
|
||||||
maintainer-clean-libtool uninstall-includeHEADERS \
|
|
||||||
install-includeHEADERS tags mostlyclean-tags distclean-tags clean-tags \
|
|
||||||
maintainer-clean-tags distdir mostlyclean-depend distclean-depend \
|
|
||||||
clean-depend maintainer-clean-depend info-am info dvi-am dvi check \
|
|
||||||
check-am installcheck-am installcheck install-exec-am install-exec \
|
|
||||||
install-data-am install-data install-am install uninstall-am uninstall \
|
|
||||||
all-redirect all-am all installdirs mostlyclean-generic \
|
|
||||||
distclean-generic clean-generic maintainer-clean-generic clean \
|
|
||||||
mostlyclean distclean maintainer-clean
|
|
||||||
|
|
||||||
|
.PHONY: CTAGS GTAGS all all-am check check-am clean clean-binPROGRAMS \
|
||||||
|
clean-generic clean-libLTLIBRARIES clean-libtool ctags \
|
||||||
|
distclean distclean-compile distclean-generic \
|
||||||
|
distclean-libtool distclean-tags distdir dvi dvi-am html \
|
||||||
|
html-am info info-am install install-am install-binPROGRAMS \
|
||||||
|
install-data install-data-am install-exec install-exec-am \
|
||||||
|
install-includeHEADERS install-info install-info-am \
|
||||||
|
install-libLTLIBRARIES install-man install-strip installcheck \
|
||||||
|
installcheck-am installdirs maintainer-clean \
|
||||||
|
maintainer-clean-generic mostlyclean mostlyclean-compile \
|
||||||
|
mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
|
||||||
|
tags uninstall uninstall-am uninstall-binPROGRAMS \
|
||||||
|
uninstall-includeHEADERS uninstall-info-am \
|
||||||
|
uninstall-libLTLIBRARIES
|
||||||
|
|
||||||
# Tell versions [3.59,3.63) of GNU make to not export all variables.
|
# Tell versions [3.59,3.63) of GNU make to not export all variables.
|
||||||
# Otherwise a system limit (for SysV at least) may be exceeded.
|
# Otherwise a system limit (for SysV at least) may be exceeded.
|
||||||
|
@ -1,3 +1,25 @@
|
|||||||
|
/*
|
||||||
|
Copyright (C) 2004, Wolfgang Hottgenroth
|
||||||
|
|
||||||
|
This file is part of smmapdfw.
|
||||||
|
|
||||||
|
smmapdfw is free software; you can redistribute it and/or modify it
|
||||||
|
under the terms of the GNU General Public License as published by
|
||||||
|
the Free Software Foundation; either version 2 of the License, or
|
||||||
|
(at your option) any later version.
|
||||||
|
|
||||||
|
smmapdfw is distributed in the hope that it will be useful, but WITHOUT
|
||||||
|
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
|
||||||
|
or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
|
||||||
|
License for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU General Public License
|
||||||
|
along with smmapdfw. If not, write to the Free Software Foundation, 59
|
||||||
|
Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#if HAVE_CONFIG_H
|
#if HAVE_CONFIG_H
|
||||||
# include "config.h"
|
# include "config.h"
|
||||||
#endif
|
#endif
|
||||||
@ -14,7 +36,10 @@
|
|||||||
#include <syslog.h>
|
#include <syslog.h>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#include <string.h>
|
||||||
|
|
||||||
#include "cfg.h"
|
#include "cfg.h"
|
||||||
|
#include "htmalloc.h"
|
||||||
|
|
||||||
#include "sunos_comp.h"
|
#include "sunos_comp.h"
|
||||||
|
|
||||||
@ -81,9 +106,9 @@ config_section_t *readcfg(char *cfgfile) {
|
|||||||
state = STATE_START;
|
state = STATE_START;
|
||||||
i = 0;
|
i = 0;
|
||||||
|
|
||||||
cs = (config_section_t*) malloc(sizeof(config_section_t));
|
cs = (config_section_t*) htmalloc(sizeof(config_section_t));
|
||||||
cs->next = NULL;
|
cs->next = NULL;
|
||||||
cs->name = (char*) malloc(strlen(buffer)+1);
|
cs->name = (char*) htmalloc(strlen(buffer)+1);
|
||||||
strcpy(cs->name, buffer);
|
strcpy(cs->name, buffer);
|
||||||
cs->item = NULL;
|
cs->item = NULL;
|
||||||
|
|
||||||
@ -113,9 +138,9 @@ config_section_t *readcfg(char *cfgfile) {
|
|||||||
state = STATE_EQUAL;
|
state = STATE_EQUAL;
|
||||||
i = 0;
|
i = 0;
|
||||||
|
|
||||||
ci = (config_item_t*) malloc(sizeof(config_item_t));
|
ci = (config_item_t*) htmalloc(sizeof(config_item_t));
|
||||||
ci->next = NULL;
|
ci->next = NULL;
|
||||||
ci->name = (char*) malloc(strlen(buffer)+1);
|
ci->name = (char*) htmalloc(strlen(buffer)+1);
|
||||||
strcpy(ci->name, buffer);
|
strcpy(ci->name, buffer);
|
||||||
ci->value = NULL;
|
ci->value = NULL;
|
||||||
|
|
||||||
@ -172,7 +197,7 @@ config_section_t *readcfg(char *cfgfile) {
|
|||||||
state = STATE_START;
|
state = STATE_START;
|
||||||
i = 0;
|
i = 0;
|
||||||
|
|
||||||
ci->value = (char*) malloc(strlen(buffer)+1);
|
ci->value = (char*) htmalloc(strlen(buffer)+1);
|
||||||
strcpy(ci->value, buffer);
|
strcpy(ci->value, buffer);
|
||||||
|
|
||||||
break;
|
break;
|
||||||
|
@ -1,3 +1,24 @@
|
|||||||
|
/*
|
||||||
|
Copyright (C) 2004, Wolfgang Hottgenroth
|
||||||
|
|
||||||
|
This file is part of smmapdfw.
|
||||||
|
|
||||||
|
smmapdfw is free software; you can redistribute it and/or modify it
|
||||||
|
under the terms of the GNU General Public License as published by
|
||||||
|
the Free Software Foundation; either version 2 of the License, or
|
||||||
|
(at your option) any later version.
|
||||||
|
|
||||||
|
smmapdfw is distributed in the hope that it will be useful, but WITHOUT
|
||||||
|
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
|
||||||
|
or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
|
||||||
|
License for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU General Public License
|
||||||
|
along with smmapdfw. If not, write to the Free Software Foundation, 59
|
||||||
|
Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
#ifndef _CONFIG_H_
|
#ifndef _CONFIG_H_
|
||||||
#define _CONFIG_H_
|
#define _CONFIG_H_
|
||||||
|
|
||||||
|
@ -1,3 +1,24 @@
|
|||||||
|
/*
|
||||||
|
Copyright (C) 2004, Wolfgang Hottgenroth
|
||||||
|
|
||||||
|
This file is part of smmapdfw.
|
||||||
|
|
||||||
|
smmapdfw is free software; you can redistribute it and/or modify it
|
||||||
|
under the terms of the GNU General Public License as published by
|
||||||
|
the Free Software Foundation; either version 2 of the License, or
|
||||||
|
(at your option) any later version.
|
||||||
|
|
||||||
|
smmapdfw is distributed in the hope that it will be useful, but WITHOUT
|
||||||
|
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
|
||||||
|
or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
|
||||||
|
License for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU General Public License
|
||||||
|
along with smmapdfw. If not, write to the Free Software Foundation, 59
|
||||||
|
Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
#if HAVE_CONFIG_H
|
#if HAVE_CONFIG_H
|
||||||
# include "config.h"
|
# include "config.h"
|
||||||
#endif
|
#endif
|
||||||
|
@ -1,14 +1,36 @@
|
|||||||
|
/*
|
||||||
|
Copyright (C) 2004, Wolfgang Hottgenroth
|
||||||
|
|
||||||
|
This file is part of smmapdfw.
|
||||||
|
|
||||||
|
smmapdfw is free software; you can redistribute it and/or modify it
|
||||||
|
under the terms of the GNU General Public License as published by
|
||||||
|
the Free Software Foundation; either version 2 of the License, or
|
||||||
|
(at your option) any later version.
|
||||||
|
|
||||||
|
smmapdfw is distributed in the hope that it will be useful, but WITHOUT
|
||||||
|
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
|
||||||
|
or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
|
||||||
|
License for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU General Public License
|
||||||
|
along with smmapdfw. If not, write to the Free Software Foundation, 59
|
||||||
|
Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
#ifndef _CONTAINERS_PUBLIC_H_
|
#ifndef _CONTAINERS_PUBLIC_H_
|
||||||
#define _CONTAINERS_PUBLIC_H_
|
#define _CONTAINERS_PUBLIC_H_
|
||||||
|
|
||||||
#include "cfg.h"
|
#include "cfg.h"
|
||||||
|
#include "htbuffer.h"
|
||||||
|
|
||||||
struct class_descriptor_s {
|
struct class_descriptor_s {
|
||||||
char *name;
|
char *name;
|
||||||
int (*init_function)(cfgl_t *cfg, void **handle);
|
int (*init_function)(cfgl_t *cfg, void **handle);
|
||||||
int (*destroy_function)(void *handle);
|
int (*destroy_function)(void *handle);
|
||||||
int (*work_setup_function)(void *handle, void **work_handle);
|
int (*work_setup_function)(void *handle, void **work_handle);
|
||||||
int (*work_function)(void *handle, void *work_handle, char *input, char *output);
|
int (*work_function)(void *handle, void *work_handle, char *input, htbuffer_t *output);
|
||||||
int (*work_destroy_function)(void *handle, void *work_handle);
|
int (*work_destroy_function)(void *handle, void *work_handle);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -1,3 +1,25 @@
|
|||||||
|
/*
|
||||||
|
Copyright (C) 2004, Wolfgang Hottgenroth
|
||||||
|
|
||||||
|
This file is part of smmapdfw.
|
||||||
|
|
||||||
|
smmapdfw is free software; you can redistribute it and/or modify it
|
||||||
|
under the terms of the GNU General Public License as published by
|
||||||
|
the Free Software Foundation; either version 2 of the License, or
|
||||||
|
(at your option) any later version.
|
||||||
|
|
||||||
|
smmapdfw is distributed in the hope that it will be useful, but WITHOUT
|
||||||
|
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
|
||||||
|
or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
|
||||||
|
License for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU General Public License
|
||||||
|
along with smmapdfw. If not, write to the Free Software Foundation, 59
|
||||||
|
Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#include "count.h"
|
#include "count.h"
|
||||||
|
|
||||||
void count_init(count_t *c) {
|
void count_init(count_t *c) {
|
||||||
|
@ -1,3 +1,25 @@
|
|||||||
|
/*
|
||||||
|
Copyright (C) 2004, Wolfgang Hottgenroth
|
||||||
|
|
||||||
|
This file is part of smmapdfw.
|
||||||
|
|
||||||
|
smmapdfw is free software; you can redistribute it and/or modify it
|
||||||
|
under the terms of the GNU General Public License as published by
|
||||||
|
the Free Software Foundation; either version 2 of the License, or
|
||||||
|
(at your option) any later version.
|
||||||
|
|
||||||
|
smmapdfw is distributed in the hope that it will be useful, but WITHOUT
|
||||||
|
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
|
||||||
|
or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
|
||||||
|
License for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU General Public License
|
||||||
|
along with smmapdfw. If not, write to the Free Software Foundation, 59
|
||||||
|
Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#ifndef _COUNT_H_
|
#ifndef _COUNT_H_
|
||||||
#define _COUNT_H_
|
#define _COUNT_H_
|
||||||
|
|
||||||
|
@ -1,309 +0,0 @@
|
|||||||
#include <sys/types.h>
|
|
||||||
#include <netinet/in.h>
|
|
||||||
#include <arpa/nameser.h>
|
|
||||||
#include <resolv.h>
|
|
||||||
#include <stdlib.h>
|
|
||||||
#include <syslog.h>
|
|
||||||
#include <stdio.h>
|
|
||||||
#include <strings.h>
|
|
||||||
#include <errno.h>
|
|
||||||
#include <assert.h>
|
|
||||||
|
|
||||||
#include "dns.h"
|
|
||||||
|
|
||||||
extern int h_errno;
|
|
||||||
/* extern struct state _res; */
|
|
||||||
|
|
||||||
union answer_u {
|
|
||||||
HEADER hdr;
|
|
||||||
u_char buf[PACKETSZ+1];
|
|
||||||
};
|
|
||||||
|
|
||||||
typedef union answer_u answer_t;
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#define get32_x(b, o) htonl((b[o+3] << 24) + (b[o+2] << 16) + (b[o+1] << 8) + b[o])
|
|
||||||
#define get32(b, o) ((b[o] << 24) + (b[o+1] << 16) + (b[o+2] << 8) + b[o+3])
|
|
||||||
#define get16(b, o) ((b[o] << 8) + b[o+1])
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
static int get_domain_name(answer_t *answer, int offset, char **name) {
|
|
||||||
int start, len, i, offset2;
|
|
||||||
char *name_buf, *name_buf2;
|
|
||||||
name_buf = NULL;
|
|
||||||
|
|
||||||
|
|
||||||
while (0 != (len = answer->buf[offset++])) {
|
|
||||||
if (0xC0 == (len & 0xC0)) {
|
|
||||||
if (NULL != name) { /* if we don't need the result, we don't need to recurse, since a ... */
|
|
||||||
offset2 = ((len & ~0xC0) << 8) + answer->buf[offset++];
|
|
||||||
get_domain_name(answer, offset2, &name_buf2);
|
|
||||||
name_buf = (char*) realloc(name_buf, ((NULL != name_buf) ? strlen(name_buf) : 0) + strlen(name_buf2) + 1);
|
|
||||||
strcat(name_buf, name_buf2);
|
|
||||||
free(name_buf2);
|
|
||||||
*name = name_buf;
|
|
||||||
} else {
|
|
||||||
offset++; /* ... a recursion pointer is always two octets long ... */
|
|
||||||
}
|
|
||||||
return offset; /* ... and is always the final part of a name */
|
|
||||||
} else {
|
|
||||||
start = offset;
|
|
||||||
offset += len;
|
|
||||||
if (NULL != name) {
|
|
||||||
i = (NULL != name_buf) ? strlen(name_buf) : 0;
|
|
||||||
name_buf = (char*) realloc(name_buf, i+len+2);
|
|
||||||
strncpy(name_buf + i, answer->buf + start, len);
|
|
||||||
name_buf[i+len] = '\0';
|
|
||||||
strcat(name_buf, ".");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (NULL != name) {
|
|
||||||
name_buf[strlen(name_buf)-1] = '\0'; /* remove the final dot */
|
|
||||||
*name = name_buf;
|
|
||||||
}
|
|
||||||
return offset;
|
|
||||||
}
|
|
||||||
|
|
||||||
static int get_mx_rdata(answer_t *answer, int offset, int len, mx_rdata_t **resp) {
|
|
||||||
*resp = (mx_rdata_t*) malloc(sizeof(mx_rdata_t));
|
|
||||||
(*resp)->preference = get16(answer->buf, offset);
|
|
||||||
get_domain_name(answer, offset+2, &(*resp)->exchange);
|
|
||||||
(*resp)->type = T_MX;
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
static void free_mx_rdata(mx_rdata_t *resp) {
|
|
||||||
free(resp->exchange);
|
|
||||||
free(resp);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
static int get_a_rdata(answer_t *answer, int offset, int len, a_rdata_t **resp) {
|
|
||||||
*resp = (a_rdata_t*) malloc(sizeof(a_rdata_t));
|
|
||||||
(*resp)->address = htonl(get32(answer->buf, offset));
|
|
||||||
(*resp)->type = T_A;
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
static void free_a_rdata(a_rdata_t *resp) {
|
|
||||||
free(resp);
|
|
||||||
}
|
|
||||||
|
|
||||||
static int get_rdata(answer_t *answer, int type, int offset, int len, void **resp) {
|
|
||||||
switch (type) {
|
|
||||||
case T_MX:
|
|
||||||
get_mx_rdata(answer, offset, len, (mx_rdata_t**)resp);
|
|
||||||
break;
|
|
||||||
case T_A:
|
|
||||||
get_a_rdata(answer, offset, len, (a_rdata_t**)resp);
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
syslog(LOG_ERR, "type %d unsupported\n", type);
|
|
||||||
}
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
static void free_rdata(void *resp) {
|
|
||||||
rdata_t *d = (rdata_t*)resp;
|
|
||||||
switch (d->type) {
|
|
||||||
case T_MX:
|
|
||||||
free_mx_rdata(resp);
|
|
||||||
break;
|
|
||||||
case T_A:
|
|
||||||
free_a_rdata(resp);
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
syslog(LOG_ERR, "type %d unsupported\n", d->type);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void free_rrs(void **resp) {
|
|
||||||
void **rdata;
|
|
||||||
for (rdata = resp; *rdata != NULL; rdata++) {
|
|
||||||
free_rdata(*rdata);
|
|
||||||
}
|
|
||||||
free(resp);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
static void** get_rrs(char *domain, int qtype) {
|
|
||||||
unsigned int res, i, cnt, len, offset, x, y, rdlength;
|
|
||||||
answer_t answer;
|
|
||||||
unsigned int class, type, ttl;
|
|
||||||
char *name;
|
|
||||||
void **rdata, **rdata2;
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
res = res_search(domain, C_IN, qtype, (u_char*) &answer, sizeof(answer_t));
|
|
||||||
if (-1 == res) {
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
cnt = sizeof(HEADER);
|
|
||||||
|
|
||||||
/* query section */
|
|
||||||
for (y = 0; y < ntohs(answer.hdr.qdcount); y++) {
|
|
||||||
cnt = get_domain_name(&answer, cnt, NULL);
|
|
||||||
type = get16(answer.buf, cnt);
|
|
||||||
cnt += 2;
|
|
||||||
class = get16(answer.buf, cnt);
|
|
||||||
cnt += 2;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* answer section */
|
|
||||||
rdata = (void**)malloc(sizeof(void*) * (ntohs(answer.hdr.ancount)+1));
|
|
||||||
for (y = 0; y < ntohs(answer.hdr.ancount); y++) {
|
|
||||||
cnt = get_domain_name(&answer, cnt, NULL);
|
|
||||||
type = get16(answer.buf, cnt);
|
|
||||||
assert(type==qtype);
|
|
||||||
cnt += 2;
|
|
||||||
class = get16(answer.buf, cnt);
|
|
||||||
cnt += 2;
|
|
||||||
ttl = get32(answer.buf, cnt);
|
|
||||||
cnt += 4;
|
|
||||||
rdlength = get16(answer.buf, cnt);
|
|
||||||
cnt += 2;
|
|
||||||
rdata2 = rdata+y;
|
|
||||||
get_rdata(&answer, type, cnt, rdlength, rdata2);
|
|
||||||
cnt += rdlength;
|
|
||||||
}
|
|
||||||
|
|
||||||
rdata2 = rdata+y;
|
|
||||||
*((void**)rdata2) = NULL;
|
|
||||||
|
|
||||||
return rdata;
|
|
||||||
}
|
|
||||||
|
|
||||||
mx_rdata_t** get_mx_rrs(char *domain) {
|
|
||||||
return (mx_rdata_t**) get_rrs(domain, T_MX);
|
|
||||||
}
|
|
||||||
|
|
||||||
a_rdata_t** get_a_rrs(char *domain) {
|
|
||||||
return (a_rdata_t**) get_rrs(domain, T_A);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#define min(A,B) ((A<B) ? A : B)
|
|
||||||
mx_rdata_t** get_best_mx_rrs(char *domain) {
|
|
||||||
mx_rdata_t **all_mx_rrs, **mx_rdata2, **best_mx_rrs;
|
|
||||||
int min_pref = 10000000;
|
|
||||||
int all_cnt = 0;
|
|
||||||
int best_cnt = 0;
|
|
||||||
int i = 0;
|
|
||||||
|
|
||||||
all_mx_rrs = get_mx_rrs(domain);
|
|
||||||
if (NULL == all_mx_rrs)
|
|
||||||
return NULL;
|
|
||||||
|
|
||||||
|
|
||||||
/* how much are there at all and what is the minimum preference */
|
|
||||||
for (mx_rdata2 = all_mx_rrs; *mx_rdata2 != NULL; mx_rdata2++) {
|
|
||||||
all_cnt++;
|
|
||||||
min_pref = min(min_pref, (*mx_rdata2)->preference);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* how much are there of the minimum preference */
|
|
||||||
for (mx_rdata2 = all_mx_rrs; *mx_rdata2 != NULL; mx_rdata2++)
|
|
||||||
if ((*mx_rdata2)->preference == min_pref)
|
|
||||||
best_cnt++;
|
|
||||||
|
|
||||||
if (all_cnt == best_cnt) {
|
|
||||||
/* all of them are minimum */
|
|
||||||
return all_mx_rrs;
|
|
||||||
} else {
|
|
||||||
/* space for the minimum pref rr's */
|
|
||||||
best_mx_rrs = (mx_rdata_t**) malloc(sizeof(mx_rdata_t*) * (best_cnt+1));
|
|
||||||
for (mx_rdata2 = all_mx_rrs; *mx_rdata2 != NULL; mx_rdata2++) {
|
|
||||||
if ((*mx_rdata2)->preference == min_pref) {
|
|
||||||
/* is a minimum one, keep it */
|
|
||||||
*(best_mx_rrs+i) = *mx_rdata2;
|
|
||||||
i++;
|
|
||||||
} else {
|
|
||||||
/* it's not, free it */
|
|
||||||
free_mx_rdata(*mx_rdata2);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
/* free the old container */
|
|
||||||
free(all_mx_rrs);
|
|
||||||
/* terminate the new container */
|
|
||||||
*((int**)(best_mx_rrs+i)) = NULL;
|
|
||||||
|
|
||||||
return best_mx_rrs;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/* #define _TEST_MODE_ */
|
|
||||||
#ifdef _TEST_MODE_
|
|
||||||
|
|
||||||
|
|
||||||
int main(int argc, char **argv) {
|
|
||||||
char default_domain[] = "test.de";
|
|
||||||
char *domain = default_domain;
|
|
||||||
mx_rdata_t **mx_rdata, **mx_rdata2;
|
|
||||||
a_rdata_t **a_rdata, **a_rdata2;
|
|
||||||
int a;
|
|
||||||
|
|
||||||
if (argc > 1) {
|
|
||||||
domain = argv[1];
|
|
||||||
}
|
|
||||||
|
|
||||||
printf("before get_mx_rrs: %s\n", domain);
|
|
||||||
|
|
||||||
mx_rdata = get_mx_rrs(domain);
|
|
||||||
for (mx_rdata2 = mx_rdata; *mx_rdata2 != NULL; mx_rdata2++) {
|
|
||||||
printf("preference: %d, exchange: %s\n", (*mx_rdata2)->preference, (*mx_rdata2)->exchange);
|
|
||||||
}
|
|
||||||
|
|
||||||
free_rrs((void**)mx_rdata);
|
|
||||||
|
|
||||||
|
|
||||||
printf("------------------\n");
|
|
||||||
|
|
||||||
mx_rdata = get_best_mx_rrs(domain);
|
|
||||||
|
|
||||||
|
|
||||||
for (mx_rdata2 = mx_rdata; *mx_rdata2 != NULL; mx_rdata2++) {
|
|
||||||
printf("preference: %d, exchange: %s\n", (*mx_rdata2)->preference, (*mx_rdata2)->exchange);
|
|
||||||
|
|
||||||
a_rdata = get_a_rrs((*mx_rdata2)->exchange);
|
|
||||||
for (a_rdata2 = a_rdata; *a_rdata2 != NULL; a_rdata2++) {
|
|
||||||
a = (*a_rdata2)->address;
|
|
||||||
printf("address: %04x\n", a);
|
|
||||||
printf(" %d.%d.%d.%d\n", (a&0xff000000)>>24, (a&0x00ff0000)>>16, (a&0x0000ff00)>>8, a&0x000000ff);
|
|
||||||
}
|
|
||||||
free_rrs((void**)a_rdata);
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
free_rrs((void**)mx_rdata);
|
|
||||||
|
|
||||||
/* printf("------------------\n"); */
|
|
||||||
|
|
||||||
/* a_rdata = get_a_rrs("www.microsoft.com.nsatc.net"); */
|
|
||||||
/* for (a_rdata2 = a_rdata; *a_rdata2 != NULL; a_rdata2++) { */
|
|
||||||
/* a = (*a_rdata2)->address; */
|
|
||||||
/* printf("address: %04x\n", a); */
|
|
||||||
/* printf(" %d.%d.%d.%d\n", (a&0xff000000)>>24, (a&0x00ff0000)>>16, (a&0x0000ff00)>>8, a&0x000000ff); */
|
|
||||||
/* } */
|
|
||||||
/* free_rrs((void**)a_rdata); */
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
#endif /* _TEST_MODE_ */
|
|
||||||
|
|
@ -1,40 +0,0 @@
|
|||||||
#ifndef _DNS_H_
|
|
||||||
#define _DNS_H_
|
|
||||||
|
|
||||||
struct mx_rdata_s {
|
|
||||||
int type;
|
|
||||||
int preference;
|
|
||||||
char *exchange;
|
|
||||||
};
|
|
||||||
|
|
||||||
typedef struct mx_rdata_s mx_rdata_t;
|
|
||||||
|
|
||||||
struct a_rdata_s {
|
|
||||||
int type;
|
|
||||||
unsigned int address;
|
|
||||||
};
|
|
||||||
|
|
||||||
typedef struct a_rdata_s a_rdata_t;
|
|
||||||
|
|
||||||
struct rdata_s {
|
|
||||||
int type;
|
|
||||||
union {
|
|
||||||
mx_rdata_t mx;
|
|
||||||
a_rdata_t a;
|
|
||||||
} data;
|
|
||||||
};
|
|
||||||
|
|
||||||
typedef struct rdata_s rdata_t;
|
|
||||||
|
|
||||||
|
|
||||||
void free_rrs(void **resp);
|
|
||||||
mx_rdata_t** get_mx_rrs(char *domain);
|
|
||||||
mx_rdata_t** get_best_mx_rrs(char *domain);
|
|
||||||
a_rdata_t** get_a_rrs(char *domain);
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#endif /* _DNS_H_ */
|
|
||||||
|
|
||||||
|
|
8
smmapdfw/libsmmapdfw/dvl.h
Normal file
8
smmapdfw/libsmmapdfw/dvl.h
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
#ifndef _DVL_H_
|
||||||
|
#define _DVL_H_
|
||||||
|
|
||||||
|
#define dvl(a, b) (((a) == NULL) ? (b) : (a))
|
||||||
|
#define dvls(a) dvl((a), "<NULL_STRING>")
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
142
smmapdfw/libsmmapdfw/htbuffer.c
Normal file
142
smmapdfw/libsmmapdfw/htbuffer.c
Normal file
@ -0,0 +1,142 @@
|
|||||||
|
/*
|
||||||
|
Copyright (C) 2005 Wolfgang Hottgenroth
|
||||||
|
|
||||||
|
This file is part of smmapdfw.
|
||||||
|
|
||||||
|
smmapdfw is free software; you can redistribute it and/or modify it
|
||||||
|
under the terms of the GNU General Public License as published by
|
||||||
|
the Free Software Foundation; either version 2 of the License, or
|
||||||
|
(at your option) any later version.
|
||||||
|
|
||||||
|
smmapdfw is distributed in the hope that it will be useful, but WITHOUT
|
||||||
|
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
|
||||||
|
or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
|
||||||
|
License for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU General Public License
|
||||||
|
along with smmapdfw. If not, write to the Free Software Foundation, 59
|
||||||
|
Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
#if HAVE_CONFIG_H
|
||||||
|
# include "config.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#include <string.h>
|
||||||
|
#include <sys/types.h>
|
||||||
|
#include <assert.h>
|
||||||
|
#include <syslog.h>
|
||||||
|
|
||||||
|
#include "htmalloc.h"
|
||||||
|
#include "htbuffer.h"
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
#define MAX(A, B) ((A) > (B) ? (A) : (B))
|
||||||
|
#define MIN(A, B) ((A) < (B) ? (A) : (B))
|
||||||
|
|
||||||
|
htbuffer_t *htbuffer_init(unsigned int start_size) {
|
||||||
|
htbuffer_t *b;
|
||||||
|
|
||||||
|
b = (htbuffer_t*) htmalloc(sizeof(htbuffer_t));
|
||||||
|
|
||||||
|
b->current_buf_size = (start_size % DEFAULT_CHUNK_SIZE)
|
||||||
|
? (start_size + (DEFAULT_CHUNK_SIZE - start_size % DEFAULT_CHUNK_SIZE))
|
||||||
|
: start_size;
|
||||||
|
|
||||||
|
b->max_size = DEFAULT_MAX_SIZE;
|
||||||
|
|
||||||
|
b->buf = (char*) htmalloc(sizeof(char) * b->current_buf_size);
|
||||||
|
memset(b->buf, 0, b->current_buf_size);
|
||||||
|
|
||||||
|
return b;
|
||||||
|
}
|
||||||
|
|
||||||
|
void htbuffer_set_max_size(htbuffer_t *b, unsigned int s) {
|
||||||
|
b->max_size = s;
|
||||||
|
}
|
||||||
|
|
||||||
|
void htbuffer_free(htbuffer_t *b) {
|
||||||
|
free(b->buf);
|
||||||
|
free(b);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
unsigned int htbuffer_strlen(htbuffer_t *b) {
|
||||||
|
return strlen(b->buf);
|
||||||
|
}
|
||||||
|
|
||||||
|
htbuffer_t *htbuffer_memcpy_w_offset(htbuffer_t *dest, unsigned int offset, const char *src, unsigned int src_size) {
|
||||||
|
int new_buf_size;
|
||||||
|
|
||||||
|
/* printf("src_size=%d, offset=%d, cbs=%d\n", src_size, offset, dest->current_buf_size); */
|
||||||
|
if (src_size + offset > dest->current_buf_size) {
|
||||||
|
/* grow buffer */
|
||||||
|
int pos = src_size + offset;
|
||||||
|
new_buf_size = (pos % DEFAULT_CHUNK_SIZE)
|
||||||
|
? (pos + (DEFAULT_CHUNK_SIZE - (pos % DEFAULT_CHUNK_SIZE)))
|
||||||
|
: pos;
|
||||||
|
|
||||||
|
if (new_buf_size > dest->max_size) {
|
||||||
|
syslog(LOG_ERR, "htbuffer (%p) htbuffer_memcpy_w_offset: new size too large %d (max=%d)",
|
||||||
|
dest, new_buf_size, dest->max_size);
|
||||||
|
exit(154);
|
||||||
|
}
|
||||||
|
|
||||||
|
syslog(LOG_INFO, "htbuffer (%p) htbuffer_memcpy_w_offset: increase buffer from %d to %d\n",
|
||||||
|
dest, dest->current_buf_size, new_buf_size);
|
||||||
|
dest->buf = (char*) htrealloc(dest->buf, sizeof(char) * new_buf_size);
|
||||||
|
memset(dest->buf + dest->current_buf_size, 0, new_buf_size - dest->current_buf_size);
|
||||||
|
dest->current_buf_size = new_buf_size;
|
||||||
|
}
|
||||||
|
|
||||||
|
memcpy(dest->buf + offset, src, src_size);
|
||||||
|
|
||||||
|
return dest;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
htbuffer_t *htbuffer_clear(htbuffer_t *dest) {
|
||||||
|
memset(dest->buf, 0, dest->current_buf_size);
|
||||||
|
return dest;
|
||||||
|
}
|
||||||
|
|
||||||
|
htbuffer_t *htbuffer_memcpy(htbuffer_t *dest, const char *src, unsigned int src_size) {
|
||||||
|
return htbuffer_memcpy_w_offset(dest, 0, src, src_size);
|
||||||
|
}
|
||||||
|
|
||||||
|
htbuffer_t *htbuffer_strcpy_w_offset(htbuffer_t *dest, unsigned int offset, const char *src) {
|
||||||
|
return htbuffer_memcpy_w_offset(dest, offset, src, strlen(src)+1);
|
||||||
|
}
|
||||||
|
|
||||||
|
htbuffer_t *htbuffer_strcpy(htbuffer_t *dest, const char *src) {
|
||||||
|
return htbuffer_strcpy_w_offset(dest, 0, src);
|
||||||
|
}
|
||||||
|
|
||||||
|
htbuffer_t *htbuffer_strncpy_w_offset(htbuffer_t *dest, unsigned int offset, const char *src, unsigned int n) {
|
||||||
|
return htbuffer_memcpy_w_offset(dest, offset, src, MIN(strlen(src)+1, n));
|
||||||
|
}
|
||||||
|
|
||||||
|
htbuffer_t *htbuffer_strncpy(htbuffer_t *dest, const char *src, unsigned int n) {
|
||||||
|
return htbuffer_strncpy_w_offset(dest, 0, src, n);
|
||||||
|
}
|
||||||
|
|
||||||
|
htbuffer_t *htbuffer_strcat(htbuffer_t *dest, const char *src) {
|
||||||
|
return htbuffer_strcpy_w_offset(dest, strlen(dest->buf), src);
|
||||||
|
}
|
||||||
|
|
||||||
|
htbuffer_t *htbuffer_strncat(htbuffer_t *dest, const char *src, unsigned int n) {
|
||||||
|
return htbuffer_strncpy_w_offset(dest, strlen(dest->buf), src, n);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
59
smmapdfw/libsmmapdfw/htbuffer.h
Normal file
59
smmapdfw/libsmmapdfw/htbuffer.h
Normal file
@ -0,0 +1,59 @@
|
|||||||
|
/*
|
||||||
|
Copyright (C) 2005, Wolfgang Hottgenroth
|
||||||
|
|
||||||
|
This file is part of smmapdfw.
|
||||||
|
|
||||||
|
smmapdfw is free software; you can redistribute it and/or modify it
|
||||||
|
under the terms of the GNU General Public License as published by
|
||||||
|
the Free Software Foundation; either version 2 of the License, or
|
||||||
|
(at your option) any later version.
|
||||||
|
|
||||||
|
smmapdfw is distributed in the hope that it will be useful, but WITHOUT
|
||||||
|
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
|
||||||
|
or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
|
||||||
|
License for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU General Public License
|
||||||
|
along with smmapdfw. If not, write to the Free Software Foundation, 59
|
||||||
|
Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
#ifndef _HTBUFFER_H_
|
||||||
|
#define _HTBUFFER_H_
|
||||||
|
|
||||||
|
#define DEFAULT_MAX_SIZE 16*1024*1024
|
||||||
|
#define DEFAULT_CHUNK_SIZE 1024
|
||||||
|
|
||||||
|
typedef struct htbuffer_s {
|
||||||
|
char *buf;
|
||||||
|
unsigned int current_buf_size;
|
||||||
|
unsigned int max_size;
|
||||||
|
} htbuffer_t;
|
||||||
|
|
||||||
|
|
||||||
|
void htbuffer_set_max_size(htbuffer_t *b, unsigned int s);
|
||||||
|
htbuffer_t *htbuffer_init(unsigned int start_size);
|
||||||
|
void htbuffer_free(htbuffer_t *b);
|
||||||
|
|
||||||
|
unsigned int htbuffer_strlen(htbuffer_t *b);
|
||||||
|
|
||||||
|
htbuffer_t *htbuffer_memcpy_w_offset(htbuffer_t *dest, unsigned int offset, const char *src, unsigned int src_size);
|
||||||
|
htbuffer_t *htbuffer_memcpy(htbuffer_t *dest, const char *src, unsigned int src_size);
|
||||||
|
|
||||||
|
|
||||||
|
htbuffer_t *htbuffer_strcpy_w_offset(htbuffer_t *dest, unsigned int offset, const char *src);
|
||||||
|
htbuffer_t *htbuffer_strcpy(htbuffer_t *dest, const char *src);
|
||||||
|
|
||||||
|
htbuffer_t *htbuffer_strncpy_w_offset(htbuffer_t *dest, unsigned int offset, const char *src, unsigned int n);
|
||||||
|
htbuffer_t *htbuffer_strncpy(htbuffer_t *dest, const char *src, unsigned int n);
|
||||||
|
|
||||||
|
htbuffer_t *htbuffer_strncat(htbuffer_t *dest, const char *src, unsigned int n);
|
||||||
|
htbuffer_t *htbuffer_strcat(htbuffer_t *dest, const char *src);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
#endif /* _HTBUFFER_H_ */
|
||||||
|
|
||||||
|
|
217
smmapdfw/libsmmapdfw/htbuffertest.c
Normal file
217
smmapdfw/libsmmapdfw/htbuffertest.c
Normal file
@ -0,0 +1,217 @@
|
|||||||
|
/*
|
||||||
|
Copyright (C) 2005 Wolfgang Hottgenroth
|
||||||
|
|
||||||
|
This file is part of smmapdfw.
|
||||||
|
|
||||||
|
smmapdfw is free software; you can redistribute it and/or modify it
|
||||||
|
under the terms of the GNU General Public License as published by
|
||||||
|
the Free Software Foundation; either version 2 of the License, or
|
||||||
|
(at your option) any later version.
|
||||||
|
|
||||||
|
smmapdfw is distributed in the hope that it will be useful, but WITHOUT
|
||||||
|
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
|
||||||
|
or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
|
||||||
|
License for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU General Public License
|
||||||
|
along with smmapdfw. If not, write to the Free Software Foundation, 59
|
||||||
|
Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#if HAVE_CONFIG_H
|
||||||
|
# include "config.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <unistd.h>
|
||||||
|
#include <syslog.h>
|
||||||
|
|
||||||
|
#include "htbuffer.h"
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
int main(int argc, char **args) {
|
||||||
|
htbuffer_t *b;
|
||||||
|
char* output;
|
||||||
|
int size;
|
||||||
|
int res;
|
||||||
|
|
||||||
|
|
||||||
|
/* ------------------------------------------------------------------------------------------- */
|
||||||
|
b = htbuffer_init(512);
|
||||||
|
if (b->current_buf_size != 1024)
|
||||||
|
printf("1. FAILURE: wrong current_buf_size (%d), expected 1024\n", b->current_buf_size);
|
||||||
|
else
|
||||||
|
printf("1. OK\n");
|
||||||
|
htbuffer_free(b);
|
||||||
|
|
||||||
|
/* ------------------------------------------------------------------------------------------- */
|
||||||
|
b = htbuffer_init(519);
|
||||||
|
if (b->current_buf_size != 1024)
|
||||||
|
printf("2. FAILURE: wrong current_buf_size (%d), expected 1024\n", b->current_buf_size);
|
||||||
|
else
|
||||||
|
printf("2. OK\n");
|
||||||
|
htbuffer_free(b);
|
||||||
|
|
||||||
|
/* ------------------------------------------------------------------------------------------- */
|
||||||
|
b = htbuffer_init(2500);
|
||||||
|
if (b->current_buf_size != 3072)
|
||||||
|
printf("3. FAILURE: wrong current_buf_size (%d), expected 3072\n", b->current_buf_size);
|
||||||
|
else
|
||||||
|
printf("3. OK\n");
|
||||||
|
htbuffer_free(b);
|
||||||
|
|
||||||
|
/* ------------------------------------------------------------------------------------------- */
|
||||||
|
b = htbuffer_init(1024);
|
||||||
|
if (b->current_buf_size != 1024)
|
||||||
|
printf("4. FAILURE: wrong current_buf_size (%d), expected 1024\n", b->current_buf_size);
|
||||||
|
else
|
||||||
|
printf("4. OK\n");
|
||||||
|
htbuffer_free(b);
|
||||||
|
|
||||||
|
/* ------------------------------------------------------------------------------------------- */
|
||||||
|
b = htbuffer_init(10240);
|
||||||
|
if (b->current_buf_size != 10240)
|
||||||
|
printf("5. FAILURE: wrong current_buf_size (%d), expected 10240\n", b->current_buf_size);
|
||||||
|
else
|
||||||
|
printf("5. OK\n");
|
||||||
|
htbuffer_free(b);
|
||||||
|
|
||||||
|
/* ------------------------------------------------------------------------------------------- */
|
||||||
|
#define TEXT1 "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa123"
|
||||||
|
b = htbuffer_init(512);
|
||||||
|
htbuffer_strcpy(b, TEXT1);
|
||||||
|
if (b->current_buf_size != 1024)
|
||||||
|
printf("6. FAILURE: wrong current_buf_size (%d), expected 1024\n", b->current_buf_size);
|
||||||
|
else if (strcmp(TEXT1, b->buf))
|
||||||
|
printf("6. FAILURE: unexpected content\n");
|
||||||
|
else
|
||||||
|
printf("6. OK\n");
|
||||||
|
htbuffer_free(b);
|
||||||
|
|
||||||
|
/* ------------------------------------------------------------------------------------------- */
|
||||||
|
#define TEXT2 "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa123"
|
||||||
|
b = htbuffer_init(512);
|
||||||
|
htbuffer_strcpy(b, TEXT2);
|
||||||
|
if (b->current_buf_size != 2048)
|
||||||
|
printf("7. FAILURE: wrong current_buf_size (%d), expected 2048\n", b->current_buf_size);
|
||||||
|
else if (strcmp(TEXT2, b->buf))
|
||||||
|
printf("7. FAILURE: unexpected content\n");
|
||||||
|
else
|
||||||
|
printf("7. OK\n");
|
||||||
|
htbuffer_free(b);
|
||||||
|
|
||||||
|
/* ------------------------------------------------------------------------------------------- */
|
||||||
|
#define TEXT3 "abcaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa123"
|
||||||
|
#define TEXT4 "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx123"
|
||||||
|
#define TEXT3_4 "abcxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx123"
|
||||||
|
b = htbuffer_init(512);
|
||||||
|
htbuffer_strcpy(b, TEXT3);
|
||||||
|
htbuffer_strcpy_w_offset(b, 3, TEXT4);
|
||||||
|
if (b->current_buf_size != 1024)
|
||||||
|
printf("8. FAILURE: wrong current_buf_size (%d), expected 1024\n", b->current_buf_size);
|
||||||
|
else if (strcmp(TEXT3_4, b->buf))
|
||||||
|
printf("8. FAILURE: unexpected content {%s}\n", b->buf);
|
||||||
|
else
|
||||||
|
printf("8. OK\n");
|
||||||
|
htbuffer_free(b);
|
||||||
|
|
||||||
|
/* ------------------------------------------------------------------------------------------- */
|
||||||
|
#define TEXT5 "abc"
|
||||||
|
#define TEXT6 "xxxxxxyyyyyyyxxxxxxxxxxxxxxxxxxxxxxxx123"
|
||||||
|
#define TEXT5_6 "abcxxxxxxyyy"
|
||||||
|
b = htbuffer_init(512);
|
||||||
|
htbuffer_strcpy(b, TEXT5);
|
||||||
|
htbuffer_strncpy_w_offset(b, 3, TEXT6, 9);
|
||||||
|
if (b->current_buf_size != 1024)
|
||||||
|
printf("9. FAILURE: wrong current_buf_size (%d), expected 1024\n", b->current_buf_size);
|
||||||
|
else if (strcmp(TEXT5_6, b->buf))
|
||||||
|
printf("9. FAILURE: unexpected content {%s}\n", b->buf);
|
||||||
|
else
|
||||||
|
printf("9. OK\n");
|
||||||
|
htbuffer_free(b);
|
||||||
|
|
||||||
|
/* ------------------------------------------------------------------------------------------- */
|
||||||
|
#define TEXT7 "---------XXX"
|
||||||
|
#define TEXT8 "xxxxxxyyyyyyyxxxxxxxxxxxxxxxxxxxxxxxx123"
|
||||||
|
#define TEXT9 "xxxxxxyyyXXX"
|
||||||
|
b = htbuffer_init(512);
|
||||||
|
htbuffer_strcpy(b, TEXT7);
|
||||||
|
htbuffer_strncpy(b, TEXT8, 9);
|
||||||
|
if (b->current_buf_size != 1024)
|
||||||
|
printf("10. FAILURE: wrong current_buf_size (%d), expected 1024\n", b->current_buf_size);
|
||||||
|
else if (strcmp(TEXT9, b->buf))
|
||||||
|
printf("10. FAILURE: unexpected content {%s}\n", b->buf);
|
||||||
|
else
|
||||||
|
printf("10. OK\n");
|
||||||
|
htbuffer_free(b);
|
||||||
|
|
||||||
|
/* ------------------------------------------------------------------------------------------- */
|
||||||
|
#define TEXT10 "aaa"
|
||||||
|
#define TEXT11 "bbb"
|
||||||
|
#define TEXT10_11 "aaabbb"
|
||||||
|
b = htbuffer_init(512);
|
||||||
|
htbuffer_strcpy(b, TEXT10);
|
||||||
|
htbuffer_strcat(b, TEXT11);
|
||||||
|
if (b->current_buf_size != 1024)
|
||||||
|
printf("11. FAILURE: wrong current_buf_size (%d), expected 1024\n", b->current_buf_size);
|
||||||
|
else if (strcmp(TEXT10_11, b->buf))
|
||||||
|
printf("11. FAILURE: unexpected content {%s}\n", b->buf);
|
||||||
|
else
|
||||||
|
printf("11. OK\n");
|
||||||
|
htbuffer_free(b);
|
||||||
|
|
||||||
|
/* ------------------------------------------------------------------------------------------- */
|
||||||
|
#define TEXT12 "aaa"
|
||||||
|
#define TEXT13 "bbb"
|
||||||
|
b = htbuffer_init(512);
|
||||||
|
htbuffer_strcpy(b, TEXT12);
|
||||||
|
htbuffer_strcpy(b, TEXT13);
|
||||||
|
|
||||||
|
if (strcmp(TEXT13, b->buf))
|
||||||
|
printf("12. FAULURE: unexpected content {%s}\n", b->buf);
|
||||||
|
else
|
||||||
|
printf("12. OK\n");
|
||||||
|
htbuffer_free(b);
|
||||||
|
|
||||||
|
/* ------------------------------------------------------------------------------------------- */
|
||||||
|
#define TEXT14 "aaa"
|
||||||
|
#define TEXT15 "bbb"
|
||||||
|
b = htbuffer_init(512);
|
||||||
|
htbuffer_strcpy(b, TEXT14);
|
||||||
|
htbuffer_strcpy(b, "");
|
||||||
|
htbuffer_strcat(b, TEXT15);
|
||||||
|
|
||||||
|
if (strcmp(TEXT15, b->buf))
|
||||||
|
printf("13. FAULURE: unexpected content {%s}\n", b->buf);
|
||||||
|
else
|
||||||
|
printf("13. OK\n");
|
||||||
|
htbuffer_free(b);
|
||||||
|
|
||||||
|
/* ------------------------------------------------------------------------------------------- */
|
||||||
|
#define TEXT16 "aaa"
|
||||||
|
#define TEXT17 "bbb"
|
||||||
|
#define TEXT17_1 "b"
|
||||||
|
b = htbuffer_init(512);
|
||||||
|
htbuffer_strcpy(b, TEXT16);
|
||||||
|
htbuffer_clear(b);
|
||||||
|
htbuffer_strncat(b, TEXT15, 1);
|
||||||
|
htbuffer_strncat(b, "\0", 1);
|
||||||
|
|
||||||
|
if (strcmp(TEXT17_1, b->buf))
|
||||||
|
printf("13. FAULURE: unexpected content {%s}\n", b->buf);
|
||||||
|
else
|
||||||
|
printf("13. OK\n");
|
||||||
|
htbuffer_free(b);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
177
smmapdfw/libsmmapdfw/htcache.c
Normal file
177
smmapdfw/libsmmapdfw/htcache.c
Normal file
@ -0,0 +1,177 @@
|
|||||||
|
/*
|
||||||
|
Copyright (C) 2004,2005 Wolfgang Hottgenroth
|
||||||
|
|
||||||
|
This file is part of smmapdfw.
|
||||||
|
|
||||||
|
smmapdfw is free software; you can redistribute it and/or modify it
|
||||||
|
under the terms of the GNU General Public License as published by
|
||||||
|
the Free Software Foundation; either version 2 of the License, or
|
||||||
|
(at your option) any later version.
|
||||||
|
|
||||||
|
smmapdfw is distributed in the hope that it will be useful, but WITHOUT
|
||||||
|
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
|
||||||
|
or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
|
||||||
|
License for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU General Public License
|
||||||
|
along with smmapdfw. If not, write to the Free Software Foundation, 59
|
||||||
|
Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
#if HAVE_CONFIG_H
|
||||||
|
# include "config.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include <syslog.h>
|
||||||
|
#include <pthread.h>
|
||||||
|
#include <errno.h>
|
||||||
|
#include <time.h>
|
||||||
|
#include <string.h>
|
||||||
|
|
||||||
|
#include <sys/types.h>
|
||||||
|
#include <fcntl.h>
|
||||||
|
#include <stdio.h>
|
||||||
|
|
||||||
|
#if ENABLE_CACHE == 1
|
||||||
|
#define DB_DBM_HSEARCH 1
|
||||||
|
#include <db.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#include "htcache.h"
|
||||||
|
#include "htmalloc.h"
|
||||||
|
|
||||||
|
struct mydata_s {
|
||||||
|
time_t timestamp;
|
||||||
|
int value_size;
|
||||||
|
char value[1];
|
||||||
|
};
|
||||||
|
|
||||||
|
typedef struct mydata_s mydata_t;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
htcache_t *htcache_init(const char *file, int expiry) {
|
||||||
|
#if ENABLE_CACHE == 1
|
||||||
|
htcache_t *handle = (htcache_t*) htmalloc(sizeof(htcache_t));
|
||||||
|
handle->mutex = (pthread_mutex_t*) htmalloc(sizeof(pthread_mutex_t));
|
||||||
|
pthread_mutex_init(handle->mutex, NULL);
|
||||||
|
pthread_mutex_unlock(handle->mutex);
|
||||||
|
handle->file = file;
|
||||||
|
handle->expiry = expiry;
|
||||||
|
|
||||||
|
return handle;
|
||||||
|
#else
|
||||||
|
return NULL;
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
void htcache_destroy(htcache_t *handle) {
|
||||||
|
#if ENABLE_CACHE == 1
|
||||||
|
pthread_mutex_destroy(handle->mutex);
|
||||||
|
free(handle->mutex);
|
||||||
|
free(handle);
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
void htcache_insert(htcache_t *handle, const char *key, const char *value, int value_size) {
|
||||||
|
#if ENABLE_CACHE == 1
|
||||||
|
DBM *cache;
|
||||||
|
datum data, dkey;
|
||||||
|
int ret;
|
||||||
|
mydata_t *mydata;
|
||||||
|
|
||||||
|
syslog(LOG_DEBUG, "htcache_insert: inserting %s -> %s (size %d)", key, (char*) value, value_size);
|
||||||
|
dkey.dsize = strlen(key) + 1; /* one more for the terminating \0 */
|
||||||
|
dkey.dptr = (char*) key;
|
||||||
|
data.dsize = (sizeof(mydata_t) + value_size + 1);
|
||||||
|
mydata = (mydata_t *) htmalloc(data.dsize);
|
||||||
|
mydata->timestamp = time(NULL);
|
||||||
|
mydata->value_size = value_size;
|
||||||
|
memcpy(mydata->value, value, value_size);
|
||||||
|
data.dptr = (char*) mydata;
|
||||||
|
|
||||||
|
pthread_mutex_lock(handle->mutex);
|
||||||
|
if (NULL != (cache = dbm_open(handle->file, O_RDWR | O_CREAT, 0644))) {
|
||||||
|
ret = dbm_store(cache, dkey, data, DBM_INSERT);
|
||||||
|
if (ret != 0) {
|
||||||
|
syslog(LOG_DEBUG, "htcache_insert: couldn't insert record");
|
||||||
|
} else {
|
||||||
|
syslog(LOG_DEBUG, "htcache_insert: record inserted");
|
||||||
|
}
|
||||||
|
dbm_close(cache);
|
||||||
|
}
|
||||||
|
pthread_mutex_unlock(handle->mutex);
|
||||||
|
|
||||||
|
free(mydata);
|
||||||
|
#else
|
||||||
|
syslog(LOG_DEBUG, "htcache_insert: cache disabled");
|
||||||
|
#endif /* ENABLE_CACHE */
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
int htcache_lookup(htcache_t *handle, const char* key, char** value, int* value_size2) {
|
||||||
|
#if ENABLE_CACHE == 1
|
||||||
|
DBM *cache;
|
||||||
|
datum data, dkey;
|
||||||
|
char *output;
|
||||||
|
mydata_t *mydata;
|
||||||
|
int value_size, ret, res = -1;
|
||||||
|
|
||||||
|
syslog(LOG_DEBUG, "htcache_lookup: looking up %s, expiry %d",
|
||||||
|
key, handle->expiry);
|
||||||
|
|
||||||
|
if (NULL != (cache = dbm_open(handle->file, O_RDONLY, 0644))) {
|
||||||
|
dkey.dsize = strlen(key) + 1; /* one more for the terminating \0 */
|
||||||
|
dkey.dptr = (char*) key;
|
||||||
|
data = dbm_fetch(cache, dkey);
|
||||||
|
if (NULL == data.dptr) {
|
||||||
|
syslog(LOG_DEBUG, "htcache_lookup: nothing found");
|
||||||
|
dbm_close(cache);
|
||||||
|
} else {
|
||||||
|
mydata = (mydata_t *) data.dptr;
|
||||||
|
syslog(LOG_DEBUG, "htcache_lookup: found: %s %d %d %s (size %d)",
|
||||||
|
key, mydata->timestamp, mydata->value_size, mydata->value, data.dsize);
|
||||||
|
if ((mydata->timestamp + handle->expiry) > time(NULL)) {
|
||||||
|
syslog(LOG_DEBUG, "htcache_lookup: not yet expired");
|
||||||
|
value_size = mydata->value_size;
|
||||||
|
output = (char*) htmalloc(value_size+5);
|
||||||
|
memcpy(output, mydata->value, value_size);
|
||||||
|
|
||||||
|
*value_size2 = value_size;
|
||||||
|
*value = output;
|
||||||
|
|
||||||
|
/* Berkeley DB frees on its own! */
|
||||||
|
/* free(data.dptr); */
|
||||||
|
dbm_close(cache);
|
||||||
|
res = 0;
|
||||||
|
} else {
|
||||||
|
syslog(LOG_DEBUG, "htcache_lookup: expired, will be deleted from cache");
|
||||||
|
/* free(data.dptr); --- Berkeley DB frees on its own */
|
||||||
|
dbm_close(cache);
|
||||||
|
|
||||||
|
pthread_mutex_lock(handle->mutex);
|
||||||
|
if (NULL != (cache = dbm_open(handle->file, O_RDWR, 0644))) {
|
||||||
|
ret = dbm_delete(cache, dkey);
|
||||||
|
if (ret != 0) {
|
||||||
|
syslog(LOG_DEBUG, "htcache_lookup: couldn't delete record");
|
||||||
|
} else {
|
||||||
|
syslog(LOG_DEBUG, "htcache_lookup: record deleted");
|
||||||
|
}
|
||||||
|
dbm_close(cache);
|
||||||
|
res = -2;
|
||||||
|
}
|
||||||
|
pthread_mutex_unlock(handle->mutex);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return res;
|
||||||
|
#else
|
||||||
|
return -1;
|
||||||
|
#endif /* ENABLE_CACHE */
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
43
smmapdfw/libsmmapdfw/htcache.h
Normal file
43
smmapdfw/libsmmapdfw/htcache.h
Normal file
@ -0,0 +1,43 @@
|
|||||||
|
/*
|
||||||
|
Copyright (C) 2004, Wolfgang Hottgenroth
|
||||||
|
|
||||||
|
This file is part of smmapdfw.
|
||||||
|
|
||||||
|
smmapdfw is free software; you can redistribute it and/or modify it
|
||||||
|
under the terms of the GNU General Public License as published by
|
||||||
|
the Free Software Foundation; either version 2 of the License, or
|
||||||
|
(at your option) any later version.
|
||||||
|
|
||||||
|
smmapdfw is distributed in the hope that it will be useful, but WITHOUT
|
||||||
|
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
|
||||||
|
or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
|
||||||
|
License for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU General Public License
|
||||||
|
along with smmapdfw. If not, write to the Free Software Foundation, 59
|
||||||
|
Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
#ifndef _HTCACHE_H_
|
||||||
|
#define _HTCACHE_H_
|
||||||
|
|
||||||
|
#include <pthread.h>
|
||||||
|
|
||||||
|
|
||||||
|
typedef struct htcache_s {
|
||||||
|
const char *file;
|
||||||
|
int expiry;
|
||||||
|
pthread_mutex_t *mutex;
|
||||||
|
} htcache_t;
|
||||||
|
|
||||||
|
htcache_t *htcache_init(const char *file, int expiry);
|
||||||
|
void htcache_destroy(htcache_t *handle);
|
||||||
|
void htcache_insert(htcache_t *handle, const char *key, const char *value, int value_size);
|
||||||
|
int htcache_lookup(htcache_t *handle, const char *key, char** value, int* value_size2);
|
||||||
|
|
||||||
|
|
||||||
|
#endif /* _HTCACHE_H_ */
|
||||||
|
|
||||||
|
|
131
smmapdfw/libsmmapdfw/htcachetest.c
Normal file
131
smmapdfw/libsmmapdfw/htcachetest.c
Normal file
@ -0,0 +1,131 @@
|
|||||||
|
/*
|
||||||
|
Copyright (C) 2004,2005 Wolfgang Hottgenroth
|
||||||
|
|
||||||
|
This file is part of smmapdfw.
|
||||||
|
|
||||||
|
smmapdfw is free software; you can redistribute it and/or modify it
|
||||||
|
under the terms of the GNU General Public License as published by
|
||||||
|
the Free Software Foundation; either version 2 of the License, or
|
||||||
|
(at your option) any later version.
|
||||||
|
|
||||||
|
smmapdfw is distributed in the hope that it will be useful, but WITHOUT
|
||||||
|
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
|
||||||
|
or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
|
||||||
|
License for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU General Public License
|
||||||
|
along with smmapdfw. If not, write to the Free Software Foundation, 59
|
||||||
|
Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#if HAVE_CONFIG_H
|
||||||
|
# include "config.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <unistd.h>
|
||||||
|
#include <syslog.h>
|
||||||
|
|
||||||
|
#include "htcache.h"
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
int main(int argc, char **args) {
|
||||||
|
char* output;
|
||||||
|
int size;
|
||||||
|
int res;
|
||||||
|
|
||||||
|
|
||||||
|
htcache_t *c = htcache_init("/tmp/test-cache", 10);
|
||||||
|
|
||||||
|
openlog("htcachetest", LOG_PID, LOG_LOCAL2);
|
||||||
|
|
||||||
|
printf("Populating cache\n");
|
||||||
|
htcache_insert(c, "key1", "value1", 7);
|
||||||
|
htcache_insert(c, "key2", "value2", 7);
|
||||||
|
htcache_insert(c, "key3", "value3", 7);
|
||||||
|
htcache_insert(c, "key4", "value4", 7);
|
||||||
|
htcache_insert(c, "key5", "value5", 7);
|
||||||
|
htcache_insert(c, "key6", "value6", 7);
|
||||||
|
htcache_insert(c, "key7", "value7", 7);
|
||||||
|
htcache_insert(c, "key8", "value8", 7);
|
||||||
|
htcache_insert(c, "key9", "value9", 7);
|
||||||
|
|
||||||
|
res = htcache_lookup(c, "key", &output, &size);
|
||||||
|
if (-1 != res) {
|
||||||
|
printf("Failure when nothing should be found\n");
|
||||||
|
} else {
|
||||||
|
printf("Ok, not found when looking up not existing key\n");
|
||||||
|
}
|
||||||
|
|
||||||
|
res = htcache_lookup(c, "key5", &output, &size);
|
||||||
|
if (0 != res) {
|
||||||
|
printf("Failure when key5 should be found: %d\n", res);
|
||||||
|
} else {
|
||||||
|
printf("Ok, key5 found\n");
|
||||||
|
if (size != 7) {
|
||||||
|
printf(" Failure: invalid size: %d\n", size);
|
||||||
|
} else if (strcmp(output, "value5")) {
|
||||||
|
printf(" Failure: invalid data: %s\n", output);
|
||||||
|
}
|
||||||
|
free(output);
|
||||||
|
}
|
||||||
|
|
||||||
|
res = htcache_lookup(c, "key2", &output, &size);
|
||||||
|
if (0 != res) {
|
||||||
|
printf("Failure when key2 should be found: %d\n", res);
|
||||||
|
} else {
|
||||||
|
printf("Ok, key2 found\n");
|
||||||
|
if (size != 7) {
|
||||||
|
printf(" Failure: invalid size: %d\n", size);
|
||||||
|
} else if (strcmp(output, "value2")) {
|
||||||
|
printf(" Failure: invalid data: %s\n", output);
|
||||||
|
}
|
||||||
|
free(output);
|
||||||
|
}
|
||||||
|
|
||||||
|
printf("Add entry to cache\n");
|
||||||
|
htcache_insert(c, "key_9", "value_9", 8);
|
||||||
|
|
||||||
|
res = htcache_lookup(c, "key_9", &output, &size);
|
||||||
|
if (0 != res) {
|
||||||
|
printf("Failure when key_9 should be found: %d\n", res);
|
||||||
|
} else {
|
||||||
|
printf("Ok, key_9 found\n");
|
||||||
|
if (size != 8) {
|
||||||
|
printf(" Failure: invalid size: %d\n", size);
|
||||||
|
} else if (strcmp(output, "value_9")) {
|
||||||
|
printf(" Failure: invalid data: %s\n", output);
|
||||||
|
}
|
||||||
|
free(output);
|
||||||
|
}
|
||||||
|
|
||||||
|
printf("Sleeping a while\n");
|
||||||
|
sleep(15);
|
||||||
|
|
||||||
|
|
||||||
|
res = htcache_lookup(c, "key2", &output, &size);
|
||||||
|
if (-2 != res) {
|
||||||
|
printf("Failure when nothing should be found with expiry code\n");
|
||||||
|
} else {
|
||||||
|
printf("Ok, not found when looking up expired entry, got expiry code\n");
|
||||||
|
}
|
||||||
|
|
||||||
|
res = htcache_lookup(c, "key2", &output, &size);
|
||||||
|
if (-1 != res) {
|
||||||
|
printf("Failure when nothing should be found\n");
|
||||||
|
} else {
|
||||||
|
printf("Ok, not found when looking up already expired entry\n");
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
htcache_destroy(c);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
648
smmapdfw/libsmmapdfw/htdns.c
Normal file
648
smmapdfw/libsmmapdfw/htdns.c
Normal file
@ -0,0 +1,648 @@
|
|||||||
|
/*
|
||||||
|
Copyright (C) 2004, Wolfgang Hottgenroth
|
||||||
|
|
||||||
|
This file is part of smmapdfw.
|
||||||
|
|
||||||
|
smmapdfw is free software; you can redistribute it and/or modify it
|
||||||
|
under the terms of the GNU General Public License as published by
|
||||||
|
the Free Software Foundation; either version 2 of the License, or
|
||||||
|
(at your option) any later version.
|
||||||
|
|
||||||
|
smmapdfw is distributed in the hope that it will be useful, but WITHOUT
|
||||||
|
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
|
||||||
|
or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
|
||||||
|
License for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU General Public License
|
||||||
|
along with smmapdfw. If not, write to the Free Software Foundation, 59
|
||||||
|
Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
#include "config.h"
|
||||||
|
|
||||||
|
#if HAVE_LIBDJBDNS
|
||||||
|
// int h_errno;
|
||||||
|
#else
|
||||||
|
extern int h_errno;
|
||||||
|
/* extern struct state _res; */
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
#include <sys/types.h>
|
||||||
|
#include <netinet/in.h>
|
||||||
|
#define BIND_8_COMPAT
|
||||||
|
#include <arpa/nameser.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include <syslog.h>
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <strings.h>
|
||||||
|
#include <string.h>
|
||||||
|
#include <errno.h>
|
||||||
|
#include <assert.h>
|
||||||
|
|
||||||
|
#if HAVE_LIBDJBDNS
|
||||||
|
#include <djbdns/dns.h>
|
||||||
|
#include <djbdns/alloc.h>
|
||||||
|
#include <pthread.h>
|
||||||
|
#else
|
||||||
|
#include <resolv.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#include "htdns.h"
|
||||||
|
#include "htmalloc.h"
|
||||||
|
|
||||||
|
|
||||||
|
union answer_u {
|
||||||
|
HEADER hdr;
|
||||||
|
u_char buf[PACKETSZ+1];
|
||||||
|
};
|
||||||
|
|
||||||
|
typedef union answer_u answer_t;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
#define get32_x(b, o) htonl((b[o+3] << 24) + (b[o+2] << 16) + (b[o+1] << 8) + b[o])
|
||||||
|
#define get32(b, o) ((b[o] << 24) + (b[o+1] << 16) + (b[o+2] << 8) + b[o+3])
|
||||||
|
#define get16(b, o) ((b[o] << 8) + b[o+1])
|
||||||
|
|
||||||
|
|
||||||
|
#if HAVE_LIBDJBDNS
|
||||||
|
pthread_mutex_t dns_transmit_mutex = PTHREAD_MUTEX_INITIALIZER;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
static int get_domain_name(answer_t *answer, int offset, char **name) {
|
||||||
|
int start, len, i, offset2;
|
||||||
|
char *name_buf, *name_buf2, *remember_name_buf;
|
||||||
|
name_buf = NULL;
|
||||||
|
|
||||||
|
|
||||||
|
while (0 != (len = answer->buf[offset++])) {
|
||||||
|
if (0xC0 == (len & 0xC0)) {
|
||||||
|
if (NULL != name) { /* if we don't need the result, we don't need to recurse, since a ... */
|
||||||
|
offset2 = ((len & ~0xC0) << 8) + answer->buf[offset++];
|
||||||
|
get_domain_name(answer, offset2, &name_buf2);
|
||||||
|
remember_name_buf = name_buf;
|
||||||
|
name_buf = (char*) htrealloc(name_buf, ((NULL != name_buf) ? strlen(name_buf) : 0) + strlen(name_buf2) + 1);
|
||||||
|
if (NULL == remember_name_buf) {
|
||||||
|
name_buf[0] = '\0';
|
||||||
|
}
|
||||||
|
strcat(name_buf, name_buf2);
|
||||||
|
free(name_buf2);
|
||||||
|
*name = name_buf;
|
||||||
|
} else {
|
||||||
|
offset++; /* ... a recursion pointer is always two octets long ... */
|
||||||
|
}
|
||||||
|
return offset; /* ... and is always the final part of a name */
|
||||||
|
} else {
|
||||||
|
start = offset;
|
||||||
|
offset += len;
|
||||||
|
if (NULL != name) {
|
||||||
|
i = (NULL != name_buf) ? strlen(name_buf) : 0;
|
||||||
|
name_buf = (char*) htrealloc(name_buf, i+len+2);
|
||||||
|
strncpy(name_buf + i, answer->buf + start, len);
|
||||||
|
name_buf[i+len] = '\0';
|
||||||
|
strcat(name_buf, ".");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (NULL != name) {
|
||||||
|
if (name_buf != NULL) /* we can do this of course only if there is something */
|
||||||
|
name_buf[strlen(name_buf)-1] = '\0'; /* remove the final dot */
|
||||||
|
*name = name_buf;
|
||||||
|
}
|
||||||
|
return offset;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
static int get_mx_rdata(answer_t *answer, int offset, int len, mx_rdata_t **resp) {
|
||||||
|
*resp = (mx_rdata_t*) htmalloc(sizeof(mx_rdata_t));
|
||||||
|
(*resp)->preference = get16(answer->buf, offset);
|
||||||
|
(*resp)->exchange = NULL;
|
||||||
|
get_domain_name(answer, offset+2, &(*resp)->exchange);
|
||||||
|
(*resp)->type = T_MX;
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
static void free_mx_rdata(mx_rdata_t *resp) {
|
||||||
|
free(resp->exchange);
|
||||||
|
free(resp);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
static int get_a_rdata(answer_t *answer, int offset, int len, a_rdata_t **resp) {
|
||||||
|
*resp = (a_rdata_t*) htmalloc(sizeof(a_rdata_t));
|
||||||
|
(*resp)->address = htonl(get32(answer->buf, offset));
|
||||||
|
(*resp)->type = T_A;
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
static int get_cname_rdata(answer_t *answer, int offset, int len, cname_rdata_t **resp) {
|
||||||
|
*resp = (cname_rdata_t*) htmalloc(sizeof(cname_rdata_t));
|
||||||
|
(*resp)->cname = NULL;
|
||||||
|
get_domain_name(answer, offset, &(*resp)->cname);
|
||||||
|
(*resp)->type = T_CNAME;
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
static void free_cname_rdata(cname_rdata_t *resp) {
|
||||||
|
free(resp->cname);
|
||||||
|
free(resp);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
static void free_a_rdata(a_rdata_t *resp) {
|
||||||
|
free(resp);
|
||||||
|
}
|
||||||
|
|
||||||
|
static int get_rdata(answer_t *answer, int type, int offset, int len, void **resp) {
|
||||||
|
switch (type) {
|
||||||
|
case T_MX:
|
||||||
|
get_mx_rdata(answer, offset, len, (mx_rdata_t**)resp);
|
||||||
|
break;
|
||||||
|
case T_A:
|
||||||
|
get_a_rdata(answer, offset, len, (a_rdata_t**)resp);
|
||||||
|
break;
|
||||||
|
case T_CNAME:
|
||||||
|
get_cname_rdata(answer, offset, len, (cname_rdata_t**)resp);
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
syslog(LOG_ERR, "type %d unsupported\n", type);
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
static void free_rdata(void *resp) {
|
||||||
|
rdata_t *d = (rdata_t*)resp;
|
||||||
|
switch (d->type) {
|
||||||
|
case T_MX:
|
||||||
|
free_mx_rdata(resp);
|
||||||
|
break;
|
||||||
|
case T_A:
|
||||||
|
free_a_rdata(resp);
|
||||||
|
break;
|
||||||
|
case T_CNAME:
|
||||||
|
free_cname_rdata(resp);
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
syslog(LOG_ERR, "type %d unsupported\n", d->type);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void free_rrs(void **resp) {
|
||||||
|
void **rdata;
|
||||||
|
for (rdata = resp; *rdata != NULL; rdata++) {
|
||||||
|
free_rdata(*rdata);
|
||||||
|
}
|
||||||
|
free(resp);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
static void** get_rrs(char *domain, int qtype) {
|
||||||
|
unsigned int res, i, cnt, len, offset, x, y, rdlength;
|
||||||
|
answer_t *answer;
|
||||||
|
unsigned int class, type, ttl;
|
||||||
|
char *name;
|
||||||
|
void **rdata, **rdata2;
|
||||||
|
|
||||||
|
|
||||||
|
#if HAVE_LIBDJBDNS
|
||||||
|
struct dns_transmit dt = {0};
|
||||||
|
char *q = NULL;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
syslog(LOG_DEBUG, "get_rrs: looking up domain %s, qtype %d", domain, qtype);
|
||||||
|
|
||||||
|
#if HAVE_LIBDJBDNS
|
||||||
|
{
|
||||||
|
char s[64];
|
||||||
|
int flagrecursive = 1;
|
||||||
|
char t[2];
|
||||||
|
char localip[4] = "\0\0\0\0";
|
||||||
|
iopause_fd x[1];
|
||||||
|
struct taia deadline;
|
||||||
|
struct taia stamp;
|
||||||
|
|
||||||
|
|
||||||
|
t[0] = '\0';
|
||||||
|
t[1] = qtype;
|
||||||
|
|
||||||
|
if (dns_resolvconfip(s) == -1) {
|
||||||
|
syslog(LOG_ERR, "failure in dns_resolvconfip: %d, %s\n",
|
||||||
|
errno, strerror(errno));
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
syslog(LOG_DEBUG, "get_rrs: (1) q = %p", q);
|
||||||
|
dns_domain_fromdot(&q, domain, strlen(domain));
|
||||||
|
syslog(LOG_DEBUG, "get_rrs: (2) q = %p", q);
|
||||||
|
|
||||||
|
pthread_mutex_lock(&dns_transmit_mutex);
|
||||||
|
res = dns_transmit_start(&dt, s, flagrecursive, q, t, localip);
|
||||||
|
syslog(LOG_DEBUG, "get_rrs: (3) q = %p", q);
|
||||||
|
pthread_mutex_unlock(&dns_transmit_mutex);
|
||||||
|
|
||||||
|
if (res == -1) {
|
||||||
|
//syslog(LOG_ERR, "failure in dns_transmit_start: %d, %s\n",
|
||||||
|
//errno, strerror(errno));
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
for (;;) {
|
||||||
|
int r;
|
||||||
|
|
||||||
|
taia_now(&stamp);
|
||||||
|
taia_uint(&deadline,120);
|
||||||
|
taia_add(&deadline, &deadline, &stamp);
|
||||||
|
pthread_mutex_lock(&dns_transmit_mutex);
|
||||||
|
dns_transmit_io(&dt, x, &deadline);
|
||||||
|
pthread_mutex_unlock(&dns_transmit_mutex);
|
||||||
|
|
||||||
|
iopause(x, 1, &deadline, &stamp);
|
||||||
|
|
||||||
|
pthread_mutex_lock(&dns_transmit_mutex);
|
||||||
|
r = dns_transmit_get(&dt, x, &stamp);
|
||||||
|
pthread_mutex_unlock(&dns_transmit_mutex);
|
||||||
|
|
||||||
|
if (-1 == r) {
|
||||||
|
//syslog(LOG_ERR, "failure in dns_transmit_get: %d, %s\n",
|
||||||
|
//errno, strerror(errno));
|
||||||
|
|
||||||
|
pthread_mutex_lock(&dns_transmit_mutex);
|
||||||
|
dns_transmit_free(&dt);
|
||||||
|
pthread_mutex_unlock(&dns_transmit_mutex);
|
||||||
|
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (1 == r)
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
answer = (answer_t*) dt.packet;
|
||||||
|
}
|
||||||
|
#else
|
||||||
|
{
|
||||||
|
answer_t lanswer;
|
||||||
|
|
||||||
|
syslog(LOG_DEBUG, "get_rrs: before res_search");
|
||||||
|
res = res_search(domain, C_IN, qtype, (u_char*) &lanswer, sizeof(answer_t));
|
||||||
|
if (-1 == res) {
|
||||||
|
syslog(LOG_ERR, "get_rrs: error in res_search: h_errno=%d, errno=%d, (%s)",
|
||||||
|
h_errno, errno, strerror(errno));
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
answer = &lanswer;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
cnt = sizeof(HEADER);
|
||||||
|
|
||||||
|
#if 1
|
||||||
|
syslog(LOG_DEBUG, "id: %d\n", answer->hdr.id);
|
||||||
|
syslog(LOG_DEBUG, "qr: %d\n", answer->hdr.qr);
|
||||||
|
syslog(LOG_DEBUG, "oc: %d\n", answer->hdr.opcode);
|
||||||
|
syslog(LOG_DEBUG, "aa: %d\n", answer->hdr.aa);
|
||||||
|
syslog(LOG_DEBUG, "tc: %d\n", answer->hdr.tc);
|
||||||
|
syslog(LOG_DEBUG, "rd: %d\n", answer->hdr.rd);
|
||||||
|
syslog(LOG_DEBUG, "ra: %d\n", answer->hdr.ra);
|
||||||
|
// syslog(LOG_DEBUG, "ad: %d\n", answer->hdr.ad);
|
||||||
|
// syslog(LOG_DEBUG, "cd: %d\n", answer->hdr.cd);
|
||||||
|
syslog(LOG_DEBUG, "rc: %d\n", answer->hdr.rcode);
|
||||||
|
syslog(LOG_DEBUG, "qdcount: %d\n", ntohs(answer->hdr.qdcount));
|
||||||
|
syslog(LOG_DEBUG, "ancount: %d\n", ntohs(answer->hdr.ancount));
|
||||||
|
syslog(LOG_DEBUG, "nscount: %d\n", ntohs(answer->hdr.nscount));
|
||||||
|
syslog(LOG_DEBUG, "arcount: %d\n", ntohs(answer->hdr.arcount));
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/* query section */
|
||||||
|
for (y = 0; y < ntohs(answer->hdr.qdcount); y++) {
|
||||||
|
cnt = get_domain_name(answer, cnt, NULL);
|
||||||
|
type = get16(answer->buf, cnt);
|
||||||
|
cnt += 2;
|
||||||
|
class = get16(answer->buf, cnt);
|
||||||
|
cnt += 2;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* answer section */
|
||||||
|
rdata = (void**)htmalloc(sizeof(void*) * (ntohs(answer->hdr.ancount)+1));
|
||||||
|
for (y = 0; y < ntohs(answer->hdr.ancount); y++) {
|
||||||
|
cnt = get_domain_name(answer, cnt, NULL);
|
||||||
|
type = get16(answer->buf, cnt);
|
||||||
|
syslog(LOG_DEBUG, "get_rrs: answer type %d", type);
|
||||||
|
|
||||||
|
//if (type != qtype)
|
||||||
|
// printf("answer type mismatch: %d != %d\n", type, qtype);
|
||||||
|
/* assert(type==qtype); */
|
||||||
|
|
||||||
|
cnt += 2;
|
||||||
|
class = get16(answer->buf, cnt);
|
||||||
|
cnt += 2;
|
||||||
|
ttl = get32(answer->buf, cnt);
|
||||||
|
cnt += 4;
|
||||||
|
rdlength = get16(answer->buf, cnt);
|
||||||
|
cnt += 2;
|
||||||
|
rdata2 = rdata+y;
|
||||||
|
get_rdata(answer, type, cnt, rdlength, rdata2);
|
||||||
|
cnt += rdlength;
|
||||||
|
}
|
||||||
|
|
||||||
|
rdata2 = rdata+y;
|
||||||
|
*((void**)rdata2) = NULL;
|
||||||
|
|
||||||
|
#if HAVE_LIBDJBDNS
|
||||||
|
pthread_mutex_lock(&dns_transmit_mutex);
|
||||||
|
dns_transmit_free(&dt);
|
||||||
|
pthread_mutex_unlock(&dns_transmit_mutex);
|
||||||
|
|
||||||
|
syslog(LOG_DEBUG, "get_rrs: (4) q = %p", q);
|
||||||
|
alloc_free(q);
|
||||||
|
q = NULL;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
return rdata;
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
mx_rdata_t** get_mx_rrs(char *domain) {
|
||||||
|
if (domain == NULL)
|
||||||
|
return NULL;
|
||||||
|
|
||||||
|
rdata_t **rdata = (rdata_t**) get_rrs(domain, T_MX);
|
||||||
|
|
||||||
|
if (NULL == rdata) {
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (NULL == *rdata) {
|
||||||
|
free(rdata);
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
rdata_t **rdata2;
|
||||||
|
mx_rdata_t **mx_rdata = NULL;
|
||||||
|
int i = 0; // one for the termination
|
||||||
|
for (rdata2 = rdata; *rdata2 != NULL; rdata2++) {
|
||||||
|
if ((*rdata2)->type == T_MX) {
|
||||||
|
mx_rdata = (mx_rdata_t**) htrealloc(mx_rdata, sizeof(mx_rdata_t*) * (i + 2));
|
||||||
|
*(mx_rdata + i) = (mx_rdata_t*) *rdata2;
|
||||||
|
i++;
|
||||||
|
} else {
|
||||||
|
/* it's not, free it */
|
||||||
|
free_rdata(*rdata2);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* free the old container */
|
||||||
|
free(rdata);
|
||||||
|
|
||||||
|
/* terminate the new container */
|
||||||
|
if (mx_rdata != NULL)
|
||||||
|
*((int**)(mx_rdata + i)) = NULL;
|
||||||
|
|
||||||
|
return mx_rdata;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
a_rdata_t** inner_get_a_rrs(char *domain, int *depth) {
|
||||||
|
//printf("depth: %d, domain: %s\n", *depth, domain);
|
||||||
|
if (*depth > 5) {
|
||||||
|
//printf("loop\n");
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
if (domain == NULL)
|
||||||
|
return NULL;
|
||||||
|
|
||||||
|
cname_rdata_t **cname_rdata;
|
||||||
|
|
||||||
|
rdata_t **rdata = (rdata_t**) get_rrs(domain, T_A);
|
||||||
|
|
||||||
|
if (NULL == rdata) {
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (NULL == *rdata) {
|
||||||
|
free(rdata);
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
rdata_t **rdata2;
|
||||||
|
a_rdata_t **a_rdata = NULL;
|
||||||
|
int i = 0; // one for the termination
|
||||||
|
for (rdata2 = rdata; *rdata2 != NULL; rdata2++) {
|
||||||
|
//printf(" depth: %d, rdata2: %p\n", *depth, rdata2);
|
||||||
|
if ((*rdata2)->type == T_A) {
|
||||||
|
a_rdata = (a_rdata_t**) htrealloc(a_rdata, sizeof(a_rdata_t*) * (i + 2));
|
||||||
|
*(a_rdata + i) = *rdata2;
|
||||||
|
i++;
|
||||||
|
} else if ((*rdata2)->type == T_CNAME) {
|
||||||
|
cname_rdata_t *cname_rdata = (cname_rdata_t*) *rdata2;
|
||||||
|
(*depth)++;
|
||||||
|
a_rdata_t **a_rdata_recurse = inner_get_a_rrs(cname_rdata->cname, depth);
|
||||||
|
if ((NULL != a_rdata_recurse) && (NULL != *a_rdata_recurse)) {
|
||||||
|
a_rdata_t **a_rdata2;
|
||||||
|
for (a_rdata2 = a_rdata_recurse; *a_rdata2 != NULL; a_rdata2++) {
|
||||||
|
a_rdata = (a_rdata_t**) htrealloc(a_rdata, sizeof(a_rdata_t*) * (i + 2));
|
||||||
|
*(a_rdata + i) = *a_rdata2;
|
||||||
|
i++;
|
||||||
|
}
|
||||||
|
free(a_rdata_recurse);
|
||||||
|
} else if (NULL != a_rdata_recurse) {
|
||||||
|
free(a_rdata_recurse);
|
||||||
|
}
|
||||||
|
free_rdata(cname_rdata);
|
||||||
|
} else {
|
||||||
|
/* it's not, free it */
|
||||||
|
free_rdata(*rdata2);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* free the old container */
|
||||||
|
free(rdata);
|
||||||
|
|
||||||
|
/* terminate the new container */
|
||||||
|
if (a_rdata != NULL)
|
||||||
|
*((int**)(a_rdata + i)) = NULL;
|
||||||
|
|
||||||
|
return a_rdata;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
a_rdata_t** get_a_rrs(char *domain) {
|
||||||
|
if (NULL == domain)
|
||||||
|
return NULL;
|
||||||
|
|
||||||
|
char *myDomain = domain;
|
||||||
|
|
||||||
|
struct in_addr addr;
|
||||||
|
if (myDomain[0] == '[' && myDomain[strlen(myDomain)-1] == ']') {
|
||||||
|
syslog(LOG_DEBUG, "get_a_rrs: this is something (hopefully an IP address) in square brackets");
|
||||||
|
myDomain[strlen(myDomain)-1] = '\0';
|
||||||
|
myDomain++;
|
||||||
|
}
|
||||||
|
|
||||||
|
a_rdata_t **a_rdata = NULL;
|
||||||
|
if (inet_aton(myDomain, &addr)) {
|
||||||
|
syslog(LOG_DEBUG, "get_a_rss: not a name but an address");
|
||||||
|
|
||||||
|
a_rdata = (a_rdata_t**) htmalloc(sizeof(a_rdata_t*) * 2);
|
||||||
|
|
||||||
|
a_rdata_t *resp = (a_rdata_t*) htmalloc(sizeof(a_rdata_t));
|
||||||
|
resp->address = addr.s_addr;
|
||||||
|
resp->type = T_A;
|
||||||
|
|
||||||
|
*a_rdata = resp;
|
||||||
|
*(a_rdata + 1) = NULL;
|
||||||
|
} else {
|
||||||
|
int i = 0;
|
||||||
|
a_rdata = inner_get_a_rrs(myDomain, &i);
|
||||||
|
}
|
||||||
|
return a_rdata;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
#define min(A,B) ((A<B) ? A : B)
|
||||||
|
mx_rdata_t** get_best_mx_rrs(char *domain) {
|
||||||
|
if (domain == NULL)
|
||||||
|
return NULL;
|
||||||
|
|
||||||
|
int i = 0;
|
||||||
|
|
||||||
|
|
||||||
|
mx_rdata_t **all_mx_rrs = get_mx_rrs(domain);
|
||||||
|
if (NULL == all_mx_rrs)
|
||||||
|
return NULL;
|
||||||
|
|
||||||
|
|
||||||
|
/* how much are there at all and what is the minimum preference */
|
||||||
|
int min_pref = 10000000;
|
||||||
|
int all_cnt = 0;
|
||||||
|
mx_rdata_t **mx_rdata2;
|
||||||
|
for (mx_rdata2 = all_mx_rrs; *mx_rdata2 != NULL; mx_rdata2++) {
|
||||||
|
all_cnt++;
|
||||||
|
min_pref = min(min_pref, (*mx_rdata2)->preference);
|
||||||
|
}
|
||||||
|
|
||||||
|
//printf("all_cnt: %d, min_pref: %d\n", all_cnt, min_pref);
|
||||||
|
|
||||||
|
/* how much are there of the minimum preference */
|
||||||
|
int best_cnt = 0;
|
||||||
|
for (mx_rdata2 = all_mx_rrs; *mx_rdata2 != NULL; mx_rdata2++)
|
||||||
|
if ((*mx_rdata2)->preference == min_pref)
|
||||||
|
best_cnt++;
|
||||||
|
//printf("best_cnt: %d\n", best_cnt);
|
||||||
|
|
||||||
|
if (all_cnt == best_cnt) {
|
||||||
|
/* all of them are minimum */
|
||||||
|
return all_mx_rrs;
|
||||||
|
} else {
|
||||||
|
/* space for the minimum pref rr's */
|
||||||
|
mx_rdata_t **best_mx_rrs = (mx_rdata_t**) htmalloc(sizeof(mx_rdata_t*) * (best_cnt+1));
|
||||||
|
for (mx_rdata2 = all_mx_rrs; *mx_rdata2 != NULL; mx_rdata2++) {
|
||||||
|
if ((*mx_rdata2)->preference == min_pref) {
|
||||||
|
/* is a minimum one, keep it */
|
||||||
|
*(best_mx_rrs+i) = *mx_rdata2;
|
||||||
|
i++;
|
||||||
|
} else {
|
||||||
|
/* it's not, free it */
|
||||||
|
free_rdata(*mx_rdata2);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
/* free the old container */
|
||||||
|
free(all_mx_rrs);
|
||||||
|
/* terminate the new container */
|
||||||
|
*((int**)(best_mx_rrs+i)) = NULL;
|
||||||
|
|
||||||
|
return best_mx_rrs;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/* #define _TEST_MODE_ */
|
||||||
|
#ifdef _TEST_MODE_
|
||||||
|
|
||||||
|
|
||||||
|
int main(int argc, char **argv) {
|
||||||
|
char default_domain[] = "test.de";
|
||||||
|
char *domain = default_domain;
|
||||||
|
mx_rdata_t **mx_rdata, **mx_rdata2;
|
||||||
|
a_rdata_t **a_rdata, **a_rdata2;
|
||||||
|
int a;
|
||||||
|
|
||||||
|
if (argc > 1) {
|
||||||
|
domain = argv[1];
|
||||||
|
}
|
||||||
|
|
||||||
|
openlog("htdns-test", LOG_PID, LOG_LOCAL2);
|
||||||
|
|
||||||
|
|
||||||
|
printf("before get_mx_rrs: %s\n", domain);
|
||||||
|
|
||||||
|
mx_rdata = get_mx_rrs(domain);
|
||||||
|
for (mx_rdata2 = mx_rdata; *mx_rdata2 != NULL; mx_rdata2++) {
|
||||||
|
printf("preference: %d, exchange: %s\n", (*mx_rdata2)->preference, (*mx_rdata2)->exchange);
|
||||||
|
}
|
||||||
|
|
||||||
|
free_rrs((void**)mx_rdata);
|
||||||
|
|
||||||
|
|
||||||
|
printf("------------------\n");
|
||||||
|
|
||||||
|
mx_rdata = get_best_mx_rrs(domain);
|
||||||
|
|
||||||
|
|
||||||
|
for (mx_rdata2 = mx_rdata; *mx_rdata2 != NULL; mx_rdata2++) {
|
||||||
|
printf("preference: %d, exchange: %s\n", (*mx_rdata2)->preference, (*mx_rdata2)->exchange);
|
||||||
|
|
||||||
|
a_rdata = get_a_rrs((*mx_rdata2)->exchange);
|
||||||
|
for (a_rdata2 = a_rdata; *a_rdata2 != NULL; a_rdata2++) {
|
||||||
|
a = (*a_rdata2)->address;
|
||||||
|
printf("address: %04x\n", a);
|
||||||
|
printf(" %d.%d.%d.%d\n", (a&0xff000000)>>24, (a&0x00ff0000)>>16, (a&0x0000ff00)>>8, a&0x000000ff);
|
||||||
|
}
|
||||||
|
free_rrs((void**)a_rdata);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
free_rrs((void**)mx_rdata);
|
||||||
|
|
||||||
|
/* printf("------------------\n"); */
|
||||||
|
|
||||||
|
/* a_rdata = get_a_rrs("www.microsoft.com.nsatc.net"); */
|
||||||
|
/* for (a_rdata2 = a_rdata; *a_rdata2 != NULL; a_rdata2++) { */
|
||||||
|
/* a = (*a_rdata2)->address; */
|
||||||
|
/* printf("address: %04x\n", a); */
|
||||||
|
/* printf(" %d.%d.%d.%d\n", (a&0xff000000)>>24, (a&0x00ff0000)>>16, (a&0x0000ff00)>>8, a&0x000000ff); */
|
||||||
|
/* } */
|
||||||
|
/* free_rrs((void**)a_rdata); */
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
closelog();
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif /* _TEST_MODE_ */
|
||||||
|
|
||||||
|
|
70
smmapdfw/libsmmapdfw/htdns.h
Normal file
70
smmapdfw/libsmmapdfw/htdns.h
Normal file
@ -0,0 +1,70 @@
|
|||||||
|
/*
|
||||||
|
Copyright (C) 2004, Wolfgang Hottgenroth
|
||||||
|
|
||||||
|
This file is part of smmapdfw.
|
||||||
|
|
||||||
|
smmapdfw is free software; you can redistribute it and/or modify it
|
||||||
|
under the terms of the GNU General Public License as published by
|
||||||
|
the Free Software Foundation; either version 2 of the License, or
|
||||||
|
(at your option) any later version.
|
||||||
|
|
||||||
|
smmapdfw is distributed in the hope that it will be useful, but WITHOUT
|
||||||
|
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
|
||||||
|
or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
|
||||||
|
License for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU General Public License
|
||||||
|
along with smmapdfw. If not, write to the Free Software Foundation, 59
|
||||||
|
Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
#ifndef _DNS_H_
|
||||||
|
#define _DNS_H_
|
||||||
|
|
||||||
|
struct mx_rdata_s {
|
||||||
|
int type;
|
||||||
|
int preference;
|
||||||
|
char *exchange;
|
||||||
|
};
|
||||||
|
|
||||||
|
typedef struct mx_rdata_s mx_rdata_t;
|
||||||
|
|
||||||
|
struct cname_rdata_s {
|
||||||
|
int type;
|
||||||
|
char *cname;
|
||||||
|
};
|
||||||
|
|
||||||
|
typedef struct cname_rdata_s cname_rdata_t;
|
||||||
|
|
||||||
|
struct a_rdata_s {
|
||||||
|
int type;
|
||||||
|
unsigned int address;
|
||||||
|
};
|
||||||
|
|
||||||
|
typedef struct a_rdata_s a_rdata_t;
|
||||||
|
|
||||||
|
struct rdata_s {
|
||||||
|
int type;
|
||||||
|
union {
|
||||||
|
mx_rdata_t mx;
|
||||||
|
a_rdata_t a;
|
||||||
|
cname_rdata_t cname;
|
||||||
|
} data;
|
||||||
|
};
|
||||||
|
|
||||||
|
typedef struct rdata_s rdata_t;
|
||||||
|
|
||||||
|
|
||||||
|
void free_rrs(void **resp);
|
||||||
|
mx_rdata_t** get_mx_rrs(char *domain);
|
||||||
|
mx_rdata_t** get_best_mx_rrs(char *domain);
|
||||||
|
a_rdata_t** get_a_rrs(char *domain);
|
||||||
|
cname_rdata_t** get_cname_rrs(char *domain);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
#endif /* _DNS_H_ */
|
||||||
|
|
||||||
|
|
83
smmapdfw/libsmmapdfw/htdnstest.c
Normal file
83
smmapdfw/libsmmapdfw/htdnstest.c
Normal file
@ -0,0 +1,83 @@
|
|||||||
|
#if 0
|
||||||
|
|
||||||
|
/*
|
||||||
|
Copyright (C) 2004,2005 Wolfgang Hottgenroth
|
||||||
|
|
||||||
|
This file is part of smmapdfw.
|
||||||
|
|
||||||
|
smmapdfw is free software; you can redistribute it and/or modify it
|
||||||
|
under the terms of the GNU General Public License as published by
|
||||||
|
the Free Software Foundation; either version 2 of the License, or
|
||||||
|
(at your option) any later version.
|
||||||
|
|
||||||
|
smmapdfw is distributed in the hope that it will be useful, but WITHOUT
|
||||||
|
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
|
||||||
|
or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
|
||||||
|
License for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU General Public License
|
||||||
|
along with smmapdfw. If not, write to the Free Software Foundation, 59
|
||||||
|
Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#if HAVE_CONFIG_H
|
||||||
|
# include "config.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <unistd.h>
|
||||||
|
#include <syslog.h>
|
||||||
|
#include <string.h>
|
||||||
|
|
||||||
|
#include "htdns.h"
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
int main(int argc, char **args) {
|
||||||
|
if (argc != 3) {
|
||||||
|
printf("give domain to test and query type on commandline\n");
|
||||||
|
exit(1);
|
||||||
|
}
|
||||||
|
|
||||||
|
char *domain = args[1];
|
||||||
|
char *type = args[2];
|
||||||
|
|
||||||
|
if (! strcmp(type, "mx")) {
|
||||||
|
mx_rdata_t **mx_rdata = get_best_mx_rrs(domain);
|
||||||
|
if (mx_rdata == NULL) {
|
||||||
|
printf("no mx-rr found\n");
|
||||||
|
} else {
|
||||||
|
mx_rdata_t **mx_rdata2;
|
||||||
|
for (mx_rdata2 = mx_rdata; *mx_rdata2 != NULL; mx_rdata2++) {
|
||||||
|
printf("--> %d, %s\n", (*mx_rdata2)->preference, (*mx_rdata2)->exchange);
|
||||||
|
}
|
||||||
|
|
||||||
|
free_rrs((void**)mx_rdata);
|
||||||
|
}
|
||||||
|
} else if (! strcmp(type, "a")) {
|
||||||
|
a_rdata_t **a_rdata = get_a_rrs(domain);
|
||||||
|
if (a_rdata == NULL) {
|
||||||
|
printf("nothing found\n");
|
||||||
|
} else {
|
||||||
|
a_rdata_t **a_rdata2;
|
||||||
|
for (a_rdata2 = a_rdata; *a_rdata2 != NULL; a_rdata2++) {
|
||||||
|
printf("--> %08x, %d.%d.%d.%d\n", htonl((*a_rdata2)->address),
|
||||||
|
(htonl((*a_rdata2)->address)&0xff000000)>>24, (htonl((*a_rdata2)->address)&0x00ff0000)>>16,
|
||||||
|
(htonl((*a_rdata2)->address)&0x0000ff00)>>8, (htonl((*a_rdata2)->address)&0x000000ff));
|
||||||
|
}
|
||||||
|
|
||||||
|
free_rrs((void**)a_rdata);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
#else
|
||||||
|
main() {
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
#endif
|
57
smmapdfw/libsmmapdfw/htmalloc.c
Normal file
57
smmapdfw/libsmmapdfw/htmalloc.c
Normal file
@ -0,0 +1,57 @@
|
|||||||
|
/*
|
||||||
|
Copyright (C) 2004, Wolfgang Hottgenroth
|
||||||
|
|
||||||
|
This file is part of smmapdfw.
|
||||||
|
|
||||||
|
smmapdfw is free software; you can redistribute it and/or modify it
|
||||||
|
under the terms of the GNU General Public License as published by
|
||||||
|
the Free Software Foundation; either version 2 of the License, or
|
||||||
|
(at your option) any later version.
|
||||||
|
|
||||||
|
smmapdfw is distributed in the hope that it will be useful, but WITHOUT
|
||||||
|
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
|
||||||
|
or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
|
||||||
|
License for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU General Public License
|
||||||
|
along with smmapdfw. If not, write to the Free Software Foundation, 59
|
||||||
|
Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include <syslog.h>
|
||||||
|
#include <string.h>
|
||||||
|
#include "htmalloc.h"
|
||||||
|
|
||||||
|
|
||||||
|
void *htmalloc(size_t size) {
|
||||||
|
void *p = malloc(size);
|
||||||
|
if (NULL == p) {
|
||||||
|
syslog(LOG_ERR, "htmalloc: out of memory");
|
||||||
|
exit(153);
|
||||||
|
}
|
||||||
|
return p;
|
||||||
|
}
|
||||||
|
|
||||||
|
void *htrealloc(void *ptr, size_t size) {
|
||||||
|
void *p = realloc(ptr, size);
|
||||||
|
if (NULL == p) {
|
||||||
|
syslog(LOG_ERR, "htremalloc: out of memory");
|
||||||
|
exit(153);
|
||||||
|
}
|
||||||
|
return p;
|
||||||
|
}
|
||||||
|
|
||||||
|
char *htstrdup(const char *s) {
|
||||||
|
char *p = htmalloc(strlen(s) + 1);
|
||||||
|
strcpy(p, s);
|
||||||
|
return p;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
34
smmapdfw/libsmmapdfw/htmalloc.h
Normal file
34
smmapdfw/libsmmapdfw/htmalloc.h
Normal file
@ -0,0 +1,34 @@
|
|||||||
|
/*
|
||||||
|
Copyright (C) 2004, Wolfgang Hottgenroth
|
||||||
|
|
||||||
|
This file is part of smmapdfw.
|
||||||
|
|
||||||
|
smmapdfw is free software; you can redistribute it and/or modify it
|
||||||
|
under the terms of the GNU General Public License as published by
|
||||||
|
the Free Software Foundation; either version 2 of the License, or
|
||||||
|
(at your option) any later version.
|
||||||
|
|
||||||
|
smmapdfw is distributed in the hope that it will be useful, but WITHOUT
|
||||||
|
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
|
||||||
|
or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
|
||||||
|
License for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU General Public License
|
||||||
|
along with smmapdfw. If not, write to the Free Software Foundation, 59
|
||||||
|
Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef _HTMALLOC_H_
|
||||||
|
#define _HTMALLOC_H_
|
||||||
|
|
||||||
|
#include <stdlib.h>
|
||||||
|
|
||||||
|
void *htmalloc(size_t size);
|
||||||
|
void *htrealloc(void *ptr, size_t size);
|
||||||
|
char *htstrdup(const char *s);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
#endif /* _HTMALLOC_H_ */
|
||||||
|
|
||||||
|
|
@ -1,4 +1,28 @@
|
|||||||
|
/*
|
||||||
|
Copyright (C) 2004, Wolfgang Hottgenroth
|
||||||
|
|
||||||
|
This file is part of smmapdfw.
|
||||||
|
|
||||||
|
smmapdfw is free software; you can redistribute it and/or modify it
|
||||||
|
under the terms of the GNU General Public License as published by
|
||||||
|
the Free Software Foundation; either version 2 of the License, or
|
||||||
|
(at your option) any later version.
|
||||||
|
|
||||||
|
smmapdfw is distributed in the hope that it will be useful, but WITHOUT
|
||||||
|
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
|
||||||
|
or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
|
||||||
|
License for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU General Public License
|
||||||
|
along with smmapdfw. If not, write to the Free Software Foundation, 59
|
||||||
|
Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#include "queue.h"
|
#include "queue.h"
|
||||||
|
#include "htmalloc.h"
|
||||||
|
#include <syslog.h>
|
||||||
|
|
||||||
#ifdef _TEST_MODE_
|
#ifdef _TEST_MODE_
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
@ -23,7 +47,7 @@ void queue_destroy(ht_queue_t *q) {
|
|||||||
int queue_put(ht_queue_t *q, void *d) {
|
int queue_put(ht_queue_t *q, void *d) {
|
||||||
queue_entry_t *entry;
|
queue_entry_t *entry;
|
||||||
|
|
||||||
entry = (queue_entry_t *) malloc(sizeof(queue_entry_t));
|
entry = (queue_entry_t *) htmalloc(sizeof(queue_entry_t));
|
||||||
if (NULL == entry)
|
if (NULL == entry)
|
||||||
return -1;
|
return -1;
|
||||||
|
|
||||||
@ -51,30 +75,46 @@ int queue_put(ht_queue_t *q, void *d) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void *queue_get_wait(ht_queue_t *q) {
|
void *queue_get_wait(ht_queue_t *q) {
|
||||||
|
return queue_get_wait_w_timeout(q, 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
void *queue_get_wait_w_timeout(ht_queue_t *q, int timeout_seconds) {
|
||||||
queue_entry_t *entry = NULL;
|
queue_entry_t *entry = NULL;
|
||||||
void *d = NULL;
|
void *d = NULL;
|
||||||
|
int rc = 0;
|
||||||
|
|
||||||
pthread_mutex_lock(&q->mutex);
|
pthread_mutex_lock(&q->mutex);
|
||||||
|
|
||||||
while ((NULL == q->head) && (NULL == q->tail)) {
|
while ((NULL == q->head) && (NULL == q->tail)) {
|
||||||
pthread_cond_wait(&q->cond, &q->mutex);
|
if (timeout_seconds == 0) {
|
||||||
|
pthread_cond_wait(&q->cond, &q->mutex);
|
||||||
|
} else {
|
||||||
|
struct timespec ts;
|
||||||
|
ts.tv_sec = time(0) + timeout_seconds;
|
||||||
|
ts.tv_nsec = 0;
|
||||||
|
rc = pthread_cond_timedwait(&q->cond, &q->mutex, &ts);
|
||||||
|
if (rc != 0) // terminate loop for timeout
|
||||||
|
break;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
entry = q->head;
|
if (rc == 0) {
|
||||||
|
entry = q->head;
|
||||||
|
|
||||||
if (NULL != q->head) {
|
if (NULL != q->head) {
|
||||||
q->head = q->head->prev;
|
q->head = q->head->prev;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (NULL == q->head) {
|
if (NULL == q->head) {
|
||||||
q->tail = NULL;
|
q->tail = NULL;
|
||||||
} else {
|
} else {
|
||||||
q->head->next = NULL;
|
q->head->next = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (NULL != entry) {
|
if (NULL != entry) {
|
||||||
d = entry->data;
|
d = entry->data;
|
||||||
free(entry);
|
free(entry);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
pthread_mutex_unlock(&q->mutex);
|
pthread_mutex_unlock(&q->mutex);
|
||||||
|
@ -1,3 +1,23 @@
|
|||||||
|
/*
|
||||||
|
Copyright (C) 2004, Wolfgang Hottgenroth
|
||||||
|
|
||||||
|
This file is part of smmapdfw.
|
||||||
|
|
||||||
|
smmapdfw is free software; you can redistribute it and/or modify it
|
||||||
|
under the terms of the GNU General Public License as published by
|
||||||
|
the Free Software Foundation; either version 2 of the License, or
|
||||||
|
(at your option) any later version.
|
||||||
|
|
||||||
|
smmapdfw is distributed in the hope that it will be useful, but WITHOUT
|
||||||
|
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
|
||||||
|
or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
|
||||||
|
License for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU General Public License
|
||||||
|
along with smmapdfw. If not, write to the Free Software Foundation, 59
|
||||||
|
Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||||
|
*/
|
||||||
|
|
||||||
#ifndef _QUEUE_H_
|
#ifndef _QUEUE_H_
|
||||||
#define _QUEUE_H_
|
#define _QUEUE_H_
|
||||||
|
|
||||||
@ -24,6 +44,7 @@ void queue_init(ht_queue_t *q);
|
|||||||
void queue_destroy(ht_queue_t *q);
|
void queue_destroy(ht_queue_t *q);
|
||||||
int queue_put(ht_queue_t *q, void *d);
|
int queue_put(ht_queue_t *q, void *d);
|
||||||
void *queue_get_wait(ht_queue_t *q);
|
void *queue_get_wait(ht_queue_t *q);
|
||||||
|
void *queue_get_wait_w_timeout(ht_queue_t *q, int timeout_seconds);
|
||||||
|
|
||||||
|
|
||||||
#endif /* _QUEUE_H_ */
|
#endif /* _QUEUE_H_ */
|
||||||
|
@ -1,3 +1,23 @@
|
|||||||
|
/*
|
||||||
|
Copyright (C) 2004, Wolfgang Hottgenroth
|
||||||
|
|
||||||
|
This file is part of smmapdfw.
|
||||||
|
|
||||||
|
smmapdfw is free software; you can redistribute it and/or modify it
|
||||||
|
under the terms of the GNU General Public License as published by
|
||||||
|
the Free Software Foundation; either version 2 of the License, or
|
||||||
|
(at your option) any later version.
|
||||||
|
|
||||||
|
smmapdfw is distributed in the hope that it will be useful, but WITHOUT
|
||||||
|
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
|
||||||
|
or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
|
||||||
|
License for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU General Public License
|
||||||
|
along with smmapdfw. If not, write to the Free Software Foundation, 59
|
||||||
|
Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||||
|
*/
|
||||||
|
|
||||||
#include <syslog.h>
|
#include <syslog.h>
|
||||||
#include <sys/select.h>
|
#include <sys/select.h>
|
||||||
#include <errno.h>
|
#include <errno.h>
|
||||||
|
@ -1,3 +1,23 @@
|
|||||||
|
/*
|
||||||
|
Copyright (C) 2004, Wolfgang Hottgenroth
|
||||||
|
|
||||||
|
This file is part of smmapdfw.
|
||||||
|
|
||||||
|
smmapdfw is free software; you can redistribute it and/or modify it
|
||||||
|
under the terms of the GNU General Public License as published by
|
||||||
|
the Free Software Foundation; either version 2 of the License, or
|
||||||
|
(at your option) any later version.
|
||||||
|
|
||||||
|
smmapdfw is distributed in the hope that it will be useful, but WITHOUT
|
||||||
|
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
|
||||||
|
or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
|
||||||
|
License for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU General Public License
|
||||||
|
along with smmapdfw. If not, write to the Free Software Foundation, 59
|
||||||
|
Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||||
|
*/
|
||||||
|
|
||||||
#ifndef _SAFE_WRITE_H_
|
#ifndef _SAFE_WRITE_H_
|
||||||
#define _SAFE_WRITE_H_
|
#define _SAFE_WRITE_H_
|
||||||
|
|
||||||
|
@ -1,3 +1,25 @@
|
|||||||
|
/*
|
||||||
|
Copyright (C) 2004, Wolfgang Hottgenroth
|
||||||
|
|
||||||
|
This file is part of smmapdfw.
|
||||||
|
|
||||||
|
smmapdfw is free software; you can redistribute it and/or modify it
|
||||||
|
under the terms of the GNU General Public License as published by
|
||||||
|
the Free Software Foundation; either version 2 of the License, or
|
||||||
|
(at your option) any later version.
|
||||||
|
|
||||||
|
smmapdfw is distributed in the hope that it will be useful, but WITHOUT
|
||||||
|
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
|
||||||
|
or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
|
||||||
|
License for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU General Public License
|
||||||
|
along with smmapdfw. If not, write to the Free Software Foundation, 59
|
||||||
|
Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <syslog.h>
|
#include <syslog.h>
|
||||||
#include <sys/types.h>
|
#include <sys/types.h>
|
||||||
@ -12,7 +34,7 @@
|
|||||||
#include <string.h>
|
#include <string.h>
|
||||||
|
|
||||||
#include "smtp.h"
|
#include "smtp.h"
|
||||||
|
#include "htmalloc.h"
|
||||||
|
|
||||||
|
|
||||||
#define BUFSIZE 1024
|
#define BUFSIZE 1024
|
||||||
@ -21,7 +43,7 @@
|
|||||||
|
|
||||||
|
|
||||||
smtp_t *smtp_init(unsigned int address, int port, int timeout) {
|
smtp_t *smtp_init(unsigned int address, int port, int timeout) {
|
||||||
smtp_t *handle = (smtp_t*) malloc(sizeof(smtp_t));
|
smtp_t *handle = (smtp_t*) htmalloc(sizeof(smtp_t));
|
||||||
|
|
||||||
handle->address = address;
|
handle->address = address;
|
||||||
handle->port = port;
|
handle->port = port;
|
||||||
@ -30,7 +52,7 @@ smtp_t *smtp_init(unsigned int address, int port, int timeout) {
|
|||||||
handle->response_code = 0;
|
handle->response_code = 0;
|
||||||
handle->got_timeout = 0;
|
handle->got_timeout = 0;
|
||||||
|
|
||||||
handle->buffer = (char*) malloc(BUFSIZE+5);
|
handle->buffer = (char*) htmalloc(BUFSIZE+5);
|
||||||
|
|
||||||
return handle;
|
return handle;
|
||||||
}
|
}
|
||||||
@ -196,9 +218,7 @@ int smtp_command(smtp_t *handle, char *command, char *arg) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
int smtp_connect(smtp_t *handle) {
|
int smtp_connect(smtp_t *handle) {
|
||||||
int err;
|
int err, c, res, optval;
|
||||||
int c;
|
|
||||||
int res;
|
|
||||||
fd_set wrfs;
|
fd_set wrfs;
|
||||||
struct timeval tv;
|
struct timeval tv;
|
||||||
|
|
||||||
@ -209,6 +229,13 @@ int smtp_connect(smtp_t *handle) {
|
|||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
optval = 0x10; /* TOS=lowdelay*/
|
||||||
|
err = setsockopt(handle->socket, IPPROTO_IP, IP_TOS, (void*)&optval, sizeof(optval));
|
||||||
|
if (-1 == err) {
|
||||||
|
syslog(LOG_DEBUG, "smtp_connect: unable to set IPTOS_LOWDELAY: %d (%s)", errno, strerror(errno));
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
c = fcntl(handle->socket, F_GETFL);
|
c = fcntl(handle->socket, F_GETFL);
|
||||||
if (-1 == c) {
|
if (-1 == c) {
|
||||||
syslog(LOG_DEBUG, "smtp_connect: unable to get flags, errno: %d (%s)", errno, strerror(errno));
|
syslog(LOG_DEBUG, "smtp_connect: unable to get flags, errno: %d (%s)", errno, strerror(errno));
|
||||||
|
@ -1,3 +1,23 @@
|
|||||||
|
/*
|
||||||
|
Copyright (C) 2004, Wolfgang Hottgenroth
|
||||||
|
|
||||||
|
This file is part of smmapdfw.
|
||||||
|
|
||||||
|
smmapdfw is free software; you can redistribute it and/or modify it
|
||||||
|
under the terms of the GNU General Public License as published by
|
||||||
|
the Free Software Foundation; either version 2 of the License, or
|
||||||
|
(at your option) any later version.
|
||||||
|
|
||||||
|
smmapdfw is distributed in the hope that it will be useful, but WITHOUT
|
||||||
|
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
|
||||||
|
or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
|
||||||
|
License for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU General Public License
|
||||||
|
along with smmapdfw. If not, write to the Free Software Foundation, 59
|
||||||
|
Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||||
|
*/
|
||||||
|
|
||||||
#ifndef _SMTP_H_
|
#ifndef _SMTP_H_
|
||||||
#define _SMTP_H_
|
#define _SMTP_H_
|
||||||
|
|
||||||
|
163
smmapdfw/libsmmapdfw/stats.c
Normal file
163
smmapdfw/libsmmapdfw/stats.c
Normal file
@ -0,0 +1,163 @@
|
|||||||
|
/*
|
||||||
|
Copyright (C) 2004, Wolfgang Hottgenroth
|
||||||
|
|
||||||
|
This file is part of smmapdfw.
|
||||||
|
|
||||||
|
smmapdfw is free software; you can redistribute it and/or modify it
|
||||||
|
under the terms of the GNU General Public License as published by
|
||||||
|
the Free Software Foundation; either version 2 of the License, or
|
||||||
|
(at your option) any later version.
|
||||||
|
|
||||||
|
smmapdfw is distributed in the hope that it will be useful, but WITHOUT
|
||||||
|
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
|
||||||
|
or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
|
||||||
|
License for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU General Public License
|
||||||
|
along with smmapdfw. If not, write to the Free Software Foundation, 59
|
||||||
|
Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
#include <assert.h>
|
||||||
|
#include <syslog.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <string.h>
|
||||||
|
|
||||||
|
#include "config.h"
|
||||||
|
#include "cfg.h"
|
||||||
|
|
||||||
|
|
||||||
|
#include "stats.h"
|
||||||
|
#include "count.h"
|
||||||
|
#include "htmalloc.h"
|
||||||
|
|
||||||
|
|
||||||
|
statCounterEntry_t *statCounterList = NULL;
|
||||||
|
unsigned int statCounterListLen = 0;
|
||||||
|
|
||||||
|
counterDef_t *addOneCounterDef(counterDef_t *counterDef, unsigned int type, const char* name) {
|
||||||
|
int counterCnt = 0;
|
||||||
|
if (counterDef != NULL) {
|
||||||
|
counterDef_t *curCounterDef;
|
||||||
|
for (curCounterDef = counterDef; curCounterDef->type != SMM_TYPE_NULL; curCounterDef++, counterCnt++);
|
||||||
|
}
|
||||||
|
counterDef_t *newCounterDef = (counterDef_t*) htrealloc(counterDef, sizeof(counterDef_t) * (counterCnt + 2));
|
||||||
|
(newCounterDef + counterCnt)->type = type;
|
||||||
|
(newCounterDef + counterCnt)->name = name;
|
||||||
|
(newCounterDef + counterCnt + 1)->type = SMM_TYPE_NULL;
|
||||||
|
(newCounterDef + counterCnt + 1)->name = NULL;
|
||||||
|
return newCounterDef;
|
||||||
|
}
|
||||||
|
|
||||||
|
statCounter_t *initStatCounter(const char *moduleName, counterDef_t *counterDefs) {
|
||||||
|
counterDef_t *curCounterDef;
|
||||||
|
unsigned i = 0;
|
||||||
|
for (curCounterDef = counterDefs; curCounterDef->type != SMM_TYPE_NULL; curCounterDef++, i++);
|
||||||
|
statCounter_t *statCounter = (statCounter_t*) htmalloc(sizeof(statCounter_t) * (i + 1));
|
||||||
|
statCounter_t *curStatCounter;
|
||||||
|
for (curCounterDef = counterDefs, curStatCounter = statCounter; curCounterDef->type != SMM_TYPE_NULL; curCounterDef++, curStatCounter++) {
|
||||||
|
curStatCounter->magic = STAT_COUNTER_MAGIC;
|
||||||
|
curStatCounter->counter = (count_t*) htmalloc(sizeof(count_t));
|
||||||
|
count_init(curStatCounter->counter);
|
||||||
|
}
|
||||||
|
curStatCounter->magic = STAT_COUNTER_MAGIC;
|
||||||
|
curStatCounter->counter = NULL;
|
||||||
|
|
||||||
|
|
||||||
|
statCounterList = (statCounterEntry_t*) htrealloc(statCounterList, sizeof(statCounterEntry_t) * (statCounterListLen + 1));
|
||||||
|
(statCounterList + statCounterListLen)->moduleName = moduleName;
|
||||||
|
(statCounterList + statCounterListLen)->counterDefs = counterDefs;
|
||||||
|
(statCounterList + statCounterListLen)->statCounters = statCounter;
|
||||||
|
statCounterListLen++;
|
||||||
|
|
||||||
|
return statCounter;
|
||||||
|
}
|
||||||
|
|
||||||
|
void destroyStatCounters() {
|
||||||
|
int i;
|
||||||
|
statCounterEntry_t *s;
|
||||||
|
for (i = 0, s = statCounterList; i < statCounterListLen; i++, s++) {
|
||||||
|
statCounter_t *ss;
|
||||||
|
for (ss = s->statCounters; ss->counter != NULL; ss++) {
|
||||||
|
free(ss->counter);
|
||||||
|
}
|
||||||
|
free(s->counterDefs);
|
||||||
|
free(s->statCounters);
|
||||||
|
}
|
||||||
|
free(statCounterList);
|
||||||
|
}
|
||||||
|
|
||||||
|
unsigned int getStatCounter(statCounter_t *statCounter, int cnt_idx) {
|
||||||
|
statCounter_t *curStatCounter = statCounter + cnt_idx;
|
||||||
|
if (curStatCounter == NULL || curStatCounter->magic != STAT_COUNTER_MAGIC) {
|
||||||
|
syslog(LOG_CRIT, "STAT_COUNTER_MAGIC not matching in getStatCounter!!!");
|
||||||
|
return 0;
|
||||||
|
} else {
|
||||||
|
return count_get(curStatCounter->counter);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void incStatCounter(statCounter_t *statCounter, int cnt_idx) {
|
||||||
|
statCounter_t *curStatCounter = statCounter + cnt_idx;
|
||||||
|
if (curStatCounter == NULL || curStatCounter->magic != STAT_COUNTER_MAGIC) {
|
||||||
|
syslog(LOG_CRIT, "STAT_COUNTER_MAGIC not matching in incStatCounter!!!");
|
||||||
|
} else {
|
||||||
|
count_inc(curStatCounter->counter);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void decStatCounter(statCounter_t *statCounter, int cnt_idx) {
|
||||||
|
statCounter_t *curStatCounter = statCounter + cnt_idx;
|
||||||
|
if (curStatCounter == NULL || curStatCounter->magic != STAT_COUNTER_MAGIC) {
|
||||||
|
syslog(LOG_CRIT, "STAT_COUNTER_MAGIC not matching in decStatCounter!!!");
|
||||||
|
} else {
|
||||||
|
count_dec(curStatCounter->counter);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#define SYSLOG_BUF_SIZE 1024
|
||||||
|
void outputStats(int stdout_nice, int syslog_nice) {
|
||||||
|
char syslogBuf[SYSLOG_BUF_SIZE];
|
||||||
|
int remainsSyslogBufLen = SYSLOG_BUF_SIZE - 1;
|
||||||
|
|
||||||
|
statCounterEntry_t *curStatCounterEntry;
|
||||||
|
unsigned int i;
|
||||||
|
for (curStatCounterEntry = statCounterList, i = 0; i < statCounterListLen; curStatCounterEntry++, i++) {
|
||||||
|
if (stdout_nice == 1)
|
||||||
|
printf("%s: ", curStatCounterEntry->moduleName);
|
||||||
|
else if (stdout_nice == 2)
|
||||||
|
printf("moduleName: %s\n", curStatCounterEntry->moduleName);
|
||||||
|
if (syslog_nice == 1) {
|
||||||
|
snprintf(syslogBuf, remainsSyslogBufLen, "%s: ", curStatCounterEntry->moduleName);
|
||||||
|
remainsSyslogBufLen -= strlen(syslogBuf);
|
||||||
|
} else if (syslog_nice == 2) {
|
||||||
|
snprintf(syslogBuf, remainsSyslogBufLen, "moduleName: %s\n", curStatCounterEntry->moduleName);
|
||||||
|
remainsSyslogBufLen -= strlen(syslogBuf);
|
||||||
|
}
|
||||||
|
statCounter_t *curStatCounter;
|
||||||
|
counterDef_t *curCounterDef;
|
||||||
|
for (curStatCounter = curStatCounterEntry->statCounters, curCounterDef = curStatCounterEntry->counterDefs;
|
||||||
|
curStatCounter->counter != NULL;
|
||||||
|
curStatCounter++, curCounterDef++) {
|
||||||
|
if (stdout_nice == 1)
|
||||||
|
printf("%d ", count_get(curStatCounter->counter));
|
||||||
|
else if (stdout_nice == 2)
|
||||||
|
printf(" %s: %d\n", curCounterDef->name, count_get(curStatCounter->counter));
|
||||||
|
if (syslog_nice == 1) {
|
||||||
|
snprintf(syslogBuf, remainsSyslogBufLen, "%d ", count_get(curStatCounter->counter));
|
||||||
|
remainsSyslogBufLen -= strlen(syslogBuf);
|
||||||
|
} else if (syslog_nice == 2) {
|
||||||
|
snprintf(syslogBuf, remainsSyslogBufLen, " %s: %d\n", curCounterDef->name, count_get(curStatCounter->counter));
|
||||||
|
remainsSyslogBufLen -= strlen(syslogBuf);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (stdout_nice == 1 || stdout_nice == 2)
|
||||||
|
printf("\n");
|
||||||
|
if (syslog_nice == 1 || syslog_nice == 2)
|
||||||
|
syslog(LOG_INFO, syslogBuf);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
59
smmapdfw/libsmmapdfw/stats.h
Normal file
59
smmapdfw/libsmmapdfw/stats.h
Normal file
@ -0,0 +1,59 @@
|
|||||||
|
/*
|
||||||
|
Copyright (C) 2004, Wolfgang Hottgenroth
|
||||||
|
|
||||||
|
This file is part of smmapdfw.
|
||||||
|
|
||||||
|
smmapdfw is free software; you can redistribute it and/or modify it
|
||||||
|
under the terms of the GNU General Public License as published by
|
||||||
|
the Free Software Foundation; either version 2 of the License, or
|
||||||
|
(at your option) any later version.
|
||||||
|
|
||||||
|
smmapdfw is distributed in the hope that it will be useful, but WITHOUT
|
||||||
|
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
|
||||||
|
or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
|
||||||
|
License for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU General Public License
|
||||||
|
along with smmapdfw. If not, write to the Free Software Foundation, 59
|
||||||
|
Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
#ifndef _STATS_H_
|
||||||
|
#define _STATS_H_
|
||||||
|
|
||||||
|
#include "smmapd.h"
|
||||||
|
#include "count.h"
|
||||||
|
#include "cfg.h"
|
||||||
|
|
||||||
|
|
||||||
|
#define SMM_TYPE_NULL 0
|
||||||
|
#define SMM_TYPE_COUNTER 1
|
||||||
|
#define SMM_TYPE_GAUGE 2
|
||||||
|
|
||||||
|
#define STAT_COUNTER_MAGIC 0x27061972
|
||||||
|
|
||||||
|
typedef struct counterDef_s {
|
||||||
|
unsigned int type;
|
||||||
|
const char *name;
|
||||||
|
} counterDef_t;
|
||||||
|
|
||||||
|
typedef struct statCounter_s {
|
||||||
|
unsigned int magic;
|
||||||
|
count_t *counter;
|
||||||
|
} statCounter_t;
|
||||||
|
|
||||||
|
typedef struct statCounterEntry_s {
|
||||||
|
const char *moduleName;
|
||||||
|
counterDef_t *counterDefs;
|
||||||
|
statCounter_t *statCounters;
|
||||||
|
} statCounterEntry_t;
|
||||||
|
|
||||||
|
counterDef_t *addOneCounterDef(counterDef_t *counterDef, unsigned int type, const char* name);
|
||||||
|
void destroyStatCounter();
|
||||||
|
statCounter_t *initStatCounter(const char *moduleName, counterDef_t *counterDefs);
|
||||||
|
unsigned int getStatCounter(statCounter_t *statCounter, int cnt_idx);
|
||||||
|
void incStatCounter(statCounter_t *statCounter, int cnt_idx);
|
||||||
|
void decStatCounter(statCounter_t *statCounter, int cnt_idx);
|
||||||
|
void outputStats(int stdout_nice, int syslog_nice);
|
||||||
|
#endif /* _STATS_H_ */
|
@ -1,3 +1,25 @@
|
|||||||
|
/*
|
||||||
|
Copyright (C) 2004, Wolfgang Hottgenroth
|
||||||
|
|
||||||
|
This file is part of smmapdfw.
|
||||||
|
|
||||||
|
smmapdfw is free software; you can redistribute it and/or modify it
|
||||||
|
under the terms of the GNU General Public License as published by
|
||||||
|
the Free Software Foundation; either version 2 of the License, or
|
||||||
|
(at your option) any later version.
|
||||||
|
|
||||||
|
smmapdfw is distributed in the hope that it will be useful, but WITHOUT
|
||||||
|
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
|
||||||
|
or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
|
||||||
|
License for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU General Public License
|
||||||
|
along with smmapdfw. If not, write to the Free Software Foundation, 59
|
||||||
|
Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#ifndef _SUNOS_COMP_H_
|
#ifndef _SUNOS_COMP_H_
|
||||||
#define _SUNOS_COMP_H_
|
#define _SUNOS_COMP_H_
|
||||||
|
|
||||||
|
1271
smmapdfw/ltmain.sh
1271
smmapdfw/ltmain.sh
File diff suppressed because it is too large
Load Diff
@ -1,3 +1,23 @@
|
|||||||
|
/*
|
||||||
|
Copyright (C) 2004, Wolfgang Hottgenroth
|
||||||
|
|
||||||
|
This file is part of smmapdfw.
|
||||||
|
|
||||||
|
smmapdfw is free software; you can redistribute it and/or modify it
|
||||||
|
under the terms of the GNU General Public License as published by
|
||||||
|
the Free Software Foundation; either version 2 of the License, or
|
||||||
|
(at your option) any later version.
|
||||||
|
|
||||||
|
smmapdfw is distributed in the hope that it will be useful, but WITHOUT
|
||||||
|
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
|
||||||
|
or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
|
||||||
|
License for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU General Public License
|
||||||
|
along with smmapdfw. If not, write to the Free Software Foundation, 59
|
||||||
|
Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||||
|
*/
|
||||||
|
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <syslog.h>
|
#include <syslog.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
@ -7,6 +27,7 @@
|
|||||||
|
|
||||||
#include "containers_public.h"
|
#include "containers_public.h"
|
||||||
#include "smmapd.h"
|
#include "smmapd.h"
|
||||||
|
#include "htmalloc.h"
|
||||||
|
|
||||||
|
|
||||||
#define CFG_LUALIB_NAMES "load"
|
#define CFG_LUALIB_NAMES "load"
|
||||||
@ -67,7 +88,7 @@ int lua_init(cfgl_t *cfg, void **handle) {
|
|||||||
const luaL_reg *lualib;
|
const luaL_reg *lualib;
|
||||||
cfgl_t *cfgl_iter;
|
cfgl_t *cfgl_iter;
|
||||||
|
|
||||||
lch = (lua_container_handle_t*) malloc(sizeof(lua_container_handle_t));
|
lch = (lua_container_handle_t*) htmalloc(sizeof(lua_container_handle_t));
|
||||||
lch->cfg = cfg;
|
lch->cfg = cfg;
|
||||||
|
|
||||||
lua_filename = findcfgl(lch->cfg, CFG_LUA_FILENAME);
|
lua_filename = findcfgl(lch->cfg, CFG_LUA_FILENAME);
|
||||||
@ -145,7 +166,7 @@ int lua_destroy(void *handle) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
int lua_work_setup(void *handle, void **work_handle) {
|
int lua_work_setup(void *handle, void **work_handle) {
|
||||||
lua_worker_handle_t *lwh = (lua_worker_handle_t*)malloc(sizeof(lua_worker_handle_t));
|
lua_worker_handle_t *lwh = (lua_worker_handle_t*)htmalloc(sizeof(lua_worker_handle_t));
|
||||||
lwh->lch = (lua_container_handle_t*) handle;
|
lwh->lch = (lua_container_handle_t*) handle;
|
||||||
|
|
||||||
lwh->l = lua_newthread(lwh->lch->l);
|
lwh->l = lua_newthread(lwh->lch->l);
|
||||||
|
2
smmapdfw/m4/Makefile.am
Normal file
2
smmapdfw/m4/Makefile.am
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
data_DATA = cyruscheck.m4 verifysender.m4
|
||||||
|
EXTRA_DIST = cyruscheck.m4 verifysender.m4
|
350
smmapdfw/m4/Makefile.in
Normal file
350
smmapdfw/m4/Makefile.in
Normal file
@ -0,0 +1,350 @@
|
|||||||
|
# Makefile.in generated by automake 1.9.6 from Makefile.am.
|
||||||
|
# @configure_input@
|
||||||
|
|
||||||
|
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
|
||||||
|
# 2003, 2004, 2005 Free Software Foundation, Inc.
|
||||||
|
# This Makefile.in is free software; the Free Software Foundation
|
||||||
|
# gives unlimited permission to copy and/or distribute it,
|
||||||
|
# with or without modifications, as long as this notice is preserved.
|
||||||
|
|
||||||
|
# This program is distributed in the hope that it will be useful,
|
||||||
|
# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
|
||||||
|
# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
|
||||||
|
# PARTICULAR PURPOSE.
|
||||||
|
|
||||||
|
@SET_MAKE@
|
||||||
|
|
||||||
|
srcdir = @srcdir@
|
||||||
|
top_srcdir = @top_srcdir@
|
||||||
|
VPATH = @srcdir@
|
||||||
|
pkgdatadir = $(datadir)/@PACKAGE@
|
||||||
|
pkglibdir = $(libdir)/@PACKAGE@
|
||||||
|
pkgincludedir = $(includedir)/@PACKAGE@
|
||||||
|
top_builddir = ..
|
||||||
|
am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
|
||||||
|
INSTALL = @INSTALL@
|
||||||
|
install_sh_DATA = $(install_sh) -c -m 644
|
||||||
|
install_sh_PROGRAM = $(install_sh) -c
|
||||||
|
install_sh_SCRIPT = $(install_sh) -c
|
||||||
|
INSTALL_HEADER = $(INSTALL_DATA)
|
||||||
|
transform = $(program_transform_name)
|
||||||
|
NORMAL_INSTALL = :
|
||||||
|
PRE_INSTALL = :
|
||||||
|
POST_INSTALL = :
|
||||||
|
NORMAL_UNINSTALL = :
|
||||||
|
PRE_UNINSTALL = :
|
||||||
|
POST_UNINSTALL = :
|
||||||
|
build_triplet = @build@
|
||||||
|
host_triplet = @host@
|
||||||
|
subdir = m4
|
||||||
|
DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
|
||||||
|
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
|
||||||
|
am__aclocal_m4_deps = $(top_srcdir)/configure.ac
|
||||||
|
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
|
||||||
|
$(ACLOCAL_M4)
|
||||||
|
mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
|
||||||
|
CONFIG_HEADER = $(top_builddir)/config.h
|
||||||
|
CONFIG_CLEAN_FILES =
|
||||||
|
SOURCES =
|
||||||
|
DIST_SOURCES =
|
||||||
|
am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
|
||||||
|
am__vpath_adj = case $$p in \
|
||||||
|
$(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
|
||||||
|
*) f=$$p;; \
|
||||||
|
esac;
|
||||||
|
am__strip_dir = `echo $$p | sed -e 's|^.*/||'`;
|
||||||
|
am__installdirs = "$(DESTDIR)$(datadir)"
|
||||||
|
dataDATA_INSTALL = $(INSTALL_DATA)
|
||||||
|
DATA = $(data_DATA)
|
||||||
|
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
|
||||||
|
ACLOCAL = @ACLOCAL@
|
||||||
|
AMDEP_FALSE = @AMDEP_FALSE@
|
||||||
|
AMDEP_TRUE = @AMDEP_TRUE@
|
||||||
|
AMTAR = @AMTAR@
|
||||||
|
AR = @AR@
|
||||||
|
AUTOCONF = @AUTOCONF@
|
||||||
|
AUTOHEADER = @AUTOHEADER@
|
||||||
|
AUTOMAKE = @AUTOMAKE@
|
||||||
|
AWK = @AWK@
|
||||||
|
BDB_LIBS = @BDB_LIBS@
|
||||||
|
CC = @CC@
|
||||||
|
CCDEPMODE = @CCDEPMODE@
|
||||||
|
CFLAGS = @CFLAGS@
|
||||||
|
CPP = @CPP@
|
||||||
|
CPPFLAGS = @CPPFLAGS@
|
||||||
|
CXX = @CXX@
|
||||||
|
CXXCPP = @CXXCPP@
|
||||||
|
CXXDEPMODE = @CXXDEPMODE@
|
||||||
|
CXXFLAGS = @CXXFLAGS@
|
||||||
|
CYGPATH_W = @CYGPATH_W@
|
||||||
|
DEFS = @DEFS@
|
||||||
|
DEPDIR = @DEPDIR@
|
||||||
|
ECHO = @ECHO@
|
||||||
|
ECHO_C = @ECHO_C@
|
||||||
|
ECHO_N = @ECHO_N@
|
||||||
|
ECHO_T = @ECHO_T@
|
||||||
|
EGREP = @EGREP@
|
||||||
|
EXEEXT = @EXEEXT@
|
||||||
|
F77 = @F77@
|
||||||
|
FFLAGS = @FFLAGS@
|
||||||
|
GREP = @GREP@
|
||||||
|
INSTALL_DATA = @INSTALL_DATA@
|
||||||
|
INSTALL_PROGRAM = @INSTALL_PROGRAM@
|
||||||
|
INSTALL_SCRIPT = @INSTALL_SCRIPT@
|
||||||
|
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
|
||||||
|
LDFLAGS = @LDFLAGS@
|
||||||
|
LIBOBJS = @LIBOBJS@
|
||||||
|
LIBS = @LIBS@
|
||||||
|
LIBTOOL = @LIBTOOL@
|
||||||
|
LN_S = @LN_S@
|
||||||
|
LTLIBOBJS = @LTLIBOBJS@
|
||||||
|
MAINT = @MAINT@
|
||||||
|
MAINTAINER_MODE_FALSE = @MAINTAINER_MODE_FALSE@
|
||||||
|
MAINTAINER_MODE_TRUE = @MAINTAINER_MODE_TRUE@
|
||||||
|
MAKEINFO = @MAKEINFO@
|
||||||
|
OBJEXT = @OBJEXT@
|
||||||
|
PACKAGE = @PACKAGE@
|
||||||
|
PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
|
||||||
|
PACKAGE_NAME = @PACKAGE_NAME@
|
||||||
|
PACKAGE_STRING = @PACKAGE_STRING@
|
||||||
|
PACKAGE_TARNAME = @PACKAGE_TARNAME@
|
||||||
|
PACKAGE_VERSION = @PACKAGE_VERSION@
|
||||||
|
PATH_SEPARATOR = @PATH_SEPARATOR@
|
||||||
|
RANLIB = @RANLIB@
|
||||||
|
SED = @SED@
|
||||||
|
SET_MAKE = @SET_MAKE@
|
||||||
|
SHELL = @SHELL@
|
||||||
|
STRIP = @STRIP@
|
||||||
|
VERSION = @VERSION@
|
||||||
|
ac_ct_CC = @ac_ct_CC@
|
||||||
|
ac_ct_CXX = @ac_ct_CXX@
|
||||||
|
ac_ct_F77 = @ac_ct_F77@
|
||||||
|
am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
|
||||||
|
am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
|
||||||
|
am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@
|
||||||
|
am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@
|
||||||
|
am__include = @am__include@
|
||||||
|
am__leading_dot = @am__leading_dot@
|
||||||
|
am__quote = @am__quote@
|
||||||
|
am__tar = @am__tar@
|
||||||
|
am__untar = @am__untar@
|
||||||
|
bindir = @bindir@
|
||||||
|
build = @build@
|
||||||
|
build_alias = @build_alias@
|
||||||
|
build_cpu = @build_cpu@
|
||||||
|
build_os = @build_os@
|
||||||
|
build_vendor = @build_vendor@
|
||||||
|
datadir = @datadir@
|
||||||
|
datarootdir = @datarootdir@
|
||||||
|
docdir = @docdir@
|
||||||
|
dvidir = @dvidir@
|
||||||
|
exec_prefix = @exec_prefix@
|
||||||
|
host = @host@
|
||||||
|
host_alias = @host_alias@
|
||||||
|
host_cpu = @host_cpu@
|
||||||
|
host_os = @host_os@
|
||||||
|
host_vendor = @host_vendor@
|
||||||
|
htmldir = @htmldir@
|
||||||
|
includedir = @includedir@
|
||||||
|
infodir = @infodir@
|
||||||
|
install_sh = @install_sh@
|
||||||
|
libdir = @libdir@
|
||||||
|
libexecdir = @libexecdir@
|
||||||
|
localedir = @localedir@
|
||||||
|
localstatedir = @localstatedir@
|
||||||
|
mandir = @mandir@
|
||||||
|
mkdir_p = @mkdir_p@
|
||||||
|
oldincludedir = @oldincludedir@
|
||||||
|
pdfdir = @pdfdir@
|
||||||
|
prefix = @prefix@
|
||||||
|
program_transform_name = @program_transform_name@
|
||||||
|
psdir = @psdir@
|
||||||
|
sbindir = @sbindir@
|
||||||
|
sharedstatedir = @sharedstatedir@
|
||||||
|
sysconfdir = @sysconfdir@
|
||||||
|
target_alias = @target_alias@
|
||||||
|
data_DATA = cyruscheck.m4 verifysender.m4
|
||||||
|
EXTRA_DIST = cyruscheck.m4 verifysender.m4
|
||||||
|
all: all-am
|
||||||
|
|
||||||
|
.SUFFIXES:
|
||||||
|
$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps)
|
||||||
|
@for dep in $?; do \
|
||||||
|
case '$(am__configure_deps)' in \
|
||||||
|
*$$dep*) \
|
||||||
|
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
|
||||||
|
&& exit 0; \
|
||||||
|
exit 1;; \
|
||||||
|
esac; \
|
||||||
|
done; \
|
||||||
|
echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu m4/Makefile'; \
|
||||||
|
cd $(top_srcdir) && \
|
||||||
|
$(AUTOMAKE) --gnu m4/Makefile
|
||||||
|
.PRECIOUS: Makefile
|
||||||
|
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
|
||||||
|
@case '$?' in \
|
||||||
|
*config.status*) \
|
||||||
|
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
|
||||||
|
*) \
|
||||||
|
echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
|
||||||
|
cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
|
||||||
|
esac;
|
||||||
|
|
||||||
|
$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
|
||||||
|
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
|
||||||
|
|
||||||
|
$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
|
||||||
|
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
|
||||||
|
$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
|
||||||
|
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
|
||||||
|
|
||||||
|
mostlyclean-libtool:
|
||||||
|
-rm -f *.lo
|
||||||
|
|
||||||
|
clean-libtool:
|
||||||
|
-rm -rf .libs _libs
|
||||||
|
|
||||||
|
distclean-libtool:
|
||||||
|
-rm -f libtool
|
||||||
|
uninstall-info-am:
|
||||||
|
install-dataDATA: $(data_DATA)
|
||||||
|
@$(NORMAL_INSTALL)
|
||||||
|
test -z "$(datadir)" || $(mkdir_p) "$(DESTDIR)$(datadir)"
|
||||||
|
@list='$(data_DATA)'; for p in $$list; do \
|
||||||
|
if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
|
||||||
|
f=$(am__strip_dir) \
|
||||||
|
echo " $(dataDATA_INSTALL) '$$d$$p' '$(DESTDIR)$(datadir)/$$f'"; \
|
||||||
|
$(dataDATA_INSTALL) "$$d$$p" "$(DESTDIR)$(datadir)/$$f"; \
|
||||||
|
done
|
||||||
|
|
||||||
|
uninstall-dataDATA:
|
||||||
|
@$(NORMAL_UNINSTALL)
|
||||||
|
@list='$(data_DATA)'; for p in $$list; do \
|
||||||
|
f=$(am__strip_dir) \
|
||||||
|
echo " rm -f '$(DESTDIR)$(datadir)/$$f'"; \
|
||||||
|
rm -f "$(DESTDIR)$(datadir)/$$f"; \
|
||||||
|
done
|
||||||
|
tags: TAGS
|
||||||
|
TAGS:
|
||||||
|
|
||||||
|
ctags: CTAGS
|
||||||
|
CTAGS:
|
||||||
|
|
||||||
|
|
||||||
|
distdir: $(DISTFILES)
|
||||||
|
@srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
|
||||||
|
topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \
|
||||||
|
list='$(DISTFILES)'; for file in $$list; do \
|
||||||
|
case $$file in \
|
||||||
|
$(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \
|
||||||
|
$(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \
|
||||||
|
esac; \
|
||||||
|
if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
|
||||||
|
dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
|
||||||
|
if test "$$dir" != "$$file" && test "$$dir" != "."; then \
|
||||||
|
dir="/$$dir"; \
|
||||||
|
$(mkdir_p) "$(distdir)$$dir"; \
|
||||||
|
else \
|
||||||
|
dir=''; \
|
||||||
|
fi; \
|
||||||
|
if test -d $$d/$$file; then \
|
||||||
|
if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
|
||||||
|
cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
|
||||||
|
fi; \
|
||||||
|
cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
|
||||||
|
else \
|
||||||
|
test -f $(distdir)/$$file \
|
||||||
|
|| cp -p $$d/$$file $(distdir)/$$file \
|
||||||
|
|| exit 1; \
|
||||||
|
fi; \
|
||||||
|
done
|
||||||
|
check-am: all-am
|
||||||
|
check: check-am
|
||||||
|
all-am: Makefile $(DATA)
|
||||||
|
installdirs:
|
||||||
|
for dir in "$(DESTDIR)$(datadir)"; do \
|
||||||
|
test -z "$$dir" || $(mkdir_p) "$$dir"; \
|
||||||
|
done
|
||||||
|
install: install-am
|
||||||
|
install-exec: install-exec-am
|
||||||
|
install-data: install-data-am
|
||||||
|
uninstall: uninstall-am
|
||||||
|
|
||||||
|
install-am: all-am
|
||||||
|
@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
|
||||||
|
|
||||||
|
installcheck: installcheck-am
|
||||||
|
install-strip:
|
||||||
|
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
|
||||||
|
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
|
||||||
|
`test -z '$(STRIP)' || \
|
||||||
|
echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
|
||||||
|
mostlyclean-generic:
|
||||||
|
|
||||||
|
clean-generic:
|
||||||
|
|
||||||
|
distclean-generic:
|
||||||
|
-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
|
||||||
|
|
||||||
|
maintainer-clean-generic:
|
||||||
|
@echo "This command is intended for maintainers to use"
|
||||||
|
@echo "it deletes files that may require special tools to rebuild."
|
||||||
|
clean: clean-am
|
||||||
|
|
||||||
|
clean-am: clean-generic clean-libtool mostlyclean-am
|
||||||
|
|
||||||
|
distclean: distclean-am
|
||||||
|
-rm -f Makefile
|
||||||
|
distclean-am: clean-am distclean-generic distclean-libtool
|
||||||
|
|
||||||
|
dvi: dvi-am
|
||||||
|
|
||||||
|
dvi-am:
|
||||||
|
|
||||||
|
html: html-am
|
||||||
|
|
||||||
|
info: info-am
|
||||||
|
|
||||||
|
info-am:
|
||||||
|
|
||||||
|
install-data-am: install-dataDATA
|
||||||
|
|
||||||
|
install-exec-am:
|
||||||
|
|
||||||
|
install-info: install-info-am
|
||||||
|
|
||||||
|
install-man:
|
||||||
|
|
||||||
|
installcheck-am:
|
||||||
|
|
||||||
|
maintainer-clean: maintainer-clean-am
|
||||||
|
-rm -f Makefile
|
||||||
|
maintainer-clean-am: distclean-am maintainer-clean-generic
|
||||||
|
|
||||||
|
mostlyclean: mostlyclean-am
|
||||||
|
|
||||||
|
mostlyclean-am: mostlyclean-generic mostlyclean-libtool
|
||||||
|
|
||||||
|
pdf: pdf-am
|
||||||
|
|
||||||
|
pdf-am:
|
||||||
|
|
||||||
|
ps: ps-am
|
||||||
|
|
||||||
|
ps-am:
|
||||||
|
|
||||||
|
uninstall-am: uninstall-dataDATA uninstall-info-am
|
||||||
|
|
||||||
|
.PHONY: all all-am check check-am clean clean-generic clean-libtool \
|
||||||
|
distclean distclean-generic distclean-libtool distdir dvi \
|
||||||
|
dvi-am html html-am info info-am install install-am \
|
||||||
|
install-data install-data-am install-dataDATA install-exec \
|
||||||
|
install-exec-am install-info install-info-am install-man \
|
||||||
|
install-strip installcheck installcheck-am installdirs \
|
||||||
|
maintainer-clean maintainer-clean-generic mostlyclean \
|
||||||
|
mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
|
||||||
|
uninstall uninstall-am uninstall-dataDATA uninstall-info-am
|
||||||
|
|
||||||
|
# Tell versions [3.59,3.63) of GNU make to not export all variables.
|
||||||
|
# Otherwise a system limit (for SysV at least) may be exceeded.
|
||||||
|
.NOEXPORT:
|
@ -1,3 +1,21 @@
|
|||||||
|
dnl Copyright (C) 2004, Wolfgang Hottgenroth
|
||||||
|
dnl
|
||||||
|
dnl This file is part of smmapdfw.
|
||||||
|
dnl
|
||||||
|
dnl smmapdfw is free software; you can redistribute it and/or modify it
|
||||||
|
dnl under the terms of the GNU General Public License as published by
|
||||||
|
dnl the Free Software Foundation; either version 2 of the License, or
|
||||||
|
dnl (at your option) any later version.
|
||||||
|
dnl
|
||||||
|
dnl smmapdfw is distributed in the hope that it will be useful, but WITHOUT
|
||||||
|
dnl ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
|
||||||
|
dnl or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
|
||||||
|
dnl License for more details.
|
||||||
|
dnl
|
||||||
|
dnl You should have received a copy of the GNU General Public License
|
||||||
|
dnl along with smmapdfw. If not, write to the Free Software Foundation, 59
|
||||||
|
dnl Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||||
|
|
||||||
VERSIONID(`$Id$')
|
VERSIONID(`$Id$')
|
||||||
|
|
||||||
|
|
||||||
@ -42,7 +60,10 @@ Scc
|
|||||||
R< $+ > < $+ > $: < $(cyruscheck $1 $2 $:none $) >
|
R< $+ > < $+ > $: < $(cyruscheck $1 $2 $:none $) >
|
||||||
|
|
||||||
Scyruscheck
|
Scyruscheck
|
||||||
R< $+ > < $+ > $: < $1 > < $2 > < $(cyruscheck $1 $2 $:none $) >
|
R< $+ > < $+ > $: < $1 > < $2 > < $&f >
|
||||||
|
dnl do not perform check when sender is not set - so only for the recipient
|
||||||
|
R< $+ > < $+ > < > $@ < ok >
|
||||||
|
R< $+ > < $+ > < $+ > $: < $1 > < $2 > < $(cyruscheck $1 $2 $:none $) >
|
||||||
ifelse(_dummy_, `dummy', `dnl
|
ifelse(_dummy_, `dummy', `dnl
|
||||||
dnl dummy
|
dnl dummy
|
||||||
R< $+ > < $+ > < $+ > $@ < ok > $(cht_logger $1 -- $2 --- $3 $)', `dnl
|
R< $+ > < $+ > < $+ > $@ < ok > $(cht_logger $1 -- $2 --- $3 $)', `dnl
|
||||||
@ -51,4 +72,5 @@ R< $+ > < $+ > < $+ > $: < $3 >
|
|||||||
R< <OK> $* > $@ < ok >
|
R< <OK> $* > $@ < ok >
|
||||||
R< <NOK> $* > $#error $@ 5.0.0 $: "500 Depot returns error: " $1
|
R< <NOK> $* > $#error $@ 5.0.0 $: "500 Depot returns error: " $1
|
||||||
R< <TNOK> $* > $#error $@ 4.0.0 $: "400 Depot returns error: " $1
|
R< <TNOK> $* > $#error $@ 4.0.0 $: "400 Depot returns error: " $1
|
||||||
|
R< $* <temp> > $#error $@ 4.0.0 $: "400 Currently not verification possible, try again later"
|
||||||
R$* $#error $@ 4.7.1 $: "451 Local configuration error <cc1>"')
|
R$* $#error $@ 4.7.1 $: "451 Local configuration error <cc1>"')
|
||||||
|
@ -1,3 +1,21 @@
|
|||||||
|
dnl Copyright (C) 2004, Wolfgang Hottgenroth
|
||||||
|
dnl
|
||||||
|
dnl This file is part of smmapdfw.
|
||||||
|
dnl
|
||||||
|
dnl smmapdfw is free software; you can redistribute it and/or modify it
|
||||||
|
dnl under the terms of the GNU General Public License as published by
|
||||||
|
dnl the Free Software Foundation; either version 2 of the License, or
|
||||||
|
dnl (at your option) any later version.
|
||||||
|
dnl
|
||||||
|
dnl smmapdfw is distributed in the hope that it will be useful, but WITHOUT
|
||||||
|
dnl ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
|
||||||
|
dnl or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
|
||||||
|
dnl License for more details.
|
||||||
|
dnl
|
||||||
|
dnl You should have received a copy of the GNU General Public License
|
||||||
|
dnl along with smmapdfw. If not, write to the Free Software Foundation, 59
|
||||||
|
dnl Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||||
|
|
||||||
VERSIONID(`$Id$')
|
VERSIONID(`$Id$')
|
||||||
|
|
||||||
|
|
||||||
@ -75,6 +93,7 @@ Kverifier_helper _VERIFIER_WHITELIST_', `dnl
|
|||||||
Kverifier_helper _VERIFIER_BLACKLIST_')
|
Kverifier_helper _VERIFIER_BLACKLIST_')
|
||||||
Kvht_logger syslog
|
Kvht_logger syslog
|
||||||
C{verifier_fix_white} postmaster
|
C{verifier_fix_white} postmaster
|
||||||
|
Kvbestmx bestmx
|
||||||
|
|
||||||
LOCAL_RULESETS
|
LOCAL_RULESETS
|
||||||
# This ruleset can be used to test the verifier in -bt mode
|
# This ruleset can be used to test the verifier in -bt mode
|
||||||
@ -84,7 +103,9 @@ R$+ $: < $(verifier $1 $:none $) >
|
|||||||
Sverifier0
|
Sverifier0
|
||||||
R< $={verifier_fix_white} @ $+ > $@ < ok >
|
R< $={verifier_fix_white} @ $+ > $@ < ok >
|
||||||
R< $+ @ $+ > $: < $2 > < $(verifier_helper $1 @ $2 $: $) >
|
R< $+ @ $+ > $: < $2 > < $(verifier_helper $1 @ $2 $: $) >
|
||||||
R< $+ > < > $: < $(verifier_helper $1 $: $) >
|
R< $+ > < > $: < $1 > < $(verifier_helper $1 $: $) >
|
||||||
|
R< $+ > < > $: < $1 > < $(vbestmx $1 $) >
|
||||||
|
R< $+ > < $+ . > $: < $(verifier_helper "mx:" $2 "" $: $) >
|
||||||
ifelse(_mode_, `white', `dnl
|
ifelse(_mode_, `white', `dnl
|
||||||
dnl if we found nothing in the whitelist, we continue with checking
|
dnl if we found nothing in the whitelist, we continue with checking
|
||||||
R< > $@ < cont >
|
R< > $@ < cont >
|
||||||
|
5
smmapdfw/rateconn_worker/Makefile.am
Normal file
5
smmapdfw/rateconn_worker/Makefile.am
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
lib_LTLIBRARIES = librateconn_worker.la
|
||||||
|
librateconn_worker_la_SOURCES = rateconn_worker.c testplusplus.C rateconn.C
|
||||||
|
librateconn_worker_la_LIBADD = ../libsmmapdfw/libsmmapdfw.la
|
||||||
|
|
||||||
|
INCLUDES = -I../libsmmapdfw
|
492
smmapdfw/rateconn_worker/Makefile.in
Normal file
492
smmapdfw/rateconn_worker/Makefile.in
Normal file
@ -0,0 +1,492 @@
|
|||||||
|
# Makefile.in generated by automake 1.9.6 from Makefile.am.
|
||||||
|
# @configure_input@
|
||||||
|
|
||||||
|
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
|
||||||
|
# 2003, 2004, 2005 Free Software Foundation, Inc.
|
||||||
|
# This Makefile.in is free software; the Free Software Foundation
|
||||||
|
# gives unlimited permission to copy and/or distribute it,
|
||||||
|
# with or without modifications, as long as this notice is preserved.
|
||||||
|
|
||||||
|
# This program is distributed in the hope that it will be useful,
|
||||||
|
# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
|
||||||
|
# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
|
||||||
|
# PARTICULAR PURPOSE.
|
||||||
|
|
||||||
|
@SET_MAKE@
|
||||||
|
|
||||||
|
srcdir = @srcdir@
|
||||||
|
top_srcdir = @top_srcdir@
|
||||||
|
VPATH = @srcdir@
|
||||||
|
pkgdatadir = $(datadir)/@PACKAGE@
|
||||||
|
pkglibdir = $(libdir)/@PACKAGE@
|
||||||
|
pkgincludedir = $(includedir)/@PACKAGE@
|
||||||
|
top_builddir = ..
|
||||||
|
am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
|
||||||
|
INSTALL = @INSTALL@
|
||||||
|
install_sh_DATA = $(install_sh) -c -m 644
|
||||||
|
install_sh_PROGRAM = $(install_sh) -c
|
||||||
|
install_sh_SCRIPT = $(install_sh) -c
|
||||||
|
INSTALL_HEADER = $(INSTALL_DATA)
|
||||||
|
transform = $(program_transform_name)
|
||||||
|
NORMAL_INSTALL = :
|
||||||
|
PRE_INSTALL = :
|
||||||
|
POST_INSTALL = :
|
||||||
|
NORMAL_UNINSTALL = :
|
||||||
|
PRE_UNINSTALL = :
|
||||||
|
POST_UNINSTALL = :
|
||||||
|
build_triplet = @build@
|
||||||
|
host_triplet = @host@
|
||||||
|
subdir = rateconn_worker
|
||||||
|
DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
|
||||||
|
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
|
||||||
|
am__aclocal_m4_deps = $(top_srcdir)/configure.ac
|
||||||
|
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
|
||||||
|
$(ACLOCAL_M4)
|
||||||
|
mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
|
||||||
|
CONFIG_HEADER = $(top_builddir)/config.h
|
||||||
|
CONFIG_CLEAN_FILES =
|
||||||
|
am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
|
||||||
|
am__vpath_adj = case $$p in \
|
||||||
|
$(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
|
||||||
|
*) f=$$p;; \
|
||||||
|
esac;
|
||||||
|
am__strip_dir = `echo $$p | sed -e 's|^.*/||'`;
|
||||||
|
am__installdirs = "$(DESTDIR)$(libdir)"
|
||||||
|
libLTLIBRARIES_INSTALL = $(INSTALL)
|
||||||
|
LTLIBRARIES = $(lib_LTLIBRARIES)
|
||||||
|
librateconn_worker_la_DEPENDENCIES = ../libsmmapdfw/libsmmapdfw.la
|
||||||
|
am_librateconn_worker_la_OBJECTS = rateconn_worker.lo testplusplus.lo \
|
||||||
|
rateconn.lo
|
||||||
|
librateconn_worker_la_OBJECTS = $(am_librateconn_worker_la_OBJECTS)
|
||||||
|
DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir)
|
||||||
|
depcomp = $(SHELL) $(top_srcdir)/depcomp
|
||||||
|
am__depfiles_maybe = depfiles
|
||||||
|
CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
|
||||||
|
$(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS)
|
||||||
|
LTCXXCOMPILE = $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) \
|
||||||
|
$(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
|
||||||
|
$(AM_CXXFLAGS) $(CXXFLAGS)
|
||||||
|
CXXLD = $(CXX)
|
||||||
|
CXXLINK = $(LIBTOOL) --tag=CXX --mode=link $(CXXLD) $(AM_CXXFLAGS) \
|
||||||
|
$(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
|
||||||
|
COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
|
||||||
|
$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
|
||||||
|
LTCOMPILE = $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) \
|
||||||
|
$(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
|
||||||
|
$(AM_CFLAGS) $(CFLAGS)
|
||||||
|
CCLD = $(CC)
|
||||||
|
LINK = $(LIBTOOL) --tag=CC --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
|
||||||
|
$(AM_LDFLAGS) $(LDFLAGS) -o $@
|
||||||
|
SOURCES = $(librateconn_worker_la_SOURCES)
|
||||||
|
DIST_SOURCES = $(librateconn_worker_la_SOURCES)
|
||||||
|
ETAGS = etags
|
||||||
|
CTAGS = ctags
|
||||||
|
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
|
||||||
|
ACLOCAL = @ACLOCAL@
|
||||||
|
AMDEP_FALSE = @AMDEP_FALSE@
|
||||||
|
AMDEP_TRUE = @AMDEP_TRUE@
|
||||||
|
AMTAR = @AMTAR@
|
||||||
|
AR = @AR@
|
||||||
|
AUTOCONF = @AUTOCONF@
|
||||||
|
AUTOHEADER = @AUTOHEADER@
|
||||||
|
AUTOMAKE = @AUTOMAKE@
|
||||||
|
AWK = @AWK@
|
||||||
|
BDB_LIBS = @BDB_LIBS@
|
||||||
|
CC = @CC@
|
||||||
|
CCDEPMODE = @CCDEPMODE@
|
||||||
|
CFLAGS = @CFLAGS@
|
||||||
|
CPP = @CPP@
|
||||||
|
CPPFLAGS = @CPPFLAGS@
|
||||||
|
CXX = @CXX@
|
||||||
|
CXXCPP = @CXXCPP@
|
||||||
|
CXXDEPMODE = @CXXDEPMODE@
|
||||||
|
CXXFLAGS = @CXXFLAGS@
|
||||||
|
CYGPATH_W = @CYGPATH_W@
|
||||||
|
DEFS = @DEFS@
|
||||||
|
DEPDIR = @DEPDIR@
|
||||||
|
ECHO = @ECHO@
|
||||||
|
ECHO_C = @ECHO_C@
|
||||||
|
ECHO_N = @ECHO_N@
|
||||||
|
ECHO_T = @ECHO_T@
|
||||||
|
EGREP = @EGREP@
|
||||||
|
EXEEXT = @EXEEXT@
|
||||||
|
F77 = @F77@
|
||||||
|
FFLAGS = @FFLAGS@
|
||||||
|
GREP = @GREP@
|
||||||
|
INSTALL_DATA = @INSTALL_DATA@
|
||||||
|
INSTALL_PROGRAM = @INSTALL_PROGRAM@
|
||||||
|
INSTALL_SCRIPT = @INSTALL_SCRIPT@
|
||||||
|
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
|
||||||
|
LDFLAGS = @LDFLAGS@
|
||||||
|
LIBOBJS = @LIBOBJS@
|
||||||
|
LIBS = @LIBS@
|
||||||
|
LIBTOOL = @LIBTOOL@
|
||||||
|
LN_S = @LN_S@
|
||||||
|
LTLIBOBJS = @LTLIBOBJS@
|
||||||
|
MAINT = @MAINT@
|
||||||
|
MAINTAINER_MODE_FALSE = @MAINTAINER_MODE_FALSE@
|
||||||
|
MAINTAINER_MODE_TRUE = @MAINTAINER_MODE_TRUE@
|
||||||
|
MAKEINFO = @MAKEINFO@
|
||||||
|
OBJEXT = @OBJEXT@
|
||||||
|
PACKAGE = @PACKAGE@
|
||||||
|
PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
|
||||||
|
PACKAGE_NAME = @PACKAGE_NAME@
|
||||||
|
PACKAGE_STRING = @PACKAGE_STRING@
|
||||||
|
PACKAGE_TARNAME = @PACKAGE_TARNAME@
|
||||||
|
PACKAGE_VERSION = @PACKAGE_VERSION@
|
||||||
|
PATH_SEPARATOR = @PATH_SEPARATOR@
|
||||||
|
RANLIB = @RANLIB@
|
||||||
|
SED = @SED@
|
||||||
|
SET_MAKE = @SET_MAKE@
|
||||||
|
SHELL = @SHELL@
|
||||||
|
STRIP = @STRIP@
|
||||||
|
VERSION = @VERSION@
|
||||||
|
ac_ct_CC = @ac_ct_CC@
|
||||||
|
ac_ct_CXX = @ac_ct_CXX@
|
||||||
|
ac_ct_F77 = @ac_ct_F77@
|
||||||
|
am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
|
||||||
|
am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
|
||||||
|
am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@
|
||||||
|
am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@
|
||||||
|
am__include = @am__include@
|
||||||
|
am__leading_dot = @am__leading_dot@
|
||||||
|
am__quote = @am__quote@
|
||||||
|
am__tar = @am__tar@
|
||||||
|
am__untar = @am__untar@
|
||||||
|
bindir = @bindir@
|
||||||
|
build = @build@
|
||||||
|
build_alias = @build_alias@
|
||||||
|
build_cpu = @build_cpu@
|
||||||
|
build_os = @build_os@
|
||||||
|
build_vendor = @build_vendor@
|
||||||
|
datadir = @datadir@
|
||||||
|
datarootdir = @datarootdir@
|
||||||
|
docdir = @docdir@
|
||||||
|
dvidir = @dvidir@
|
||||||
|
exec_prefix = @exec_prefix@
|
||||||
|
host = @host@
|
||||||
|
host_alias = @host_alias@
|
||||||
|
host_cpu = @host_cpu@
|
||||||
|
host_os = @host_os@
|
||||||
|
host_vendor = @host_vendor@
|
||||||
|
htmldir = @htmldir@
|
||||||
|
includedir = @includedir@
|
||||||
|
infodir = @infodir@
|
||||||
|
install_sh = @install_sh@
|
||||||
|
libdir = @libdir@
|
||||||
|
libexecdir = @libexecdir@
|
||||||
|
localedir = @localedir@
|
||||||
|
localstatedir = @localstatedir@
|
||||||
|
mandir = @mandir@
|
||||||
|
mkdir_p = @mkdir_p@
|
||||||
|
oldincludedir = @oldincludedir@
|
||||||
|
pdfdir = @pdfdir@
|
||||||
|
prefix = @prefix@
|
||||||
|
program_transform_name = @program_transform_name@
|
||||||
|
psdir = @psdir@
|
||||||
|
sbindir = @sbindir@
|
||||||
|
sharedstatedir = @sharedstatedir@
|
||||||
|
sysconfdir = @sysconfdir@
|
||||||
|
target_alias = @target_alias@
|
||||||
|
lib_LTLIBRARIES = librateconn_worker.la
|
||||||
|
librateconn_worker_la_SOURCES = rateconn_worker.c testplusplus.C rateconn.C
|
||||||
|
librateconn_worker_la_LIBADD = ../libsmmapdfw/libsmmapdfw.la
|
||||||
|
INCLUDES = -I../libsmmapdfw
|
||||||
|
all: all-am
|
||||||
|
|
||||||
|
.SUFFIXES:
|
||||||
|
.SUFFIXES: .C .c .lo .o .obj
|
||||||
|
$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps)
|
||||||
|
@for dep in $?; do \
|
||||||
|
case '$(am__configure_deps)' in \
|
||||||
|
*$$dep*) \
|
||||||
|
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
|
||||||
|
&& exit 0; \
|
||||||
|
exit 1;; \
|
||||||
|
esac; \
|
||||||
|
done; \
|
||||||
|
echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu rateconn_worker/Makefile'; \
|
||||||
|
cd $(top_srcdir) && \
|
||||||
|
$(AUTOMAKE) --gnu rateconn_worker/Makefile
|
||||||
|
.PRECIOUS: Makefile
|
||||||
|
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
|
||||||
|
@case '$?' in \
|
||||||
|
*config.status*) \
|
||||||
|
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
|
||||||
|
*) \
|
||||||
|
echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
|
||||||
|
cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
|
||||||
|
esac;
|
||||||
|
|
||||||
|
$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
|
||||||
|
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
|
||||||
|
|
||||||
|
$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
|
||||||
|
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
|
||||||
|
$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
|
||||||
|
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
|
||||||
|
install-libLTLIBRARIES: $(lib_LTLIBRARIES)
|
||||||
|
@$(NORMAL_INSTALL)
|
||||||
|
test -z "$(libdir)" || $(mkdir_p) "$(DESTDIR)$(libdir)"
|
||||||
|
@list='$(lib_LTLIBRARIES)'; for p in $$list; do \
|
||||||
|
if test -f $$p; then \
|
||||||
|
f=$(am__strip_dir) \
|
||||||
|
echo " $(LIBTOOL) --mode=install $(libLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) '$$p' '$(DESTDIR)$(libdir)/$$f'"; \
|
||||||
|
$(LIBTOOL) --mode=install $(libLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) "$$p" "$(DESTDIR)$(libdir)/$$f"; \
|
||||||
|
else :; fi; \
|
||||||
|
done
|
||||||
|
|
||||||
|
uninstall-libLTLIBRARIES:
|
||||||
|
@$(NORMAL_UNINSTALL)
|
||||||
|
@set -x; list='$(lib_LTLIBRARIES)'; for p in $$list; do \
|
||||||
|
p=$(am__strip_dir) \
|
||||||
|
echo " $(LIBTOOL) --mode=uninstall rm -f '$(DESTDIR)$(libdir)/$$p'"; \
|
||||||
|
$(LIBTOOL) --mode=uninstall rm -f "$(DESTDIR)$(libdir)/$$p"; \
|
||||||
|
done
|
||||||
|
|
||||||
|
clean-libLTLIBRARIES:
|
||||||
|
-test -z "$(lib_LTLIBRARIES)" || rm -f $(lib_LTLIBRARIES)
|
||||||
|
@list='$(lib_LTLIBRARIES)'; for p in $$list; do \
|
||||||
|
dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \
|
||||||
|
test "$$dir" != "$$p" || dir=.; \
|
||||||
|
echo "rm -f \"$${dir}/so_locations\""; \
|
||||||
|
rm -f "$${dir}/so_locations"; \
|
||||||
|
done
|
||||||
|
librateconn_worker.la: $(librateconn_worker_la_OBJECTS) $(librateconn_worker_la_DEPENDENCIES)
|
||||||
|
$(CXXLINK) -rpath $(libdir) $(librateconn_worker_la_LDFLAGS) $(librateconn_worker_la_OBJECTS) $(librateconn_worker_la_LIBADD) $(LIBS)
|
||||||
|
|
||||||
|
mostlyclean-compile:
|
||||||
|
-rm -f *.$(OBJEXT)
|
||||||
|
|
||||||
|
distclean-compile:
|
||||||
|
-rm -f *.tab.c
|
||||||
|
|
||||||
|
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/rateconn.Plo@am__quote@
|
||||||
|
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/rateconn_worker.Plo@am__quote@
|
||||||
|
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/testplusplus.Plo@am__quote@
|
||||||
|
|
||||||
|
.C.o:
|
||||||
|
@am__fastdepCXX_TRUE@ if $(CXXCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \
|
||||||
|
@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
|
||||||
|
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
|
||||||
|
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||||
|
@am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ $<
|
||||||
|
|
||||||
|
.C.obj:
|
||||||
|
@am__fastdepCXX_TRUE@ if $(CXXCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ `$(CYGPATH_W) '$<'`; \
|
||||||
|
@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
|
||||||
|
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
|
||||||
|
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||||
|
@am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
|
||||||
|
|
||||||
|
.C.lo:
|
||||||
|
@am__fastdepCXX_TRUE@ if $(LTCXXCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \
|
||||||
|
@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Plo"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
|
||||||
|
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
|
||||||
|
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||||
|
@am__fastdepCXX_FALSE@ $(LTCXXCOMPILE) -c -o $@ $<
|
||||||
|
|
||||||
|
.c.o:
|
||||||
|
@am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \
|
||||||
|
@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
|
||||||
|
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
|
||||||
|
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||||
|
@am__fastdepCC_FALSE@ $(COMPILE) -c $<
|
||||||
|
|
||||||
|
.c.obj:
|
||||||
|
@am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ `$(CYGPATH_W) '$<'`; \
|
||||||
|
@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
|
||||||
|
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
|
||||||
|
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||||
|
@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'`
|
||||||
|
|
||||||
|
.c.lo:
|
||||||
|
@am__fastdepCC_TRUE@ if $(LTCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \
|
||||||
|
@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Plo"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
|
||||||
|
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
|
||||||
|
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||||
|
@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $<
|
||||||
|
|
||||||
|
mostlyclean-libtool:
|
||||||
|
-rm -f *.lo
|
||||||
|
|
||||||
|
clean-libtool:
|
||||||
|
-rm -rf .libs _libs
|
||||||
|
|
||||||
|
distclean-libtool:
|
||||||
|
-rm -f libtool
|
||||||
|
uninstall-info-am:
|
||||||
|
|
||||||
|
ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
|
||||||
|
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
|
||||||
|
unique=`for i in $$list; do \
|
||||||
|
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
|
||||||
|
done | \
|
||||||
|
$(AWK) ' { files[$$0] = 1; } \
|
||||||
|
END { for (i in files) print i; }'`; \
|
||||||
|
mkid -fID $$unique
|
||||||
|
tags: TAGS
|
||||||
|
|
||||||
|
TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
|
||||||
|
$(TAGS_FILES) $(LISP)
|
||||||
|
tags=; \
|
||||||
|
here=`pwd`; \
|
||||||
|
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
|
||||||
|
unique=`for i in $$list; do \
|
||||||
|
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
|
||||||
|
done | \
|
||||||
|
$(AWK) ' { files[$$0] = 1; } \
|
||||||
|
END { for (i in files) print i; }'`; \
|
||||||
|
if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
|
||||||
|
test -n "$$unique" || unique=$$empty_fix; \
|
||||||
|
$(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
|
||||||
|
$$tags $$unique; \
|
||||||
|
fi
|
||||||
|
ctags: CTAGS
|
||||||
|
CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
|
||||||
|
$(TAGS_FILES) $(LISP)
|
||||||
|
tags=; \
|
||||||
|
here=`pwd`; \
|
||||||
|
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
|
||||||
|
unique=`for i in $$list; do \
|
||||||
|
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
|
||||||
|
done | \
|
||||||
|
$(AWK) ' { files[$$0] = 1; } \
|
||||||
|
END { for (i in files) print i; }'`; \
|
||||||
|
test -z "$(CTAGS_ARGS)$$tags$$unique" \
|
||||||
|
|| $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
|
||||||
|
$$tags $$unique
|
||||||
|
|
||||||
|
GTAGS:
|
||||||
|
here=`$(am__cd) $(top_builddir) && pwd` \
|
||||||
|
&& cd $(top_srcdir) \
|
||||||
|
&& gtags -i $(GTAGS_ARGS) $$here
|
||||||
|
|
||||||
|
distclean-tags:
|
||||||
|
-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
|
||||||
|
|
||||||
|
distdir: $(DISTFILES)
|
||||||
|
@srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
|
||||||
|
topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \
|
||||||
|
list='$(DISTFILES)'; for file in $$list; do \
|
||||||
|
case $$file in \
|
||||||
|
$(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \
|
||||||
|
$(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \
|
||||||
|
esac; \
|
||||||
|
if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
|
||||||
|
dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
|
||||||
|
if test "$$dir" != "$$file" && test "$$dir" != "."; then \
|
||||||
|
dir="/$$dir"; \
|
||||||
|
$(mkdir_p) "$(distdir)$$dir"; \
|
||||||
|
else \
|
||||||
|
dir=''; \
|
||||||
|
fi; \
|
||||||
|
if test -d $$d/$$file; then \
|
||||||
|
if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
|
||||||
|
cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
|
||||||
|
fi; \
|
||||||
|
cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
|
||||||
|
else \
|
||||||
|
test -f $(distdir)/$$file \
|
||||||
|
|| cp -p $$d/$$file $(distdir)/$$file \
|
||||||
|
|| exit 1; \
|
||||||
|
fi; \
|
||||||
|
done
|
||||||
|
check-am: all-am
|
||||||
|
check: check-am
|
||||||
|
all-am: Makefile $(LTLIBRARIES)
|
||||||
|
installdirs:
|
||||||
|
for dir in "$(DESTDIR)$(libdir)"; do \
|
||||||
|
test -z "$$dir" || $(mkdir_p) "$$dir"; \
|
||||||
|
done
|
||||||
|
install: install-am
|
||||||
|
install-exec: install-exec-am
|
||||||
|
install-data: install-data-am
|
||||||
|
uninstall: uninstall-am
|
||||||
|
|
||||||
|
install-am: all-am
|
||||||
|
@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
|
||||||
|
|
||||||
|
installcheck: installcheck-am
|
||||||
|
install-strip:
|
||||||
|
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
|
||||||
|
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
|
||||||
|
`test -z '$(STRIP)' || \
|
||||||
|
echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
|
||||||
|
mostlyclean-generic:
|
||||||
|
|
||||||
|
clean-generic:
|
||||||
|
|
||||||
|
distclean-generic:
|
||||||
|
-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
|
||||||
|
|
||||||
|
maintainer-clean-generic:
|
||||||
|
@echo "This command is intended for maintainers to use"
|
||||||
|
@echo "it deletes files that may require special tools to rebuild."
|
||||||
|
clean: clean-am
|
||||||
|
|
||||||
|
clean-am: clean-generic clean-libLTLIBRARIES clean-libtool \
|
||||||
|
mostlyclean-am
|
||||||
|
|
||||||
|
distclean: distclean-am
|
||||||
|
-rm -rf ./$(DEPDIR)
|
||||||
|
-rm -f Makefile
|
||||||
|
distclean-am: clean-am distclean-compile distclean-generic \
|
||||||
|
distclean-libtool distclean-tags
|
||||||
|
|
||||||
|
dvi: dvi-am
|
||||||
|
|
||||||
|
dvi-am:
|
||||||
|
|
||||||
|
html: html-am
|
||||||
|
|
||||||
|
info: info-am
|
||||||
|
|
||||||
|
info-am:
|
||||||
|
|
||||||
|
install-data-am:
|
||||||
|
|
||||||
|
install-exec-am: install-libLTLIBRARIES
|
||||||
|
|
||||||
|
install-info: install-info-am
|
||||||
|
|
||||||
|
install-man:
|
||||||
|
|
||||||
|
installcheck-am:
|
||||||
|
|
||||||
|
maintainer-clean: maintainer-clean-am
|
||||||
|
-rm -rf ./$(DEPDIR)
|
||||||
|
-rm -f Makefile
|
||||||
|
maintainer-clean-am: distclean-am maintainer-clean-generic
|
||||||
|
|
||||||
|
mostlyclean: mostlyclean-am
|
||||||
|
|
||||||
|
mostlyclean-am: mostlyclean-compile mostlyclean-generic \
|
||||||
|
mostlyclean-libtool
|
||||||
|
|
||||||
|
pdf: pdf-am
|
||||||
|
|
||||||
|
pdf-am:
|
||||||
|
|
||||||
|
ps: ps-am
|
||||||
|
|
||||||
|
ps-am:
|
||||||
|
|
||||||
|
uninstall-am: uninstall-info-am uninstall-libLTLIBRARIES
|
||||||
|
|
||||||
|
.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \
|
||||||
|
clean-libLTLIBRARIES clean-libtool ctags distclean \
|
||||||
|
distclean-compile distclean-generic distclean-libtool \
|
||||||
|
distclean-tags distdir dvi dvi-am html html-am info info-am \
|
||||||
|
install install-am install-data install-data-am install-exec \
|
||||||
|
install-exec-am install-info install-info-am \
|
||||||
|
install-libLTLIBRARIES install-man install-strip installcheck \
|
||||||
|
installcheck-am installdirs maintainer-clean \
|
||||||
|
maintainer-clean-generic mostlyclean mostlyclean-compile \
|
||||||
|
mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
|
||||||
|
tags uninstall uninstall-am uninstall-info-am \
|
||||||
|
uninstall-libLTLIBRARIES
|
||||||
|
|
||||||
|
# Tell versions [3.59,3.63) of GNU make to not export all variables.
|
||||||
|
# Otherwise a system limit (for SysV at least) may be exceeded.
|
||||||
|
.NOEXPORT:
|
16
smmapdfw/rateconn_worker/Mutex.H
Normal file
16
smmapdfw/rateconn_worker/Mutex.H
Normal file
@ -0,0 +1,16 @@
|
|||||||
|
#ifndef _MUTEX_H_
|
||||||
|
#define _MUTEX_H_
|
||||||
|
|
||||||
|
#include <pthread.h>
|
||||||
|
|
||||||
|
|
||||||
|
class Mutex {
|
||||||
|
public:
|
||||||
|
Mutex(pthread_mutex_t *mutex) : m_mutex(mutex) { pthread_mutex_lock(m_mutex); };
|
||||||
|
~Mutex() { pthread_mutex_unlock(m_mutex); }
|
||||||
|
private:
|
||||||
|
pthread_mutex_t *m_mutex;
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
#endif // _MUTEX_H_
|
80
smmapdfw/rateconn_worker/rateconn.C
Normal file
80
smmapdfw/rateconn_worker/rateconn.C
Normal file
@ -0,0 +1,80 @@
|
|||||||
|
#include <iostream>
|
||||||
|
#include <string>
|
||||||
|
|
||||||
|
#include "rateconn.H"
|
||||||
|
#include "Mutex.H"
|
||||||
|
|
||||||
|
|
||||||
|
using namespace std;
|
||||||
|
|
||||||
|
RateconnTable *rateconnTable = NULL;
|
||||||
|
|
||||||
|
extern "C" void rateconnInitWrapper(pthread_mutex_t *mutex, int numOfBuckets) throw () {
|
||||||
|
rateconnTable = new RateconnTable(mutex, numOfBuckets);
|
||||||
|
}
|
||||||
|
|
||||||
|
extern "C" void rateconnTurnWrapper() throw () {
|
||||||
|
rateconnTable->turn();
|
||||||
|
}
|
||||||
|
|
||||||
|
extern "C" int rateconnIncAndGetWrapper(const char* input) throw () {
|
||||||
|
return rateconnTable->incAndGet(string(input));
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
- a certain number of hashes, sitting on a kind of a chain
|
||||||
|
- periodically the chain is moved a step forward, the last hash while be dropped
|
||||||
|
off from the end of the chain and wiped out, a new one is create and put at the
|
||||||
|
first position of the chain
|
||||||
|
- new entries a put into the first one
|
||||||
|
- all hashes are considered when calculating the number of events in a timespan
|
||||||
|
-
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
*/
|
||||||
|
|
||||||
|
RateconnTable::RateconnTable(pthread_mutex_t *mutex, int numOfBuckets)
|
||||||
|
: m_numOfBuckets(numOfBuckets), m_mutex(mutex)
|
||||||
|
{
|
||||||
|
turn();
|
||||||
|
}
|
||||||
|
|
||||||
|
void RateconnTable::turn() {
|
||||||
|
Mutex m1(m_mutex); // rmc to lock the whole scope and to unlock it at its end
|
||||||
|
|
||||||
|
if (m_countersDeque.size() > m_numOfBuckets)
|
||||||
|
m_countersDeque.pop_back();
|
||||||
|
m_countersDeque.push_front(counterMap_t());
|
||||||
|
}
|
||||||
|
|
||||||
|
void RateconnTable::printAll() {
|
||||||
|
int t = 0;
|
||||||
|
for (countersDeque_t::const_iterator i = m_countersDeque.begin(); i != m_countersDeque.end(); ++i, ++t) {
|
||||||
|
for (counterMap_t::const_iterator j = i->begin(); j != i->end(); ++j) {
|
||||||
|
cout << "table: " << t <<", key: " << j->first << ", value: " << j->second << endl;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
int RateconnTable::incAndGet(const string& input) {
|
||||||
|
Mutex m1(m_mutex); // rmc to lock the whole scope and to unlock it at its end
|
||||||
|
|
||||||
|
counterMap_t& cm = m_countersDeque.front();
|
||||||
|
if (cm.find(input) == 0)
|
||||||
|
cm[input] = 0;
|
||||||
|
cm[input]++;
|
||||||
|
|
||||||
|
int cnt = 0;
|
||||||
|
for (countersDeque_t::iterator i = m_countersDeque.begin(); i != m_countersDeque.end(); ++i) {
|
||||||
|
cnt += (*i)[input];
|
||||||
|
}
|
||||||
|
|
||||||
|
printAll();
|
||||||
|
|
||||||
|
return cnt;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
31
smmapdfw/rateconn_worker/rateconn.H
Normal file
31
smmapdfw/rateconn_worker/rateconn.H
Normal file
@ -0,0 +1,31 @@
|
|||||||
|
#ifndef _RATECONN_H_
|
||||||
|
#define _RATECONN_H_
|
||||||
|
|
||||||
|
#include <map>
|
||||||
|
#include <deque>
|
||||||
|
#include <string>
|
||||||
|
|
||||||
|
#include <pthread.h>
|
||||||
|
|
||||||
|
typedef std::map<std::string, int> counterMap_t;
|
||||||
|
typedef std::deque<counterMap_t> countersDeque_t;
|
||||||
|
|
||||||
|
|
||||||
|
class RateconnTable {
|
||||||
|
public:
|
||||||
|
RateconnTable(pthread_mutex_t *mutex, int numOfBuckets);
|
||||||
|
void turn();
|
||||||
|
void printAll();
|
||||||
|
int incAndGet(const std::string& input);
|
||||||
|
// ~RateconnTable();
|
||||||
|
|
||||||
|
|
||||||
|
private:
|
||||||
|
int m_numOfBuckets;
|
||||||
|
countersDeque_t m_countersDeque;
|
||||||
|
pthread_mutex_t *m_mutex;
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
#endif // _RATECONN_H_
|
191
smmapdfw/rateconn_worker/rateconn_worker.c
Normal file
191
smmapdfw/rateconn_worker/rateconn_worker.c
Normal file
@ -0,0 +1,191 @@
|
|||||||
|
/*
|
||||||
|
Copyright (C) 2004-2009, Wolfgang Hottgenroth
|
||||||
|
|
||||||
|
This file is part of smmapdfw.
|
||||||
|
|
||||||
|
smmapdfw is free software; you can redistribute it and/or modify it
|
||||||
|
under the terms of the GNU General Public License as published by
|
||||||
|
the Free Software Foundation; either version 2 of the License, or
|
||||||
|
(at your option) any later version.
|
||||||
|
|
||||||
|
smmapdfw is distributed in the hope that it will be useful, but WITHOUT
|
||||||
|
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
|
||||||
|
or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
|
||||||
|
License for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU General Public License
|
||||||
|
along with smmapdfw. If not, write to the Free Software Foundation, 59
|
||||||
|
Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include <syslog.h>
|
||||||
|
#include <string.h>
|
||||||
|
#include <pthread.h>
|
||||||
|
|
||||||
|
#include "containers_public.h"
|
||||||
|
#include "smmapd.h"
|
||||||
|
|
||||||
|
#include "htmalloc.h"
|
||||||
|
#include "htbuffer.h"
|
||||||
|
#include "stats.h"
|
||||||
|
|
||||||
|
#include "rateconn_worker.h"
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
counterDef_t *rateconn_counterDefs = NULL;
|
||||||
|
void rateconn_setupCounterList() {
|
||||||
|
rateconn_counterDefs = addOneCounterDef(rateconn_counterDefs, SMM_TYPE_COUNTER, "RateConn: checker");
|
||||||
|
rateconn_counterDefs = addOneCounterDef(rateconn_counterDefs, SMM_TYPE_COUNTER, "RateConn: illegal input");
|
||||||
|
rateconn_counterDefs = addOneCounterDef(rateconn_counterDefs, SMM_TYPE_COUNTER, "RateConn: returned OK");
|
||||||
|
rateconn_counterDefs = addOneCounterDef(rateconn_counterDefs, SMM_TYPE_COUNTER, "RateConn: returned NOK");
|
||||||
|
rateconn_counterDefs = addOneCounterDef(rateconn_counterDefs, SMM_TYPE_COUNTER, "RateConn: returned TNOK");
|
||||||
|
};
|
||||||
|
|
||||||
|
#define STAT_CNT_RATECONN_WORKER 0
|
||||||
|
#define STAT_CNT_RATECONN_ILLEGAL_INPUT 1
|
||||||
|
#define STAT_CNT_RATECONN_RETURNED_OK 2
|
||||||
|
#define STAT_CNT_RATECONN_RETURNED_NOK 3
|
||||||
|
#define STAT_CNT_RATECONN_RETURNED_TNOK 4
|
||||||
|
|
||||||
|
|
||||||
|
struct rateconn_container_handle_s {
|
||||||
|
cfgl_t *cfg;
|
||||||
|
statCounter_t *statCounter;
|
||||||
|
pthread_mutex_t tableMutex;
|
||||||
|
pthread_t turner;
|
||||||
|
int numOfBuckets;
|
||||||
|
int turnPeriod;
|
||||||
|
int threshold;
|
||||||
|
};
|
||||||
|
|
||||||
|
typedef struct rateconn_container_handle_s rateconn_container_handle_t;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
struct rateconn_work_handle_s {
|
||||||
|
int id;
|
||||||
|
rateconn_container_handle_t *cch;
|
||||||
|
};
|
||||||
|
|
||||||
|
typedef struct rateconn_work_handle_s rateconn_work_handle_t;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
int rateconn_init(cfgl_t *cfg, void **handle);
|
||||||
|
int rateconn_destroy(void *handle);
|
||||||
|
/* int rateconn_work_setup(void *handle, void **work_handle); */
|
||||||
|
int rateconn_work(void *handle, void *work_handle, char *input, htbuffer_t *output);
|
||||||
|
/* int rateconn_work_destroy(void *handle, void *work_handle); */
|
||||||
|
|
||||||
|
|
||||||
|
class_descriptor_t rateconn_check = {
|
||||||
|
"rateconn_check",
|
||||||
|
&rateconn_init,
|
||||||
|
&rateconn_destroy,
|
||||||
|
NULL, /* &rateconn_work_setup, */
|
||||||
|
&rateconn_work,
|
||||||
|
NULL /* &rateconn_work_destroy */
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
static void *tableTurner(void *arg) {
|
||||||
|
if (arg == NULL) {
|
||||||
|
syslog(LOG_CRIT, "tableTurner: arg is NULL");
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
rateconn_container_handle_t *cch = (rateconn_container_handle_t*) arg;
|
||||||
|
|
||||||
|
while (1) {
|
||||||
|
syslog(LOG_DEBUG, "rateconn_worker: turning");
|
||||||
|
rateconnTurnWrapper();
|
||||||
|
sleep(cch->turnPeriod);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
int rateconn_init(cfgl_t *cfg, void **handle) {
|
||||||
|
rateconn_container_handle_t *cch;
|
||||||
|
|
||||||
|
cch = (rateconn_container_handle_t*) htmalloc(sizeof(rateconn_container_handle_t));
|
||||||
|
cch->cfg = cfg;
|
||||||
|
|
||||||
|
cch->numOfBuckets = atoi(findcfglx(cch->cfg, "num_of_buckets", "12"));
|
||||||
|
cch->turnPeriod = atoi(findcfglx(cch->cfg, "turn_period", "300"));
|
||||||
|
cch->threshold = atoi(findcfglx(cch->cfg, "threshold", 10));
|
||||||
|
|
||||||
|
|
||||||
|
rateconn_setupCounterList();
|
||||||
|
cch->statCounter = initStatCounter("rateconn", rateconn_counterDefs);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
pthread_mutex_init(&(cch->tableMutex), NULL);
|
||||||
|
pthread_mutex_unlock(&(cch->tableMutex));
|
||||||
|
|
||||||
|
rateconnInitWrapper(&(cch->tableMutex), cch->numOfBuckets);
|
||||||
|
|
||||||
|
|
||||||
|
int err = pthread_create(&(cch->turner), NULL, &tableTurner, cch);
|
||||||
|
|
||||||
|
*handle = cch;
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
int rateconn_destroy(void *handle) {
|
||||||
|
rateconn_container_handle_t *cch = (rateconn_container_handle_t*)handle;
|
||||||
|
|
||||||
|
free(cch);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
int rateconn_work(void *handle, void *work_handle, char *input, htbuffer_t *output) {
|
||||||
|
static const char *DEFAULT_ANSWER = "default answer";
|
||||||
|
static const char *ILLEGAL_INPUT = "illegal input (must be 'auth_author')";
|
||||||
|
static const char *GO_AHEAD = "go ahead";
|
||||||
|
|
||||||
|
static int log_id = 0;
|
||||||
|
|
||||||
|
rateconn_container_handle_t *cch = (rateconn_container_handle_t*) handle;
|
||||||
|
int result = SMM_TEMP_NOK;
|
||||||
|
char *auth_author, *response_text, *tmp_arg;
|
||||||
|
|
||||||
|
log_id++;
|
||||||
|
|
||||||
|
syslog(LOG_INFO, "rateconn_work: (%04x) going to check %s", log_id, input);
|
||||||
|
|
||||||
|
incStatCounter(cch->statCounter, STAT_CNT_RATECONN_WORKER);
|
||||||
|
|
||||||
|
|
||||||
|
int cnt = rateconnIncAndGetWrapper(input);
|
||||||
|
syslog(LOG_DEBUG, "rateconn_work: cnt=%d", cnt);
|
||||||
|
|
||||||
|
result = (cnt > cch->threshold) ? SMM_LOCAL_NOK : SMM_LOCAL_OK;
|
||||||
|
|
||||||
|
|
||||||
|
switch (result) {
|
||||||
|
case SMM_LOCAL_NOK:
|
||||||
|
htbuffer_strcpy(output, "<NOK><REJECTED>");
|
||||||
|
result = SMM_OK;
|
||||||
|
incStatCounter(cch->statCounter, STAT_CNT_RATECONN_RETURNED_NOK);
|
||||||
|
break;
|
||||||
|
case SMM_LOCAL_OK:
|
||||||
|
htbuffer_strcpy(output, "<OK><ACCEPTED>");
|
||||||
|
result = SMM_OK;
|
||||||
|
incStatCounter(cch->statCounter, STAT_CNT_RATECONN_RETURNED_OK);
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
htbuffer_strcpy(output, "<TNOK><UNKNOWN FAILURE>");
|
||||||
|
result = SMM_TEMP_NOK;
|
||||||
|
incStatCounter(cch->statCounter, STAT_CNT_RATECONN_RETURNED_TNOK);
|
||||||
|
}
|
||||||
|
|
||||||
|
syslog(LOG_DEBUG, "rateconn_work: (%04x) result %d, %s", log_id,
|
||||||
|
result, output->buf);
|
||||||
|
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
2
smmapdfw/rateconn_worker/rateconn_worker.h
Normal file
2
smmapdfw/rateconn_worker/rateconn_worker.h
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
#define SMM_LOCAL_NOK 101
|
||||||
|
#define SMM_LOCAL_OK 10
|
7
smmapdfw/rateconn_worker/testplusplus.C
Normal file
7
smmapdfw/rateconn_worker/testplusplus.C
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
#include <iostream>
|
||||||
|
|
||||||
|
using namespace std;
|
||||||
|
|
||||||
|
extern "C" void outputSomething() throw () {
|
||||||
|
cout << " something " << endl;
|
||||||
|
}
|
5
smmapdfw/recpverify_worker/Makefile.am
Normal file
5
smmapdfw/recpverify_worker/Makefile.am
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
lib_LTLIBRARIES = librecpveri_worker.la
|
||||||
|
librecpveri_worker_la_SOURCES = recpveri_worker.c
|
||||||
|
librecpveri_worker_la_LIBADD = ../libsmmapdfw/libsmmapdfw.la
|
||||||
|
|
||||||
|
INCLUDES = -I../libsmmapdfw
|
460
smmapdfw/recpverify_worker/Makefile.in
Normal file
460
smmapdfw/recpverify_worker/Makefile.in
Normal file
@ -0,0 +1,460 @@
|
|||||||
|
# Makefile.in generated by automake 1.9.6 from Makefile.am.
|
||||||
|
# @configure_input@
|
||||||
|
|
||||||
|
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
|
||||||
|
# 2003, 2004, 2005 Free Software Foundation, Inc.
|
||||||
|
# This Makefile.in is free software; the Free Software Foundation
|
||||||
|
# gives unlimited permission to copy and/or distribute it,
|
||||||
|
# with or without modifications, as long as this notice is preserved.
|
||||||
|
|
||||||
|
# This program is distributed in the hope that it will be useful,
|
||||||
|
# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
|
||||||
|
# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
|
||||||
|
# PARTICULAR PURPOSE.
|
||||||
|
|
||||||
|
@SET_MAKE@
|
||||||
|
|
||||||
|
srcdir = @srcdir@
|
||||||
|
top_srcdir = @top_srcdir@
|
||||||
|
VPATH = @srcdir@
|
||||||
|
pkgdatadir = $(datadir)/@PACKAGE@
|
||||||
|
pkglibdir = $(libdir)/@PACKAGE@
|
||||||
|
pkgincludedir = $(includedir)/@PACKAGE@
|
||||||
|
top_builddir = ..
|
||||||
|
am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
|
||||||
|
INSTALL = @INSTALL@
|
||||||
|
install_sh_DATA = $(install_sh) -c -m 644
|
||||||
|
install_sh_PROGRAM = $(install_sh) -c
|
||||||
|
install_sh_SCRIPT = $(install_sh) -c
|
||||||
|
INSTALL_HEADER = $(INSTALL_DATA)
|
||||||
|
transform = $(program_transform_name)
|
||||||
|
NORMAL_INSTALL = :
|
||||||
|
PRE_INSTALL = :
|
||||||
|
POST_INSTALL = :
|
||||||
|
NORMAL_UNINSTALL = :
|
||||||
|
PRE_UNINSTALL = :
|
||||||
|
POST_UNINSTALL = :
|
||||||
|
build_triplet = @build@
|
||||||
|
host_triplet = @host@
|
||||||
|
subdir = recpverify_worker
|
||||||
|
DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
|
||||||
|
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
|
||||||
|
am__aclocal_m4_deps = $(top_srcdir)/configure.ac
|
||||||
|
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
|
||||||
|
$(ACLOCAL_M4)
|
||||||
|
mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
|
||||||
|
CONFIG_HEADER = $(top_builddir)/config.h
|
||||||
|
CONFIG_CLEAN_FILES =
|
||||||
|
am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
|
||||||
|
am__vpath_adj = case $$p in \
|
||||||
|
$(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
|
||||||
|
*) f=$$p;; \
|
||||||
|
esac;
|
||||||
|
am__strip_dir = `echo $$p | sed -e 's|^.*/||'`;
|
||||||
|
am__installdirs = "$(DESTDIR)$(libdir)"
|
||||||
|
libLTLIBRARIES_INSTALL = $(INSTALL)
|
||||||
|
LTLIBRARIES = $(lib_LTLIBRARIES)
|
||||||
|
librecpveri_worker_la_DEPENDENCIES = ../libsmmapdfw/libsmmapdfw.la
|
||||||
|
am_librecpveri_worker_la_OBJECTS = recpveri_worker.lo
|
||||||
|
librecpveri_worker_la_OBJECTS = $(am_librecpveri_worker_la_OBJECTS)
|
||||||
|
DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir)
|
||||||
|
depcomp = $(SHELL) $(top_srcdir)/depcomp
|
||||||
|
am__depfiles_maybe = depfiles
|
||||||
|
COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
|
||||||
|
$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
|
||||||
|
LTCOMPILE = $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) \
|
||||||
|
$(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
|
||||||
|
$(AM_CFLAGS) $(CFLAGS)
|
||||||
|
CCLD = $(CC)
|
||||||
|
LINK = $(LIBTOOL) --tag=CC --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
|
||||||
|
$(AM_LDFLAGS) $(LDFLAGS) -o $@
|
||||||
|
SOURCES = $(librecpveri_worker_la_SOURCES)
|
||||||
|
DIST_SOURCES = $(librecpveri_worker_la_SOURCES)
|
||||||
|
ETAGS = etags
|
||||||
|
CTAGS = ctags
|
||||||
|
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
|
||||||
|
ACLOCAL = @ACLOCAL@
|
||||||
|
AMDEP_FALSE = @AMDEP_FALSE@
|
||||||
|
AMDEP_TRUE = @AMDEP_TRUE@
|
||||||
|
AMTAR = @AMTAR@
|
||||||
|
AR = @AR@
|
||||||
|
AUTOCONF = @AUTOCONF@
|
||||||
|
AUTOHEADER = @AUTOHEADER@
|
||||||
|
AUTOMAKE = @AUTOMAKE@
|
||||||
|
AWK = @AWK@
|
||||||
|
BDB_LIBS = @BDB_LIBS@
|
||||||
|
CC = @CC@
|
||||||
|
CCDEPMODE = @CCDEPMODE@
|
||||||
|
CFLAGS = @CFLAGS@
|
||||||
|
CPP = @CPP@
|
||||||
|
CPPFLAGS = @CPPFLAGS@
|
||||||
|
CXX = @CXX@
|
||||||
|
CXXCPP = @CXXCPP@
|
||||||
|
CXXDEPMODE = @CXXDEPMODE@
|
||||||
|
CXXFLAGS = @CXXFLAGS@
|
||||||
|
CYGPATH_W = @CYGPATH_W@
|
||||||
|
DEFS = @DEFS@
|
||||||
|
DEPDIR = @DEPDIR@
|
||||||
|
ECHO = @ECHO@
|
||||||
|
ECHO_C = @ECHO_C@
|
||||||
|
ECHO_N = @ECHO_N@
|
||||||
|
ECHO_T = @ECHO_T@
|
||||||
|
EGREP = @EGREP@
|
||||||
|
EXEEXT = @EXEEXT@
|
||||||
|
F77 = @F77@
|
||||||
|
FFLAGS = @FFLAGS@
|
||||||
|
GREP = @GREP@
|
||||||
|
INSTALL_DATA = @INSTALL_DATA@
|
||||||
|
INSTALL_PROGRAM = @INSTALL_PROGRAM@
|
||||||
|
INSTALL_SCRIPT = @INSTALL_SCRIPT@
|
||||||
|
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
|
||||||
|
LDFLAGS = @LDFLAGS@
|
||||||
|
LIBOBJS = @LIBOBJS@
|
||||||
|
LIBS = @LIBS@
|
||||||
|
LIBTOOL = @LIBTOOL@
|
||||||
|
LN_S = @LN_S@
|
||||||
|
LTLIBOBJS = @LTLIBOBJS@
|
||||||
|
MAINT = @MAINT@
|
||||||
|
MAINTAINER_MODE_FALSE = @MAINTAINER_MODE_FALSE@
|
||||||
|
MAINTAINER_MODE_TRUE = @MAINTAINER_MODE_TRUE@
|
||||||
|
MAKEINFO = @MAKEINFO@
|
||||||
|
OBJEXT = @OBJEXT@
|
||||||
|
PACKAGE = @PACKAGE@
|
||||||
|
PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
|
||||||
|
PACKAGE_NAME = @PACKAGE_NAME@
|
||||||
|
PACKAGE_STRING = @PACKAGE_STRING@
|
||||||
|
PACKAGE_TARNAME = @PACKAGE_TARNAME@
|
||||||
|
PACKAGE_VERSION = @PACKAGE_VERSION@
|
||||||
|
PATH_SEPARATOR = @PATH_SEPARATOR@
|
||||||
|
RANLIB = @RANLIB@
|
||||||
|
SED = @SED@
|
||||||
|
SET_MAKE = @SET_MAKE@
|
||||||
|
SHELL = @SHELL@
|
||||||
|
STRIP = @STRIP@
|
||||||
|
VERSION = @VERSION@
|
||||||
|
ac_ct_CC = @ac_ct_CC@
|
||||||
|
ac_ct_CXX = @ac_ct_CXX@
|
||||||
|
ac_ct_F77 = @ac_ct_F77@
|
||||||
|
am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
|
||||||
|
am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
|
||||||
|
am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@
|
||||||
|
am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@
|
||||||
|
am__include = @am__include@
|
||||||
|
am__leading_dot = @am__leading_dot@
|
||||||
|
am__quote = @am__quote@
|
||||||
|
am__tar = @am__tar@
|
||||||
|
am__untar = @am__untar@
|
||||||
|
bindir = @bindir@
|
||||||
|
build = @build@
|
||||||
|
build_alias = @build_alias@
|
||||||
|
build_cpu = @build_cpu@
|
||||||
|
build_os = @build_os@
|
||||||
|
build_vendor = @build_vendor@
|
||||||
|
datadir = @datadir@
|
||||||
|
datarootdir = @datarootdir@
|
||||||
|
docdir = @docdir@
|
||||||
|
dvidir = @dvidir@
|
||||||
|
exec_prefix = @exec_prefix@
|
||||||
|
host = @host@
|
||||||
|
host_alias = @host_alias@
|
||||||
|
host_cpu = @host_cpu@
|
||||||
|
host_os = @host_os@
|
||||||
|
host_vendor = @host_vendor@
|
||||||
|
htmldir = @htmldir@
|
||||||
|
includedir = @includedir@
|
||||||
|
infodir = @infodir@
|
||||||
|
install_sh = @install_sh@
|
||||||
|
libdir = @libdir@
|
||||||
|
libexecdir = @libexecdir@
|
||||||
|
localedir = @localedir@
|
||||||
|
localstatedir = @localstatedir@
|
||||||
|
mandir = @mandir@
|
||||||
|
mkdir_p = @mkdir_p@
|
||||||
|
oldincludedir = @oldincludedir@
|
||||||
|
pdfdir = @pdfdir@
|
||||||
|
prefix = @prefix@
|
||||||
|
program_transform_name = @program_transform_name@
|
||||||
|
psdir = @psdir@
|
||||||
|
sbindir = @sbindir@
|
||||||
|
sharedstatedir = @sharedstatedir@
|
||||||
|
sysconfdir = @sysconfdir@
|
||||||
|
target_alias = @target_alias@
|
||||||
|
lib_LTLIBRARIES = librecpveri_worker.la
|
||||||
|
librecpveri_worker_la_SOURCES = recpveri_worker.c
|
||||||
|
librecpveri_worker_la_LIBADD = ../libsmmapdfw/libsmmapdfw.la
|
||||||
|
INCLUDES = -I../libsmmapdfw
|
||||||
|
all: all-am
|
||||||
|
|
||||||
|
.SUFFIXES:
|
||||||
|
.SUFFIXES: .c .lo .o .obj
|
||||||
|
$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps)
|
||||||
|
@for dep in $?; do \
|
||||||
|
case '$(am__configure_deps)' in \
|
||||||
|
*$$dep*) \
|
||||||
|
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
|
||||||
|
&& exit 0; \
|
||||||
|
exit 1;; \
|
||||||
|
esac; \
|
||||||
|
done; \
|
||||||
|
echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu recpverify_worker/Makefile'; \
|
||||||
|
cd $(top_srcdir) && \
|
||||||
|
$(AUTOMAKE) --gnu recpverify_worker/Makefile
|
||||||
|
.PRECIOUS: Makefile
|
||||||
|
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
|
||||||
|
@case '$?' in \
|
||||||
|
*config.status*) \
|
||||||
|
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
|
||||||
|
*) \
|
||||||
|
echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
|
||||||
|
cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
|
||||||
|
esac;
|
||||||
|
|
||||||
|
$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
|
||||||
|
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
|
||||||
|
|
||||||
|
$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
|
||||||
|
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
|
||||||
|
$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
|
||||||
|
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
|
||||||
|
install-libLTLIBRARIES: $(lib_LTLIBRARIES)
|
||||||
|
@$(NORMAL_INSTALL)
|
||||||
|
test -z "$(libdir)" || $(mkdir_p) "$(DESTDIR)$(libdir)"
|
||||||
|
@list='$(lib_LTLIBRARIES)'; for p in $$list; do \
|
||||||
|
if test -f $$p; then \
|
||||||
|
f=$(am__strip_dir) \
|
||||||
|
echo " $(LIBTOOL) --mode=install $(libLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) '$$p' '$(DESTDIR)$(libdir)/$$f'"; \
|
||||||
|
$(LIBTOOL) --mode=install $(libLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) "$$p" "$(DESTDIR)$(libdir)/$$f"; \
|
||||||
|
else :; fi; \
|
||||||
|
done
|
||||||
|
|
||||||
|
uninstall-libLTLIBRARIES:
|
||||||
|
@$(NORMAL_UNINSTALL)
|
||||||
|
@set -x; list='$(lib_LTLIBRARIES)'; for p in $$list; do \
|
||||||
|
p=$(am__strip_dir) \
|
||||||
|
echo " $(LIBTOOL) --mode=uninstall rm -f '$(DESTDIR)$(libdir)/$$p'"; \
|
||||||
|
$(LIBTOOL) --mode=uninstall rm -f "$(DESTDIR)$(libdir)/$$p"; \
|
||||||
|
done
|
||||||
|
|
||||||
|
clean-libLTLIBRARIES:
|
||||||
|
-test -z "$(lib_LTLIBRARIES)" || rm -f $(lib_LTLIBRARIES)
|
||||||
|
@list='$(lib_LTLIBRARIES)'; for p in $$list; do \
|
||||||
|
dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \
|
||||||
|
test "$$dir" != "$$p" || dir=.; \
|
||||||
|
echo "rm -f \"$${dir}/so_locations\""; \
|
||||||
|
rm -f "$${dir}/so_locations"; \
|
||||||
|
done
|
||||||
|
librecpveri_worker.la: $(librecpveri_worker_la_OBJECTS) $(librecpveri_worker_la_DEPENDENCIES)
|
||||||
|
$(LINK) -rpath $(libdir) $(librecpveri_worker_la_LDFLAGS) $(librecpveri_worker_la_OBJECTS) $(librecpveri_worker_la_LIBADD) $(LIBS)
|
||||||
|
|
||||||
|
mostlyclean-compile:
|
||||||
|
-rm -f *.$(OBJEXT)
|
||||||
|
|
||||||
|
distclean-compile:
|
||||||
|
-rm -f *.tab.c
|
||||||
|
|
||||||
|
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/recpveri_worker.Plo@am__quote@
|
||||||
|
|
||||||
|
.c.o:
|
||||||
|
@am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \
|
||||||
|
@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
|
||||||
|
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
|
||||||
|
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||||
|
@am__fastdepCC_FALSE@ $(COMPILE) -c $<
|
||||||
|
|
||||||
|
.c.obj:
|
||||||
|
@am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ `$(CYGPATH_W) '$<'`; \
|
||||||
|
@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
|
||||||
|
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
|
||||||
|
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||||
|
@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'`
|
||||||
|
|
||||||
|
.c.lo:
|
||||||
|
@am__fastdepCC_TRUE@ if $(LTCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \
|
||||||
|
@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Plo"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
|
||||||
|
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
|
||||||
|
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||||
|
@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $<
|
||||||
|
|
||||||
|
mostlyclean-libtool:
|
||||||
|
-rm -f *.lo
|
||||||
|
|
||||||
|
clean-libtool:
|
||||||
|
-rm -rf .libs _libs
|
||||||
|
|
||||||
|
distclean-libtool:
|
||||||
|
-rm -f libtool
|
||||||
|
uninstall-info-am:
|
||||||
|
|
||||||
|
ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
|
||||||
|
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
|
||||||
|
unique=`for i in $$list; do \
|
||||||
|
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
|
||||||
|
done | \
|
||||||
|
$(AWK) ' { files[$$0] = 1; } \
|
||||||
|
END { for (i in files) print i; }'`; \
|
||||||
|
mkid -fID $$unique
|
||||||
|
tags: TAGS
|
||||||
|
|
||||||
|
TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
|
||||||
|
$(TAGS_FILES) $(LISP)
|
||||||
|
tags=; \
|
||||||
|
here=`pwd`; \
|
||||||
|
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
|
||||||
|
unique=`for i in $$list; do \
|
||||||
|
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
|
||||||
|
done | \
|
||||||
|
$(AWK) ' { files[$$0] = 1; } \
|
||||||
|
END { for (i in files) print i; }'`; \
|
||||||
|
if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
|
||||||
|
test -n "$$unique" || unique=$$empty_fix; \
|
||||||
|
$(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
|
||||||
|
$$tags $$unique; \
|
||||||
|
fi
|
||||||
|
ctags: CTAGS
|
||||||
|
CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
|
||||||
|
$(TAGS_FILES) $(LISP)
|
||||||
|
tags=; \
|
||||||
|
here=`pwd`; \
|
||||||
|
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
|
||||||
|
unique=`for i in $$list; do \
|
||||||
|
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
|
||||||
|
done | \
|
||||||
|
$(AWK) ' { files[$$0] = 1; } \
|
||||||
|
END { for (i in files) print i; }'`; \
|
||||||
|
test -z "$(CTAGS_ARGS)$$tags$$unique" \
|
||||||
|
|| $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
|
||||||
|
$$tags $$unique
|
||||||
|
|
||||||
|
GTAGS:
|
||||||
|
here=`$(am__cd) $(top_builddir) && pwd` \
|
||||||
|
&& cd $(top_srcdir) \
|
||||||
|
&& gtags -i $(GTAGS_ARGS) $$here
|
||||||
|
|
||||||
|
distclean-tags:
|
||||||
|
-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
|
||||||
|
|
||||||
|
distdir: $(DISTFILES)
|
||||||
|
@srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
|
||||||
|
topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \
|
||||||
|
list='$(DISTFILES)'; for file in $$list; do \
|
||||||
|
case $$file in \
|
||||||
|
$(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \
|
||||||
|
$(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \
|
||||||
|
esac; \
|
||||||
|
if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
|
||||||
|
dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
|
||||||
|
if test "$$dir" != "$$file" && test "$$dir" != "."; then \
|
||||||
|
dir="/$$dir"; \
|
||||||
|
$(mkdir_p) "$(distdir)$$dir"; \
|
||||||
|
else \
|
||||||
|
dir=''; \
|
||||||
|
fi; \
|
||||||
|
if test -d $$d/$$file; then \
|
||||||
|
if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
|
||||||
|
cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
|
||||||
|
fi; \
|
||||||
|
cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
|
||||||
|
else \
|
||||||
|
test -f $(distdir)/$$file \
|
||||||
|
|| cp -p $$d/$$file $(distdir)/$$file \
|
||||||
|
|| exit 1; \
|
||||||
|
fi; \
|
||||||
|
done
|
||||||
|
check-am: all-am
|
||||||
|
check: check-am
|
||||||
|
all-am: Makefile $(LTLIBRARIES)
|
||||||
|
installdirs:
|
||||||
|
for dir in "$(DESTDIR)$(libdir)"; do \
|
||||||
|
test -z "$$dir" || $(mkdir_p) "$$dir"; \
|
||||||
|
done
|
||||||
|
install: install-am
|
||||||
|
install-exec: install-exec-am
|
||||||
|
install-data: install-data-am
|
||||||
|
uninstall: uninstall-am
|
||||||
|
|
||||||
|
install-am: all-am
|
||||||
|
@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
|
||||||
|
|
||||||
|
installcheck: installcheck-am
|
||||||
|
install-strip:
|
||||||
|
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
|
||||||
|
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
|
||||||
|
`test -z '$(STRIP)' || \
|
||||||
|
echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
|
||||||
|
mostlyclean-generic:
|
||||||
|
|
||||||
|
clean-generic:
|
||||||
|
|
||||||
|
distclean-generic:
|
||||||
|
-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
|
||||||
|
|
||||||
|
maintainer-clean-generic:
|
||||||
|
@echo "This command is intended for maintainers to use"
|
||||||
|
@echo "it deletes files that may require special tools to rebuild."
|
||||||
|
clean: clean-am
|
||||||
|
|
||||||
|
clean-am: clean-generic clean-libLTLIBRARIES clean-libtool \
|
||||||
|
mostlyclean-am
|
||||||
|
|
||||||
|
distclean: distclean-am
|
||||||
|
-rm -rf ./$(DEPDIR)
|
||||||
|
-rm -f Makefile
|
||||||
|
distclean-am: clean-am distclean-compile distclean-generic \
|
||||||
|
distclean-libtool distclean-tags
|
||||||
|
|
||||||
|
dvi: dvi-am
|
||||||
|
|
||||||
|
dvi-am:
|
||||||
|
|
||||||
|
html: html-am
|
||||||
|
|
||||||
|
info: info-am
|
||||||
|
|
||||||
|
info-am:
|
||||||
|
|
||||||
|
install-data-am:
|
||||||
|
|
||||||
|
install-exec-am: install-libLTLIBRARIES
|
||||||
|
|
||||||
|
install-info: install-info-am
|
||||||
|
|
||||||
|
install-man:
|
||||||
|
|
||||||
|
installcheck-am:
|
||||||
|
|
||||||
|
maintainer-clean: maintainer-clean-am
|
||||||
|
-rm -rf ./$(DEPDIR)
|
||||||
|
-rm -f Makefile
|
||||||
|
maintainer-clean-am: distclean-am maintainer-clean-generic
|
||||||
|
|
||||||
|
mostlyclean: mostlyclean-am
|
||||||
|
|
||||||
|
mostlyclean-am: mostlyclean-compile mostlyclean-generic \
|
||||||
|
mostlyclean-libtool
|
||||||
|
|
||||||
|
pdf: pdf-am
|
||||||
|
|
||||||
|
pdf-am:
|
||||||
|
|
||||||
|
ps: ps-am
|
||||||
|
|
||||||
|
ps-am:
|
||||||
|
|
||||||
|
uninstall-am: uninstall-info-am uninstall-libLTLIBRARIES
|
||||||
|
|
||||||
|
.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \
|
||||||
|
clean-libLTLIBRARIES clean-libtool ctags distclean \
|
||||||
|
distclean-compile distclean-generic distclean-libtool \
|
||||||
|
distclean-tags distdir dvi dvi-am html html-am info info-am \
|
||||||
|
install install-am install-data install-data-am install-exec \
|
||||||
|
install-exec-am install-info install-info-am \
|
||||||
|
install-libLTLIBRARIES install-man install-strip installcheck \
|
||||||
|
installcheck-am installdirs maintainer-clean \
|
||||||
|
maintainer-clean-generic mostlyclean mostlyclean-compile \
|
||||||
|
mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
|
||||||
|
tags uninstall uninstall-am uninstall-info-am \
|
||||||
|
uninstall-libLTLIBRARIES
|
||||||
|
|
||||||
|
# Tell versions [3.59,3.63) of GNU make to not export all variables.
|
||||||
|
# Otherwise a system limit (for SysV at least) may be exceeded.
|
||||||
|
.NOEXPORT:
|
303
smmapdfw/recpverify_worker/recpveri_worker.c
Normal file
303
smmapdfw/recpverify_worker/recpveri_worker.c
Normal file
@ -0,0 +1,303 @@
|
|||||||
|
/*
|
||||||
|
Copyright (C) 2004, Wolfgang Hottgenroth
|
||||||
|
|
||||||
|
This file is part of smmapdfw.
|
||||||
|
|
||||||
|
smmapdfw is free software; you can redistribute it and/or modify it
|
||||||
|
under the terms of the GNU General Public License as published by
|
||||||
|
the Free Software Foundation; either version 2 of the License, or
|
||||||
|
(at your option) any later version.
|
||||||
|
|
||||||
|
smmapdfw is distributed in the hope that it will be useful, but WITHOUT
|
||||||
|
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
|
||||||
|
or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
|
||||||
|
License for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU General Public License
|
||||||
|
along with smmapdfw. If not, write to the Free Software Foundation, 59
|
||||||
|
Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include <syslog.h>
|
||||||
|
#include <string.h>
|
||||||
|
|
||||||
|
#include "containers_public.h"
|
||||||
|
#include "smmapd.h"
|
||||||
|
|
||||||
|
#include "smtp.h"
|
||||||
|
#include "htdns.h"
|
||||||
|
#include "htmalloc.h"
|
||||||
|
#include "htbuffer.h"
|
||||||
|
#include "stats.h"
|
||||||
|
|
||||||
|
#define SMM_LOCAL_PERM_NOK 101
|
||||||
|
#define SMM_LOCAL_TEMP_NOK 102
|
||||||
|
#define SMM_LOCAL_OK 103
|
||||||
|
|
||||||
|
|
||||||
|
counterDef_t *recpveri_counterDefs = NULL;
|
||||||
|
void recpveri_setupCounterList() {
|
||||||
|
recpveri_counterDefs = addOneCounterDef(recpveri_counterDefs, SMM_TYPE_COUNTER, "RecpVeri: checker");
|
||||||
|
recpveri_counterDefs = addOneCounterDef(recpveri_counterDefs, SMM_TYPE_COUNTER, "RecpVeri: illegal input");
|
||||||
|
recpveri_counterDefs = addOneCounterDef(recpveri_counterDefs, SMM_TYPE_COUNTER, "RecpVeri: dns failure");
|
||||||
|
recpveri_counterDefs = addOneCounterDef(recpveri_counterDefs, SMM_TYPE_COUNTER, "RecpVeri: returned OK");
|
||||||
|
recpveri_counterDefs = addOneCounterDef(recpveri_counterDefs, SMM_TYPE_COUNTER, "RecpVeri: returned NOK");
|
||||||
|
recpveri_counterDefs = addOneCounterDef(recpveri_counterDefs, SMM_TYPE_COUNTER, "RecpVeri: returned TNOK");
|
||||||
|
};
|
||||||
|
|
||||||
|
#define STAT_CNT_RECPVERI_WORKER 0
|
||||||
|
#define STAT_CNT_RECPVERI_ILLEGAL_INPUT 1
|
||||||
|
#define STAT_CNT_RECPVERI_DNS_FAILURE 2
|
||||||
|
#define STAT_CNT_RECPVERI_RETURNED_OK 3
|
||||||
|
#define STAT_CNT_RECPVERI_RETURNED_NOK 4
|
||||||
|
#define STAT_CNT_RECPVERI_RETURNED_TNOK 5
|
||||||
|
|
||||||
|
|
||||||
|
struct recpveri_container_handle_s {
|
||||||
|
cfgl_t *cfg;
|
||||||
|
statCounter_t *statCounter;
|
||||||
|
int timeout;
|
||||||
|
char *sender_address;
|
||||||
|
char *ehlo_arg;
|
||||||
|
int smtp_port;
|
||||||
|
};
|
||||||
|
|
||||||
|
typedef struct recpveri_container_handle_s recpveri_container_handle_t;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
struct recpveri_work_handle_s {
|
||||||
|
int id;
|
||||||
|
recpveri_container_handle_t *rvch;
|
||||||
|
};
|
||||||
|
|
||||||
|
typedef struct recpveri_work_handle_s recpveri_work_handle_t;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
int recpveri_init(cfgl_t *cfg, void **handle);
|
||||||
|
int recpveri_destroy(void *handle);
|
||||||
|
/* int recpveri_work_setup(void *handle, void **work_handle); */
|
||||||
|
int recpveri_work(void *handle, void *work_handle, char *input, htbuffer_t *output);
|
||||||
|
/* int recpveri_work_destroy(void *handle, void *work_handle); */
|
||||||
|
|
||||||
|
|
||||||
|
class_descriptor_t recpvericheck = {
|
||||||
|
"recpvericheck",
|
||||||
|
&recpveri_init,
|
||||||
|
&recpveri_destroy,
|
||||||
|
NULL, /* &recpveri_work_setup, */
|
||||||
|
&recpveri_work,
|
||||||
|
NULL /* &recpveri_work_destroy */
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
int recpveri_init(cfgl_t *cfg, void **handle) {
|
||||||
|
recpveri_container_handle_t *rvch;
|
||||||
|
|
||||||
|
rvch = (recpveri_container_handle_t*) htmalloc(sizeof(recpveri_container_handle_t));
|
||||||
|
rvch->cfg = cfg;
|
||||||
|
|
||||||
|
rvch->timeout = atoi(findcfglx(rvch->cfg, "timeout", "5"));
|
||||||
|
rvch->sender_address = findcfglx(rvch->cfg, "sender_address", "<>");
|
||||||
|
rvch->ehlo_arg = findcfglx(rvch->cfg, "ehlo_arg", "local");
|
||||||
|
rvch->smtp_port = atoi(findcfglx(rvch->cfg, "smtp_port", "25"));
|
||||||
|
|
||||||
|
recpveri_setupCounterList();
|
||||||
|
rvch->statCounter = initStatCounter("recpveri", recpveri_counterDefs);
|
||||||
|
|
||||||
|
*handle = rvch;
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
int recpveri_destroy(void *handle) {
|
||||||
|
recpveri_container_handle_t *rvch = (recpveri_container_handle_t*)handle;
|
||||||
|
|
||||||
|
free(rvch);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
int recpveri_work(void *handle, void *work_handle, char *input, htbuffer_t *output) {
|
||||||
|
static const char *DEFAULT_ANSWER = "default answer";
|
||||||
|
static const char *ILLEGAL_INPUT = "illegal input (must be 'mailaddress mailserver')";
|
||||||
|
static const char *UNEXPECTED_ERROR = "unexpected error in smtp dialog";
|
||||||
|
static const char *TIMEOUT_ERROR = "timeout on smtp dialog";
|
||||||
|
static const char *GO_AHEAD = "go ahead";
|
||||||
|
static const char *DNS_ERROR = "mailserver could not be found in dns";
|
||||||
|
|
||||||
|
static int log_id = 0;
|
||||||
|
|
||||||
|
recpveri_container_handle_t *rvch = (recpveri_container_handle_t*) handle;
|
||||||
|
int result = SMM_TEMP_NOK;
|
||||||
|
char *mailaddress, *mailserver, *response_text, *tmp_arg;
|
||||||
|
|
||||||
|
smtp_t *smtp;
|
||||||
|
a_rdata_t **a_rdata;
|
||||||
|
int ip_address, done=0, err;
|
||||||
|
|
||||||
|
enum {
|
||||||
|
CONNECT, EHLO, MAILFROM, RCPTTO, RSET, QUIT, END
|
||||||
|
} state = CONNECT;
|
||||||
|
|
||||||
|
|
||||||
|
log_id++;
|
||||||
|
|
||||||
|
syslog(LOG_DEBUG, "recpveri_work: (%04x) going to check %s", log_id, input);
|
||||||
|
|
||||||
|
incStatCounter(rvch->statCounter, STAT_CNT_RECPVERI_WORKER);
|
||||||
|
|
||||||
|
mailaddress = input;
|
||||||
|
if (NULL == (mailserver = strchr(mailaddress, ' '))) {
|
||||||
|
// snprintf(output, ANSWER_BUFSIZE, ILLEGAL_INPUT);
|
||||||
|
htbuffer_strcpy(output, ILLEGAL_INPUT);
|
||||||
|
incStatCounter(rvch->statCounter, STAT_CNT_RECPVERI_ILLEGAL_INPUT);
|
||||||
|
return SMM_PERM_NOK;
|
||||||
|
}
|
||||||
|
|
||||||
|
*mailserver = '\0';
|
||||||
|
mailserver++;
|
||||||
|
|
||||||
|
|
||||||
|
a_rdata = get_a_rrs(mailserver);
|
||||||
|
if (NULL == a_rdata) {
|
||||||
|
syslog(LOG_DEBUG, "recpveri_work: (%04x) mailserver %s could not be found in dns",
|
||||||
|
log_id, mailserver);
|
||||||
|
// snprintf(output, ANSWER_BUFSIZE, DEPOT_DNS_ERROR);
|
||||||
|
htbuffer_strcpy(output, DNS_ERROR);
|
||||||
|
incStatCounter(rvch->statCounter, STAT_CNT_RECPVERI_DNS_FAILURE);
|
||||||
|
return SMM_TEMP_NOK;
|
||||||
|
}
|
||||||
|
|
||||||
|
ip_address = (*a_rdata)->address;
|
||||||
|
free_rrs((void**)a_rdata);
|
||||||
|
|
||||||
|
|
||||||
|
syslog(LOG_DEBUG, "recpveri_work: (%04x) mailaddress %s, mailserver %s", log_id,
|
||||||
|
mailaddress, mailserver);
|
||||||
|
|
||||||
|
|
||||||
|
smtp = smtp_init(ip_address, rvch->smtp_port, rvch->timeout);
|
||||||
|
|
||||||
|
while ((END != state) && (0 == done)) {
|
||||||
|
syslog(LOG_DEBUG, "recpveri_work: (%04x) smtp dialog state %d", log_id, state);
|
||||||
|
switch(state) {
|
||||||
|
case CONNECT:
|
||||||
|
err = smtp_connect(smtp);
|
||||||
|
break;
|
||||||
|
case EHLO:
|
||||||
|
err = smtp_ehlo(smtp, rvch->ehlo_arg);
|
||||||
|
break;
|
||||||
|
case MAILFROM:
|
||||||
|
err = smtp_mailfrom(smtp, rvch->sender_address);
|
||||||
|
break;
|
||||||
|
case RCPTTO:
|
||||||
|
tmp_arg = (char*) htmalloc(sizeof(char) * (strlen(mailaddress)+5));
|
||||||
|
*tmp_arg = '\0';
|
||||||
|
strcat(tmp_arg, "<");
|
||||||
|
strcat(tmp_arg, mailaddress);
|
||||||
|
strcat(tmp_arg, ">");
|
||||||
|
err = smtp_rcptto(smtp, tmp_arg);
|
||||||
|
free(tmp_arg);
|
||||||
|
break;
|
||||||
|
case RSET:
|
||||||
|
err = smtp_rset(smtp);
|
||||||
|
break;
|
||||||
|
case QUIT:
|
||||||
|
err = smtp_quit(smtp);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
state++;
|
||||||
|
|
||||||
|
switch(err) {
|
||||||
|
case SMTP_TIMEOUT:
|
||||||
|
syslog(LOG_DEBUG, "recpveri_work: (%04x) timeout in smtp dialog", log_id);
|
||||||
|
result = SMM_LOCAL_TEMP_NOK;
|
||||||
|
response_text = (char*)TIMEOUT_ERROR;
|
||||||
|
done = 1;
|
||||||
|
break;
|
||||||
|
case 0:
|
||||||
|
/* evaluate smtp_response, return or continue */
|
||||||
|
err = smtp_response(smtp, &response_text);
|
||||||
|
if (-1 == err) {
|
||||||
|
syslog(LOG_DEBUG, "recpveri_work: (%04x) response could not be parsed", log_id);
|
||||||
|
result = SMM_LOCAL_TEMP_NOK;
|
||||||
|
response_text = (char*)UNEXPECTED_ERROR;
|
||||||
|
done = 1;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
syslog(LOG_DEBUG, "recpveri_work: (%04x) response: %d, %s", log_id,
|
||||||
|
err, response_text);
|
||||||
|
switch(err/100) {
|
||||||
|
case 4:
|
||||||
|
result = SMM_LOCAL_TEMP_NOK;
|
||||||
|
done = 1;
|
||||||
|
break;
|
||||||
|
case 5:
|
||||||
|
result = SMM_LOCAL_PERM_NOK;
|
||||||
|
done = 1;
|
||||||
|
break;
|
||||||
|
case 2:
|
||||||
|
if (END == state) {
|
||||||
|
result = SMM_LOCAL_OK;
|
||||||
|
response_text = (char*)GO_AHEAD;
|
||||||
|
done = 1;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
syslog(LOG_DEBUG, "recpveri_work: (%04x) unexpected error in smtp dialog", log_id);
|
||||||
|
result = SMM_LOCAL_TEMP_NOK;
|
||||||
|
response_text = (char*)UNEXPECTED_ERROR;
|
||||||
|
done = 1;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
smtp_close(smtp);
|
||||||
|
|
||||||
|
|
||||||
|
switch (result) {
|
||||||
|
case SMM_LOCAL_TEMP_NOK:
|
||||||
|
htbuffer_strcat(output, "<TNOK><");
|
||||||
|
htbuffer_strcat(output, response_text);
|
||||||
|
htbuffer_strcat(output, ">");
|
||||||
|
//snprintf(output, ANSWER_BUFSIZE, "<TNOK><%s>", response_text);
|
||||||
|
result = SMM_OK;
|
||||||
|
incStatCounter(rvch->statCounter, STAT_CNT_RECPVERI_RETURNED_TNOK);
|
||||||
|
break;
|
||||||
|
case SMM_LOCAL_PERM_NOK:
|
||||||
|
htbuffer_strcat(output, "<NOK><");
|
||||||
|
htbuffer_strcat(output, response_text);
|
||||||
|
htbuffer_strcat(output, ">");
|
||||||
|
//snprintf(output, ANSWER_BUFSIZE, "<NOK><%s>", response_text);
|
||||||
|
result = SMM_OK;
|
||||||
|
incStatCounter(rvch->statCounter, STAT_CNT_RECPVERI_RETURNED_NOK);
|
||||||
|
break;
|
||||||
|
case SMM_LOCAL_OK:
|
||||||
|
htbuffer_strcat(output, "<OK><");
|
||||||
|
htbuffer_strcat(output, response_text);
|
||||||
|
htbuffer_strcat(output, ">");
|
||||||
|
//snprintf(output, ANSWER_BUFSIZE, "<OK><%s>", response_text);
|
||||||
|
result = SMM_OK;
|
||||||
|
incStatCounter(rvch->statCounter, STAT_CNT_RECPVERI_RETURNED_OK);
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
htbuffer_strcpy(output, response_text);
|
||||||
|
//snprintf(output, ANSWER_BUFSIZE, response_text);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
smtp_destroy(smtp);
|
||||||
|
|
||||||
|
syslog(LOG_DEBUG, "recpveri_work: (%04x) result %d, %s", log_id,
|
||||||
|
result, output->buf);
|
||||||
|
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
@ -1,9 +1,12 @@
|
|||||||
noinst_HEADERS = containers.h
|
noinst_HEADERS = containers.h snmp_subagent.h
|
||||||
sysconf_DATA = smmapd.ini
|
sysconf_DATA = smmapd.ini
|
||||||
bin_PROGRAMS = smmapd
|
bin_PROGRAMS = smmapd workertest
|
||||||
smmapd_SOURCES = smmapd.c containers.c
|
smmapd_SOURCES = smmapd.c containers.c snmp_subagent.c
|
||||||
smmapd_LDADD = ../libsmmapdfw/libsmmapdfw.la
|
smmapd_LDADD = ../libsmmapdfw/libsmmapdfw.la
|
||||||
|
workertest_SOURCES = workertest.c containers.c
|
||||||
|
workertest_LDADD = ../libsmmapdfw/libsmmapdfw.la
|
||||||
|
|
||||||
INCLUDES = -I../libsmmapdfw
|
INCLUDES = -I../libsmmapdfw
|
||||||
CPPFLAGS = -DDEFAULT_SMMAPD_INI=\"$(sysconfdir)/smmapd.ini\" @CPPFLAGS@
|
AM_CPPFLAGS = -DDEFAULT_SMMAPD_INI=\"$(sysconfdir)/smmapd.ini\" @CPPFLAGS@
|
||||||
|
|
||||||
|
EXTRA_DIST = smmapd.ini
|
@ -1,6 +1,8 @@
|
|||||||
# Makefile.in generated automatically by automake 1.4-p6 from Makefile.am
|
# Makefile.in generated by automake 1.9.6 from Makefile.am.
|
||||||
|
# @configure_input@
|
||||||
|
|
||||||
# Copyright (C) 1994, 1995-8, 1999, 2001 Free Software Foundation, Inc.
|
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
|
||||||
|
# 2003, 2004, 2005 Free Software Foundation, Inc.
|
||||||
# This Makefile.in is free software; the Free Software Foundation
|
# This Makefile.in is free software; the Free Software Foundation
|
||||||
# gives unlimited permission to copy and/or distribute it,
|
# gives unlimited permission to copy and/or distribute it,
|
||||||
# with or without modifications, as long as this notice is preserved.
|
# with or without modifications, as long as this notice is preserved.
|
||||||
@ -10,187 +12,292 @@
|
|||||||
# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
|
# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
|
||||||
# PARTICULAR PURPOSE.
|
# PARTICULAR PURPOSE.
|
||||||
|
|
||||||
|
@SET_MAKE@
|
||||||
|
|
||||||
|
|
||||||
SHELL = @SHELL@
|
|
||||||
|
|
||||||
srcdir = @srcdir@
|
srcdir = @srcdir@
|
||||||
top_srcdir = @top_srcdir@
|
top_srcdir = @top_srcdir@
|
||||||
VPATH = @srcdir@
|
VPATH = @srcdir@
|
||||||
prefix = @prefix@
|
|
||||||
exec_prefix = @exec_prefix@
|
|
||||||
|
|
||||||
bindir = @bindir@
|
|
||||||
sbindir = @sbindir@
|
|
||||||
libexecdir = @libexecdir@
|
|
||||||
datadir = @datadir@
|
|
||||||
sysconfdir = @sysconfdir@
|
|
||||||
sharedstatedir = @sharedstatedir@
|
|
||||||
localstatedir = @localstatedir@
|
|
||||||
libdir = @libdir@
|
|
||||||
infodir = @infodir@
|
|
||||||
mandir = @mandir@
|
|
||||||
includedir = @includedir@
|
|
||||||
oldincludedir = /usr/include
|
|
||||||
|
|
||||||
DESTDIR =
|
|
||||||
|
|
||||||
pkgdatadir = $(datadir)/@PACKAGE@
|
pkgdatadir = $(datadir)/@PACKAGE@
|
||||||
pkglibdir = $(libdir)/@PACKAGE@
|
pkglibdir = $(libdir)/@PACKAGE@
|
||||||
pkgincludedir = $(includedir)/@PACKAGE@
|
pkgincludedir = $(includedir)/@PACKAGE@
|
||||||
|
|
||||||
top_builddir = ..
|
top_builddir = ..
|
||||||
|
am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
|
||||||
ACLOCAL = @ACLOCAL@
|
|
||||||
AUTOCONF = @AUTOCONF@
|
|
||||||
AUTOMAKE = @AUTOMAKE@
|
|
||||||
AUTOHEADER = @AUTOHEADER@
|
|
||||||
|
|
||||||
INSTALL = @INSTALL@
|
INSTALL = @INSTALL@
|
||||||
INSTALL_PROGRAM = @INSTALL_PROGRAM@ $(AM_INSTALL_PROGRAM_FLAGS)
|
install_sh_DATA = $(install_sh) -c -m 644
|
||||||
INSTALL_DATA = @INSTALL_DATA@
|
install_sh_PROGRAM = $(install_sh) -c
|
||||||
INSTALL_SCRIPT = @INSTALL_SCRIPT@
|
install_sh_SCRIPT = $(install_sh) -c
|
||||||
transform = @program_transform_name@
|
INSTALL_HEADER = $(INSTALL_DATA)
|
||||||
|
transform = $(program_transform_name)
|
||||||
NORMAL_INSTALL = :
|
NORMAL_INSTALL = :
|
||||||
PRE_INSTALL = :
|
PRE_INSTALL = :
|
||||||
POST_INSTALL = :
|
POST_INSTALL = :
|
||||||
NORMAL_UNINSTALL = :
|
NORMAL_UNINSTALL = :
|
||||||
PRE_UNINSTALL = :
|
PRE_UNINSTALL = :
|
||||||
POST_UNINSTALL = :
|
POST_UNINSTALL = :
|
||||||
host_alias = @host_alias@
|
build_triplet = @build@
|
||||||
host_triplet = @host@
|
host_triplet = @host@
|
||||||
|
bin_PROGRAMS = smmapd$(EXEEXT) workertest$(EXEEXT)
|
||||||
|
subdir = smmapd
|
||||||
|
DIST_COMMON = $(noinst_HEADERS) $(srcdir)/Makefile.am \
|
||||||
|
$(srcdir)/Makefile.in
|
||||||
|
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
|
||||||
|
am__aclocal_m4_deps = $(top_srcdir)/configure.ac
|
||||||
|
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
|
||||||
|
$(ACLOCAL_M4)
|
||||||
|
mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
|
||||||
|
CONFIG_HEADER = $(top_builddir)/config.h
|
||||||
|
CONFIG_CLEAN_FILES =
|
||||||
|
am__installdirs = "$(DESTDIR)$(bindir)" "$(DESTDIR)$(sysconfdir)"
|
||||||
|
binPROGRAMS_INSTALL = $(INSTALL_PROGRAM)
|
||||||
|
PROGRAMS = $(bin_PROGRAMS)
|
||||||
|
am_smmapd_OBJECTS = smmapd.$(OBJEXT) containers.$(OBJEXT) \
|
||||||
|
snmp_subagent.$(OBJEXT)
|
||||||
|
smmapd_OBJECTS = $(am_smmapd_OBJECTS)
|
||||||
|
smmapd_DEPENDENCIES = ../libsmmapdfw/libsmmapdfw.la
|
||||||
|
am_workertest_OBJECTS = workertest.$(OBJEXT) containers.$(OBJEXT)
|
||||||
|
workertest_OBJECTS = $(am_workertest_OBJECTS)
|
||||||
|
workertest_DEPENDENCIES = ../libsmmapdfw/libsmmapdfw.la
|
||||||
|
DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir)
|
||||||
|
depcomp = $(SHELL) $(top_srcdir)/depcomp
|
||||||
|
am__depfiles_maybe = depfiles
|
||||||
|
COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
|
||||||
|
$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
|
||||||
|
LTCOMPILE = $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) \
|
||||||
|
$(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
|
||||||
|
$(AM_CFLAGS) $(CFLAGS)
|
||||||
|
CCLD = $(CC)
|
||||||
|
LINK = $(LIBTOOL) --tag=CC --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
|
||||||
|
$(AM_LDFLAGS) $(LDFLAGS) -o $@
|
||||||
|
SOURCES = $(smmapd_SOURCES) $(workertest_SOURCES)
|
||||||
|
DIST_SOURCES = $(smmapd_SOURCES) $(workertest_SOURCES)
|
||||||
|
am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
|
||||||
|
am__vpath_adj = case $$p in \
|
||||||
|
$(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
|
||||||
|
*) f=$$p;; \
|
||||||
|
esac;
|
||||||
|
am__strip_dir = `echo $$p | sed -e 's|^.*/||'`;
|
||||||
|
sysconfDATA_INSTALL = $(INSTALL_DATA)
|
||||||
|
DATA = $(sysconf_DATA)
|
||||||
|
HEADERS = $(noinst_HEADERS)
|
||||||
|
ETAGS = etags
|
||||||
|
CTAGS = ctags
|
||||||
|
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
|
||||||
|
ACLOCAL = @ACLOCAL@
|
||||||
|
AMDEP_FALSE = @AMDEP_FALSE@
|
||||||
|
AMDEP_TRUE = @AMDEP_TRUE@
|
||||||
|
AMTAR = @AMTAR@
|
||||||
AR = @AR@
|
AR = @AR@
|
||||||
AS = @AS@
|
AUTOCONF = @AUTOCONF@
|
||||||
|
AUTOHEADER = @AUTOHEADER@
|
||||||
|
AUTOMAKE = @AUTOMAKE@
|
||||||
|
AWK = @AWK@
|
||||||
BDB_LIBS = @BDB_LIBS@
|
BDB_LIBS = @BDB_LIBS@
|
||||||
CC = @CC@
|
CC = @CC@
|
||||||
|
CCDEPMODE = @CCDEPMODE@
|
||||||
|
CFLAGS = @CFLAGS@
|
||||||
|
CPP = @CPP@
|
||||||
|
CPPFLAGS = @CPPFLAGS@
|
||||||
CXX = @CXX@
|
CXX = @CXX@
|
||||||
CXXCPP = @CXXCPP@
|
CXXCPP = @CXXCPP@
|
||||||
DLLTOOL = @DLLTOOL@
|
CXXDEPMODE = @CXXDEPMODE@
|
||||||
|
CXXFLAGS = @CXXFLAGS@
|
||||||
|
CYGPATH_W = @CYGPATH_W@
|
||||||
|
DEFS = @DEFS@
|
||||||
|
DEPDIR = @DEPDIR@
|
||||||
ECHO = @ECHO@
|
ECHO = @ECHO@
|
||||||
|
ECHO_C = @ECHO_C@
|
||||||
|
ECHO_N = @ECHO_N@
|
||||||
|
ECHO_T = @ECHO_T@
|
||||||
EGREP = @EGREP@
|
EGREP = @EGREP@
|
||||||
EXEEXT = @EXEEXT@
|
EXEEXT = @EXEEXT@
|
||||||
F77 = @F77@
|
F77 = @F77@
|
||||||
GCJ = @GCJ@
|
FFLAGS = @FFLAGS@
|
||||||
GCJFLAGS = @GCJFLAGS@
|
GREP = @GREP@
|
||||||
HAVE_LIB = @HAVE_LIB@
|
INSTALL_DATA = @INSTALL_DATA@
|
||||||
LIB = @LIB@
|
INSTALL_PROGRAM = @INSTALL_PROGRAM@
|
||||||
|
INSTALL_SCRIPT = @INSTALL_SCRIPT@
|
||||||
|
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
|
||||||
|
LDFLAGS = @LDFLAGS@
|
||||||
|
LIBOBJS = @LIBOBJS@
|
||||||
|
LIBS = @LIBS@
|
||||||
LIBTOOL = @LIBTOOL@
|
LIBTOOL = @LIBTOOL@
|
||||||
LN_S = @LN_S@
|
LN_S = @LN_S@
|
||||||
LTLIB = @LTLIB@
|
LTLIBOBJS = @LTLIBOBJS@
|
||||||
MAINT = @MAINT@
|
MAINT = @MAINT@
|
||||||
|
MAINTAINER_MODE_FALSE = @MAINTAINER_MODE_FALSE@
|
||||||
|
MAINTAINER_MODE_TRUE = @MAINTAINER_MODE_TRUE@
|
||||||
MAKEINFO = @MAKEINFO@
|
MAKEINFO = @MAKEINFO@
|
||||||
OBJDUMP = @OBJDUMP@
|
|
||||||
OBJEXT = @OBJEXT@
|
OBJEXT = @OBJEXT@
|
||||||
PACKAGE = @PACKAGE@
|
PACKAGE = @PACKAGE@
|
||||||
|
PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
|
||||||
|
PACKAGE_NAME = @PACKAGE_NAME@
|
||||||
|
PACKAGE_STRING = @PACKAGE_STRING@
|
||||||
|
PACKAGE_TARNAME = @PACKAGE_TARNAME@
|
||||||
|
PACKAGE_VERSION = @PACKAGE_VERSION@
|
||||||
|
PATH_SEPARATOR = @PATH_SEPARATOR@
|
||||||
RANLIB = @RANLIB@
|
RANLIB = @RANLIB@
|
||||||
RC = @RC@
|
SED = @SED@
|
||||||
|
SET_MAKE = @SET_MAKE@
|
||||||
|
SHELL = @SHELL@
|
||||||
STRIP = @STRIP@
|
STRIP = @STRIP@
|
||||||
VERSION = @VERSION@
|
VERSION = @VERSION@
|
||||||
|
ac_ct_CC = @ac_ct_CC@
|
||||||
noinst_HEADERS = containers.h
|
ac_ct_CXX = @ac_ct_CXX@
|
||||||
|
ac_ct_F77 = @ac_ct_F77@
|
||||||
|
am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
|
||||||
|
am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
|
||||||
|
am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@
|
||||||
|
am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@
|
||||||
|
am__include = @am__include@
|
||||||
|
am__leading_dot = @am__leading_dot@
|
||||||
|
am__quote = @am__quote@
|
||||||
|
am__tar = @am__tar@
|
||||||
|
am__untar = @am__untar@
|
||||||
|
bindir = @bindir@
|
||||||
|
build = @build@
|
||||||
|
build_alias = @build_alias@
|
||||||
|
build_cpu = @build_cpu@
|
||||||
|
build_os = @build_os@
|
||||||
|
build_vendor = @build_vendor@
|
||||||
|
datadir = @datadir@
|
||||||
|
datarootdir = @datarootdir@
|
||||||
|
docdir = @docdir@
|
||||||
|
dvidir = @dvidir@
|
||||||
|
exec_prefix = @exec_prefix@
|
||||||
|
host = @host@
|
||||||
|
host_alias = @host_alias@
|
||||||
|
host_cpu = @host_cpu@
|
||||||
|
host_os = @host_os@
|
||||||
|
host_vendor = @host_vendor@
|
||||||
|
htmldir = @htmldir@
|
||||||
|
includedir = @includedir@
|
||||||
|
infodir = @infodir@
|
||||||
|
install_sh = @install_sh@
|
||||||
|
libdir = @libdir@
|
||||||
|
libexecdir = @libexecdir@
|
||||||
|
localedir = @localedir@
|
||||||
|
localstatedir = @localstatedir@
|
||||||
|
mandir = @mandir@
|
||||||
|
mkdir_p = @mkdir_p@
|
||||||
|
oldincludedir = @oldincludedir@
|
||||||
|
pdfdir = @pdfdir@
|
||||||
|
prefix = @prefix@
|
||||||
|
program_transform_name = @program_transform_name@
|
||||||
|
psdir = @psdir@
|
||||||
|
sbindir = @sbindir@
|
||||||
|
sharedstatedir = @sharedstatedir@
|
||||||
|
sysconfdir = @sysconfdir@
|
||||||
|
target_alias = @target_alias@
|
||||||
|
noinst_HEADERS = containers.h snmp_subagent.h
|
||||||
sysconf_DATA = smmapd.ini
|
sysconf_DATA = smmapd.ini
|
||||||
bin_PROGRAMS = smmapd
|
smmapd_SOURCES = smmapd.c containers.c snmp_subagent.c
|
||||||
smmapd_SOURCES = smmapd.c containers.c
|
|
||||||
smmapd_LDADD = ../libsmmapdfw/libsmmapdfw.la
|
smmapd_LDADD = ../libsmmapdfw/libsmmapdfw.la
|
||||||
|
workertest_SOURCES = workertest.c containers.c
|
||||||
|
workertest_LDADD = ../libsmmapdfw/libsmmapdfw.la
|
||||||
INCLUDES = -I../libsmmapdfw
|
INCLUDES = -I../libsmmapdfw
|
||||||
CPPFLAGS = -DDEFAULT_SMMAPD_INI=\"$(sysconfdir)/smmapd.ini\" @CPPFLAGS@
|
AM_CPPFLAGS = -DDEFAULT_SMMAPD_INI=\"$(sysconfdir)/smmapd.ini\" @CPPFLAGS@
|
||||||
mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
|
EXTRA_DIST = smmapd.ini
|
||||||
CONFIG_HEADER = ../config.h
|
all: all-am
|
||||||
CONFIG_CLEAN_FILES =
|
|
||||||
bin_PROGRAMS = smmapd$(EXEEXT)
|
|
||||||
PROGRAMS = $(bin_PROGRAMS)
|
|
||||||
|
|
||||||
|
|
||||||
DEFS = @DEFS@ -I. -I$(srcdir) -I..
|
|
||||||
LDFLAGS = @LDFLAGS@
|
|
||||||
LIBS = @LIBS@
|
|
||||||
smmapd_OBJECTS = smmapd.$(OBJEXT) containers.$(OBJEXT)
|
|
||||||
smmapd_DEPENDENCIES = ../libsmmapdfw/libsmmapdfw.la
|
|
||||||
smmapd_LDFLAGS =
|
|
||||||
CFLAGS = @CFLAGS@
|
|
||||||
COMPILE = $(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
|
|
||||||
LTCOMPILE = $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
|
|
||||||
CCLD = $(CC)
|
|
||||||
LINK = $(LIBTOOL) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(LDFLAGS) -o $@
|
|
||||||
DATA = $(sysconf_DATA)
|
|
||||||
|
|
||||||
HEADERS = $(noinst_HEADERS)
|
|
||||||
|
|
||||||
DIST_COMMON = Makefile.am Makefile.in
|
|
||||||
|
|
||||||
|
|
||||||
DISTFILES = $(DIST_COMMON) $(SOURCES) $(HEADERS) $(TEXINFOS) $(EXTRA_DIST)
|
|
||||||
|
|
||||||
TAR = tar
|
|
||||||
GZIP_ENV = --best
|
|
||||||
DEP_FILES = .deps/containers.P .deps/smmapd.P
|
|
||||||
SOURCES = $(smmapd_SOURCES)
|
|
||||||
OBJECTS = $(smmapd_OBJECTS)
|
|
||||||
|
|
||||||
all: all-redirect
|
|
||||||
.SUFFIXES:
|
.SUFFIXES:
|
||||||
.SUFFIXES: .S .c .lo .o .obj .s
|
.SUFFIXES: .c .lo .o .obj
|
||||||
$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ Makefile.am $(top_srcdir)/configure.ac $(ACLOCAL_M4)
|
$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps)
|
||||||
cd $(top_srcdir) && $(AUTOMAKE) --gnu smmapd/Makefile
|
@for dep in $?; do \
|
||||||
|
case '$(am__configure_deps)' in \
|
||||||
|
*$$dep*) \
|
||||||
|
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
|
||||||
|
&& exit 0; \
|
||||||
|
exit 1;; \
|
||||||
|
esac; \
|
||||||
|
done; \
|
||||||
|
echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu smmapd/Makefile'; \
|
||||||
|
cd $(top_srcdir) && \
|
||||||
|
$(AUTOMAKE) --gnu smmapd/Makefile
|
||||||
|
.PRECIOUS: Makefile
|
||||||
|
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
|
||||||
|
@case '$?' in \
|
||||||
|
*config.status*) \
|
||||||
|
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
|
||||||
|
*) \
|
||||||
|
echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
|
||||||
|
cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
|
||||||
|
esac;
|
||||||
|
|
||||||
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status $(BUILT_SOURCES)
|
$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
|
||||||
cd $(top_builddir) \
|
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
|
||||||
&& CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status
|
|
||||||
|
|
||||||
|
|
||||||
mostlyclean-binPROGRAMS:
|
|
||||||
|
|
||||||
clean-binPROGRAMS:
|
|
||||||
-test -z "$(bin_PROGRAMS)" || rm -f $(bin_PROGRAMS)
|
|
||||||
|
|
||||||
distclean-binPROGRAMS:
|
|
||||||
|
|
||||||
maintainer-clean-binPROGRAMS:
|
|
||||||
|
|
||||||
|
$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
|
||||||
|
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
|
||||||
|
$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
|
||||||
|
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
|
||||||
install-binPROGRAMS: $(bin_PROGRAMS)
|
install-binPROGRAMS: $(bin_PROGRAMS)
|
||||||
@$(NORMAL_INSTALL)
|
@$(NORMAL_INSTALL)
|
||||||
$(mkinstalldirs) $(DESTDIR)$(bindir)
|
test -z "$(bindir)" || $(mkdir_p) "$(DESTDIR)$(bindir)"
|
||||||
@list='$(bin_PROGRAMS)'; for p in $$list; do \
|
@list='$(bin_PROGRAMS)'; for p in $$list; do \
|
||||||
if test -f $$p; then \
|
p1=`echo $$p|sed 's/$(EXEEXT)$$//'`; \
|
||||||
echo " $(LIBTOOL) --mode=install $(INSTALL_PROGRAM) $$p $(DESTDIR)$(bindir)/`echo $$p|sed 's/$(EXEEXT)$$//'|sed '$(transform)'|sed 's/$$/$(EXEEXT)/'`"; \
|
if test -f $$p \
|
||||||
$(LIBTOOL) --mode=install $(INSTALL_PROGRAM) $$p $(DESTDIR)$(bindir)/`echo $$p|sed 's/$(EXEEXT)$$//'|sed '$(transform)'|sed 's/$$/$(EXEEXT)/'`; \
|
|| test -f $$p1 \
|
||||||
|
; then \
|
||||||
|
f=`echo "$$p1" | sed 's,^.*/,,;$(transform);s/$$/$(EXEEXT)/'`; \
|
||||||
|
echo " $(INSTALL_PROGRAM_ENV) $(LIBTOOL) --mode=install $(binPROGRAMS_INSTALL) '$$p' '$(DESTDIR)$(bindir)/$$f'"; \
|
||||||
|
$(INSTALL_PROGRAM_ENV) $(LIBTOOL) --mode=install $(binPROGRAMS_INSTALL) "$$p" "$(DESTDIR)$(bindir)/$$f" || exit 1; \
|
||||||
else :; fi; \
|
else :; fi; \
|
||||||
done
|
done
|
||||||
|
|
||||||
uninstall-binPROGRAMS:
|
uninstall-binPROGRAMS:
|
||||||
@$(NORMAL_UNINSTALL)
|
@$(NORMAL_UNINSTALL)
|
||||||
list='$(bin_PROGRAMS)'; for p in $$list; do \
|
@list='$(bin_PROGRAMS)'; for p in $$list; do \
|
||||||
rm -f $(DESTDIR)$(bindir)/`echo $$p|sed 's/$(EXEEXT)$$//'|sed '$(transform)'|sed 's/$$/$(EXEEXT)/'`; \
|
f=`echo "$$p" | sed 's,^.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/'`; \
|
||||||
|
echo " rm -f '$(DESTDIR)$(bindir)/$$f'"; \
|
||||||
|
rm -f "$(DESTDIR)$(bindir)/$$f"; \
|
||||||
done
|
done
|
||||||
|
|
||||||
# FIXME: We should only use cygpath when building on Windows,
|
clean-binPROGRAMS:
|
||||||
# and only if it is available.
|
@list='$(bin_PROGRAMS)'; for p in $$list; do \
|
||||||
.c.obj:
|
f=`echo $$p|sed 's/$(EXEEXT)$$//'`; \
|
||||||
$(COMPILE) -c `cygpath -w $<`
|
echo " rm -f $$p $$f"; \
|
||||||
|
rm -f $$p $$f ; \
|
||||||
.s.o:
|
done
|
||||||
$(COMPILE) -c $<
|
smmapd$(EXEEXT): $(smmapd_OBJECTS) $(smmapd_DEPENDENCIES)
|
||||||
|
@rm -f smmapd$(EXEEXT)
|
||||||
.S.o:
|
$(LINK) $(smmapd_LDFLAGS) $(smmapd_OBJECTS) $(smmapd_LDADD) $(LIBS)
|
||||||
$(COMPILE) -c $<
|
workertest$(EXEEXT): $(workertest_OBJECTS) $(workertest_DEPENDENCIES)
|
||||||
|
@rm -f workertest$(EXEEXT)
|
||||||
|
$(LINK) $(workertest_LDFLAGS) $(workertest_OBJECTS) $(workertest_LDADD) $(LIBS)
|
||||||
|
|
||||||
mostlyclean-compile:
|
mostlyclean-compile:
|
||||||
-rm -f *.o core *.core
|
|
||||||
-rm -f *.$(OBJEXT)
|
-rm -f *.$(OBJEXT)
|
||||||
|
|
||||||
clean-compile:
|
|
||||||
|
|
||||||
distclean-compile:
|
distclean-compile:
|
||||||
-rm -f *.tab.c
|
-rm -f *.tab.c
|
||||||
|
|
||||||
maintainer-clean-compile:
|
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/containers.Po@am__quote@
|
||||||
|
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/smmapd.Po@am__quote@
|
||||||
|
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/snmp_subagent.Po@am__quote@
|
||||||
|
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/workertest.Po@am__quote@
|
||||||
|
|
||||||
.s.lo:
|
.c.o:
|
||||||
$(LIBTOOL) --mode=compile $(COMPILE) -c $<
|
@am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \
|
||||||
|
@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
|
||||||
|
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
|
||||||
|
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||||
|
@am__fastdepCC_FALSE@ $(COMPILE) -c $<
|
||||||
|
|
||||||
.S.lo:
|
.c.obj:
|
||||||
$(LIBTOOL) --mode=compile $(COMPILE) -c $<
|
@am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ `$(CYGPATH_W) '$<'`; \
|
||||||
|
@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
|
||||||
|
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
|
||||||
|
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||||
|
@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'`
|
||||||
|
|
||||||
|
.c.lo:
|
||||||
|
@am__fastdepCC_TRUE@ if $(LTCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \
|
||||||
|
@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Plo"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
|
||||||
|
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
|
||||||
|
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||||
|
@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $<
|
||||||
|
|
||||||
mostlyclean-libtool:
|
mostlyclean-libtool:
|
||||||
-rm -f *.lo
|
-rm -f *.lo
|
||||||
@ -199,190 +306,195 @@ clean-libtool:
|
|||||||
-rm -rf .libs _libs
|
-rm -rf .libs _libs
|
||||||
|
|
||||||
distclean-libtool:
|
distclean-libtool:
|
||||||
|
-rm -f libtool
|
||||||
maintainer-clean-libtool:
|
uninstall-info-am:
|
||||||
|
|
||||||
smmapd$(EXEEXT): $(smmapd_OBJECTS) $(smmapd_DEPENDENCIES)
|
|
||||||
@rm -f smmapd$(EXEEXT)
|
|
||||||
$(LINK) $(smmapd_LDFLAGS) $(smmapd_OBJECTS) $(smmapd_LDADD) $(LIBS)
|
|
||||||
|
|
||||||
install-sysconfDATA: $(sysconf_DATA)
|
install-sysconfDATA: $(sysconf_DATA)
|
||||||
@$(NORMAL_INSTALL)
|
@$(NORMAL_INSTALL)
|
||||||
$(mkinstalldirs) $(DESTDIR)$(sysconfdir)
|
test -z "$(sysconfdir)" || $(mkdir_p) "$(DESTDIR)$(sysconfdir)"
|
||||||
@list='$(sysconf_DATA)'; for p in $$list; do \
|
@list='$(sysconf_DATA)'; for p in $$list; do \
|
||||||
if test -f $(srcdir)/$$p; then \
|
if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
|
||||||
echo " $(INSTALL_DATA) $(srcdir)/$$p $(DESTDIR)$(sysconfdir)/$$p"; \
|
f=$(am__strip_dir) \
|
||||||
$(INSTALL_DATA) $(srcdir)/$$p $(DESTDIR)$(sysconfdir)/$$p; \
|
echo " $(sysconfDATA_INSTALL) '$$d$$p' '$(DESTDIR)$(sysconfdir)/$$f'"; \
|
||||||
else if test -f $$p; then \
|
$(sysconfDATA_INSTALL) "$$d$$p" "$(DESTDIR)$(sysconfdir)/$$f"; \
|
||||||
echo " $(INSTALL_DATA) $$p $(DESTDIR)$(sysconfdir)/$$p"; \
|
|
||||||
$(INSTALL_DATA) $$p $(DESTDIR)$(sysconfdir)/$$p; \
|
|
||||||
fi; fi; \
|
|
||||||
done
|
done
|
||||||
|
|
||||||
uninstall-sysconfDATA:
|
uninstall-sysconfDATA:
|
||||||
@$(NORMAL_UNINSTALL)
|
@$(NORMAL_UNINSTALL)
|
||||||
list='$(sysconf_DATA)'; for p in $$list; do \
|
@list='$(sysconf_DATA)'; for p in $$list; do \
|
||||||
rm -f $(DESTDIR)$(sysconfdir)/$$p; \
|
f=$(am__strip_dir) \
|
||||||
|
echo " rm -f '$(DESTDIR)$(sysconfdir)/$$f'"; \
|
||||||
|
rm -f "$(DESTDIR)$(sysconfdir)/$$f"; \
|
||||||
done
|
done
|
||||||
|
|
||||||
|
ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
|
||||||
|
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
|
||||||
|
unique=`for i in $$list; do \
|
||||||
|
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
|
||||||
|
done | \
|
||||||
|
$(AWK) ' { files[$$0] = 1; } \
|
||||||
|
END { for (i in files) print i; }'`; \
|
||||||
|
mkid -fID $$unique
|
||||||
tags: TAGS
|
tags: TAGS
|
||||||
|
|
||||||
ID: $(HEADERS) $(SOURCES) $(LISP)
|
TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
|
||||||
list='$(SOURCES) $(HEADERS)'; \
|
$(TAGS_FILES) $(LISP)
|
||||||
unique=`for i in $$list; do echo $$i; done | \
|
|
||||||
awk ' { files[$$0] = 1; } \
|
|
||||||
END { for (i in files) print i; }'`; \
|
|
||||||
here=`pwd` && cd $(srcdir) \
|
|
||||||
&& mkid -f$$here/ID $$unique $(LISP)
|
|
||||||
|
|
||||||
TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) $(LISP)
|
|
||||||
tags=; \
|
tags=; \
|
||||||
here=`pwd`; \
|
here=`pwd`; \
|
||||||
list='$(SOURCES) $(HEADERS)'; \
|
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
|
||||||
unique=`for i in $$list; do echo $$i; done | \
|
unique=`for i in $$list; do \
|
||||||
awk ' { files[$$0] = 1; } \
|
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
|
||||||
|
done | \
|
||||||
|
$(AWK) ' { files[$$0] = 1; } \
|
||||||
END { for (i in files) print i; }'`; \
|
END { for (i in files) print i; }'`; \
|
||||||
test -z "$(ETAGS_ARGS)$$unique$(LISP)$$tags" \
|
if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
|
||||||
|| (cd $(srcdir) && etags -o $$here/TAGS $(ETAGS_ARGS) $$tags $$unique $(LISP))
|
test -n "$$unique" || unique=$$empty_fix; \
|
||||||
|
$(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
|
||||||
|
$$tags $$unique; \
|
||||||
|
fi
|
||||||
|
ctags: CTAGS
|
||||||
|
CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
|
||||||
|
$(TAGS_FILES) $(LISP)
|
||||||
|
tags=; \
|
||||||
|
here=`pwd`; \
|
||||||
|
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
|
||||||
|
unique=`for i in $$list; do \
|
||||||
|
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
|
||||||
|
done | \
|
||||||
|
$(AWK) ' { files[$$0] = 1; } \
|
||||||
|
END { for (i in files) print i; }'`; \
|
||||||
|
test -z "$(CTAGS_ARGS)$$tags$$unique" \
|
||||||
|
|| $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
|
||||||
|
$$tags $$unique
|
||||||
|
|
||||||
mostlyclean-tags:
|
GTAGS:
|
||||||
|
here=`$(am__cd) $(top_builddir) && pwd` \
|
||||||
clean-tags:
|
&& cd $(top_srcdir) \
|
||||||
|
&& gtags -i $(GTAGS_ARGS) $$here
|
||||||
|
|
||||||
distclean-tags:
|
distclean-tags:
|
||||||
-rm -f TAGS ID
|
-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
|
||||||
|
|
||||||
maintainer-clean-tags:
|
|
||||||
|
|
||||||
distdir = $(top_builddir)/$(PACKAGE)-$(VERSION)/$(subdir)
|
|
||||||
|
|
||||||
subdir = smmapd
|
|
||||||
|
|
||||||
distdir: $(DISTFILES)
|
distdir: $(DISTFILES)
|
||||||
here=`cd $(top_builddir) && pwd`; \
|
@srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
|
||||||
top_distdir=`cd $(top_distdir) && pwd`; \
|
topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \
|
||||||
distdir=`cd $(distdir) && pwd`; \
|
list='$(DISTFILES)'; for file in $$list; do \
|
||||||
cd $(top_srcdir) \
|
case $$file in \
|
||||||
&& $(AUTOMAKE) --include-deps --build-dir=$$here --srcdir-name=$(top_srcdir) --output-dir=$$top_distdir --gnu smmapd/Makefile
|
$(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \
|
||||||
@for file in $(DISTFILES); do \
|
$(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \
|
||||||
d=$(srcdir); \
|
esac; \
|
||||||
|
if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
|
||||||
|
dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
|
||||||
|
if test "$$dir" != "$$file" && test "$$dir" != "."; then \
|
||||||
|
dir="/$$dir"; \
|
||||||
|
$(mkdir_p) "$(distdir)$$dir"; \
|
||||||
|
else \
|
||||||
|
dir=''; \
|
||||||
|
fi; \
|
||||||
if test -d $$d/$$file; then \
|
if test -d $$d/$$file; then \
|
||||||
cp -pr $$d/$$file $(distdir)/$$file; \
|
if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
|
||||||
|
cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
|
||||||
|
fi; \
|
||||||
|
cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
|
||||||
else \
|
else \
|
||||||
test -f $(distdir)/$$file \
|
test -f $(distdir)/$$file \
|
||||||
|| ln $$d/$$file $(distdir)/$$file 2> /dev/null \
|
|| cp -p $$d/$$file $(distdir)/$$file \
|
||||||
|| cp -p $$d/$$file $(distdir)/$$file || :; \
|
|| exit 1; \
|
||||||
fi; \
|
fi; \
|
||||||
done
|
done
|
||||||
|
|
||||||
DEPS_MAGIC := $(shell mkdir .deps > /dev/null 2>&1 || :)
|
|
||||||
|
|
||||||
-include $(DEP_FILES)
|
|
||||||
|
|
||||||
mostlyclean-depend:
|
|
||||||
|
|
||||||
clean-depend:
|
|
||||||
|
|
||||||
distclean-depend:
|
|
||||||
-rm -rf .deps
|
|
||||||
|
|
||||||
maintainer-clean-depend:
|
|
||||||
|
|
||||||
%.o: %.c
|
|
||||||
@echo '$(COMPILE) -c $<'; \
|
|
||||||
$(COMPILE) -Wp,-MD,.deps/$(*F).pp -c $<
|
|
||||||
@-cp .deps/$(*F).pp .deps/$(*F).P; \
|
|
||||||
tr ' ' '\012' < .deps/$(*F).pp \
|
|
||||||
| sed -e 's/^\\$$//' -e '/^$$/ d' -e '/:$$/ d' -e 's/$$/ :/' \
|
|
||||||
>> .deps/$(*F).P; \
|
|
||||||
rm .deps/$(*F).pp
|
|
||||||
|
|
||||||
%.lo: %.c
|
|
||||||
@echo '$(LTCOMPILE) -c $<'; \
|
|
||||||
$(LTCOMPILE) -Wp,-MD,.deps/$(*F).pp -c $<
|
|
||||||
@-sed -e 's/^\([^:]*\)\.o[ ]*:/\1.lo \1.o :/' \
|
|
||||||
< .deps/$(*F).pp > .deps/$(*F).P; \
|
|
||||||
tr ' ' '\012' < .deps/$(*F).pp \
|
|
||||||
| sed -e 's/^\\$$//' -e '/^$$/ d' -e '/:$$/ d' -e 's/$$/ :/' \
|
|
||||||
>> .deps/$(*F).P; \
|
|
||||||
rm -f .deps/$(*F).pp
|
|
||||||
info-am:
|
|
||||||
info: info-am
|
|
||||||
dvi-am:
|
|
||||||
dvi: dvi-am
|
|
||||||
check-am: all-am
|
check-am: all-am
|
||||||
check: check-am
|
check: check-am
|
||||||
installcheck-am:
|
all-am: Makefile $(PROGRAMS) $(DATA) $(HEADERS)
|
||||||
installcheck: installcheck-am
|
installdirs:
|
||||||
install-exec-am: install-binPROGRAMS install-sysconfDATA
|
for dir in "$(DESTDIR)$(bindir)" "$(DESTDIR)$(sysconfdir)"; do \
|
||||||
|
test -z "$$dir" || $(mkdir_p) "$$dir"; \
|
||||||
|
done
|
||||||
|
install: install-am
|
||||||
install-exec: install-exec-am
|
install-exec: install-exec-am
|
||||||
|
|
||||||
install-data-am:
|
|
||||||
install-data: install-data-am
|
install-data: install-data-am
|
||||||
|
uninstall: uninstall-am
|
||||||
|
|
||||||
install-am: all-am
|
install-am: all-am
|
||||||
@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
|
@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
|
||||||
install: install-am
|
|
||||||
uninstall-am: uninstall-binPROGRAMS uninstall-sysconfDATA
|
installcheck: installcheck-am
|
||||||
uninstall: uninstall-am
|
|
||||||
all-am: Makefile $(PROGRAMS) $(DATA) $(HEADERS)
|
|
||||||
all-redirect: all-am
|
|
||||||
install-strip:
|
install-strip:
|
||||||
$(MAKE) $(AM_MAKEFLAGS) AM_INSTALL_PROGRAM_FLAGS=-s install
|
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
|
||||||
installdirs:
|
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
|
||||||
$(mkinstalldirs) $(DESTDIR)$(bindir) $(DESTDIR)$(sysconfdir)
|
`test -z '$(STRIP)' || \
|
||||||
|
echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
|
||||||
|
|
||||||
mostlyclean-generic:
|
mostlyclean-generic:
|
||||||
|
|
||||||
clean-generic:
|
clean-generic:
|
||||||
|
|
||||||
distclean-generic:
|
distclean-generic:
|
||||||
-rm -f Makefile $(CONFIG_CLEAN_FILES)
|
-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
|
||||||
-rm -f config.cache config.log stamp-h stamp-h[0-9]*
|
|
||||||
|
|
||||||
maintainer-clean-generic:
|
maintainer-clean-generic:
|
||||||
mostlyclean-am: mostlyclean-binPROGRAMS mostlyclean-compile \
|
@echo "This command is intended for maintainers to use"
|
||||||
mostlyclean-libtool mostlyclean-tags mostlyclean-depend \
|
@echo "it deletes files that may require special tools to rebuild."
|
||||||
mostlyclean-generic
|
clean: clean-am
|
||||||
|
|
||||||
|
clean-am: clean-binPROGRAMS clean-generic clean-libtool mostlyclean-am
|
||||||
|
|
||||||
|
distclean: distclean-am
|
||||||
|
-rm -rf ./$(DEPDIR)
|
||||||
|
-rm -f Makefile
|
||||||
|
distclean-am: clean-am distclean-compile distclean-generic \
|
||||||
|
distclean-libtool distclean-tags
|
||||||
|
|
||||||
|
dvi: dvi-am
|
||||||
|
|
||||||
|
dvi-am:
|
||||||
|
|
||||||
|
html: html-am
|
||||||
|
|
||||||
|
info: info-am
|
||||||
|
|
||||||
|
info-am:
|
||||||
|
|
||||||
|
install-data-am:
|
||||||
|
|
||||||
|
install-exec-am: install-binPROGRAMS install-sysconfDATA
|
||||||
|
|
||||||
|
install-info: install-info-am
|
||||||
|
|
||||||
|
install-man:
|
||||||
|
|
||||||
|
installcheck-am:
|
||||||
|
|
||||||
|
maintainer-clean: maintainer-clean-am
|
||||||
|
-rm -rf ./$(DEPDIR)
|
||||||
|
-rm -f Makefile
|
||||||
|
maintainer-clean-am: distclean-am maintainer-clean-generic
|
||||||
|
|
||||||
mostlyclean: mostlyclean-am
|
mostlyclean: mostlyclean-am
|
||||||
|
|
||||||
clean-am: clean-binPROGRAMS clean-compile clean-libtool clean-tags \
|
mostlyclean-am: mostlyclean-compile mostlyclean-generic \
|
||||||
clean-depend clean-generic mostlyclean-am
|
mostlyclean-libtool
|
||||||
|
|
||||||
clean: clean-am
|
pdf: pdf-am
|
||||||
|
|
||||||
distclean-am: distclean-binPROGRAMS distclean-compile distclean-libtool \
|
pdf-am:
|
||||||
distclean-tags distclean-depend distclean-generic \
|
|
||||||
clean-am
|
|
||||||
-rm -f libtool
|
|
||||||
|
|
||||||
distclean: distclean-am
|
ps: ps-am
|
||||||
|
|
||||||
maintainer-clean-am: maintainer-clean-binPROGRAMS \
|
ps-am:
|
||||||
maintainer-clean-compile maintainer-clean-libtool \
|
|
||||||
maintainer-clean-tags maintainer-clean-depend \
|
|
||||||
maintainer-clean-generic distclean-am
|
|
||||||
@echo "This command is intended for maintainers to use;"
|
|
||||||
@echo "it deletes files that may require special tools to rebuild."
|
|
||||||
|
|
||||||
maintainer-clean: maintainer-clean-am
|
uninstall-am: uninstall-binPROGRAMS uninstall-info-am \
|
||||||
|
uninstall-sysconfDATA
|
||||||
.PHONY: mostlyclean-binPROGRAMS distclean-binPROGRAMS clean-binPROGRAMS \
|
|
||||||
maintainer-clean-binPROGRAMS uninstall-binPROGRAMS install-binPROGRAMS \
|
|
||||||
mostlyclean-compile distclean-compile clean-compile \
|
|
||||||
maintainer-clean-compile mostlyclean-libtool distclean-libtool \
|
|
||||||
clean-libtool maintainer-clean-libtool uninstall-sysconfDATA \
|
|
||||||
install-sysconfDATA tags mostlyclean-tags distclean-tags clean-tags \
|
|
||||||
maintainer-clean-tags distdir mostlyclean-depend distclean-depend \
|
|
||||||
clean-depend maintainer-clean-depend info-am info dvi-am dvi check \
|
|
||||||
check-am installcheck-am installcheck install-exec-am install-exec \
|
|
||||||
install-data-am install-data install-am install uninstall-am uninstall \
|
|
||||||
all-redirect all-am all installdirs mostlyclean-generic \
|
|
||||||
distclean-generic clean-generic maintainer-clean-generic clean \
|
|
||||||
mostlyclean distclean maintainer-clean
|
|
||||||
|
|
||||||
|
.PHONY: CTAGS GTAGS all all-am check check-am clean clean-binPROGRAMS \
|
||||||
|
clean-generic clean-libtool ctags distclean distclean-compile \
|
||||||
|
distclean-generic distclean-libtool distclean-tags distdir dvi \
|
||||||
|
dvi-am html html-am info info-am install install-am \
|
||||||
|
install-binPROGRAMS install-data install-data-am install-exec \
|
||||||
|
install-exec-am install-info install-info-am install-man \
|
||||||
|
install-strip install-sysconfDATA installcheck installcheck-am \
|
||||||
|
installdirs maintainer-clean maintainer-clean-generic \
|
||||||
|
mostlyclean mostlyclean-compile mostlyclean-generic \
|
||||||
|
mostlyclean-libtool pdf pdf-am ps ps-am tags uninstall \
|
||||||
|
uninstall-am uninstall-binPROGRAMS uninstall-info-am \
|
||||||
|
uninstall-sysconfDATA
|
||||||
|
|
||||||
# Tell versions [3.59,3.63) of GNU make to not export all variables.
|
# Tell versions [3.59,3.63) of GNU make to not export all variables.
|
||||||
# Otherwise a system limit (for SysV at least) may be exceeded.
|
# Otherwise a system limit (for SysV at least) may be exceeded.
|
||||||
|
@ -1,3 +1,25 @@
|
|||||||
|
/*
|
||||||
|
Copyright (C) 2004, Wolfgang Hottgenroth
|
||||||
|
|
||||||
|
This file is part of smmapdfw.
|
||||||
|
|
||||||
|
smmapdfw is free software; you can redistribute it and/or modify it
|
||||||
|
under the terms of the GNU General Public License as published by
|
||||||
|
the Free Software Foundation; either version 2 of the License, or
|
||||||
|
(at your option) any later version.
|
||||||
|
|
||||||
|
smmapdfw is distributed in the hope that it will be useful, but WITHOUT
|
||||||
|
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
|
||||||
|
or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
|
||||||
|
License for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU General Public License
|
||||||
|
along with smmapdfw. If not, write to the Free Software Foundation, 59
|
||||||
|
Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#if HAVE_CONFIG_H
|
#if HAVE_CONFIG_H
|
||||||
# include "config.h"
|
# include "config.h"
|
||||||
#endif
|
#endif
|
||||||
@ -21,6 +43,8 @@
|
|||||||
#include "containers.h"
|
#include "containers.h"
|
||||||
#include "cfg.h"
|
#include "cfg.h"
|
||||||
#include "smmapd.h"
|
#include "smmapd.h"
|
||||||
|
#include "htmalloc.h"
|
||||||
|
#include "htbuffer.h"
|
||||||
|
|
||||||
|
|
||||||
#define CFG_SECTION_GLOBAL "global"
|
#define CFG_SECTION_GLOBAL "global"
|
||||||
@ -28,6 +52,7 @@
|
|||||||
#define CFG_NAME_PLUGINS "plugins"
|
#define CFG_NAME_PLUGINS "plugins"
|
||||||
#define CFG_PLUGINS_DELIMITER " "
|
#define CFG_PLUGINS_DELIMITER " "
|
||||||
#define CFG_NAME_OBJ "obj"
|
#define CFG_NAME_OBJ "obj"
|
||||||
|
#define CFG_NAME "name"
|
||||||
|
|
||||||
extern cfg_t *cfg;
|
extern cfg_t *cfg;
|
||||||
|
|
||||||
@ -37,7 +62,7 @@ classes_t *classes_head = &classes_root;
|
|||||||
|
|
||||||
|
|
||||||
int containers_setup(container_handle_t **ch) {
|
int containers_setup(container_handle_t **ch) {
|
||||||
*ch = (container_handle_t*)malloc(sizeof(container_handle_t));
|
*ch = (container_handle_t*)htmalloc(sizeof(container_handle_t));
|
||||||
(*ch)->worker_handle_root.next = NULL;
|
(*ch)->worker_handle_root.next = NULL;
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
@ -62,6 +87,7 @@ int containers_destroy(container_handle_t *ch) {
|
|||||||
}
|
}
|
||||||
wh2 = wh;
|
wh2 = wh;
|
||||||
wh = wh->next;
|
wh = wh->next;
|
||||||
|
syslog(LOG_DEBUG, "containers_destroy: free worker handle %p", wh2);
|
||||||
free(wh2);
|
free(wh2);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -70,60 +96,63 @@ int containers_destroy(container_handle_t *ch) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
int containers_dispatcher(container_handle_t *ch, char *input, char *output) {
|
int containers_dispatcher(container_handle_t *ch, char *input, htbuffer_t *output) {
|
||||||
char *class;
|
char *class;
|
||||||
char *data;
|
char *data;
|
||||||
classes_t *classes;
|
classes_t *classes;
|
||||||
int result, err;
|
int result, err;
|
||||||
worker_handle_t *wh, *wh_last, *wh2;
|
worker_handle_t *wh, *wh_last, *wh2;
|
||||||
|
|
||||||
|
if (input == NULL) {
|
||||||
|
syslog(LOG_ERR, "dispatcher: no input at all");
|
||||||
|
return SMM_ILLEGAL_INPUT;
|
||||||
|
}
|
||||||
syslog(LOG_DEBUG, "dispatcher: input: %s", input);
|
syslog(LOG_DEBUG, "dispatcher: input: %s", input);
|
||||||
|
|
||||||
data = strchr(input, ' ');
|
data = strchr(input, ' ');
|
||||||
if (NULL == data) {
|
if (NULL == data || (strlen(data) < 1)) {
|
||||||
syslog(LOG_ERR, "dispatcher: illegal input (%s)", input);
|
syslog(LOG_ERR, "dispatcher: illegal input (%s)", input);
|
||||||
return SMM_ILLEGAL_INPUT;
|
return SMM_ILLEGAL_INPUT;
|
||||||
}
|
}
|
||||||
|
|
||||||
data++; /* skip the blank */
|
*data = '\0'; /* terminate class */
|
||||||
|
data++; /* skip the former blank, now null */
|
||||||
class = input;
|
class = input;
|
||||||
class[strlen(class)-strlen(data)-1] = '\0';
|
|
||||||
|
|
||||||
syslog(LOG_DEBUG, "dispatcher: class: %s, data: %s", class, data);
|
syslog(LOG_DEBUG, "dispatcher: class: %s, data: %s", class, data);
|
||||||
|
|
||||||
for (classes = classes_root.next; classes != NULL; classes = classes->next) {
|
for (classes = classes_root.next; classes != NULL; classes = classes->next) {
|
||||||
if (0 == strcmp(class, classes->descr->name)) {
|
if (0 == strcmp(class, classes->alias)) {
|
||||||
syslog(LOG_DEBUG, "dispatcher: yes, we support it, it's id=%d", classes->id);
|
syslog(LOG_DEBUG, "dispatcher: yes, we support it, it's id=%d", classes->id);
|
||||||
for (wh = ch->worker_handle_root.next, wh_last = &ch->worker_handle_root, wh2 = NULL;
|
for (wh = ch->worker_handle_root.next, wh_last = &ch->worker_handle_root, wh2 = NULL;
|
||||||
wh != NULL;
|
wh != NULL;
|
||||||
wh = wh->next) {
|
wh = wh->next) {
|
||||||
wh_last = wh;
|
wh_last = wh;
|
||||||
if (wh->id == classes->id) {
|
if (wh->id == classes->id) {
|
||||||
syslog(LOG_DEBUG, "dispatcher: we already have a worker handle");
|
syslog(LOG_DEBUG, "dispatcher: we already have a worker handle: %p", wh);
|
||||||
wh2 = wh;
|
wh2 = wh;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((NULL == wh_last->next) && (NULL == wh2)) {
|
if ((NULL == wh_last->next) && (NULL == wh2)) {
|
||||||
syslog(LOG_DEBUG, "dispatcher: we haven't one, we create one");
|
wh2 = (worker_handle_t*)htmalloc(sizeof(worker_handle_t));
|
||||||
wh2 = (worker_handle_t*)malloc(sizeof(worker_handle_t));
|
syslog(LOG_DEBUG, "dispatcher: we haven't one, we create one: %p", wh2);
|
||||||
wh2->id = classes->id;
|
wh2->id = classes->id;
|
||||||
if (NULL != classes->descr->work_setup_function) {
|
if (NULL != classes->descr->work_setup_function) {
|
||||||
err = (*classes->descr->work_setup_function)(classes->handle, &(wh2->handle));
|
err = (*classes->descr->work_setup_function)(classes->handle, &(wh2->handle));
|
||||||
} else {
|
} else {
|
||||||
wh2->handle = NULL;
|
wh2->handle = NULL;
|
||||||
}
|
}
|
||||||
wh2->next = NULL;
|
wh2->next = NULL;
|
||||||
wh_last->next = wh2;
|
wh_last->next = wh2;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
result = (*classes->descr->work_function)(classes->handle, wh2->handle, data, output);
|
result = (*classes->descr->work_function)(classes->handle, wh2->handle, data, output);
|
||||||
syslog(LOG_DEBUG, "dispatcher: worker output: (%d, %s)", result, output);
|
syslog(LOG_DEBUG, "dispatcher: worker output: (%d, %s)", result, output->buf);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (NULL == classes) {
|
if (NULL == classes) {
|
||||||
@ -134,21 +163,21 @@ int containers_dispatcher(container_handle_t *ch, char *input, char *output) {
|
|||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int register_class(int id, class_descriptor_t *class_descriptor) {
|
static int register_class(int id, void *dl_handle, class_descriptor_t *class_descriptor, char *alias) {
|
||||||
int result = 0;
|
int result = 0;
|
||||||
cfgl_t *c;
|
cfgl_t *c;
|
||||||
classes_t *w;
|
classes_t *w;
|
||||||
|
|
||||||
|
|
||||||
syslog(LOG_DEBUG, "register_class: registering class %s", class_descriptor->name);
|
syslog(LOG_DEBUG, "register_class: registering class %s, alias %s", class_descriptor->name, alias);
|
||||||
|
|
||||||
c = findcfgsection(cfg, class_descriptor->name);
|
c = findcfgsection(cfg, alias);
|
||||||
if (NULL == c) {
|
if (NULL == c) {
|
||||||
syslog(LOG_ERR, "register_class: no configuration section for this plugin available");
|
syslog(LOG_ERR, "register_class: no configuration section for this plugin available");
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
w = (classes_t *) malloc(sizeof(classes_t));
|
w = (classes_t *) htmalloc(sizeof(classes_t));
|
||||||
if (NULL == w) {
|
if (NULL == w) {
|
||||||
syslog(LOG_ERR, "register_class: unable to alloc memory");
|
syslog(LOG_ERR, "register_class: unable to alloc memory");
|
||||||
return -2;
|
return -2;
|
||||||
@ -166,7 +195,9 @@ static int register_class(int id, class_descriptor_t *class_descriptor) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
w->descr = class_descriptor;
|
w->descr = class_descriptor;
|
||||||
|
w->alias = alias;
|
||||||
w->id = id;
|
w->id = id;
|
||||||
|
w->dl_handle = dl_handle;
|
||||||
w->next = NULL;
|
w->next = NULL;
|
||||||
|
|
||||||
classes_head->next = w;
|
classes_head->next = w;
|
||||||
@ -183,7 +214,7 @@ static int unregister_class(classes_t *class) {
|
|||||||
|
|
||||||
if (NULL != class->descr->destroy_function) {
|
if (NULL != class->descr->destroy_function) {
|
||||||
syslog(LOG_DEBUG, "unregister_class: destroying class");
|
syslog(LOG_DEBUG, "unregister_class: destroying class");
|
||||||
result = (*class->descr->destroy_function)(&class->handle);
|
result = (*class->descr->destroy_function)(class->handle);
|
||||||
syslog(LOG_ERR, "unregister_class: destroy function returns %d", result);
|
syslog(LOG_ERR, "unregister_class: destroy function returns %d", result);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -199,17 +230,24 @@ int unregister_all() {
|
|||||||
classes = classes->next;
|
classes = classes->next;
|
||||||
|
|
||||||
unregister_class(cf);
|
unregister_class(cf);
|
||||||
|
|
||||||
|
if (NULL != cf->dl_handle)
|
||||||
|
dlclose(cf->dl_handle);
|
||||||
|
|
||||||
free(cf);
|
free(cf);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
int register_all() {
|
int register_all() {
|
||||||
void *dl_handle;
|
return register_worker(NULL);
|
||||||
class_descriptor_t * class_descriptor;
|
}
|
||||||
char *cfg_plugin_dir, *cfg_plugins, *cfg_plugin, *cfg_obj;
|
|
||||||
char *obj_name;
|
int register_worker(char *worker_name) {
|
||||||
|
void *dl_handle = NULL;
|
||||||
|
class_descriptor_t * class_descriptor = NULL;
|
||||||
|
char *cfg_plugin_dir, *cfg_plugins, *cfg_plugin, *cfg_obj, *cfg_plugin_name;
|
||||||
|
char *obj_name = NULL;
|
||||||
const char *err_msg;
|
const char *err_msg;
|
||||||
int err;
|
int err;
|
||||||
int id = 0;
|
int id = 0;
|
||||||
@ -226,13 +264,16 @@ int register_all() {
|
|||||||
cfg_plugins = NULL; /* this is for subsequence calls of strtok */
|
cfg_plugins = NULL; /* this is for subsequence calls of strtok */
|
||||||
dlerror(); /* this is to clear old errors */
|
dlerror(); /* this is to clear old errors */
|
||||||
|
|
||||||
|
if ((NULL != worker_name) && strcmp(cfg_plugin, worker_name))
|
||||||
|
continue;
|
||||||
|
|
||||||
cfg_obj = findcfg(cfg, cfg_plugin, CFG_NAME_OBJ);
|
cfg_obj = findcfg(cfg, cfg_plugin, CFG_NAME_OBJ);
|
||||||
if (NULL == cfg_obj) {
|
if (NULL == cfg_obj) {
|
||||||
syslog(LOG_ERR, "register_all: obj for plugin %s not configured", cfg_plugin);
|
syslog(LOG_ERR, "register_all: obj for plugin %s not configured", cfg_plugin);
|
||||||
return -3;
|
return -3;
|
||||||
}
|
}
|
||||||
|
|
||||||
obj_name = (char*) malloc(((cfg_plugin_dir == NULL) ? 0 : strlen(cfg_plugin_dir)) + strlen(cfg_obj) + 5);
|
obj_name = (char*) htmalloc(((cfg_plugin_dir == NULL) ? 0 : strlen(cfg_plugin_dir)) + strlen(cfg_obj) + 5);
|
||||||
obj_name[0] = '\0';
|
obj_name[0] = '\0';
|
||||||
if (cfg_plugin_dir != NULL) {
|
if (cfg_plugin_dir != NULL) {
|
||||||
strcat(obj_name, cfg_plugin_dir);
|
strcat(obj_name, cfg_plugin_dir);
|
||||||
@ -247,14 +288,16 @@ int register_all() {
|
|||||||
return -4;
|
return -4;
|
||||||
}
|
}
|
||||||
free(obj_name);
|
free(obj_name);
|
||||||
|
|
||||||
class_descriptor = (class_descriptor_t*) dlsym(dl_handle, cfg_plugin);
|
cfg_plugin_name = findcfg(cfg, cfg_plugin, CFG_NAME);
|
||||||
|
cfg_plugin_name = cfg_plugin_name ? cfg_plugin_name : cfg_plugin;
|
||||||
|
class_descriptor = (class_descriptor_t*) dlsym(dl_handle, cfg_plugin_name);
|
||||||
if (NULL != (err_msg = dlerror())) {
|
if (NULL != (err_msg = dlerror())) {
|
||||||
syslog(LOG_ERR, "register_all: plugin %s not found, error %s", cfg_plugin, err_msg);
|
syslog(LOG_ERR, "register_all: plugin %s not found, error %s", cfg_plugin, err_msg);
|
||||||
return -5;
|
return -5;
|
||||||
}
|
}
|
||||||
|
|
||||||
err = register_class(id++, class_descriptor);
|
err = register_class(id++, dl_handle, class_descriptor, cfg_plugin);
|
||||||
if (0 != err) {
|
if (0 != err) {
|
||||||
syslog(LOG_ERR, "register_all: unable to initialize plugin %s, error %d", cfg_plugin, err);
|
syslog(LOG_ERR, "register_all: unable to initialize plugin %s, error %d", cfg_plugin, err);
|
||||||
return -6;
|
return -6;
|
||||||
|
@ -1,13 +1,38 @@
|
|||||||
|
/*
|
||||||
|
Copyright (C) 2004, Wolfgang Hottgenroth
|
||||||
|
|
||||||
|
This file is part of smmapdfw.
|
||||||
|
|
||||||
|
smmapdfw is free software; you can redistribute it and/or modify it
|
||||||
|
under the terms of the GNU General Public License as published by
|
||||||
|
the Free Software Foundation; either version 2 of the License, or
|
||||||
|
(at your option) any later version.
|
||||||
|
|
||||||
|
smmapdfw is distributed in the hope that it will be useful, but WITHOUT
|
||||||
|
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
|
||||||
|
or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
|
||||||
|
License for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU General Public License
|
||||||
|
along with smmapdfw. If not, write to the Free Software Foundation, 59
|
||||||
|
Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#ifndef _CONTAINERS_H_
|
#ifndef _CONTAINERS_H_
|
||||||
#define _CONTAINERS_H_
|
#define _CONTAINERS_H_
|
||||||
|
|
||||||
#define _SMMAPD_
|
#define _SMMAPD_
|
||||||
#include "containers_public.h"
|
#include "containers_public.h"
|
||||||
|
#include "htbuffer.h"
|
||||||
|
|
||||||
struct classes_s {
|
struct classes_s {
|
||||||
class_descriptor_t *descr;
|
class_descriptor_t *descr;
|
||||||
|
char *alias;
|
||||||
int id;
|
int id;
|
||||||
void *handle;
|
void *handle;
|
||||||
|
void *dl_handle;
|
||||||
struct classes_s *next;
|
struct classes_s *next;
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -29,7 +54,7 @@ typedef struct container_handle_s container_handle_t;
|
|||||||
|
|
||||||
int containers_setup(container_handle_t **ch);
|
int containers_setup(container_handle_t **ch);
|
||||||
int containers_destroy(container_handle_t *ch);
|
int containers_destroy(container_handle_t *ch);
|
||||||
int containers_dispatcher(container_handle_t *ch, char *input, char *output);
|
int containers_dispatcher(container_handle_t *ch, char *input, htbuffer_t *output);
|
||||||
|
|
||||||
int register_all();
|
int register_all();
|
||||||
|
|
||||||
|
@ -1,3 +1,25 @@
|
|||||||
|
/*
|
||||||
|
Copyright (C) 2004, Wolfgang Hottgenroth
|
||||||
|
|
||||||
|
This file is part of smmapdfw.
|
||||||
|
|
||||||
|
smmapdfw is free software; you can redistribute it and/or modify it
|
||||||
|
under the terms of the GNU General Public License as published by
|
||||||
|
the Free Software Foundation; either version 2 of the License, or
|
||||||
|
(at your option) any later version.
|
||||||
|
|
||||||
|
smmapdfw is distributed in the hope that it will be useful, but WITHOUT
|
||||||
|
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
|
||||||
|
or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
|
||||||
|
License for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU General Public License
|
||||||
|
along with smmapdfw. If not, write to the Free Software Foundation, 59
|
||||||
|
Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#if HAVE_CONFIG_H
|
#if HAVE_CONFIG_H
|
||||||
# include "config.h"
|
# include "config.h"
|
||||||
#endif
|
#endif
|
||||||
@ -41,17 +63,23 @@
|
|||||||
#include "containers.h"
|
#include "containers.h"
|
||||||
#include "cfg.h"
|
#include "cfg.h"
|
||||||
#include "safe_write.h"
|
#include "safe_write.h"
|
||||||
|
#include "htmalloc.h"
|
||||||
|
#include "htbuffer.h"
|
||||||
|
|
||||||
#define _SMMAPD_C_
|
#define _SMMAPD_C_
|
||||||
#include "smmapd.h"
|
#include "smmapd.h"
|
||||||
|
|
||||||
|
#include "stats.h"
|
||||||
|
#include "snmp_subagent.h"
|
||||||
|
|
||||||
#include "sunos_comp.h"
|
#include "sunos_comp.h"
|
||||||
|
|
||||||
|
#include "dvl.h"
|
||||||
|
|
||||||
#define CFG_SECTION_GLOBAL "global"
|
#define CFG_SECTION_GLOBAL "global"
|
||||||
#define CFG_NAME_ADDRESS "address"
|
#define CFG_NAME_ADDRESS "address"
|
||||||
#define CFG_NAME_PORT "port"
|
#define CFG_NAME_PORT "port"
|
||||||
|
#define CFG_NETSTRING_DISABLED "netstring_disabled"
|
||||||
|
|
||||||
#define DEFAULT_PORT "8888"
|
#define DEFAULT_PORT "8888"
|
||||||
|
|
||||||
@ -59,6 +87,36 @@
|
|||||||
#define RELEASE_ID "0.9"
|
#define RELEASE_ID "0.9"
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
counterDef_t *server_counterDefs;
|
||||||
|
void server_setupCounterList() {
|
||||||
|
server_counterDefs = addOneCounterDef(server_counterDefs, SMM_TYPE_COUNTER, "Server: accepted");
|
||||||
|
server_counterDefs = addOneCounterDef(server_counterDefs, SMM_TYPE_COUNTER, "Server: failed");
|
||||||
|
server_counterDefs = addOneCounterDef(server_counterDefs, SMM_TYPE_GAUGE, "Server: running networker threads");
|
||||||
|
server_counterDefs = addOneCounterDef(server_counterDefs, SMM_TYPE_COUNTER, "Server: networker threads");
|
||||||
|
server_counterDefs = addOneCounterDef(server_counterDefs, SMM_TYPE_COUNTER, "Server: failed to start, networker threads");
|
||||||
|
server_counterDefs = addOneCounterDef(server_counterDefs, SMM_TYPE_COUNTER, "Server: returned OK");
|
||||||
|
server_counterDefs = addOneCounterDef(server_counterDefs, SMM_TYPE_COUNTER, "Server: returned TEMP_NOK");
|
||||||
|
server_counterDefs = addOneCounterDef(server_counterDefs, SMM_TYPE_COUNTER, "Server: returned PERM_NOK");
|
||||||
|
server_counterDefs = addOneCounterDef(server_counterDefs, SMM_TYPE_COUNTER, "Server: returned NOT_FOUND_NOK");
|
||||||
|
server_counterDefs = addOneCounterDef(server_counterDefs, SMM_TYPE_COUNTER, "Server: returned illegal input");
|
||||||
|
server_counterDefs = addOneCounterDef(server_counterDefs, SMM_TYPE_COUNTER, "Server: returned unknown class");
|
||||||
|
server_counterDefs = addOneCounterDef(server_counterDefs, SMM_TYPE_COUNTER, "Server: returned TIMEOUT_NOK");
|
||||||
|
server_counterDefs = addOneCounterDef(server_counterDefs, SMM_TYPE_COUNTER, "Server: returned netstring unparsable");
|
||||||
|
};
|
||||||
|
|
||||||
|
#define STAT_CNT_ACCEPTED 0
|
||||||
|
#define STAT_CNT_FAILED 1
|
||||||
|
#define STAT_CNT_NETWORKER_R_THREADS 2
|
||||||
|
#define STAT_CNT_NETWORKER_THREADS 3
|
||||||
|
#define STAT_CNT_NETWORKER_THREADS_FAILED 4
|
||||||
|
#define STAT_CNT_OFFSET 5 - 1
|
||||||
|
|
||||||
|
statCounter_t *globalStatCounter;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
struct networkerThread_s {
|
struct networkerThread_s {
|
||||||
int result;
|
int result;
|
||||||
struct sockaddr_in clientAddr;
|
struct sockaddr_in clientAddr;
|
||||||
@ -69,25 +127,61 @@ struct networkerThread_s {
|
|||||||
|
|
||||||
typedef struct networkerThread_s networkerThread_t;
|
typedef struct networkerThread_s networkerThread_t;
|
||||||
|
|
||||||
|
int terminating = 0;
|
||||||
|
|
||||||
ht_queue_t terminated_networker_queue;
|
ht_queue_t terminated_networker_queue;
|
||||||
pthread_t cleanerThread;
|
pthread_t cleanerThread;
|
||||||
|
|
||||||
|
pthread_t statsThread;
|
||||||
|
|
||||||
|
#if ENABLE_NETSNMP==1
|
||||||
|
pthread_t snmpThread;
|
||||||
|
#endif
|
||||||
|
|
||||||
count_t thread_counter;
|
count_t thread_counter;
|
||||||
|
|
||||||
cfg_t *cfg;
|
cfg_t *cfg;
|
||||||
|
|
||||||
|
int netstring_disabled = 0;
|
||||||
|
int force_netstring_disabled = 0;
|
||||||
|
|
||||||
|
|
||||||
|
void * statser(void * arg) {
|
||||||
|
int stdout_nice = atoi(findcfgx(cfg, "stats", "stdout_nice", "0"));
|
||||||
|
int syslog_nice = atoi(findcfgx(cfg, "stats", "syslog_nice", "0"));
|
||||||
|
int period = atoi(findcfgx(cfg, "stats", "period", "10"));
|
||||||
|
|
||||||
|
while(1) {
|
||||||
|
outputStats(stdout_nice, syslog_nice);
|
||||||
|
sleep(period);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#if ENABLE_NETSNMP==1
|
||||||
|
void * snmper(void * arg) {
|
||||||
|
snmp_subagent_main(cfg);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
void * cleaner(void * arg) {
|
void * cleaner(void * arg) {
|
||||||
networkerThread_t *t;
|
networkerThread_t *t;
|
||||||
int joinRes;
|
int joinRes;
|
||||||
|
|
||||||
pthread_detach(pthread_self());
|
|
||||||
|
|
||||||
while (1) {
|
while (1) {
|
||||||
syslog(LOG_DEBUG, "cleaner: Waiting for terminated networker, running threads: %d",
|
/* syslog(LOG_DEBUG, "cleaner: Waiting for terminated networker, running threads: %d", */
|
||||||
count_get(&thread_counter));
|
/* count_get(&thread_counter)); */
|
||||||
t = (networkerThread_t*) queue_get_wait(&terminated_networker_queue);
|
|
||||||
|
if ((terminating == 1) && (count_get(&thread_counter) == 0)) {
|
||||||
|
/* syslog(LOG_DEBUG, "cleaner: termination requested"); */
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
t = (networkerThread_t*) queue_get_wait_w_timeout(&terminated_networker_queue, 5);
|
||||||
|
if (t == NULL)
|
||||||
|
continue;
|
||||||
|
|
||||||
count_dec(&thread_counter);
|
count_dec(&thread_counter);
|
||||||
|
decStatCounter(globalStatCounter, STAT_CNT_NETWORKER_R_THREADS);
|
||||||
|
|
||||||
syslog(LOG_DEBUG, "cleaner: Networker serving %d (address: %s, port: %d), result %d",
|
syslog(LOG_DEBUG, "cleaner: Networker serving %d (address: %s, port: %d), result %d",
|
||||||
t->clientSock, inet_ntoa(t->clientAddr.sin_addr),
|
t->clientSock, inet_ntoa(t->clientAddr.sin_addr),
|
||||||
@ -99,6 +193,8 @@ void * cleaner(void * arg) {
|
|||||||
free(t);
|
free(t);
|
||||||
t = NULL;
|
t = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -106,10 +202,15 @@ void * cleaner(void * arg) {
|
|||||||
|
|
||||||
#define OUTPUT_BUFSIZE ANSWER_BUFSIZE+25 /* a bit more than answer for the result text */
|
#define OUTPUT_BUFSIZE ANSWER_BUFSIZE+25 /* a bit more than answer for the result text */
|
||||||
void * networker(void * arg) {
|
void * networker(void * arg) {
|
||||||
|
if (arg == NULL) {
|
||||||
|
syslog(LOG_CRIT, "networker thread started with argument NULL, thread dies");
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
char buffer[BUFSIZE+1];
|
char buffer[BUFSIZE+1];
|
||||||
char *input;
|
char *input;
|
||||||
char answer[ANSWER_BUFSIZE+1];
|
// char answer[ANSWER_BUFSIZE+1];
|
||||||
|
htbuffer_t *answer;
|
||||||
char output[OUTPUT_BUFSIZE+1];
|
char output[OUTPUT_BUFSIZE+1];
|
||||||
const char *answer_ptr;
|
const char *answer_ptr;
|
||||||
const char *result_text;
|
const char *result_text;
|
||||||
@ -120,12 +221,17 @@ void * networker(void * arg) {
|
|||||||
|
|
||||||
|
|
||||||
networkerThread_t * thread = (networkerThread_t *) arg;
|
networkerThread_t * thread = (networkerThread_t *) arg;
|
||||||
|
|
||||||
thread->pthread = pthread_self();
|
thread->pthread = pthread_self();
|
||||||
|
|
||||||
|
incStatCounter(globalStatCounter, STAT_CNT_NETWORKER_THREADS);
|
||||||
|
|
||||||
syslog(LOG_DEBUG, "networker: serving %d (address: %s, port: %d) started",
|
syslog(LOG_DEBUG, "networker: serving %d (address: %s, port: %d) started",
|
||||||
thread->clientSock, inet_ntoa(thread->clientAddr.sin_addr),
|
thread->clientSock, inet_ntoa(thread->clientAddr.sin_addr),
|
||||||
ntohs(thread->clientAddr.sin_port));
|
ntohs(thread->clientAddr.sin_port));
|
||||||
|
|
||||||
|
answer = htbuffer_init(ANSWER_BUFSIZE);
|
||||||
|
|
||||||
containers_setup(&container_handle);
|
containers_setup(&container_handle);
|
||||||
syslog(LOG_DEBUG, "networker: got a container handle");
|
syslog(LOG_DEBUG, "networker: got a container handle");
|
||||||
|
|
||||||
@ -137,27 +243,42 @@ void * networker(void * arg) {
|
|||||||
else
|
else
|
||||||
buffer[cnt] = '\0';
|
buffer[cnt] = '\0';
|
||||||
|
|
||||||
len = strtol(buffer, &input, 10);
|
dispatcher_result = 0;
|
||||||
if ((0 == len) && (buffer == input)) {
|
if (netstring_disabled) {
|
||||||
syslog(LOG_DEBUG, "networker: netstring unparsable, no length found: %s", buffer);
|
input = buffer;
|
||||||
dispatcher_result = SMM_NETSTRING_UNPARSABLE;
|
|
||||||
} else if (*input++ != ':') {
|
|
||||||
syslog(LOG_DEBUG, "networker: netstring unparsable, no colon found: %s", buffer);
|
|
||||||
dispatcher_result = SMM_NETSTRING_UNPARSABLE;
|
|
||||||
} else if (strlen(input)-1 != len) {
|
|
||||||
syslog(LOG_DEBUG, "networker: netstring unparsable, length does not match: %s", buffer);
|
|
||||||
dispatcher_result = SMM_NETSTRING_UNPARSABLE;
|
|
||||||
} else if (input[strlen(input)-1] != ',') {
|
|
||||||
syslog(LOG_DEBUG, "networker: netstring unparsable, no terminating comma: %s", buffer);
|
|
||||||
dispatcher_result = SMM_NETSTRING_UNPARSABLE;
|
|
||||||
} else {
|
} else {
|
||||||
input[strlen(input)-1] = '\0'; /* strip off the comma */
|
len = strtol(buffer, &input, 10);
|
||||||
|
if (input == NULL) {
|
||||||
answer[0] = '\0';
|
syslog(LOG_ERR, "networker:netstring unparsable, nothing remains after length");
|
||||||
|
dispatcher_result = SMM_NETSTRING_UNPARSABLE;
|
||||||
|
} else if ((0 == len) && (buffer == input)) {
|
||||||
|
syslog(LOG_ERR, "networker: netstring unparsable, no length found: %s", dvls(buffer));
|
||||||
|
dispatcher_result = SMM_NETSTRING_UNPARSABLE;
|
||||||
|
} else if (*input++ != ':') {
|
||||||
|
syslog(LOG_ERR, "networker: netstring unparsable, no colon found: %s", dvls(buffer));
|
||||||
|
dispatcher_result = SMM_NETSTRING_UNPARSABLE;
|
||||||
|
} else if (input == NULL) {
|
||||||
|
syslog(LOG_ERR, "networker:netstring unparsable, nothing remains after colon");
|
||||||
|
dispatcher_result = SMM_NETSTRING_UNPARSABLE;
|
||||||
|
} else if (strlen(input)-1 != len) {
|
||||||
|
syslog(LOG_ERR, "networker: netstring unparsable, length does not match: %s", dvls(buffer));
|
||||||
|
dispatcher_result = SMM_NETSTRING_UNPARSABLE;
|
||||||
|
} else if (input[strlen(input)-1] != ',') {
|
||||||
|
syslog(LOG_ERR, "networker: netstring unparsable, no terminating comma: %s", dvls(buffer));
|
||||||
|
dispatcher_result = SMM_NETSTRING_UNPARSABLE;
|
||||||
|
} else {
|
||||||
|
input[strlen(input)-1] = '\0'; /* strip off the comma */
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!dispatcher_result) {
|
||||||
|
htbuffer_clear(answer);
|
||||||
dispatcher_result = containers_dispatcher(container_handle, input, answer);
|
dispatcher_result = containers_dispatcher(container_handle, input, answer);
|
||||||
syslog(LOG_DEBUG, "networker: dispatcher result: %d, answer: %s", dispatcher_result, answer);
|
syslog(LOG_DEBUG, "networker: dispatcher result: %d, answer: %s", dispatcher_result, dvls(answer->buf));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
incStatCounter(globalStatCounter, dispatcher_result + STAT_CNT_OFFSET);
|
||||||
|
|
||||||
result_text = (dispatcher_result > SMM_MAX_NUM) ?
|
result_text = (dispatcher_result > SMM_MAX_NUM) ?
|
||||||
T_SMM_RESULTS[0] :
|
T_SMM_RESULTS[0] :
|
||||||
T_SMM_RESULTS[dispatcher_result];
|
T_SMM_RESULTS[dispatcher_result];
|
||||||
@ -167,13 +288,17 @@ void * networker(void * arg) {
|
|||||||
T_SMM_RESULT_INFOS[dispatcher_result];
|
T_SMM_RESULT_INFOS[dispatcher_result];
|
||||||
|
|
||||||
if (NULL == answer_ptr)
|
if (NULL == answer_ptr)
|
||||||
answer_ptr = answer;
|
answer_ptr = answer->buf;
|
||||||
|
|
||||||
snprintf(output, OUTPUT_BUFSIZE, "%d:%s%s%s,",
|
if (netstring_disabled) {
|
||||||
strlen(result_text) + strlen(answer_ptr) + ((strlen(answer_ptr) > 0) ? 1 : 0),
|
snprintf(output, OUTPUT_BUFSIZE, "%s\n", answer_ptr);
|
||||||
result_text,
|
} else {
|
||||||
(strlen(answer_ptr) > 0) ? " " : "",
|
snprintf(output, OUTPUT_BUFSIZE, "%d:%s%s%s,",
|
||||||
answer_ptr);
|
strlen(result_text) + strlen(answer_ptr) + ((strlen(answer_ptr) > 0) ? 1 : 0),
|
||||||
|
result_text,
|
||||||
|
(strlen(answer_ptr) > 0) ? " " : "",
|
||||||
|
answer_ptr);
|
||||||
|
}
|
||||||
|
|
||||||
safe_write(thread->clientSock, output, strlen(output));
|
safe_write(thread->clientSock, output, strlen(output));
|
||||||
}
|
}
|
||||||
@ -183,6 +308,7 @@ void * networker(void * arg) {
|
|||||||
containers_destroy(container_handle);
|
containers_destroy(container_handle);
|
||||||
syslog(LOG_DEBUG, "networker: destroyed the container handle");
|
syslog(LOG_DEBUG, "networker: destroyed the container handle");
|
||||||
|
|
||||||
|
htbuffer_free(answer);
|
||||||
|
|
||||||
thread->result = 1;
|
thread->result = 1;
|
||||||
queue_put(&terminated_networker_queue, thread);
|
queue_put(&terminated_networker_queue, thread);
|
||||||
@ -199,9 +325,15 @@ int server() {
|
|||||||
networkerThread_t *thread;
|
networkerThread_t *thread;
|
||||||
pthread_t tid;
|
pthread_t tid;
|
||||||
int optval = 1;
|
int optval = 1;
|
||||||
|
int enableStats;
|
||||||
|
int enableSnmp;
|
||||||
|
|
||||||
char *cfg_address, *cfg_port;
|
char *cfg_address, *cfg_port;
|
||||||
|
|
||||||
|
|
||||||
|
netstring_disabled = atoi(findcfgx(cfg, CFG_SECTION_GLOBAL, CFG_NETSTRING_DISABLED, "0")) || force_netstring_disabled;
|
||||||
|
|
||||||
|
|
||||||
serverSock = socket(AF_INET, SOCK_STREAM, 0);
|
serverSock = socket(AF_INET, SOCK_STREAM, 0);
|
||||||
if (-1 == serverSock) {
|
if (-1 == serverSock) {
|
||||||
syslog(LOG_ERR, "server: failure when creating server socket");
|
syslog(LOG_ERR, "server: failure when creating server socket");
|
||||||
@ -241,9 +373,38 @@ int server() {
|
|||||||
|
|
||||||
count_init(&thread_counter);
|
count_init(&thread_counter);
|
||||||
queue_init(&terminated_networker_queue);
|
queue_init(&terminated_networker_queue);
|
||||||
pthread_create(&cleanerThread, NULL, &cleaner, NULL);
|
int cleanerStartRc = pthread_create(&cleanerThread, NULL, &cleaner, NULL);
|
||||||
|
if (0 != cleanerStartRc) {
|
||||||
|
syslog(LOG_ERR, "server: failure when starting cleaner thread: %d",
|
||||||
|
cleanerStartRc);
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
enableStats = atoi(findcfgx(cfg, "global", "enable_stats", "0"));
|
||||||
|
if (enableStats) {
|
||||||
|
syslog(LOG_INFO, "server: starting stats thread");
|
||||||
|
int staterStartRc = pthread_create(&statsThread, NULL, &statser, NULL);
|
||||||
|
if (0 != cleanerStartRc) {
|
||||||
|
syslog(LOG_ERR, "server: failure when starting stater thread: %d",
|
||||||
|
staterStartRc);
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#if ENABLE_NETSNMP==1
|
||||||
|
enableSnmp = atoi(findcfgx(cfg, "global", "enable_snmp", "0"));
|
||||||
|
if (enableSnmp) {
|
||||||
|
syslog(LOG_INFO, "server: starting snmp subagent thread");
|
||||||
|
int snmperStartRc = pthread_create(&snmpThread, NULL, &snmper, NULL);
|
||||||
|
if (0 != snmperStartRc) {
|
||||||
|
syslog(LOG_ERR, "server: failure when starting snmper thread: %d",
|
||||||
|
snmperStartRc);
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#endif /* ENABLE_NETSNMP */
|
||||||
|
|
||||||
|
// while (getStatCounter(globalStatCounter, STAT_CNT_ACCEPTED) < 100) {
|
||||||
while (1) {
|
while (1) {
|
||||||
syslog(LOG_DEBUG, "server: Waiting for connection");
|
syslog(LOG_DEBUG, "server: Waiting for connection");
|
||||||
|
|
||||||
@ -251,15 +412,18 @@ int server() {
|
|||||||
syslog(LOG_DEBUG, "server: Got a connection %d", clientSock);
|
syslog(LOG_DEBUG, "server: Got a connection %d", clientSock);
|
||||||
|
|
||||||
if (-1 == clientSock) {
|
if (-1 == clientSock) {
|
||||||
syslog(LOG_ERR, "server: failure when accepting connection");
|
incStatCounter(globalStatCounter, STAT_CNT_FAILED);
|
||||||
return -1;
|
syslog(LOG_ERR, "server: failure when accepting connection: %d, %s",
|
||||||
|
errno, strerror(errno));
|
||||||
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
incStatCounter(globalStatCounter, STAT_CNT_ACCEPTED);
|
||||||
|
|
||||||
thread = (networkerThread_t *) malloc(sizeof(networkerThread_t)+10);
|
thread = (networkerThread_t *) htmalloc(sizeof(networkerThread_t)+10);
|
||||||
if (NULL == thread) {
|
if (NULL == thread) {
|
||||||
syslog(LOG_ERR, "server: unable to alloc memory for networker");
|
syslog(LOG_ERR, "server: unable to alloc memory for networker");
|
||||||
break;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -269,21 +433,28 @@ int server() {
|
|||||||
thread->clientAddrLen = clientAddrLen;
|
thread->clientAddrLen = clientAddrLen;
|
||||||
|
|
||||||
count_inc(&thread_counter);
|
count_inc(&thread_counter);
|
||||||
|
incStatCounter(globalStatCounter, STAT_CNT_NETWORKER_R_THREADS);
|
||||||
res = pthread_create(&tid, NULL, &networker, thread);
|
res = pthread_create(&tid, NULL, &networker, thread);
|
||||||
if (0 != res) {
|
if (0 != res) {
|
||||||
syslog(LOG_ERR, "server: unable to start networker thread");
|
syslog(LOG_ERR, "server: unable to start networker thread");
|
||||||
free(thread);
|
free(thread);
|
||||||
|
decStatCounter(globalStatCounter, STAT_CNT_NETWORKER_R_THREADS);
|
||||||
|
incStatCounter(globalStatCounter, STAT_CNT_NETWORKER_THREADS_FAILED);
|
||||||
count_dec(&thread_counter);
|
count_dec(&thread_counter);
|
||||||
break;
|
continue;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
close(serverSock);
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
void usage() {
|
void usage() {
|
||||||
printf("smmapd [-F] [-p pidfile] [-f cfgfile] [-h]\n");
|
printf("smmapd [-F] [-p pidfile] [-f cfgfile] [-h]\n");
|
||||||
printf(" -F run in foreground, overwrite smmapd.ini setting\n");
|
printf(" -F run in foreground, overwrite smmapd.ini setting\n");
|
||||||
|
printf(" -n force netstring disable, overwrite smmapd.ini setting\n");
|
||||||
printf(" -p pidfile, overwrite smmapd.ini setting\n");
|
printf(" -p pidfile, overwrite smmapd.ini setting\n");
|
||||||
printf(" -f cfgfile\n");
|
printf(" -f cfgfile\n");
|
||||||
printf(" -v version and release info\n");
|
printf(" -v version and release info\n");
|
||||||
@ -296,16 +467,19 @@ int main(int argc, char **argv) {
|
|||||||
|
|
||||||
FILE *f;
|
FILE *f;
|
||||||
|
|
||||||
while ((c = getopt(argc, argv,"Fp:f:hv")) != -1)
|
while ((c = getopt(argc, argv,"Fp:f:hvn")) != -1)
|
||||||
switch (c) {
|
switch (c) {
|
||||||
case 'F':
|
case 'F':
|
||||||
foreground = 1;
|
foreground = 1;
|
||||||
break;
|
break;
|
||||||
case 'f':
|
case 'f':
|
||||||
cfg_file = strdup(optarg);
|
cfg_file = htstrdup(optarg);
|
||||||
break;
|
break;
|
||||||
case 'p':
|
case 'p':
|
||||||
pid_file = strdup(optarg);
|
pid_file = htstrdup(optarg);
|
||||||
|
break;
|
||||||
|
case 'n':
|
||||||
|
force_netstring_disabled = 1;
|
||||||
break;
|
break;
|
||||||
case 'v':
|
case 'v':
|
||||||
printf("\nsmmapd - Wolfgang Hottgenroth <woho@hottis.de>\n");
|
printf("\nsmmapd - Wolfgang Hottgenroth <woho@hottis.de>\n");
|
||||||
@ -320,6 +494,8 @@ int main(int argc, char **argv) {
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
openlog("smmapd", LOG_PID, LOG_LOCAL2);
|
openlog("smmapd", LOG_PID, LOG_LOCAL2);
|
||||||
syslog(LOG_INFO, "main: started");
|
syslog(LOG_INFO, "main: started");
|
||||||
cfg = readcfg((cfg_file == NULL) ? DEFAULT_SMMAPD_INI : cfg_file);
|
cfg = readcfg((cfg_file == NULL) ? DEFAULT_SMMAPD_INI : cfg_file);
|
||||||
@ -328,6 +504,7 @@ int main(int argc, char **argv) {
|
|||||||
exit(1);
|
exit(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
do_fork = atoi(findcfgx(cfg, "global", "do_fork", "1"));
|
do_fork = atoi(findcfgx(cfg, "global", "do_fork", "1"));
|
||||||
pid = ((1 == do_fork) && (0 == foreground)) ? fork() : 0;
|
pid = ((1 == do_fork) && (0 == foreground)) ? fork() : 0;
|
||||||
|
|
||||||
@ -347,11 +524,31 @@ int main(int argc, char **argv) {
|
|||||||
exit(0);
|
exit(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
server_setupCounterList();
|
||||||
|
globalStatCounter = initStatCounter("global", server_counterDefs);
|
||||||
|
|
||||||
|
|
||||||
if (0 != (err = server())) {
|
if (0 != (err = server())) {
|
||||||
syslog(LOG_ERR, "main: server fails: %d", err);
|
syslog(LOG_ERR, "main: server fails: %d", err);
|
||||||
exit(1);
|
exit(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
syslog(LOG_INFO, "main: terminating");
|
||||||
|
|
||||||
|
terminating = 1;
|
||||||
|
int cleanerJoinRes = pthread_join(cleanerThread, NULL);
|
||||||
|
syslog(LOG_DEBUG, "cleaner joined: cleanerJoinRes %d", cleanerJoinRes);
|
||||||
|
|
||||||
|
unregister_all();
|
||||||
|
destroyStatCounters();
|
||||||
|
|
||||||
|
if (cfg_file)
|
||||||
|
free(cfg_file);
|
||||||
|
if (pid_file)
|
||||||
|
free(pid_file);
|
||||||
|
|
||||||
|
freecfg(cfg);
|
||||||
|
|
||||||
syslog(LOG_INFO, "main: finished");
|
syslog(LOG_INFO, "main: finished");
|
||||||
closelog();
|
closelog();
|
||||||
}
|
}
|
||||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
x
Reference in New Issue
Block a user