1dnl	This file is an input file used by the GNU "autoconf" program to
2dnl	generate the file "configure", which tries to guess your system
3dnl	configuration so that no manual editing of the Makefile should be
4dnl	necessary
5dnl
6dnl $Id: configure.in,v 1.34 2004/03/01 23:06:18 fp Exp $
7dnl
8
9AC_INIT(uudeview.lsm)
10AC_PREREQ(2.9)
11AC_CONFIG_HEADER(config.h)
12
13#
14# package revision
15#
16VERSION=0.5
17PATCH=20
18
19AC_ARG_ENABLE(tcl,     [  --enable-tcl=dir        looks for TCL files files below this directory],have_tcl=$enableval,have_tcl="yes")
20AC_ARG_ENABLE(tk,      [  --enable-tk=dir         looks for TK files below this directory],have_tk=$enableval,have_tk="yes")
21AC_ARG_ENABLE(minews,  [  --disable-minews        don't build the mini-inews],have_minews=$enableval,have_minews=yes)
22AC_ARG_ENABLE(posting, [  --enable-posting=server if using minews, sets the default name of your news
23                          server (will fall back to NNTPSERVER)],newsserver=$enableval,newsserver="")
24AC_ARG_ENABLE(domain,  [  --enable-domain=domain  if using minews, and autoconf cannot figure out
25                          your domain name, use this option to set it.
26                          Otherwise, a bogus domainname is used (causing
27                          the reply address of your postings to be invalid)],domainname=$enableval,domainname="")
28AC_ARG_ENABLE(sendmail,[  --enable-sendmail=prog  Use prog to mail a file with recipients on
29                          the command line and the mail via stdin],have_sendmail=$enableval,have_sendmail=yes)
30AC_ARG_ENABLE(inews,   [  --enable-inews=prog     Use prog to post a file. -h is given on
31                          the command line, the article is piped through
32                          standard input],have_inews=$enableval,have_inews=yes)
33AC_ARG_ENABLE(manuals, [  --disable-manuals       disables installation of the manual pages],have_manuals=$enableval,have_manuals=yes)
34
35#
36# proc to look for a file in a number of places
37#
38
39AC_DEFUN(FP_FIND_FILE, [
40    if test "x$4" = "x" ; then
41	ff_name=[`echo $1 | sed 's/[-.*/ ]/_/g'`]
42    else
43	ff_name="$4"
44    fi
45    eval $ff_name=
46    eval ${ff_name}_dir=
47    ff_file=
48    ff_file_dir=
49    for ff_dir in $2 ; do
50	if test -f $ff_dir/$1 ; then
51	    ff_file_dir=$ff_dir
52	    ff_file=$ff_dir/$1
53	    break
54	fi
55	for ff_subdir in $3 ; do
56	    if test -f $ff_dir/$ff_subdir/$1 ; then
57		ff_file_dir=$ff_dir/$ff_subdir
58		ff_file=$ff_dir/$ff_subdir/$1
59		break
60	    fi
61	done
62	if test "x$ff_file" != "x" ; then
63	    break
64	fi
65    done
66    eval ${ff_name}_dir="$ff_file_dir"
67    eval $ff_name="$ff_file"
68])
69
70#
71# Basic setup
72#
73
74AC_PROG_CC
75AC_PROG_CPP
76wi_PROTOTYPES
77AC_PROG_MAKE_SET
78dnl AC_PROG_INSTALL
79AC_PROG_RANLIB
80AC_PROG_LN_S
81
82if test "$wi_cv_prototypes" = no ; then
83	AC_WARN([Your compiler does not support function prototyping and])
84	AC_WARN([is not able to properly compile this package. What a pity.])
85        AC_WARN([Get gcc, or any compiler that supports function prototypes.])
86	exit 1
87fi
88
89#
90# ----------------------------------------------------------------------
91# Prepare for setup
92# ----------------------------------------------------------------------
93#
94
95orb_to_use=
96more_incs="`echo $with_includes | sed 's/:/ /g'`"
97more_libs="`echo $with_libs     | sed 's/:/ /g'`"
98base_incs="`echo $CPLUS_INCLUDE_PATH | sed 's/:/ /g'` /local/include /usr/local/include /usr/include"
99base_libs="`echo $LIBPATH $LIBRARY_PATH $LD_LIBRARY_PATH $SHLIB_PATH | sed 's/:/ /g'` /local/lib /usr/local/lib /usr/lib"
100base_bins="`echo $PATH | sed 's/:/\/.. /g'` /local/bin /usr/local/bin /usr/bin"
101base_dirs="$prefix `echo $PATH | sed 's/:/\/.. /g'`"
102
103#
104# ----------------------------------------------------------------------
105# Check Tcl setup
106# ----------------------------------------------------------------------
107#
108
109if test "x$have_tcl" != "xno" ; then
110	AC_MSG_CHECKING(for tclConfig.sh)
111	FP_FIND_FILE(tclConfig.sh,$have_tcl $have_tk $more_libs $base_libs $base_dirs,lib)
112	if test "x$tclConfig_sh" = "x" ; then
113		AC_MSG_RESULT(not found)
114		AC_MSG_WARN(Tcl parts disabled)
115		AC_MSG_WARN(use --enable-tcl to locate tclConfig.sh)
116		have_tcl=no
117	else
118		AC_MSG_RESULT($tclConfig_sh)
119	fi
120fi
121
122if test "x$have_tcl" != "xno" ; then
123	AC_MSG_CHECKING(contents of tcl config)
124	. $tclConfig_sh
125	AC_MSG_RESULT(done)
126
127	AC_MSG_CHECKING(tcl version)
128	AC_MSG_RESULT(${TCL_VERSION}${TCL_PATCH_LEVEL})
129
130	if test "$TCL_MAJOR_VERSION" -lt 8 ; then
131		AC_MSG_WARN([Oops, I need at least Tcl 8.0, sorry. Tcl parts disabled.])
132		AC_MSG_WARN(use --enable-tcl to locate tclConfig.sh)
133		have_tcl=no
134	fi
135fi
136
137if test "x$have_tcl" != "xno" ; then
138	AC_MSG_CHECKING(for tcl.h)
139	FP_FIND_FILE(tcl.h,$TCL_PREFIX $TCL_EXEC_PREFIX $TCL_SRC_DIR $have_tcl $have_tk $more_incs $base_incs $base_dirs, include)
140	if test "x$tcl_h_dir" = "x" ; then
141		AC_MSG_RESULT(not found)
142		AC_MSG_WARN(Tcl parts disabled)
143		AC_MSG_WARN(use --enable-tcl to locate tcl.h)
144		have_tcl=no
145	else
146		AC_MSG_RESULT(found in $tcl_h_dir)
147	fi
148fi
149
150if test "x$have_tcl" != "xno" ; then
151	tcllibfile=`eval echo $TCL_LIB_FILE`
152
153	tcllibpath=
154	for item in $TCL_LIB_SPEC $TCL_BUILD_LIB_SPEC ; do
155		case $item in
156		-L*)
157			tcllibpath="$tcllibpath `echo $item | sed 's/^-L//'`"
158			;;
159		esac
160	done
161
162	AC_MSG_CHECKING(for $tcllibfile)
163	FP_FIND_FILE($tcllibfile,$tcllibpath $TCL_PREFIX $TCL_EXEC_PREFIX $TCL_SRC_DIR $have_tcl $have_tk $more_libs $base_libs $base_dirs,lib unix,tcl_lib)
164	if test "x$tcl_lib_dir" = "x" ; then
165		AC_MSG_RESULT(not found)
166		AC_MSG_WARN(Tcl parts disabled)
167		AC_MSG_WARN(use --enable-tcl to locate $tcllibfile)
168		have_tcl="no"
169	else
170		AC_MSG_RESULT(found in $tcl_lib_dir)
171	fi
172
173	case $TCL_DEFS in
174	*TCL_THREADS*)
175		CFLAGS="-D_REENTRANT $CFLAGS"
176		;;
177	esac
178fi
179
180#
181# Tcl setup complete
182#
183
184if test "x$have_tcl" != "xno" ; then
185	tcllibflag=`eval echo $TCL_LIB_FLAG`
186	TCL_CPPFLAGS="-I$tcl_h_dir $TCL_CPPFLAGS"
187	TCL_LDFLAGS="-L$tcl_lib_dir"
188	TCL_LIBS="$tcllibflag $TCL_LIBS"
189	AC_DEFINE(HAVE_TCL)
190	AC_DEFINE(TMAIN_THREE)
191fi
192
193AC_SUBST(TCL_CPPFLAGS)
194AC_SUBST(TCL_LDFLAGS)
195AC_SUBST(TCL_LIBS)
196
197#
198# ----------------------------------------------------------------------
199# Check Tk setup
200# ----------------------------------------------------------------------
201#
202
203if test "x$have_tcl" = "xno" ; then
204	have_tk=no
205fi
206
207if test "x$have_tk" != "xno" ; then
208	AC_MSG_CHECKING(for tkConfig.sh)
209	FP_FIND_FILE(tkConfig.sh,$have_tcl $have_tk $more_libs $base_libs $base_dirs,lib)
210	if test "x$tkConfig_sh" = "x" ; then
211		AC_MSG_RESULT(not found)
212		AC_MSG_WARN(Tk parts disabled)
213		AC_MSG_WARN(use --enable-tk to locate tkConfig.sh)
214		have_tk=no
215	else
216		AC_MSG_RESULT($tkConfig_sh)
217	fi
218fi
219
220if test "x$have_tk" != "xno" ; then
221	AC_MSG_CHECKING(contents of tk config)
222	. $tkConfig_sh
223	AC_MSG_RESULT(done)
224
225	AC_MSG_CHECKING(tk version)
226	AC_MSG_RESULT(${TK_VERSION}${TK_PATCH_LEVEL})
227
228	if test "$TK_MAJOR_VERSION" -lt 8 ; then
229		AC_MSG_WARN([Oops, I need at least Tk 8.0, sorry. Tk parts disabled.])
230		AC_MSG_WARN(use --enable-tk to locate tkConfig.sh)
231		have_tk=no
232	fi
233fi
234
235if test "x$have_tk" != "xno" ; then
236	AC_MSG_CHECKING(for tk.h)
237	FP_FIND_FILE(tk.h,$TK_PREFIX $TK_EXEC_PREFIX $TK_SRC_DIR $have_tk $have_tcl $tcl_h_dir $more_incs $base_incs $base_dirs, include)
238	if test "x$tk_h_dir" = "x" ; then
239		AC_MSG_RESULT(not found)
240		AC_MSG_WARN(Tk parts disabled)
241		AC_MSG_WARN(use --enable-tk to locate tk.h)
242		have_tk=no
243	else
244		AC_MSG_RESULT(found in $tk_h_dir)
245	fi
246fi
247
248if test "x$have_tk" != "xno" ; then
249	tklibfile=`eval echo $TK_LIB_FILE`
250	tcllibpath=
251	for item in $TK_LIB_SPEC $TK_BUILD_LIB_SPEC ; do
252		case $item in
253		-L*)
254			tklibpath="$tklibpath `echo $item | sed 's/^-L//'`"
255			;;
256		esac
257	done
258
259	AC_MSG_CHECKING(for $tklibfile)
260	FP_FIND_FILE($tklibfile,$tklibpath $TK_PREFIX $TK_EXEC_PREFIX $TK_SRC_DIR $have_tcl $have_tk $more_libs $base_libs $base_dirs,lib unix,tk_lib)
261	if test "x$tk_lib_dir" = "x" ; then
262		AC_MSG_RESULT(not found)
263		AC_MSG_WARN(Tk parts disabled)
264		AC_MSG_WARN(use --enable-tk to locate $tklibfile)
265		have_tk="no"
266	else
267		AC_MSG_RESULT(found in $tk_lib_dir)
268	fi
269fi
270
271#
272# Tk setup complete
273#
274
275if test "x$have_tk" != "xno" ; then
276	tklibflag=`eval echo $TK_LIB_FLAG`
277	TCL_CPPFLAGS="-I$tk_h_dir $TK_XINCLUDES $TCL_CPPFLAGS"
278	TCL_LDFLAGS="-L$tk_lib_dir $TCL_LDFLAGS"
279	TCL_LIBS="$tklibflag $TCL_LIBS"
280	AC_DEFINE(HAVE_TK)
281fi
282
283#
284# we might need various libraries if we decide to go for TCL/TK
285#
286
287AC_CHECK_FUNC(sin,, LIBS="$LIBS -lm")
288
289#
290# these libs are needed for both TK and minews (from tk's configure.in)
291# and in some cases -lsocket features gettimeofday, needed for TCL
292#
293
294tk_checkBoth=0
295AC_CHECK_FUNC(connect, tk_checkSocket=0, tk_checkSocket=1)
296if test "$tk_checkSocket" = 1; then
297    AC_CHECK_LIB(socket, connect, LIBS="$LIBS -lsocket", tk_checkBoth=1)
298fi
299if test "$tk_checkBoth" = 1; then
300    tk_oldLibs=$LIBS
301    LIBS="$LIBS -lsocket -lnsl"
302    AC_CHECK_FUNC(accept, tk_checkNsl=0, [LIBS=$tk_oldLibs])
303fi
304AC_CHECK_FUNC(gethostbyname, , AC_CHECK_LIB(nsl, gethostbyname, [LIBS="$LIBS -lnsl"]))
305
306#
307# Look for a mailing program to be used by uuenview
308#
309
310case "x$have_sendmail" in
311xno*)
312	MAILER=""
313	;;
314x|xyes*)
315	AC_PATH_PROG(MAILER,sendmail,,$PATH:/sbin:/usr/lib:/usr/sbin:/usr/etc)
316	if test "x$MAILER" = "x" ; then
317	AC_PATH_PROG(MAILER,mailx,,$PATH:/sbin:/usr/lib:/usr/sbin:/usr/etc)
318	if test "x$MAILER" != "x" ; then
319		AC_DEFINE(MAILER_NEEDS_SUBJECT)	# mailx wants -s "subject"
320	else
321	AC_PATH_PROG(MAILER,elm,,$PATH)
322	if test "x$MAILER" != "x" ; then
323		AC_DEFINE(MAILER_NEEDS_SUBJECT)	# elm wants -s "subject"
324	else
325	AC_PATH_PROG(MAILER,mail,,$PATH:/sbin:/usr/lib:/usr/sbin:/usr/etc)
326	if test "x$MAILER" = "x" ; then
327		AC_WARN([I haven't found a suitable mail program. You will not be])
328		AC_WARN([able to mail files directly from uuenview.])
329	fi
330	fi
331	fi
332	fi
333	;;
334*)
335	AC_MSG_CHECKING([for suitable mailer])
336	AC_MSG_RESULT($have_sendmail)
337	if test ! -x $have_sendmail ; then
338		AC_WARN([Cannot execute $have_sendmail])
339		AC_WARN([Make sure this prog exists when running uuenview])
340	fi
341	MAILER="$have_sendmail"
342	;;
343esac
344
345if test "x$MAILER" != "x" ; then
346	AC_DEFINE_UNQUOTED(PROG_MAILER,"$MAILER")
347fi
348
349#
350# Look for inews. If it is there, there's no need to make our own
351#
352
353case "x$have_inews" in
354xno*)
355	INEWS=""
356	have_minews=no
357	newsserver="not_configured"
358	domainname="not_configured"
359	;;
360x|xyes*)
361	AC_PATH_PROG(INEWS,inews,,$PATH:/usr/bin:/usr/news:/usr/news/bin:/usr/local/bin:/usr/local/news:/usr/local/news/bin:/usr/share/news:/usr/share/news/bin)
362
363	if test "x$INEWS" != "x" ; then
364		AC_DEFINE(HAVE_NEWS)
365		AC_DEFINE_UNQUOTED(PROG_INEWS,"$INEWS -h")
366		have_minews=no
367		newsserver="not_needed"
368		domainname="not_needed"
369	else
370	if test "$have_minews" = "yes" ; then
371		AC_DEFINE(HAVE_NEWS)
372
373		#
374		# we must cheat here to find the final location of minews.
375		# ./configure defines the final values too late. This mimics
376		# what autoconf 2.7 does.
377		#
378
379		eval "our_prefix=$prefix"
380		eval "our_exec_prefix=$exec_prefix"
381		eval "our_bindir=$bindir"
382
383		if test "x$our_prefix" = "xNONE" ; then
384			eval "our_prefix=$ac_default_prefix"
385		fi
386		if test "x$our_exec_prefix" = "xNONE" ; then
387			eval "our_exec_prefix=$our_prefix"
388		fi
389		if test "x$our_bindir" = "xNONE/bin" ; then
390			eval "our_bindir=$our_exec_prefix/bin"
391		fi
392
393		AC_DEFINE_UNQUOTED(PROG_INEWS,"${our_bindir}/minews -h")
394	else
395		AC_WARN([Couldn't find inews and you didn't want minews.])
396		AC_WARN([You won't be able to post files directly from uuenview])
397		have_minews=no
398		newsserver="not_configured"
399		domainname="not_configured"
400	fi
401	fi
402	;;
403*)
404	AC_MSG_CHECKING([for suitable inews])
405	AC_MSG_RESULT([$have_inews])
406	if test ! -x $have_inews ; then
407		AC_WARN([Cannot execute $have_inews])
408		AC_WARN([Make sure this prog exists when running uuenvew])
409	fi
410	AC_DEFINE(HAVE_NEWS)
411	AC_DEFINE_UNQUOTED(PROG_INEWS,"$have_inews -h")
412	have_minews=no
413	newsserver="not_needed"
414	domainname="not_needed"
415	;;
416esac
417
418#
419# check for NNTPSERVER or NNTP_SERVER
420#
421
422if test "$have_minews" = "yes" ; then
423AC_MSG_CHECKING([for news server])
424if test "x$newsserver" = "x" ; then
425if test "x$NNTPSERVER" != "x" ; then
426	newsserver=$NNTPSERVER
427else
428if test "x$NNTP_SRVER" != "x" ; then
429	newsserver=$NNTP_SERVER
430fi
431fi
432fi
433if test "x$newsserver" = "x" ; then
434	AC_MSG_RESULT([not found])
435	AC_DEFINE(NEED_NNTPSERVER)
436else
437	AC_MSG_RESULT($newsserver)
438	AC_DEFINE_UNQUOTED(NNTPSERVER,"$newsserver")
439fi
440fi
441
442#
443# If we compile and use minews, we want to know our domain name
444#
445
446if test "$have_minews" = "yes" ; then
447AC_PATH_PROG(HOSTNAME,hostname,,$PATH:/sbin:/usr/sbin)
448AC_MSG_CHECKING([domain name])
449
450#
451# try /etc/resolv.conf
452#
453
454if test "x$domainname" = "x" ; then
455if test -f /etc/resolv.conf ; then
456	#
457	# note: Parameter for tr is <space><tab>
458	#
459	domainname=`grep '^domain' /etc/resolv.conf | tr -d ' 	' | sed 's/domain//'`
460fi
461fi
462
463#
464# on some systems, hostname returns the FQN
465#
466
467if test "x$domainname" = "x" ; then
468if test "x$HOSTNAME" != "x" ; then
469	if test "x`$HOSTNAME | grep "\\."`" != "x" ; then
470		domainname=`$HOSTNAME | sed 's/[[a-zA-Z0-9]]*\.//'`
471	fi
472fi
473fi
474
475if test "x$domainname" = "x" ; then
476	AC_MSG_RESULT([unknown])
477	AC_WARN([Couldn't figure out your domain name. Configuring bogus])
478	AC_WARN([domain. If you intend to post directly from uuenview,])
479	AC_WARN([rerun configure and use --enable-domain=your-domainname])
480	AC_WARN([with your real domain name.])
481	domainname="i.dont.know.where.i.am"
482else
483	AC_MSG_RESULT($domainname)
484fi
485
486AC_DEFINE_UNQUOTED(DOMAINNAME,"$domainname")
487
488fi
489
490#
491# Check the directory separator. Because this is probably a Unix-like
492# system, just set it statically to "/". On other systems, change it
493# in config.h
494#
495
496AC_MSG_CHECKING([directory separator])
497dirseparator="/"
498AC_MSG_RESULT($dirseparator)
499AC_DEFINE_UNQUOTED(DIRSEPARATOR,"$dirseparator")
500
501#
502# Checks for header files and library functions
503#
504
505AC_TYPE_SIZE_T
506AC_HEADER_STDC
507AC_HEADER_TIME
508AC_CHECK_HEADERS(fcntl.h unistd.h memory.h malloc.h errno.h direct.h)
509AC_CHECK_HEADERS(io.h sys/time.h)
510AC_CHECK_FUNCS(getcwd popen gettimeofday isatty)
511
512AC_CHECK_FUNC(tempnam,,AC_DEFINE(tempnam,_FP_tempnam))
513
514#
515# strerror might be internally defined. this would cause a
516# CHECK_FUNCS(strerror) to fail because it'd be called with
517# zero arguments. So use our own code.
518#
519AC_MSG_CHECKING([for strerror])
520AC_TRY_LINK([
521char *blubb() { return (char *) strerror (42); }
522],[
523(void) blubb();
524],have_strerror=yes,AC_DEFINE(strerror,_FP_strerror)
525have_strerror=no)
526AC_MSG_RESULT($have_strerror)
527
528AC_MSG_CHECKING([for stdin])
529AC_TRY_LINK([
530#include <stdio.h>
531char *blubb() { FILE *in, *out; in=stdin; out=stdout; return (char*)0; }
532],[
533(void) blubb();
534],have_stdio=yes,AC_DEFINE(HAVE_STDIO)
535have_stdio=no)
536AC_MSG_RESULT($have_stdio)
537
538if test "$ac_cv_header_stdc" = "no" ; then
539	AC_CHECK_HEADERS(stdarg.h varargs.h)
540	if test "$ac_cv_header_stdarg_h" = "no" ; then
541	if test "$ac_cv_header_varargs_h" = "no" ; then
542		AC_MSG_ERROR([neither stdarg.h nor varargs.h present])
543	fi
544	fi
545fi
546
547if test "$have_minews" = "yes" ; then
548	AC_CHECK_HEADERS(pwd.h)
549fi
550
551#
552# Check whether this is a DOS-Based system. Another bogus test.
553# Don't even bother to print a message. This code is needed so
554# that autoheader includes the #undef into the final config.h
555# and we can change the definition by hand on a really DOS
556# system (where ./configure doesn't work anyway ...)
557#
558
559if false ; then
560	AC_DEFINE(SYSTEM_DOS)
561	AC_DEFINE(SYSTEM_QUICKWIN)
562	AC_DEFINE(SYSTEM_WINDLL)
563	AC_DEFINE(SYSTEM_OS2)
564fi
565
566if test "x$have_tcl" != "xno" ; then
567	#
568	# Hack: remove doubly-defined libs
569	#
570
571	TCL_NEW_LIBS=""
572	for lib in $TCL_LIBS $LIBS ; do
573		found=no
574		for tlib in $TCL_NEW_LIBS ; do
575			if test "x$lib" = "x$tlib" ; then
576				found=yes
577				break
578			fi
579		done
580		if test "x$found" = "xno" ; then
581			TK_NEW_LIBS="$TK_NEW_LIBS $lib"
582		fi
583	done
584fi
585
586#
587# On some systems (so far, OS2 and WINDOWS), functions that are exported
588# from a DLL must be declared specifically.
589#
590
591AC_DEFINE_UNQUOTED(UUEXPORT,)
592AC_DEFINE_UNQUOTED(UUTCLEXPORT,)
593AC_DEFINE_UNQUOTED(TOOLEXPORT,)
594AC_DEFINE_UNQUOTED(UUTCLFUNC,)
595
596#
597# decide which programs and libraries to build
598#
599
600PROGS="uudeview"
601DOINST="install-uudeview"
602MPAGES="uudeview.1 uuenview.1"
603
604if test "x$have_minews" = "xyes" ; then
605	PROGS="$PROGS minews"
606	DOINST="$DOINST install-minews"
607fi
608if test "x$have_tk" != "xno" ; then
609	PROGS="$PROGS xdeview"
610	MPAGES="$MPAGES xdeview.1"
611	DOINST="$DOINST install-tcl"
612fi
613
614if test "x$have_manuals" = "xno" ; then
615	MPAGES=""
616fi
617
618AC_SUBST(DOINST)
619AC_SUBST(PROGS)
620AC_SUBST(MPAGES)
621
622#
623# set version number
624#
625AC_MSG_CHECKING([version number])
626version_number="$VERSION"pl"$PATCH"
627AC_MSG_RESULT($version_number)
628AC_SUBST(VERSION)
629AC_SUBST(PATCH)
630
631#
632# done
633#
634
635AC_OUTPUT(Makefile tcl/Makefile unix/Makefile uulib/Makefile)
636
637#
638# copy config.h into our subdirectories
639#
640#echo copying tcl/config.h
641#cp config.h tcl
642#echo copying unix/config.h
643#cp config.h unix
644#echo copying uulib/config.h
645#cp config.h uulib
646#
647#
648# goodbye
649#
650