Add simple exception handling macros for XS writers.
[p5sagit/p5-mst-13.2.git] / ext / Devel / PPPort / devel / mkapidoc.sh
CommitLineData
adfe19db 1#!/bin/bash
2################################################################################
3#
4# mkapidoc.sh -- generate apidoc.fnc from scanning the Perl source
5#
6################################################################################
7#
8# $Revision: 4 $
9# $Author: mhx $
10# $Date: 2004/08/13 12:50:22 +0200 $
11#
12################################################################################
13#
14# Version 3.x, Copyright (C) 2004, 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
23function isperlroot
24{
25 [ -f "$1/embed.fnc" ] && [ -f "$1/perl.h" ]
26}
27
28function usage
29{
30 echo "USAGE: $0 [perlroot] [output-file] [embed.fnc]"
31 exit 0
32}
33
34if [ -z "$1" ]; then
35 if isperlroot "../../.."; then
36 PERLROOT=../../..
37 else
38 PERLROOT=.
39 fi
40else
41 PERLROOT=$1
42fi
43
44if [ -z "$2" ]; then
45 if [ -f "parts/apidoc.fnc" ]; then
46 OUTPUT="parts/apidoc.fnc"
47 else
48 usage
49 fi
50else
51 OUTPUT=$2
52fi
53
54if [ -z "$3" ]; then
55 if [ -f "parts/embed.fnc" ]; then
56 EMBED="parts/embed.fnc"
57 else
58 usage
59 fi
60else
61 EMBED=$3
62fi
63
64if 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
68else
69 usage
70fi