Fix breakages that prevended -DPERL_POISON from compiling.
[p5sagit/p5-mst-13.2.git] / ext / Devel / PPPort / devel / mkapidoc.sh
1 #!/bin/bash
2 ################################################################################
3 #
4 #  mkapidoc.sh -- generate apidoc.fnc from scanning the Perl source
5 #
6 ################################################################################
7 #
8 #  $Revision: 6 $
9 #  $Author: mhx $
10 #  $Date: 2005/01/31 08:10:49 +0100 $
11 #
12 ################################################################################
13 #
14 #  Version 3.x, Copyright (C) 2004-2005, Marcus Holland-Moritz.
15 #  Version 2.x, Copyright (C) 2001, Paul Marquess.
16 #  Version 1.x, Copyright (C) 1999, Kenneth Albanowski.
17 #
18 #  This program is free software; you can redistribute it and/or
19 #  modify it under the same terms as Perl itself.
20 #
21 ################################################################################
22
23 function isperlroot
24 {
25   [ -f "$1/embed.fnc" ] && [ -f "$1/perl.h" ]
26 }
27
28 function usage
29 {
30   echo "USAGE: $0 [perlroot] [output-file] [embed.fnc]"
31   exit 0
32 }
33
34 if [ -z "$1" ]; then
35   if isperlroot "../../.."; then
36     PERLROOT=../../..
37   else
38     PERLROOT=.
39   fi
40 else
41   PERLROOT=$1
42 fi
43
44 if [ -z "$2" ]; then
45   if [ -f "parts/apidoc.fnc" ]; then
46     OUTPUT="parts/apidoc.fnc"
47   else
48     usage
49   fi
50 else
51   OUTPUT=$2
52 fi
53
54 if [ -z "$3" ]; then
55   if [ -f "parts/embed.fnc" ]; then
56     EMBED="parts/embed.fnc"
57   else
58     usage
59   fi
60 else
61   EMBED=$3
62 fi
63
64 if isperlroot $PERLROOT; then
65   grep -hr '^=for apidoc' $PERLROOT | sed -e 's/=for apidoc //' | grep '|' | sort | uniq \
66      | perl -e'$f=pop;open(F,$f)||die"$f:$!";while(<F>){(split/\|/)[2]=~/(\w+)/;$h{$1}++}
67                while(<>){(split/\|/)[2]=~/(\w+)/;$h{$1}||print}' $EMBED >$OUTPUT
68 else
69   usage
70 fi