xref: /minix3/external/bsd/bind/dist/unit/atf-src/admin/compile (revision 00b67f09dd46474d133c95011a48590a8e8f94c7)
1*00b67f09SDavid van Moolenbroek#! /bin/sh
2*00b67f09SDavid van Moolenbroek# Wrapper for compilers which do not understand '-c -o'.
3*00b67f09SDavid van Moolenbroek
4*00b67f09SDavid van Moolenbroekscriptversion=2012-03-05.13; # UTC
5*00b67f09SDavid van Moolenbroek
6*00b67f09SDavid van Moolenbroek# Copyright (C) 1999-2012 Free Software Foundation, Inc.
7*00b67f09SDavid van Moolenbroek# Written by Tom Tromey <tromey@cygnus.com>.
8*00b67f09SDavid van Moolenbroek#
9*00b67f09SDavid van Moolenbroek# This program is free software; you can redistribute it and/or modify
10*00b67f09SDavid van Moolenbroek# it under the terms of the GNU General Public License as published by
11*00b67f09SDavid van Moolenbroek# the Free Software Foundation; either version 2, or (at your option)
12*00b67f09SDavid van Moolenbroek# any later version.
13*00b67f09SDavid van Moolenbroek#
14*00b67f09SDavid van Moolenbroek# This program is distributed in the hope that it will be useful,
15*00b67f09SDavid van Moolenbroek# but WITHOUT ANY WARRANTY; without even the implied warranty of
16*00b67f09SDavid van Moolenbroek# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
17*00b67f09SDavid van Moolenbroek# GNU General Public License for more details.
18*00b67f09SDavid van Moolenbroek#
19*00b67f09SDavid van Moolenbroek# You should have received a copy of the GNU General Public License
20*00b67f09SDavid van Moolenbroek# along with this program.  If not, see <http://www.gnu.org/licenses/>.
21*00b67f09SDavid van Moolenbroek
22*00b67f09SDavid van Moolenbroek# As a special exception to the GNU General Public License, if you
23*00b67f09SDavid van Moolenbroek# distribute this file as part of a program that contains a
24*00b67f09SDavid van Moolenbroek# configuration script generated by Autoconf, you may include it under
25*00b67f09SDavid van Moolenbroek# the same distribution terms that you use for the rest of that program.
26*00b67f09SDavid van Moolenbroek
27*00b67f09SDavid van Moolenbroek# This file is maintained in Automake, please report
28*00b67f09SDavid van Moolenbroek# bugs to <bug-automake@gnu.org> or send patches to
29*00b67f09SDavid van Moolenbroek# <automake-patches@gnu.org>.
30*00b67f09SDavid van Moolenbroek
31*00b67f09SDavid van Moolenbroeknl='
32*00b67f09SDavid van Moolenbroek'
33*00b67f09SDavid van Moolenbroek
34*00b67f09SDavid van Moolenbroek# We need space, tab and new line, in precisely that order.  Quoting is
35*00b67f09SDavid van Moolenbroek# there to prevent tools from complaining about whitespace usage.
36*00b67f09SDavid van MoolenbroekIFS=" ""	$nl"
37*00b67f09SDavid van Moolenbroek
38*00b67f09SDavid van Moolenbroekfile_conv=
39*00b67f09SDavid van Moolenbroek
40*00b67f09SDavid van Moolenbroek# func_file_conv build_file lazy
41*00b67f09SDavid van Moolenbroek# Convert a $build file to $host form and store it in $file
42*00b67f09SDavid van Moolenbroek# Currently only supports Windows hosts. If the determined conversion
43*00b67f09SDavid van Moolenbroek# type is listed in (the comma separated) LAZY, no conversion will
44*00b67f09SDavid van Moolenbroek# take place.
45*00b67f09SDavid van Moolenbroekfunc_file_conv ()
46*00b67f09SDavid van Moolenbroek{
47*00b67f09SDavid van Moolenbroek  file=$1
48*00b67f09SDavid van Moolenbroek  case $file in
49*00b67f09SDavid van Moolenbroek    / | /[!/]*) # absolute file, and not a UNC file
50*00b67f09SDavid van Moolenbroek      if test -z "$file_conv"; then
51*00b67f09SDavid van Moolenbroek	# lazily determine how to convert abs files
52*00b67f09SDavid van Moolenbroek	case `uname -s` in
53*00b67f09SDavid van Moolenbroek	  MINGW*)
54*00b67f09SDavid van Moolenbroek	    file_conv=mingw
55*00b67f09SDavid van Moolenbroek	    ;;
56*00b67f09SDavid van Moolenbroek	  CYGWIN*)
57*00b67f09SDavid van Moolenbroek	    file_conv=cygwin
58*00b67f09SDavid van Moolenbroek	    ;;
59*00b67f09SDavid van Moolenbroek	  *)
60*00b67f09SDavid van Moolenbroek	    file_conv=wine
61*00b67f09SDavid van Moolenbroek	    ;;
62*00b67f09SDavid van Moolenbroek	esac
63*00b67f09SDavid van Moolenbroek      fi
64*00b67f09SDavid van Moolenbroek      case $file_conv/,$2, in
65*00b67f09SDavid van Moolenbroek	*,$file_conv,*)
66*00b67f09SDavid van Moolenbroek	  ;;
67*00b67f09SDavid van Moolenbroek	mingw/*)
68*00b67f09SDavid van Moolenbroek	  file=`cmd //C echo "$file " | sed -e 's/"\(.*\) " *$/\1/'`
69*00b67f09SDavid van Moolenbroek	  ;;
70*00b67f09SDavid van Moolenbroek	cygwin/*)
71*00b67f09SDavid van Moolenbroek	  file=`cygpath -m "$file" || echo "$file"`
72*00b67f09SDavid van Moolenbroek	  ;;
73*00b67f09SDavid van Moolenbroek	wine/*)
74*00b67f09SDavid van Moolenbroek	  file=`winepath -w "$file" || echo "$file"`
75*00b67f09SDavid van Moolenbroek	  ;;
76*00b67f09SDavid van Moolenbroek      esac
77*00b67f09SDavid van Moolenbroek      ;;
78*00b67f09SDavid van Moolenbroek  esac
79*00b67f09SDavid van Moolenbroek}
80*00b67f09SDavid van Moolenbroek
81*00b67f09SDavid van Moolenbroek# func_cl_dashL linkdir
82*00b67f09SDavid van Moolenbroek# Make cl look for libraries in LINKDIR
83*00b67f09SDavid van Moolenbroekfunc_cl_dashL ()
84*00b67f09SDavid van Moolenbroek{
85*00b67f09SDavid van Moolenbroek  func_file_conv "$1"
86*00b67f09SDavid van Moolenbroek  if test -z "$lib_path"; then
87*00b67f09SDavid van Moolenbroek    lib_path=$file
88*00b67f09SDavid van Moolenbroek  else
89*00b67f09SDavid van Moolenbroek    lib_path="$lib_path;$file"
90*00b67f09SDavid van Moolenbroek  fi
91*00b67f09SDavid van Moolenbroek  linker_opts="$linker_opts -LIBPATH:$file"
92*00b67f09SDavid van Moolenbroek}
93*00b67f09SDavid van Moolenbroek
94*00b67f09SDavid van Moolenbroek# func_cl_dashl library
95*00b67f09SDavid van Moolenbroek# Do a library search-path lookup for cl
96*00b67f09SDavid van Moolenbroekfunc_cl_dashl ()
97*00b67f09SDavid van Moolenbroek{
98*00b67f09SDavid van Moolenbroek  lib=$1
99*00b67f09SDavid van Moolenbroek  found=no
100*00b67f09SDavid van Moolenbroek  save_IFS=$IFS
101*00b67f09SDavid van Moolenbroek  IFS=';'
102*00b67f09SDavid van Moolenbroek  for dir in $lib_path $LIB
103*00b67f09SDavid van Moolenbroek  do
104*00b67f09SDavid van Moolenbroek    IFS=$save_IFS
105*00b67f09SDavid van Moolenbroek    if $shared && test -f "$dir/$lib.dll.lib"; then
106*00b67f09SDavid van Moolenbroek      found=yes
107*00b67f09SDavid van Moolenbroek      lib=$dir/$lib.dll.lib
108*00b67f09SDavid van Moolenbroek      break
109*00b67f09SDavid van Moolenbroek    fi
110*00b67f09SDavid van Moolenbroek    if test -f "$dir/$lib.lib"; then
111*00b67f09SDavid van Moolenbroek      found=yes
112*00b67f09SDavid van Moolenbroek      lib=$dir/$lib.lib
113*00b67f09SDavid van Moolenbroek      break
114*00b67f09SDavid van Moolenbroek    fi
115*00b67f09SDavid van Moolenbroek  done
116*00b67f09SDavid van Moolenbroek  IFS=$save_IFS
117*00b67f09SDavid van Moolenbroek
118*00b67f09SDavid van Moolenbroek  if test "$found" != yes; then
119*00b67f09SDavid van Moolenbroek    lib=$lib.lib
120*00b67f09SDavid van Moolenbroek  fi
121*00b67f09SDavid van Moolenbroek}
122*00b67f09SDavid van Moolenbroek
123*00b67f09SDavid van Moolenbroek# func_cl_wrapper cl arg...
124*00b67f09SDavid van Moolenbroek# Adjust compile command to suit cl
125*00b67f09SDavid van Moolenbroekfunc_cl_wrapper ()
126*00b67f09SDavid van Moolenbroek{
127*00b67f09SDavid van Moolenbroek  # Assume a capable shell
128*00b67f09SDavid van Moolenbroek  lib_path=
129*00b67f09SDavid van Moolenbroek  shared=:
130*00b67f09SDavid van Moolenbroek  linker_opts=
131*00b67f09SDavid van Moolenbroek  for arg
132*00b67f09SDavid van Moolenbroek  do
133*00b67f09SDavid van Moolenbroek    if test -n "$eat"; then
134*00b67f09SDavid van Moolenbroek      eat=
135*00b67f09SDavid van Moolenbroek    else
136*00b67f09SDavid van Moolenbroek      case $1 in
137*00b67f09SDavid van Moolenbroek	-o)
138*00b67f09SDavid van Moolenbroek	  # configure might choose to run compile as 'compile cc -o foo foo.c'.
139*00b67f09SDavid van Moolenbroek	  eat=1
140*00b67f09SDavid van Moolenbroek	  case $2 in
141*00b67f09SDavid van Moolenbroek	    *.o | *.[oO][bB][jJ])
142*00b67f09SDavid van Moolenbroek	      func_file_conv "$2"
143*00b67f09SDavid van Moolenbroek	      set x "$@" -Fo"$file"
144*00b67f09SDavid van Moolenbroek	      shift
145*00b67f09SDavid van Moolenbroek	      ;;
146*00b67f09SDavid van Moolenbroek	    *)
147*00b67f09SDavid van Moolenbroek	      func_file_conv "$2"
148*00b67f09SDavid van Moolenbroek	      set x "$@" -Fe"$file"
149*00b67f09SDavid van Moolenbroek	      shift
150*00b67f09SDavid van Moolenbroek	      ;;
151*00b67f09SDavid van Moolenbroek	  esac
152*00b67f09SDavid van Moolenbroek	  ;;
153*00b67f09SDavid van Moolenbroek	-I)
154*00b67f09SDavid van Moolenbroek	  eat=1
155*00b67f09SDavid van Moolenbroek	  func_file_conv "$2" mingw
156*00b67f09SDavid van Moolenbroek	  set x "$@" -I"$file"
157*00b67f09SDavid van Moolenbroek	  shift
158*00b67f09SDavid van Moolenbroek	  ;;
159*00b67f09SDavid van Moolenbroek	-I*)
160*00b67f09SDavid van Moolenbroek	  func_file_conv "${1#-I}" mingw
161*00b67f09SDavid van Moolenbroek	  set x "$@" -I"$file"
162*00b67f09SDavid van Moolenbroek	  shift
163*00b67f09SDavid van Moolenbroek	  ;;
164*00b67f09SDavid van Moolenbroek	-l)
165*00b67f09SDavid van Moolenbroek	  eat=1
166*00b67f09SDavid van Moolenbroek	  func_cl_dashl "$2"
167*00b67f09SDavid van Moolenbroek	  set x "$@" "$lib"
168*00b67f09SDavid van Moolenbroek	  shift
169*00b67f09SDavid van Moolenbroek	  ;;
170*00b67f09SDavid van Moolenbroek	-l*)
171*00b67f09SDavid van Moolenbroek	  func_cl_dashl "${1#-l}"
172*00b67f09SDavid van Moolenbroek	  set x "$@" "$lib"
173*00b67f09SDavid van Moolenbroek	  shift
174*00b67f09SDavid van Moolenbroek	  ;;
175*00b67f09SDavid van Moolenbroek	-L)
176*00b67f09SDavid van Moolenbroek	  eat=1
177*00b67f09SDavid van Moolenbroek	  func_cl_dashL "$2"
178*00b67f09SDavid van Moolenbroek	  ;;
179*00b67f09SDavid van Moolenbroek	-L*)
180*00b67f09SDavid van Moolenbroek	  func_cl_dashL "${1#-L}"
181*00b67f09SDavid van Moolenbroek	  ;;
182*00b67f09SDavid van Moolenbroek	-static)
183*00b67f09SDavid van Moolenbroek	  shared=false
184*00b67f09SDavid van Moolenbroek	  ;;
185*00b67f09SDavid van Moolenbroek	-Wl,*)
186*00b67f09SDavid van Moolenbroek	  arg=${1#-Wl,}
187*00b67f09SDavid van Moolenbroek	  save_ifs="$IFS"; IFS=','
188*00b67f09SDavid van Moolenbroek	  for flag in $arg; do
189*00b67f09SDavid van Moolenbroek	    IFS="$save_ifs"
190*00b67f09SDavid van Moolenbroek	    linker_opts="$linker_opts $flag"
191*00b67f09SDavid van Moolenbroek	  done
192*00b67f09SDavid van Moolenbroek	  IFS="$save_ifs"
193*00b67f09SDavid van Moolenbroek	  ;;
194*00b67f09SDavid van Moolenbroek	-Xlinker)
195*00b67f09SDavid van Moolenbroek	  eat=1
196*00b67f09SDavid van Moolenbroek	  linker_opts="$linker_opts $2"
197*00b67f09SDavid van Moolenbroek	  ;;
198*00b67f09SDavid van Moolenbroek	-*)
199*00b67f09SDavid van Moolenbroek	  set x "$@" "$1"
200*00b67f09SDavid van Moolenbroek	  shift
201*00b67f09SDavid van Moolenbroek	  ;;
202*00b67f09SDavid van Moolenbroek	*.cc | *.CC | *.cxx | *.CXX | *.[cC]++)
203*00b67f09SDavid van Moolenbroek	  func_file_conv "$1"
204*00b67f09SDavid van Moolenbroek	  set x "$@" -Tp"$file"
205*00b67f09SDavid van Moolenbroek	  shift
206*00b67f09SDavid van Moolenbroek	  ;;
207*00b67f09SDavid van Moolenbroek	*.c | *.cpp | *.CPP | *.lib | *.LIB | *.Lib | *.OBJ | *.obj | *.[oO])
208*00b67f09SDavid van Moolenbroek	  func_file_conv "$1" mingw
209*00b67f09SDavid van Moolenbroek	  set x "$@" "$file"
210*00b67f09SDavid van Moolenbroek	  shift
211*00b67f09SDavid van Moolenbroek	  ;;
212*00b67f09SDavid van Moolenbroek	*)
213*00b67f09SDavid van Moolenbroek	  set x "$@" "$1"
214*00b67f09SDavid van Moolenbroek	  shift
215*00b67f09SDavid van Moolenbroek	  ;;
216*00b67f09SDavid van Moolenbroek      esac
217*00b67f09SDavid van Moolenbroek    fi
218*00b67f09SDavid van Moolenbroek    shift
219*00b67f09SDavid van Moolenbroek  done
220*00b67f09SDavid van Moolenbroek  if test -n "$linker_opts"; then
221*00b67f09SDavid van Moolenbroek    linker_opts="-link$linker_opts"
222*00b67f09SDavid van Moolenbroek  fi
223*00b67f09SDavid van Moolenbroek  exec "$@" $linker_opts
224*00b67f09SDavid van Moolenbroek  exit 1
225*00b67f09SDavid van Moolenbroek}
226*00b67f09SDavid van Moolenbroek
227*00b67f09SDavid van Moolenbroekeat=
228*00b67f09SDavid van Moolenbroek
229*00b67f09SDavid van Moolenbroekcase $1 in
230*00b67f09SDavid van Moolenbroek  '')
231*00b67f09SDavid van Moolenbroek     echo "$0: No command.  Try '$0 --help' for more information." 1>&2
232*00b67f09SDavid van Moolenbroek     exit 1;
233*00b67f09SDavid van Moolenbroek     ;;
234*00b67f09SDavid van Moolenbroek  -h | --h*)
235*00b67f09SDavid van Moolenbroek    cat <<\EOF
236*00b67f09SDavid van MoolenbroekUsage: compile [--help] [--version] PROGRAM [ARGS]
237*00b67f09SDavid van Moolenbroek
238*00b67f09SDavid van MoolenbroekWrapper for compilers which do not understand '-c -o'.
239*00b67f09SDavid van MoolenbroekRemove '-o dest.o' from ARGS, run PROGRAM with the remaining
240*00b67f09SDavid van Moolenbroekarguments, and rename the output as expected.
241*00b67f09SDavid van Moolenbroek
242*00b67f09SDavid van MoolenbroekIf you are trying to build a whole package this is not the
243*00b67f09SDavid van Moolenbroekright script to run: please start by reading the file 'INSTALL'.
244*00b67f09SDavid van Moolenbroek
245*00b67f09SDavid van MoolenbroekReport bugs to <bug-automake@gnu.org>.
246*00b67f09SDavid van MoolenbroekEOF
247*00b67f09SDavid van Moolenbroek    exit $?
248*00b67f09SDavid van Moolenbroek    ;;
249*00b67f09SDavid van Moolenbroek  -v | --v*)
250*00b67f09SDavid van Moolenbroek    echo "compile $scriptversion"
251*00b67f09SDavid van Moolenbroek    exit $?
252*00b67f09SDavid van Moolenbroek    ;;
253*00b67f09SDavid van Moolenbroek  cl | *[/\\]cl | cl.exe | *[/\\]cl.exe )
254*00b67f09SDavid van Moolenbroek    func_cl_wrapper "$@"      # Doesn't return...
255*00b67f09SDavid van Moolenbroek    ;;
256*00b67f09SDavid van Moolenbroekesac
257*00b67f09SDavid van Moolenbroek
258*00b67f09SDavid van Moolenbroekofile=
259*00b67f09SDavid van Moolenbroekcfile=
260*00b67f09SDavid van Moolenbroek
261*00b67f09SDavid van Moolenbroekfor arg
262*00b67f09SDavid van Moolenbroekdo
263*00b67f09SDavid van Moolenbroek  if test -n "$eat"; then
264*00b67f09SDavid van Moolenbroek    eat=
265*00b67f09SDavid van Moolenbroek  else
266*00b67f09SDavid van Moolenbroek    case $1 in
267*00b67f09SDavid van Moolenbroek      -o)
268*00b67f09SDavid van Moolenbroek	# configure might choose to run compile as 'compile cc -o foo foo.c'.
269*00b67f09SDavid van Moolenbroek	# So we strip '-o arg' only if arg is an object.
270*00b67f09SDavid van Moolenbroek	eat=1
271*00b67f09SDavid van Moolenbroek	case $2 in
272*00b67f09SDavid van Moolenbroek	  *.o | *.obj)
273*00b67f09SDavid van Moolenbroek	    ofile=$2
274*00b67f09SDavid van Moolenbroek	    ;;
275*00b67f09SDavid van Moolenbroek	  *)
276*00b67f09SDavid van Moolenbroek	    set x "$@" -o "$2"
277*00b67f09SDavid van Moolenbroek	    shift
278*00b67f09SDavid van Moolenbroek	    ;;
279*00b67f09SDavid van Moolenbroek	esac
280*00b67f09SDavid van Moolenbroek	;;
281*00b67f09SDavid van Moolenbroek      *.c)
282*00b67f09SDavid van Moolenbroek	cfile=$1
283*00b67f09SDavid van Moolenbroek	set x "$@" "$1"
284*00b67f09SDavid van Moolenbroek	shift
285*00b67f09SDavid van Moolenbroek	;;
286*00b67f09SDavid van Moolenbroek      *)
287*00b67f09SDavid van Moolenbroek	set x "$@" "$1"
288*00b67f09SDavid van Moolenbroek	shift
289*00b67f09SDavid van Moolenbroek	;;
290*00b67f09SDavid van Moolenbroek    esac
291*00b67f09SDavid van Moolenbroek  fi
292*00b67f09SDavid van Moolenbroek  shift
293*00b67f09SDavid van Moolenbroekdone
294*00b67f09SDavid van Moolenbroek
295*00b67f09SDavid van Moolenbroekif test -z "$ofile" || test -z "$cfile"; then
296*00b67f09SDavid van Moolenbroek  # If no '-o' option was seen then we might have been invoked from a
297*00b67f09SDavid van Moolenbroek  # pattern rule where we don't need one.  That is ok -- this is a
298*00b67f09SDavid van Moolenbroek  # normal compilation that the losing compiler can handle.  If no
299*00b67f09SDavid van Moolenbroek  # '.c' file was seen then we are probably linking.  That is also
300*00b67f09SDavid van Moolenbroek  # ok.
301*00b67f09SDavid van Moolenbroek  exec "$@"
302*00b67f09SDavid van Moolenbroekfi
303*00b67f09SDavid van Moolenbroek
304*00b67f09SDavid van Moolenbroek# Name of file we expect compiler to create.
305*00b67f09SDavid van Moolenbroekcofile=`echo "$cfile" | sed 's|^.*[\\/]||; s|^[a-zA-Z]:||; s/\.c$/.o/'`
306*00b67f09SDavid van Moolenbroek
307*00b67f09SDavid van Moolenbroek# Create the lock directory.
308*00b67f09SDavid van Moolenbroek# Note: use '[/\\:.-]' here to ensure that we don't use the same name
309*00b67f09SDavid van Moolenbroek# that we are using for the .o file.  Also, base the name on the expected
310*00b67f09SDavid van Moolenbroek# object file name, since that is what matters with a parallel build.
311*00b67f09SDavid van Moolenbroeklockdir=`echo "$cofile" | sed -e 's|[/\\:.-]|_|g'`.d
312*00b67f09SDavid van Moolenbroekwhile true; do
313*00b67f09SDavid van Moolenbroek  if mkdir "$lockdir" >/dev/null 2>&1; then
314*00b67f09SDavid van Moolenbroek    break
315*00b67f09SDavid van Moolenbroek  fi
316*00b67f09SDavid van Moolenbroek  sleep 1
317*00b67f09SDavid van Moolenbroekdone
318*00b67f09SDavid van Moolenbroek# FIXME: race condition here if user kills between mkdir and trap.
319*00b67f09SDavid van Moolenbroektrap "rmdir '$lockdir'; exit 1" 1 2 15
320*00b67f09SDavid van Moolenbroek
321*00b67f09SDavid van Moolenbroek# Run the compile.
322*00b67f09SDavid van Moolenbroek"$@"
323*00b67f09SDavid van Moolenbroekret=$?
324*00b67f09SDavid van Moolenbroek
325*00b67f09SDavid van Moolenbroekif test -f "$cofile"; then
326*00b67f09SDavid van Moolenbroek  test "$cofile" = "$ofile" || mv "$cofile" "$ofile"
327*00b67f09SDavid van Moolenbroekelif test -f "${cofile}bj"; then
328*00b67f09SDavid van Moolenbroek  test "${cofile}bj" = "$ofile" || mv "${cofile}bj" "$ofile"
329*00b67f09SDavid van Moolenbroekfi
330*00b67f09SDavid van Moolenbroek
331*00b67f09SDavid van Moolenbroekrmdir "$lockdir"
332*00b67f09SDavid van Moolenbroekexit $ret
333*00b67f09SDavid van Moolenbroek
334*00b67f09SDavid van Moolenbroek# Local Variables:
335*00b67f09SDavid van Moolenbroek# mode: shell-script
336*00b67f09SDavid van Moolenbroek# sh-indentation: 2
337*00b67f09SDavid van Moolenbroek# eval: (add-hook 'write-file-hooks 'time-stamp)
338*00b67f09SDavid van Moolenbroek# time-stamp-start: "scriptversion="
339*00b67f09SDavid van Moolenbroek# time-stamp-format: "%:y-%02m-%02d.%02H"
340*00b67f09SDavid van Moolenbroek# time-stamp-time-zone: "UTC"
341*00b67f09SDavid van Moolenbroek# time-stamp-end: "; # UTC"
342*00b67f09SDavid van Moolenbroek# End:
343