From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from sog-mx-4.v43.ch3.sourceforge.com ([172.29.43.194] helo=mx.sourceforge.net) by sfs-ml-2.v29.ch3.sourceforge.com with esmtp (Exim 4.76) (envelope-from ) id 1VjShN-0002Py-9m for ltp-list@lists.sourceforge.net; Thu, 21 Nov 2013 11:45:30 +0000 Received: from [222.73.24.84] (helo=song.cn.fujitsu.com) by sog-mx-4.v43.ch3.sourceforge.com with esmtp (Exim 4.76) id 1VjSh1-0002in-F4 for ltp-list@lists.sourceforge.net; Thu, 21 Nov 2013 11:45:29 +0000 Received: from fnstmail02.fnst.cn.fujitsu.com (tang.cn.fujitsu.com [127.0.0.1]) by tang.cn.fujitsu.com (8.14.3/8.13.1) with ESMTP id rALBitns017149 for ; Thu, 21 Nov 2013 19:44:56 +0800 Message-ID: <528DF233.2020107@cn.fujitsu.com> Date: Thu, 21 Nov 2013 19:44:51 +0800 From: Xiaoguang Wang MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="------------030703060901050707090107" Subject: [LTP] [PATCH 2/3] move ffsb from testcases/kernel/fs/ext4-new-features to utils List-Id: Linux Test Project General Discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: ltp-list-bounces@lists.sourceforge.net To: ltp-list@lists.sourceforge.net --------------030703060901050707090107 Content-Transfer-Encoding: 7bit Content-Type: text/plain; charset=UTF-8 Hi, This patch is somewhat big, so send it as an attachment. Regards, Xiaoguang Wang --------------030703060901050707090107 Content-Type: text/plain; charset=gb18030; name="0002-move-ffsb-from-testcases-kernel-fs-ext4-new-features.patch" Content-Disposition: attachment; filename*0="0002-move-ffsb-from-testcases-kernel-fs-ext4-new-features.pa"; filename*1="tch" Content-Transfer-Encoding: quoted-printable >From 6a92f4921091ebb4951f0f2afb64890481d42015 Mon Sep 17 00:00:00 2001=0AFr= om: Xiaoguang Wang =0ADate: Thu, 21 Nov 2013 13= :15:39 +0800=0ASubject: [PATCH 2/3] move ffsb from testcases/kernel/fs/ext4= -new-features to=0A utils=0A=0ASigned-off-by: Xiaoguang Wang =0A---=0A testcases/kernel/fs/Makefile = | 2 +-=0A testcases/kernel/fs/ext4-new-features/Makefile | 19 -=0A= testcases/kernel/fs/ext4-new-features/configure | 23 -=0A .../fs/ext4= -new-features/ffsb-6.0-rc2/AUTHORS | 7 -=0A .../fs/ext4-new-feature= s/ffsb-6.0-rc2/COPYING | 340 -=0A .../fs/ext4-new-features/ffsb-6.0-r= c2/INSTALL | 182 -=0A .../fs/ext4-new-features/ffsb-6.0-rc2/LICENSE = | 347 -=0A .../fs/ext4-new-features/ffsb-6.0-rc2/Makefile.am | 46 -= =0A .../fs/ext4-new-features/ffsb-6.0-rc2/Makefile.in | 628 --=0A .../fs/= ext4-new-features/ffsb-6.0-rc2/README | 413 --=0A .../fs/ext4-new-fe= atures/ffsb-6.0-rc2/aclocal.m4 | 880 ---=0A .../fs/ext4-new-features/ffs= b-6.0-rc2/cirlist.c | 106 -=0A .../fs/ext4-new-features/ffsb-6.0-rc2/ci= rlist.h | 41 -=0A .../fs/ext4-new-features/ffsb-6.0-rc2/config.guess |= 1554 -----=0A .../fs/ext4-new-features/ffsb-6.0-rc2/config.h.in | 130 -= =0A .../fs/ext4-new-features/ffsb-6.0-rc2/config.sub | 1717 -----=0A .../= fs/ext4-new-features/ffsb-6.0-rc2/configure | 7000 --------------------= =0A .../fs/ext4-new-features/ffsb-6.0-rc2/configure.in | 49 -=0A .../fs/e= xt4-new-features/ffsb-6.0-rc2/depcomp | 472 --=0A .../ffsb-6.0-rc2/ex= amples/profile=5Feverything | 119 -=0A .../fs/ext4-new-features/ffsb= -6.0-rc2/ffsb.h | 105 -=0A .../fs/ext4-new-features/ffsb-6.0-rc2/ffs= b=5Ffc.c | 110 -=0A .../fs/ext4-new-features/ffsb-6.0-rc2/ffsb=5Ffs.c = | 630 --=0A .../fs/ext4-new-features/ffsb-6.0-rc2/ffsb=5Ffs.h | 184 = -=0A .../fs/ext4-new-features/ffsb-6.0-rc2/ffsb=5Fop.c | 192 -=0A .../f= s/ext4-new-features/ffsb-6.0-rc2/ffsb=5Fop.h | 102 -=0A .../fs/ext4-new= -features/ffsb-6.0-rc2/ffsb=5Fstats.c | 240 -=0A .../fs/ext4-new-features/= ffsb-6.0-rc2/ffsb=5Fstats.h | 109 -=0A .../fs/ext4-new-features/ffsb-6.0-r= c2/ffsb=5Ftg.c | 369 --=0A .../fs/ext4-new-features/ffsb-6.0-rc2/ffsb= =5Ftg.h | 206 -=0A .../ext4-new-features/ffsb-6.0-rc2/ffsb=5Fthread.c = | 171 -=0A .../ext4-new-features/ffsb-6.0-rc2/ffsb=5Fthread.h | 108 -= =0A .../kernel/fs/ext4-new-features/ffsb-6.0-rc2/fh.c | 280 -=0A .../kern= el/fs/ext4-new-features/ffsb-6.0-rc2/fh.h | 41 -=0A .../fs/ext4-new-feat= ures/ffsb-6.0-rc2/filelist.c | 499 --=0A .../fs/ext4-new-features/ffsb-6= .0-rc2/filelist.h | 145 -=0A .../fs/ext4-new-features/ffsb-6.0-rc2/fileo= ps.c | 542 --=0A .../fs/ext4-new-features/ffsb-6.0-rc2/fileops.h | = 51 -=0A .../fs/ext4-new-features/ffsb-6.0-rc2/install-sh | 250 -=0A ...= /fs/ext4-new-features/ffsb-6.0-rc2/list.c | 53 -=0A .../fs/ext4-new= -features/ffsb-6.0-rc2/list.h | 53 -=0A .../fs/ext4-new-features/ff= sb-6.0-rc2/main.c | 255 -=0A .../fs/ext4-new-features/ffsb-6.0-rc2/m= etaops.c | 112 -=0A .../fs/ext4-new-features/ffsb-6.0-rc2/metaops.h = | 28 -=0A .../fs/ext4-new-features/ffsb-6.0-rc2/missing | 336 -=0A = .../ext4-new-features/ffsb-6.0-rc2/mkinstalldirs | 40 -=0A .../fs/ext4-= new-features/ffsb-6.0-rc2/parser.c | 1051 ---=0A .../fs/ext4-new-featur= es/ffsb-6.0-rc2/parser.h | 151 -=0A .../ffsb-6.0-rc2/public-descriptio= n | 4 -=0A .../fs/ext4-new-features/ffsb-6.0-rc2/rand.c = | 188 -=0A .../fs/ext4-new-features/ffsb-6.0-rc2/rand.h | 60 = -=0A .../kernel/fs/ext4-new-features/ffsb-6.0-rc2/rbt.c | 1063 ---=0A .../k= ernel/fs/ext4-new-features/ffsb-6.0-rc2/rbt.h | 316 -=0A .../ffsb-6.0-rc2/= registration-description | 7 -=0A .../fs/ext4-new-features/ffsb= -6.0-rc2/rwlock.c | 108 -=0A .../fs/ext4-new-features/ffsb-6.0-rc2/rwl= ock.h | 51 -=0A .../fs/ext4-new-features/ffsb-6.0-rc2/stamp-h.in | = 1 -=0A .../fs/ext4-new-features/ffsb-6.0-rc2/util.c | 345 -=0A ..= ./fs/ext4-new-features/ffsb-6.0-rc2/util.h | 94 -=0A utils/Makefile= | 21 +=0A utils/ffsb-6.0-rc2/AUTHORS= | 7 +=0A utils/ffsb-6.0-rc2/COPYING = | 340 +=0A utils/ffsb-6.0-rc2/INSTALL = | 182 +=0A utils/ffsb-6.0-rc2/LICENSE | 347 +=0A= utils/ffsb-6.0-rc2/Makefile.am | 46 +=0A utils/ffsb-= 6.0-rc2/Makefile.in | 628 ++=0A utils/ffsb-6.0-rc2/REA= DME | 413 ++=0A utils/ffsb-6.0-rc2/aclocal.m4 = | 880 +++=0A utils/ffsb-6.0-rc2/cirlist.c = | 106 +=0A utils/ffsb-6.0-rc2/cirlist.h | = 41 +=0A utils/ffsb-6.0-rc2/config.guess | 1554 +++++=0A = utils/ffsb-6.0-rc2/config.h.in | 130 +=0A utils/ffsb-6= .0-rc2/config.sub | 1717 +++++=0A utils/ffsb-6.0-rc2/c= onfigure | 7000 ++++++++++++++++++++=0A utils/ffsb-6.= 0-rc2/configure.in | 49 +=0A utils/ffsb-6.0-rc2/depcom= p | 472 ++=0A utils/ffsb-6.0-rc2/examples/profile= =5Feverything | 119 +=0A utils/ffsb-6.0-rc2/ffsb.h = | 105 +=0A utils/ffsb-6.0-rc2/ffsb=5Ffc.c | 1= 10 +=0A utils/ffsb-6.0-rc2/ffsb=5Ffs.c | 630 ++=0A u= tils/ffsb-6.0-rc2/ffsb=5Ffs.h | 184 +=0A utils/ffsb-= 6.0-rc2/ffsb=5Fop.c | 192 +=0A utils/ffsb-6.0-rc2/ff= sb=5Fop.h | 102 +=0A utils/ffsb-6.0-rc2/ffsb=5Fstats= .c | 240 +=0A utils/ffsb-6.0-rc2/ffsb=5Fstats.h = | 109 +=0A utils/ffsb-6.0-rc2/ffsb=5Ftg.c = | 369 ++=0A utils/ffsb-6.0-rc2/ffsb=5Ftg.h | 206 = +=0A utils/ffsb-6.0-rc2/ffsb=5Fthread.c | 171 +=0A utils= /ffsb-6.0-rc2/ffsb=5Fthread.h | 108 +=0A utils/ffsb-6.0-= rc2/fh.c | 280 +=0A utils/ffsb-6.0-rc2/fh.h = | 41 +=0A utils/ffsb-6.0-rc2/filelist.c = | 499 ++=0A utils/ffsb-6.0-rc2/filelist.h = | 145 +=0A utils/ffsb-6.0-rc2/fileops.c | 542 ++= =0A utils/ffsb-6.0-rc2/fileops.h | 51 +=0A utils/ff= sb-6.0-rc2/install-sh | 250 +=0A utils/ffsb-6.0-rc2/l= ist.c | 53 +=0A utils/ffsb-6.0-rc2/list.h = | 53 +=0A utils/ffsb-6.0-rc2/main.c = | 255 +=0A utils/ffsb-6.0-rc2/metaops.c | 11= 2 +=0A utils/ffsb-6.0-rc2/metaops.h | 28 +=0A utils= /ffsb-6.0-rc2/missing | 336 +=0A utils/ffsb-6.0-rc= 2/mkinstalldirs | 40 +=0A utils/ffsb-6.0-rc2/parser.c = | 1051 +++=0A utils/ffsb-6.0-rc2/parser.h = | 151 +=0A utils/ffsb-6.0-rc2/public-description = | 4 +=0A utils/ffsb-6.0-rc2/rand.c | 188 +=0A = utils/ffsb-6.0-rc2/rand.h | 60 +=0A utils/ffsb-6= .0-rc2/rbt.c | 1063 +++=0A utils/ffsb-6.0-rc2/rbt= .h | 316 +=0A utils/ffsb-6.0-rc2/registration-de= scription | 7 +=0A utils/ffsb-6.0-rc2/rwlock.c = | 108 +=0A utils/ffsb-6.0-rc2/rwlock.h | 51 = +=0A utils/ffsb-6.0-rc2/stamp-h.in | 1 +=0A utils/f= fsb-6.0-rc2/util.c | 345 +=0A utils/ffsb-6.0-rc2/= util.h | 94 +=0A 116 files changed, 22703 insert= ions(+), 22724 deletions(-)=0A delete mode 100755 testcases/kernel/fs/ext4-= new-features/configure=0A delete mode 100644 testcases/kernel/fs/ext4-new-f= eatures/ffsb-6.0-rc2/AUTHORS=0A delete mode 100644 testcases/kernel/fs/ext4= -new-features/ffsb-6.0-rc2/COPYING=0A delete mode 100644 testcases/kernel/f= s/ext4-new-features/ffsb-6.0-rc2/INSTALL=0A delete mode 100644 testcases/ke= rnel/fs/ext4-new-features/ffsb-6.0-rc2/LICENSE=0A delete mode 100644 testca= ses/kernel/fs/ext4-new-features/ffsb-6.0-rc2/Makefile.am=0A delete mode 100= 644 testcases/kernel/fs/ext4-new-features/ffsb-6.0-rc2/Makefile.in=0A delet= e mode 100644 testcases/kernel/fs/ext4-new-features/ffsb-6.0-rc2/README=0A = delete mode 100644 testcases/kernel/fs/ext4-new-features/ffsb-6.0-rc2/acloc= al.m4=0A delete mode 100644 testcases/kernel/fs/ext4-new-features/ffsb-6.0-= rc2/cirlist.c=0A delete mode 100644 testcases/kernel/fs/ext4-new-features/f= fsb-6.0-rc2/cirlist.h=0A delete mode 100755 testcases/kernel/fs/ext4-new-fe= atures/ffsb-6.0-rc2/config.guess=0A delete mode 100644 testcases/kernel/fs/= ext4-new-features/ffsb-6.0-rc2/config.h.in=0A delete mode 100755 testcases/= kernel/fs/ext4-new-features/ffsb-6.0-rc2/config.sub=0A delete mode 100755 t= estcases/kernel/fs/ext4-new-features/ffsb-6.0-rc2/configure=0A delete mode = 100644 testcases/kernel/fs/ext4-new-features/ffsb-6.0-rc2/configure.in=0A d= elete mode 100755 testcases/kernel/fs/ext4-new-features/ffsb-6.0-rc2/depcom= p=0A delete mode 100644 testcases/kernel/fs/ext4-new-features/ffsb-6.0-rc2/= examples/profile=5Feverything=0A delete mode 100644 testcases/kernel/fs/ext= 4-new-features/ffsb-6.0-rc2/ffsb.h=0A delete mode 100644 testcases/kernel/f= s/ext4-new-features/ffsb-6.0-rc2/ffsb=5Ffc.c=0A delete mode 100644 testcase= s/kernel/fs/ext4-new-features/ffsb-6.0-rc2/ffsb=5Ffs.c=0A delete mode 10064= 4 testcases/kernel/fs/ext4-new-features/ffsb-6.0-rc2/ffsb=5Ffs.h=0A delete = mode 100644 testcases/kernel/fs/ext4-new-features/ffsb-6.0-rc2/ffsb=5Fop.c= =0A delete mode 100644 testcases/kernel/fs/ext4-new-features/ffsb-6.0-rc2/f= fsb=5Fop.h=0A delete mode 100644 testcases/kernel/fs/ext4-new-features/ffsb= -6.0-rc2/ffsb=5Fstats.c=0A delete mode 100644 testcases/kernel/fs/ext4-new-= features/ffsb-6.0-rc2/ffsb=5Fstats.h=0A delete mode 100644 testcases/kernel= /fs/ext4-new-features/ffsb-6.0-rc2/ffsb=5Ftg.c=0A delete mode 100644 testca= ses/kernel/fs/ext4-new-features/ffsb-6.0-rc2/ffsb=5Ftg.h=0A delete mode 100= 644 testcases/kernel/fs/ext4-new-features/ffsb-6.0-rc2/ffsb=5Fthread.c=0A d= elete mode 100644 testcases/kernel/fs/ext4-new-features/ffsb-6.0-rc2/ffsb= =5Fthread.h=0A delete mode 100644 testcases/kernel/fs/ext4-new-features/ffs= b-6.0-rc2/fh.c=0A delete mode 100644 testcases/kernel/fs/ext4-new-features/= ffsb-6.0-rc2/fh.h=0A delete mode 100644 testcases/kernel/fs/ext4-new-featur= es/ffsb-6.0-rc2/filelist.c=0A delete mode 100644 testcases/kernel/fs/ext4-n= ew-features/ffsb-6.0-rc2/filelist.h=0A delete mode 100644 testcases/kernel/= fs/ext4-new-features/ffsb-6.0-rc2/fileops.c=0A delete mode 100644 testcases= /kernel/fs/ext4-new-features/ffsb-6.0-rc2/fileops.h=0A delete mode 100755 t= estcases/kernel/fs/ext4-new-features/ffsb-6.0-rc2/install-sh=0A delete mode= 100644 testcases/kernel/fs/ext4-new-features/ffsb-6.0-rc2/list.c=0A delete= mode 100644 testcases/kernel/fs/ext4-new-features/ffsb-6.0-rc2/list.h=0A d= elete mode 100644 testcases/kernel/fs/ext4-new-features/ffsb-6.0-rc2/main.c= =0A delete mode 100644 testcases/kernel/fs/ext4-new-features/ffsb-6.0-rc2/m= etaops.c=0A delete mode 100644 testcases/kernel/fs/ext4-new-features/ffsb-6= .0-rc2/metaops.h=0A delete mode 100755 testcases/kernel/fs/ext4-new-feature= s/ffsb-6.0-rc2/missing=0A delete mode 100755 testcases/kernel/fs/ext4-new-f= eatures/ffsb-6.0-rc2/mkinstalldirs=0A delete mode 100644 testcases/kernel/f= s/ext4-new-features/ffsb-6.0-rc2/parser.c=0A delete mode 100644 testcases/k= ernel/fs/ext4-new-features/ffsb-6.0-rc2/parser.h=0A delete mode 100644 test= cases/kernel/fs/ext4-new-features/ffsb-6.0-rc2/public-description=0A delete= mode 100644 testcases/kernel/fs/ext4-new-features/ffsb-6.0-rc2/rand.c=0A d= elete mode 100644 testcases/kernel/fs/ext4-new-features/ffsb-6.0-rc2/rand.h= =0A delete mode 100644 testcases/kernel/fs/ext4-new-features/ffsb-6.0-rc2/r= bt.c=0A delete mode 100644 testcases/kernel/fs/ext4-new-features/ffsb-6.0-r= c2/rbt.h=0A delete mode 100644 testcases/kernel/fs/ext4-new-features/ffsb-6= .0-rc2/registration-description=0A delete mode 100644 testcases/kernel/fs/e= xt4-new-features/ffsb-6.0-rc2/rwlock.c=0A delete mode 100644 testcases/kern= el/fs/ext4-new-features/ffsb-6.0-rc2/rwlock.h=0A delete mode 100644 testcas= es/kernel/fs/ext4-new-features/ffsb-6.0-rc2/stamp-h.in=0A delete mode 10064= 4 testcases/kernel/fs/ext4-new-features/ffsb-6.0-rc2/util.c=0A delete mode = 100644 testcases/kernel/fs/ext4-new-features/ffsb-6.0-rc2/util.h=0A create = mode 100644 utils/ffsb-6.0-rc2/AUTHORS=0A create mode 100644 utils/ffsb-6.0= -rc2/COPYING=0A create mode 100644 utils/ffsb-6.0-rc2/INSTALL=0A create mod= e 100644 utils/ffsb-6.0-rc2/LICENSE=0A create mode 100644 utils/ffsb-6.0-rc= 2/Makefile.am=0A create mode 100644 utils/ffsb-6.0-rc2/Makefile.in=0A creat= e mode 100644 utils/ffsb-6.0-rc2/README=0A create mode 100644 utils/ffsb-6.= 0-rc2/aclocal.m4=0A create mode 100644 utils/ffsb-6.0-rc2/cirlist.c=0A crea= te mode 100644 utils/ffsb-6.0-rc2/cirlist.h=0A create mode 100755 utils/ffs= b-6.0-rc2/config.guess=0A create mode 100644 utils/ffsb-6.0-rc2/config.h.in= =0A create mode 100755 utils/ffsb-6.0-rc2/config.sub=0A create mode 100755 = utils/ffsb-6.0-rc2/configure=0A create mode 100644 utils/ffsb-6.0-rc2/confi= gure.in=0A create mode 100755 utils/ffsb-6.0-rc2/depcomp=0A create mode 100= 644 utils/ffsb-6.0-rc2/examples/profile=5Feverything=0A create mode 100644 = utils/ffsb-6.0-rc2/ffsb.h=0A create mode 100644 utils/ffsb-6.0-rc2/ffsb=5Ff= c.c=0A create mode 100644 utils/ffsb-6.0-rc2/ffsb=5Ffs.c=0A create mode 100= 644 utils/ffsb-6.0-rc2/ffsb=5Ffs.h=0A create mode 100644 utils/ffsb-6.0-rc2= /ffsb=5Fop.c=0A create mode 100644 utils/ffsb-6.0-rc2/ffsb=5Fop.h=0A create= mode 100644 utils/ffsb-6.0-rc2/ffsb=5Fstats.c=0A create mode 100644 utils/= ffsb-6.0-rc2/ffsb=5Fstats.h=0A create mode 100644 utils/ffsb-6.0-rc2/ffsb= =5Ftg.c=0A create mode 100644 utils/ffsb-6.0-rc2/ffsb=5Ftg.h=0A create mode= 100644 utils/ffsb-6.0-rc2/ffsb=5Fthread.c=0A create mode 100644 utils/ffsb= -6.0-rc2/ffsb=5Fthread.h=0A create mode 100644 utils/ffsb-6.0-rc2/fh.c=0A c= reate mode 100644 utils/ffsb-6.0-rc2/fh.h=0A create mode 100644 utils/ffsb-= 6.0-rc2/filelist.c=0A create mode 100644 utils/ffsb-6.0-rc2/filelist.h=0A c= reate mode 100644 utils/ffsb-6.0-rc2/fileops.c=0A create mode 100644 utils/= ffsb-6.0-rc2/fileops.h=0A create mode 100755 utils/ffsb-6.0-rc2/install-sh= =0A create mode 100644 utils/ffsb-6.0-rc2/list.c=0A create mode 100644 util= s/ffsb-6.0-rc2/list.h=0A create mode 100644 utils/ffsb-6.0-rc2/main.c=0A cr= eate mode 100644 utils/ffsb-6.0-rc2/metaops.c=0A create mode 100644 utils/f= fsb-6.0-rc2/metaops.h=0A create mode 100755 utils/ffsb-6.0-rc2/missing=0A c= reate mode 100755 utils/ffsb-6.0-rc2/mkinstalldirs=0A create mode 100644 ut= ils/ffsb-6.0-rc2/parser.c=0A create mode 100644 utils/ffsb-6.0-rc2/parser.h= =0A create mode 100644 utils/ffsb-6.0-rc2/public-description=0A create mode= 100644 utils/ffsb-6.0-rc2/rand.c=0A create mode 100644 utils/ffsb-6.0-rc2/= rand.h=0A create mode 100644 utils/ffsb-6.0-rc2/rbt.c=0A create mode 100644= utils/ffsb-6.0-rc2/rbt.h=0A create mode 100644 utils/ffsb-6.0-rc2/registra= tion-description=0A create mode 100644 utils/ffsb-6.0-rc2/rwlock.c=0A creat= e mode 100644 utils/ffsb-6.0-rc2/rwlock.h=0A create mode 100644 utils/ffsb-= 6.0-rc2/stamp-h.in=0A create mode 100644 utils/ffsb-6.0-rc2/util.c=0A creat= e mode 100644 utils/ffsb-6.0-rc2/util.h=0A=0Adiff --git a/testcases/kernel/= fs/Makefile b/testcases/kernel/fs/Makefile=0Aindex afad6f9..81310f5 100644= =0A--- a/testcases/kernel/fs/Makefile=0A+++ b/testcases/kernel/fs/Makefile= =0A@@ -27,6 +27,6 @@ include $(top=5Fsrcdir)/include/mk/env=5Fpre.mk=0A # X= XX (garrcoop): Need to add autoconf checks for JFS.=0A # ext4-new-features:= This test need to be configured be user.=0A # Please read $LTPROOT/README = to see the detail information=0A-FILTER=5FOUT=5FDIRS :=3D dmapi ext4-new-f= eatures=0A+FILTER=5FOUT=5FDIRS :=3D dmapi=0A =0A include $(top=5Fsrcdir)/i= nclude/mk/generic=5Ftrunk=5Ftarget.mk=0Adiff --git a/testcases/kernel/fs/ex= t4-new-features/Makefile b/testcases/kernel/fs/ext4-new-features/Makefile= =0Aindex 208b8a6..5f4349d 100644=0A--- a/testcases/kernel/fs/ext4-new-featu= res/Makefile=0A+++ b/testcases/kernel/fs/ext4-new-features/Makefile=0A@@ -2= 2,25 +22,6 @@ top=5Fsrcdir ?=3D ../../../..=0A =0A include $(t= op=5Fsrcdir)/include/mk/env=5Fpre.mk=0A =0A-INSTALL=5FTARGETS +=3D ffsb=0A= -INSTALL=5FTARGETS +=3D run=5Fext4=5Ftest.sh=0A INSTALL=5FTARGETS +=3D ex= t4=5Ffuncs.sh=0A-INSTALL=5FTARGETS +=3D ext4-test-config=0A-=0A-FFSBDIR = :=3D ffsb-6.0-rc2=0A-FILTER=5FOUT=5FDIRS :=3D $(FFSBDIR)=0A-FFSB :=3D $(= FFSBDIR)/ffsb=0A-=0A-$(FFSB): $(FFSBDIR)=0A- $(MAKE) -C $^ -f "$(abs=5Fsrcd= ir)/$^/Makefile" all=0A- cp $(FFSBDIR)/ffsb ffsb=0A-=0A-trunk-all: $(FFSB)= =0A-=0A-trunk-clean:: | ffsb-clean=0A-=0A-ffsb-clean:: $(FFSBDIR)=0A- $(MAK= E) -C $^ -f "$(abs=5Fsrcdir)/$^/Makefile" clean=0A- rm -rf ffsb=0A =0A incl= ude $(top=5Fsrcdir)/include/mk/generic=5Ftrunk=5Ftarget.mk=0Adiff --git a/t= estcases/kernel/fs/ext4-new-features/configure b/testcases/kernel/fs/ext4-n= ew-features/configure=0Adeleted file mode 100755=0Aindex 12849e5..0000000= =0A--- a/testcases/kernel/fs/ext4-new-features/configure=0A+++ /dev/null=0A= @@ -1,23 +0,0 @@=0A-#!/bin/sh=0A-=0A-echo "Run the ffsb's configure"=0A-cd = ./ffsb-6.0-rc2=0A-./configure=0A-cd ..=0A-=0A-EXT4=5FDEV=3D=0A-RESULT=3D=0A= -=0A-echo "Ext4 new features test configure"=0A-echo "Please specify a part= ition to create ext4 filesystem:"=0A-read EXT4=5FDEV=0A-=0A-echo "The parti= tion is: $EXT4=5FDEV, Are you sure(Y/N)?"=0A-read RESULT=0A-if [ "$RESULT" = =3D "Y" ] || [ "$RESULT" =3D "y" ]; then=0A- echo "EXT4=5FDEV=3D$EXT4=5FDEV= " > ./ext4-test-config=0A-elif [ "$RESULT" =3D "N" ]; then=0A- echo "Give u= p specifing a partition!"=0A-else=0A- echo "Your input is wrong($RESULT)."= =0A-fi=0Adiff --git a/testcases/kernel/fs/ext4-new-features/ffsb-6.0-rc2/AU= THORS b/testcases/kernel/fs/ext4-new-features/ffsb-6.0-rc2/AUTHORS=0Adelete= d file mode 100644=0Aindex 85d037d..0000000=0A--- a/testcases/kernel/fs/ext= 4-new-features/ffsb-6.0-rc2/AUTHORS=0A+++ /dev/null=0A@@ -1,7 +0,0 @@=0A-Do= minique Heger (dheger@us.ibm.com)=0A-Josh Jacobs (josh@mit.edu)=0A-=0A--> u= p to Version 3.0 of FFSB=0A-=0A-Sonny Rao (raosanth@us.ibm.com)=0A-versions= 3.1 and beyond=0Adiff --git a/testcases/kernel/fs/ext4-new-features/ffsb-6= .0-rc2/COPYING b/testcases/kernel/fs/ext4-new-features/ffsb-6.0-rc2/COPYING= =0Adeleted file mode 100644=0Aindex e90dfed..0000000=0A--- a/testcases/kern= el/fs/ext4-new-features/ffsb-6.0-rc2/COPYING=0A+++ /dev/null=0A@@ -1,340 +0= ,0 @@=0A- GNU GENERAL PUBLIC LICENSE=0A- Version 2, June 1991= =0A-=0A- Copyright (C) 1989, 1991 Free Software Foundation, Inc.=0A- 59= Temple Place, Suite 330, Boston, MA 02111-1307 USA=0A- Everyone is permi= tted to copy and distribute verbatim copies=0A- of this license document, b= ut changing it is not allowed.=0A-=0A- Preamble=0A-=0A- The licenses= for most software are designed to take away your=0A-freedom to share and c= hange it. By contrast, the GNU General Public=0A-License is intended to gu= arantee your freedom to share and change free=0A-software--to make sure the= software is free for all its users. This=0A-General Public License applie= s to most of the Free Software=0A-Foundation's software and to any other pr= ogram whose authors commit to=0A-using it. (Some other Free Software Found= ation software is covered by=0A-the GNU Library General Public License inst= ead.) You can apply it to=0A-your programs, too.=0A-=0A- When we speak of= free software, we are referring to freedom, not=0A-price. Our General Pub= lic Licenses are designed to make sure that you=0A-have the freedom to dist= ribute copies of free software (and charge for=0A-this service if you wish)= , that you receive source code or can get it=0A-if you want it, that you ca= n change the software or use pieces of it=0A-in new free programs; and that= you know you can do these things.=0A-=0A- To protect your rights, we need= to make restrictions that forbid=0A-anyone to deny you these rights or to = ask you to surrender the rights.=0A-These restrictions translate to certain= responsibilities for you if you=0A-distribute copies of the software, or i= f you modify it.=0A-=0A- For example, if you distribute copies of such a p= rogram, whether=0A-gratis or for a fee, you must give the recipients all th= e rights that=0A-you have. You must make sure that they, too, receive or c= an get the=0A-source code. And you must show them these terms so they know= their=0A-rights.=0A-=0A- We protect your rights with two steps: (1) copyr= ight the software, and=0A-(2) offer you this license which gives you legal = permission to copy,=0A-distribute and/or modify the software.=0A-=0A- Also= , for each author's protection and ours, we want to make certain=0A-that ev= eryone understands that there is no warranty for this free=0A-software. If= the software is modified by someone else and passed on, we=0A-want its rec= ipients to know that what they have is not the original, so=0A-that any pro= blems introduced by others will not reflect on the original=0A-authors' rep= utations.=0A-=0A- Finally, any free program is threatened constantly by so= ftware=0A-patents. We wish to avoid the danger that redistributors of a fr= ee=0A-program will individually obtain patent licenses, in effect making th= e=0A-program proprietary. To prevent this, we have made it clear that any= =0A-patent must be licensed for everyone's free use or not licensed at all.= =0A-=0A- The precise terms and conditions for copying, distribution and=0A= -modification follow.=0A-=0A- GNU GENERAL PUBLIC LICENSE=0A- TERMS A= ND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION=0A-=0A- 0. This L= icense applies to any program or other work which contains=0A-a notice plac= ed by the copyright holder saying it may be distributed=0A-under the terms = of this General Public License. The "Program", below,=0A-refers to any suc= h program or work, and a "work based on the Program"=0A-means either the Pr= ogram or any derivative work under copyright law:=0A-that is to say, a work= containing the Program or a portion of it,=0A-either verbatim or with modi= fications and/or translated into another=0A-language. (Hereinafter, transl= ation is included without limitation in=0A-the term "modification".) Each = licensee is addressed as "you".=0A-=0A-Activities other than copying, distr= ibution and modification are not=0A-covered by this License; they are outsi= de its scope. The act of=0A-running the Program is not restricted, and the= output from the Program=0A-is covered only if its contents constitute a wo= rk based on the=0A-Program (independent of having been made by running the = Program).=0A-Whether that is true depends on what the Program does.=0A-=0A-= 1. You may copy and distribute verbatim copies of the Program's=0A-source= code as you receive it, in any medium, provided that you=0A-conspicuously = and appropriately publish on each copy an appropriate=0A-copyright notice a= nd disclaimer of warranty; keep intact all the=0A-notices that refer to thi= s License and to the absence of any warranty;=0A-and give any other recipie= nts of the Program a copy of this License=0A-along with the Program.=0A-=0A= -You may charge a fee for the physical act of transferring a copy, and=0A-y= ou may at your option offer warranty protection in exchange for a fee.=0A-= =0A- 2. You may modify your copy or copies of the Program or any portion= =0A-of it, thus forming a work based on the Program, and copy and=0A-distri= bute such modifications or work under the terms of Section 1=0A-above, prov= ided that you also meet all of these conditions:=0A-=0A- a) You must cau= se the modified files to carry prominent notices=0A- stating that you ch= anged the files and the date of any change.=0A-=0A- b) You must cause an= y work that you distribute or publish, that in=0A- whole or in part cont= ains or is derived from the Program or any=0A- part thereof, to be licen= sed as a whole at no charge to all third=0A- parties under the terms of = this License.=0A-=0A- c) If the modified program normally reads commands= interactively=0A- when run, you must cause it, when started running for= such=0A- interactive use in the most ordinary way, to print or display = an=0A- announcement including an appropriate copyright notice and a=0A- = notice that there is no warranty (or else, saying that you provide=0A- = a warranty) and that users may redistribute the program under=0A- thes= e conditions, and telling the user how to view a copy of this=0A- Licens= e. (Exception: if the Program itself is interactive but=0A- does not no= rmally print such an announcement, your work based on=0A- the Program is= not required to print an announcement.)=0A-=0A-These requirements apply to= the modified work as a whole. If=0A-identifiable sections of that work ar= e not derived from the Program,=0A-and can be reasonably considered indepen= dent and separate works in=0A-themselves, then this License, and its terms,= do not apply to those=0A-sections when you distribute them as separate wor= ks. But when you=0A-distribute the same sections as part of a whole which = is a work based=0A-on the Program, the distribution of the whole must be on= the terms of=0A-this License, whose permissions for other licensees extend= to the=0A-entire whole, and thus to each and every part regardless of who = wrote it.=0A-=0A-Thus, it is not the intent of this section to claim rights= or contest=0A-your rights to work written entirely by you; rather, the int= ent is to=0A-exercise the right to control the distribution of derivative o= r=0A-collective works based on the Program.=0A-=0A-In addition, mere aggreg= ation of another work not based on the Program=0A-with the Program (or with= a work based on the Program) on a volume of=0A-a storage or distribution m= edium does not bring the other work under=0A-the scope of this License.=0A-= =0A- 3. You may copy and distribute the Program (or a work based on it,=0A= -under Section 2) in object code or executable form under the terms of=0A-S= ections 1 and 2 above provided that you also do one of the following:=0A-= =0A- a) Accompany it with the complete corresponding machine-readable=0A= - source code, which must be distributed under the terms of Sections=0A-= 1 and 2 above on a medium customarily used for software interchange; or= ,=0A-=0A- b) Accompany it with a written offer, valid for at least three= =0A- years, to give any third party, for a charge no more than your=0A- = cost of physically performing source distribution, a complete=0A- mac= hine-readable copy of the corresponding source code, to be=0A- distribut= ed under the terms of Sections 1 and 2 above on a medium=0A- customarily= used for software interchange; or,=0A-=0A- c) Accompany it with the inf= ormation you received as to the offer=0A- to distribute corresponding so= urce code. (This alternative is=0A- allowed only for noncommercial dist= ribution and only if you=0A- received the program in object code or exec= utable form with such=0A- an offer, in accord with Subsection b above.)= =0A-=0A-The source code for a work means the preferred form of the work for= =0A-making modifications to it. For an executable work, complete source=0A= -code means all the source code for all modules it contains, plus any=0A-as= sociated interface definition files, plus the scripts used to=0A-control co= mpilation and installation of the executable. However, as a=0A-special exc= eption, the source code distributed need not include=0A-anything that is no= rmally distributed (in either source or binary=0A-form) with the major comp= onents (compiler, kernel, and so on) of the=0A-operating system on which th= e executable runs, unless that component=0A-itself accompanies the executab= le.=0A-=0A-If distribution of executable or object code is made by offering= =0A-access to copy from a designated place, then offering equivalent=0A-acc= ess to copy the source code from the same place counts as=0A-distribution o= f the source code, even though third parties are not=0A-compelled to copy t= he source along with the object code.=0A-=0A- 4. You may not copy, modify,= sublicense, or distribute the Program=0A-except as expressly provided unde= r this License. Any attempt=0A-otherwise to copy, modify, sublicense or di= stribute the Program is=0A-void, and will automatically terminate your righ= ts under this License.=0A-However, parties who have received copies, or rig= hts, from you under=0A-this License will not have their licenses terminated= so long as such=0A-parties remain in full compliance.=0A-=0A- 5. You are = not required to accept this License, since you have not=0A-signed it. Howe= ver, nothing else grants you permission to modify or=0A-distribute the Prog= ram or its derivative works. These actions are=0A-prohibited by law if you= do not accept this License. Therefore, by=0A-modifying or distributing th= e Program (or any work based on the=0A-Program), you indicate your acceptan= ce of this License to do so, and=0A-all its terms and conditions for copyin= g, distributing or modifying=0A-the Program or works based on it.=0A-=0A- = 6. Each time you redistribute the Program (or any work based on the=0A-Prog= ram), the recipient automatically receives a license from the=0A-original l= icensor to copy, distribute or modify the Program subject to=0A-these terms= and conditions. You may not impose any further=0A-restrictions on the rec= ipients' exercise of the rights granted herein.=0A-You are not responsible = for enforcing compliance by third parties to=0A-this License.=0A-=0A- 7. I= f, as a consequence of a court judgment or allegation of patent=0A-infringe= ment or for any other reason (not limited to patent issues),=0A-conditions = are imposed on you (whether by court order, agreement or=0A-otherwise) that= contradict the conditions of this License, they do not=0A-excuse you from = the conditions of this License. If you cannot=0A-distribute so as to satis= fy simultaneously your obligations under this=0A-License and any other pert= inent obligations, then as a consequence you=0A-may not distribute the Prog= ram at all. For example, if a patent=0A-license would not permit royalty-f= ree redistribution of the Program by=0A-all those who receive copies direct= ly or indirectly through you, then=0A-the only way you could satisfy both i= t and this License would be to=0A-refrain entirely from distribution of the= Program.=0A-=0A-If any portion of this section is held invalid or unenforc= eable under=0A-any particular circumstance, the balance of the section is i= ntended to=0A-apply and the section as a whole is intended to apply in othe= r=0A-circumstances.=0A-=0A-It is not the purpose of this section to induce = you to infringe any=0A-patents or other property right claims or to contest= validity of any=0A-such claims; this section has the sole purpose of prote= cting the=0A-integrity of the free software distribution system, which is= =0A-implemented by public license practices. Many people have made=0A-gene= rous contributions to the wide range of software distributed=0A-through tha= t system in reliance on consistent application of that=0A-system; it is up = to the author/donor to decide if he or she is willing=0A-to distribute soft= ware through any other system and a licensee cannot=0A-impose that choice.= =0A-=0A-This section is intended to make thoroughly clear what is believed = to=0A-be a consequence of the rest of this License.=0A-=0A- 8. If the dist= ribution and/or use of the Program is restricted in=0A-certain countries ei= ther by patents or by copyrighted interfaces, the=0A-original copyright hol= der who places the Program under this License=0A-may add an explicit geogra= phical distribution limitation excluding=0A-those countries, so that distri= bution is permitted only in or among=0A-countries not thus excluded. In su= ch case, this License incorporates=0A-the limitation as if written in the b= ody of this License.=0A-=0A- 9. The Free Software Foundation may publish r= evised and/or new versions=0A-of the General Public License from time to ti= me. Such new versions will=0A-be similar in spirit to the present version,= but may differ in detail to=0A-address new problems or concerns.=0A-=0A-Ea= ch version is given a distinguishing version number. If the Program=0A-spe= cifies a version number of this License which applies to it and "any=0A-lat= er version", you have the option of following the terms and conditions=0A-e= ither of that version or of any later version published by the Free=0A-Soft= ware Foundation. If the Program does not specify a version number of=0A-th= is License, you may choose any version ever published by the Free Software= =0A-Foundation.=0A-=0A- 10. If you wish to incorporate parts of the Progra= m into other free=0A-programs whose distribution conditions are different, = write to the author=0A-to ask for permission. For software which is copyri= ghted by the Free=0A-Software Foundation, write to the Free Software Founda= tion; we sometimes=0A-make exceptions for this. Our decision will be guide= d by the two goals=0A-of preserving the free status of all derivatives of o= ur free software and=0A-of promoting the sharing and reuse of software gene= rally.=0A-=0A- NO WARRANTY=0A-=0A- 11. BECAUSE THE PROGRAM IS LICENS= ED FREE OF CHARGE, THERE IS NO WARRANTY=0A-FOR THE PROGRAM, TO THE EXTENT P= ERMITTED BY APPLICABLE LAW. EXCEPT WHEN=0A-OTHERWISE STATED IN WRITING THE= COPYRIGHT HOLDERS AND/OR OTHER PARTIES=0A-PROVIDE THE PROGRAM "AS IS" WITH= OUT WARRANTY OF ANY KIND, EITHER EXPRESSED=0A-OR IMPLIED, INCLUDING, BUT NO= T LIMITED TO, THE IMPLIED WARRANTIES OF=0A-MERCHANTABILITY AND FITNESS FOR = A PARTICULAR PURPOSE. THE ENTIRE RISK AS=0A-TO THE QUALITY AND PERFORMANCE= OF THE PROGRAM IS WITH YOU. SHOULD THE=0A-PROGRAM PROVE DEFECTIVE, YOU AS= SUME THE COST OF ALL NECESSARY SERVICING,=0A-REPAIR OR CORRECTION.=0A-=0A- = 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING= =0A-WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR=0A-= REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,= =0A-INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARI= SING=0A-OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT L= IMITED=0A-TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTA= INED BY=0A-YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH= ANY OTHER=0A-PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISE= D OF THE=0A-POSSIBILITY OF SUCH DAMAGES.=0A-=0A- END OF TERMS AND CON= DITIONS=0A-=0A- How to Apply These Terms to Your New Programs=0A-=0A- = If you develop a new program, and you want it to be of the greatest=0A-poss= ible use to the public, the best way to achieve this is to make it=0A-free = software which everyone can redistribute and change under these terms.=0A-= =0A- To do so, attach the following notices to the program. It is safest= =0A-to attach them to the start of each source file to most effectively=0A-= convey the exclusion of warranty; and each file should have at least=0A-the= "copyright" line and a pointer to where the full notice is found.=0A-=0A- = = =0A- Copyright (C) =0A-=0A- This program is f= ree software; you can redistribute it and/or modify=0A- it under the ter= ms of the GNU General Public License as published by=0A- the Free Softwa= re Foundation; either version 2 of the License, or=0A- (at your option) = any later version.=0A-=0A- This program is distributed in the hope that = it will be useful,=0A- but WITHOUT ANY WARRANTY; without even the implie= d warranty of=0A- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. = See the=0A- GNU General Public License for more details.=0A-=0A- You = should have received a copy of the GNU General Public License=0A- along = with this program; if not, write to the Free Software=0A- Foundation, In= c., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA=0A-=0A-=0A-Also= add information on how to contact you by electronic and paper mail.=0A-=0A= -If the program is interactive, make it output a short notice like this=0A-= when it starts in an interactive mode:=0A-=0A- Gnomovision version 69, C= opyright (C) year name of author=0A- Gnomovision comes with ABSOLUTELY = NO WARRANTY; for details type `show w'.=0A- This is free software, and y= ou are welcome to redistribute it=0A- under certain conditions; type `sh= ow c' for details.=0A-=0A-The hypothetical commands `show w' and `show c' s= hould show the appropriate=0A-parts of the General Public License. Of cour= se, the commands you use may=0A-be called something other than `show w' and= `show c'; they could even be=0A-mouse-clicks or menu items--whatever suits= your program.=0A-=0A-You should also get your employer (if you work as a p= rogrammer) or your=0A-school, if any, to sign a "copyright disclaimer" for = the program, if=0A-necessary. Here is a sample; alter the names:=0A-=0A- = Yoyodyne, Inc., hereby disclaims all copyright interest in the program=0A- = `Gnomovision' (which makes passes at compilers) written by James Hacker.= =0A-=0A- , 1 April 1989=0A- Ty Coon, President of V= ice=0A-=0A-This General Public License does not permit incorporating your p= rogram into=0A-proprietary programs. If your program is a subroutine libra= ry, you may=0A-consider it more useful to permit linking proprietary applic= ations with the=0A-library. If this is what you want to do, use the GNU Li= brary General=0A-Public License instead of this License.=0Adiff --git a/tes= tcases/kernel/fs/ext4-new-features/ffsb-6.0-rc2/INSTALL b/testcases/kernel/= fs/ext4-new-features/ffsb-6.0-rc2/INSTALL=0Adeleted file mode 100644=0Ainde= x b42a17a..0000000=0A--- a/testcases/kernel/fs/ext4-new-features/ffsb-6.0-r= c2/INSTALL=0A+++ /dev/null=0A@@ -1,182 +0,0 @@=0A-Basic Installation=0A-=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=0A-=0A- These are gen= eric installation instructions.=0A-=0A- The `configure' shell script atte= mpts to guess correct values for=0A-various system-dependent variables used= during compilation. It uses=0A-those values to create a `Makefile' in eac= h directory of the package.=0A-It may also create one or more `.h' files co= ntaining system-dependent=0A-definitions. Finally, it creates a shell scri= pt `config.status' that=0A-you can run in the future to recreate the curren= t configuration, a file=0A-`config.cache' that saves the results of its tes= ts to speed up=0A-reconfiguring, and a file `config.log' containing compile= r output=0A-(useful mainly for debugging `configure').=0A-=0A- If you nee= d to do unusual things to compile the package, please try=0A-to figure out = how `configure' could check whether to do them, and mail=0A-diffs or instru= ctions to the address given in the `README' so they can=0A-be considered fo= r the next release. If at some point `config.cache'=0A-contains results yo= u don't want to keep, you may remove or edit it.=0A-=0A- The file `config= ure.in' is used to create `configure' by a program=0A-called `autoconf'. Y= ou only need `configure.in' if you want to change=0A-it or regenerate `conf= igure' using a newer version of `autoconf'.=0A-=0A-The simplest way to comp= ile this package is:=0A-=0A- 1. `cd' to the directory containing the packa= ge's source code and type=0A- `./configure' to configure the package fo= r your system. If you're=0A- using `csh' on an old version of System V= , you might need to type=0A- `sh ./configure' instead to prevent `csh' = from trying to execute=0A- `configure' itself.=0A-=0A- Running `con= figure' takes awhile. While running, it prints some=0A- messages telli= ng which features it is checking for.=0A-=0A- 2. Type `make' to compile th= e package.=0A-=0A- 3. Optionally, type `make check' to run any self-tests = that come with=0A- the package.=0A-=0A- 4. Type `make install' to inst= all the programs and any data files and=0A- documentation.=0A-=0A- 5. = You can remove the program binaries and object files from the=0A- sourc= e code directory by typing `make clean'. To also remove the=0A- files = that `configure' created (so you can compile the package for=0A- a diff= erent kind of computer), type `make distclean'. There is=0A- also a `m= ake maintainer-clean' target, but that is intended mainly=0A- for the p= ackage's developers. If you use it, you may have to get=0A- all sorts = of other programs in order to regenerate files that came=0A- with the d= istribution.=0A-=0A-Compilers and Options=0A-=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=0A-=0A- Some systems require unusual op= tions for compilation or linking that=0A-the `configure' script does not kn= ow about. You can give `configure'=0A-initial values for variables by sett= ing them in the environment. Using=0A-a Bourne-compatible shell, you can d= o that on the command line like=0A-this:=0A- CC=3Dc89 CFLAGS=3D-O2 LIBS= =3D-lposix ./configure=0A-=0A-Or on systems that have the `env' program, yo= u can do it like this:=0A- env CPPFLAGS=3D-I/usr/local/include LDFLAGS= =3D-s ./configure=0A-=0A-Compiling For Multiple Architectures=0A-=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=0A-=0A- You can compile the package for more tha= n one kind of computer at the=0A-same time, by placing the object files for= each architecture in their=0A-own directory. To do this, you must use a v= ersion of `make' that=0A-supports the `VPATH' variable, such as GNU `make'.= `cd' to the=0A-directory where you want the object files and executables = to go and run=0A-the `configure' script. `configure' automatically checks = for the=0A-source code in the directory that `configure' is in and in `..'.= =0A-=0A- If you have to use a `make' that does not supports the `VPATH'= =0A-variable, you have to compile the package for one architecture at a tim= e=0A-in the source code directory. After you have installed the package fo= r=0A-one architecture, use `make distclean' before reconfiguring for anothe= r=0A-architecture.=0A-=0A-Installation Names=0A-=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=0A-=0A- By default, `make install' will insta= ll the package's files in=0A-`/usr/local/bin', `/usr/local/man', etc. You = can specify an=0A-installation prefix other than `/usr/local' by giving `co= nfigure' the=0A-option `--prefix=3DPATH'.=0A-=0A- You can specify separat= e installation prefixes for=0A-architecture-specific files and architecture= -independent files. If you=0A-give `configure' the option `--exec-prefix= =3DPATH', the package will use=0A-PATH as the prefix for installing program= s and libraries.=0A-Documentation and other data files will still use the r= egular prefix.=0A-=0A- In addition, if you use an unusual directory layou= t you can give=0A-options like `--bindir=3DPATH' to specify different value= s for particular=0A-kinds of files. Run `configure --help' for a list of t= he directories=0A-you can set and what kinds of files go in them.=0A-=0A- = If the package supports it, you can cause programs to be installed=0A-with= an extra prefix or suffix on their names by giving `configure' the=0A-opti= on `--program-prefix=3DPREFIX' or `--program-suffix=3DSUFFIX'.=0A-=0A-Optio= nal Features=0A-=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=0A-=0A-= Some packages pay attention to `--enable-FEATURE' options to=0A-`configu= re', where FEATURE indicates an optional part of the package.=0A-They may a= lso pay attention to `--with-PACKAGE' options, where PACKAGE=0A-is somethin= g like `gnu-as' or `x' (for the X Window System). The=0A-`README' should m= ention any `--enable-' and `--with-' options that the=0A-package recognizes= .=0A-=0A- For packages that use the X Window System, `configure' can usua= lly=0A-find the X include and library files automatically, but if it doesn'= t,=0A-you can use the `configure' options `--x-includes=3DDIR' and=0A-`--x-= libraries=3DDIR' to specify their locations.=0A-=0A-Specifying the System T= ype=0A-=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=0A-=0A- There may be some features `configure' can not figur= e out=0A-automatically, but needs to determine by the type of host the pack= age=0A-will run on. Usually `configure' can figure that out, but if it pri= nts=0A-a message saying it can not guess the host type, give it the=0A-`--h= ost=3DTYPE' option. TYPE can either be a short name for the system=0A-type= , such as `sun4', or a canonical name with three fields:=0A- CPU-COMPAN= Y-SYSTEM=0A-=0A-See the file `config.sub' for the possible values of each f= ield. If=0A-`config.sub' isn't included in this package, then this package= doesn't=0A-need to know the host type.=0A-=0A- If you are building compi= ler tools for cross-compiling, you can also=0A-use the `--target=3DTYPE' op= tion to select the type of system they will=0A-produce code for and the `--= build=3DTYPE' option to select the type of=0A-system on which you are compi= ling the package.=0A-=0A-Sharing Defaults=0A-=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=0A-=0A- If you want to set default values for `configu= re' scripts to share,=0A-you can create a site shell script called `config.= site' that gives=0A-default values for variables like `CC', `cache=5Ffile',= and `prefix'.=0A-`configure' looks for `PREFIX/share/config.site' if it ex= ists, then=0A-`PREFIX/etc/config.site' if it exists. Or, you can set the= =0A-`CONFIG=5FSITE' environment variable to the location of the site script= .=0A-A warning: not all `configure' scripts look for a site script.=0A-=0A-= Operation Controls=0A-=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=0A-=0A- `configure' recognizes the following options to control how i= t=0A-operates.=0A-=0A-`--cache-file=3DFILE'=0A- Use and save the result= s of the tests in FILE instead of=0A- `./config.cache'. Set FILE to `/= dev/null' to disable caching, for=0A- debugging `configure'.=0A-=0A-`--= help'=0A- Print a summary of the options to `configure', and exit.=0A-= =0A-`--quiet'=0A-`--silent'=0A-`-q'=0A- Do not print messages saying wh= ich checks are being made. To=0A- suppress all normal output, redirect= it to `/dev/null' (any error=0A- messages will still be shown).=0A-=0A= -`--srcdir=3DDIR'=0A- Look for the package's source code in directory D= IR. Usually=0A- `configure' can determine that directory automatically= .=0A-=0A-`--version'=0A- Print the version of Autoconf used to generate= the `configure'=0A- script, and exit.=0A-=0A-`configure' also accepts = some other, not widely useful, options.=0Adiff --git a/testcases/kernel/fs/= ext4-new-features/ffsb-6.0-rc2/LICENSE b/testcases/kernel/fs/ext4-new-featu= res/ffsb-6.0-rc2/LICENSE=0Adeleted file mode 100644=0Aindex 76d9f61..000000= 0=0A--- a/testcases/kernel/fs/ext4-new-features/ffsb-6.0-rc2/LICENSE=0A+++ = /dev/null=0A@@ -1,347 +0,0 @@=0A- GNU GENERAL PUBLIC LICENSE=0A- = Version 2, June 1991=0A-=0A- Copyright (C) 1989, 1991 Free Software Foun= dation, Inc.=0A- 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA= =0A- Everyone is permitted to copy and distribute verbatim copies=0A- of th= is license document, but changing it is not allowed.=0A-=0A-The Free Softwa= re Foundation has exempted Bash from the requirement of=0A-Paragraph 2c of = the General Public License. This is to say, there is=0A-no requirement for= Bash to print a notice when it is started=0A-interactively in the usual wa= y. We made this exception because users=0A-and standards expect shells not= to print such messages. This=0A-exception applies to any program that ser= ves as a shell and that is=0A-based primarily on Bash as opposed to other G= NU software.=0A-=0A- Preamble=0A-=0A- The licenses for most software= are designed to take away your=0A-freedom to share and change it. By cont= rast, the GNU General Public=0A-License is intended to guarantee your freed= om to share and change free=0A-software--to make sure the software is free = for all its users. This=0A-General Public License applies to most of the F= ree Software=0A-Foundation's software and to any other program whose author= s commit to=0A-using it. (Some other Free Software Foundation software is = covered by=0A-the GNU Library General Public License instead.) You can app= ly it to=0A-your programs, too.=0A-=0A- When we speak of free software, we= are referring to freedom, not=0A-price. Our General Public Licenses are d= esigned to make sure that you=0A-have the freedom to distribute copies of f= ree software (and charge for=0A-this service if you wish), that you receive= source code or can get it=0A-if you want it, that you can change the softw= are or use pieces of it=0A-in new free programs; and that you know you can = do these things.=0A-=0A- To protect your rights, we need to make restricti= ons that forbid=0A-anyone to deny you these rights or to ask you to surrend= er the rights.=0A-These restrictions translate to certain responsibilities = for you if you=0A-distribute copies of the software, or if you modify it.= =0A-=0A- For example, if you distribute copies of such a program, whether= =0A-gratis or for a fee, you must give the recipients all the rights that= =0A-you have. You must make sure that they, too, receive or can get the=0A= -source code. And you must show them these terms so they know their=0A-rig= hts.=0A-=0A- We protect your rights with two steps: (1) copyright the soft= ware, and=0A-(2) offer you this license which gives you legal permission to= copy,=0A-distribute and/or modify the software.=0A-=0A- Also, for each au= thor's protection and ours, we want to make certain=0A-that everyone unders= tands that there is no warranty for this free=0A-software. If the software= is modified by someone else and passed on, we=0A-want its recipients to kn= ow that what they have is not the original, so=0A-that any problems introdu= ced by others will not reflect on the original=0A-authors' reputations.=0A-= =0A- Finally, any free program is threatened constantly by software=0A-pat= ents. We wish to avoid the danger that redistributors of a free=0A-program= will individually obtain patent licenses, in effect making the=0A-program = proprietary. To prevent this, we have made it clear that any=0A-patent mus= t be licensed for everyone's free use or not licensed at all.=0A-=0A- The = precise terms and conditions for copying, distribution and=0A-modification = follow.=0A-=0A- GNU GENERAL PUBLIC LICENSE=0A- TERMS AND CONDITIONS = FOR COPYING, DISTRIBUTION AND MODIFICATION=0A-=0A- 0. This License applies= to any program or other work which contains=0A-a notice placed by the copy= right holder saying it may be distributed=0A-under the terms of this Genera= l Public License. The "Program", below,=0A-refers to any such program or w= ork, and a "work based on the Program"=0A-means either the Program or any d= erivative work under copyright law:=0A-that is to say, a work containing th= e Program or a portion of it,=0A-either verbatim or with modifications and/= or translated into another=0A-language. (Hereinafter, translation is inclu= ded without limitation in=0A-the term "modification".) Each licensee is ad= dressed as "you".=0A-=0A-Activities other than copying, distribution and mo= dification are not=0A-covered by this License; they are outside its scope. = The act of=0A-running the Program is not restricted, and the output from t= he Program=0A-is covered only if its contents constitute a work based on th= e=0A-Program (independent of having been made by running the Program).=0A-W= hether that is true depends on what the Program does.=0A-=0A- 1. You may c= opy and distribute verbatim copies of the Program's=0A-source code as you r= eceive it, in any medium, provided that you=0A-conspicuously and appropriat= ely publish on each copy an appropriate=0A-copyright notice and disclaimer = of warranty; keep intact all the=0A-notices that refer to this License and = to the absence of any warranty;=0A-and give any other recipients of the Pro= gram a copy of this License=0A-along with the Program.=0A-=0A-You may charg= e a fee for the physical act of transferring a copy, and=0A-you may at your= option offer warranty protection in exchange for a fee.=0A-=0A- 2. You ma= y modify your copy or copies of the Program or any portion=0A-of it, thus f= orming a work based on the Program, and copy and=0A-distribute such modific= ations or work under the terms of Section 1=0A-above, provided that you als= o meet all of these conditions:=0A-=0A- a) You must cause the modified f= iles to carry prominent notices=0A- stating that you changed the files a= nd the date of any change.=0A-=0A- b) You must cause any work that you d= istribute or publish, that in=0A- whole or in part contains or is derive= d from the Program or any=0A- part thereof, to be licensed as a whole at= no charge to all third=0A- parties under the terms of this License.=0A-= =0A- c) If the modified program normally reads commands interactively=0A= - when run, you must cause it, when started running for such=0A- inte= ractive use in the most ordinary way, to print or display an=0A- announc= ement including an appropriate copyright notice and a=0A- notice that th= ere is no warranty (or else, saying that you provide=0A- a warranty) and= that users may redistribute the program under=0A- these conditions, and= telling the user how to view a copy of this=0A- License. (Exception: i= f the Program itself is interactive but=0A- does not normally print such= an announcement, your work based on=0A- the Program is not required to = print an announcement.)=0A-=0A-These requirements apply to the modified wor= k as a whole. If=0A-identifiable sections of that work are not derived fro= m the Program,=0A-and can be reasonably considered independent and separate= works in=0A-themselves, then this License, and its terms, do not apply to = those=0A-sections when you distribute them as separate works. But when you= =0A-distribute the same sections as part of a whole which is a work based= =0A-on the Program, the distribution of the whole must be on the terms of= =0A-this License, whose permissions for other licensees extend to the=0A-en= tire whole, and thus to each and every part regardless of who wrote it.=0A-= =0A-Thus, it is not the intent of this section to claim rights or contest= =0A-your rights to work written entirely by you; rather, the intent is to= =0A-exercise the right to control the distribution of derivative or=0A-coll= ective works based on the Program.=0A-=0A-In addition, mere aggregation of = another work not based on the Program=0A-with the Program (or with a work b= ased on the Program) on a volume of=0A-a storage or distribution medium doe= s not bring the other work under=0A-the scope of this License.=0A-=0A- 3. = You may copy and distribute the Program (or a work based on it,=0A-under Se= ction 2) in object code or executable form under the terms of=0A-Sections 1= and 2 above provided that you also do one of the following:=0A-=0A- a) = Accompany it with the complete corresponding machine-readable=0A- source= code, which must be distributed under the terms of Sections=0A- 1 and 2= above on a medium customarily used for software interchange; or,=0A-=0A- = b) Accompany it with a written offer, valid for at least three=0A- yea= rs, to give any third party, for a charge no more than your=0A- cost of = physically performing source distribution, a complete=0A- machine-readab= le copy of the corresponding source code, to be=0A- distributed under th= e terms of Sections 1 and 2 above on a medium=0A- customarily used for s= oftware interchange; or,=0A-=0A- c) Accompany it with the information yo= u received as to the offer=0A- to distribute corresponding source code. = (This alternative is=0A- allowed only for noncommercial distribution an= d only if you=0A- received the program in object code or executable form= with such=0A- an offer, in accord with Subsection b above.)=0A-=0A-The = source code for a work means the preferred form of the work for=0A-making m= odifications to it. For an executable work, complete source=0A-code means = all the source code for all modules it contains, plus any=0A-associated int= erface definition files, plus the scripts used to=0A-control compilation an= d installation of the executable. However, as a=0A-special exception, the = source code distributed need not include=0A-anything that is normally distr= ibuted (in either source or binary=0A-form) with the major components (comp= iler, kernel, and so on) of the=0A-operating system on which the executable= runs, unless that component=0A-itself accompanies the executable.=0A-=0A-I= f distribution of executable or object code is made by offering=0A-access t= o copy from a designated place, then offering equivalent=0A-access to copy = the source code from the same place counts as=0A-distribution of the source= code, even though third parties are not=0A-compelled to copy the source al= ong with the object code.=0A-=0A- 4. You may not copy, modify, sublicense,= or distribute the Program=0A-except as expressly provided under this Licen= se. Any attempt=0A-otherwise to copy, modify, sublicense or distribute the= Program is=0A-void, and will automatically terminate your rights under thi= s License.=0A-However, parties who have received copies, or rights, from yo= u under=0A-this License will not have their licenses terminated so long as = such=0A-parties remain in full compliance.=0A-=0A- 5. You are not required= to accept this License, since you have not=0A-signed it. However, nothing= else grants you permission to modify or=0A-distribute the Program or its d= erivative works. These actions are=0A-prohibited by law if you do not acce= pt this License. Therefore, by=0A-modifying or distributing the Program (o= r any work based on the=0A-Program), you indicate your acceptance of this L= icense to do so, and=0A-all its terms and conditions for copying, distribut= ing or modifying=0A-the Program or works based on it.=0A-=0A- 6. Each time= you redistribute the Program (or any work based on the=0A-Program), the re= cipient automatically receives a license from the=0A-original licensor to c= opy, distribute or modify the Program subject to=0A-these terms and conditi= ons. You may not impose any further=0A-restrictions on the recipients' exe= rcise of the rights granted herein.=0A-You are not responsible for enforcin= g compliance by third parties to=0A-this License.=0A-=0A- 7. If, as a cons= equence of a court judgment or allegation of patent=0A-infringement or for = any other reason (not limited to patent issues),=0A-conditions are imposed = on you (whether by court order, agreement or=0A-otherwise) that contradict = the conditions of this License, they do not=0A-excuse you from the conditio= ns of this License. If you cannot=0A-distribute so as to satisfy simultane= ously your obligations under this=0A-License and any other pertinent obliga= tions, then as a consequence you=0A-may not distribute the Program at all. = For example, if a patent=0A-license would not permit royalty-free redistri= bution of the Program by=0A-all those who receive copies directly or indire= ctly through you, then=0A-the only way you could satisfy both it and this L= icense would be to=0A-refrain entirely from distribution of the Program.=0A= -=0A-If any portion of this section is held invalid or unenforceable under= =0A-any particular circumstance, the balance of the section is intended to= =0A-apply and the section as a whole is intended to apply in other=0A-circu= mstances.=0A-=0A-It is not the purpose of this section to induce you to inf= ringe any=0A-patents or other property right claims or to contest validity = of any=0A-such claims; this section has the sole purpose of protecting the= =0A-integrity of the free software distribution system, which is=0A-impleme= nted by public license practices. Many people have made=0A-generous contri= butions to the wide range of software distributed=0A-through that system in= reliance on consistent application of that=0A-system; it is up to the auth= or/donor to decide if he or she is willing=0A-to distribute software throug= h any other system and a licensee cannot=0A-impose that choice.=0A-=0A-This= section is intended to make thoroughly clear what is believed to=0A-be a c= onsequence of the rest of this License.=0A-=0A- 8. If the distribution and= /or use of the Program is restricted in=0A-certain countries either by pate= nts or by copyrighted interfaces, the=0A-original copyright holder who plac= es the Program under this License=0A-may add an explicit geographical distr= ibution limitation excluding=0A-those countries, so that distribution is pe= rmitted only in or among=0A-countries not thus excluded. In such case, thi= s License incorporates=0A-the limitation as if written in the body of this = License.=0A-=0A- 9. The Free Software Foundation may publish revised and/o= r new versions=0A-of the General Public License from time to time. Such ne= w versions will=0A-be similar in spirit to the present version, but may dif= fer in detail to=0A-address new problems or concerns.=0A-=0A-Each version i= s given a distinguishing version number. If the Program=0A-specifies a ver= sion number of this License which applies to it and "any=0A-later version",= you have the option of following the terms and conditions=0A-either of tha= t version or of any later version published by the Free=0A-Software Foundat= ion. If the Program does not specify a version number of=0A-this License, = you may choose any version ever published by the Free Software=0A-Foundatio= n.=0A-=0A- 10. If you wish to incorporate parts of the Program into other = free=0A-programs whose distribution conditions are different, write to the = author=0A-to ask for permission. For software which is copyrighted by the = Free=0A-Software Foundation, write to the Free Software Foundation; we some= times=0A-make exceptions for this. Our decision will be guided by the two = goals=0A-of preserving the free status of all derivatives of our free softw= are and=0A-of promoting the sharing and reuse of software generally.=0A-=0A= - NO WARRANTY=0A-=0A- 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CH= ARGE, THERE IS NO WARRANTY=0A-FOR THE PROGRAM, TO THE EXTENT PERMITTED BY A= PPLICABLE LAW. EXCEPT WHEN=0A-OTHERWISE STATED IN WRITING THE COPYRIGHT HO= LDERS AND/OR OTHER PARTIES=0A-PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY = OF ANY KIND, EITHER EXPRESSED=0A-OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,= THE IMPLIED WARRANTIES OF=0A-MERCHANTABILITY AND FITNESS FOR A PARTICULAR = PURPOSE. THE ENTIRE RISK AS=0A-TO THE QUALITY AND PERFORMANCE OF THE PROGR= AM IS WITH YOU. SHOULD THE=0A-PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST= OF ALL NECESSARY SERVICING,=0A-REPAIR OR CORRECTION.=0A-=0A- 12. IN NO EV= ENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING=0A-WILL ANY C= OPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR=0A-REDISTRIBUTE T= HE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,=0A-INCLUDING A= NY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING=0A-OUT OF = THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED=0A-TO LO= SS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY=0A-YOU = OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER=0A-P= ROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE=0A-POS= SIBILITY OF SUCH DAMAGES.=0A-=0A- END OF TERMS AND CONDITIONS=0A-=0A-= Appendix: How to Apply These Terms to Your New Programs=0A-=0A- If you de= velop a new program, and you want it to be of the greatest=0A-possible use = to the public, the best way to achieve this is to make it=0A-free software = which everyone can redistribute and change under these terms.=0A-=0A- To d= o so, attach the following notices to the program. It is safest=0A-to atta= ch them to the start of each source file to most effectively=0A-convey the = exclusion of warranty; and each file should have at least=0A-the "copyright= " line and a pointer to where the full notice is found.=0A-=0A- =0A- Copy= right (C) 19yy =0A-=0A- This program is free software; = you can redistribute it and/or modify=0A- it under the terms of the GNU = General Public License as published by=0A- the Free Software Foundation;= either version 2 of the License, or=0A- (at your option) any later vers= ion.=0A-=0A- This program is distributed in the hope that it will be use= ful,=0A- but WITHOUT ANY WARRANTY; without even the implied warranty of= =0A- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the=0A- = GNU General Public License for more details.=0A-=0A- You should have r= eceived a copy of the GNU General Public License=0A- along with this pro= gram; if not, write to the Free Software=0A- Foundation, Inc., 59 Temple= Place - Suite 330, Boston, MA 02111-1307, USA=0A-=0A-Also add information = on how to contact you by electronic and paper mail.=0A-=0A-If the program i= s interactive, make it output a short notice like this=0A-when it starts in= an interactive mode:=0A-=0A- Gnomovision version 69, Copyright (C) 19yy= name of author=0A- Gnomovision comes with ABSOLUTELY NO WARRANTY; for d= etails type `show w'.=0A- This is free software, and you are welcome to = redistribute it=0A- under certain conditions; type `show c' for details.= =0A-=0A-The hypothetical commands `show w' and `show c' should show the app= ropriate=0A-parts of the General Public License. Of course, the commands y= ou use may=0A-be called something other than `show w' and `show c'; they co= uld even be=0A-mouse-clicks or menu items--whatever suits your program.=0A-= =0A-You should also get your employer (if you work as a programmer) or your= =0A-school, if any, to sign a "copyright disclaimer" for the program, if=0A= -necessary. Here is a sample; alter the names:=0A-=0A- Yoyodyne, Inc., he= reby disclaims all copyright interest in the program=0A- `Gnomovision' (wh= ich makes passes at compilers) written by James Hacker.=0A-=0A- , 1 April 1989=0A- Ty Coon, President of Vice=0A-=0A-This Gene= ral Public License does not permit incorporating your program into=0A-propr= ietary programs. If your program is a subroutine library, you may=0A-consi= der it more useful to permit linking proprietary applications with the=0A-l= ibrary. If this is what you want to do, use the GNU Library General=0A-Pub= lic License instead of this License.=0Adiff --git a/testcases/kernel/fs/ext= 4-new-features/ffsb-6.0-rc2/Makefile.am b/testcases/kernel/fs/ext4-new-feat= ures/ffsb-6.0-rc2/Makefile.am=0Adeleted file mode 100644=0Aindex 9ed678b..0= 000000=0A--- a/testcases/kernel/fs/ext4-new-features/ffsb-6.0-rc2/Makefile.= am=0A+++ /dev/null=0A@@ -1,46 +0,0 @@=0A-bin=5FPROGRAMS =3D ffsb #ffsb=5Fte= st=0A-ffsb=5FSOURCES =3D \=0A- fileops.c \=0A- rand.c \=0A- config.h \=0A- = fileops.h \=0A- ffsb.h \=0A- rand.h \=0A- main.c \=0A- fh.h \=0A- fh.c \=0A= - filelist.c \=0A- filelist.h \=0A- metaops.c \=0A- metaops.h \=0A- rwlock.= h \=0A- rwlock.c \=0A- cirlist.c \=0A- cirlist.h \=0A- rbt.c \=0A- rbt.h \= =0A- ffsb=5Ftg.h \=0A- ffsb=5Ftg.c \=0A- ffsb=5Ffs.h \=0A- ffsb=5Ffs.c \=0A= - ffsb=5Fthread.c \=0A- ffsb=5Fthread.h \=0A- ffsb=5Fop.h \=0A- ffsb=5Fop.c= \=0A- util.h \=0A- util.c \=0A- parser.c \=0A- parser.h \=0A- ffsb=5Ffc.c = \=0A- ffsb=5Fstats.c \=0A- list.c=0A-=0A-#ffsb=5Ftest=5FSOURCES =3D config.= h fileops.h ffsb.h rand.h fh.h filelist.h metaops.h rwlock.h cirlist.h rbt.= h ffsb=5Ftg.h ffsb=5Ffs.h ffsb=5Fthread.h ffsb=5Fop.h util.h parser.c parse= r.h ffsb=5Ftest.c=0A-=0A-EXTRA=5FDIST =3D *.txt *.tex=0A-=0A-AM=5FCFLAGS = =3D -D=5FGNU=5FSOURCE=0A-=0A-#CFLAGS +=3D -Wall -Werror -g -Wconversion -an= si=0A-#LDFLAGS +=3D -lefence=0A-=0Adiff --git a/testcases/kernel/fs/ext4-ne= w-features/ffsb-6.0-rc2/Makefile.in b/testcases/kernel/fs/ext4-new-features= /ffsb-6.0-rc2/Makefile.in=0Adeleted file mode 100644=0Aindex 131dd5f..00000= 00=0A--- a/testcases/kernel/fs/ext4-new-features/ffsb-6.0-rc2/Makefile.in= =0A+++ /dev/null=0A@@ -1,628 +0,0 @@=0A-# Makefile.in generated by automake= 1.10.1 from Makefile.am.=0A-# @configure=5Finput@=0A-=0A-# Copyright (C) 1= 994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,=0A-# 2003, 2004, 2005,= 2006, 2007, 2008 Free Software Foundation, Inc.=0A-# This Makefile.in is = free software; the Free Software Foundation=0A-# gives unlimited permission= to copy and/or distribute it,=0A-# with or without modifications, as long = as this notice is preserved.=0A-=0A-# This program is distributed in the ho= pe that it will be useful,=0A-# but WITHOUT ANY WARRANTY, to the extent per= mitted by law; without=0A-# even the implied warranty of MERCHANTABILITY or= FITNESS FOR A=0A-# PARTICULAR PURPOSE.=0A-=0A-@SET=5FMAKE@=0A-=0A-VPATH = =3D @srcdir@=0A-pkgdatadir =3D $(datadir)/@PACKAGE@=0A-pkglibdir =3D $(libd= ir)/@PACKAGE@=0A-pkgincludedir =3D $(includedir)/@PACKAGE@=0A-am=5F=5Fcd = =3D CDPATH=3D"$${ZSH=5FVERSION+.}$(PATH=5FSEPARATOR)" && cd=0A-install=5Fsh= =5FDATA =3D $(install=5Fsh) -c -m 644=0A-install=5Fsh=5FPROGRAM =3D $(insta= ll=5Fsh) -c=0A-install=5Fsh=5FSCRIPT =3D $(install=5Fsh) -c=0A-INSTALL=5FHE= ADER =3D $(INSTALL=5FDATA)=0A-transform =3D $(program=5Ftransform=5Fname)= =0A-NORMAL=5FINSTALL =3D :=0A-PRE=5FINSTALL =3D :=0A-POST=5FINSTALL =3D := =0A-NORMAL=5FUNINSTALL =3D :=0A-PRE=5FUNINSTALL =3D :=0A-POST=5FUNINSTALL = =3D :=0A-build=5Ftriplet =3D @build@=0A-host=5Ftriplet =3D @host@=0A-bin=5F= PROGRAMS =3D ffsb$(EXEEXT)=0A-subdir =3D .=0A-DIST=5FCOMMON =3D README $(am= =5F=5Fconfigure=5Fdeps) $(srcdir)/Makefile.am \=0A- $(srcdir)/Makefile.in $= (srcdir)/config.h.in \=0A- $(top=5Fsrcdir)/configure AUTHORS COPYING Change= Log INSTALL NEWS \=0A- config.guess config.sub depcomp install-sh missing \= =0A- mkinstalldirs=0A-ACLOCAL=5FM4 =3D $(top=5Fsrcdir)/aclocal.m4=0A-am=5F= =5Faclocal=5Fm4=5Fdeps =3D $(top=5Fsrcdir)/configure.in=0A-am=5F=5Fconfigur= e=5Fdeps =3D $(am=5F=5Faclocal=5Fm4=5Fdeps) $(CONFIGURE=5FDEPENDENCIES) \= =0A- $(ACLOCAL=5FM4)=0A-am=5F=5FCONFIG=5FDISTCLEAN=5FFILES =3D config.statu= s config.cache config.log \=0A- configure.lineno config.status.lineno=0A-mk= installdirs =3D $(SHELL) $(top=5Fsrcdir)/mkinstalldirs=0A-CONFIG=5FHEADER = =3D config.h=0A-CONFIG=5FCLEAN=5FFILES =3D=0A-am=5F=5Finstalldirs =3D "$(DE= STDIR)$(bindir)"=0A-binPROGRAMS=5FINSTALL =3D $(INSTALL=5FPROGRAM)=0A-PROGR= AMS =3D $(bin=5FPROGRAMS)=0A-am=5Fffsb=5FOBJECTS =3D fileops.$(OBJEXT) rand= .$(OBJEXT) main.$(OBJEXT) \=0A- fh.$(OBJEXT) filelist.$(OBJEXT) metaops.$(O= BJEXT) \=0A- rwlock.$(OBJEXT) cirlist.$(OBJEXT) rbt.$(OBJEXT) \=0A- ffsb=5F= tg.$(OBJEXT) ffsb=5Ffs.$(OBJEXT) ffsb=5Fthread.$(OBJEXT) \=0A- ffsb=5Fop.$(= OBJEXT) util.$(OBJEXT) parser.$(OBJEXT) \=0A- ffsb=5Ffc.$(OBJEXT) ffsb=5Fst= ats.$(OBJEXT) list.$(OBJEXT)=0A-ffsb=5FOBJECTS =3D $(am=5Fffsb=5FOBJECTS)= =0A-ffsb=5FLDADD =3D $(LDADD)=0A-DEFAULT=5FINCLUDES =3D -I.@am=5F=5Fisrc@= =0A-depcomp =3D $(SHELL) $(top=5Fsrcdir)/depcomp=0A-am=5F=5Fdepfiles=5Fmayb= e =3D depfiles=0A-COMPILE =3D $(CC) $(DEFS) $(DEFAULT=5FINCLUDES) $(INCLUDE= S) $(AM=5FCPPFLAGS) \=0A- $(CPPFLAGS) $(AM=5FCFLAGS) $(CFLAGS)=0A-CCLD =3D = $(CC)=0A-LINK =3D $(CCLD) $(AM=5FCFLAGS) $(CFLAGS) $(AM=5FLDFLAGS) $(LDFLAG= S) -o $@=0A-SOURCES =3D $(ffsb=5FSOURCES)=0A-DIST=5FSOURCES =3D $(ffsb=5FSO= URCES)=0A-ETAGS =3D etags=0A-CTAGS =3D ctags=0A-DISTFILES =3D $(DIST=5FCOMM= ON) $(DIST=5FSOURCES) $(TEXINFOS) $(EXTRA=5FDIST)=0A-distdir =3D $(PACKAGE)= -$(VERSION)=0A-top=5Fdistdir =3D $(distdir)=0A-am=5F=5Fremove=5Fdistdir =3D= \=0A- { test ! -d $(distdir) \=0A- || { find $(distdir) -type d ! -per= m -200 -exec chmod u+w {} ';' \=0A- && rm -fr $(distdir); }; }=0A-D= IST=5FARCHIVES =3D $(distdir).tar.gz=0A-GZIP=5FENV =3D --best=0A-distuninst= allcheck=5Flistfiles =3D find . -type f -print=0A-distcleancheck=5Flistfile= s =3D find . -type f -print=0A-ACLOCAL =3D @ACLOCAL@=0A-AMTAR =3D @AMTAR@= =0A-AUTOCONF =3D @AUTOCONF@=0A-AUTOHEADER =3D @AUTOHEADER@=0A-AUTOMAKE =3D = @AUTOMAKE@=0A-AWK =3D @AWK@=0A-CC =3D @CC@=0A-CCDEPMODE =3D @CCDEPMODE@=0A-= CFLAGS =3D @CFLAGS@=0A-CPP =3D @CPP@=0A-CPPFLAGS =3D @CPPFLAGS@=0A-CYGPATH= =5FW =3D @CYGPATH=5FW@=0A-DEFS =3D @DEFS@=0A-DEPDIR =3D @DEPDIR@=0A-ECHO=5F= C =3D @ECHO=5FC@=0A-ECHO=5FN =3D @ECHO=5FN@=0A-ECHO=5FT =3D @ECHO=5FT@=0A-E= GREP =3D @EGREP@=0A-EXEEXT =3D @EXEEXT@=0A-GREP =3D @GREP@=0A-INSTALL =3D @= INSTALL@=0A-INSTALL=5FDATA =3D @INSTALL=5FDATA@=0A-INSTALL=5FPROGRAM =3D @I= NSTALL=5FPROGRAM@=0A-INSTALL=5FSCRIPT =3D @INSTALL=5FSCRIPT@=0A-INSTALL=5FS= TRIP=5FPROGRAM =3D @INSTALL=5FSTRIP=5FPROGRAM@=0A-LDFLAGS =3D @LDFLAGS@=0A-= LIBOBJS =3D @LIBOBJS@=0A-LIBS =3D @LIBS@=0A-LTLIBOBJS =3D @LTLIBOBJS@=0A-MA= KEINFO =3D @MAKEINFO@=0A-MKDIR=5FP =3D @MKDIR=5FP@=0A-OBJEXT =3D @OBJEXT@= =0A-PACKAGE =3D @PACKAGE@=0A-PACKAGE=5FBUGREPORT =3D @PACKAGE=5FBUGREPORT@= =0A-PACKAGE=5FNAME =3D @PACKAGE=5FNAME@=0A-PACKAGE=5FSTRING =3D @PACKAGE=5F= STRING@=0A-PACKAGE=5FTARNAME =3D @PACKAGE=5FTARNAME@=0A-PACKAGE=5FVERSION = =3D @PACKAGE=5FVERSION@=0A-PATH=5FSEPARATOR =3D @PATH=5FSEPARATOR@=0A-SET= =5FMAKE =3D @SET=5FMAKE@=0A-SHELL =3D @SHELL@=0A-STRIP =3D @STRIP@=0A-VERSI= ON =3D @VERSION@=0A-abs=5Fbuilddir =3D @abs=5Fbuilddir@=0A-abs=5Fsrcdir =3D= @abs=5Fsrcdir@=0A-abs=5Ftop=5Fbuilddir =3D @abs=5Ftop=5Fbuilddir@=0A-abs= =5Ftop=5Fsrcdir =3D @abs=5Ftop=5Fsrcdir@=0A-ac=5Fct=5FCC =3D @ac=5Fct=5FCC@= =0A-am=5F=5Finclude =3D @am=5F=5Finclude@=0A-am=5F=5Fleading=5Fdot =3D @am= =5F=5Fleading=5Fdot@=0A-am=5F=5Fquote =3D @am=5F=5Fquote@=0A-am=5F=5Ftar = =3D @am=5F=5Ftar@=0A-am=5F=5Funtar =3D @am=5F=5Funtar@=0A-bindir =3D @bindi= r@=0A-build =3D @build@=0A-build=5Falias =3D @build=5Falias@=0A-build=5Fcpu= =3D @build=5Fcpu@=0A-build=5Fos =3D @build=5Fos@=0A-build=5Fvendor =3D @bu= ild=5Fvendor@=0A-builddir =3D @builddir@=0A-datadir =3D @datadir@=0A-dataro= otdir =3D @datarootdir@=0A-docdir =3D @docdir@=0A-dvidir =3D @dvidir@=0A-ex= ec=5Fprefix =3D @exec=5Fprefix@=0A-host =3D @host@=0A-host=5Falias =3D @hos= t=5Falias@=0A-host=5Fcpu =3D @host=5Fcpu@=0A-host=5Fos =3D @host=5Fos@=0A-h= ost=5Fvendor =3D @host=5Fvendor@=0A-htmldir =3D @htmldir@=0A-includedir =3D= @includedir@=0A-infodir =3D @infodir@=0A-install=5Fsh =3D @install=5Fsh@= =0A-libdir =3D @libdir@=0A-libexecdir =3D @libexecdir@=0A-localedir =3D @lo= caledir@=0A-localstatedir =3D @localstatedir@=0A-mandir =3D @mandir@=0A-mkd= ir=5Fp =3D @mkdir=5Fp@=0A-oldincludedir =3D @oldincludedir@=0A-pdfdir =3D @= pdfdir@=0A-prefix =3D @prefix@=0A-program=5Ftransform=5Fname =3D @program= =5Ftransform=5Fname@=0A-psdir =3D @psdir@=0A-sbindir =3D @sbindir@=0A-share= dstatedir =3D @sharedstatedir@=0A-srcdir =3D @srcdir@=0A-sysconfdir =3D @sy= sconfdir@=0A-target=5Falias =3D @target=5Falias@=0A-top=5Fbuilddir =3D @top= =5Fbuilddir@=0A-top=5Fsrcdir =3D @top=5Fsrcdir@=0A-ffsb=5FSOURCES =3D \=0A-= fileops.c \=0A- rand.c \=0A- config.h \=0A- fileops.h \=0A- ffsb.h \=0A- r= and.h \=0A- main.c \=0A- fh.h \=0A- fh.c \=0A- filelist.c \=0A- filelist.h = \=0A- metaops.c \=0A- metaops.h \=0A- rwlock.h \=0A- rwlock.c \=0A- cirlist= .c \=0A- cirlist.h \=0A- rbt.c \=0A- rbt.h \=0A- ffsb=5Ftg.h \=0A- ffsb=5Ft= g.c \=0A- ffsb=5Ffs.h \=0A- ffsb=5Ffs.c \=0A- ffsb=5Fthread.c \=0A- ffsb=5F= thread.h \=0A- ffsb=5Fop.h \=0A- ffsb=5Fop.c \=0A- util.h \=0A- util.c \=0A= - parser.c \=0A- parser.h \=0A- ffsb=5Ffc.c \=0A- ffsb=5Fstats.c \=0A- list= .c=0A-=0A-=0A-#ffsb=5Ftest=5FSOURCES =3D config.h fileops.h ffsb.h rand.h f= h.h filelist.h metaops.h rwlock.h cirlist.h rbt.h ffsb=5Ftg.h ffsb=5Ffs.h f= fsb=5Fthread.h ffsb=5Fop.h util.h parser.c parser.h ffsb=5Ftest.c=0A-EXTRA= =5FDIST =3D *.txt *.tex=0A-AM=5FCFLAGS =3D -D=5FGNU=5FSOURCE=0A-all: config= .h=0A- $(MAKE) $(AM=5FMAKEFLAGS) all-am=0A-=0A-.SUFFIXES:=0A-.SUFFIXES: .c = .o .obj=0A-am--refresh:=0A- @:=0A-$(srcdir)/Makefile.in: $(srcdir)/Makefil= e.am $(am=5F=5Fconfigure=5Fdeps)=0A- @for dep in $?; do \=0A- case '$(am= =5F=5Fconfigure=5Fdeps)' in \=0A- *$$dep*) \=0A- echo ' cd $(srcd= ir) && $(AUTOMAKE) --gnu '; \=0A- cd $(srcdir) && $(AUTOMAKE) --gnu = \=0A- && exit 0; \=0A- exit 1;; \=0A- esac; \=0A- done; \=0A- echo= ' cd $(top=5Fsrcdir) && $(AUTOMAKE) --gnu Makefile'; \=0A- cd $(top=5Fsrc= dir) && \=0A- $(AUTOMAKE) --gnu Makefile=0A-.PRECIOUS: Makefile=0A-Makef= ile: $(srcdir)/Makefile.in $(top=5Fbuilddir)/config.status=0A- @case '$?' i= n \=0A- *config.status*) \=0A- echo ' $(SHELL) ./config.status'; \=0A= - $(SHELL) ./config.status;; \=0A- *) \=0A- echo ' cd $(top=5Fbui= lddir) && $(SHELL) ./config.status $@ $(am=5F=5Fdepfiles=5Fmaybe)'; \=0A- = cd $(top=5Fbuilddir) && $(SHELL) ./config.status $@ $(am=5F=5Fdepfiles= =5Fmaybe);; \=0A- esac;=0A-=0A-$(top=5Fbuilddir)/config.status: $(top=5Fsrc= dir)/configure $(CONFIG=5FSTATUS=5FDEPENDENCIES)=0A- $(SHELL) ./config.stat= us --recheck=0A-=0A-$(top=5Fsrcdir)/configure: $(am=5F=5Fconfigure=5Fdeps)= =0A- cd $(srcdir) && $(AUTOCONF)=0A-$(ACLOCAL=5FM4): $(am=5F=5Faclocal=5Fm= 4=5Fdeps)=0A- cd $(srcdir) && $(ACLOCAL) $(ACLOCAL=5FAMFLAGS)=0A-=0A-config= .h: stamp-h1=0A- @if test ! -f $@; then \=0A- rm -f stamp-h1; \=0A- $(M= AKE) $(AM=5FMAKEFLAGS) stamp-h1; \=0A- else :; fi=0A-=0A-stamp-h1: $(srcdir= )/config.h.in $(top=5Fbuilddir)/config.status=0A- @rm -f stamp-h1=0A- cd $(= top=5Fbuilddir) && $(SHELL) ./config.status config.h=0A-$(srcdir)/config.h.= in: $(am=5F=5Fconfigure=5Fdeps)=0A- cd $(top=5Fsrcdir) && $(AUTOHEADER)=0A= - rm -f stamp-h1=0A- touch $@=0A-=0A-distclean-hdr:=0A- -rm -f config.h sta= mp-h1=0A-install-binPROGRAMS: $(bin=5FPROGRAMS)=0A- @$(NORMAL=5FINSTALL)=0A= - test -z "$(bindir)" || $(MKDIR=5FP) "$(DESTDIR)$(bindir)"=0A- @list=3D'$(= bin=5FPROGRAMS)'; for p in $$list; do \=0A- p1=3D`echo $$p|sed 's/$(EXEEX= T)$$//'`; \=0A- if test -f $$p \=0A- ; then \=0A- f=3D`echo "$$p1" = | sed 's,^.*/,,;$(transform);s/$$/$(EXEEXT)/'`; \=0A- echo " $(INSTALL= =5FPROGRAM=5FENV) $(binPROGRAMS=5FINSTALL) '$$p' '$(DESTDIR)$(bindir)/$$f'"= ; \=0A- $(INSTALL=5FPROGRAM=5FENV) $(binPROGRAMS=5FINSTALL) "$$p" "$(DES= TDIR)$(bindir)/$$f" || exit 1; \=0A- else :; fi; \=0A- done=0A-=0A-uninst= all-binPROGRAMS:=0A- @$(NORMAL=5FUNINSTALL)=0A- @list=3D'$(bin=5FPROGRAMS)'= ; for p in $$list; do \=0A- f=3D`echo "$$p" | sed 's,^.*/,,;s/$(EXEEXT)$$= //;$(transform);s/$$/$(EXEEXT)/'`; \=0A- echo " rm -f '$(DESTDIR)$(bindir= )/$$f'"; \=0A- rm -f "$(DESTDIR)$(bindir)/$$f"; \=0A- done=0A-=0A-clean-b= inPROGRAMS:=0A- -test -z "$(bin=5FPROGRAMS)" || rm -f $(bin=5FPROGRAMS)=0A-= ffsb$(EXEEXT): $(ffsb=5FOBJECTS) $(ffsb=5FDEPENDENCIES)=0A- @rm -f ffsb$(EX= EEXT)=0A- $(LINK) $(ffsb=5FOBJECTS) $(ffsb=5FLDADD) $(LIBS)=0A-=0A-mostlycl= ean-compile:=0A- -rm -f *.$(OBJEXT)=0A-=0A-distclean-compile:=0A- -rm -f *.= tab.c=0A-=0A-@AMDEP=5FTRUE@@am=5F=5Finclude@ @am=5F=5Fquote@./$(DEPDIR)/cir= list.Po@am=5F=5Fquote@=0A-@AMDEP=5FTRUE@@am=5F=5Finclude@ @am=5F=5Fquote@./= $(DEPDIR)/ffsb=5Ffc.Po@am=5F=5Fquote@=0A-@AMDEP=5FTRUE@@am=5F=5Finclude@ @a= m=5F=5Fquote@./$(DEPDIR)/ffsb=5Ffs.Po@am=5F=5Fquote@=0A-@AMDEP=5FTRUE@@am= =5F=5Finclude@ @am=5F=5Fquote@./$(DEPDIR)/ffsb=5Fop.Po@am=5F=5Fquote@=0A-@A= MDEP=5FTRUE@@am=5F=5Finclude@ @am=5F=5Fquote@./$(DEPDIR)/ffsb=5Fstats.Po@am= =5F=5Fquote@=0A-@AMDEP=5FTRUE@@am=5F=5Finclude@ @am=5F=5Fquote@./$(DEPDIR)/= ffsb=5Ftg.Po@am=5F=5Fquote@=0A-@AMDEP=5FTRUE@@am=5F=5Finclude@ @am=5F=5Fquo= te@./$(DEPDIR)/ffsb=5Fthread.Po@am=5F=5Fquote@=0A-@AMDEP=5FTRUE@@am=5F=5Fin= clude@ @am=5F=5Fquote@./$(DEPDIR)/fh.Po@am=5F=5Fquote@=0A-@AMDEP=5FTRUE@@am= =5F=5Finclude@ @am=5F=5Fquote@./$(DEPDIR)/filelist.Po@am=5F=5Fquote@=0A-@AM= DEP=5FTRUE@@am=5F=5Finclude@ @am=5F=5Fquote@./$(DEPDIR)/fileops.Po@am=5F=5F= quote@=0A-@AMDEP=5FTRUE@@am=5F=5Finclude@ @am=5F=5Fquote@./$(DEPDIR)/list.P= o@am=5F=5Fquote@=0A-@AMDEP=5FTRUE@@am=5F=5Finclude@ @am=5F=5Fquote@./$(DEPD= IR)/main.Po@am=5F=5Fquote@=0A-@AMDEP=5FTRUE@@am=5F=5Finclude@ @am=5F=5Fquot= e@./$(DEPDIR)/metaops.Po@am=5F=5Fquote@=0A-@AMDEP=5FTRUE@@am=5F=5Finclude@ = @am=5F=5Fquote@./$(DEPDIR)/parser.Po@am=5F=5Fquote@=0A-@AMDEP=5FTRUE@@am=5F= =5Finclude@ @am=5F=5Fquote@./$(DEPDIR)/rand.Po@am=5F=5Fquote@=0A-@AMDEP=5FT= RUE@@am=5F=5Finclude@ @am=5F=5Fquote@./$(DEPDIR)/rbt.Po@am=5F=5Fquote@=0A-@= AMDEP=5FTRUE@@am=5F=5Finclude@ @am=5F=5Fquote@./$(DEPDIR)/rwlock.Po@am=5F= =5Fquote@=0A-@AMDEP=5FTRUE@@am=5F=5Finclude@ @am=5F=5Fquote@./$(DEPDIR)/uti= l.Po@am=5F=5Fquote@=0A-=0A-.c.o:=0A-@am=5F=5FfastdepCC=5FTRUE@ $(COMPILE) -= MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<=0A-@am=5F=5FfastdepCC=5FTRUE= @ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po=0A-@AMDEP=5FTRUE@@am=5F=5FfastdepC= C=5FFALSE@ source=3D'$<' object=3D'$@' libtool=3Dno @AMDEPBACKSLASH@=0A-@AM= DEP=5FTRUE@@am=5F=5FfastdepCC=5FFALSE@ DEPDIR=3D$(DEPDIR) $(CCDEPMODE) $(de= pcomp) @AMDEPBACKSLASH@=0A-@am=5F=5FfastdepCC=5FFALSE@ $(COMPILE) -c $<=0A-= =0A-.c.obj:=0A-@am=5F=5FfastdepCC=5FTRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(D= EPDIR)/$*.Tpo -c -o $@ `$(CYGPATH=5FW) '$<'`=0A-@am=5F=5FfastdepCC=5FTRUE@ = mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po=0A-@AMDEP=5FTRUE@@am=5F=5FfastdepCC= =5FFALSE@ source=3D'$<' object=3D'$@' libtool=3Dno @AMDEPBACKSLASH@=0A-@AMD= EP=5FTRUE@@am=5F=5FfastdepCC=5FFALSE@ DEPDIR=3D$(DEPDIR) $(CCDEPMODE) $(dep= comp) @AMDEPBACKSLASH@=0A-@am=5F=5FfastdepCC=5FFALSE@ $(COMPILE) -c `$(CYGP= ATH=5FW) '$<'`=0A-=0A-ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS=5FFILES)=0A-= list=3D'$(SOURCES) $(HEADERS) $(LISP) $(TAGS=5FFILES)'; \=0A- unique=3D`fo= r i in $$list; do \=0A- if test -f "$$i"; then echo $$i; else echo $(sr= cdir)/$$i; fi; \=0A- done | \=0A- $(AWK) '{ files[$$0] =3D 1; nonemtpy = =3D 1; } \=0A- END { if (nonempty) { for (i in files) print i; }; }'`= ; \=0A- mkid -fID $$unique=0A-tags: TAGS=0A-=0A-TAGS: $(HEADERS) $(SOURCES= ) config.h.in $(TAGS=5FDEPENDENCIES) \=0A- $(TAGS=5FFILES) $(LISP)=0A- tag= s=3D; \=0A- here=3D`pwd`; \=0A- list=3D'$(SOURCES) $(HEADERS) config.h.in $= (LISP) $(TAGS=5FFILES)'; \=0A- unique=3D`for i in $$list; do \=0A- if t= est -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \=0A- done | \= =0A- $(AWK) '{ files[$$0] =3D 1; nonempty =3D 1; } \=0A- END { if (= nonempty) { for (i in files) print i; }; }'`; \=0A- if test -z "$(ETAGS=5FA= RGS)$$tags$$unique"; then :; else \=0A- test -n "$$unique" || unique=3D$$= empty=5Ffix; \=0A- $(ETAGS) $(ETAGSFLAGS) $(AM=5FETAGSFLAGS) $(ETAGS=5FAR= GS) \=0A- $$tags $$unique; \=0A- fi=0A-ctags: CTAGS=0A-CTAGS: $(HEADER= S) $(SOURCES) config.h.in $(TAGS=5FDEPENDENCIES) \=0A- $(TAGS=5FFILES) $(L= ISP)=0A- tags=3D; \=0A- list=3D'$(SOURCES) $(HEADERS) config.h.in $(LISP) $= (TAGS=5FFILES)'; \=0A- unique=3D`for i in $$list; do \=0A- if test -f "= $$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \=0A- done | \=0A- $(= AWK) '{ files[$$0] =3D 1; nonempty =3D 1; } \=0A- END { if (nonempty)= { for (i in files) print i; }; }'`; \=0A- test -z "$(CTAGS=5FARGS)$$tags$$= unique" \=0A- || $(CTAGS) $(CTAGSFLAGS) $(AM=5FCTAGSFLAGS) $(CTAGS=5FARGS= ) \=0A- $$tags $$unique=0A-=0A-GTAGS:=0A- here=3D`$(am=5F=5Fcd) $(top= =5Fbuilddir) && pwd` \=0A- && cd $(top=5Fsrcdir) \=0A- && gtags -i $(GT= AGS=5FARGS) $$here=0A-=0A-distclean-tags:=0A- -rm -f TAGS ID GTAGS GRTAGS G= SYMS GPATH tags=0A-=0A-distdir: $(DISTFILES)=0A- $(am=5F=5Fremove=5Fdistdir= )=0A- test -d $(distdir) || mkdir $(distdir)=0A- @srcdirstrip=3D`echo "$(sr= cdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \=0A- topsrcdirstrip=3D`echo "$(top= =5Fsrcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \=0A- list=3D'$(DISTFILES)'; \= =0A- dist=5Ffiles=3D`for file in $$list; do echo $$file; done | \=0A- s= ed -e "s|^$$srcdirstrip/||;t" \=0A- -e "s|^$$topsrcdirstrip/|$(top=5F= builddir)/|;t"`; \=0A- case $$dist=5Ffiles in \=0A- */*) $(MKDIR=5FP) `ec= ho "$$dist=5Ffiles" | \=0A- sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,'= | \=0A- sort -u` ;; \=0A- esac; \=0A- for file in $$dist=5Ffiles; do = \=0A- if test -f $$file || test -d $$file; then d=3D.; else d=3D$(srcdir)= ; fi; \=0A- if test -d $$d/$$file; then \=0A- dir=3D`echo "/$$file" |= sed -e 's,/[^/]*$$,,'`; \=0A- if test -d $(srcdir)/$$file && test $$d = !=3D $(srcdir); then \=0A- cp -pR $(srcdir)/$$file $(distdir)$$dir ||= exit 1; \=0A- fi; \=0A- cp -pR $$d/$$file $(distdir)$$dir || exit = 1; \=0A- else \=0A- test -f $(distdir)/$$file \=0A- || cp -p $$d/= $$file $(distdir)/$$file \=0A- || exit 1; \=0A- fi; \=0A- done=0A- -f= ind $(distdir) -type d ! -perm -777 -exec chmod a+rwx {} \; -o \=0A- ! -t= ype d ! -perm -444 -links 1 -exec chmod a+r {} \; -o \=0A- ! -type d ! -p= erm -400 -exec chmod a+r {} \; -o \=0A- ! -type d ! -perm -444 -exec $(in= stall=5Fsh) -c -m a+r {} {} \; \=0A- || chmod -R a+r $(distdir)=0A-dist-gzi= p: distdir=0A- tardir=3D$(distdir) && $(am=5F=5Ftar) | GZIP=3D$(GZIP=5FENV)= gzip -c >$(distdir).tar.gz=0A- $(am=5F=5Fremove=5Fdistdir)=0A-=0A-dist-bzi= p2: distdir=0A- tardir=3D$(distdir) && $(am=5F=5Ftar) | bzip2 -9 -c >$(dist= dir).tar.bz2=0A- $(am=5F=5Fremove=5Fdistdir)=0A-=0A-dist-lzma: distdir=0A- = tardir=3D$(distdir) && $(am=5F=5Ftar) | lzma -9 -c >$(distdir).tar.lzma=0A-= $(am=5F=5Fremove=5Fdistdir)=0A-=0A-dist-tarZ: distdir=0A- tardir=3D$(distd= ir) && $(am=5F=5Ftar) | compress -c >$(distdir).tar.Z=0A- $(am=5F=5Fremove= =5Fdistdir)=0A-=0A-dist-shar: distdir=0A- shar $(distdir) | GZIP=3D$(GZIP= =5FENV) gzip -c >$(distdir).shar.gz=0A- $(am=5F=5Fremove=5Fdistdir)=0A-=0A-= dist-zip: distdir=0A- -rm -f $(distdir).zip=0A- zip -rq $(distdir).zip $(di= stdir)=0A- $(am=5F=5Fremove=5Fdistdir)=0A-=0A-dist dist-all: distdir=0A- ta= rdir=3D$(distdir) && $(am=5F=5Ftar) | GZIP=3D$(GZIP=5FENV) gzip -c >$(distd= ir).tar.gz=0A- $(am=5F=5Fremove=5Fdistdir)=0A-=0A-# This target untars the = dist file and tries a VPATH configuration. Then=0A-# it guarantees that th= e distribution is self-contained by making another=0A-# tarfile.=0A-distche= ck: dist=0A- case '$(DIST=5FARCHIVES)' in \=0A- *.tar.gz*) \=0A- GZIP=3D$= (GZIP=5FENV) gunzip -c $(distdir).tar.gz | $(am=5F=5Funtar) ;;\=0A- *.tar.b= z2*) \=0A- bunzip2 -c $(distdir).tar.bz2 | $(am=5F=5Funtar) ;;\=0A- *.tar= .lzma*) \=0A- unlzma -c $(distdir).tar.lzma | $(am=5F=5Funtar) ;;\=0A- *.= tar.Z*) \=0A- uncompress -c $(distdir).tar.Z | $(am=5F=5Funtar) ;;\=0A- *= .shar.gz*) \=0A- GZIP=3D$(GZIP=5FENV) gunzip -c $(distdir).shar.gz | unsh= ar ;;\=0A- *.zip*) \=0A- unzip $(distdir).zip ;;\=0A- esac=0A- chmod -R a= -w $(distdir); chmod a+w $(distdir)=0A- mkdir $(distdir)/=5Fbuild=0A- mkdir= $(distdir)/=5Finst=0A- chmod a-w $(distdir)=0A- dc=5Finstall=5Fbase=3D`$(a= m=5F=5Fcd) $(distdir)/=5Finst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \=0A- = && dc=5Fdestdir=3D"$${TMPDIR-/tmp}/am-dc-$$$$/" \=0A- && cd $(distdir)/= =5Fbuild \=0A- && ../configure --srcdir=3D.. --prefix=3D"$$dc=5Finstall= =5Fbase" \=0A- $(DISTCHECK=5FCONFIGURE=5FFLAGS) \=0A- && $(MAKE) $(AM= =5FMAKEFLAGS) \=0A- && $(MAKE) $(AM=5FMAKEFLAGS) dvi \=0A- && $(MAKE) $= (AM=5FMAKEFLAGS) check \=0A- && $(MAKE) $(AM=5FMAKEFLAGS) install \=0A- = && $(MAKE) $(AM=5FMAKEFLAGS) installcheck \=0A- && $(MAKE) $(AM=5FMAKEFL= AGS) uninstall \=0A- && $(MAKE) $(AM=5FMAKEFLAGS) distuninstallcheck=5Fdi= r=3D"$$dc=5Finstall=5Fbase" \=0A- distuninstallcheck \=0A- && chm= od -R a-w "$$dc=5Finstall=5Fbase" \=0A- && ({ \=0A- (cd ../.. && u= mask 077 && mkdir "$$dc=5Fdestdir") \=0A- && $(MAKE) $(AM=5FMAKEFLAG= S) DESTDIR=3D"$$dc=5Fdestdir" install \=0A- && $(MAKE) $(AM=5FMAKEFL= AGS) DESTDIR=3D"$$dc=5Fdestdir" uninstall \=0A- && $(MAKE) $(AM=5FMA= KEFLAGS) DESTDIR=3D"$$dc=5Fdestdir" \=0A- distuninstallcheck=5F= dir=3D"$$dc=5Fdestdir" distuninstallcheck; \=0A- } || { rm -rf "$$dc= =5Fdestdir"; exit 1; }) \=0A- && rm -rf "$$dc=5Fdestdir" \=0A- && $(MAK= E) $(AM=5FMAKEFLAGS) dist \=0A- && rm -rf $(DIST=5FARCHIVES) \=0A- && $= (MAKE) $(AM=5FMAKEFLAGS) distcleancheck=0A- $(am=5F=5Fremove=5Fdistdir)=0A-= @(echo "$(distdir) archives ready for distribution: "; \=0A- list=3D'$(D= IST=5FARCHIVES)'; for i in $$list; do echo $$i; done) | \=0A- sed -e 1h -= e 1s/./=3D/g -e 1p -e 1x -e '$$p' -e '$$x'=0A-distuninstallcheck:=0A- @cd $= (distuninstallcheck=5Fdir) \=0A- && test `$(distuninstallcheck=5Flistfiles)= | wc -l` -le 1 \=0A- || { echo "ERROR: files left after uninstall:" ; \= =0A- if test -n "$(DESTDIR)"; then \=0A- echo " (check D= ESTDIR support)"; \=0A- fi ; \=0A- $(distuninstallcheck=5Fl= istfiles) ; \=0A- exit 1; } >&2=0A-distcleancheck: distclean=0A- @i= f test '$(srcdir)' =3D . ; then \=0A- echo "ERROR: distcleancheck can onl= y run from a VPATH build" ; \=0A- exit 1 ; \=0A- fi=0A- @test `$(distclea= ncheck=5Flistfiles) | wc -l` -eq 0 \=0A- || { echo "ERROR: files left in = build directory after distclean:" ; \=0A- $(distcleancheck=5Flistfil= es) ; \=0A- exit 1; } >&2=0A-check-am: all-am=0A-check: check-am=0A-= all-am: Makefile $(PROGRAMS) config.h=0A-installdirs:=0A- for dir in "$(DES= TDIR)$(bindir)"; do \=0A- test -z "$$dir" || $(MKDIR=5FP) "$$dir"; \=0A- = done=0A-install: install-am=0A-install-exec: install-exec-am=0A-install-dat= a: install-data-am=0A-uninstall: uninstall-am=0A-=0A-install-am: all-am=0A-= @$(MAKE) $(AM=5FMAKEFLAGS) install-exec-am install-data-am=0A-=0A-installc= heck: installcheck-am=0A-install-strip:=0A- $(MAKE) $(AM=5FMAKEFLAGS) INSTA= LL=5FPROGRAM=3D"$(INSTALL=5FSTRIP=5FPROGRAM)" \=0A- install=5Fsh=5FPROGRA= M=3D"$(INSTALL=5FSTRIP=5FPROGRAM)" INSTALL=5FSTRIP=5FFLAG=3D-s \=0A- `tes= t -z '$(STRIP)' || \=0A- echo "INSTALL=5FPROGRAM=5FENV=3DSTRIPPROG=3D'$= (STRIP)'"` install=0A-mostlyclean-generic:=0A-=0A-clean-generic:=0A-=0A-dis= tclean-generic:=0A- -test -z "$(CONFIG=5FCLEAN=5FFILES)" || rm -f $(CONFIG= =5FCLEAN=5FFILES)=0A-=0A-maintainer-clean-generic:=0A- @echo "This command = is intended for maintainers to use"=0A- @echo "it deletes files that may re= quire special tools to rebuild."=0A-clean: clean-am=0A-=0A-clean-am: clean-= binPROGRAMS clean-generic mostlyclean-am=0A-=0A-distclean: distclean-am=0A-= -rm -f $(am=5F=5FCONFIG=5FDISTCLEAN=5FFILES)=0A- -rm -rf ./$(DEPDIR)=0A- -= rm -f Makefile=0A-distclean-am: clean-am distclean-compile distclean-generi= c \=0A- distclean-hdr distclean-tags=0A-=0A-dvi: dvi-am=0A-=0A-dvi-am:=0A-= =0A-html: html-am=0A-=0A-info: info-am=0A-=0A-info-am:=0A-=0A-install-data-= am:=0A-=0A-install-dvi: install-dvi-am=0A-=0A-install-exec-am: install-binP= ROGRAMS=0A-=0A-install-html: install-html-am=0A-=0A-install-info: install-i= nfo-am=0A-=0A-install-man:=0A-=0A-install-pdf: install-pdf-am=0A-=0A-instal= l-ps: install-ps-am=0A-=0A-installcheck-am:=0A-=0A-maintainer-clean: mainta= iner-clean-am=0A- -rm -f $(am=5F=5FCONFIG=5FDISTCLEAN=5FFILES)=0A- -rm -rf = $(top=5Fsrcdir)/autom4te.cache=0A- -rm -rf ./$(DEPDIR)=0A- -rm -f Makefile= =0A-maintainer-clean-am: distclean-am maintainer-clean-generic=0A-=0A-mostl= yclean: mostlyclean-am=0A-=0A-mostlyclean-am: mostlyclean-compile mostlycle= an-generic=0A-=0A-pdf: pdf-am=0A-=0A-pdf-am:=0A-=0A-ps: ps-am=0A-=0A-ps-am:= =0A-=0A-uninstall-am: uninstall-binPROGRAMS=0A-=0A-.MAKE: install-am instal= l-strip=0A-=0A-.PHONY: CTAGS GTAGS all all-am am--refresh check check-am cl= ean \=0A- clean-binPROGRAMS clean-generic ctags dist dist-all dist-bzip2 \= =0A- dist-gzip dist-lzma dist-shar dist-tarZ dist-zip distcheck \=0A- distc= lean distclean-compile distclean-generic distclean-hdr \=0A- distclean-tags= distcleancheck distdir distuninstallcheck dvi \=0A- dvi-am html html-am in= fo info-am install install-am \=0A- install-binPROGRAMS install-data instal= l-data-am install-dvi \=0A- install-dvi-am install-exec install-exec-am ins= tall-html \=0A- install-html-am install-info install-info-am install-man \= =0A- install-pdf install-pdf-am install-ps install-ps-am \=0A- install-stri= p installcheck installcheck-am installdirs \=0A- maintainer-clean maintaine= r-clean-generic mostlyclean \=0A- mostlyclean-compile mostlyclean-generic p= df pdf-am ps ps-am \=0A- tags uninstall uninstall-am uninstall-binPROGRAMS= =0A-=0A-=0A-#CFLAGS +=3D -Wall -Werror -g -Wconversion -ansi=0A-#LDFLAGS += =3D -lefence=0A-# Tell versions [3.59,3.63) of GNU make to not export all v= ariables.=0A-# Otherwise a system limit (for SysV at least) may be exceeded= .=0A-.NOEXPORT:=0Adiff --git a/testcases/kernel/fs/ext4-new-features/ffsb-6= .0-rc2/README b/testcases/kernel/fs/ext4-new-features/ffsb-6.0-rc2/README= =0Adeleted file mode 100644=0Aindex 746f0f5..0000000=0A--- a/testcases/kern= el/fs/ext4-new-features/ffsb-6.0-rc2/README=0A+++ /dev/null=0A@@ -1,413 +0,= 0 @@=0A-Introduction:=0A-=0A-The Flexible Filesystem Benchmark (FFSB) is a = filesystem performance=0A-measurement tool. It is a multi-threaded applica= tion (using=0A-pthreads), written entirely in C with cross-platform portabi= lity in=0A-mind. It differs from other filesystem benchmarks in that the u= ser=0A-may supply a profile to create custom workloads, while most other=0A= -filesystem benchmarks use a fixed set of workloads.=0A-=0A-As of version 5= .1, it supports seven different basic operations, support=0A-for multiple g= roups of threads with different operation mixtures,=0A-support for operatio= n across multiple filesystems, and support for=0A-filesystem aging prior to= benchmarking.=0A-=0A-=0A-Differences from version 4.0 and older:=0A-=0A-Ve= rsion 5.0 and above represent almost a total re-write and many=0A-things ha= ve changed. In version 5.0 and above FFSB moved to a=0A-time-regulated run= versus doing a set number of different operations=0A-and timing the whole = thing. This is primarily to better deal with the=0A-use of multiple thread= groups which would otherwise not be synchronized=0A-at termination time.=0A= -=0A-Additionally, the FFSB configuration file format has changed in=0A-ver= sion 5.0, although we do support old-style configuration files=0A-along wit= h a run-time passed on the command line. In this mode,=0A-version 5.0 and = above ignores the iterations parameter, and simply=0A-uses the time specifi= ed on the command line.=0A-=0A-Behaviorally, most of the old operations are= the same -- sequential=0A-reads and sequential writes work as they did bef= ore. One change in=0A-version 5.0 is the skip-read behavior of reading the= n seeking forward=0A-a fixed amount then reading again is removed, we now s= upport fully=0A-randomized reads and writes from random offsets within the = file.=0A-=0A-Version 4.0 didn't support overwrites (only appends) so we int= erpret=0A-writes in old config files to be append operations.=0A-=0A-On Lin= ux, CPU utilization information will only be accurate for=0A-systems using = NPTL, older Linuxthreads systems will probably only see=0A-zeros for CPU ut= ilization because Linuxthreads is non-compliant to=0A-POSIX. Version 4.0 an= d older could be recompiled to work on=0A-Linuxthreads, but in 5.0 and late= r we no longer support this.=0A-=0A-We no longer support the "outputfile" o= n the command line.=0A-=0A-One should simply use tee or similar to capture = the output. FFSB=0A-unbuffers standard out for this purpose, and errors ar= e sent on=0A-standard error.=0A-=0A-Global options:=0A-=0A-There are eight = valid global options placed at the beginning of the=0A-profile. Three of t= hem are required: num=5Ffilesystems (number of=0A-filesystems), num=5Fthrea= dgroups (number of threadgroups), and time=0A-(running time of the benchmar= k). The other five options are:=0A-=0A-directio - each call to open will= be made using O=5FDIRECT=0A-alignio - aligns all block operations for r= andom reads and writes=0A- on 4k boundaries.=0A-bufferedio - cu= rrently ignorred: it is intended to use libc=0A- fread,rwrite, = instead of just unix read and write calls=0A-verbose - currently ignored= =0A-=0A-callout - calls and external command and waits for its terminati= on=0A- before FFSB begins the benchmark phase.=0A- This is useful= for synchronizing distributed clients,=0A- starting profilers, etc.= =0A-=0A-They must be specified in the above order (num=5Ffilesystems,=0A-nu= m=5Fthreadgroups, time, directio, alignio, bufferedio, verbose,=0A-callout)= .=0A-=0A-=0A-=0A-Filesystems:=0A-=0A-Filesystems are specified to FFSB in t= he form of a directory. FFSB=0A-assumes that the filesystem is mounted at = this directory and will not=0A-do any verification of this fact beyond ensu= ring it can read/write to=0A-the location. So be careful to ensure somethi= ng with enough space to=0A-handle the dataset is in fact mounted at the spe= cified location.=0A-=0A-In the filesystem clause of the profile, one may se= t the starting=0A-number of files and directories as well as a minimum and = maximum=0A-filesize for the filesystem. One may also specify the blocksize= =0A-used for creating the files separately in the filesystem clause.=0A-=0A= -Also, if a filesystem is to be aged, a special threadgroup clause may=0A-b= e embedded in a filesystem clause to specify the operation mixture=0A-and n= umber of threads used to age the filesystem. This threadgroup is=0A-run un= til filesystem utilization reaches the specified amount.=0A-=0A-Inheritance= -- if you are using multiple filesystems, all attributes=0A-except the lo= cation should be inherited from the previous filesystem.=0A-This is done to= make it easier to add groups of similar filesystems.=0A-In this case, only= the location is required in the filesystem clause.=0A-=0A-As of version 5.= 1, filesystem re-use is supported if a given=0A-filesystem hasn't been modi= fied beyond it's orginal specifications=0A-(number of files and directories= is correct, and file sizes are within=0A-specifications). This can be a h= uge time saver if one wishes to do=0A-multiple runs on the same data-set wi= thout altering it during a run,=0A-because the fileset doesn't need to be r= ecreated before each run.=0A-=0A-To do this, specify "reuse=3D1" in the fil= esystem clause, and FFSB will=0A-verify the fileset first, and if it checks= out it will use it.=0A-Otherwise, it will remove everything and re-create = the filesets for=0A-that filesystem.=0A-=0A-Threadgroups:=0A-=0A-An arbitra= ry number of threadgroups with differing numbers of threads=0A-and operatio= n mixes can be specified. The operations are specified=0A-using a weightin= g for each operation, if an operation isn't specified=0A-it's weighting is = assumed to be zero (not used).=0A-=0A-"Think-time" for a threadgroup may al= so be specified in millisecond=0A-amounts using the "op=5Fdelay" parameter,= where every thread will wait=0A-for the specified amount between each oper= ation.=0A-=0A-Operations:=0A-=0A-All operations begin by randomly selecting= a filesystem from the list=0A-of filesystems specified in the profile. Th= e distribution aims to be=0A-uniform across all filesystems.=0A-=0A-=0A-The= seven operations are:=0A-=0A-reads - read() calls with an overall amount = and a blocksize=0A- operates on existing files. Care must be taken= to ensure=0A- that the read amount is smaller than the size of any= possible=0A- file.=0A-=0A- If random=5Fread is specified, then th= e each individual blocks=0A- will be read starting from a random po= int with the file, and=0A- this will continune until the entire amo= unt specifed has been=0A- read. This offset of each random block w= ill be totally=0A- random to the byte level, unless the "alignio" g= lobal parameter=0A- is on, and then the reads will be 4096 byte ali= gned. This is=0A- generally recommended.=0A-=0A-=0A-readall - Very= similar to read above, except it doesn't take an=0A- amount; it s= imply reads the entire file sequentially using the=0A- read=5Fbloc= ksize. This is useful for situations where=0A- different filesystems ha= ve differently sized files, and sequential=0A- read patterns across all f= ilesystems are desired.=0A-=0A-writes - write() calls with an overall amoun= t and blocksize=0A- this is an overwrite operation and will not enl= arge an existing=0A- file, again one must be careful not to specify= a write amount=0A- that is larger than any possible file in the da= ta set.=0A-=0A- If random=5Fwrite is specified, then the each individual b= locks=0A- will be written starting from a random point with the fil= e, and=0A- this will continune until the entire amount specifed has= been=0A- written out. This offset of each random block will be to= tally=0A- random to the byte level, unless the "alignio" global par= ameter=0A- is on, and then the writes will be 4096 byte aligned. T= his=0A- is generally recommended.=0A-=0A- If the fsync=5Fflag para= meter for the threadgroup is non-zero,=0A- then after all of the write cal= ls are finished, fsync() will=0A- be called on the file descriptor before = the file is closed.=0A-=0A-=0A-creates - creates a file using open() call a= nd determines the size=0A- randomly between on the constraints (mi= n=5Ffilesize and=0A- max=5Ffilesize) for the selected filesystem. = Write operations will=0A- be done using the same blocksize as is s= pecified for the=0A- write operation.=0A-deletes - calls unlink() = on a filename and removes it from the=0A- internal data-structures= . One must be careful to ensure=0A- there are enough files to del= ete at all times or else the benchmark=0A- will terminate.=0A-appe= nds - calls write() using the append flag with an overall amount=0A- = and a blocksize to be appended onto a randomly chosen file.=0A-metas -= this is actually a mix of several different directory=0A- operati= ons. Each "meta" operation consists of two directory=0A- creates,= one directory remove, and a directory rename.=0A- These operation= s are all carried out separately from the=0A- other 5 operations.= =0A-=0A-Operation accounting:=0A-=0A-Each operation which uses a blocksize = counts each read/write of a=0A-blocksize as an operation (reads,writes,crea= tes, and appends) whereas=0A-deletes and metas are considered single operat= ions.=0A-=0A-Running the benchmark:=0A-=0A-There are three phases to runnin= g the benchmark, aging, fileset=0A-creates, and the benchmark phase.=0A-=0A= -The create phase is carried out across all filesystems simultanously=0A-wi= th one dedicated thread per filesystem.=0A-=0A-After the create phase, sync= () is called to ensure all dirty data gets=0A-written out before the benchm= ark phase begins, and sync() is again=0A-called at the end of the benchmark= phase. The time in sync() at the=0A-end of the benchmark phase is counted= as part of the benchmark phase.=0A-=0A-Caveats/Holes/Bugs:=0A-=0A-Aging an= d aging across multiple filesystems simultaneously hasn't been tested=0A-ve= ry much.=0A-=0A-If *any* i/o operation or system call/libc call fails, the = benchmark=0A-will terminate immediately.=0A-=0A-The parser doesn't handle m= al-formed or incorrect profiles very well=0A-(or at all).=0A-=0A-The parser= doesn't check to make sure all of the appropriate options=0A-have been spe= cified. For example, if writes are specified in a=0A-threadgroup but write= =5Fblocksize isn't specified, the parse won't catch=0A-it, but the benchmar= k run will fail later on.=0A-=0A-=0A-Configuration Files (new style):=0A-= =0A-New Style Configuration allows for arbitrary newlines between lines,=0A= -and comments using '#' at the start of a line. Also it allows tabs,=0A-wh= itespace before and after configuration parameters.=0A-=0A-The new style co= nfiguration file is broken up into three main parts:=0A-=0A-global paramete= rs, filesystems, and threadgroups=0A-=0A-The sections must be in the above = order.=0A-=0A-Global parameters:=0A-=0A-Global Paramters are described abov= e, the first three are always=0A-required. Example:=0A-=0A-----------=0A-= =0A-num=5Ffilesystems=3D1=0A-num=5Fthreadgroups=3D1=0A-time=3D30 # time i= s in seconds=0A-=0A-directio=3D0 # don't use direct io=0A-alignio=3D1 = # align random IOs to 4k=0A-bufferedio=3D0 # this does nothing right now= =0A-verbose=3D0 # this does nothing right now=0A-=0A- # calls and extern= al command and waits=0A- # everything until the newline is taken=0A- # = so you can have abritrary parmeters=0A-callout=3Dsynchronize.sh myhostname= =0A-=0A----------=0A-=0A-All of these must appear in this order, though you= can leave out the=0A-optional ones.=0A-=0A-Filesystems:=0A-=0A-Filesystems= describe differnt logical sets of files residing in=0A-different directory= s. There is no strict requirement that they=0A-actually be on different fi= lesystems, only that the directory=0A-specified already exists.=0A-=0A-File= systems are specified by a clause with a filesystem number like=0A-this:=0A= -=0A-[filesystem0]=0A- location=3D/mnt/testing/=0A- num=5Ffiles=3D10=0A- nu= m=5Fdirs=3D1=0A- max=5Ffilesize=3D4096=0A- min=5Ffilesize=3D4096=0A-[end0]= =0A-=0A-=0A-The clause must always begin with [filesystemX] and end with [e= ndX]=0A-where X is the number of that filesystem.=0A-=0A-You should start w= iht X =3D 0, and increment by one for each following=0A-filesystem. If the= y are out of order, things will likely break.=0A-=0A-The required informati= on for each filesystem is: location, num=5Ffiles,=0A-num=5Fdirs, max=5Ffile= size, and min=5Ffilesize. Beyond those the following=0A-four options are s= upported:=0A-=0A-=0A-=0A-reuse=3D1 # check the filesystem to see if it is r= eusable=0A-=0A- # filesystem aging, three components required=0A- # takes a= gefs=3D1 to turn it on=0A- # then a valid threadgroup specification=0A- # t= hen a desired utilization percentage=0A-=0A-agefs=3D1 # age the filesystem = according to the following threadgroup=0A- [threadgroup0]=0A- num=5Fthread= s=3D10=0A- write=5Fsize=3D40960=0A- write=5Fblocksize=3D4096=0A- create= =5Fweight=3D10=0A- append=5Fweight=3D10=0A- delete=5Fweight=3D1=0A- [end0= ]=0A-desired=5Futil=3D0.20 # In this case, age until the fs is 20% full=0A-= =0A-create=5Fblocksize=3D4096 # specify the blocksize to write()=0A- = # for creating the fileset, defaults to 4096=0A-=0A-age=5Fblocksize=3D= 4096 # specify the blocksize to write() for aging=0A-=0A-=0A-Also, to = allow lazy people to use lots of filesystems, we support=0A-filesystem inhe= ritance, which simply copies all options but the=0A-location from the previ= ous filesystem clause if nothing is specified.=0A-Obviously, this doesn't w= ork for filesystem0. (May not work for aging=0A-either?)=0A-=0A-Full blown = filesystem clause example:=0A-=0A-----=0A-=0A-[filesystem0]=0A-=0A- # requi= red parts=0A-=0A- location=3D/home/sonny/tmp=0A- num=5Ffiles=3D100=0A- num= =5Fdirs=3D100=0A- max=5Ffilesize=3D65536=0A- min=5Ffilesize=3D4096=0A-=0A- = # aging part=0A- agefs=3D0=0A- [threadgroup0]=0A- num=5Fthreads=3D10=0A- = write=5Fsize=3D40960=0A- write=5Fblocksize=3D4096=0A- create=5Fweight=3D1= 0=0A- append=5Fweight=3D10=0A- delete=5Fweight=3D1=0A- [end0]=0A- desire= d=5Futil=3D0.02 # age until 2% full=0A-=0A- # other optional commands=0A-= =0A- create=5Fblocksize=3D1024 # use a small create blocksize=0A- age=5Fbl= ocksize=3D1024 # and smaller age create blocksize=0A- reuse=3D0 = # don't reuse it=0A-[end0]=0A-=0A-=0A-=0A---=0A-=0A-Threadgro= ups:=0A-=0A-Threadgropus are very similar to filesystems in that any number= of=0A-them can be specified in clauses, and they must be in order starting= =0A-with threadgroup0.=0A-=0A-Example:=0A-=0A----=0A-=0A-[threadgroup0]=0A-= num=5Fthreads=3D32=0A- read=5Fweight=3D4=0A- append=5Fweight=3D1=0A-=0A- w= rite=5Fsize=3D4096=0A- write=5Fblocksize=3D4096=0A-=0A- read=5Fsize=3D4096= =0A- read=5Fblocksize=3D4096=0A-[end0]=0A-=0A----=0A-=0A-In a threadgroup c= lause, num=5Fthreads is required and must be at least=0A-1. Then, at least= one operation must be given a weight greater than 0=0A-to be a valid threa= dgroup. Operations can be given a weighting of 0,=0A-and in this case they= are ignored.=0A-=0A-Certain operations will also require other commands, f= or example, if=0A-read=5Fweight is greater than zero, then one must also in= clude a=0A-read=5Fsize and a read=5Fblocksize. Here's the table of require= ments and=0A-options:=0A-=0A-=0A-Operation Requirements Options=0A--- = -- --=0A-read=5Fweight read=5Fsize, read=5Fblocksize read=5Frandom=0A-r= eadall=5Fweight read=5Fblocksize none=0A-write=5Fweight write=5Fsize, w= rite=5Fblocksize write=5Frandom,fsync=5Ffile=0A-create=5Fweight write=5Fbl= ocksize or create=5Fblocksize none=0A-append=5Fweight write=5Fblocksize, w= rite=5Fsize none=0A-delete=5Fweight none none=0A-meta=5Fweight none = none=0A-=0A-=0A-=0A-Other threadgroup options:=0A-=0A-op=5Fdelay=3D10 # s= pecify a wait between operations in milli-seconds=0A-=0A-bindfs=3D3 # T= his allows you to restrict a threadgroup's operation=0A- # to a= specific filesystem number. Currently only=0A- # binding to one spec= ific filesystem is supported=0A-=0Adiff --git a/testcases/kernel/fs/ext4-ne= w-features/ffsb-6.0-rc2/aclocal.m4 b/testcases/kernel/fs/ext4-new-features/= ffsb-6.0-rc2/aclocal.m4=0Adeleted file mode 100644=0Aindex 19b0c2d..0000000= =0A--- a/testcases/kernel/fs/ext4-new-features/ffsb-6.0-rc2/aclocal.m4=0A++= + /dev/null=0A@@ -1,880 +0,0 @@=0A-# generated automatically by aclocal 1.1= 0.1 -*- Autoconf -*-=0A-=0A-# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2= 001, 2002, 2003, 2004,=0A-# 2005, 2006, 2007, 2008 Free Software Foundatio= n, Inc.=0A-# This file is free software; the Free Software Foundation=0A-# = gives unlimited permission to copy and/or distribute it,=0A-# with or witho= ut modifications, as long as this notice is preserved.=0A-=0A-# This progra= m is distributed in the hope that it will be useful,=0A-# but WITHOUT ANY W= ARRANTY, to the extent permitted by law; without=0A-# even the implied warr= anty of MERCHANTABILITY or FITNESS FOR A=0A-# PARTICULAR PURPOSE.=0A-=0A-m4= =5Fifndef([AC=5FAUTOCONF=5FVERSION],=0A- [m4=5Fcopy([m4=5FPACKAGE=5FVERSIO= N], [AC=5FAUTOCONF=5FVERSION])])dnl=0A-m4=5Fif(AC=5FAUTOCONF=5FVERSION, [2.= 61],,=0A-[m4=5Fwarning([this file was generated for autoconf 2.61.=0A-You h= ave another version of autoconf. It may work, but is not guaranteed to.=0A= -If you have problems, you may need to regenerate the build system entirely= .=0A-To do so, use the procedure documented by the package, typically `auto= reconf'.])])=0A-=0A-# Copyright (C) 2002, 2003, 2005, 2006, 2007 Free Soft= ware Foundation, Inc.=0A-#=0A-# This file is free software; the Free Softwa= re Foundation=0A-# gives unlimited permission to copy and/or distribute it,= =0A-# with or without modifications, as long as this notice is preserved.= =0A-=0A-# AM=5FAUTOMAKE=5FVERSION(VERSION)=0A-# ---------------------------= -=0A-# Automake X.Y traces this macro to ensure aclocal.m4 has been=0A-# ge= nerated from the m4 files accompanying Automake X.Y.=0A-# (This private mac= ro should not be called outside this file.)=0A-AC=5FDEFUN([AM=5FAUTOMAKE=5F= VERSION],=0A-[am=5F=5Fapi=5Fversion=3D'1.10'=0A-dnl Some users find AM=5FAU= TOMAKE=5FVERSION and mistake it for a way to=0A-dnl require some minimum ve= rsion. Point them to the right macro.=0A-m4=5Fif([$1], [1.10.1], [],=0A- = [AC=5FFATAL([Do not call $0, use AM=5FINIT=5FAUTOMAKE([$1]).])])dnl=0A-= ])=0A-=0A-# =5FAM=5FAUTOCONF=5FVERSION(VERSION)=0A-# ----------------------= -------=0A-# aclocal traces this macro to find the Autoconf version.=0A-# T= his is a private macro too. Using m4=5Fdefine simplifies=0A-# the logic in= aclocal, which can simply ignore this definition.=0A-m4=5Fdefine([=5FAM=5F= AUTOCONF=5FVERSION], [])=0A-=0A-# AM=5FSET=5FCURRENT=5FAUTOMAKE=5FVERSION= =0A-# -------------------------------=0A-# Call AM=5FAUTOMAKE=5FVERSION and= AM=5FAUTOMAKE=5FVERSION so they can be traced.=0A-# This function is AC=5F= REQUIREd by AC=5FINIT=5FAUTOMAKE.=0A-AC=5FDEFUN([AM=5FSET=5FCURRENT=5FAUTOM= AKE=5FVERSION],=0A-[AM=5FAUTOMAKE=5FVERSION([1.10.1])dnl=0A-m4=5Fifndef([AC= =5FAUTOCONF=5FVERSION],=0A- [m4=5Fcopy([m4=5FPACKAGE=5FVERSION], [AC=5FAUT= OCONF=5FVERSION])])dnl=0A-=5FAM=5FAUTOCONF=5FVERSION(AC=5FAUTOCONF=5FVERSIO= N)])=0A-=0A-# AM=5FAUX=5FDIR=5FEXPAND = -*- Autoconf -*-=0A-=0A-# Copyright (C) 2001, 2003, 2005 Free Software = Foundation, Inc.=0A-#=0A-# This file is free software; the Free Software Fo= undation=0A-# gives unlimited permission to copy and/or distribute it,=0A-#= with or without modifications, as long as this notice is preserved.=0A-=0A= -# For projects using AC=5FCONFIG=5FAUX=5FDIR([foo]), Autoconf sets=0A-# $a= c=5Faux=5Fdir to `$srcdir/foo'. In other projects, it is set to=0A-# `$src= dir', `$srcdir/..', or `$srcdir/../..'.=0A-#=0A-# Of course, Automake must = honor this variable whenever it calls a=0A-# tool from the auxiliary direct= ory. The problem is that $srcdir (and=0A-# therefore $ac=5Faux=5Fdir as we= ll) can be either absolute or relative,=0A-# depending on how configure is = run. This is pretty annoying, since=0A-# it makes $ac=5Faux=5Fdir quite un= usable in subdirectories: in the top=0A-# source directory, any form will w= ork fine, but in subdirectories a=0A-# relative path needs to be adjusted f= irst.=0A-#=0A-# $ac=5Faux=5Fdir/missing=0A-# fails when called from a su= bdirectory if $ac=5Faux=5Fdir is relative=0A-# $top=5Fsrcdir/$ac=5Faux=5Fdi= r/missing=0A-# fails if $ac=5Faux=5Fdir is absolute,=0A-# fails when = called from a subdirectory in a VPATH build with=0A-# a relative $= ac=5Faux=5Fdir=0A-#=0A-# The reason of the latter failure is that $top=5Fsr= cdir and $ac=5Faux=5Fdir=0A-# are both prefixed by $srcdir. In an in-sourc= e build this is usually=0A-# harmless because $srcdir is `.', but things wi= ll broke when you=0A-# start a VPATH build or use an absolute $srcdir.=0A-#= =0A-# So we could use something similar to $top=5Fsrcdir/$ac=5Faux=5Fdir/mi= ssing,=0A-# iff we strip the leading $srcdir from $ac=5Faux=5Fdir. That wo= uld be:=0A-# am=5Faux=5Fdir=3D'\$(top=5Fsrcdir)/'`expr "$ac=5Faux=5Fdir" = : "$srcdir//*\(.*\)"`=0A-# and then we would define $MISSING as=0A-# MISS= ING=3D"\${SHELL} $am=5Faux=5Fdir/missing"=0A-# This will work as long as MI= SSING is not called from configure, because=0A-# unfortunately $(top=5Fsrcd= ir) has no meaning in configure.=0A-# However there are other variables, li= ke CC, which are often used in=0A-# configure, and could therefore not use = this "fixed" $ac=5Faux=5Fdir.=0A-#=0A-# Another solution, used here, is to = always expand $ac=5Faux=5Fdir to an=0A-# absolute PATH. The drawback is th= at using absolute paths prevent a=0A-# configured tree to be moved without = reconfiguration.=0A-=0A-AC=5FDEFUN([AM=5FAUX=5FDIR=5FEXPAND],=0A-[dnl Rely = on autoconf to set up CDPATH properly.=0A-AC=5FPREREQ([2.50])dnl=0A-# expan= d $ac=5Faux=5Fdir to an absolute path=0A-am=5Faux=5Fdir=3D`cd $ac=5Faux=5Fd= ir && pwd`=0A-])=0A-=0A-# AM=5FCONDITIONAL = -*- Autoconf -*-=0A-=0A-# Copyright (C) 1997, 2000, 2001, 2003, = 2004, 2005, 2006=0A-# Free Software Foundation, Inc.=0A-#=0A-# This file is= free software; the Free Software Foundation=0A-# gives unlimited permissio= n to copy and/or distribute it,=0A-# with or without modifications, as long= as this notice is preserved.=0A-=0A-# serial 8=0A-=0A-# AM=5FCONDITIONAL(N= AME, SHELL-CONDITION)=0A-# -------------------------------------=0A-# Defin= e a conditional.=0A-AC=5FDEFUN([AM=5FCONDITIONAL],=0A-[AC=5FPREREQ(2.52)dnl= =0A- ifelse([$1], [TRUE], [AC=5FFATAL([$0: invalid condition: $1])],=0A- [= $1], [FALSE], [AC=5FFATAL([$0: invalid condition: $1])])dnl=0A-AC=5FSUBST([= $1=5FTRUE])dnl=0A-AC=5FSUBST([$1=5FFALSE])dnl=0A-=5FAM=5FSUBST=5FNOTMAKE([$= 1=5FTRUE])dnl=0A-=5FAM=5FSUBST=5FNOTMAKE([$1=5FFALSE])dnl=0A-if $2; then=0A= - $1=5FTRUE=3D=0A- $1=5FFALSE=3D'#'=0A-else=0A- $1=5FTRUE=3D'#'=0A- $1= =5FFALSE=3D=0A-fi=0A-AC=5FCONFIG=5FCOMMANDS=5FPRE(=0A-[if test -z "${$1=5FT= RUE}" && test -z "${$1=5FFALSE}"; then=0A- AC=5FMSG=5FERROR([[conditional = "$1" was never defined.=0A-Usually this means the macro was only invoked co= nditionally.]])=0A-fi])])=0A-=0A-# Copyright (C) 1999, 2000, 2001, 2002, 20= 03, 2004, 2005, 2006=0A-# Free Software Foundation, Inc.=0A-#=0A-# This fil= e is free software; the Free Software Foundation=0A-# gives unlimited permi= ssion to copy and/or distribute it,=0A-# with or without modifications, as = long as this notice is preserved.=0A-=0A-# serial 9=0A-=0A-# There are a fe= w dirty hacks below to avoid letting `AC=5FPROG=5FCC' be=0A-# written in cl= ear, in which case automake, when reading aclocal.m4,=0A-# will think it se= es a *use*, and therefore will trigger all it's=0A-# C support machinery. = Also note that it means that autoscan, seeing=0A-# CC etc. in the Makefile,= will ask for an AC=5FPROG=5FCC use...=0A-=0A-=0A-# =5FAM=5FDEPENDENCIES(NA= ME)=0A-# ----------------------=0A-# See how the compiler implements depend= ency checking.=0A-# NAME is "CC", "CXX", "GCJ", or "OBJC".=0A-# We try a fe= w techniques and use that to set a single cache variable.=0A-#=0A-# We don'= t AC=5FREQUIRE the corresponding AC=5FPROG=5FCC since the latter was=0A-# m= odified to invoke =5FAM=5FDEPENDENCIES(CC); we would have a circular=0A-# d= ependency, and given that the user is not expected to run this macro,=0A-# = just rely on AC=5FPROG=5FCC.=0A-AC=5FDEFUN([=5FAM=5FDEPENDENCIES],=0A-[AC= =5FREQUIRE([AM=5FSET=5FDEPDIR])dnl=0A-AC=5FREQUIRE([AM=5FOUTPUT=5FDEPENDENC= Y=5FCOMMANDS])dnl=0A-AC=5FREQUIRE([AM=5FMAKE=5FINCLUDE])dnl=0A-AC=5FREQUIRE= ([AM=5FDEP=5FTRACK])dnl=0A-=0A-ifelse([$1], CC, [depcc=3D"$CC" am=5Fcom= piler=5Flist=3D],=0A- [$1], CXX, [depcc=3D"$CXX" am=5Fcompiler=5Fli= st=3D],=0A- [$1], OBJC, [depcc=3D"$OBJC" am=5Fcompiler=5Flist=3D'gcc3= gcc'],=0A- [$1], UPC, [depcc=3D"$UPC" am=5Fcompiler=5Flist=3D],=0A= - [$1], GCJ, [depcc=3D"$GCJ" am=5Fcompiler=5Flist=3D'gcc3 gcc'],=0A= - [depcc=3D"$$1" am=5Fcompiler=5Flist=3D])=0A-=0A-AC=5F= CACHE=5FCHECK([dependency style of $depcc],=0A- [am=5Fcv=5F$1= =5Fdependencies=5Fcompiler=5Ftype],=0A-[if test -z "$AMDEP=5FTRUE" && test = -f "$am=5Fdepcomp"; then=0A- # We make a subdir and do the tests there. O= therwise we can end up=0A- # making bogus files that we don't know about a= nd never remove. For=0A- # instance it was reported that on HP-UX the gcc= test will end up=0A- # making a dummy file named `D' -- because `-MD' mea= ns `put the output=0A- # in D'.=0A- mkdir conftest.dir=0A- # Copy depcom= p to subdir because otherwise we won't find it if we're=0A- # using a rela= tive directory.=0A- cp "$am=5Fdepcomp" conftest.dir=0A- cd conftest.dir= =0A- # We will build objects and dependencies in a subdirectory because=0A= - # it helps to detect inapplicable dependency modes. For instance=0A- #= both Tru64's cc and ICC support -MD to output dependencies as a=0A- # sid= e effect of compilation, but ICC will put the dependencies in=0A- # the cu= rrent directory while Tru64 will put them in the object=0A- # directory.= =0A- mkdir sub=0A-=0A- am=5Fcv=5F$1=5Fdependencies=5Fcompiler=5Ftype=3Dno= ne=0A- if test "$am=5Fcompiler=5Flist" =3D ""; then=0A- am=5Fcompiler= =5Flist=3D`sed -n ['s/^#*\([a-zA-Z0-9]*\))$/\1/p'] < ./depcomp`=0A- fi=0A-= for depmode in $am=5Fcompiler=5Flist; do=0A- # Setup a source with man= y dependencies, because some compilers=0A- # like to wrap large dependen= cy lists on column 80 (with \), and=0A- # we should not choose a depcomp= mode which is confused by this.=0A- #=0A- # We need to recreate thes= e files for each test, as the compiler may=0A- # overwrite some of them = when testing with obscure command lines.=0A- # This happens at least wit= h the AIX C compiler.=0A- : > sub/conftest.c=0A- for i in 1 2 3 4 5 6= ; do=0A- echo '#include "conftst'$i'.h"' >> sub/conftest.c=0A- # = Using `: > sub/conftst$i.h' creates only sub/conftst1.h with=0A- # Sol= aris 8's {/usr,}/bin/sh.=0A- touch sub/conftst$i.h=0A- done=0A- = echo "${am=5F=5Finclude} ${am=5F=5Fquote}sub/conftest.Po${am=5F=5Fquote}" >= confmf=0A-=0A- case $depmode in=0A- nosideeffect)=0A- # after t= his tag, mechanisms are not by side-effect, so they'll=0A- # only be u= sed when explicitly requested=0A- if test "x$enable=5Fdependency=5Ftra= cking" =3D xyes; then=0A- continue=0A- else=0A- break=0A- fi=0A- = ;;=0A- none) break ;;=0A- esac=0A- # We check with `-c' and `= -o' for the sake of the "dashmstdout"=0A- # mode. It turns out that the= SunPro C++ compiler does not properly=0A- # handle `-M -o', and we need= to detect this.=0A- if depmode=3D$depmode \=0A- source=3Dsub/conf= test.c object=3Dsub/conftest.${OBJEXT-o} \=0A- depfile=3Dsub/conftest= .Po tmpdepfile=3Dsub/conftest.TPo \=0A- $SHELL ./depcomp $depcc -c -o= sub/conftest.${OBJEXT-o} sub/conftest.c \=0A- >/dev/null 2>conftes= t.err &&=0A- grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 &&= =0A- grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 &&=0A- = grep sub/conftest.${OBJEXT-o} sub/conftest.Po > /dev/null 2>&1 &&=0A- = ${MAKE-make} -s -f confmf > /dev/null 2>&1; then=0A- # icc doesn't = choke on unknown options, it will just issue warnings=0A- # or remarks= (even with -Werror). So we grep stderr for any message=0A- # that sa= ys an option was ignored or not supported.=0A- # When given -MP, icc 7= .0 and 7.1 complain thusly:=0A- # icc: Command line warning: ignorin= g option '-M'; no argument required=0A- # The diagnosis changed in icc= 8.0:=0A- # icc: Command line remark: option '-MP' not supported=0A-= if (grep 'ignoring option' conftest.err ||=0A- grep 'not sup= ported' conftest.err) >/dev/null 2>&1; then :; else=0A- am=5Fcv=5F$1= =5Fdependencies=5Fcompiler=5Ftype=3D$depmode=0A- break=0A- fi= =0A- fi=0A- done=0A-=0A- cd ..=0A- rm -rf conftest.dir=0A-else=0A- a= m=5Fcv=5F$1=5Fdependencies=5Fcompiler=5Ftype=3Dnone=0A-fi=0A-])=0A-AC=5FSUB= ST([$1DEPMODE], [depmode=3D$am=5Fcv=5F$1=5Fdependencies=5Fcompiler=5Ftype])= =0A-AM=5FCONDITIONAL([am=5F=5Ffastdep$1], [=0A- test "x$enable=5Fdependenc= y=5Ftracking" !=3D xno \=0A- && test "$am=5Fcv=5F$1=5Fdependencies=5Fcompi= ler=5Ftype" =3D gcc3])=0A-])=0A-=0A-=0A-# AM=5FSET=5FDEPDIR=0A-# ----------= ---=0A-# Choose a directory name for dependency files.=0A-# This macro is A= C=5FREQUIREd in =5FAM=5FDEPENDENCIES=0A-AC=5FDEFUN([AM=5FSET=5FDEPDIR],=0A-= [AC=5FREQUIRE([AM=5FSET=5FLEADING=5FDOT])dnl=0A-AC=5FSUBST([DEPDIR], ["${am= =5F=5Fleading=5Fdot}deps"])dnl=0A-])=0A-=0A-=0A-# AM=5FDEP=5FTRACK=0A-# ---= ---------=0A-AC=5FDEFUN([AM=5FDEP=5FTRACK],=0A-[AC=5FARG=5FENABLE(dependenc= y-tracking,=0A-[ --disable-dependency-tracking speeds up one-time build= =0A- --enable-dependency-tracking do not reject slow dependency extracto= rs])=0A-if test "x$enable=5Fdependency=5Ftracking" !=3D xno; then=0A- am= =5Fdepcomp=3D"$ac=5Faux=5Fdir/depcomp"=0A- AMDEPBACKSLASH=3D'\'=0A-fi=0A-A= M=5FCONDITIONAL([AMDEP], [test "x$enable=5Fdependency=5Ftracking" !=3D xno]= )=0A-AC=5FSUBST([AMDEPBACKSLASH])dnl=0A-=5FAM=5FSUBST=5FNOTMAKE([AMDEPBACKS= LASH])dnl=0A-])=0A-=0A-# Generate code to set up dependency tracking. = -*- Autoconf -*-=0A-=0A-# Copyright (C) 1999, 2000, 2001, 2002, 200= 3, 2004, 2005=0A-# Free Software Foundation, Inc.=0A-#=0A-# This file is fr= ee software; the Free Software Foundation=0A-# gives unlimited permission t= o copy and/or distribute it,=0A-# with or without modifications, as long as= this notice is preserved.=0A-=0A-#serial 3=0A-=0A-# =5FAM=5FOUTPUT=5FDEPEN= DENCY=5FCOMMANDS=0A-# ------------------------------=0A-AC=5FDEFUN([=5FAM= =5FOUTPUT=5FDEPENDENCY=5FCOMMANDS],=0A-[for mf in $CONFIG=5FFILES; do=0A- = # Strip MF so we end up with the name of the file.=0A- mf=3D`echo "$mf" | = sed -e 's/:.*$//'`=0A- # Check whether this is an Automake generated Makef= ile or not.=0A- # We used to match only the files named `Makefile.in', but= =0A- # some people rename them; so instead we look at the file content.=0A= - # Grep'ing the first line is not enough: some people post-process=0A- #= each Makefile.in and add a new line on top of each file to say so.=0A- # = Grep'ing the whole file is not good either: AIX grep has a line=0A- # limi= t of 2048, but all sed's we know have understand at least 4000.=0A- if sed= -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; the= n=0A- dirpart=3D`AS=5FDIRNAME("$mf")`=0A- else=0A- continue=0A- fi= =0A- # Extract the definition of DEPDIR, am=5F=5Finclude, and am=5F=5Fquot= e=0A- # from the Makefile without running `make'.=0A- DEPDIR=3D`sed -n 's= /^DEPDIR =3D //p' < "$mf"`=0A- test -z "$DEPDIR" && continue=0A- am=5F=5F= include=3D`sed -n 's/^am=5F=5Finclude =3D //p' < "$mf"`=0A- test -z "am=5F= =5Finclude" && continue=0A- am=5F=5Fquote=3D`sed -n 's/^am=5F=5Fquote =3D = //p' < "$mf"`=0A- # When using ansi2knr, U may be empty or an underscore; = expand it=0A- U=3D`sed -n 's/^U =3D //p' < "$mf"`=0A- # Find all dependen= cy output files, they are included files with=0A- # $(DEPDIR) in their nam= es. We invoke sed twice because it is the=0A- # simplest approach to chan= ging $(DEPDIR) to its actual value in the=0A- # expansion.=0A- for file i= n `sed -n "=0A- s/^$am=5F=5Finclude $am=5F=5Fquote\(.*(DEPDIR).*\)$am=5F= =5Fquote"'$/\1/p' <"$mf" | \=0A- sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' = -e 's/\$U/'"$U"'/g'`; do=0A- # Make sure the directory exists.=0A- te= st -f "$dirpart/$file" && continue=0A- fdir=3D`AS=5FDIRNAME(["$file"])`= =0A- AS=5FMKDIR=5FP([$dirpart/$fdir])=0A- # echo "creating $dirpart/$= file"=0A- echo '# dummy' > "$dirpart/$file"=0A- done=0A-done=0A-])# =5F= AM=5FOUTPUT=5FDEPENDENCY=5FCOMMANDS=0A-=0A-=0A-# AM=5FOUTPUT=5FDEPENDENCY= =5FCOMMANDS=0A-# -----------------------------=0A-# This macro should only = be invoked once -- use via AC=5FREQUIRE.=0A-#=0A-# This code is only requir= ed when automatic dependency tracking=0A-# is enabled. FIXME. This create= s each `.P' file that we will=0A-# need in order to bootstrap the dependenc= y handling code.=0A-AC=5FDEFUN([AM=5FOUTPUT=5FDEPENDENCY=5FCOMMANDS],=0A-[A= C=5FCONFIG=5FCOMMANDS([depfiles],=0A- [test x"$AMDEP=5FTRUE" !=3D x"" |= | =5FAM=5FOUTPUT=5FDEPENDENCY=5FCOMMANDS],=0A- [AMDEP=5FTRUE=3D"$AMDEP= =5FTRUE" ac=5Faux=5Fdir=3D"$ac=5Faux=5Fdir"])=0A-])=0A-=0A-# Copyright (C) = 1996, 1997, 2000, 2001, 2003, 2005=0A-# Free Software Foundation, Inc.=0A-#= =0A-# This file is free software; the Free Software Foundation=0A-# gives u= nlimited permission to copy and/or distribute it,=0A-# with or without modi= fications, as long as this notice is preserved.=0A-=0A-# serial 8=0A-=0A-# = AM=5FCONFIG=5FHEADER is obsolete. It has been replaced by AC=5FCONFIG=5FHE= ADERS.=0A-AU=5FDEFUN([AM=5FCONFIG=5FHEADER], [AC=5FCONFIG=5FHEADERS($@)])= =0A-=0A-# Do all the work for Automake. -*- Aut= oconf -*-=0A-=0A-# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, = 2003, 2004,=0A-# 2005, 2006, 2008 Free Software Foundation, Inc.=0A-#=0A-# = This file is free software; the Free Software Foundation=0A-# gives unlimit= ed permission to copy and/or distribute it,=0A-# with or without modificati= ons, as long as this notice is preserved.=0A-=0A-# serial 13=0A-=0A-# This = macro actually does too much. Some checks are only needed if=0A-# your pac= kage does certain things. But this isn't really a big deal.=0A-=0A-# AM=5F= INIT=5FAUTOMAKE(PACKAGE, VERSION, [NO-DEFINE])=0A-# AM=5FINIT=5FAUTOMAKE([O= PTIONS])=0A-# -----------------------------------------------=0A-# The call= with PACKAGE and VERSION arguments is the old style=0A-# call (pre autocon= f-2.50), which is being phased out. PACKAGE=0A-# and VERSION should now be= passed to AC=5FINIT and removed from=0A-# the call to AM=5FINIT=5FAUTOMAKE= .=0A-# We support both call styles for the transition. After=0A-# the next= Automake release, Autoconf can make the AC=5FINIT=0A-# arguments mandatory= , and then we can depend on a new Autoconf=0A-# release and drop the old ca= ll support.=0A-AC=5FDEFUN([AM=5FINIT=5FAUTOMAKE],=0A-[AC=5FPREREQ([2.60])dn= l=0A-dnl Autoconf wants to disallow AM=5F names. We explicitly allow=0A-dn= l the ones we care about.=0A-m4=5Fpattern=5Fallow([^AM=5F[A-Z]+FLAGS$])dnl= =0A-AC=5FREQUIRE([AM=5FSET=5FCURRENT=5FAUTOMAKE=5FVERSION])dnl=0A-AC=5FREQU= IRE([AC=5FPROG=5FINSTALL])dnl=0A-if test "`cd $srcdir && pwd`" !=3D "`pwd`"= ; then=0A- # Use -I$(srcdir) only when $(srcdir) !=3D ., so that make's ou= tput=0A- # is not polluted with repeated "-I."=0A- AC=5FSUBST([am=5F=5Fis= rc], [' -I$(srcdir)'])=5FAM=5FSUBST=5FNOTMAKE([am=5F=5Fisrc])dnl=0A- # tes= t to see if srcdir already configured=0A- if test -f $srcdir/config.status= ; then=0A- AC=5FMSG=5FERROR([source directory already configured; run "m= ake distclean" there first])=0A- fi=0A-fi=0A-=0A-# test whether we have cy= gpath=0A-if test -z "$CYGPATH=5FW"; then=0A- if (cygpath --version) >/dev/= null 2>/dev/null; then=0A- CYGPATH=5FW=3D'cygpath -w'=0A- else=0A- C= YGPATH=5FW=3Decho=0A- fi=0A-fi=0A-AC=5FSUBST([CYGPATH=5FW])=0A-=0A-# Defin= e the identity of the package.=0A-dnl Distinguish between old-style and new= -style calls.=0A-m4=5Fifval([$2],=0A-[m4=5Fifval([$3], [=5FAM=5FSET=5FOPTIO= N([no-define])])dnl=0A- AC=5FSUBST([PACKAGE], [$1])dnl=0A- AC=5FSUBST([VERS= ION], [$2])],=0A-[=5FAM=5FSET=5FOPTIONS([$1])dnl=0A-dnl Diagnose old-style = AC=5FINIT with new-style AM=5FAUTOMAKE=5FINIT.=0A-m4=5Fif(m4=5Fifdef([AC=5F= PACKAGE=5FNAME], 1)m4=5Fifdef([AC=5FPACKAGE=5FVERSION], 1), 11,,=0A- [m4= =5Ffatal([AC=5FINIT should be called with package and version arguments])])= dnl=0A- AC=5FSUBST([PACKAGE], ['AC=5FPACKAGE=5FTARNAME'])dnl=0A- AC=5FSUBST= ([VERSION], ['AC=5FPACKAGE=5FVERSION'])])dnl=0A-=0A-=5FAM=5FIF=5FOPTION([no= -define],,=0A-[AC=5FDEFINE=5FUNQUOTED(PACKAGE, "$PACKAGE", [Name of package= ])=0A- AC=5FDEFINE=5FUNQUOTED(VERSION, "$VERSION", [Version number of packa= ge])])dnl=0A-=0A-# Some tools Automake needs.=0A-AC=5FREQUIRE([AM=5FSANITY= =5FCHECK])dnl=0A-AC=5FREQUIRE([AC=5FARG=5FPROGRAM])dnl=0A-AM=5FMISSING=5FPR= OG(ACLOCAL, aclocal-${am=5F=5Fapi=5Fversion})=0A-AM=5FMISSING=5FPROG(AUTOCO= NF, autoconf)=0A-AM=5FMISSING=5FPROG(AUTOMAKE, automake-${am=5F=5Fapi=5Fver= sion})=0A-AM=5FMISSING=5FPROG(AUTOHEADER, autoheader)=0A-AM=5FMISSING=5FPRO= G(MAKEINFO, makeinfo)=0A-AM=5FPROG=5FINSTALL=5FSH=0A-AM=5FPROG=5FINSTALL=5F= STRIP=0A-AC=5FREQUIRE([AM=5FPROG=5FMKDIR=5FP])dnl=0A-# We need awk for the = "check" target. The system "awk" is bad on=0A-# some platforms.=0A-AC=5FRE= QUIRE([AC=5FPROG=5FAWK])dnl=0A-AC=5FREQUIRE([AC=5FPROG=5FMAKE=5FSET])dnl=0A= -AC=5FREQUIRE([AM=5FSET=5FLEADING=5FDOT])dnl=0A-=5FAM=5FIF=5FOPTION([tar-us= tar], [=5FAM=5FPROG=5FTAR([ustar])],=0A- [=5FAM=5FIF=5FOPTION(= [tar-pax], [=5FAM=5FPROG=5FTAR([pax])],=0A- [=5FAM=5FPROG=5FTAR([v7])])]= )=0A-=5FAM=5FIF=5FOPTION([no-dependencies],,=0A-[AC=5FPROVIDE=5FIFELSE([AC= =5FPROG=5FCC],=0A- [=5FAM=5FDEPENDENCIES(CC)],=0A- = [define([AC=5FPROG=5FCC],=0A- defn([AC= =5FPROG=5FCC])[=5FAM=5FDEPENDENCIES(CC)])])dnl=0A-AC=5FPROVIDE=5FIFELSE([AC= =5FPROG=5FCXX],=0A- [=5FAM=5FDEPENDENCIES(CXX)],=0A- = [define([AC=5FPROG=5FCXX],=0A- defn([A= C=5FPROG=5FCXX])[=5FAM=5FDEPENDENCIES(CXX)])])dnl=0A-AC=5FPROVIDE=5FIFELSE(= [AC=5FPROG=5FOBJC],=0A- [=5FAM=5FDEPENDENCIES(OBJC)],=0A- = [define([AC=5FPROG=5FOBJC],=0A- d= efn([AC=5FPROG=5FOBJC])[=5FAM=5FDEPENDENCIES(OBJC)])])dnl=0A-])=0A-])=0A-= =0A-=0A-# When config.status generates a header, we must update the stamp-h= file.=0A-# This file resides in the same directory as the config header=0A= -# that is generated. The stamp files are numbered to have different names= .=0A-=0A-# Autoconf calls =5FAC=5FAM=5FCONFIG=5FHEADER=5FHOOK (when defined= ) in the=0A-# loop where config.status creates the headers, so we can gener= ate=0A-# our stamp files there.=0A-AC=5FDEFUN([=5FAC=5FAM=5FCONFIG=5FHEADER= =5FHOOK],=0A-[# Compute $1's index in $config=5Fheaders.=0A-=5Fam=5Farg=3D$= 1=0A-=5Fam=5Fstamp=5Fcount=3D1=0A-for =5Fam=5Fheader in $config=5Fheaders := ; do=0A- case $=5Fam=5Fheader in=0A- $=5Fam=5Farg | $=5Fam=5Farg:* )=0A= - break ;;=0A- * )=0A- =5Fam=5Fstamp=5Fcount=3D`expr $=5Fam=5F= stamp=5Fcount + 1` ;;=0A- esac=0A-done=0A-echo "timestamp for $=5Fam=5Farg= " >`AS=5FDIRNAME(["$=5Fam=5Farg"])`/stamp-h[]$=5Fam=5Fstamp=5Fcount])=0A-= =0A-# Copyright (C) 2001, 2003, 2005 Free Software Foundation, Inc.=0A-#= =0A-# This file is free software; the Free Software Foundation=0A-# gives u= nlimited permission to copy and/or distribute it,=0A-# with or without modi= fications, as long as this notice is preserved.=0A-=0A-# AM=5FPROG=5FINSTAL= L=5FSH=0A-# ------------------=0A-# Define $install=5Fsh.=0A-AC=5FDEFUN([AM= =5FPROG=5FINSTALL=5FSH],=0A-[AC=5FREQUIRE([AM=5FAUX=5FDIR=5FEXPAND])dnl=0A-= install=5Fsh=3D${install=5Fsh-"\$(SHELL) $am=5Faux=5Fdir/install-sh"}=0A-AC= =5FSUBST(install=5Fsh)])=0A-=0A-# Copyright (C) 2003, 2005 Free Software F= oundation, Inc.=0A-#=0A-# This file is free software; the Free Software Fou= ndation=0A-# gives unlimited permission to copy and/or distribute it,=0A-# = with or without modifications, as long as this notice is preserved.=0A-=0A-= # serial 2=0A-=0A-# Check whether the underlying file-system supports filen= ames=0A-# with a leading dot. For instance MS-DOS doesn't.=0A-AC=5FDEFUN([= AM=5FSET=5FLEADING=5FDOT],=0A-[rm -rf .tst 2>/dev/null=0A-mkdir .tst 2>/dev= /null=0A-if test -d .tst; then=0A- am=5F=5Fleading=5Fdot=3D.=0A-else=0A- = am=5F=5Fleading=5Fdot=3D=5F=0A-fi=0A-rmdir .tst 2>/dev/null=0A-AC=5FSUBST([= am=5F=5Fleading=5Fdot])])=0A-=0A-# Check to see how 'make' treats includes.= -*- Autoconf -*-=0A-=0A-# Copyright (C) 2001, 2002, 2003, 2005= Free Software Foundation, Inc.=0A-#=0A-# This file is free software; the = Free Software Foundation=0A-# gives unlimited permission to copy and/or dis= tribute it,=0A-# with or without modifications, as long as this notice is p= reserved.=0A-=0A-# serial 3=0A-=0A-# AM=5FMAKE=5FINCLUDE()=0A-# -----------= ------=0A-# Check to see how make treats includes.=0A-AC=5FDEFUN([AM=5FMAKE= =5FINCLUDE],=0A-[am=5Fmake=3D${MAKE-make}=0A-cat > confinc << 'END'=0A-am= =5F=5Fdoit:=0A- @echo done=0A-.PHONY: am=5F=5Fdoit=0A-END=0A-# If we don't = find an include directive, just comment out the code.=0A-AC=5FMSG=5FCHECKIN= G([for style of include used by $am=5Fmake])=0A-am=5F=5Finclude=3D"#"=0A-am= =5F=5Fquote=3D=0A-=5Fam=5Fresult=3Dnone=0A-# First try GNU make style inclu= de.=0A-echo "include confinc" > confmf=0A-# We grep out `Entering directory= ' and `Leaving directory'=0A-# messages which can occur if `w' ends up in M= AKEFLAGS.=0A-# In particular we don't look at `^make:' because GNU make mig= ht=0A-# be invoked under some other name (usually "gmake"), in which=0A-# c= ase it prints its new name instead of `make'.=0A-if test "`$am=5Fmake -s -f= confmf 2> /dev/null | grep -v 'ing directory'`" =3D "done"; then=0A- am= =5F=5Finclude=3Dinclude=0A- am=5F=5Fquote=3D=0A- =5Fam=5Fresult=3DGNU= =0A-fi=0A-# Now try BSD make style include.=0A-if test "$am=5F=5Finclude" = =3D "#"; then=0A- echo '.include "confinc"' > confmf=0A- if test "`$am= =5Fmake -s -f confmf 2> /dev/null`" =3D "done"; then=0A- am=5F=5Finclu= de=3D.include=0A- am=5F=5Fquote=3D"\""=0A- =5Fam=5Fresult=3DBSD= =0A- fi=0A-fi=0A-AC=5FSUBST([am=5F=5Finclude])=0A-AC=5FSUBST([am=5F=5Fquo= te])=0A-AC=5FMSG=5FRESULT([$=5Fam=5Fresult])=0A-rm -f confinc confmf=0A-])= =0A-=0A-# Fake the existence of programs that GNU maintainers use. -*- Aut= oconf -*-=0A-=0A-# Copyright (C) 1997, 1999, 2000, 2001, 2003, 2004, 2005= =0A-# Free Software Foundation, Inc.=0A-#=0A-# This file is free software; = the Free Software Foundation=0A-# gives unlimited permission to copy and/or= distribute it,=0A-# with or without modifications, as long as this notice = is preserved.=0A-=0A-# serial 5=0A-=0A-# AM=5FMISSING=5FPROG(NAME, PROGRAM)= =0A-# ------------------------------=0A-AC=5FDEFUN([AM=5FMISSING=5FPROG],= =0A-[AC=5FREQUIRE([AM=5FMISSING=5FHAS=5FRUN])=0A-$1=3D${$1-"${am=5Fmissing= =5Frun}$2"}=0A-AC=5FSUBST($1)])=0A-=0A-=0A-# AM=5FMISSING=5FHAS=5FRUN=0A-# = ------------------=0A-# Define MISSING if not defined so far and test if it= supports --run.=0A-# If it does, set am=5Fmissing=5Frun to use it, otherwi= se, to nothing.=0A-AC=5FDEFUN([AM=5FMISSING=5FHAS=5FRUN],=0A-[AC=5FREQUIRE(= [AM=5FAUX=5FDIR=5FEXPAND])dnl=0A-AC=5FREQUIRE=5FAUX=5FFILE([missing])dnl=0A= -test x"${MISSING+set}" =3D xset || MISSING=3D"\${SHELL} $am=5Faux=5Fdir/mi= ssing"=0A-# Use eval to expand $SHELL=0A-if eval "$MISSING --run true"; the= n=0A- am=5Fmissing=5Frun=3D"$MISSING --run "=0A-else=0A- am=5Fmissing=5Fr= un=3D=0A- AC=5FMSG=5FWARN([`missing' script is too old or missing])=0A-fi= =0A-])=0A-=0A-# Copyright (C) 2003, 2004, 2005, 2006 Free Software Foundat= ion, Inc.=0A-#=0A-# This file is free software; the Free Software Foundatio= n=0A-# gives unlimited permission to copy and/or distribute it,=0A-# with o= r without modifications, as long as this notice is preserved.=0A-=0A-# AM= =5FPROG=5FMKDIR=5FP=0A-# ---------------=0A-# Check for `mkdir -p'.=0A-AC= =5FDEFUN([AM=5FPROG=5FMKDIR=5FP],=0A-[AC=5FPREREQ([2.60])dnl=0A-AC=5FREQUIR= E([AC=5FPROG=5FMKDIR=5FP])dnl=0A-dnl Automake 1.8 to 1.9.6 used to define m= kdir=5Fp. We now use MKDIR=5FP,=0A-dnl while keeping a definition of mkdir= =5Fp for backward compatibility.=0A-dnl @MKDIR=5FP@ is magic: AC=5FOUTPUT a= djusts its value for each Makefile.=0A-dnl However we cannot define mkdir= =5Fp as $(MKDIR=5FP) for the sake of=0A-dnl Makefile.ins that do not define= MKDIR=5FP, so we do our own=0A-dnl adjustment using top=5Fbuilddir (which = is defined more often than=0A-dnl MKDIR=5FP).=0A-AC=5FSUBST([mkdir=5Fp], ["= $MKDIR=5FP"])dnl=0A-case $mkdir=5Fp in=0A- [[\\/$]]* | ?:[[\\/]]*) ;;=0A- = */*) mkdir=5Fp=3D"\$(top=5Fbuilddir)/$mkdir=5Fp" ;;=0A-esac=0A-])=0A-=0A-#= Helper functions for option handling. -*- Autoconf -*-= =0A-=0A-# Copyright (C) 2001, 2002, 2003, 2005 Free Software Foundation, I= nc.=0A-#=0A-# This file is free software; the Free Software Foundation=0A-#= gives unlimited permission to copy and/or distribute it,=0A-# with or with= out modifications, as long as this notice is preserved.=0A-=0A-# serial 3= =0A-=0A-# =5FAM=5FMANGLE=5FOPTION(NAME)=0A-# -----------------------=0A-AC= =5FDEFUN([=5FAM=5FMANGLE=5FOPTION],=0A-[[=5FAM=5FOPTION=5F]m4=5Fbpatsubst($= 1, [[^a-zA-Z0-9=5F]], [=5F])])=0A-=0A-# =5FAM=5FSET=5FOPTION(NAME)=0A-# ---= ---------------------------=0A-# Set option NAME. Presently that only mean= s defining a flag for this option.=0A-AC=5FDEFUN([=5FAM=5FSET=5FOPTION],=0A= -[m4=5Fdefine(=5FAM=5FMANGLE=5FOPTION([$1]), 1)])=0A-=0A-# =5FAM=5FSET=5FOP= TIONS(OPTIONS)=0A-# ----------------------------------=0A-# OPTIONS is a sp= ace-separated list of Automake options.=0A-AC=5FDEFUN([=5FAM=5FSET=5FOPTION= S],=0A-[AC=5FFOREACH([=5FAM=5FOption], [$1], [=5FAM=5FSET=5FOPTION(=5FAM=5F= Option)])])=0A-=0A-# =5FAM=5FIF=5FOPTION(OPTION, IF-SET, [IF-NOT-SET])=0A-#= -------------------------------------------=0A-# Execute IF-SET if OPTION = is set, IF-NOT-SET otherwise.=0A-AC=5FDEFUN([=5FAM=5FIF=5FOPTION],=0A-[m4= =5Fifset(=5FAM=5FMANGLE=5FOPTION([$1]), [$2], [$3])])=0A-=0A-# Check to mak= e sure that the build environment is sane. -*- Autoconf -*-=0A-=0A-# Cop= yright (C) 1996, 1997, 2000, 2001, 2003, 2005=0A-# Free Software Foundation= , Inc.=0A-#=0A-# This file is free software; the Free Software Foundation= =0A-# gives unlimited permission to copy and/or distribute it,=0A-# with or= without modifications, as long as this notice is preserved.=0A-=0A-# seria= l 4=0A-=0A-# AM=5FSANITY=5FCHECK=0A-# ---------------=0A-AC=5FDEFUN([AM=5FS= ANITY=5FCHECK],=0A-[AC=5FMSG=5FCHECKING([whether build environment is sane]= )=0A-# Just in case=0A-sleep 1=0A-echo timestamp > conftest.file=0A-# Do `s= et' in a subshell so we don't clobber the current shell's=0A-# arguments. = Must try -L first in case configure is actually a=0A-# symlink; some system= s play weird games with the mod time of symlinks=0A-# (eg FreeBSD returns t= he mod time of the symlink's containing=0A-# directory).=0A-if (=0A- set = X `ls -Lt $srcdir/configure conftest.file 2> /dev/null`=0A- if test "$[*]= " =3D "X"; then=0A- # -L didn't work.=0A- set X `ls -t $srcdir/co= nfigure conftest.file`=0A- fi=0A- rm -f conftest.file=0A- if test "$[= *]" !=3D "X $srcdir/configure conftest.file" \=0A- && test "$[*]" !=3D= "X conftest.file $srcdir/configure"; then=0A-=0A- # If neither matche= d, then we have a broken ls. This can happen=0A- # if, for instance, = CONFIG=5FSHELL is bash and it inherits a=0A- # broken ls alias from th= e environment. This has actually=0A- # happened. Such a system could= not be considered "sane".=0A- AC=5FMSG=5FERROR([ls -t appears to fail= . Make sure there is not a broken=0A-alias in your environment])=0A- fi= =0A-=0A- test "$[2]" =3D conftest.file=0A- )=0A-then=0A- # Ok.=0A- = :=0A-else=0A- AC=5FMSG=5FERROR([newly created file is older than distribu= ted files!=0A-Check your system clock])=0A-fi=0A-AC=5FMSG=5FRESULT(yes)])= =0A-=0A-# Copyright (C) 2001, 2003, 2005 Free Software Foundation, Inc.=0A= -#=0A-# This file is free software; the Free Software Foundation=0A-# gives= unlimited permission to copy and/or distribute it,=0A-# with or without mo= difications, as long as this notice is preserved.=0A-=0A-# AM=5FPROG=5FINST= ALL=5FSTRIP=0A-# ---------------------=0A-# One issue with vendor `install'= (even GNU) is that you can't=0A-# specify the program used to strip binari= es. This is especially=0A-# annoying in cross-compiling environments, wher= e the build's strip=0A-# is unlikely to handle the host's binaries.=0A-# Fo= rtunately install-sh will honor a STRIPPROG variable, so we=0A-# always use= install-sh in `make install-strip', and initialize=0A-# STRIPPROG with the= value of the STRIP variable (set by the user).=0A-AC=5FDEFUN([AM=5FPROG=5F= INSTALL=5FSTRIP],=0A-[AC=5FREQUIRE([AM=5FPROG=5FINSTALL=5FSH])dnl=0A-# Inst= alled binaries are usually stripped using `strip' when the user=0A-# run `m= ake install-strip'. However `strip' might not be the right=0A-# tool to us= e in cross-compilation environments, therefore Automake=0A-# will honor the= `STRIP' environment variable to overrule this program.=0A-dnl Don't test f= or $cross=5Fcompiling =3D yes, because it might be `maybe'.=0A-if test "$cr= oss=5Fcompiling" !=3D no; then=0A- AC=5FCHECK=5FTOOL([STRIP], [strip], :)= =0A-fi=0A-INSTALL=5FSTRIP=5FPROGRAM=3D"\$(install=5Fsh) -c -s"=0A-AC=5FSUBS= T([INSTALL=5FSTRIP=5FPROGRAM])])=0A-=0A-# Copyright (C) 2006 Free Software= Foundation, Inc.=0A-#=0A-# This file is free software; the Free Software F= oundation=0A-# gives unlimited permission to copy and/or distribute it,=0A-= # with or without modifications, as long as this notice is preserved.=0A-= =0A-# =5FAM=5FSUBST=5FNOTMAKE(VARIABLE)=0A-# ---------------------------=0A= -# Prevent Automake from outputting VARIABLE =3D @VARIABLE@ in Makefile.in.= =0A-# This macro is traced by Automake.=0A-AC=5FDEFUN([=5FAM=5FSUBST=5FNOTM= AKE])=0A-=0A-# Check how to create a tarball. -*= - Autoconf -*-=0A-=0A-# Copyright (C) 2004, 2005 Free Software Foundation,= Inc.=0A-#=0A-# This file is free software; the Free Software Foundation=0A= -# gives unlimited permission to copy and/or distribute it,=0A-# with or wi= thout modifications, as long as this notice is preserved.=0A-=0A-# serial 2= =0A-=0A-# =5FAM=5FPROG=5FTAR(FORMAT)=0A-# --------------------=0A-# Check h= ow to create a tarball in format FORMAT.=0A-# FORMAT should be one of `v7',= `ustar', or `pax'.=0A-#=0A-# Substitute a variable $(am=5F=5Ftar) that is = a command=0A-# writing to stdout a FORMAT-tarball containing the directory= =0A-# $tardir.=0A-# tardir=3Ddirectory && $(am=5F=5Ftar) > result.tar= =0A-#=0A-# Substitute a variable $(am=5F=5Funtar) that extract such=0A-# a = tarball read from stdin.=0A-# $(am=5F=5Funtar) < result.tar=0A-AC=5FDEF= UN([=5FAM=5FPROG=5FTAR],=0A-[# Always define AMTAR for backward compatibili= ty.=0A-AM=5FMISSING=5FPROG([AMTAR], [tar])=0A-m4=5Fif([$1], [v7],=0A- [= am=5F=5Ftar=3D'${AMTAR} chof - "$$tardir"'; am=5F=5Funtar=3D'${AMTAR} xf -'= ],=0A- [m4=5Fcase([$1], [ustar],, [pax],,=0A- [m4=5Ffatal(= [Unknown tar format])])=0A-AC=5FMSG=5FCHECKING([how to create a $1 tar arch= ive])=0A-# Loop over all known methods to create a tar archive until one wo= rks.=0A-=5Fam=5Ftools=3D'gnutar m4=5Fif([$1], [ustar], [plaintar]) pax cpio= none'=0A-=5Fam=5Ftools=3D${am=5Fcv=5Fprog=5Ftar=5F$1-$=5Fam=5Ftools}=0A-# = Do not fold the above two line into one, because Tru64 sh and=0A-# Solaris = sh will not grok spaces in the rhs of `-'.=0A-for =5Fam=5Ftool in $=5Fam=5F= tools=0A-do=0A- case $=5Fam=5Ftool in=0A- gnutar)=0A- for =5Fam=5Ftar = in tar gnutar gtar;=0A- do=0A- AM=5FRUN=5FLOG([$=5Fam=5Ftar --versi= on]) && break=0A- done=0A- am=5F=5Ftar=3D"$=5Fam=5Ftar --format=3Dm4= =5Fif([$1], [pax], [posix], [$1]) -chf - "'"$$tardir"'=0A- am=5F=5Ftar= =5F=3D"$=5Fam=5Ftar --format=3Dm4=5Fif([$1], [pax], [posix], [$1]) -chf - "= '"$tardir"'=0A- am=5F=5Funtar=3D"$=5Fam=5Ftar -xf -"=0A- ;;=0A- plai= ntar)=0A- # Must skip GNU tar: if it does not support --format=3D it doe= sn't create=0A- # ustar tarball either.=0A- (tar --version) >/dev/nul= l 2>&1 && continue=0A- am=5F=5Ftar=3D'tar chf - "$$tardir"'=0A- am=5F= =5Ftar=5F=3D'tar chf - "$tardir"'=0A- am=5F=5Funtar=3D'tar xf -'=0A- = ;;=0A- pax)=0A- am=5F=5Ftar=3D'pax -L -x $1 -w "$$tardir"'=0A- am=5F= =5Ftar=5F=3D'pax -L -x $1 -w "$tardir"'=0A- am=5F=5Funtar=3D'pax -r'=0A-= ;;=0A- cpio)=0A- am=5F=5Ftar=3D'find "$$tardir" -print | cpio -o -H= $1 -L'=0A- am=5F=5Ftar=5F=3D'find "$tardir" -print | cpio -o -H $1 -L'= =0A- am=5F=5Funtar=3D'cpio -i -H $1 -d'=0A- ;;=0A- none)=0A- am= =5F=5Ftar=3Dfalse=0A- am=5F=5Ftar=5F=3Dfalse=0A- am=5F=5Funtar=3Dfals= e=0A- ;;=0A- esac=0A-=0A- # If the value was cached, stop now. We jus= t wanted to have am=5F=5Ftar=0A- # and am=5F=5Funtar set.=0A- test -n "${= am=5Fcv=5Fprog=5Ftar=5F$1}" && break=0A-=0A- # tar/untar a dummy directory= , and stop if the command works=0A- rm -rf conftest.dir=0A- mkdir conftes= t.dir=0A- echo GrepMe > conftest.dir/file=0A- AM=5FRUN=5FLOG([tardir=3Dco= nftest.dir && eval $am=5F=5Ftar=5F >conftest.tar])=0A- rm -rf conftest.dir= =0A- if test -s conftest.tar; then=0A- AM=5FRUN=5FLOG([$am=5F=5Funtar <= conftest.tar])=0A- grep GrepMe conftest.dir/file >/dev/null 2>&1 && brea= k=0A- fi=0A-done=0A-rm -rf conftest.dir=0A-=0A-AC=5FCACHE=5FVAL([am=5Fcv= =5Fprog=5Ftar=5F$1], [am=5Fcv=5Fprog=5Ftar=5F$1=3D$=5Fam=5Ftool])=0A-AC=5FM= SG=5FRESULT([$am=5Fcv=5Fprog=5Ftar=5F$1])])=0A-AC=5FSUBST([am=5F=5Ftar])=0A= -AC=5FSUBST([am=5F=5Funtar])=0A-]) # =5FAM=5FPROG=5FTAR=0A-=0Adiff --git a/= testcases/kernel/fs/ext4-new-features/ffsb-6.0-rc2/cirlist.c b/testcases/ke= rnel/fs/ext4-new-features/ffsb-6.0-rc2/cirlist.c=0Adeleted file mode 100644= =0Aindex 1a96dc4..0000000=0A--- a/testcases/kernel/fs/ext4-new-features/ffs= b-6.0-rc2/cirlist.c=0A+++ /dev/null=0A@@ -1,106 +0,0 @@=0A-/*=0A- * Copyr= ight (c) International Business Machines Corp., 2001-2004=0A- *=0A- * Thi= s program is free software; you can redistribute it and/or modify=0A- * = it under the terms of the GNU General Public License as published by=0A- * = the Free Software Foundation; either version 2 of the License, or=0A- * = (at your option) any later version.=0A- *=0A- * This program is distribu= ted in the hope that it will be useful,=0A- * but WITHOUT ANY WARRANTY; = without even the implied warranty of=0A- * MERCHANTABILITY or FITNESS FOR= A PARTICULAR PURPOSE. See=0A- * the GNU General Public License for more= details.=0A- *=0A- * You should have received a copy of the GNU General = Public License=0A- * along with this program; if not, write to the Free = Software=0A- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,= MA 02110-1301 USA=0A- */=0A-#include =0A-#include =0A-= =0A-#include "cirlist.h"=0A-#include "util.h"=0A-=0A-void init=5Fcirlist(st= ruct cirlist *cl)=0A-{=0A- cl->count =3D 0;=0A- cl->head =3D NULL;=0A-}=0A-= =0A-int cl=5Fempty(struct cirlist *cl)=0A-{=0A- return !(cl->count);=0A-}= =0A-=0A-void cl=5Finsert=5Ftail(struct cirlist *cl, cldatatype object)=0A-{= =0A- struct cnode *new =3D ffsb=5Fmalloc(sizeof(struct cnode));=0A- new->ob= j =3D object;=0A- if (cl->count =3D=3D 0) {=0A- assert(cl->head =3D=3D NUL= L);=0A- cl->head =3D new;=0A- cl->head->next =3D cl->head;=0A- cl->head-= >prev =3D cl->head;=0A- cl->count =3D 1;=0A- } else {=0A- if (cl->count = =3D=3D 1) {=0A- assert(cl->head->next =3D=3D cl->head);=0A- assert(cl->= head->prev =3D=3D cl->head);=0A- cl->head->next =3D new;=0A- cl->head->= prev =3D new;=0A- new->next =3D cl->head;=0A- new->prev =3D cl->head;= =0A- } else {=0A- assert(cl->head->next !=3D cl->head);=0A- assert(cl-= >head->prev !=3D cl->head);=0A-=0A- new->next =3D cl->head;=0A- new->pr= ev =3D (cl->head)->prev;=0A- cl->head->prev->next =3D new;=0A- cl->head= ->prev =3D new;=0A- }=0A- cl->count++;=0A- }=0A-}=0A-=0A-cldatatype cl=5F= remove=5Fhead(struct cirlist *cl)=0A-{=0A- struct cnode *oldhead =3D NULL;= =0A- struct cnode *newhead =3D NULL;=0A- cldatatype ret =3D NULL;=0A-=0A- i= f (cl->count =3D=3D 0) {=0A- assert(cl->head =3D=3D NULL);=0A- return NUL= L;=0A- }=0A- if (cl->count =3D=3D 1) {=0A- assert(cl->head->next =3D=3D cl= ->head);=0A- assert(cl->head->prev =3D=3D cl->head);=0A- oldhead =3D cl->= head;=0A- cl->head =3D NULL;=0A- cl->count =3D 0;=0A- } else if (cl->coun= t =3D=3D 2) {=0A- oldhead =3D cl->head;=0A- newhead =3D oldhead->next;=0A= - newhead->next =3D newhead;=0A- newhead->prev =3D newhead;=0A- cl->head= =3D newhead;=0A- cl->count =3D 1;=0A- } else {=0A- assert(cl->head->next= !=3D cl->head);=0A- assert(cl->head->prev !=3D cl->head);=0A- oldhead = =3D cl->head;=0A- newhead =3D oldhead->next;=0A- newhead->prev =3D oldhea= d->prev;=0A- newhead->prev->next =3D newhead;=0A- cl->head =3D newhead;= =0A- cl->count--;=0A- }=0A- ret =3D oldhead->obj;=0A- oldhead->obj =3D (vo= id *)(-1);=0A- oldhead->next =3D (void *)(-1);=0A- oldhead->prev =3D (void = *)(-1);=0A- free(oldhead);=0A-=0A- return ret;=0A-}=0Adiff --git a/testcase= s/kernel/fs/ext4-new-features/ffsb-6.0-rc2/cirlist.h b/testcases/kernel/fs/= ext4-new-features/ffsb-6.0-rc2/cirlist.h=0Adeleted file mode 100644=0Aindex= e8356a9..0000000=0A--- a/testcases/kernel/fs/ext4-new-features/ffsb-6.0-rc= 2/cirlist.h=0A+++ /dev/null=0A@@ -1,41 +0,0 @@=0A-/*=0A- * Copyright (c) = International Business Machines Corp., 2001-2004=0A- *=0A- * This program= is free software; you can redistribute it and/or modify=0A- * it under = the terms of the GNU General Public License as published by=0A- * the Fre= e Software Foundation; either version 2 of the License, or=0A- * (at your= option) any later version.=0A- *=0A- * This program is distributed in th= e hope that it will be useful,=0A- * but WITHOUT ANY WARRANTY; without e= ven the implied warranty of=0A- * MERCHANTABILITY or FITNESS FOR A PARTIC= ULAR PURPOSE. See=0A- * the GNU General Public License for more details.= =0A- *=0A- * You should have received a copy of the GNU General Public Li= cense=0A- * along with this program; if not, write to the Free Software= =0A- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 0211= 0-1301 USA=0A- */=0A-#ifndef =5FCIRLIST=5FH=0A-#define =5FCIRLIST=5FH=0A-= =0A-#include "filelist.h"=0A-=0A-typedef struct ffsb=5Ffile *cldatatype;=0A= -=0A-struct cnode {=0A- cldatatype obj;=0A- struct cnode *next;=0A- struct = cnode *prev;=0A-};=0A-=0A-struct cirlist {=0A- int count;=0A- struct cnode = *head;=0A-};=0A-=0A-void init=5Fcirlist(struct cirlist *cl);=0A-int cl=5Fem= pty(struct cirlist *cl);=0A-void cl=5Finsert=5Ftail(struct cirlist *cl , cl= datatype object);=0A-cldatatype cl=5Fremove=5Fhead(struct cirlist *cl);=0A-= =0A-#endif /* =5FCIRLIST=5FH */=0Adiff --git a/testcases/kernel/fs/ext4-new= -features/ffsb-6.0-rc2/config.guess b/testcases/kernel/fs/ext4-new-features= /ffsb-6.0-rc2/config.guess=0Adeleted file mode 100755=0Aindex 12734a7..0000= 000=0A--- a/testcases/kernel/fs/ext4-new-features/ffsb-6.0-rc2/config.guess= =0A+++ /dev/null=0A@@ -1,1554 +0,0 @@=0A-#! /bin/sh=0A-# Attempt to guess a= canonical system name.=0A-# Copyright (C) 1992, 1993, 1994, 1995, 1996, = 1997, 1998, 1999,=0A-# 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 20= 08, 2009=0A-# Free Software Foundation, Inc.=0A-=0A-timestamp=3D'2009-08-= 19'=0A-=0A-# This file is free software; you can redistribute it and/or mod= ify it=0A-# under the terms of the GNU General Public License as published = by=0A-# the Free Software Foundation; either version 2 of the License, or= =0A-# (at your option) any later version.=0A-#=0A-# This program is distrib= uted in the hope that it will be useful, but=0A-# WITHOUT ANY WARRANTY; wit= hout even the implied warranty of=0A-# MERCHANTABILITY or FITNESS FOR A PAR= TICULAR PURPOSE. See the GNU=0A-# General Public License for more details.= =0A-#=0A-# You should have received a copy of the GNU General Public Licens= e=0A-# along with this program; if not, write to the Free Software=0A-# Fou= ndation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA=0A-# 02110-1301= , USA.=0A-#=0A-# As a special exception to the GNU General Public License, = if you=0A-# distribute this file as part of a program that contains a=0A-# = configuration script generated by Autoconf, you may include it under=0A-# t= he same distribution terms that you use for the rest of that program.=0A-= =0A-=0A-# Originally written by Per Bothner. Please send patches (context= =0A-# diff format) to and include a ChangeLog=0A-#= entry.=0A-#=0A-# This script attempts to guess a canonical system name sim= ilar to=0A-# config.sub. If it succeeds, it prints the system name on stdo= ut, and=0A-# exits with 0. Otherwise, it exits with 1.=0A-#=0A-# You can g= et the latest version of this script from:=0A-# http://git.savannah.gnu.org= /gitweb/?p=3Dconfig.git;a=3Dblob=5Fplain;f=3Dconfig.guess;hb=3DHEAD=0A-=0A-= me=3D`echo "$0" | sed -e 's,.*/,,'`=0A-=0A-usage=3D"\=0A-Usage: $0 [OPTION]= =0A-=0A-Output the configuration name of the system \`$me' is run on.=0A-= =0A-Operation modes:=0A- -h, --help print this help, then exit=0A-= -t, --time-stamp print date of last modification, then exit=0A- -v, --= version print version number, then exit=0A-=0A-Report bugs and patches= to ."=0A-=0A-version=3D"\=0A-GNU config.guess ($ti= mestamp)=0A-=0A-Originally written by Per Bothner.=0A-Copyright (C) 1992, 1= 993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001,=0A-2002, 2003, 2004, 2= 005, 2006, 2007, 2008 Free Software Foundation, Inc.=0A-=0A-This is free so= ftware; see the source for copying conditions. There is NO=0A-warranty; no= t even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."=0A-=0A-hel= p=3D"=0A-Try \`$me --help' for more information."=0A-=0A-# Parse command li= ne=0A-while test $# -gt 0 ; do=0A- case $1 in=0A- --time-stamp | --time= * | -t )=0A- echo "$timestamp" ; exit ;;=0A- --version | -v )=0A- = echo "$version" ; exit ;;=0A- --help | --h* | -h )=0A- echo = "$usage"; exit ;;=0A- -- ) # Stop option processing=0A- shift;= break ;;=0A- - ) # Use stdin as input.=0A- break ;;=0A- -* )= =0A- echo "$me: invalid option $1$help" >&2=0A- exit 1 ;;=0A- = * )=0A- break ;;=0A- esac=0A-done=0A-=0A-if test $# !=3D 0; then= =0A- echo "$me: too many arguments$help" >&2=0A- exit 1=0A-fi=0A-=0A-trap= 'exit 1' 1 2 15=0A-=0A-# CC=5FFOR=5FBUILD -- compiler used by this script.= Note that the use of a=0A-# compiler to aid in system detection is discour= aged as it requires=0A-# temporary files to be created and, as you can see = below, it is a=0A-# headache to deal with in a portable fashion.=0A-=0A-# H= istorically, `CC=5FFOR=5FBUILD' used to be named `HOST=5FCC'. We still=0A-#= use `HOST=5FCC' if defined, but it is deprecated.=0A-=0A-# Portable tmp di= rectory creation inspired by the Autoconf team.=0A-=0A-set=5Fcc=5Ffor=5Fbui= ld=3D'=0A-trap "exitcode=3D\$?; (rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp = 2>/dev/null) && exit \$exitcode" 0 ;=0A-trap "rm -f \$tmpfiles 2>/dev/null;= rmdir \$tmp 2>/dev/null; exit 1" 1 2 13 15 ;=0A-: ${TMPDIR=3D/tmp} ;=0A- {= tmp=3D`(umask 077 && mktemp -d "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n= "$tmp" && test -d "$tmp" ; } ||=0A- { test -n "$RANDOM" && tmp=3D$TMPDIR/c= g$$-$RANDOM && (umask 077 && mkdir $tmp) ; } ||=0A- { tmp=3D$TMPDIR/cg-$$ &= & (umask 077 && mkdir $tmp) && echo "Warning: creating insecure temp direct= ory" >&2 ; } ||=0A- { echo "$me: cannot create a temporary directory in $TM= PDIR" >&2 ; exit 1 ; } ;=0A-dummy=3D$tmp/dummy ;=0A-tmpfiles=3D"$dummy.c $d= ummy.o $dummy.rel $dummy" ;=0A-case $CC=5FFOR=5FBUILD,$HOST=5FCC,$CC in=0A-= ,,) echo "int x;" > $dummy.c ;=0A- for c in cc gcc c89 c99 ; do=0A- i= f ($c -c -o $dummy.o $dummy.c) >/dev/null 2>&1 ; then=0A- CC=5FFOR=5FB= UILD=3D"$c"; break ;=0A- fi ;=0A- done ;=0A- if test x"$CC=5FFOR=5FBUILD"= =3D x ; then=0A- CC=5FFOR=5FBUILD=3Dno=5Fcompiler=5Ffound ;=0A- fi=0A- ;= ;=0A- ,,*) CC=5FFOR=5FBUILD=3D$CC ;;=0A- ,*,*) CC=5FFOR=5FBUILD=3D$HOST= =5FCC ;;=0A-esac ; set=5Fcc=5Ffor=5Fbuild=3D ;'=0A-=0A-# This is needed to = find uname on a Pyramid OSx when run in the BSD universe.=0A-# (ghazi@noc.r= utgers.edu 1994-08-24)=0A-if (test -f /.attbin/uname) >/dev/null 2>&1 ; the= n=0A- PATH=3D$PATH:/.attbin ; export PATH=0A-fi=0A-=0A-UNAME=5FMACHINE=3D`(= uname -m) 2>/dev/null` || UNAME=5FMACHINE=3Dunknown=0A-UNAME=5FRELEASE=3D`(= uname -r) 2>/dev/null` || UNAME=5FRELEASE=3Dunknown=0A-UNAME=5FSYSTEM=3D`(u= name -s) 2>/dev/null` || UNAME=5FSYSTEM=3Dunknown=0A-UNAME=5FVERSION=3D`(u= name -v) 2>/dev/null` || UNAME=5FVERSION=3Dunknown=0A-=0A-case "${UNAME=5FS= YSTEM}" in=0A-Linux|GNU/*)=0A- eval $set=5Fcc=5Ffor=5Fbuild=0A- cat << EOF = > $dummy.c=0A- #include =0A- #ifdef =5F=5FUCLIBC=5F=5F=0A- # if= def =5F=5FUCLIBC=5FCONFIG=5FVERSION=5F=5F=0A- LIBC=3Duclibc =5F=5FUCLIBC=5F= CONFIG=5FVERSION=5F=5F=0A- # else=0A- LIBC=3Duclibc=0A- # endif=0A- #else= =0A- LIBC=3Dgnu=0A- #endif=0A-EOF=0A- eval `$CC=5FFOR=5FBUILD -E $dummy.c 2= >/dev/null | grep LIBC=3D | sed -e 's: ::g'`=0A- ;;=0A-esac=0A-=0A-# Note: = order is significant - the case branches are not exclusive.=0A-=0A-case "${= UNAME=5FMACHINE}:${UNAME=5FSYSTEM}:${UNAME=5FRELEASE}:${UNAME=5FVERSION}" i= n=0A- *:NetBSD:*:*)=0A- # NetBSD (nbsd) targets should (where applicable= ) match one or=0A- # more of the tupples: *-*-netbsdelf*, *-*-netbsdaout*,= =0A- # *-*-netbsdecoff* and *-*-netbsd*. For targets that recently=0A- # s= witched to ELF, *-*-netbsd* would select the old=0A- # object file format. = This provides both forward=0A- # compatibility and a consistent mechanism = for selecting the=0A- # object file format.=0A- #=0A- # Note: NetBSD doesn'= t particularly care about the vendor=0A- # portion of the name. We always = set it to "unknown".=0A- sysctl=3D"sysctl -n hw.machine=5Farch"=0A- UNAME= =5FMACHINE=5FARCH=3D`(/sbin/$sysctl 2>/dev/null || \=0A- /usr/sbin/$sys= ctl 2>/dev/null || echo unknown)`=0A- case "${UNAME=5FMACHINE=5FARCH}" in= =0A- armeb) machine=3Darmeb-unknown ;;=0A- arm*) machine=3Darm-unkn= own ;;=0A- sh3el) machine=3Dshl-unknown ;;=0A- sh3eb) machine=3Dsh-= unknown ;;=0A- sh5el) machine=3Dsh5le-unknown ;;=0A- *) machine=3D$= {UNAME=5FMACHINE=5FARCH}-unknown ;;=0A- esac=0A- # The Operating System inc= luding object format, if it has switched=0A- # to ELF recently, or will in = the future.=0A- case "${UNAME=5FMACHINE=5FARCH}" in=0A- arm*|i386|m68k|= ns32k|sh3*|sparc|vax)=0A- eval $set=5Fcc=5Ffor=5Fbuild=0A- if echo =5F=5F= ELF=5F=5F | $CC=5FFOR=5FBUILD -E - 2>/dev/null \=0A- | grep -q =5F=5FELF= =5F=5F=0A- then=0A- # Once all utilities can be ECOFF (netbsdecoff) o= r a.out (netbsdaout).=0A- # Return netbsd for either. FIX?=0A- o= s=3Dnetbsd=0A- else=0A- os=3Dnetbsdelf=0A- fi=0A- ;;=0A- *)=0A-= os=3Dnetbsd=0A- ;;=0A- esac=0A- # The OS release=0A- # Debian GNU= /NetBSD machines have a different userland, and=0A- # thus, need a distinct= triplet. However, they do not need=0A- # kernel version information, so it= can be replaced with a=0A- # suitable tag, in the style of linux-gnu.=0A- = case "${UNAME=5FVERSION}" in=0A- Debian*)=0A- release=3D'-gnu'=0A- ;;= =0A- *)=0A- release=3D`echo ${UNAME=5FRELEASE}|sed -e 's/[-=5F].*/\./'= `=0A- ;;=0A- esac=0A- # Since CPU=5FTYPE-MANUFACTURER-KERNEL-OPERATING=5FS= YSTEM:=0A- # contains redundant information, the shorter form:=0A- # CPU=5F= TYPE-MANUFACTURER-OPERATING=5FSYSTEM is used.=0A- echo "${machine}-${os}${r= elease}"=0A- exit ;;=0A- *:OpenBSD:*:*)=0A- UNAME=5FMACHINE=5FARCH=3D`ar= ch | sed 's/OpenBSD.//'`=0A- echo ${UNAME=5FMACHINE=5FARCH}-unknown-openbsd= ${UNAME=5FRELEASE}=0A- exit ;;=0A- *:ekkoBSD:*:*)=0A- echo ${UNAME=5FMAC= HINE}-unknown-ekkobsd${UNAME=5FRELEASE}=0A- exit ;;=0A- *:SolidBSD:*:*)= =0A- echo ${UNAME=5FMACHINE}-unknown-solidbsd${UNAME=5FRELEASE}=0A- exit ;;= =0A- macppc:MirBSD:*:*)=0A- echo powerpc-unknown-mirbsd${UNAME=5FRELEASE= }=0A- exit ;;=0A- *:MirBSD:*:*)=0A- echo ${UNAME=5FMACHINE}-unknown-mirb= sd${UNAME=5FRELEASE}=0A- exit ;;=0A- alpha:OSF1:*:*)=0A- case $UNAME=5FR= ELEASE in=0A- *4.0)=0A- UNAME=5FRELEASE=3D`/usr/sbin/sizer -v | awk '{prin= t $3}'`=0A- ;;=0A- *5.*)=0A- UNAME=5FRELEASE=3D`/usr/sbin/sizer -v= | awk '{print $4}'`=0A- ;;=0A- esac=0A- # According to Compaq, /usr/sbin/= psrinfo has been available on=0A- # OSF/1 and Tru64 systems produced since = 1995. I hope that=0A- # covers most systems running today. This code pipe= s the CPU=0A- # types through head -n 1, so we only detect the type of CPU = 0.=0A- ALPHA=5FCPU=5FTYPE=3D`/usr/sbin/psrinfo -v | sed -n -e 's/^ The alp= ha \(.*\) processor.*$/\1/p' | head -n 1`=0A- case "$ALPHA=5FCPU=5FTYPE" in= =0A- "EV4 (21064)")=0A- UNAME=5FMACHINE=3D"alpha" ;;=0A- "EV4.5 (2= 1064)")=0A- UNAME=5FMACHINE=3D"alpha" ;;=0A- "LCA4 (21066/21068)")=0A-= UNAME=5FMACHINE=3D"alpha" ;;=0A- "EV5 (21164)")=0A- UNAME=5FMACHINE= =3D"alphaev5" ;;=0A- "EV5.6 (21164A)")=0A- UNAME=5FMACHINE=3D"alphaev5= 6" ;;=0A- "EV5.6 (21164PC)")=0A- UNAME=5FMACHINE=3D"alphapca56" ;;=0A-= "EV5.7 (21164PC)")=0A- UNAME=5FMACHINE=3D"alphapca57" ;;=0A- "EV6= (21264)")=0A- UNAME=5FMACHINE=3D"alphaev6" ;;=0A- "EV6.7 (21264A)")= =0A- UNAME=5FMACHINE=3D"alphaev67" ;;=0A- "EV6.8CB (21264C)")=0A- UNA= ME=5FMACHINE=3D"alphaev68" ;;=0A- "EV6.8AL (21264B)")=0A- UNAME=5FMACH= INE=3D"alphaev68" ;;=0A- "EV6.8CX (21264D)")=0A- UNAME=5FMACHINE=3D"al= phaev68" ;;=0A- "EV6.9A (21264/EV69A)")=0A- UNAME=5FMACHINE=3D"alphaev= 69" ;;=0A- "EV7 (21364)")=0A- UNAME=5FMACHINE=3D"alphaev7" ;;=0A- = "EV7.9 (21364A)")=0A- UNAME=5FMACHINE=3D"alphaev79" ;;=0A- esac=0A- # A Pn= .n version is a patched version.=0A- # A Vn.n version is a released version= .=0A- # A Tn.n version is a released field test version.=0A- # A Xn.n versi= on is an unreleased experimental baselevel.=0A- # 1.2 uses "1.2" for uname = -r.=0A- echo ${UNAME=5FMACHINE}-dec-osf`echo ${UNAME=5FRELEASE} | sed -e 's= /^[PVTX]//' | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`= =0A- exit ;;=0A- Alpha\ *:Windows=5FNT*:*)=0A- # How do we know it's Int= erix rather than the generic POSIX subsystem?=0A- # Should we change UNAME= =5FMACHINE based on the output of uname instead=0A- # of the specific Alpha= model?=0A- echo alpha-pc-interix=0A- exit ;;=0A- 21064:Windows=5FNT:50:= 3)=0A- echo alpha-dec-winnt3.5=0A- exit ;;=0A- Amiga*:UNIX=5FSystem=5FV:= 4.0:*)=0A- echo m68k-unknown-sysv4=0A- exit ;;=0A- *:[Aa]miga[Oo][Ss]:*:= *)=0A- echo ${UNAME=5FMACHINE}-unknown-amigaos=0A- exit ;;=0A- *:[Mm]orp= h[Oo][Ss]:*:*)=0A- echo ${UNAME=5FMACHINE}-unknown-morphos=0A- exit ;;=0A- = *:OS/390:*:*)=0A- echo i370-ibm-openedition=0A- exit ;;=0A- *:z/VM:*:= *)=0A- echo s390-ibm-zvmoe=0A- exit ;;=0A- *:OS400:*:*)=0A- echo = powerpc-ibm-os400=0A- exit ;;=0A- arm:RISC*:1.[012]*:*|arm:riscix:1.[012= ]*:*)=0A- echo arm-acorn-riscix${UNAME=5FRELEASE}=0A- exit ;;=0A- arm:ri= scos:*:*|arm:RISCOS:*:*)=0A- echo arm-unknown-riscos=0A- exit ;;=0A- SR2= ?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*)=0A- echo hppa1.1-hitachi-hiuxmpp= =0A- exit ;;=0A- Pyramid*:OSx*:*:* | MIS*:OSx*:*:* | MIS*:SMP=5FDC-OSx*:= *:*)=0A- # akee@wpdis03.wpafb.af.mil (Earle F. Ake) contributed MIS and NIL= E.=0A- if test "`(/bin/universe) 2>/dev/null`" =3D att ; then=0A- echo pyr= amid-pyramid-sysv3=0A- else=0A- echo pyramid-pyramid-bsd=0A- fi=0A- exit ;= ;=0A- NILE*:*:*:dcosx)=0A- echo pyramid-pyramid-svr4=0A- exit ;;=0A- = DRS?6000:unix:4.0:6*)=0A- echo sparc-icl-nx6=0A- exit ;;=0A- DRS?6000:UN= IX=5FSV:4.2*:7* | DRS?6000:isis:4.2*:7*)=0A- case `/usr/bin/uname -p` in=0A= - sparc) echo sparc-icl-nx7; exit ;;=0A- esac ;;=0A- s390x:SunOS:*:*= )=0A- echo ${UNAME=5FMACHINE}-ibm-solaris2`echo ${UNAME=5FRELEASE}|sed -e '= s/[^.]*//'`=0A- exit ;;=0A- sun4H:SunOS:5.*:*)=0A- echo sparc-hal-solari= s2`echo ${UNAME=5FRELEASE}|sed -e 's/[^.]*//'`=0A- exit ;;=0A- sun4*:Sun= OS:5.*:* | tadpole*:SunOS:5.*:*)=0A- echo sparc-sun-solaris2`echo ${UNAME= =5FRELEASE}|sed -e 's/[^.]*//'`=0A- exit ;;=0A- i86pc:SunOS:5.*:* | i86x= en:SunOS:5.*:*)=0A- eval $set=5Fcc=5Ffor=5Fbuild=0A- SUN=5FARCH=3D"i386"=0A= - # If there is a compiler, see if it is configured for 64-bit objects.=0A-= # Note that the Sun cc does not turn =5F=5FLP64=5F=5F into 1 like gcc does= .=0A- # This test works for both compilers.=0A- if [ "$CC=5FFOR=5FBUILD" != =3D 'no=5Fcompiler=5Ffound' ]; then=0A- if (echo '#ifdef =5F=5Famd64'; = echo IS=5F64BIT=5FARCH; echo '#endif') | \=0A- (CCOPTS=3D $CC=5FFOR=5FBUIL= D -E - 2>/dev/null) | \=0A- grep IS=5F64BIT=5FARCH >/dev/null=0A- then= =0A- SUN=5FARCH=3D"x86=5F64"=0A- fi=0A- fi=0A- echo ${SUN=5FARCH}-pc-s= olaris2`echo ${UNAME=5FRELEASE}|sed -e 's/[^.]*//'`=0A- exit ;;=0A- sun4= *:SunOS:6*:*)=0A- # According to config.sub, this is the proper way to cano= nicalize=0A- # SunOS6. Hard to guess exactly what SunOS6 will be like, but= =0A- # it's likely to be more like Solaris than SunOS4.=0A- echo sparc-sun-= solaris3`echo ${UNAME=5FRELEASE}|sed -e 's/[^.]*//'`=0A- exit ;;=0A- sun= 4*:SunOS:*:*)=0A- case "`/usr/bin/arch -k`" in=0A- Series*|S4*)=0A- UN= AME=5FRELEASE=3D`uname -v`=0A- ;;=0A- esac=0A- # Japanese Language version= s have a version number like `4.1.3-JL'.=0A- echo sparc-sun-sunos`echo ${UN= AME=5FRELEASE}|sed -e 's/-/=5F/'`=0A- exit ;;=0A- sun3*:SunOS:*:*)=0A- e= cho m68k-sun-sunos${UNAME=5FRELEASE}=0A- exit ;;=0A- sun*:*:4.2BSD:*)=0A= - UNAME=5FRELEASE=3D`(sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/d= ev/null`=0A- test "x${UNAME=5FRELEASE}" =3D "x" && UNAME=5FRELEASE=3D3=0A- = case "`/bin/arch`" in=0A- sun3)=0A- echo m68k-sun-sunos${UNAME=5FRELEA= SE}=0A- ;;=0A- sun4)=0A- echo sparc-sun-sunos${UNAME=5FRELEASE}=0A- = ;;=0A- esac=0A- exit ;;=0A- aushp:SunOS:*:*)=0A- echo sparc-auspex-sunos= ${UNAME=5FRELEASE}=0A- exit ;;=0A- # The situation for MiNT is a little = confusing. The machine name=0A- # can be virtually everything (everythi= ng which is not=0A- # "atarist" or "atariste" at least should have a pro= cessor=0A- # > m68000). The system name ranges from "MiNT" over "FreeMi= NT"=0A- # to the lowercase version "mint" (or "freemint"). Finally=0A- = # the system name "TOS" denotes a system which is actually not=0A- # = MiNT. But MiNT is downward compatible to TOS, so this should=0A- # be n= o problem.=0A- atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:= *TOS:*:*)=0A- echo m68k-atari-mint${UNAME=5FRELEASE}=0A- exit ;;=0A-= atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*)=0A- echo m68= k-atari-mint${UNAME=5FRELEASE}=0A- exit ;;=0A- *falcon*:*MiNT:*:*= | *falcon*:*mint:*:* | *falcon*:*TOS:*:*)=0A- echo m68k-atari-mint$= {UNAME=5FRELEASE}=0A- exit ;;=0A- milan*:*MiNT:*:* | milan*:*mint:*:* | = *milan*:*TOS:*:*)=0A- echo m68k-milan-mint${UNAME=5FRELEASE}=0A- = exit ;;=0A- hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*)= =0A- echo m68k-hades-mint${UNAME=5FRELEASE}=0A- exit ;;=0A- = *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*)=0A- echo m68k-unknown-mint= ${UNAME=5FRELEASE}=0A- exit ;;=0A- m68k:machten:*:*)=0A- echo m68= k-apple-machten${UNAME=5FRELEASE}=0A- exit ;;=0A- powerpc:machten:*:*)= =0A- echo powerpc-apple-machten${UNAME=5FRELEASE}=0A- exit ;;=0A- RISC*:= Mach:*:*)=0A- echo mips-dec-mach=5Fbsd4.3=0A- exit ;;=0A- RISC*:ULTRIX:*= :*)=0A- echo mips-dec-ultrix${UNAME=5FRELEASE}=0A- exit ;;=0A- VAX*:ULTR= IX*:*:*)=0A- echo vax-dec-ultrix${UNAME=5FRELEASE}=0A- exit ;;=0A- 2020:= CLIX:*:* | 2430:CLIX:*:*)=0A- echo clipper-intergraph-clix${UNAME=5FRELEASE= }=0A- exit ;;=0A- mips:*:*:UMIPS | mips:*:*:RISCos)=0A- eval $set=5Fcc= =5Ffor=5Fbuild=0A- sed 's/^ //' << EOF >$dummy.c=0A-#ifdef =5F=5Fcplusplus= =0A-#include /* for printf() prototype */=0A- int main (int argc= , char *argv[]) {=0A-#else=0A- int main (argc, argv) int argc; char *argv[]= ; {=0A-#endif=0A- #if defined (host=5Fmips) && defined (MIPSEB)=0A- #if def= ined (SYSTYPE=5FSYSV)=0A- printf ("mips-mips-riscos%ssysv\n", argv[1]); e= xit (0);=0A- #endif=0A- #if defined (SYSTYPE=5FSVR4)=0A- printf ("mips-mi= ps-riscos%ssvr4\n", argv[1]); exit (0);=0A- #endif=0A- #if defined (SYSTYPE= =5FBSD43) || defined(SYSTYPE=5FBSD)=0A- printf ("mips-mips-riscos%sbsd\n"= , argv[1]); exit (0);=0A- #endif=0A- #endif=0A- exit (-1);=0A- }=0A-EOF= =0A- $CC=5FFOR=5FBUILD -o $dummy $dummy.c &&=0A- dummyarg=3D`echo "${UNAM= E=5FRELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` &&=0A- SYSTEM=5FNAME=3D`$du= mmy $dummyarg` &&=0A- { echo "$SYSTEM=5FNAME"; exit; }=0A- echo mips-mi= ps-riscos${UNAME=5FRELEASE}=0A- exit ;;=0A- Motorola:PowerMAX=5FOS:*:*)= =0A- echo powerpc-motorola-powermax=0A- exit ;;=0A- Motorola:*:4.3:PL8-*= )=0A- echo powerpc-harris-powermax=0A- exit ;;=0A- Night=5FHawk:*:*:Powe= rMAX=5FOS | Synergy:PowerMAX=5FOS:*:*)=0A- echo powerpc-harris-powermax=0A-= exit ;;=0A- Night=5FHawk:Power=5FUNIX:*:*)=0A- echo powerpc-harris-powe= runix=0A- exit ;;=0A- m88k:CX/UX:7*:*)=0A- echo m88k-harris-cxux7=0A- ex= it ;;=0A- m88k:*:4*:R4*)=0A- echo m88k-motorola-sysv4=0A- exit ;;=0A- = m88k:*:3*:R3*)=0A- echo m88k-motorola-sysv3=0A- exit ;;=0A- AViiON:dgux= :*:*)=0A- # DG/UX returns AViiON for all architectures=0A- UN= AME=5FPROCESSOR=3D`/usr/bin/uname -p`=0A- if [ $UNAME=5FPROCESSOR =3D mc881= 00 ] || [ $UNAME=5FPROCESSOR =3D mc88110 ]=0A- then=0A- if [ ${TARGET= =5FBINARY=5FINTERFACE}x =3D m88kdguxelfx ] || \=0A- [ ${TARGET=5FBIN= ARY=5FINTERFACE}x =3D x ]=0A- then=0A- echo m88k-dg-dgux${UNAME=5FRELE= ASE}=0A- else=0A- echo m88k-dg-dguxbcs${UNAME=5FRELEASE}=0A- fi=0A= - else=0A- echo i586-dg-dgux${UNAME=5FRELEASE}=0A- fi=0A- exit ;;=0A- = M88*:DolphinOS:*:*) # DolphinOS (SVR3)=0A- echo m88k-dolphin-sysv3=0A- e= xit ;;=0A- M88*:*:R3*:*)=0A- # Delta 88k system running SVR3=0A- echo m8= 8k-motorola-sysv3=0A- exit ;;=0A- XD88*:*:*:*) # Tektronix XD88 system r= unning UTekV (SVR3)=0A- echo m88k-tektronix-sysv3=0A- exit ;;=0A- Tek43[= 0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD)=0A- echo m68= k-tektronix-bsd=0A- exit ;;=0A- *:IRIX*:*:*)=0A- echo mips-sgi-irix`echo= ${UNAME=5FRELEASE}|sed -e 's/-/=5F/g'`=0A- exit ;;=0A- ????????:AIX?:[1= 2].1:2) # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX.=0A- echo romp-ibm-aix = # uname -m gives an 8 hex-code CPU id=0A- exit ;; # Note that= : echo "'`uname -s`'" gives 'AIX '=0A- i*86:AIX:*:*)=0A- echo i386-ibm-a= ix=0A- exit ;;=0A- ia64:AIX:*:*)=0A- if [ -x /usr/bin/oslevel ] ; then= =0A- IBM=5FREV=3D`/usr/bin/oslevel`=0A- else=0A- IBM=5FREV=3D${UNAME=5FVE= RSION}.${UNAME=5FRELEASE}=0A- fi=0A- echo ${UNAME=5FMACHINE}-ibm-aix${IBM= =5FREV}=0A- exit ;;=0A- *:AIX:2:3)=0A- if grep bos325 /usr/include/stdio= .h >/dev/null 2>&1; then=0A- eval $set=5Fcc=5Ffor=5Fbuild=0A- sed 's/^ /= /' << EOF >$dummy.c=0A- #include =0A-=0A- main()=0A- {= =0A- if (!=5F=5Fpower=5Fpc())=0A- exit(1);=0A- puts("powerpc-ibm-aix= 3.2.5");=0A- exit(0);=0A- }=0A-EOF=0A- if $CC=5FFOR=5FBUILD -o $dummy = $dummy.c && SYSTEM=5FNAME=3D`$dummy`=0A- then=0A- echo "$SYSTEM=5FNAME"= =0A- else=0A- echo rs6000-ibm-aix3.2.5=0A- fi=0A- elif grep bos324 /usr= /include/stdio.h >/dev/null 2>&1; then=0A- echo rs6000-ibm-aix3.2.4=0A- el= se=0A- echo rs6000-ibm-aix3.2=0A- fi=0A- exit ;;=0A- *:AIX:*:[456])=0A-= IBM=5FCPU=5FID=3D`/usr/sbin/lsdev -C -c processor -S available | sed 1q | = awk '{ print $1 }'`=0A- if /usr/sbin/lsattr -El ${IBM=5FCPU=5FID} | grep ' = POWER' >/dev/null 2>&1; then=0A- IBM=5FARCH=3Drs6000=0A- else=0A- IBM=5FA= RCH=3Dpowerpc=0A- fi=0A- if [ -x /usr/bin/oslevel ] ; then=0A- IBM=5FREV= =3D`/usr/bin/oslevel`=0A- else=0A- IBM=5FREV=3D${UNAME=5FVERSION}.${UNAME= =5FRELEASE}=0A- fi=0A- echo ${IBM=5FARCH}-ibm-aix${IBM=5FREV}=0A- exit ;;= =0A- *:AIX:*:*)=0A- echo rs6000-ibm-aix=0A- exit ;;=0A- ibmrt:4.4BSD:= *|romp-ibm:BSD:*)=0A- echo romp-ibm-bsd4.4=0A- exit ;;=0A- ibmrt:*BSD:*|= romp-ibm:BSD:*) # covers RT/PC BSD and=0A- echo romp-ibm-bsd${UN= AME=5FRELEASE} # 4.3 with uname added to=0A- exit ;; = # report: romp-ibm BSD 4.3=0A- *:BOSX:*:*)=0A- echo rs6000-bull-= bosx=0A- exit ;;=0A- DPX/2?00:B.O.S.:*:*)=0A- echo m68k-bull-sysv3=0A- e= xit ;;=0A- 9000/[34]??:4.3bsd:1.*:*)=0A- echo m68k-hp-bsd=0A- exit ;;=0A= - hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*)=0A- echo m68k-hp-bsd4.4= =0A- exit ;;=0A- 9000/[34678]??:HP-UX:*:*)=0A- HPUX=5FREV=3D`echo ${UNAM= E=5FRELEASE}|sed -e 's/[^.]*.[0B]*//'`=0A- case "${UNAME=5FMACHINE}" in=0A-= 9000/31? ) HP=5FARCH=3Dm68000 ;;=0A- 9000/[34]?? ) = HP=5FARCH=3Dm68k ;;=0A- 9000/[678][0-9][0-9])=0A- if [ -x /usr/bin= /getconf ]; then=0A- sc=5Fcpu=5Fversion=3D`/usr/bin/getconf SC=5FCPU= =5FVERSION 2>/dev/null`=0A- sc=5Fkernel=5Fbits=3D`/usr/b= in/getconf SC=5FKERNEL=5FBITS 2>/dev/null`=0A- case "${s= c=5Fcpu=5Fversion}" in=0A- 523) HP=5FARCH=3D"hppa1.0" = ;; # CPU=5FPA=5FRISC1=5F0=0A- 528) HP=5FARCH=3D"hppa1.= 1" ;; # CPU=5FPA=5FRISC1=5F1=0A- 532) = # CPU=5FPA=5FRISC2=5F0=0A- case "${sc=5Fkernel= =5Fbits}" in=0A- 32) HP=5FARCH=3D"hppa2.0n" ;;=0A-= 64) HP=5FARCH=3D"hppa2.0w" ;;=0A- '') HP=5FAR= CH=3D"hppa2.0" ;; # HP-UX 10.20=0A- esac ;;=0A- = esac=0A- fi=0A- if [ "${HP=5FARCH}" =3D "" ]; then=0A- = eval $set=5Fcc=5Ffor=5Fbuild=0A- sed 's/^ //' << EOF = >$dummy.c=0A-=0A- #define =5FHPUX=5FSOURCE=0A- #i= nclude =0A- #include =0A-=0A- = int main ()=0A- {=0A- #if defined(=5FSC=5FKERNEL= =5FBITS)=0A- long bits =3D sysconf(=5FSC=5FKERNEL=5FBITS);= =0A- #endif=0A- long cpu =3D sysconf (=5FSC= =5FCPU=5FVERSION);=0A-=0A- switch (cpu)=0A- = {=0A- case CPU=5FPA=5FRISC1=5F0: puts ("hppa1.0"); break;=0A-= case CPU=5FPA=5FRISC1=5F1: puts ("hppa1.1"); break;=0A- = case CPU=5FPA=5FRISC2=5F0:=0A- #if defined(=5FSC=5FK= ERNEL=5FBITS)=0A- switch (bits)=0A- {=0A- = case 64: puts ("hppa2.0w"); break;=0A- case 3= 2: puts ("hppa2.0n"); break;=0A- default: puts ("hppa2.0"); = break;=0A- } break;=0A- #else /* !defined(=5FS= C=5FKERNEL=5FBITS) */=0A- puts ("hppa2.0"); break;=0A- = #endif=0A- default: puts ("hppa1.0"); break;=0A- = }=0A- exit (0);=0A- }=0A-EOF=0A-= (CCOPTS=3D $CC=5FFOR=5FBUILD -o $dummy $dummy.c 2>/dev/null) && HP=5F= ARCH=3D`$dummy`=0A- test -z "$HP=5FARCH" && HP=5FARCH=3Dhppa=0A- fi ;= ;=0A- esac=0A- if [ ${HP=5FARCH} =3D "hppa2.0w" ]=0A- then=0A- eval $se= t=5Fcc=5Ffor=5Fbuild=0A-=0A- # hppa2.0w-hp-hpux* has a 64-bit kernel an= d a compiler generating=0A- # 32-bit code. hppa64-hp-hpux* has the sam= e kernel and a compiler=0A- # generating 64-bit code. GNU and HP use d= ifferent nomenclature:=0A- #=0A- # $ CC=5FFOR=5FBUILD=3Dcc ./config= .guess=0A- # =3D> hppa2.0w-hp-hpux11.23=0A- # $ CC=5FFOR=5FBUILD=3D= "cc +DA2.0w" ./config.guess=0A- # =3D> hppa64-hp-hpux11.23=0A-=0A- = if echo =5F=5FLP64=5F=5F | (CCOPTS=3D $CC=5FFOR=5FBUILD -E - 2>/dev/null) |= =0A- grep -q =5F=5FLP64=5F=5F=0A- then=0A- HP=5FARCH=3D"hppa2.0w"=0A-= else=0A- HP=5FARCH=3D"hppa64"=0A- fi=0A- fi=0A- echo ${HP=5FARCH}= -hp-hpux${HPUX=5FREV}=0A- exit ;;=0A- ia64:HP-UX:*:*)=0A- HPUX=5FREV=3D`= echo ${UNAME=5FRELEASE}|sed -e 's/[^.]*.[0B]*//'`=0A- echo ia64-hp-hpux${HP= UX=5FREV}=0A- exit ;;=0A- 3050*:HI-UX:*:*)=0A- eval $set=5Fcc=5Ffor=5Fbu= ild=0A- sed 's/^ //' << EOF >$dummy.c=0A- #include =0A- int=0A- m= ain ()=0A- {=0A- long cpu =3D sysconf (=5FSC=5FCPU=5FVERSION);=0A- /* T= he order matters, because CPU=5FIS=5FHP=5FMC68K erroneously returns=0A- = true for CPU=5FPA=5FRISC1=5F0. CPU=5FIS=5FPA=5FRISC returns correct=0A- = results, however. */=0A- if (CPU=5FIS=5FPA=5FRISC (cpu))=0A- {= =0A- switch (cpu)=0A- {=0A- case CPU=5FPA=5FRISC1=5F0: puts ("hpp= a1.0-hitachi-hiuxwe2"); break;=0A- case CPU=5FPA=5FRISC1=5F1: puts ("hpp= a1.1-hitachi-hiuxwe2"); break;=0A- case CPU=5FPA=5FRISC2=5F0: puts ("hpp= a2.0-hitachi-hiuxwe2"); break;=0A- default: puts ("hppa-hitachi-hiuxwe2"= ); break;=0A- }=0A- }=0A- else if (CPU=5FIS=5FHP=5FMC68K (cpu))=0A- = puts ("m68k-hitachi-hiuxwe2");=0A- else puts ("unknown-hitachi-hiuxwe= 2");=0A- exit (0);=0A- }=0A-EOF=0A- $CC=5FFOR=5FBUILD -o $dummy $dummy.c = && SYSTEM=5FNAME=3D`$dummy` &&=0A- { echo "$SYSTEM=5FNAME"; exit; }=0A- ec= ho unknown-hitachi-hiuxwe2=0A- exit ;;=0A- 9000/7??:4.3bsd:*:* | 9000/8?= [79]:4.3bsd:*:* )=0A- echo hppa1.1-hp-bsd=0A- exit ;;=0A- 9000/8??:4.3bs= d:*:*)=0A- echo hppa1.0-hp-bsd=0A- exit ;;=0A- *9??*:MPE/iX:*:* | *3000*= :MPE/iX:*:*)=0A- echo hppa1.0-hp-mpeix=0A- exit ;;=0A- hp7??:OSF1:*:* | = hp8?[79]:OSF1:*:* )=0A- echo hppa1.1-hp-osf=0A- exit ;;=0A- hp8??:OSF1:*= :*)=0A- echo hppa1.0-hp-osf=0A- exit ;;=0A- i*86:OSF1:*:*)=0A- if [ -x /= usr/sbin/sysversion ] ; then=0A- echo ${UNAME=5FMACHINE}-unknown-osf1mk= =0A- else=0A- echo ${UNAME=5FMACHINE}-unknown-osf1=0A- fi=0A- exit ;;= =0A- parisc*:Lites*:*:*)=0A- echo hppa1.1-hp-lites=0A- exit ;;=0A- C1= *:ConvexOS:*:* | convex:ConvexOS:C1*:*)=0A- echo c1-convex-bsd=0A- e= xit ;;=0A- C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*)=0A- if getsysinfo -= f scalar=5Facc=0A- then echo c32-convex-bsd=0A- else echo c2-convex-bsd=0A-= fi=0A- exit ;;=0A- C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*)= =0A- echo c34-convex-bsd=0A- exit ;;=0A- C38*:ConvexOS:*:* | conv= ex:ConvexOS:C38*:*)=0A- echo c38-convex-bsd=0A- exit ;;=0A- C4*:C= onvexOS:*:* | convex:ConvexOS:C4*:*)=0A- echo c4-convex-bsd=0A- exit= ;;=0A- CRAY*Y-MP:*:*:*)=0A- echo ymp-cray-unicos${UNAME=5FRELEASE} | se= d -e 's/\.[^.]*$/.X/'=0A- exit ;;=0A- CRAY*[A-Z]90:*:*:*)=0A- echo ${UNA= ME=5FMACHINE}-cray-unicos${UNAME=5FRELEASE} \=0A- | sed -e 's/CRAY.*\([A-Z]= 90\)/\1/' \=0A- -e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstu= vwxyz/ \=0A- -e 's/\.[^.]*$/.X/'=0A- exit ;;=0A- CRAY*TS:*:*:*)=0A= - echo t90-cray-unicos${UNAME=5FRELEASE} | sed -e 's/\.[^.]*$/.X/'=0A- exit= ;;=0A- CRAY*T3E:*:*:*)=0A- echo alphaev5-cray-unicosmk${UNAME=5FRELEASE= } | sed -e 's/\.[^.]*$/.X/'=0A- exit ;;=0A- CRAY*SV1:*:*:*)=0A- echo sv1= -cray-unicos${UNAME=5FRELEASE} | sed -e 's/\.[^.]*$/.X/'=0A- exit ;;=0A- = *:UNICOS/mp:*:*)=0A- echo craynv-cray-unicosmp${UNAME=5FRELEASE} | sed -e = 's/\.[^.]*$/.X/'=0A- exit ;;=0A- F30[01]:UNIX=5FSystem=5FV:*:* | F700:UN= IX=5FSystem=5FV:*:*)=0A- FUJITSU=5FPROC=3D`uname -m | tr 'ABCDEFGHIJKLMNOPQ= RSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`=0A- FUJITSU=5FSYS=3D`uname = -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e = 's/\///'`=0A- FUJITSU=5FREL=3D`echo ${UNAME=5FRELEASE} | sed -e 's/ = /=5F/'`=0A- echo "${FUJITSU=5FPROC}-fujitsu-${FUJITSU=5FSYS}${FUJITS= U=5FREL}"=0A- exit ;;=0A- 5000:UNIX=5FSystem=5FV:4.*:*)=0A- = FUJITSU=5FSYS=3D`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijkl= mnopqrstuvwxyz' | sed -e 's/\///'`=0A- FUJITSU=5FREL=3D`echo ${UNAME= =5FRELEASE} | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' = | sed -e 's/ /=5F/'`=0A- echo "sparc-fujitsu-${FUJITSU=5FSYS}${FUJIT= SU=5FREL}"=0A- exit ;;=0A- i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend= \ Embedded/OS:*:*)=0A- echo ${UNAME=5FMACHINE}-pc-bsdi${UNAME=5FRELEASE}=0A= - exit ;;=0A- sparc*:BSD/OS:*:*)=0A- echo sparc-unknown-bsdi${UNAME=5FRE= LEASE}=0A- exit ;;=0A- *:BSD/OS:*:*)=0A- echo ${UNAME=5FMACHINE}-unknown= -bsdi${UNAME=5FRELEASE}=0A- exit ;;=0A- *:FreeBSD:*:*)=0A- case ${UNAME= =5FMACHINE} in=0A- pc98)=0A- echo i386-unknown-freebsd`echo ${UNAME=5F= RELEASE}|sed -e 's/[-(].*//'` ;;=0A- amd64)=0A- echo x86=5F64-unknown-= freebsd`echo ${UNAME=5FRELEASE}|sed -e 's/[-(].*//'` ;;=0A- *)=0A- ech= o ${UNAME=5FMACHINE}-unknown-freebsd`echo ${UNAME=5FRELEASE}|sed -e 's/[-(]= .*//'` ;;=0A- esac=0A- exit ;;=0A- i*:CYGWIN*:*)=0A- echo ${UNAME=5FMACH= INE}-pc-cygwin=0A- exit ;;=0A- *:MINGW*:*)=0A- echo ${UNAME=5FMACHINE}-p= c-mingw32=0A- exit ;;=0A- i*:windows32*:*)=0A- # uname -m includes "= -pc" on this system.=0A- echo ${UNAME=5FMACHINE}-mingw32=0A- exit ;;=0A= - i*:PW*:*)=0A- echo ${UNAME=5FMACHINE}-pc-pw32=0A- exit ;;=0A- *:Int= erix*:[3456]*)=0A- case ${UNAME=5FMACHINE} in=0A- x86)=0A- echo i5= 86-pc-interix${UNAME=5FRELEASE}=0A- exit ;;=0A- EM64T | authenticamd |= genuineintel)=0A- echo x86=5F64-unknown-interix${UNAME=5FRELEASE}=0A- ex= it ;;=0A- IA64)=0A- echo ia64-unknown-interix${UNAME=5FRELEASE}=0A- e= xit ;;=0A- esac ;;=0A- [345]86:Windows=5F95:* | [345]86:Windows=5F98:* |= [345]86:Windows=5FNT:*)=0A- echo i${UNAME=5FMACHINE}-pc-mks=0A- exit ;;=0A= - 8664:Windows=5FNT:*)=0A- echo x86=5F64-pc-mks=0A- exit ;;=0A- i*:Wi= ndows=5FNT*:* | Pentium*:Windows=5FNT*:*)=0A- # How do we know it's Interix= rather than the generic POSIX subsystem?=0A- # It also conflicts with pre-= 2.0 versions of AT&T UWIN. Should we=0A- # UNAME=5FMACHINE based on the out= put of uname instead of i386?=0A- echo i586-pc-interix=0A- exit ;;=0A- i= *:UWIN*:*)=0A- echo ${UNAME=5FMACHINE}-pc-uwin=0A- exit ;;=0A- amd64:CYG= WIN*:*:* | x86=5F64:CYGWIN*:*:*)=0A- echo x86=5F64-unknown-cygwin=0A- exit = ;;=0A- p*:CYGWIN*:*)=0A- echo powerpcle-unknown-cygwin=0A- exit ;;=0A- = prep*:SunOS:5.*:*)=0A- echo powerpcle-unknown-solaris2`echo ${UNAME=5FREL= EASE}|sed -e 's/[^.]*//'`=0A- exit ;;=0A- *:GNU:*:*)=0A- # the GNU syste= m=0A- echo `echo ${UNAME=5FMACHINE}|sed -e 's,[-/].*$,,'`-unknown-gnu`echo = ${UNAME=5FRELEASE}|sed -e 's,/.*$,,'`=0A- exit ;;=0A- *:GNU/*:*:*)=0A- #= other systems with GNU libc and userland=0A- echo ${UNAME=5FMACHINE}-unkno= wn-`echo ${UNAME=5FSYSTEM} | sed 's,^[^/]*/,,' | tr '[A-Z]' '[a-z]'``echo $= {UNAME=5FRELEASE}|sed -e 's/[-(].*//'`-${LIBC}=0A- exit ;;=0A- i*86:Mini= x:*:*)=0A- echo ${UNAME=5FMACHINE}-pc-minix=0A- exit ;;=0A- arm*:Linux:*= :*)=0A- eval $set=5Fcc=5Ffor=5Fbuild=0A- if echo =5F=5FARM=5FEABI=5F=5F | $= CC=5FFOR=5FBUILD -E - 2>/dev/null \=0A- | grep -q =5F=5FARM=5FEABI=5F= =5F=0A- then=0A- echo ${UNAME=5FMACHINE}-unknown-linux-${LIBC}=0A- else= =0A- echo ${UNAME=5FMACHINE}-unknown-linux-${LIBC}eabi=0A- fi=0A- exit = ;;=0A- avr32*:Linux:*:*)=0A- echo ${UNAME=5FMACHINE}-unknown-linux-${LIB= C}=0A- exit ;;=0A- cris:Linux:*:*)=0A- echo cris-axis-linux-${LIBC}=0A- = exit ;;=0A- crisv32:Linux:*:*)=0A- echo crisv32-axis-linux-${LIBC}=0A- e= xit ;;=0A- frv:Linux:*:*)=0A- echo frv-unknown-linux-${LIBC}=0A- exi= t ;;=0A- ia64:Linux:*:*)=0A- echo ${UNAME=5FMACHINE}-unknown-linux-${LIB= C}=0A- exit ;;=0A- m32r*:Linux:*:*)=0A- echo ${UNAME=5FMACHINE}-unknown-= linux-${LIBC}=0A- exit ;;=0A- m68*:Linux:*:*)=0A- echo ${UNAME=5FMACHINE= }-unknown-linux-${LIBC}=0A- exit ;;=0A- mips:Linux:*:* | mips64:Linux:*:= *)=0A- eval $set=5Fcc=5Ffor=5Fbuild=0A- sed 's/^ //' << EOF >$dummy.c=0A- #= undef CPU=0A- #undef ${UNAME=5FMACHINE}=0A- #undef ${UNAME=5FMACHINE}el=0A-= #if defined(=5F=5FMIPSEL=5F=5F) || defined(=5F=5FMIPSEL) || defined(=5FMIP= SEL) || defined(MIPSEL)=0A- CPU=3D${UNAME=5FMACHINE}el=0A- #else=0A- #if de= fined(=5F=5FMIPSEB=5F=5F) || defined(=5F=5FMIPSEB) || defined(=5FMIPSEB) ||= defined(MIPSEB)=0A- CPU=3D${UNAME=5FMACHINE}=0A- #else=0A- CPU=3D=0A- #end= if=0A- #endif=0A-EOF=0A- eval "`$CC=5FFOR=5FBUILD -E $dummy.c 2>/dev/null |= sed -n '=0A- /^CPU/{=0A- s: ::g=0A- p=0A- }'`"=0A- test x"${CPU}= " !=3D x && { echo "${CPU}-unknown-linux-${LIBC}"; exit; }=0A- ;;=0A- or= 32:Linux:*:*)=0A- echo or32-unknown-linux-${LIBC}=0A- exit ;;=0A- ppc:Li= nux:*:*)=0A- echo powerpc-unknown-linux-${LIBC}=0A- exit ;;=0A- ppc64:Li= nux:*:*)=0A- echo powerpc64-unknown-linux-${LIBC}=0A- exit ;;=0A- alpha:= Linux:*:*)=0A- case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinf= o` in=0A- EV5) UNAME=5FMACHINE=3Dalphaev5 ;;=0A- EV56) UNAME=5FMACHI= NE=3Dalphaev56 ;;=0A- PCA56) UNAME=5FMACHINE=3Dalphapca56 ;;=0A- PCA57)= UNAME=5FMACHINE=3Dalphapca56 ;;=0A- EV6) UNAME=5FMACHINE=3Dalphaev6 ;;= =0A- EV67) UNAME=5FMACHINE=3Dalphaev67 ;;=0A- EV68*) UNAME=5FMACHINE= =3Dalphaev68 ;;=0A- esac=0A- objdump --private-headers /bin/sh | gre= p -q ld.so.1=0A- if test "$?" =3D 0 ; then LIBC=3D"gnulibc1" ; fi=0A- echo = ${UNAME=5FMACHINE}-unknown-linux-${LIBC}=0A- exit ;;=0A- padre:Linux:*:*= )=0A- echo sparc-unknown-linux-${LIBC}=0A- exit ;;=0A- parisc:Linux:*:* = | hppa:Linux:*:*)=0A- # Look for CPU level=0A- case `grep '^cpu[^a-z]*:' /p= roc/cpuinfo 2>/dev/null | cut -d' ' -f2` in=0A- PA7*) echo hppa1.1-unknow= n-linux-${LIBC} ;;=0A- PA8*) echo hppa2.0-unknown-linux-${LIBC} ;;=0A- = *) echo hppa-unknown-linux-${LIBC} ;;=0A- esac=0A- exit ;;=0A- parisc= 64:Linux:*:* | hppa64:Linux:*:*)=0A- echo hppa64-unknown-linux-${LIBC}=0A- = exit ;;=0A- s390:Linux:*:* | s390x:Linux:*:*)=0A- echo ${UNAME=5FMACHINE= }-ibm-linux=0A- exit ;;=0A- sh64*:Linux:*:*)=0A- echo ${UNAME=5FMACH= INE}-unknown-linux-${LIBC}=0A- exit ;;=0A- sh*:Linux:*:*)=0A- echo ${UNA= ME=5FMACHINE}-unknown-linux-${LIBC}=0A- exit ;;=0A- sparc:Linux:*:* | sp= arc64:Linux:*:*)=0A- echo ${UNAME=5FMACHINE}-unknown-linux-${LIBC}=0A- exit= ;;=0A- vax:Linux:*:*)=0A- echo ${UNAME=5FMACHINE}-dec-linux-${LIBC}=0A-= exit ;;=0A- x86=5F64:Linux:*:*)=0A- echo x86=5F64-unknown-linux-${LIBC}= =0A- exit ;;=0A- xtensa*:Linux:*:*)=0A- echo ${UNAME=5FMACHINE}-unkn= own-linux-${LIBC}=0A- exit ;;=0A- i*86:Linux:*:*)=0A- # The BFD linker k= nows what the default object file format is, so=0A- # first see if it will = tell us. cd to the root directory to prevent=0A- # problems with other prog= rams or directories called `ld' in the path.=0A- # Set LC=5FALL=3DC to ensu= re ld outputs messages in English.=0A- ld=5Fsupported=5Ftargets=3D`cd /; LC= =5FALL=3DC ld --help 2>&1 \=0A- | sed -ne '/supported targets:/!d=0A- = s/[ ][ ]*/ /g=0A- s/.*supported targets: *//=0A- s/ .*= //=0A- p'`=0A- case "$ld=5Fsupported=5Ftargets" in=0A- elf3= 2-i386)=0A- TENTATIVE=3D"${UNAME=5FMACHINE}-pc-linux-${LIBC}"=0A- ;;=0A- = esac=0A- # This should get integrated into the C code below, but now we hac= k=0A- if [ "$LIBC" !=3D "gnu" ] ; then echo "$TENTATIVE" && exit 0 ; fi=0A-= # Determine whether the default compiler is a.out or elf=0A- eval $set=5Fc= c=5Ffor=5Fbuild=0A- sed 's/^ //' << EOF >$dummy.c=0A- #include = =0A- #ifdef =5F=5FELF=5F=5F=0A- # ifdef =5F=5FGLIBC=5F=5F=0A- # if =5F=5FG= LIBC=5F=5F >=3D 2=0A- LIBC=3Dgnu=0A- # else=0A- LIBC=3Dgnulibc1=0A- # end= if=0A- # else=0A- LIBC=3Dgnulibc1=0A- # endif=0A- #else=0A- #if defined(=5F= =5FINTEL=5FCOMPILER) || defined(=5F=5FPGI) || defined(=5F=5FSUNPRO=5FC) || = defined(=5F=5FSUNPRO=5FCC)=0A- LIBC=3Dgnu=0A- #else=0A- LIBC=3Dgnuaout=0A- = #endif=0A- #endif=0A- #ifdef =5F=5Fdietlibc=5F=5F=0A- LIBC=3Ddietlibc=0A- #= endif=0A-EOF=0A- eval "`$CC=5FFOR=5FBUILD -E $dummy.c 2>/dev/null | sed -n = '=0A- /^LIBC/{=0A- s: ::g=0A- p=0A- }'`"=0A- test x"${LIBC}" !=3D= x && {=0A- echo "${UNAME=5FMACHINE}-pc-linux-${LIBC}"=0A- exit=0A- }=0A-= test x"${TENTATIVE}" !=3D x && { echo "${TENTATIVE}"; exit; }=0A- ;;=0A- = i*86:DYNIX/ptx:4*:*)=0A- # ptx 4.0 does uname -s correctly, with DYNIX/pt= x in there.=0A- # earlier versions are messed up and put the nodename in bo= th=0A- # sysname and nodename.=0A- echo i386-sequent-sysv4=0A- exit ;;=0A- = i*86:UNIX=5FSV:4.2MP:2.*)=0A- # Unixware is an offshoot of SVR4, = but it has its own version=0A- # number series starting with 2...=0A= - # I am not positive that other SVR4 systems won't match this,=0A- = # I just have to hope. -- rms.=0A- # Use sysv4.2uw... so that sysv4= * matches it.=0A- echo ${UNAME=5FMACHINE}-pc-sysv4.2uw${UNAME=5FVERSION}=0A= - exit ;;=0A- i*86:OS/2:*:*)=0A- # If we were able to find `uname', then= EMX Unix compatibility=0A- # is probably installed.=0A- echo ${UNAME=5FMAC= HINE}-pc-os2-emx=0A- exit ;;=0A- i*86:XTS-300:*:STOP)=0A- echo ${UNAME= =5FMACHINE}-unknown-stop=0A- exit ;;=0A- i*86:atheos:*:*)=0A- echo ${UNA= ME=5FMACHINE}-unknown-atheos=0A- exit ;;=0A- i*86:syllable:*:*)=0A- echo= ${UNAME=5FMACHINE}-pc-syllable=0A- exit ;;=0A- i*86:LynxOS:2.*:* | i*86= :LynxOS:3.[01]*:* | i*86:LynxOS:4.[02]*:*)=0A- echo i386-unknown-lynxos${UN= AME=5FRELEASE}=0A- exit ;;=0A- i*86:*DOS:*:*)=0A- echo ${UNAME=5FMACHINE= }-pc-msdosdjgpp=0A- exit ;;=0A- i*86:*:4.*:* | i*86:SYSTEM=5FV:4.*:*)=0A= - UNAME=5FREL=3D`echo ${UNAME=5FRELEASE} | sed 's/\/MP$//'`=0A- if grep Nov= ell /usr/include/link.h >/dev/null 2>/dev/null; then=0A- echo ${UNAME=5FMA= CHINE}-univel-sysv${UNAME=5FREL}=0A- else=0A- echo ${UNAME=5FMACHINE}-pc-s= ysv${UNAME=5FREL}=0A- fi=0A- exit ;;=0A- i*86:*:5:[678]*)=0A- # Unix= Ware 7.x, OpenUNIX and OpenServer 6.=0A- case `/bin/uname -X | grep "^Machi= ne"` in=0A- *486*) UNAME=5FMACHINE=3Di486 ;;=0A- *Pentium) = UNAME=5FMACHINE=3Di586 ;;=0A- *Pent*|*Celeron) UNAME=5FMACHINE=3Di686= ;;=0A- esac=0A- echo ${UNAME=5FMACHINE}-unknown-sysv${UNAME=5FRELEASE}${UN= AME=5FSYSTEM}${UNAME=5FVERSION}=0A- exit ;;=0A- i*86:*:3.2:*)=0A- if tes= t -f /usr/options/cb.name; then=0A- UNAME=5FREL=3D`sed -n 's/.*Version //p= ' /dev/null >/dev/null ; then=0A- UNAME=5FREL=3D`(/bi= n/uname -X|grep Release|sed -e 's/.*=3D //')`=0A- (/bin/uname -X|grep i804= 86 >/dev/null) && UNAME=5FMACHINE=3Di486=0A- (/bin/uname -X|grep '^Machine= .*Pentium' >/dev/null) \=0A- && UNAME=5FMACHINE=3Di586=0A- (/bin/uname -= X|grep '^Machine.*Pent *II' >/dev/null) \=0A- && UNAME=5FMACHINE=3Di686= =0A- (/bin/uname -X|grep '^Machine.*Pentium Pro' >/dev/null) \=0A- && UN= AME=5FMACHINE=3Di686=0A- echo ${UNAME=5FMACHINE}-pc-sco$UNAME=5FREL=0A- el= se=0A- echo ${UNAME=5FMACHINE}-pc-sysv32=0A- fi=0A- exit ;;=0A- pc:*:*:= *)=0A- # Left here for compatibility:=0A- # uname -m prints for DJGP= P always 'pc', but it prints nothing about=0A- # the processor, so w= e play safe by assuming i586.=0A- # Note: whatever this is, it MUST be the = same as what config.sub=0A- # prints for the "djgpp" host, or else GDB conf= igury will decide that=0A- # this is a cross-build.=0A- echo i586-pc-msdosd= jgpp=0A- exit ;;=0A- Intel:Mach:3*:*)=0A- echo i386-pc-mach3=0A- = exit ;;=0A- paragon:*:*:*)=0A- echo i860-intel-osf1=0A- exit ;;=0A- i= 860:*:4.*:*) # i860-SVR4=0A- if grep Stardent /usr/include/sys/uadmin.h >/d= ev/null 2>&1 ; then=0A- echo i860-stardent-sysv${UNAME=5FRELEASE} # Stard= ent Vistra i860-SVR4=0A- else # Add other i860-SVR4 vendors below as they a= re discovered.=0A- echo i860-unknown-sysv${UNAME=5FRELEASE} # Unknown i8= 60-SVR4=0A- fi=0A- exit ;;=0A- mini*:CTIX:SYS*5:*)=0A- # "miniframe"=0A-= echo m68010-convergent-sysv=0A- exit ;;=0A- mc68k:UNIX:SYSTEM5:3.51m)= =0A- echo m68k-convergent-sysv=0A- exit ;;=0A- M680?0:D-NIX:5.3:*)=0A- e= cho m68k-diab-dnix=0A- exit ;;=0A- M68*:*:R3V[5678]*:*)=0A- test -r /sys= V68 && { echo 'm68k-motorola-sysv'; exit; } ;;=0A- 3[345]??:*:4.0:3.0 | = 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:*:4.0:3.0 | 4400:*:4.0= :3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0 | SDS2:*:4.0:3.0 | SHG2:*:4.0:3.0 |= S7501*:*:4.0:3.0)=0A- OS=5FREL=3D''=0A- test -r /etc/.relid \=0A- && OS=5F= REL=3D.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid`=0A- /bi= n/uname -p 2>/dev/null | grep 86 >/dev/null \=0A- && { echo i486-ncr-sysv= 4.3${OS=5FREL}; exit; }=0A- /bin/uname -p 2>/dev/null | /bin/grep entium >/= dev/null \=0A- && { echo i586-ncr-sysv4.3${OS=5FREL}; exit; } ;;=0A- 3= [34]??:*:4.0:* | 3[34]??,*:*:4.0:*)=0A- /bin/uname -p 2>/dev/null | = grep 86 >/dev/null \=0A- && { echo i486-ncr-sysv4; exit; } ;;=0A- = NCR*:*:4.2:* | MPRAS*:*:4.2:*)=0A- OS=5FREL=3D'.3'=0A- test -r /etc/.rel= id \=0A- && OS=5FREL=3D.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' <= /etc/.relid`=0A- /bin/uname -p 2>/dev/null | grep 86 >/dev/null \=0A- = && { echo i486-ncr-sysv4.3${OS=5FREL}; exit; }=0A- /bin/uname -p 2>/dev/nul= l | /bin/grep entium >/dev/null \=0A- && { echo i586-ncr-sysv4.3${OS=5F= REL}; exit; }=0A- /bin/uname -p 2>/dev/null | /bin/grep pteron >/dev/null \= =0A- && { echo i586-ncr-sysv4.3${OS=5FREL}; exit; } ;;=0A- m68*:Lynx= OS:2.*:* | m68*:LynxOS:3.0*:*)=0A- echo m68k-unknown-lynxos${UNAME=5FRELEAS= E}=0A- exit ;;=0A- mc68030:UNIX=5FSystem=5FV:4.*:*)=0A- echo m68k-atari-= sysv4=0A- exit ;;=0A- TSUNAMI:LynxOS:2.*:*)=0A- echo sparc-unknown-lynxo= s${UNAME=5FRELEASE}=0A- exit ;;=0A- rs6000:LynxOS:2.*:*)=0A- echo rs6000= -unknown-lynxos${UNAME=5FRELEASE}=0A- exit ;;=0A- PowerPC:LynxOS:2.*:* |= PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.[02]*:*)=0A- echo powerpc-unkn= own-lynxos${UNAME=5FRELEASE}=0A- exit ;;=0A- SM[BE]S:UNIX=5FSV:*:*)=0A- = echo mips-dde-sysv${UNAME=5FRELEASE}=0A- exit ;;=0A- RM*:ReliantUNIX-*:*= :*)=0A- echo mips-sni-sysv4=0A- exit ;;=0A- RM*:SINIX-*:*:*)=0A- echo mi= ps-sni-sysv4=0A- exit ;;=0A- *:SINIX-*:*:*)=0A- if uname -p 2>/dev/null = >/dev/null ; then=0A- UNAME=5FMACHINE=3D`(uname -p) 2>/dev/null`=0A- echo= ${UNAME=5FMACHINE}-sni-sysv4=0A- else=0A- echo ns32k-sni-sysv=0A- fi=0A- = exit ;;=0A- PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP e= ffort=0A- # says = =0A- echo i586-unisys-sysv4=0A- exit ;;=0A- *:UNIX=5FSyste= m=5FV:4*:FTX*)=0A- # From Gerald Hewes .=0A- # How ab= out differentiating between stratus architectures? -djm=0A- echo hppa1.1-st= ratus-sysv4=0A- exit ;;=0A- *:*:*:FTX*)=0A- # From seanf@swdc.stratus.co= m.=0A- echo i860-stratus-sysv4=0A- exit ;;=0A- i*86:VOS:*:*)=0A- # From = Paul.Green@stratus.com.=0A- echo ${UNAME=5FMACHINE}-stratus-vos=0A- exit ;;= =0A- *:VOS:*:*)=0A- # From Paul.Green@stratus.com.=0A- echo hppa1.1-stra= tus-vos=0A- exit ;;=0A- mc68*:A/UX:*:*)=0A- echo m68k-apple-aux${UNAME= =5FRELEASE}=0A- exit ;;=0A- news*:NEWS-OS:6*:*)=0A- echo mips-sony-newso= s6=0A- exit ;;=0A- R[34]000:*System=5FV*:*:* | R4000:UNIX=5FSYSV:*:* | R= *000:UNIX=5FSV:*:*)=0A- if [ -d /usr/nec ]; then=0A- echo mips-nec-= sysv${UNAME=5FRELEASE}=0A- else=0A- echo mips-unknown-sysv${UNAME= =5FRELEASE}=0A- fi=0A- exit ;;=0A- BeBox:BeOS:*:*) # BeOS running= on hardware made by Be, PPC only.=0A- echo powerpc-be-beos=0A- exit ;;=0A-= BeMac:BeOS:*:*) # BeOS running on Mac or Mac clone, PPC only.=0A- echo = powerpc-apple-beos=0A- exit ;;=0A- BePC:BeOS:*:*) # BeOS running on Inte= l PC compatible.=0A- echo i586-pc-beos=0A- exit ;;=0A- BePC:Haiku:*:*) #= Haiku running on Intel PC compatible.=0A- echo i586-pc-haiku=0A- exit ;;= =0A- SX-4:SUPER-UX:*:*)=0A- echo sx4-nec-superux${UNAME=5FRELEASE}=0A- e= xit ;;=0A- SX-5:SUPER-UX:*:*)=0A- echo sx5-nec-superux${UNAME=5FRELEASE}= =0A- exit ;;=0A- SX-6:SUPER-UX:*:*)=0A- echo sx6-nec-superux${UNAME=5FRE= LEASE}=0A- exit ;;=0A- SX-7:SUPER-UX:*:*)=0A- echo sx7-nec-superux${UNAM= E=5FRELEASE}=0A- exit ;;=0A- SX-8:SUPER-UX:*:*)=0A- echo sx8-nec-superux= ${UNAME=5FRELEASE}=0A- exit ;;=0A- SX-8R:SUPER-UX:*:*)=0A- echo sx8r-nec= -superux${UNAME=5FRELEASE}=0A- exit ;;=0A- Power*:Rhapsody:*:*)=0A- echo= powerpc-apple-rhapsody${UNAME=5FRELEASE}=0A- exit ;;=0A- *:Rhapsody:*:*= )=0A- echo ${UNAME=5FMACHINE}-apple-rhapsody${UNAME=5FRELEASE}=0A- exit ;;= =0A- *:Darwin:*:*)=0A- UNAME=5FPROCESSOR=3D`uname -p` || UNAME=5FPROCESS= OR=3Dunknown=0A- case $UNAME=5FPROCESSOR in=0A- unknown) UNAME=5FPROCES= SOR=3Dpowerpc ;;=0A- esac=0A- echo ${UNAME=5FPROCESSOR}-apple-darwin${UNAME= =5FRELEASE}=0A- exit ;;=0A- *:procnto*:*:* | *:QNX:[0123456789]*:*)=0A- = UNAME=5FPROCESSOR=3D`uname -p`=0A- if test "$UNAME=5FPROCESSOR" =3D "x86"; = then=0A- UNAME=5FPROCESSOR=3Di386=0A- UNAME=5FMACHINE=3Dpc=0A- fi=0A- ech= o ${UNAME=5FPROCESSOR}-${UNAME=5FMACHINE}-nto-qnx${UNAME=5FRELEASE}=0A- exi= t ;;=0A- *:QNX:*:4*)=0A- echo i386-pc-qnx=0A- exit ;;=0A- NSE-?:NONST= OP=5FKERNEL:*:*)=0A- echo nse-tandem-nsk${UNAME=5FRELEASE}=0A- exit ;;=0A- = NSR-?:NONSTOP=5FKERNEL:*:*)=0A- echo nsr-tandem-nsk${UNAME=5FRELEASE}=0A= - exit ;;=0A- *:NonStop-UX:*:*)=0A- echo mips-compaq-nonstopux=0A- exit = ;;=0A- BS2000:POSIX*:*:*)=0A- echo bs2000-siemens-sysv=0A- exit ;;=0A- = DS/*:UNIX=5FSystem=5FV:*:*)=0A- echo ${UNAME=5FMACHINE}-${UNAME=5FSYSTEM}= -${UNAME=5FRELEASE}=0A- exit ;;=0A- *:Plan9:*:*)=0A- # "uname -m" is not= consistent, so use $cputype instead. 386=0A- # is converted to i386 for co= nsistency with other x86=0A- # operating systems.=0A- if test "$cputype" = =3D "386"; then=0A- UNAME=5FMACHINE=3Di386=0A- else=0A- UNAME=5FMAC= HINE=3D"$cputype"=0A- fi=0A- echo ${UNAME=5FMACHINE}-unknown-plan9=0A- exit= ;;=0A- *:TOPS-10:*:*)=0A- echo pdp10-unknown-tops10=0A- exit ;;=0A- = *:TENEX:*:*)=0A- echo pdp10-unknown-tenex=0A- exit ;;=0A- KS10:TOPS-20:*= :* | KL10:TOPS-20:*:* | TYPE4:TOPS-20:*:*)=0A- echo pdp10-dec-tops20=0A- ex= it ;;=0A- XKL-1:TOPS-20:*:* | TYPE5:TOPS-20:*:*)=0A- echo pdp10-xkl-tops= 20=0A- exit ;;=0A- *:TOPS-20:*:*)=0A- echo pdp10-unknown-tops20=0A- exit= ;;=0A- *:ITS:*:*)=0A- echo pdp10-unknown-its=0A- exit ;;=0A- SEI:*:*= :SEIUX)=0A- echo mips-sei-seiux${UNAME=5FRELEASE}=0A- exit ;;=0A- = *:DragonFly:*:*)=0A- echo ${UNAME=5FMACHINE}-unknown-dragonfly`echo ${UNAM= E=5FRELEASE}|sed -e 's/[-(].*//'`=0A- exit ;;=0A- *:*VMS:*:*)=0A- UN= AME=5FMACHINE=3D`(uname -p) 2>/dev/null`=0A- case "${UNAME=5FMACHINE}" in= =0A- A*) echo alpha-dec-vms ; exit ;;=0A- I*) echo ia64-dec-vms ; e= xit ;;=0A- V*) echo vax-dec-vms ; exit ;;=0A- esac ;;=0A- *:XENIX:*:= SysV)=0A- echo i386-pc-xenix=0A- exit ;;=0A- i*86:skyos:*:*)=0A- echo ${= UNAME=5FMACHINE}-pc-skyos`echo ${UNAME=5FRELEASE}` | sed -e 's/ .*$//'=0A- = exit ;;=0A- i*86:rdos:*:*)=0A- echo ${UNAME=5FMACHINE}-pc-rdos=0A- exit = ;;=0A- i*86:AROS:*:*)=0A- echo ${UNAME=5FMACHINE}-pc-aros=0A- exit ;;=0A= -esac=0A-=0A-#echo '(No uname command or uname output not recognized.)' 1>&= 2=0A-#echo "${UNAME=5FMACHINE}:${UNAME=5FSYSTEM}:${UNAME=5FRELEASE}:${UNAME= =5FVERSION}" 1>&2=0A-=0A-eval $set=5Fcc=5Ffor=5Fbuild=0A-cat >$dummy.c <=0A-# include =0A-#endif=0A-main ()=0A-{=0A-#if defined (sony)=0A-#if defined (MIPS= EB)=0A- /* BFD wants "bsd" instead of "newsos". Perhaps BFD should be cha= nged,=0A- I don't know.... */=0A- printf ("mips-sony-bsd\n"); exit (0= );=0A-#else=0A-#include =0A- printf ("m68k-sony-newsos%s\n",= =0A-#ifdef NEWSOS4=0A- "4"=0A-#else=0A- ""=0A-#endif=0A- = ); exit (0);=0A-#endif=0A-#endif=0A-=0A-#if defined (=5F=5Farm) && defined= (=5F=5Facorn) && defined (=5F=5Funix)=0A- printf ("arm-acorn-riscix\n"); = exit (0);=0A-#endif=0A-=0A-#if defined (hp300) && !defined (hpux)=0A- prin= tf ("m68k-hp-bsd\n"); exit (0);=0A-#endif=0A-=0A-#if defined (NeXT)=0A-#if = !defined (=5F=5FARCHITECTURE=5F=5F)=0A-#define =5F=5FARCHITECTURE=5F=5F "m6= 8k"=0A-#endif=0A- int version;=0A- version=3D`(hostinfo | sed -n 's/.*NeX= T Mach \([0-9]*\).*/\1/p') 2>/dev/null`;=0A- if (version < 4)=0A- print= f ("%s-next-nextstep%d\n", =5F=5FARCHITECTURE=5F=5F, version);=0A- else=0A= - printf ("%s-next-openstep%d\n", =5F=5FARCHITECTURE=5F=5F, version);=0A= - exit (0);=0A-#endif=0A-=0A-#if defined (MULTIMAX) || defined (n16)=0A-#i= f defined (UMAXV)=0A- printf ("ns32k-encore-sysv\n"); exit (0);=0A-#else= =0A-#if defined (CMU)=0A- printf ("ns32k-encore-mach\n"); exit (0);=0A-#el= se=0A- printf ("ns32k-encore-bsd\n"); exit (0);=0A-#endif=0A-#endif=0A-#en= dif=0A-=0A-#if defined (=5F=5F386BSD=5F=5F)=0A- printf ("i386-pc-bsd\n"); = exit (0);=0A-#endif=0A-=0A-#if defined (sequent)=0A-#if defined (i386)=0A- = printf ("i386-sequent-dynix\n"); exit (0);=0A-#endif=0A-#if defined (ns320= 00)=0A- printf ("ns32k-sequent-dynix\n"); exit (0);=0A-#endif=0A-#endif=0A= -=0A-#if defined (=5FSEQUENT=5F)=0A- struct utsname un;=0A-=0A- uname= (&un);=0A-=0A- if (strncmp(un.version, "V2", 2) =3D=3D 0) {=0A- printf (= "i386-sequent-ptx2\n"); exit (0);=0A- }=0A- if (strncmp(un.version, "= V1", 2) =3D=3D 0) { /* XXX is V1 correct? */=0A- printf ("i386-sequent-ptx1= \n"); exit (0);=0A- }=0A- printf ("i386-sequent-ptx\n"); exit (0);=0A= -=0A-#endif=0A-=0A-#if defined (vax)=0A-# if !defined (ultrix)=0A-# includ= e =0A-# if defined (BSD)=0A-# if BSD =3D=3D 43=0A- pri= ntf ("vax-dec-bsd4.3\n"); exit (0);=0A-# else=0A-# if BSD =3D=3D 19900= 6=0A- printf ("vax-dec-bsd4.3reno\n"); exit (0);=0A-# else=0A- = printf ("vax-dec-bsd\n"); exit (0);=0A-# endif=0A-# endif=0A-# else= =0A- printf ("vax-dec-bsd\n"); exit (0);=0A-# endif=0A-# else=0A- pr= intf ("vax-dec-ultrix\n"); exit (0);=0A-# endif=0A-#endif=0A-=0A-#if define= d (alliant) && defined (i860)=0A- printf ("i860-alliant-bsd\n"); exit (0);= =0A-#endif=0A-=0A- exit (1);=0A-}=0A-EOF=0A-=0A-$CC=5FFOR=5FBUILD -o $dumm= y $dummy.c 2>/dev/null && SYSTEM=5FNAME=3D`$dummy` &&=0A- { echo "$SYSTEM= =5FNAME"; exit; }=0A-=0A-# Apollos put the system type in the environment.= =0A-=0A-test -d /usr/apollo && { echo ${ISP}-apollo-${SYSTYPE}; exit; }=0A-= =0A-# Convex versions that predate uname can use getsysinfo(1)=0A-=0A-if [ = -x /usr/convex/getsysinfo ]=0A-then=0A- case `getsysinfo -f cpu=5Ftype` = in=0A- c1*)=0A- echo c1-convex-bsd=0A- exit ;;=0A- c2*)=0A- if getsys= info -f scalar=5Facc=0A- then echo c32-convex-bsd=0A- else echo c2-convex-b= sd=0A- fi=0A- exit ;;=0A- c34*)=0A- echo c34-convex-bsd=0A- exit ;;=0A- = c38*)=0A- echo c38-convex-bsd=0A- exit ;;=0A- c4*)=0A- echo c4-convex= -bsd=0A- exit ;;=0A- esac=0A-fi=0A-=0A-cat >&2 < in o= rder to provide the needed=0A-information to handle your system.=0A-=0A-con= fig.guess timestamp =3D $timestamp=0A-=0A-uname -m =3D `(uname -m) 2>/dev/n= ull || echo unknown`=0A-uname -r =3D `(uname -r) 2>/dev/null || echo unknow= n`=0A-uname -s =3D `(uname -s) 2>/dev/null || echo unknown`=0A-uname -v =3D= `(uname -v) 2>/dev/null || echo unknown`=0A-=0A-/usr/bin/uname -p =3D `(/u= sr/bin/uname -p) 2>/dev/null`=0A-/bin/uname -X =3D `(/bin/uname -X) 2>/= dev/null`=0A-=0A-hostinfo =3D `(hostinfo) 2>/dev/null`=0A-/bi= n/universe =3D `(/bin/universe) 2>/dev/null`=0A-/usr/bin/arch -k = =3D `(/usr/bin/arch -k) 2>/dev/null`=0A-/bin/arch =3D `(/= bin/arch) 2>/dev/null`=0A-/usr/bin/oslevel =3D `(/usr/bin/oslevel) 2>= /dev/null`=0A-/usr/convex/getsysinfo =3D `(/usr/convex/getsysinfo) 2>/dev/n= ull`=0A-=0A-UNAME=5FMACHINE =3D ${UNAME=5FMACHINE}=0A-UNAME=5FRELEASE =3D $= {UNAME=5FRELEASE}=0A-UNAME=5FSYSTEM =3D ${UNAME=5FSYSTEM}=0A-UNAME=5FVERSI= ON =3D ${UNAME=5FVERSION}=0A-EOF=0A-=0A-exit 1=0A-=0A-# Local variables:=0A= -# eval: (add-hook 'write-file-hooks 'time-stamp)=0A-# time-stamp-start: "t= imestamp=3D'"=0A-# time-stamp-format: "%:y-%02m-%02d"=0A-# time-stamp-end: = "'"=0A-# End:=0Adiff --git a/testcases/kernel/fs/ext4-new-features/ffsb-6.0= -rc2/config.h.in b/testcases/kernel/fs/ext4-new-features/ffsb-6.0-rc2/confi= g.h.in=0Adeleted file mode 100644=0Aindex 8e1aa84..0000000=0A--- a/testcase= s/kernel/fs/ext4-new-features/ffsb-6.0-rc2/config.h.in=0A+++ /dev/null=0A@@= -1,130 +0,0 @@=0A-/* config.h.in. Generated from configure.in by autohead= er. */=0A-=0A-/* Define to 1 if you have the header file. */=0A-= #undef HAVE=5FFCNTL=5FH=0A-=0A-/* Define to 1 if you have the `fseeko64' fu= nction. */=0A-#undef HAVE=5FFSEEKO64=0A-=0A-/* Define to 1 if you have the = `gettimeofday' function. */=0A-#undef HAVE=5FGETTIMEOFDAY=0A-=0A-/* Define = to 1 if you have the header file. */=0A-#undef HAVE=5FINTTYPES= =5FH=0A-=0A-/* Define to 1 if you have the `m' library (-lm). */=0A-#undef = HAVE=5FLIBM=0A-=0A-/* Define to 1 if you have the `pthread' library (-lpthr= ead). */=0A-#undef HAVE=5FLIBPTHREAD=0A-=0A-/* Define to 1 if you have the = header file. */=0A-#undef HAVE=5FLIMITS=5FH=0A-=0A-/* Define to = 1 if you have the `lrand48=5Fr' function. */=0A-#undef HAVE=5FLRAND48=5FR= =0A-=0A-/* Define to 1 if you have the header file. */=0A-#undef= HAVE=5FMEMORY=5FH=0A-=0A-/* Define to 1 if you have the `mkdir' function. = */=0A-#undef HAVE=5FMKDIR=0A-=0A-/* Define to 1 if you have the `open64' fu= nction. */=0A-#undef HAVE=5FOPEN64=0A-=0A-/* Define to 1 if you have the header file. */=0A-#undef HAVE=5FPTHREAD=5FH=0A-=0A-/* Define to = 1 if you have the `srand48=5Fr' function. */=0A-#undef HAVE=5FSRAND48=5FR= =0A-=0A-/* Define to 1 if you have the `stat64' function. */=0A-#undef HAVE= =5FSTAT64=0A-=0A-/* Define to 1 if you have the header file. */= =0A-#undef HAVE=5FSTDINT=5FH=0A-=0A-/* Define to 1 if you have the header file. */=0A-#undef HAVE=5FSTDLIB=5FH=0A-=0A-/* Define to 1 if you= have the `strerror' function. */=0A-#undef HAVE=5FSTRERROR=0A-=0A-/* Defin= e to 1 if you have the header file. */=0A-#undef HAVE=5FSTRINGS= =5FH=0A-=0A-/* Define to 1 if you have the header file. */=0A-#u= ndef HAVE=5FSTRING=5FH=0A-=0A-/* Define to 1 if you have the `system' funct= ion. */=0A-#undef HAVE=5FSYSTEM=0A-=0A-/* Define to 1 if you have the header file. */=0A-#undef HAVE=5FSYS=5FLIMITS=5FH=0A-=0A-/* Defin= e to 1 if you have the header file. */=0A-#undef HAVE=5FSYS=5F= STAT=5FH=0A-=0A-/* Define to 1 if you have the header file. */= =0A-#undef HAVE=5FSYS=5FTIME=5FH=0A-=0A-/* Define to 1 if you have the header file. */=0A-#undef HAVE=5FSYS=5FTYPES=5FH=0A-=0A-/* Define= to 1 if you have the header file. */=0A-#undef HAVE=5FSYS=5FVF= S=5FH=0A-=0A-/* Define to 1 if you have that is POSIX.1 compat= ible. */=0A-#undef HAVE=5FSYS=5FWAIT=5FH=0A-=0A-/* Define to 1 if you have = the header file. */=0A-#undef HAVE=5FUNISTD=5FH=0A-=0A-/* Name o= f package */=0A-#undef PACKAGE=0A-=0A-/* Define to the address where bug re= ports for this package should be sent. */=0A-#undef PACKAGE=5FBUGREPORT=0A-= =0A-/* Define to the full name of this package. */=0A-#undef PACKAGE=5FNAME= =0A-=0A-/* Define to the full name and version of this package. */=0A-#unde= f PACKAGE=5FSTRING=0A-=0A-/* Define to the one symbol short name of this pa= ckage. */=0A-#undef PACKAGE=5FTARNAME=0A-=0A-/* Define to the version of th= is package. */=0A-#undef PACKAGE=5FVERSION=0A-=0A-/* Define to 1 if the C c= ompiler supports function prototypes. */=0A-#undef PROTOTYPES=0A-=0A-/* Def= ine to 1 if the `setvbuf' function takes the buffering type as its=0A- se= cond argument and the buffer pointer as the third, as on System V before=0A= - release 3. */=0A-#undef SETVBUF=5FREVERSED=0A-=0A-/* Define to 1 if you= have the ANSI C header files. */=0A-#undef STDC=5FHEADERS=0A-=0A-/* Define= to 1 if you can safely include both and . */=0A-#unde= f TIME=5FWITH=5FSYS=5FTIME=0A-=0A-/* Version number of package */=0A-#undef= VERSION=0A-=0A-/* Define to 1 if on AIX 3.=0A- System headers sometimes = define this.=0A- We just want to avoid a redefinition error message. */= =0A-#ifndef =5FALL=5FSOURCE=0A-# undef =5FALL=5FSOURCE=0A-#endif=0A-=0A-/* = Define like PROTOTYPES; this can be used by system headers. */=0A-#undef = =5F=5FPROTOTYPES=0A-=0A-/* Define to empty if `const' does not conform to A= NSI C. */=0A-#undef const=0Adiff --git a/testcases/kernel/fs/ext4-new-featu= res/ffsb-6.0-rc2/config.sub b/testcases/kernel/fs/ext4-new-features/ffsb-6.= 0-rc2/config.sub=0Adeleted file mode 100755=0Aindex 3243784..0000000=0A--- = a/testcases/kernel/fs/ext4-new-features/ffsb-6.0-rc2/config.sub=0A+++ /dev/= null=0A@@ -1,1717 +0,0 @@=0A-#! /bin/sh=0A-# Configuration validation subro= utine script.=0A-# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998= , 1999,=0A-# 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009= =0A-# Free Software Foundation, Inc.=0A-=0A-timestamp=3D'2009-08-19'=0A-= =0A-# This file is (in principle) common to ALL GNU software.=0A-# The pres= ence of a machine in this file suggests that SOME GNU software=0A-# can han= dle that machine. It does not imply ALL GNU software can.=0A-#=0A-# This f= ile is free software; you can redistribute it and/or modify=0A-# it under t= he terms of the GNU General Public License as published by=0A-# the Free So= ftware Foundation; either version 2 of the License, or=0A-# (at your option= ) any later version.=0A-#=0A-# This program is distributed in the hope that= it will be useful,=0A-# but WITHOUT ANY WARRANTY; without even the implied= warranty of=0A-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See= the=0A-# GNU General Public License for more details.=0A-#=0A-# You should= have received a copy of the GNU General Public License=0A-# along with thi= s program; if not, write to the Free Software=0A-# Foundation, Inc., 51 Fra= nklin Street - Fifth Floor, Boston, MA=0A-# 02110-1301, USA.=0A-#=0A-# As a= special exception to the GNU General Public License, if you=0A-# distribut= e this file as part of a program that contains a=0A-# configuration script = generated by Autoconf, you may include it under=0A-# the same distribution = terms that you use for the rest of that program.=0A-=0A-=0A-# Please send p= atches to . Submit a context=0A-# diff and a prope= rly formatted GNU ChangeLog entry.=0A-#=0A-# Configuration subroutine to va= lidate and canonicalize a configuration type.=0A-# Supply the specified con= figuration type as an argument.=0A-# If it is invalid, we print an error me= ssage on stderr and exit with code 1.=0A-# Otherwise, we print the canonica= l config type on stdout and succeed.=0A-=0A-# You can get the latest versio= n of this script from:=0A-# http://git.savannah.gnu.org/gitweb/?p=3Dconfig.= git;a=3Dblob=5Fplain;f=3Dconfig.sub;hb=3DHEAD=0A-=0A-# This file is suppose= d to be the same for all GNU packages=0A-# and recognize all the CPU types,= system types and aliases=0A-# that are meaningful with *any* GNU software.= =0A-# Each package is responsible for reporting which valid configurations= =0A-# it does not support. The user should be able to distinguish=0A-# a f= ailure to support a valid configuration from a meaningless=0A-# configurati= on.=0A-=0A-# The goal of this file is to map all the various variations of = a given=0A-# machine specification into a single specification in the form:= =0A-# CPU=5FTYPE-MANUFACTURER-OPERATING=5FSYSTEM=0A-# or in some cases, the= newer four-part form:=0A-# CPU=5FTYPE-MANUFACTURER-KERNEL-OPERATING=5FSYST= EM=0A-# It is wrong to echo any other type of specification.=0A-=0A-me=3D`e= cho "$0" | sed -e 's,.*/,,'`=0A-=0A-usage=3D"\=0A-Usage: $0 [OPTION] CPU-MF= R-OPSYS=0A- $0 [OPTION] ALIAS=0A-=0A-Canonicalize a configuration nam= e.=0A-=0A-Operation modes:=0A- -h, --help print this help, then ex= it=0A- -t, --time-stamp print date of last modification, then exit=0A- = -v, --version print version number, then exit=0A-=0A-Report bugs and p= atches to ."=0A-=0A-version=3D"\=0A-GNU config.sub = ($timestamp)=0A-=0A-Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998,= 1999, 2000, 2001,=0A-2002, 2003, 2004, 2005, 2006, 2007, 2008 Free Softwar= e Foundation, Inc.=0A-=0A-This is free software; see the source for copying= conditions. There is NO=0A-warranty; not even for MERCHANTABILITY or FITN= ESS FOR A PARTICULAR PURPOSE."=0A-=0A-help=3D"=0A-Try \`$me --help' for mor= e information."=0A-=0A-# Parse command line=0A-while test $# -gt 0 ; do=0A-= case $1 in=0A- --time-stamp | --time* | -t )=0A- echo "$timestam= p" ; exit ;;=0A- --version | -v )=0A- echo "$version" ; exit ;;=0A= - --help | --h* | -h )=0A- echo "$usage"; exit ;;=0A- -- ) = # Stop option processing=0A- shift; break ;;=0A- - ) # Use stdin a= s input.=0A- break ;;=0A- -* )=0A- echo "$me: invalid option= $1$help"=0A- exit 1 ;;=0A-=0A- *local*)=0A- # First pass th= rough any local machine types.=0A- echo $1=0A- exit ;;=0A-=0A- = * )=0A- break ;;=0A- esac=0A-done=0A-=0A-case $# in=0A- 0) echo "= $me: missing argument$help" >&2=0A- exit 1;;=0A- 1) ;;=0A- *) echo "$me:= too many arguments$help" >&2=0A- exit 1;;=0A-esac=0A-=0A-# Separate wha= t the user gave into CPU-COMPANY and OS or KERNEL-OS (if any).=0A-# Here we= must recognize all the valid KERNEL-OS combinations.=0A-maybe=5Fos=3D`echo= $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'`=0A-case $maybe=5Fos in=0A- nto= -qnx* | linux-gnu* | linux-dietlibc | linux-newlib* | linux-uclibc* | \=0A-= uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*= -gnu* | \=0A- kopensolaris*-gnu* | \=0A- storm-chaos* | os2-emx* | rtmk-n= ova*)=0A- os=3D-$maybe=5Fos=0A- basic=5Fmachine=3D`echo $1 | sed 's/^= \(.*\)-\([^-]*-[^-]*\)$/\1/'`=0A- ;;=0A- *)=0A- basic=5Fmachine=3D`e= cho $1 | sed 's/-[^-]*$//'`=0A- if [ $basic=5Fmachine !=3D $1 ]=0A- t= hen os=3D`echo $1 | sed 's/.*-/-/'`=0A- else os=3D; fi=0A- ;;=0A-esac= =0A-=0A-### Let's recognize common machines as not being operating systems = so=0A-### that things like config.sub decstation-3100 work. We also=0A-###= recognize some manufacturers as not being operating systems, so we=0A-### = can provide default operating systems below.=0A-case $os in=0A- -sun*os*)= =0A- # Prevent following clause from handling this invalid input.=0A- ;;= =0A- -dec* | -mips* | -sequent* | -encore* | -pc532* | -sgi* | -sony* | \= =0A- -att* | -7300* | -3300* | -delta* | -motorola* | -sun[234]* | \=0A- -u= nicom* | -ibm* | -next | -hp | -isi* | -apollo | -altos* | \=0A- -convergen= t* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\=0A- -c[123]* | -= convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \=0A- -harris | -= dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \=0A- -apple | -ax= is | -knuth | -cray | -microblaze)=0A- os=3D=0A- basic=5Fmachine=3D$1=0A-= ;;=0A- -bluegene*)=0A- os=3D-cnk=0A- ;;=0A- -sim | -cisco= | -oki | -wec | -winbond)=0A- os=3D=0A- basic=5Fmachine=3D$1=0A- ;;=0A-= -scout)=0A- ;;=0A- -wrs)=0A- os=3D-vxworks=0A- basic=5Fmachine=3D$1=0A-= ;;=0A- -chorusos*)=0A- os=3D-chorusos=0A- basic=5Fmachine=3D$1=0A- ;;= =0A- -chorusrdb)=0A- os=3D-chorusrdb=0A- basic=5Fmachine=3D$1=0A- ;;= =0A- -hiux*)=0A- os=3D-hiuxwe2=0A- ;;=0A- -sco6)=0A- os=3D-sco5v6=0A- b= asic=5Fmachine=3D`echo $1 | sed -e 's/86-.*/86-pc/'`=0A- ;;=0A- -sco5)=0A-= os=3D-sco3.2v5=0A- basic=5Fmachine=3D`echo $1 | sed -e 's/86-.*/86-pc/'`= =0A- ;;=0A- -sco4)=0A- os=3D-sco3.2v4=0A- basic=5Fmachine=3D`echo $1 | s= ed -e 's/86-.*/86-pc/'`=0A- ;;=0A- -sco3.2.[4-9]*)=0A- os=3D`echo $os | s= ed -e 's/sco3.2./sco3.2v/'`=0A- basic=5Fmachine=3D`echo $1 | sed -e 's/86-= .*/86-pc/'`=0A- ;;=0A- -sco3.2v[4-9]*)=0A- # Don't forget version if it i= s 3.2v4 or newer.=0A- basic=5Fmachine=3D`echo $1 | sed -e 's/86-.*/86-pc/'= `=0A- ;;=0A- -sco5v6*)=0A- # Don't forget version if it is 3.2v4 or newer= .=0A- basic=5Fmachine=3D`echo $1 | sed -e 's/86-.*/86-pc/'`=0A- ;;=0A- -s= co*)=0A- os=3D-sco3.2v2=0A- basic=5Fmachine=3D`echo $1 | sed -e 's/86-.*/= 86-pc/'`=0A- ;;=0A- -udk*)=0A- basic=5Fmachine=3D`echo $1 | sed -e 's/86-= .*/86-pc/'`=0A- ;;=0A- -isc)=0A- os=3D-isc2.2=0A- basic=5Fmachine=3D`ech= o $1 | sed -e 's/86-.*/86-pc/'`=0A- ;;=0A- -clix*)=0A- basic=5Fmachine=3D= clipper-intergraph=0A- ;;=0A- -isc*)=0A- basic=5Fmachine=3D`echo $1 | sed= -e 's/86-.*/86-pc/'`=0A- ;;=0A- -lynx*)=0A- os=3D-lynxos=0A- ;;=0A- -pt= x*)=0A- basic=5Fmachine=3D`echo $1 | sed -e 's/86-.*/86-sequent/'`=0A- ;;= =0A- -windowsnt*)=0A- os=3D`echo $os | sed -e 's/windowsnt/winnt/'`=0A- ;= ;=0A- -psos*)=0A- os=3D-psos=0A- ;;=0A- -mint | -mint[0-9]*)=0A- basic= =5Fmachine=3Dm68k-atari=0A- os=3D-mint=0A- ;;=0A-esac=0A-=0A-# Decode ali= ases for certain CPU-COMPANY combinations.=0A-case $basic=5Fmachine in=0A- = # Recognize the basic CPU types without company name.=0A- # Some are omitte= d here because they have special meanings below.=0A- 1750a | 580 \=0A- | a2= 9k \=0A- | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] = \=0A- | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pc= a5[67] \=0A- | am33=5F2.0 \=0A- | arc | arm | arm[bl]e | arme[lb] | armv[23= 45] | armv[345][lb] | avr | avr32 \=0A- | bfin \=0A- | c4x | clipper \=0A- = | d10v | d30v | dlx | dsp16xx | dvp \=0A- | fido | fr30 | frv \=0A- | h8300= | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \=0A- | i370 = | i860 | i960 | ia64 \=0A- | ip2k | iq2000 \=0A- | lm32 \=0A- | m32c | m32r= | m32rle | m68000 | m68k | m88k \=0A- | maxq | mb | microblaze | mcore | m= ep | metag \=0A- | mips | mipsbe | mipseb | mipsel | mipsle \=0A- | mips16 = \=0A- | mips64 | mips64el \=0A- | mips64octeon | mips64octeonel \=0A- | mip= s64orion | mips64orionel \=0A- | mips64r5900 | mips64r5900el \=0A- | mips64= vr | mips64vrel \=0A- | mips64vr4100 | mips64vr4100el \=0A- | mips64vr4300 = | mips64vr4300el \=0A- | mips64vr5000 | mips64vr5000el \=0A- | mips64vr5900= | mips64vr5900el \=0A- | mipsisa32 | mipsisa32el \=0A- | mipsisa32r2 | mip= sisa32r2el \=0A- | mipsisa64 | mipsisa64el \=0A- | mipsisa64r2 | mipsisa64r= 2el \=0A- | mipsisa64sb1 | mipsisa64sb1el \=0A- | mipsisa64sr71k | mipsisa6= 4sr71kel \=0A- | mipstx39 | mipstx39el \=0A- | mn10200 | mn10300 \=0A- | mo= xie \=0A- | mt \=0A- | msp430 \=0A- | nios | nios2 \=0A- | ns16k | ns32k \= =0A- | or32 \=0A- | pdp10 | pdp11 | pj | pjl \=0A- | powerpc | powerpc64 | = powerpc64le | powerpcle | ppcbe \=0A- | pyramid \=0A- | score \=0A- | sh | = sh[1234] | sh[24]a | sh[24]aeb | sh[23]e | sh[34]eb | sheb | shbe | shle | = sh[1234]le | sh3ele \=0A- | sh64 | sh64le \=0A- | sparc | sparc64 | sparc64= b | sparc64v | sparc86x | sparclet | sparclite \=0A- | sparcv8 | sparcv9 | = sparcv9b | sparcv9v \=0A- | spu | strongarm \=0A- | tahoe | thumb | tic4x |= tic80 | tron \=0A- | v850 | v850e \=0A- | we32k \=0A- | x86 | xc16x | xsca= le | xscalee[bl] | xstormy16 | xtensa \=0A- | z8k | z80)=0A- basic=5Fmachi= ne=3D$basic=5Fmachine-unknown=0A- ;;=0A- m6811 | m68hc11 | m6812 | m68hc12= )=0A- # Motorola 68HC11/12.=0A- basic=5Fmachine=3D$basic=5Fmachine-unknow= n=0A- os=3D-none=0A- ;;=0A- m88110 | m680[12346]0 | m683?2 | m68360 | m52= 00 | v70 | w65 | z8k)=0A- ;;=0A- ms1)=0A- basic=5Fmachine=3Dmt-unknown=0A= - ;;=0A-=0A- # We use `pc' rather than `unknown'=0A- # because (1) that's = what they normally are, and=0A- # (2) the word "unknown" tends to confuse b= eginning users.=0A- i*86 | x86=5F64)=0A- basic=5Fmachine=3D$basic=5Fmachi= ne-pc=0A- ;;=0A- # Object if more than one company name word.=0A- *-*-*)= =0A- echo Invalid configuration \`$1\': machine \`$basic=5Fmachine\' not r= ecognized 1>&2=0A- exit 1=0A- ;;=0A- # Recognize the basic CPU types with= company name.=0A- 580-* \=0A- | a29k-* \=0A- | alpha-* | alphaev[4-8]-* | = alphaev56-* | alphaev6[78]-* \=0A- | alpha64-* | alpha64ev[4-8]-* | alpha64= ev56-* | alpha64ev6[78]-* \=0A- | alphapca5[67]-* | alpha64pca5[67]-* | arc= -* \=0A- | arm-* | armbe-* | armle-* | armeb-* | armv*-* \=0A- | avr-* | a= vr32-* \=0A- | bfin-* | bs2000-* \=0A- | c[123]* | c30-* | [cjt]90-* | c4x-= * | c54x-* | c55x-* | c6x-* \=0A- | clipper-* | craynv-* | cydra-* \=0A- | = d10v-* | d30v-* | dlx-* \=0A- | elxsi-* \=0A- | f30[01]-* | f700-* | fido-*= | fr30-* | frv-* | fx80-* \=0A- | h8300-* | h8500-* \=0A- | hppa-* | hppa1= .[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \=0A- | i*86-* | i860-* | i9= 60-* | ia64-* \=0A- | ip2k-* | iq2000-* \=0A- | lm32-* \=0A- | m32c-* | m32= r-* | m32rle-* \=0A- | m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m= 68k-* \=0A- | m88110-* | m88k-* | maxq-* | mcore-* | metag-* | microblaze-*= \=0A- | mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \=0A- | mips16-= * \=0A- | mips64-* | mips64el-* \=0A- | mips64octeon-* | mips64octeonel-* \= =0A- | mips64orion-* | mips64orionel-* \=0A- | mips64r5900-* | mips64r5900e= l-* \=0A- | mips64vr-* | mips64vrel-* \=0A- | mips64vr4100-* | mips64vr4100= el-* \=0A- | mips64vr4300-* | mips64vr4300el-* \=0A- | mips64vr5000-* | mip= s64vr5000el-* \=0A- | mips64vr5900-* | mips64vr5900el-* \=0A- | mipsisa32-*= | mipsisa32el-* \=0A- | mipsisa32r2-* | mipsisa32r2el-* \=0A- | mipsisa64-= * | mipsisa64el-* \=0A- | mipsisa64r2-* | mipsisa64r2el-* \=0A- | mipsisa64= sb1-* | mipsisa64sb1el-* \=0A- | mipsisa64sr71k-* | mipsisa64sr71kel-* \=0A= - | mipstx39-* | mipstx39el-* \=0A- | mmix-* \=0A- | mt-* \=0A- | msp430-* = \=0A- | nios-* | nios2-* \=0A- | none-* | np1-* | ns16k-* | ns32k-* \=0A- |= orion-* \=0A- | pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \=0A- | = powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* | ppcbe-* \=0A- | pyr= amid-* \=0A- | romp-* | rs6000-* \=0A- | sh-* | sh[1234]-* | sh[24]a-* | sh= [24]aeb-* | sh[23]e-* | sh[34]eb-* | sheb-* | shbe-* \=0A- | shle-* | sh[12= 34]le-* | sh3ele-* | sh64-* | sh64le-* \=0A- | sparc-* | sparc64-* | sparc6= 4b-* | sparc64v-* | sparc86x-* | sparclet-* \=0A- | sparclite-* \=0A- | spa= rcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | strongarm-* | sv1-* | sx?-* = \=0A- | tahoe-* | thumb-* \=0A- | tic30-* | tic4x-* | tic54x-* | tic55x-* |= tic6x-* | tic80-* | tile-* \=0A- | tron-* \=0A- | v850-* | v850e-* | vax-*= \=0A- | we32k-* \=0A- | x86-* | x86=5F64-* | xc16x-* | xps100-* | xscale-*= | xscalee[bl]-* \=0A- | xstormy16-* | xtensa*-* \=0A- | ymp-* \=0A- | z8k-= * | z80-*)=0A- ;;=0A- # Recognize the basic CPU types without company name= , with glob match.=0A- xtensa*)=0A- basic=5Fmachine=3D$basic=5Fmachine-unk= nown=0A- ;;=0A- # Recognize the various machine names and aliases which st= and=0A- # for a CPU type and a company and sometimes even an OS.=0A- 386bsd= )=0A- basic=5Fmachine=3Di386-unknown=0A- os=3D-bsd=0A- ;;=0A- 3b1 | 7300= | 7300-att | att-7300 | pc7300 | safari | unixpc)=0A- basic=5Fmachine=3Dm= 68000-att=0A- ;;=0A- 3b*)=0A- basic=5Fmachine=3Dwe32k-att=0A- ;;=0A- a29= khif)=0A- basic=5Fmachine=3Da29k-amd=0A- os=3D-udi=0A- ;;=0A- abacus= )=0A- basic=5Fmachine=3Dabacus-unknown=0A- ;;=0A- adobe68k)=0A- basic=5F= machine=3Dm68010-adobe=0A- os=3D-scout=0A- ;;=0A- alliant | fx80)=0A- ba= sic=5Fmachine=3Dfx80-alliant=0A- ;;=0A- altos | altos3068)=0A- basic=5Fma= chine=3Dm68k-altos=0A- ;;=0A- am29k)=0A- basic=5Fmachine=3Da29k-none=0A- = os=3D-bsd=0A- ;;=0A- amd64)=0A- basic=5Fmachine=3Dx86=5F64-pc=0A- ;;=0A= - amd64-*)=0A- basic=5Fmachine=3Dx86=5F64-`echo $basic=5Fmachine | sed 's/= ^[^-]*-//'`=0A- ;;=0A- amdahl)=0A- basic=5Fmachine=3D580-amdahl=0A- os= =3D-sysv=0A- ;;=0A- amiga | amiga-*)=0A- basic=5Fmachine=3Dm68k-unknown= =0A- ;;=0A- amigaos | amigados)=0A- basic=5Fmachine=3Dm68k-unknown=0A- o= s=3D-amigaos=0A- ;;=0A- amigaunix | amix)=0A- basic=5Fmachine=3Dm68k-unkn= own=0A- os=3D-sysv4=0A- ;;=0A- apollo68)=0A- basic=5Fmachine=3Dm68k-apol= lo=0A- os=3D-sysv=0A- ;;=0A- apollo68bsd)=0A- basic=5Fmachine=3Dm68k-apo= llo=0A- os=3D-bsd=0A- ;;=0A- aros)=0A- basic=5Fmachine=3Di386-pc=0A- os= =3D-aros=0A- ;;=0A- aux)=0A- basic=5Fmachine=3Dm68k-apple=0A- os=3D-aux= =0A- ;;=0A- balance)=0A- basic=5Fmachine=3Dns32k-sequent=0A- os=3D-dynix= =0A- ;;=0A- blackfin)=0A- basic=5Fmachine=3Dbfin-unknown=0A- os=3D-linux= =0A- ;;=0A- blackfin-*)=0A- basic=5Fmachine=3Dbfin-`echo $basic=5Fmachine= | sed 's/^[^-]*-//'`=0A- os=3D-linux=0A- ;;=0A- bluegene*)=0A- basic=5F= machine=3Dpowerpc-ibm=0A- os=3D-cnk=0A- ;;=0A- c90)=0A- basic=5Fmachine= =3Dc90-cray=0A- os=3D-unicos=0A- ;;=0A- cegcc)=0A- basic=5Fmachin= e=3Darm-unknown=0A- os=3D-cegcc=0A- ;;=0A- convex-c1)=0A- basic=5Fmachin= e=3Dc1-convex=0A- os=3D-bsd=0A- ;;=0A- convex-c2)=0A- basic=5Fmachine=3D= c2-convex=0A- os=3D-bsd=0A- ;;=0A- convex-c32)=0A- basic=5Fmachine=3Dc32= -convex=0A- os=3D-bsd=0A- ;;=0A- convex-c34)=0A- basic=5Fmachine=3Dc34-c= onvex=0A- os=3D-bsd=0A- ;;=0A- convex-c38)=0A- basic=5Fmachine=3Dc38-con= vex=0A- os=3D-bsd=0A- ;;=0A- cray | j90)=0A- basic=5Fmachine=3Dj90-cray= =0A- os=3D-unicos=0A- ;;=0A- craynv)=0A- basic=5Fmachine=3Dcraynv-cray= =0A- os=3D-unicosmp=0A- ;;=0A- cr16)=0A- basic=5Fmachine=3Dcr16-unknown= =0A- os=3D-elf=0A- ;;=0A- crds | unos)=0A- basic=5Fmachine=3Dm68k-crds= =0A- ;;=0A- crisv32 | crisv32-* | etraxfs*)=0A- basic=5Fmachine=3Dcrisv32= -axis=0A- ;;=0A- cris | cris-* | etrax*)=0A- basic=5Fmachine=3Dcris-axis= =0A- ;;=0A- crx)=0A- basic=5Fmachine=3Dcrx-unknown=0A- os=3D-elf=0A- ;;= =0A- da30 | da30-*)=0A- basic=5Fmachine=3Dm68k-da30=0A- ;;=0A- decstation= | decstation-3100 | pmax | pmax-* | pmin | dec3100 | decstatn)=0A- basic= =5Fmachine=3Dmips-dec=0A- ;;=0A- decsystem10* | dec10*)=0A- basic=5Fmachi= ne=3Dpdp10-dec=0A- os=3D-tops10=0A- ;;=0A- decsystem20* | dec20*)=0A- ba= sic=5Fmachine=3Dpdp10-dec=0A- os=3D-tops20=0A- ;;=0A- delta | 3300 | moto= rola-3300 | motorola-delta \=0A- | 3300-motorola | delta-motorola)=0A= - basic=5Fmachine=3Dm68k-motorola=0A- ;;=0A- delta88)=0A- basic=5Fmachin= e=3Dm88k-motorola=0A- os=3D-sysv3=0A- ;;=0A- dicos)=0A- basic=5Fmachine= =3Di686-pc=0A- os=3D-dicos=0A- ;;=0A- djgpp)=0A- basic=5Fmachine=3Di586-= pc=0A- os=3D-msdosdjgpp=0A- ;;=0A- dpx20 | dpx20-*)=0A- basic=5Fmachine= =3Drs6000-bull=0A- os=3D-bosx=0A- ;;=0A- dpx2* | dpx2*-bull)=0A- basic= =5Fmachine=3Dm68k-bull=0A- os=3D-sysv3=0A- ;;=0A- ebmon29k)=0A- basic=5F= machine=3Da29k-amd=0A- os=3D-ebmon=0A- ;;=0A- elxsi)=0A- basic=5Fmachine= =3Delxsi-elxsi=0A- os=3D-bsd=0A- ;;=0A- encore | umax | mmax)=0A- basic= =5Fmachine=3Dns32k-encore=0A- ;;=0A- es1800 | OSE68k | ose68k | ose | OSE)= =0A- basic=5Fmachine=3Dm68k-ericsson=0A- os=3D-ose=0A- ;;=0A- fx2800)=0A= - basic=5Fmachine=3Di860-alliant=0A- ;;=0A- genix)=0A- basic=5Fmachine= =3Dns32k-ns=0A- ;;=0A- gmicro)=0A- basic=5Fmachine=3Dtron-gmicro=0A- os= =3D-sysv=0A- ;;=0A- go32)=0A- basic=5Fmachine=3Di386-pc=0A- os=3D-go32= =0A- ;;=0A- h3050r* | hiux*)=0A- basic=5Fmachine=3Dhppa1.1-hitachi=0A- o= s=3D-hiuxwe2=0A- ;;=0A- h8300hms)=0A- basic=5Fmachine=3Dh8300-hitachi=0A-= os=3D-hms=0A- ;;=0A- h8300xray)=0A- basic=5Fmachine=3Dh8300-hitachi=0A-= os=3D-xray=0A- ;;=0A- h8500hms)=0A- basic=5Fmachine=3Dh8500-hitachi=0A-= os=3D-hms=0A- ;;=0A- harris)=0A- basic=5Fmachine=3Dm88k-harris=0A- os= =3D-sysv3=0A- ;;=0A- hp300-*)=0A- basic=5Fmachine=3Dm68k-hp=0A- ;;=0A- h= p300bsd)=0A- basic=5Fmachine=3Dm68k-hp=0A- os=3D-bsd=0A- ;;=0A- hp300hpu= x)=0A- basic=5Fmachine=3Dm68k-hp=0A- os=3D-hpux=0A- ;;=0A- hp3k9[0-9][0-= 9] | hp9[0-9][0-9])=0A- basic=5Fmachine=3Dhppa1.0-hp=0A- ;;=0A- hp9k2[0-9= ][0-9] | hp9k31[0-9])=0A- basic=5Fmachine=3Dm68000-hp=0A- ;;=0A- hp9k3[2-= 9][0-9])=0A- basic=5Fmachine=3Dm68k-hp=0A- ;;=0A- hp9k6[0-9][0-9] | hp6[0= -9][0-9])=0A- basic=5Fmachine=3Dhppa1.0-hp=0A- ;;=0A- hp9k7[0-79][0-9] | = hp7[0-79][0-9])=0A- basic=5Fmachine=3Dhppa1.1-hp=0A- ;;=0A- hp9k78[0-9] |= hp78[0-9])=0A- # FIXME: really hppa2.0-hp=0A- basic=5Fmachine=3Dhppa1.1-= hp=0A- ;;=0A- hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 |= hp8[78]9 | hp9k893 | hp893)=0A- # FIXME: really hppa2.0-hp=0A- basic=5Fm= achine=3Dhppa1.1-hp=0A- ;;=0A- hp9k8[0-9][13679] | hp8[0-9][13679])=0A- b= asic=5Fmachine=3Dhppa1.1-hp=0A- ;;=0A- hp9k8[0-9][0-9] | hp8[0-9][0-9])=0A= - basic=5Fmachine=3Dhppa1.0-hp=0A- ;;=0A- hppa-next)=0A- os=3D-nextstep3= =0A- ;;=0A- hppaosf)=0A- basic=5Fmachine=3Dhppa1.1-hp=0A- os=3D-osf=0A- = ;;=0A- hppro)=0A- basic=5Fmachine=3Dhppa1.1-hp=0A- os=3D-proelf=0A- ;;= =0A- i370-ibm* | ibm*)=0A- basic=5Fmachine=3Di370-ibm=0A- ;;=0A-# I'm not= sure what "Sysv32" means. Should this be sysv3.2?=0A- i*86v32)=0A- basic= =5Fmachine=3D`echo $1 | sed -e 's/86.*/86-pc/'`=0A- os=3D-sysv32=0A- ;;= =0A- i*86v4*)=0A- basic=5Fmachine=3D`echo $1 | sed -e 's/86.*/86-pc/'`=0A-= os=3D-sysv4=0A- ;;=0A- i*86v)=0A- basic=5Fmachine=3D`echo $1 | sed -e '= s/86.*/86-pc/'`=0A- os=3D-sysv=0A- ;;=0A- i*86sol2)=0A- basic=5Fmachine= =3D`echo $1 | sed -e 's/86.*/86-pc/'`=0A- os=3D-solaris2=0A- ;;=0A- i386m= ach)=0A- basic=5Fmachine=3Di386-mach=0A- os=3D-mach=0A- ;;=0A- i386-vsta= | vsta)=0A- basic=5Fmachine=3Di386-unknown=0A- os=3D-vsta=0A- ;;=0A- ir= is | iris4d)=0A- basic=5Fmachine=3Dmips-sgi=0A- case $os in=0A- -iri= x*)=0A- ;;=0A- *)=0A- os=3D-irix4=0A- ;;=0A- esac=0A- ;;=0A- i= si68 | isi)=0A- basic=5Fmachine=3Dm68k-isi=0A- os=3D-sysv=0A- ;;=0A- m68= knommu)=0A- basic=5Fmachine=3Dm68k-unknown=0A- os=3D-linux=0A- ;;=0A- m6= 8knommu-*)=0A- basic=5Fmachine=3Dm68k-`echo $basic=5Fmachine | sed 's/^[^-= ]*-//'`=0A- os=3D-linux=0A- ;;=0A- m88k-omron*)=0A- basic=5Fmachine=3Dm8= 8k-omron=0A- ;;=0A- magnum | m3230)=0A- basic=5Fmachine=3Dmips-mips=0A- = os=3D-sysv=0A- ;;=0A- merlin)=0A- basic=5Fmachine=3Dns32k-utek=0A- os=3D= -sysv=0A- ;;=0A- microblaze)=0A- basic=5Fmachine=3Dmicroblaze-xili= nx=0A- ;;=0A- mingw32)=0A- basic=5Fmachine=3Di386-pc=0A- os=3D-mingw32= =0A- ;;=0A- mingw32ce)=0A- basic=5Fmachine=3Darm-unknown=0A- os=3D-mingw= 32ce=0A- ;;=0A- miniframe)=0A- basic=5Fmachine=3Dm68000-convergent=0A- ;= ;=0A- *mint | -mint[0-9]* | *MiNT | *MiNT[0-9]*)=0A- basic=5Fmachine=3Dm68= k-atari=0A- os=3D-mint=0A- ;;=0A- mipsEE* | ee | ps2)=0A- basic=5Fmachin= e=3Dmips64r5900el-scei=0A- case $os in=0A- -linux*)=0A- ;;=0A- = *)=0A- os=3D-elf=0A- ;;=0A- esac=0A- ;;=0A- iop)=0A- basic=5Fmachin= e=3Dmipsel-scei=0A- os=3D-irx=0A- ;;=0A- dvp)=0A- basic=5Fmachine=3Ddvp-= scei=0A- os=3D-elf=0A- ;;=0A- mips3*-*)=0A- basic=5Fmachine=3D`echo $bas= ic=5Fmachine | sed -e 's/mips3/mips64/'`=0A- ;;=0A- mips3*)=0A- basic=5Fm= achine=3D`echo $basic=5Fmachine | sed -e 's/mips3/mips64/'`-unknown=0A- ;;= =0A- monitor)=0A- basic=5Fmachine=3Dm68k-rom68k=0A- os=3D-coff=0A- ;;=0A= - morphos)=0A- basic=5Fmachine=3Dpowerpc-unknown=0A- os=3D-morphos=0A- ;= ;=0A- msdos)=0A- basic=5Fmachine=3Di386-pc=0A- os=3D-msdos=0A- ;;=0A- ms= 1-*)=0A- basic=5Fmachine=3D`echo $basic=5Fmachine | sed -e 's/ms1-/mt-/'`= =0A- ;;=0A- mvs)=0A- basic=5Fmachine=3Di370-ibm=0A- os=3D-mvs=0A- ;;=0A= - ncr3000)=0A- basic=5Fmachine=3Di486-ncr=0A- os=3D-sysv4=0A- ;;=0A- net= bsd386)=0A- basic=5Fmachine=3Di386-unknown=0A- os=3D-netbsd=0A- ;;=0A- n= etwinder)=0A- basic=5Fmachine=3Darmv4l-rebel=0A- os=3D-linux=0A- ;;=0A- = news | news700 | news800 | news900)=0A- basic=5Fmachine=3Dm68k-sony=0A- o= s=3D-newsos=0A- ;;=0A- news1000)=0A- basic=5Fmachine=3Dm68030-sony=0A- o= s=3D-newsos=0A- ;;=0A- news-3600 | risc-news)=0A- basic=5Fmachine=3Dmips-= sony=0A- os=3D-newsos=0A- ;;=0A- necv70)=0A- basic=5Fmachine=3Dv70-nec= =0A- os=3D-sysv=0A- ;;=0A- next | m*-next )=0A- basic=5Fmachine=3Dm68k-n= ext=0A- case $os in=0A- -nextstep* )=0A- ;;=0A- -ns2*)=0A- = os=3D-nextstep2=0A- ;;=0A- *)=0A- os=3D-nextstep3=0A- ;= ;=0A- esac=0A- ;;=0A- nh3000)=0A- basic=5Fmachine=3Dm68k-harris=0A- os= =3D-cxux=0A- ;;=0A- nh[45]000)=0A- basic=5Fmachine=3Dm88k-harris=0A- os= =3D-cxux=0A- ;;=0A- nindy960)=0A- basic=5Fmachine=3Di960-intel=0A- os=3D= -nindy=0A- ;;=0A- mon960)=0A- basic=5Fmachine=3Di960-intel=0A- os=3D-mon= 960=0A- ;;=0A- nonstopux)=0A- basic=5Fmachine=3Dmips-compaq=0A- os=3D-no= nstopux=0A- ;;=0A- np1)=0A- basic=5Fmachine=3Dnp1-gould=0A- ;;=0A- nsr-t= andem)=0A- basic=5Fmachine=3Dnsr-tandem=0A- ;;=0A- op50n-* | op60c-*)=0A-= basic=5Fmachine=3Dhppa1.1-oki=0A- os=3D-proelf=0A- ;;=0A- openrisc | op= enrisc-*)=0A- basic=5Fmachine=3Dor32-unknown=0A- ;;=0A- os400)=0A- basic= =5Fmachine=3Dpowerpc-ibm=0A- os=3D-os400=0A- ;;=0A- OSE68000 | ose68000)= =0A- basic=5Fmachine=3Dm68000-ericsson=0A- os=3D-ose=0A- ;;=0A- os68k)= =0A- basic=5Fmachine=3Dm68k-none=0A- os=3D-os68k=0A- ;;=0A- pa-hitachi)= =0A- basic=5Fmachine=3Dhppa1.1-hitachi=0A- os=3D-hiuxwe2=0A- ;;=0A- para= gon)=0A- basic=5Fmachine=3Di860-intel=0A- os=3D-osf=0A- ;;=0A- parisc)= =0A- basic=5Fmachine=3Dhppa-unknown=0A- os=3D-linux=0A- ;;=0A- parisc-*)= =0A- basic=5Fmachine=3Dhppa-`echo $basic=5Fmachine | sed 's/^[^-]*-//'`=0A= - os=3D-linux=0A- ;;=0A- pbd)=0A- basic=5Fmachine=3Dsparc-tti=0A- ;;=0A= - pbb)=0A- basic=5Fmachine=3Dm68k-tti=0A- ;;=0A- pc532 | pc532-*)=0A- ba= sic=5Fmachine=3Dns32k-pc532=0A- ;;=0A- pc98)=0A- basic=5Fmachine=3Di386-p= c=0A- ;;=0A- pc98-*)=0A- basic=5Fmachine=3Di386-`echo $basic=5Fmachine | = sed 's/^[^-]*-//'`=0A- ;;=0A- pentium | p5 | k5 | k6 | nexgen | viac3)=0A-= basic=5Fmachine=3Di586-pc=0A- ;;=0A- pentiumpro | p6 | 6x86 | athlon | a= thlon=5F*)=0A- basic=5Fmachine=3Di686-pc=0A- ;;=0A- pentiumii | pentium2 = | pentiumiii | pentium3)=0A- basic=5Fmachine=3Di686-pc=0A- ;;=0A- pentium= 4)=0A- basic=5Fmachine=3Di786-pc=0A- ;;=0A- pentium-* | p5-* | k5-* | k6-= * | nexgen-* | viac3-*)=0A- basic=5Fmachine=3Di586-`echo $basic=5Fmachine = | sed 's/^[^-]*-//'`=0A- ;;=0A- pentiumpro-* | p6-* | 6x86-* | athlon-*)= =0A- basic=5Fmachine=3Di686-`echo $basic=5Fmachine | sed 's/^[^-]*-//'`=0A= - ;;=0A- pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*)=0A- basic= =5Fmachine=3Di686-`echo $basic=5Fmachine | sed 's/^[^-]*-//'`=0A- ;;=0A- p= entium4-*)=0A- basic=5Fmachine=3Di786-`echo $basic=5Fmachine | sed 's/^[^-= ]*-//'`=0A- ;;=0A- pn)=0A- basic=5Fmachine=3Dpn-gould=0A- ;;=0A- power) = basic=5Fmachine=3Dpower-ibm=0A- ;;=0A- ppc) basic=5Fmachine=3Dpowerpc-unkn= own=0A- ;;=0A- ppc-*) basic=5Fmachine=3Dpowerpc-`echo $basic=5Fmachine | s= ed 's/^[^-]*-//'`=0A- ;;=0A- ppcle | powerpclittle | ppc-le | powerpc-litt= le)=0A- basic=5Fmachine=3Dpowerpcle-unknown=0A- ;;=0A- ppcle-* | powerpcl= ittle-*)=0A- basic=5Fmachine=3Dpowerpcle-`echo $basic=5Fmachine | sed 's/^= [^-]*-//'`=0A- ;;=0A- ppc64) basic=5Fmachine=3Dpowerpc64-unknown=0A- ;;= =0A- ppc64-*) basic=5Fmachine=3Dpowerpc64-`echo $basic=5Fmachine | sed 's/^= [^-]*-//'`=0A- ;;=0A- ppc64le | powerpc64little | ppc64-le | powerpc64-lit= tle)=0A- basic=5Fmachine=3Dpowerpc64le-unknown=0A- ;;=0A- ppc64le-* | pow= erpc64little-*)=0A- basic=5Fmachine=3Dpowerpc64le-`echo $basic=5Fmachine |= sed 's/^[^-]*-//'`=0A- ;;=0A- ps2)=0A- basic=5Fmachine=3Di386-ibm=0A- ;= ;=0A- pw32)=0A- basic=5Fmachine=3Di586-unknown=0A- os=3D-pw32=0A- ;;=0A-= rdos)=0A- basic=5Fmachine=3Di386-pc=0A- os=3D-rdos=0A- ;;=0A- rom68k)= =0A- basic=5Fmachine=3Dm68k-rom68k=0A- os=3D-coff=0A- ;;=0A- rm[46]00)= =0A- basic=5Fmachine=3Dmips-siemens=0A- ;;=0A- rtpc | rtpc-*)=0A- basic= =5Fmachine=3Dromp-ibm=0A- ;;=0A- s390 | s390-*)=0A- basic=5Fmachine=3Ds39= 0-ibm=0A- ;;=0A- s390x | s390x-*)=0A- basic=5Fmachine=3Ds390x-ibm=0A- ;;= =0A- sa29200)=0A- basic=5Fmachine=3Da29k-amd=0A- os=3D-udi=0A- ;;=0A- sb= 1)=0A- basic=5Fmachine=3Dmipsisa64sb1-unknown=0A- ;;=0A- sb1el)=0A- basi= c=5Fmachine=3Dmipsisa64sb1el-unknown=0A- ;;=0A- sde)=0A- basic=5Fmachine= =3Dmipsisa32-sde=0A- os=3D-elf=0A- ;;=0A- sei)=0A- basic=5Fmachine=3Dmip= s-sei=0A- os=3D-seiux=0A- ;;=0A- sequent)=0A- basic=5Fmachine=3Di386-seq= uent=0A- ;;=0A- sh)=0A- basic=5Fmachine=3Dsh-hitachi=0A- os=3D-hms=0A- = ;;=0A- sh5el)=0A- basic=5Fmachine=3Dsh5le-unknown=0A- ;;=0A- sh64)=0A- b= asic=5Fmachine=3Dsh64-unknown=0A- ;;=0A- sparclite-wrs | simso-wrs)=0A- b= asic=5Fmachine=3Dsparclite-wrs=0A- os=3D-vxworks=0A- ;;=0A- sps7)=0A- ba= sic=5Fmachine=3Dm68k-bull=0A- os=3D-sysv2=0A- ;;=0A- spur)=0A- basic=5Fm= achine=3Dspur-unknown=0A- ;;=0A- st2000)=0A- basic=5Fmachine=3Dm68k-tande= m=0A- ;;=0A- stratus)=0A- basic=5Fmachine=3Di860-stratus=0A- os=3D-sysv4= =0A- ;;=0A- sun2)=0A- basic=5Fmachine=3Dm68000-sun=0A- ;;=0A- sun2os3)= =0A- basic=5Fmachine=3Dm68000-sun=0A- os=3D-sunos3=0A- ;;=0A- sun2os4)= =0A- basic=5Fmachine=3Dm68000-sun=0A- os=3D-sunos4=0A- ;;=0A- sun3os3)= =0A- basic=5Fmachine=3Dm68k-sun=0A- os=3D-sunos3=0A- ;;=0A- sun3os4)=0A-= basic=5Fmachine=3Dm68k-sun=0A- os=3D-sunos4=0A- ;;=0A- sun4os3)=0A- ba= sic=5Fmachine=3Dsparc-sun=0A- os=3D-sunos3=0A- ;;=0A- sun4os4)=0A- basic= =5Fmachine=3Dsparc-sun=0A- os=3D-sunos4=0A- ;;=0A- sun4sol2)=0A- basic= =5Fmachine=3Dsparc-sun=0A- os=3D-solaris2=0A- ;;=0A- sun3 | sun3-*)=0A- = basic=5Fmachine=3Dm68k-sun=0A- ;;=0A- sun4)=0A- basic=5Fmachine=3Dsparc-s= un=0A- ;;=0A- sun386 | sun386i | roadrunner)=0A- basic=5Fmachine=3Di386-s= un=0A- ;;=0A- sv1)=0A- basic=5Fmachine=3Dsv1-cray=0A- os=3D-unicos=0A- = ;;=0A- symmetry)=0A- basic=5Fmachine=3Di386-sequent=0A- os=3D-dynix=0A- = ;;=0A- t3e)=0A- basic=5Fmachine=3Dalphaev5-cray=0A- os=3D-unicos=0A- ;;= =0A- t90)=0A- basic=5Fmachine=3Dt90-cray=0A- os=3D-unicos=0A- ;;=0A- tic= 54x | c54x*)=0A- basic=5Fmachine=3Dtic54x-unknown=0A- os=3D-coff=0A- ;;= =0A- tic55x | c55x*)=0A- basic=5Fmachine=3Dtic55x-unknown=0A- os=3D-coff= =0A- ;;=0A- tic6x | c6x*)=0A- basic=5Fmachine=3Dtic6x-unknown=0A- os=3D-= coff=0A- ;;=0A- tile*)=0A- basic=5Fmachine=3Dtile-unknown=0A- os=3D-linu= x-gnu=0A- ;;=0A- tx39)=0A- basic=5Fmachine=3Dmipstx39-unknown=0A- ;;=0A-= tx39el)=0A- basic=5Fmachine=3Dmipstx39el-unknown=0A- ;;=0A- toad1)=0A- = basic=5Fmachine=3Dpdp10-xkl=0A- os=3D-tops20=0A- ;;=0A- tower | tower-32)= =0A- basic=5Fmachine=3Dm68k-ncr=0A- ;;=0A- tpf)=0A- basic=5Fmachine=3Ds3= 90x-ibm=0A- os=3D-tpf=0A- ;;=0A- udi29k)=0A- basic=5Fmachine=3Da29k-amd= =0A- os=3D-udi=0A- ;;=0A- ultra3)=0A- basic=5Fmachine=3Da29k-nyu=0A- os= =3D-sym1=0A- ;;=0A- v810 | necv810)=0A- basic=5Fmachine=3Dv810-nec=0A- o= s=3D-none=0A- ;;=0A- vaxv)=0A- basic=5Fmachine=3Dvax-dec=0A- os=3D-sysv= =0A- ;;=0A- vms)=0A- basic=5Fmachine=3Dvax-dec=0A- os=3D-vms=0A- ;;=0A-= vpp*|vx|vx-*)=0A- basic=5Fmachine=3Df301-fujitsu=0A- ;;=0A- vxworks960)= =0A- basic=5Fmachine=3Di960-wrs=0A- os=3D-vxworks=0A- ;;=0A- vxworks68)= =0A- basic=5Fmachine=3Dm68k-wrs=0A- os=3D-vxworks=0A- ;;=0A- vxworks29k)= =0A- basic=5Fmachine=3Da29k-wrs=0A- os=3D-vxworks=0A- ;;=0A- w65*)=0A- = basic=5Fmachine=3Dw65-wdc=0A- os=3D-none=0A- ;;=0A- w89k-*)=0A- basic=5F= machine=3Dhppa1.1-winbond=0A- os=3D-proelf=0A- ;;=0A- xbox)=0A- basic=5F= machine=3Di686-pc=0A- os=3D-mingw32=0A- ;;=0A- xps | xps100)=0A- basic= =5Fmachine=3Dxps100-honeywell=0A- ;;=0A- ymp)=0A- basic=5Fmachine=3Dymp-c= ray=0A- os=3D-unicos=0A- ;;=0A- z8k-*-coff)=0A- basic=5Fmachine=3Dz8k-un= known=0A- os=3D-sim=0A- ;;=0A- z80-*-coff)=0A- basic=5Fmachine=3Dz80-unk= nown=0A- os=3D-sim=0A- ;;=0A- none)=0A- basic=5Fmachine=3Dnone-none=0A- = os=3D-none=0A- ;;=0A-=0A-# Here we handle the default manufacturer of cer= tain CPU types. It is in=0A-# some cases the only manufacturer, in others,= it is the most popular.=0A- w89k)=0A- basic=5Fmachine=3Dhppa1.1-winbond= =0A- ;;=0A- op50n)=0A- basic=5Fmachine=3Dhppa1.1-oki=0A- ;;=0A- op60c)= =0A- basic=5Fmachine=3Dhppa1.1-oki=0A- ;;=0A- romp)=0A- basic=5Fmachine= =3Dromp-ibm=0A- ;;=0A- mmix)=0A- basic=5Fmachine=3Dmmix-knuth=0A- ;;=0A-= rs6000)=0A- basic=5Fmachine=3Drs6000-ibm=0A- ;;=0A- vax)=0A- basic=5Fma= chine=3Dvax-dec=0A- ;;=0A- pdp10)=0A- # there are many clones, so DEC is = not a safe bet=0A- basic=5Fmachine=3Dpdp10-unknown=0A- ;;=0A- pdp11)=0A- = basic=5Fmachine=3Dpdp11-dec=0A- ;;=0A- we32k)=0A- basic=5Fmachine=3Dwe32= k-att=0A- ;;=0A- sh[1234] | sh[24]a | sh[24]aeb | sh[34]eb | sh[1234]le | = sh[23]ele)=0A- basic=5Fmachine=3Dsh-unknown=0A- ;;=0A- sparc | sparcv8 | = sparcv9 | sparcv9b | sparcv9v)=0A- basic=5Fmachine=3Dsparc-sun=0A- ;;=0A-= cydra)=0A- basic=5Fmachine=3Dcydra-cydrome=0A- ;;=0A- orion)=0A- basic= =5Fmachine=3Dorion-highlevel=0A- ;;=0A- orion105)=0A- basic=5Fmachine=3Dc= lipper-highlevel=0A- ;;=0A- mac | mpw | mac-mpw)=0A- basic=5Fmachine=3Dm6= 8k-apple=0A- ;;=0A- pmac | pmac-mpw)=0A- basic=5Fmachine=3Dpowerpc-apple= =0A- ;;=0A- *-unknown)=0A- # Make sure to match an already-canonicalized = machine name.=0A- ;;=0A- *)=0A- echo Invalid configuration \`$1\': machin= e \`$basic=5Fmachine\' not recognized 1>&2=0A- exit 1=0A- ;;=0A-esac=0A-= =0A-# Here we canonicalize certain aliases for manufacturers.=0A-case $basi= c=5Fmachine in=0A- *-digital*)=0A- basic=5Fmachine=3D`echo $basic=5Fmachin= e | sed 's/digital.*/dec/'`=0A- ;;=0A- *-commodore*)=0A- basic=5Fmachine= =3D`echo $basic=5Fmachine | sed 's/commodore.*/cbm/'`=0A- ;;=0A- *)=0A- ;= ;=0A-esac=0A-=0A-# Decode manufacturer-specific aliases for certain operati= ng systems.=0A-=0A-if [ x"$os" !=3D x"" ]=0A-then=0A-case $os in=0A- = # First match some system type aliases=0A- # that might get confuse= d with valid system types.=0A- # -solaris* is a basic system type, with thi= s one exception.=0A- -solaris1 | -solaris1.*)=0A- os=3D`echo $os | sed -e = 's|solaris1|sunos4|'`=0A- ;;=0A- -solaris)=0A- os=3D-solaris2=0A- ;;=0A-= -svr4*)=0A- os=3D-sysv4=0A- ;;=0A- -unixware*)=0A- os=3D-sysv4.2uw=0A- = ;;=0A- -gnu/linux*)=0A- os=3D`echo $os | sed -e 's|gnu/linux|linux-gnu|'`= =0A- ;;=0A- # First accept the basic system types.=0A- # The portable syst= ems comes first.=0A- # Each alternative MUST END IN A *, to match a version= number.=0A- # -sysv* is not here because it comes later, after sysvr4.=0A-= -gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \=0A- = | -*vms* | -sco* | -esix* | -isc* | -aix* | -cnk* | -sunos | -sunos[34]*\= =0A- | -hpux* | -unos* | -osf* | -luna* | -dgux* | -solaris* | -sym* = \=0A- | -kopensolaris* \=0A- | -amigaos* | -amigados* | -msdos*= | -newsos* | -unicos* | -aof* \=0A- | -aos* | -aros* \=0A- | -= nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \=0A- | -clix*= | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \=0A- | -hiux* | -= 386bsd* | -knetbsd* | -mirbsd* | -netbsd* \=0A- | -openbsd* | -solidb= sd* \=0A- | -ekkobsd* | -kfreebsd* | -freebsd* | -riscix* | -lynxos* = \=0A- | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \=0A- = | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \=0A- = | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \=0A- | -choruso= s* | -chorusrdb* | -cegcc* \=0A- | -cygwin* | -pe* | -psos* | -moss* = | -proelf* | -rtems* \=0A- | -mingw32* | -linux-gnu* | -linux-newlib*= | -linux-uclibc* \=0A- | -uxpv* | -beos* | -mpeix* | -udk* \=0A- = | -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \=0A- = | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \=0A- | -= storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \=0A- | -os2* | = -vos* | -palmos* | -uclinux* | -nucleus* \=0A- | -morphos* | -superux= * | -rtmk* | -rtmk-nova* | -windiss* \=0A- | -powermax* | -dnix* | -n= x6 | -nx7 | -sei* | -dragonfly* \=0A- | -skyos* | -haiku* | -rdos* | = -toppers* | -drops* | -irx*)=0A- # Remember, each alternative MUST END IN *= , to match a version number.=0A- ;;=0A- -qnx*)=0A- case $basic=5Fmachine = in=0A- x86-* | i*86-*)=0A- ;;=0A- *)=0A- os=3D-nto$os=0A- ;= ;=0A- esac=0A- ;;=0A- -nto-qnx*)=0A- ;;=0A- -nto*)=0A- os=3D`echo $os |= sed -e 's|nto|nto-qnx|'`=0A- ;;=0A- -sim | -es1800* | -hms* | -xray | -os= 68k* | -none* | -v88r* \=0A- | -windows* | -osx | -abug | -netware* |= -os9* | -beos* | -haiku* \=0A- | -macos* | -mpw* | -magic* | -mmixwa= re* | -mon960* | -lnews*)=0A- ;;=0A- -mac*)=0A- os=3D`echo $os | sed -e '= s|mac|macos|'`=0A- ;;=0A- -linux-dietlibc)=0A- os=3D-linux-dietlibc=0A- = ;;=0A- -linux*)=0A- os=3D`echo $os | sed -e 's|linux|linux-gnu|'`=0A- ;;= =0A- -sunos5*)=0A- os=3D`echo $os | sed -e 's|sunos5|solaris2|'`=0A- ;;= =0A- -sunos6*)=0A- os=3D`echo $os | sed -e 's|sunos6|solaris3|'`=0A- ;;= =0A- -opened*)=0A- os=3D-openedition=0A- ;;=0A- -os400*)=0A- os= =3D-os400=0A- ;;=0A- -wince*)=0A- os=3D-wince=0A- ;;=0A- -osfrose*)=0A- = os=3D-osfrose=0A- ;;=0A- -osf*)=0A- os=3D-osf=0A- ;;=0A- -utek*)=0A- o= s=3D-bsd=0A- ;;=0A- -dynix*)=0A- os=3D-bsd=0A- ;;=0A- -acis*)=0A- os=3D= -aos=0A- ;;=0A- -atheos*)=0A- os=3D-atheos=0A- ;;=0A- -syllable*)=0A- o= s=3D-syllable=0A- ;;=0A- -386bsd)=0A- os=3D-bsd=0A- ;;=0A- -ctix* | -uts= *)=0A- os=3D-sysv=0A- ;;=0A- -nova*)=0A- os=3D-rtmk-nova=0A- ;;=0A- -ns= 2 )=0A- os=3D-nextstep2=0A- ;;=0A- -nsk*)=0A- os=3D-nsk=0A- ;;=0A- # Pr= eserve the version number of sinix5.=0A- -sinix5.*)=0A- os=3D`echo $os | s= ed -e 's|sinix|sysv|'`=0A- ;;=0A- -sinix*)=0A- os=3D-sysv4=0A- ;;=0A- = -tpf*)=0A- os=3D-tpf=0A- ;;=0A- -triton*)=0A- os=3D-sysv3=0A- ;;= =0A- -oss*)=0A- os=3D-sysv3=0A- ;;=0A- -svr4)=0A- os=3D-sysv4=0A- ;;=0A= - -svr3)=0A- os=3D-sysv3=0A- ;;=0A- -sysvr4)=0A- os=3D-sysv4=0A- ;;=0A-= # This must come after -sysvr4.=0A- -sysv*)=0A- ;;=0A- -ose*)=0A- os=3D-= ose=0A- ;;=0A- -es1800*)=0A- os=3D-ose=0A- ;;=0A- -xenix)=0A- os=3D-xen= ix=0A- ;;=0A- -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*)=0A- os=3D-mint= =0A- ;;=0A- -aros*)=0A- os=3D-aros=0A- ;;=0A- -kaos*)=0A- os=3D-kaos=0A= - ;;=0A- -zvmoe)=0A- os=3D-zvmoe=0A- ;;=0A- -dicos*)=0A- os=3D-dicos=0A= - ;;=0A- -none)=0A- ;;=0A- *)=0A- # Get rid of the `-' at the beginning = of $os.=0A- os=3D`echo $os | sed 's/[^-]*-//'`=0A- echo Invalid configura= tion \`$1\': system \`$os\' not recognized 1>&2=0A- exit 1=0A- ;;=0A-esac= =0A-else=0A-=0A-# Here we handle the default operating systems that come wi= th various machines.=0A-# The value should be what the vendor currently shi= ps out the door with their=0A-# machine or put another way, the most popula= r os provided with the machine.=0A-=0A-# Note that if you're going to try t= o match "-MANUFACTURER" here (say,=0A-# "-sun"), then you have to tell the = case statement up towards the top=0A-# that MANUFACTURER isn't an operating= system. Otherwise, code above=0A-# will signal an error saying that MANUF= ACTURER isn't an operating=0A-# system, and we'll never get to this point.= =0A-=0A-case $basic=5Fmachine in=0A- score-*)=0A- os=3D-elf=0A- ;;= =0A- spu-*)=0A- os=3D-elf=0A- ;;=0A- *-acorn)=0A- os=3D-riscix1.2= =0A- ;;=0A- arm*-rebel)=0A- os=3D-linux=0A- ;;=0A- arm*-semi)=0A- os=3D= -aout=0A- ;;=0A- c4x-* | tic4x-*)=0A- os=3D-coff=0A- ;;=0A= - # This must come before the *-dec entry.=0A- pdp10-*)=0A- os=3D-tops20= =0A- ;;=0A- pdp11-*)=0A- os=3D-none=0A- ;;=0A- *-dec | vax-*)=0A- os=3D= -ultrix4.2=0A- ;;=0A- m68*-apollo)=0A- os=3D-domain=0A- ;;=0A- i386-sun)= =0A- os=3D-sunos4.0.2=0A- ;;=0A- m68000-sun)=0A- os=3D-sunos3=0A- # Thi= s also exists in the configure program, but was not the=0A- # default.=0A-= # os=3D-sunos4=0A- ;;=0A- m68*-cisco)=0A- os=3D-aout=0A- ;;=0A- = mep-*)=0A- os=3D-elf=0A- ;;=0A- mips*-cisco)=0A- os=3D-elf=0A- ;;=0A- = mips*-*)=0A- os=3D-elf=0A- ;;=0A- or32-*)=0A- os=3D-coff=0A- ;;=0A- *-t= ti) # must be before sparc entry or we get the wrong os.=0A- os=3D-sysv3= =0A- ;;=0A- sparc-* | *-sun)=0A- os=3D-sunos4.1.1=0A- ;;=0A- *-be)=0A- = os=3D-beos=0A- ;;=0A- *-haiku)=0A- os=3D-haiku=0A- ;;=0A- *-ibm)=0A- os= =3D-aix=0A- ;;=0A- *-knuth)=0A- os=3D-mmixware=0A- ;;=0A- *-wec)=0A-= os=3D-proelf=0A- ;;=0A- *-winbond)=0A- os=3D-proelf=0A- ;;=0A- *-oki)= =0A- os=3D-proelf=0A- ;;=0A- *-hp)=0A- os=3D-hpux=0A- ;;=0A- *-hitachi)= =0A- os=3D-hiux=0A- ;;=0A- i860-* | *-att | *-ncr | *-altos | *-motorola = | *-convergent)=0A- os=3D-sysv=0A- ;;=0A- *-cbm)=0A- os=3D-amigaos=0A- = ;;=0A- *-dg)=0A- os=3D-dgux=0A- ;;=0A- *-dolphin)=0A- os=3D-sysv3=0A- ;= ;=0A- m68k-ccur)=0A- os=3D-rtu=0A- ;;=0A- m88k-omron*)=0A- os=3D-luna=0A= - ;;=0A- *-next )=0A- os=3D-nextstep=0A- ;;=0A- *-sequent)=0A- os=3D-pt= x=0A- ;;=0A- *-crds)=0A- os=3D-unos=0A- ;;=0A- *-ns)=0A- os=3D-genix=0A= - ;;=0A- i370-*)=0A- os=3D-mvs=0A- ;;=0A- *-next)=0A- os=3D-nextstep3= =0A- ;;=0A- *-gould)=0A- os=3D-sysv=0A- ;;=0A- *-highlevel)=0A- os=3D-b= sd=0A- ;;=0A- *-encore)=0A- os=3D-bsd=0A- ;;=0A- *-sgi)=0A- os=3D-irix= =0A- ;;=0A- *-siemens)=0A- os=3D-sysv4=0A- ;;=0A- *-masscomp)=0A- os=3D= -rtu=0A- ;;=0A- f30[01]-fujitsu | f700-fujitsu)=0A- os=3D-uxpv=0A- ;;=0A= - *-rom68k)=0A- os=3D-coff=0A- ;;=0A- *-*bug)=0A- os=3D-coff=0A- ;;=0A-= *-apple)=0A- os=3D-macos=0A- ;;=0A- *-atari*)=0A- os=3D-mint=0A- ;;=0A= - *)=0A- os=3D-none=0A- ;;=0A-esac=0A-fi=0A-=0A-# Here we handle the case= where we know the os, and the CPU type, but not the=0A-# manufacturer. We= pick the logical manufacturer.=0A-vendor=3Dunknown=0A-case $basic=5Fmachin= e in=0A- *-unknown)=0A- case $os in=0A- -riscix*)=0A- vendor=3Dacorn= =0A- ;;=0A- -sunos*)=0A- vendor=3Dsun=0A- ;;=0A- -cnk*|-aix*)= =0A- vendor=3Dibm=0A- ;;=0A- -beos*)=0A- vendor=3Dbe=0A- ;;= =0A- -hpux*)=0A- vendor=3Dhp=0A- ;;=0A- -mpeix*)=0A- vendor=3D= hp=0A- ;;=0A- -hiux*)=0A- vendor=3Dhitachi=0A- ;;=0A- -unos*)= =0A- vendor=3Dcrds=0A- ;;=0A- -dgux*)=0A- vendor=3Ddg=0A- ;;= =0A- -luna*)=0A- vendor=3Domron=0A- ;;=0A- -genix*)=0A- vendor= =3Dns=0A- ;;=0A- -mvs* | -opened*)=0A- vendor=3Dibm=0A- ;;=0A- = -os400*)=0A- vendor=3Dibm=0A- ;;=0A- -ptx*)=0A- vendor=3Dsequen= t=0A- ;;=0A- -tpf*)=0A- vendor=3Dibm=0A- ;;=0A- -vxsim* | -vxw= orks* | -windiss*)=0A- vendor=3Dwrs=0A- ;;=0A- -aux*)=0A- vendor= =3Dapple=0A- ;;=0A- -hms*)=0A- vendor=3Dhitachi=0A- ;;=0A- -mp= w* | -macos*)=0A- vendor=3Dapple=0A- ;;=0A- -*mint | -mint[0-9]* | = -*MiNT | -MiNT[0-9]*)=0A- vendor=3Datari=0A- ;;=0A- -vos*)=0A- v= endor=3Dstratus=0A- ;;=0A- esac=0A- basic=5Fmachine=3D`echo $basic=5Fm= achine | sed "s/unknown/$vendor/"`=0A- ;;=0A-esac=0A-=0A-echo $basic=5Fmac= hine$os=0A-exit=0A-=0A-# Local variables:=0A-# eval: (add-hook 'write-file-= hooks 'time-stamp)=0A-# time-stamp-start: "timestamp=3D'"=0A-# time-stamp-f= ormat: "%:y-%02m-%02d"=0A-# time-stamp-end: "'"=0A-# End:=0Adiff --git a/te= stcases/kernel/fs/ext4-new-features/ffsb-6.0-rc2/configure b/testcases/kern= el/fs/ext4-new-features/ffsb-6.0-rc2/configure=0Adeleted file mode 100755= =0Aindex 12d5202..0000000=0A--- a/testcases/kernel/fs/ext4-new-features/ffs= b-6.0-rc2/configure=0A+++ /dev/null=0A@@ -1,7000 +0,0 @@=0A-#! /bin/sh=0A-#= Guess values for system-dependent variables and create Makefiles.=0A-# Gen= erated by GNU Autoconf 2.61.=0A-#=0A-# Copyright (C) 1992, 1993, 1994, 1995= , 1996, 1998, 1999, 2000, 2001,=0A-# 2002, 2003, 2004, 2005, 2006 Free Soft= ware Foundation, Inc.=0A-# This configure script is free software; the Free= Software Foundation=0A-# gives unlimited permission to copy, distribute an= d modify it.=0A-## --------------------- ##=0A-## M4sh Initialization. ##= =0A-## --------------------- ##=0A-=0A-# Be more Bourne compatible=0A-DUALC= ASE=3D1; export DUALCASE # for MKS sh=0A-if test -n "${ZSH=5FVERSION+set}" = && (emulate sh) >/dev/null 2>&1; then=0A- emulate sh=0A- NULLCMD=3D:=0A- = # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which=0A- # is co= ntrary to our usage. Disable this feature.=0A- alias -g '${1+"$@"}'=3D'"$= @"'=0A- setopt NO=5FGLOB=5FSUBST=0A-else=0A- case `(set -o) 2>/dev/null` = in=0A- *posix*) set -o posix ;;=0A-esac=0A-=0A-fi=0A-=0A-=0A-=0A-=0A-# PAT= H needs CR=0A-# Avoid depending upon Character Ranges.=0A-as=5Fcr=5Fletters= =3D'abcdefghijklmnopqrstuvwxyz'=0A-as=5Fcr=5FLETTERS=3D'ABCDEFGHIJKLMNOPQRS= TUVWXYZ'=0A-as=5Fcr=5FLetters=3D$as=5Fcr=5Fletters$as=5Fcr=5FLETTERS=0A-as= =5Fcr=5Fdigits=3D'0123456789'=0A-as=5Fcr=5Falnum=3D$as=5Fcr=5FLetters$as=5F= cr=5Fdigits=0A-=0A-# The user is always right.=0A-if test "${PATH=5FSEPARAT= OR+set}" !=3D set; then=0A- echo "#! /bin/sh" >conf$$.sh=0A- echo "exit = 0" >>conf$$.sh=0A- chmod +x conf$$.sh=0A- if (PATH=3D"/nonexistent;."; = conf$$.sh) >/dev/null 2>&1; then=0A- PATH=5FSEPARATOR=3D';'=0A- else=0A= - PATH=5FSEPARATOR=3D:=0A- fi=0A- rm -f conf$$.sh=0A-fi=0A-=0A-# Suppo= rt unset when possible.=0A-if ( (MAIL=3D60; unset MAIL) || exit) >/dev/null= 2>&1; then=0A- as=5Funset=3Dunset=0A-else=0A- as=5Funset=3Dfalse=0A-fi= =0A-=0A-=0A-# IFS=0A-# We need space, tab and new line, in precisely that o= rder. Quoting is=0A-# there to prevent editors from complaining about spac= e-tab.=0A-# (If =5FAS=5FPATH=5FWALK were called with IFS unset, it would di= sable word=0A-# splitting by setting IFS to empty value.)=0A-as=5Fnl=3D'=0A= -'=0A-IFS=3D" "" $as=5Fnl"=0A-=0A-# Find who we are. Look in the path if w= e contain no directory separator.=0A-case $0 in=0A- *[\\/]* ) as=5Fmyself= =3D$0 ;;=0A- *) as=5Fsave=5FIFS=3D$IFS; IFS=3D$PATH=5FSEPARATOR=0A-for as= =5Fdir in $PATH=0A-do=0A- IFS=3D$as=5Fsave=5FIFS=0A- test -z "$as=5Fdir" = && as=5Fdir=3D.=0A- test -r "$as=5Fdir/$0" && as=5Fmyself=3D$as=5Fdir/$0 &= & break=0A-done=0A-IFS=3D$as=5Fsave=5FIFS=0A-=0A- ;;=0A-esac=0A-# We di= d not find ourselves, most probably we were run as `sh COMMAND'=0A-# in whi= ch case we are not to be found in the path.=0A-if test "x$as=5Fmyself" =3D = x; then=0A- as=5Fmyself=3D$0=0A-fi=0A-if test ! -f "$as=5Fmyself"; then=0A= - echo "$as=5Fmyself: error: cannot find myself; rerun with an absolute fi= le name" >&2=0A- { (exit 1); exit 1; }=0A-fi=0A-=0A-# Work around bugs in = pre-3.0 UWIN ksh.=0A-for as=5Fvar in ENV MAIL MAILPATH=0A-do ($as=5Funset $= as=5Fvar) >/dev/null 2>&1 && $as=5Funset $as=5Fvar=0A-done=0A-PS1=3D'$ '=0A= -PS2=3D'> '=0A-PS4=3D'+ '=0A-=0A-# NLS nuisances.=0A-for as=5Fvar in \=0A- = LANG LANGUAGE LC=5FADDRESS LC=5FALL LC=5FCOLLATE LC=5FCTYPE LC=5FIDENTIFIC= ATION \=0A- LC=5FMEASUREMENT LC=5FMESSAGES LC=5FMONETARY LC=5FNAME LC=5FNU= MERIC LC=5FPAPER \=0A- LC=5FTELEPHONE LC=5FTIME=0A-do=0A- if (set +x; tes= t -z "`(eval $as=5Fvar=3DC; export $as=5Fvar) 2>&1`"); then=0A- eval $as= =5Fvar=3DC; export $as=5Fvar=0A- else=0A- ($as=5Funset $as=5Fvar) >/dev= /null 2>&1 && $as=5Funset $as=5Fvar=0A- fi=0A-done=0A-=0A-# Required to us= e basename.=0A-if expr a : '\(a\)' >/dev/null 2>&1 &&=0A- test "X`expr 00= 001 : '.*\(...\)'`" =3D X001; then=0A- as=5Fexpr=3Dexpr=0A-else=0A- as=5F= expr=3Dfalse=0A-fi=0A-=0A-if (basename -- /) >/dev/null 2>&1 && test "X`bas= ename -- / 2>&1`" =3D "X/"; then=0A- as=5Fbasename=3Dbasename=0A-else=0A- = as=5Fbasename=3Dfalse=0A-fi=0A-=0A-=0A-# Name of the executable.=0A-as=5Fm= e=3D`$as=5Fbasename -- "$0" ||=0A-$as=5Fexpr X/"$0" : '.*/\([^/][^/]*\)/*$'= \| \=0A- X"$0" : 'X\(//\)$' \| \=0A- X"$0" : 'X\(/\)' \| . 2>/dev/null |= |=0A-echo X/"$0" |=0A- sed '/^.*\/\([^/][^/]*\)\/*$/{=0A- s//\1/=0A-= q=0A- }=0A- /^X\/\(\/\/\)$/{=0A- s//\1/=0A- q=0A- }=0A- = /^X\/\(\/\).*/{=0A- s//\1/=0A- q=0A- }=0A- s/.*/./; q'`=0A-= =0A-# CDPATH.=0A-$as=5Funset CDPATH=0A-=0A-=0A-if test "x$CONFIG=5FSHELL" = =3D x; then=0A- if (eval ":") 2>/dev/null; then=0A- as=5Fhave=5Frequired= =3Dyes=0A-else=0A- as=5Fhave=5Frequired=3Dno=0A-fi=0A-=0A- if test $as=5F= have=5Frequired =3D yes && (eval ":=0A-(as=5Ffunc=5Freturn () {=0A- (exi= t \$1)=0A-}=0A-as=5Ffunc=5Fsuccess () {=0A- as=5Ffunc=5Freturn 0=0A-}=0A-a= s=5Ffunc=5Ffailure () {=0A- as=5Ffunc=5Freturn 1=0A-}=0A-as=5Ffunc=5Fret= =5Fsuccess () {=0A- return 0=0A-}=0A-as=5Ffunc=5Fret=5Ffailure () {=0A- r= eturn 1=0A-}=0A-=0A-exitcode=3D0=0A-if as=5Ffunc=5Fsuccess; then=0A- :=0A-= else=0A- exitcode=3D1=0A- echo as=5Ffunc=5Fsuccess failed.=0A-fi=0A-=0A-i= f as=5Ffunc=5Ffailure; then=0A- exitcode=3D1=0A- echo as=5Ffunc=5Ffailure= succeeded.=0A-fi=0A-=0A-if as=5Ffunc=5Fret=5Fsuccess; then=0A- :=0A-else= =0A- exitcode=3D1=0A- echo as=5Ffunc=5Fret=5Fsuccess failed.=0A-fi=0A-=0A= -if as=5Ffunc=5Fret=5Ffailure; then=0A- exitcode=3D1=0A- echo as=5Ffunc= =5Fret=5Ffailure succeeded.=0A-fi=0A-=0A-if ( set x; as=5Ffunc=5Fret=5Fsucc= ess y && test x =3D \"\$1\" ); then=0A- :=0A-else=0A- exitcode=3D1=0A- e= cho positional parameters were not saved.=0A-fi=0A-=0A-test \$exitcode =3D = 0) || { (exit 1); exit 1; }=0A-=0A-(=0A- as=5Flineno=5F1=3D\$LINENO=0A- a= s=5Flineno=5F2=3D\$LINENO=0A- test \"x\$as=5Flineno=5F1\" !=3D \"x\$as=5Fl= ineno=5F2\" &&=0A- test \"x\`expr \$as=5Flineno=5F1 + 1\`\" =3D \"x\$as=5F= lineno=5F2\") || { (exit 1); exit 1; }=0A-") 2> /dev/null; then=0A- :=0A-e= lse=0A- as=5Fcandidate=5Fshells=3D=0A- as=5Fsave=5FIFS=3D$IFS; IFS=3D$P= ATH=5FSEPARATOR=0A-for as=5Fdir in /bin$PATH=5FSEPARATOR/usr/bin$PATH=5FSEP= ARATOR$PATH=0A-do=0A- IFS=3D$as=5Fsave=5FIFS=0A- test -z "$as=5Fdir" && a= s=5Fdir=3D.=0A- case $as=5Fdir in=0A- /*)=0A- for as=5Fbase in sh bash= ksh sh5; do=0A- as=5Fcandidate=5Fshells=3D"$as=5Fcandidate=5Fshells $= as=5Fdir/$as=5Fbase"=0A- done;;=0A- esac=0A-done=0A-IFS=3D$as=5Fsa= ve=5FIFS=0A-=0A-=0A- for as=5Fshell in $as=5Fcandidate=5Fshells $SHELL= ; do=0A- # Try only shells that exist, to save several forks.=0A- if { te= st -f "$as=5Fshell" || test -f "$as=5Fshell.exe"; } &&=0A- { ("$as=5Fshell= ") 2> /dev/null <<\=5FASEOF=0A-if test -n "${ZSH=5FVERSION+set}" && (emulat= e sh) >/dev/null 2>&1; then=0A- emulate sh=0A- NULLCMD=3D:=0A- # Zsh 3.x= and 4.x performs word splitting on ${1+"$@"}, which=0A- # is contrary to = our usage. Disable this feature.=0A- alias -g '${1+"$@"}'=3D'"$@"'=0A- s= etopt NO=5FGLOB=5FSUBST=0A-else=0A- case `(set -o) 2>/dev/null` in=0A- *p= osix*) set -o posix ;;=0A-esac=0A-=0A-fi=0A-=0A-=0A-:=0A-=5FASEOF=0A-}; the= n=0A- CONFIG=5FSHELL=3D$as=5Fshell=0A- as=5Fhave=5Frequired=3Dyes= =0A- if { "$as=5Fshell" 2> /dev/null <<\=5FASEOF=0A-if test -n "${ZS= H=5FVERSION+set}" && (emulate sh) >/dev/null 2>&1; then=0A- emulate sh=0A-= NULLCMD=3D:=0A- # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, = which=0A- # is contrary to our usage. Disable this feature.=0A- alias -g= '${1+"$@"}'=3D'"$@"'=0A- setopt NO=5FGLOB=5FSUBST=0A-else=0A- case `(set= -o) 2>/dev/null` in=0A- *posix*) set -o posix ;;=0A-esac=0A-=0A-fi=0A-=0A= -=0A-:=0A-(as=5Ffunc=5Freturn () {=0A- (exit $1)=0A-}=0A-as=5Ffunc=5Fsucce= ss () {=0A- as=5Ffunc=5Freturn 0=0A-}=0A-as=5Ffunc=5Ffailure () {=0A- as= =5Ffunc=5Freturn 1=0A-}=0A-as=5Ffunc=5Fret=5Fsuccess () {=0A- return 0=0A-= }=0A-as=5Ffunc=5Fret=5Ffailure () {=0A- return 1=0A-}=0A-=0A-exitcode=3D0= =0A-if as=5Ffunc=5Fsuccess; then=0A- :=0A-else=0A- exitcode=3D1=0A- echo= as=5Ffunc=5Fsuccess failed.=0A-fi=0A-=0A-if as=5Ffunc=5Ffailure; then=0A- = exitcode=3D1=0A- echo as=5Ffunc=5Ffailure succeeded.=0A-fi=0A-=0A-if as= =5Ffunc=5Fret=5Fsuccess; then=0A- :=0A-else=0A- exitcode=3D1=0A- echo as= =5Ffunc=5Fret=5Fsuccess failed.=0A-fi=0A-=0A-if as=5Ffunc=5Fret=5Ffailure; = then=0A- exitcode=3D1=0A- echo as=5Ffunc=5Fret=5Ffailure succeeded.=0A-fi= =0A-=0A-if ( set x; as=5Ffunc=5Fret=5Fsuccess y && test x =3D "$1" ); then= =0A- :=0A-else=0A- exitcode=3D1=0A- echo positional parameters were not = saved.=0A-fi=0A-=0A-test $exitcode =3D 0) || { (exit 1); exit 1; }=0A-=0A-(= =0A- as=5Flineno=5F1=3D$LINENO=0A- as=5Flineno=5F2=3D$LINENO=0A- test "x= $as=5Flineno=5F1" !=3D "x$as=5Flineno=5F2" &&=0A- test "x`expr $as=5Flinen= o=5F1 + 1`" =3D "x$as=5Flineno=5F2") || { (exit 1); exit 1; }=0A-=0A-=5FASE= OF=0A-}; then=0A- break=0A-fi=0A-=0A-fi=0A-=0A- done=0A-=0A- if = test "x$CONFIG=5FSHELL" !=3D x; then=0A- for as=5Fvar in BASH=5FENV ENV=0A= - do ($as=5Funset $as=5Fvar) >/dev/null 2>&1 && $as=5Funset $as=5Fva= r=0A- done=0A- export CONFIG=5FSHELL=0A- exec "$CONFIG= =5FSHELL" "$as=5Fmyself" ${1+"$@"}=0A-fi=0A-=0A-=0A- if test $as=5Fhave= =5Frequired =3D no; then=0A- echo This script requires a shell more modern= than all the=0A- echo shells that I found on your system. Please ins= tall a=0A- echo modern shell, or manually run the script under such a= =0A- echo shell if you do have one.=0A- { (exit 1); exit 1; }=0A-= fi=0A-=0A-=0A-fi=0A-=0A-fi=0A-=0A-=0A-=0A-(eval "as=5Ffunc=5Freturn () {=0A= - (exit \$1)=0A-}=0A-as=5Ffunc=5Fsuccess () {=0A- as=5Ffunc=5Freturn 0=0A= -}=0A-as=5Ffunc=5Ffailure () {=0A- as=5Ffunc=5Freturn 1=0A-}=0A-as=5Ffunc= =5Fret=5Fsuccess () {=0A- return 0=0A-}=0A-as=5Ffunc=5Fret=5Ffailure () {= =0A- return 1=0A-}=0A-=0A-exitcode=3D0=0A-if as=5Ffunc=5Fsuccess; then=0A-= :=0A-else=0A- exitcode=3D1=0A- echo as=5Ffunc=5Fsuccess failed.=0A-fi= =0A-=0A-if as=5Ffunc=5Ffailure; then=0A- exitcode=3D1=0A- echo as=5Ffunc= =5Ffailure succeeded.=0A-fi=0A-=0A-if as=5Ffunc=5Fret=5Fsuccess; then=0A- = :=0A-else=0A- exitcode=3D1=0A- echo as=5Ffunc=5Fret=5Fsuccess failed.=0A-= fi=0A-=0A-if as=5Ffunc=5Fret=5Ffailure; then=0A- exitcode=3D1=0A- echo as= =5Ffunc=5Fret=5Ffailure succeeded.=0A-fi=0A-=0A-if ( set x; as=5Ffunc=5Fret= =5Fsuccess y && test x =3D \"\$1\" ); then=0A- :=0A-else=0A- exitcode=3D1= =0A- echo positional parameters were not saved.=0A-fi=0A-=0A-test \$exitco= de =3D 0") || {=0A- echo No shell found that supports shell functions.=0A-= echo Please tell autoconf@gnu.org about your system,=0A- echo including = any error possibly output before this=0A- echo message=0A-}=0A-=0A-=0A-=0A= - as=5Flineno=5F1=3D$LINENO=0A- as=5Flineno=5F2=3D$LINENO=0A- test "x$as= =5Flineno=5F1" !=3D "x$as=5Flineno=5F2" &&=0A- test "x`expr $as=5Flineno= =5F1 + 1`" =3D "x$as=5Flineno=5F2" || {=0A-=0A- # Create $as=5Fme.lineno a= s a copy of $as=5Fmyself, but with $LINENO=0A- # uniformly replaced by the= line number. The first 'sed' inserts a=0A- # line-number line after each= line using $LINENO; the second 'sed'=0A- # does the real work. The secon= d script uses 'N' to pair each=0A- # line-number line with the line contai= ning $LINENO, and appends=0A- # trailing '-' during substitution so that $= LINENO is not a special=0A- # case at line end.=0A- # (Raja R Harinath su= ggested sed '=3D', and Paul Eggert wrote the=0A- # scripts with optimizati= on help from Paolo Bonzini. Blame Lee=0A- # E. McMahon (1931-1989) for se= d's syntax. :-)=0A- sed -n '=0A- p=0A- /[$]LINENO/=3D=0A- ' <$as= =5Fmyself |=0A- sed '=0A- s/[$]LINENO.*/&-/=0A- t lineno=0A- = b=0A- :lineno=0A- N=0A- :loop=0A- s/[$]LINENO\([^'$= as=5Fcr=5Falnum'=5F].*\n\)\(.*\)/\2\1\2/=0A- t loop=0A- s/-\n.*//= =0A- ' >$as=5Fme.lineno &&=0A- chmod +x "$as=5Fme.lineno" ||=0A- { e= cho "$as=5Fme: error: cannot create $as=5Fme.lineno; rerun with a POSIX she= ll" >&2=0A- { (exit 1); exit 1; }; }=0A-=0A- # Don't try to exec as it c= hanges $[0], causing all sort of problems=0A- # (the dirname of $[0] is no= t the place where we might find the=0A- # original and so on. Autoconf is= especially sensitive to this).=0A- . "./$as=5Fme.lineno"=0A- # Exit stat= us is that of the last command.=0A- exit=0A-}=0A-=0A-=0A-if (as=5Fdir=3D`d= irname -- /` && test "X$as=5Fdir" =3D X/) >/dev/null 2>&1; then=0A- as=5Fd= irname=3Ddirname=0A-else=0A- as=5Fdirname=3Dfalse=0A-fi=0A-=0A-ECHO=5FC=3D= ECHO=5FN=3D ECHO=5FT=3D=0A-case `echo -n x` in=0A--n*)=0A- case `echo 'x\= c'` in=0A- *c*) ECHO=5FT=3D' ';; # ECHO=5FT is single tab character.=0A- = *) ECHO=5FC=3D'\c';;=0A- esac;;=0A-*)=0A- ECHO=5FN=3D'-n';;=0A-esac=0A-= =0A-if expr a : '\(a\)' >/dev/null 2>&1 &&=0A- test "X`expr 00001 : '.*\(= ...\)'`" =3D X001; then=0A- as=5Fexpr=3Dexpr=0A-else=0A- as=5Fexpr=3Dfals= e=0A-fi=0A-=0A-rm -f conf$$ conf$$.exe conf$$.file=0A-if test -d conf$$.dir= ; then=0A- rm -f conf$$.dir/conf$$.file=0A-else=0A- rm -f conf$$.dir=0A- = mkdir conf$$.dir=0A-fi=0A-echo >conf$$.file=0A-if ln -s conf$$.file conf$$= 2>/dev/null; then=0A- as=5Fln=5Fs=3D'ln -s'=0A- # ... but there are two = gotchas:=0A- # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail.= =0A- # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executab= le.=0A- # In both cases, we have to default to `cp -p'.=0A- ln -s conf$$.= file conf$$.dir 2>/dev/null && test ! -f conf$$.exe ||=0A- as=5Fln=5Fs= =3D'cp -p'=0A-elif ln conf$$.file conf$$ 2>/dev/null; then=0A- as=5Fln=5Fs= =3Dln=0A-else=0A- as=5Fln=5Fs=3D'cp -p'=0A-fi=0A-rm -f conf$$ conf$$.exe c= onf$$.dir/conf$$.file conf$$.file=0A-rmdir conf$$.dir 2>/dev/null=0A-=0A-if= mkdir -p . 2>/dev/null; then=0A- as=5Fmkdir=5Fp=3D:=0A-else=0A- test -d = ./-p && rmdir ./-p=0A- as=5Fmkdir=5Fp=3Dfalse=0A-fi=0A-=0A-if test -x / >/= dev/null 2>&1; then=0A- as=5Ftest=5Fx=3D'test -x'=0A-else=0A- if ls -dL /= >/dev/null 2>&1; then=0A- as=5Fls=5FL=5Foption=3DL=0A- else=0A- as= =5Fls=5FL=5Foption=3D=0A- fi=0A- as=5Ftest=5Fx=3D'=0A- eval sh -c '\''= =0A- if test -d "$1"; then=0A- test -d "$1/.";=0A- else=0A= - case $1 in=0A- -*)set "./$1";;=0A- esac;=0A- case `ls -ld'$as=5Fls= =5FL=5Foption' "$1" 2>/dev/null` in=0A- ???[sx]*):;;*)false;;esac;fi=0A- = '\'' sh=0A- '=0A-fi=0A-as=5Fexecutable=5Fp=3D$as=5Ftest=5Fx=0A-=0A-# Sed = expression to map a string onto a valid CPP name.=0A-as=5Ftr=5Fcpp=3D"eval = sed 'y%*$as=5Fcr=5Fletters%P$as=5Fcr=5FLETTERS%;s%[^=5F$as=5Fcr=5Falnum]%= =5F%g'"=0A-=0A-# Sed expression to map a string onto a valid variable name.= =0A-as=5Ftr=5Fsh=3D"eval sed 'y%*+%pp%;s%[^=5F$as=5Fcr=5Falnum]%=5F%g'"=0A-= =0A-=0A-=0A-exec 7<&0 &1=0A-=0A-# Name of the host.=0A-# hostn= ame on some systems (SVR3.2, Linux) returns a bogus exit status,=0A-# so un= ame gets run too.=0A-ac=5Fhostname=3D`(hostname || uname -n) 2>/dev/null | = sed 1q`=0A-=0A-#=0A-# Initializations.=0A-#=0A-ac=5Fdefault=5Fprefix=3D/usr= /local=0A-ac=5Fclean=5Ffiles=3D=0A-ac=5Fconfig=5Flibobj=5Fdir=3D.=0A-LIBOBJ= S=3D=0A-cross=5Fcompiling=3Dno=0A-subdirs=3D=0A-MFLAGS=3D=0A-MAKEFLAGS=3D= =0A-SHELL=3D${CONFIG=5FSHELL-/bin/sh}=0A-=0A-# Identity of this package.=0A= -PACKAGE=5FNAME=3D=0A-PACKAGE=5FTARNAME=3D=0A-PACKAGE=5FVERSION=3D=0A-PACKA= GE=5FSTRING=3D=0A-PACKAGE=5FBUGREPORT=3D=0A-=0A-ac=5Funique=5Ffile=3D"main.= c"=0A-# Factoring default headers for most tests.=0A-ac=5Fincludes=5Fdefaul= t=3D"\=0A-#include =0A-#ifdef HAVE=5FSYS=5FTYPES=5FH=0A-# include = =0A-#endif=0A-#ifdef HAVE=5FSYS=5FSTAT=5FH=0A-# include =0A-#endif=0A-#ifdef STDC=5FHEADERS=0A-# include =0A-# incl= ude =0A-#else=0A-# ifdef HAVE=5FSTDLIB=5FH=0A-# include =0A-# endif=0A-#endif=0A-#ifdef HAVE=5FSTRING=5FH=0A-# if !defined STDC= =5FHEADERS && defined HAVE=5FMEMORY=5FH=0A-# include =0A-# endif= =0A-# include =0A-#endif=0A-#ifdef HAVE=5FSTRINGS=5FH=0A-# includ= e =0A-#endif=0A-#ifdef HAVE=5FINTTYPES=5FH=0A-# include =0A-#endif=0A-#ifdef HAVE=5FSTDINT=5FH=0A-# include =0A-#endi= f=0A-#ifdef HAVE=5FUNISTD=5FH=0A-# include =0A-#endif"=0A-=0A-ac= =5Fsubst=5Fvars=3D'SHELL=0A-PATH=5FSEPARATOR=0A-PACKAGE=5FNAME=0A-PACKAGE= =5FTARNAME=0A-PACKAGE=5FVERSION=0A-PACKAGE=5FSTRING=0A-PACKAGE=5FBUGREPORT= =0A-exec=5Fprefix=0A-prefix=0A-program=5Ftransform=5Fname=0A-bindir=0A-sbin= dir=0A-libexecdir=0A-datarootdir=0A-datadir=0A-sysconfdir=0A-sharedstatedir= =0A-localstatedir=0A-includedir=0A-oldincludedir=0A-docdir=0A-infodir=0A-ht= mldir=0A-dvidir=0A-pdfdir=0A-psdir=0A-libdir=0A-localedir=0A-mandir=0A-DEFS= =0A-ECHO=5FC=0A-ECHO=5FN=0A-ECHO=5FT=0A-LIBS=0A-build=5Falias=0A-host=5Fali= as=0A-target=5Falias=0A-INSTALL=5FPROGRAM=0A-INSTALL=5FSCRIPT=0A-INSTALL=5F= DATA=0A-am=5F=5Fisrc=0A-CYGPATH=5FW=0A-PACKAGE=0A-VERSION=0A-ACLOCAL=0A-AUT= OCONF=0A-AUTOMAKE=0A-AUTOHEADER=0A-MAKEINFO=0A-install=5Fsh=0A-STRIP=0A-INS= TALL=5FSTRIP=5FPROGRAM=0A-mkdir=5Fp=0A-AWK=0A-SET=5FMAKE=0A-am=5F=5Fleading= =5Fdot=0A-AMTAR=0A-am=5F=5Ftar=0A-am=5F=5Funtar=0A-build=0A-build=5Fcpu=0A-= build=5Fvendor=0A-build=5Fos=0A-host=0A-host=5Fcpu=0A-host=5Fvendor=0A-host= =5Fos=0A-CC=0A-CFLAGS=0A-LDFLAGS=0A-CPPFLAGS=0A-ac=5Fct=5FCC=0A-EXEEXT=0A-O= BJEXT=0A-DEPDIR=0A-am=5F=5Finclude=0A-am=5F=5Fquote=0A-AMDEP=5FTRUE=0A-AMDE= P=5FFALSE=0A-AMDEPBACKSLASH=0A-CCDEPMODE=0A-am=5F=5FfastdepCC=5FTRUE=0A-am= =5F=5FfastdepCC=5FFALSE=0A-CPP=0A-GREP=0A-EGREP=0A-LIBOBJS=0A-LTLIBOBJS'=0A= -ac=5Fsubst=5Ffiles=3D''=0A- ac=5Fprecious=5Fvars=3D'build=5Falias=0A-= host=5Falias=0A-target=5Falias=0A-CC=0A-CFLAGS=0A-LDFLAGS=0A-LIBS=0A-CPPFLA= GS=0A-CPP'=0A-=0A-=0A-# Initialize some variables set by options.=0A-ac=5Fi= nit=5Fhelp=3D=0A-ac=5Finit=5Fversion=3Dfalse=0A-# The variables have the sa= me names as the options, with=0A-# dashes changed to underlines.=0A-cache= =5Ffile=3D/dev/null=0A-exec=5Fprefix=3DNONE=0A-no=5Fcreate=3D=0A-no=5Frecur= sion=3D=0A-prefix=3DNONE=0A-program=5Fprefix=3DNONE=0A-program=5Fsuffix=3DN= ONE=0A-program=5Ftransform=5Fname=3Ds,x,x,=0A-silent=3D=0A-site=3D=0A-srcdi= r=3D=0A-verbose=3D=0A-x=5Fincludes=3DNONE=0A-x=5Flibraries=3DNONE=0A-=0A-# = Installation directory options.=0A-# These are left unexpanded so users can= "make install exec=5Fprefix=3D/foo"=0A-# and all the variables that are su= pposed to be based on exec=5Fprefix=0A-# by default will actually change.= =0A-# Use braces instead of parens because sh, perl, etc. also accept them.= =0A-# (The list follows the same order as the GNU Coding Standards.)=0A-bin= dir=3D'${exec=5Fprefix}/bin'=0A-sbindir=3D'${exec=5Fprefix}/sbin'=0A-libexe= cdir=3D'${exec=5Fprefix}/libexec'=0A-datarootdir=3D'${prefix}/share'=0A-dat= adir=3D'${datarootdir}'=0A-sysconfdir=3D'${prefix}/etc'=0A-sharedstatedir= =3D'${prefix}/com'=0A-localstatedir=3D'${prefix}/var'=0A-includedir=3D'${pr= efix}/include'=0A-oldincludedir=3D'/usr/include'=0A-docdir=3D'${datarootdir= }/doc/${PACKAGE}'=0A-infodir=3D'${datarootdir}/info'=0A-htmldir=3D'${docdir= }'=0A-dvidir=3D'${docdir}'=0A-pdfdir=3D'${docdir}'=0A-psdir=3D'${docdir}'= =0A-libdir=3D'${exec=5Fprefix}/lib'=0A-localedir=3D'${datarootdir}/locale'= =0A-mandir=3D'${datarootdir}/man'=0A-=0A-ac=5Fprev=3D=0A-ac=5Fdashdash=3D= =0A-for ac=5Foption=0A-do=0A- # If the previous option needs an argument, = assign it.=0A- if test -n "$ac=5Fprev"; then=0A- eval $ac=5Fprev=3D\$ac= =5Foption=0A- ac=5Fprev=3D=0A- continue=0A- fi=0A-=0A- case $ac=5Fo= ption in=0A- *=3D*) ac=5Foptarg=3D`expr "X$ac=5Foption" : '[^=3D]*=3D\(.*\= )'` ;;=0A- *) ac=5Foptarg=3Dyes ;;=0A- esac=0A-=0A- # Accept the importa= nt Cygnus configure options, so we can diagnose typos.=0A-=0A- case $ac=5F= dashdash$ac=5Foption in=0A- --)=0A- ac=5Fdashdash=3Dyes ;;=0A-=0A- -bi= ndir | --bindir | --bindi | --bind | --bin | --bi)=0A- ac=5Fprev=3Dbindi= r ;;=0A- -bindir=3D* | --bindir=3D* | --bindi=3D* | --bind=3D* | --bin=3D*= | --bi=3D*)=0A- bindir=3D$ac=5Foptarg ;;=0A-=0A- -build | --build | --= buil | --bui | --bu)=0A- ac=5Fprev=3Dbuild=5Falias ;;=0A- -build=3D* | = --build=3D* | --buil=3D* | --bui=3D* | --bu=3D*)=0A- build=5Falias=3D$ac= =5Foptarg ;;=0A-=0A- -cache-file | --cache-file | --cache-fil | --cache-fi= \=0A- | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c)=0A-= ac=5Fprev=3Dcache=5Ffile ;;=0A- -cache-file=3D* | --cache-file=3D* | -= -cache-fil=3D* | --cache-fi=3D* \=0A- | --cache-f=3D* | --cache-=3D* | --c= ache=3D* | --cach=3D* | --cac=3D* | --ca=3D* | --c=3D*)=0A- cache=5Ffile= =3D$ac=5Foptarg ;;=0A-=0A- --config-cache | -C)=0A- cache=5Ffile=3Dconf= ig.cache ;;=0A-=0A- -datadir | --datadir | --datadi | --datad)=0A- ac= =5Fprev=3Ddatadir ;;=0A- -datadir=3D* | --datadir=3D* | --datadi=3D* | --d= atad=3D*)=0A- datadir=3D$ac=5Foptarg ;;=0A-=0A- -datarootdir | --dataro= otdir | --datarootdi | --datarootd | --dataroot \=0A- | --dataroo | --data= ro | --datar)=0A- ac=5Fprev=3Ddatarootdir ;;=0A- -datarootdir=3D* | --d= atarootdir=3D* | --datarootdi=3D* | --datarootd=3D* \=0A- | --dataroot=3D*= | --dataroo=3D* | --dataro=3D* | --datar=3D*)=0A- datarootdir=3D$ac=5Fo= ptarg ;;=0A-=0A- -disable-* | --disable-*)=0A- ac=5Ffeature=3D`expr "x$= ac=5Foption" : 'x-*disable-\(.*\)'`=0A- # Reject names that are not vali= d shell variable names.=0A- expr "x$ac=5Ffeature" : ".*[^-.=5F$as=5Fcr= =5Falnum]" >/dev/null &&=0A- { echo "$as=5Fme: error: invalid feature = name: $ac=5Ffeature" >&2=0A- { (exit 1); exit 1; }; }=0A- ac=5Ffeature= =3D`echo $ac=5Ffeature | sed 's/[-.]/=5F/g'`=0A- eval enable=5F$ac=5Ffea= ture=3Dno ;;=0A-=0A- -docdir | --docdir | --docdi | --doc | --do)=0A- a= c=5Fprev=3Ddocdir ;;=0A- -docdir=3D* | --docdir=3D* | --docdi=3D* | --doc= =3D* | --do=3D*)=0A- docdir=3D$ac=5Foptarg ;;=0A-=0A- -dvidir | --dvidi= r | --dvidi | --dvid | --dvi | --dv)=0A- ac=5Fprev=3Ddvidir ;;=0A- -dvi= dir=3D* | --dvidir=3D* | --dvidi=3D* | --dvid=3D* | --dvi=3D* | --dv=3D*)= =0A- dvidir=3D$ac=5Foptarg ;;=0A-=0A- -enable-* | --enable-*)=0A- ac= =5Ffeature=3D`expr "x$ac=5Foption" : 'x-*enable-\([^=3D]*\)'`=0A- # Reje= ct names that are not valid shell variable names.=0A- expr "x$ac=5Ffeatu= re" : ".*[^-.=5F$as=5Fcr=5Falnum]" >/dev/null &&=0A- { echo "$as=5Fme:= error: invalid feature name: $ac=5Ffeature" >&2=0A- { (exit 1); exit 1; = }; }=0A- ac=5Ffeature=3D`echo $ac=5Ffeature | sed 's/[-.]/=5F/g'`=0A- = eval enable=5F$ac=5Ffeature=3D\$ac=5Foptarg ;;=0A-=0A- -exec-prefix | --e= xec=5Fprefix | --exec-prefix | --exec-prefi \=0A- | --exec-pref | --exec-p= re | --exec-pr | --exec-p | --exec- \=0A- | --exec | --exe | --ex)=0A- = ac=5Fprev=3Dexec=5Fprefix ;;=0A- -exec-prefix=3D* | --exec=5Fprefix=3D* | = --exec-prefix=3D* | --exec-prefi=3D* \=0A- | --exec-pref=3D* | --exec-pre= =3D* | --exec-pr=3D* | --exec-p=3D* | --exec-=3D* \=0A- | --exec=3D* | --e= xe=3D* | --ex=3D*)=0A- exec=5Fprefix=3D$ac=5Foptarg ;;=0A-=0A- -gas | -= -gas | --ga | --g)=0A- # Obsolete; use --with-gas.=0A- with=5Fgas=3Dy= es ;;=0A-=0A- -help | --help | --hel | --he | -h)=0A- ac=5Finit=5Fhelp= =3Dlong ;;=0A- -help=3Dr* | --help=3Dr* | --hel=3Dr* | --he=3Dr* | -hr*)= =0A- ac=5Finit=5Fhelp=3Drecursive ;;=0A- -help=3Ds* | --help=3Ds* | --h= el=3Ds* | --he=3Ds* | -hs*)=0A- ac=5Finit=5Fhelp=3Dshort ;;=0A-=0A- -ho= st | --host | --hos | --ho)=0A- ac=5Fprev=3Dhost=5Falias ;;=0A- -host= =3D* | --host=3D* | --hos=3D* | --ho=3D*)=0A- host=5Falias=3D$ac=5Foptar= g ;;=0A-=0A- -htmldir | --htmldir | --htmldi | --htmld | --html | --htm | = --ht)=0A- ac=5Fprev=3Dhtmldir ;;=0A- -htmldir=3D* | --htmldir=3D* | --h= tmldi=3D* | --htmld=3D* | --html=3D* | --htm=3D* \=0A- | --ht=3D*)=0A- = htmldir=3D$ac=5Foptarg ;;=0A-=0A- -includedir | --includedir | --includedi= | --included | --include \=0A- | --includ | --inclu | --incl | --inc)=0A-= ac=5Fprev=3Dincludedir ;;=0A- -includedir=3D* | --includedir=3D* | --i= ncludedi=3D* | --included=3D* | --include=3D* \=0A- | --includ=3D* | --inc= lu=3D* | --incl=3D* | --inc=3D*)=0A- includedir=3D$ac=5Foptarg ;;=0A-=0A= - -infodir | --infodir | --infodi | --infod | --info | --inf)=0A- ac=5F= prev=3Dinfodir ;;=0A- -infodir=3D* | --infodir=3D* | --infodi=3D* | --info= d=3D* | --info=3D* | --inf=3D*)=0A- infodir=3D$ac=5Foptarg ;;=0A-=0A- -= libdir | --libdir | --libdi | --libd)=0A- ac=5Fprev=3Dlibdir ;;=0A- -li= bdir=3D* | --libdir=3D* | --libdi=3D* | --libd=3D*)=0A- libdir=3D$ac=5Fo= ptarg ;;=0A-=0A- -libexecdir | --libexecdir | --libexecdi | --libexecd | -= -libexec \=0A- | --libexe | --libex | --libe)=0A- ac=5Fprev=3Dlibexecdi= r ;;=0A- -libexecdir=3D* | --libexecdir=3D* | --libexecdi=3D* | --libexecd= =3D* | --libexec=3D* \=0A- | --libexe=3D* | --libex=3D* | --libe=3D*)=0A- = libexecdir=3D$ac=5Foptarg ;;=0A-=0A- -localedir | --localedir | --local= edi | --localed | --locale)=0A- ac=5Fprev=3Dlocaledir ;;=0A- -localedir= =3D* | --localedir=3D* | --localedi=3D* | --localed=3D* | --locale=3D*)=0A-= localedir=3D$ac=5Foptarg ;;=0A-=0A- -localstatedir | --localstatedir |= --localstatedi | --localstated \=0A- | --localstate | --localstat | --loc= alsta | --localst | --locals)=0A- ac=5Fprev=3Dlocalstatedir ;;=0A- -loc= alstatedir=3D* | --localstatedir=3D* | --localstatedi=3D* | --localstated= =3D* \=0A- | --localstate=3D* | --localstat=3D* | --localsta=3D* | --local= st=3D* | --locals=3D*)=0A- localstatedir=3D$ac=5Foptarg ;;=0A-=0A- -man= dir | --mandir | --mandi | --mand | --man | --ma | --m)=0A- ac=5Fprev=3D= mandir ;;=0A- -mandir=3D* | --mandir=3D* | --mandi=3D* | --mand=3D* | --ma= n=3D* | --ma=3D* | --m=3D*)=0A- mandir=3D$ac=5Foptarg ;;=0A-=0A- -nfp |= --nfp | --nf)=0A- # Obsolete; use --without-fp.=0A- with=5Ffp=3Dno ;= ;=0A-=0A- -no-create | --no-create | --no-creat | --no-crea | --no-cre \= =0A- | --no-cr | --no-c | -n)=0A- no=5Fcreate=3Dyes ;;=0A-=0A- -no-rec= ursion | --no-recursion | --no-recursio | --no-recursi \=0A- | --no-recurs= | --no-recur | --no-recu | --no-rec | --no-re | --no-r)=0A- no=5Frecurs= ion=3Dyes ;;=0A-=0A- -oldincludedir | --oldincludedir | --oldincludedi | -= -oldincluded \=0A- | --oldinclude | --oldinclud | --oldinclu | --oldincl |= --oldinc \=0A- | --oldin | --oldi | --old | --ol | --o)=0A- ac=5Fprev= =3Doldincludedir ;;=0A- -oldincludedir=3D* | --oldincludedir=3D* | --oldin= cludedi=3D* | --oldincluded=3D* \=0A- | --oldinclude=3D* | --oldinclud=3D*= | --oldinclu=3D* | --oldincl=3D* | --oldinc=3D* \=0A- | --oldin=3D* | --o= ldi=3D* | --old=3D* | --ol=3D* | --o=3D*)=0A- oldincludedir=3D$ac=5Fopta= rg ;;=0A-=0A- -prefix | --prefix | --prefi | --pref | --pre | --pr | --p)= =0A- ac=5Fprev=3Dprefix ;;=0A- -prefix=3D* | --prefix=3D* | --prefi=3D*= | --pref=3D* | --pre=3D* | --pr=3D* | --p=3D*)=0A- prefix=3D$ac=5Foptar= g ;;=0A-=0A- -program-prefix | --program-prefix | --program-prefi | --prog= ram-pref \=0A- | --program-pre | --program-pr | --program-p)=0A- ac=5Fp= rev=3Dprogram=5Fprefix ;;=0A- -program-prefix=3D* | --program-prefix=3D* |= --program-prefi=3D* \=0A- | --program-pref=3D* | --program-pre=3D* | --pr= ogram-pr=3D* | --program-p=3D*)=0A- program=5Fprefix=3D$ac=5Foptarg ;;= =0A-=0A- -program-suffix | --program-suffix | --program-suffi | --program-= suff \=0A- | --program-suf | --program-su | --program-s)=0A- ac=5Fprev= =3Dprogram=5Fsuffix ;;=0A- -program-suffix=3D* | --program-suffix=3D* | --= program-suffi=3D* \=0A- | --program-suff=3D* | --program-suf=3D* | --progr= am-su=3D* | --program-s=3D*)=0A- program=5Fsuffix=3D$ac=5Foptarg ;;=0A-= =0A- -program-transform-name | --program-transform-name \=0A- | --program= -transform-nam | --program-transform-na \=0A- | --program-transform-n | --= program-transform- \=0A- | --program-transform | --program-transfor \=0A- = | --program-transfo | --program-transf \=0A- | --program-trans | --progra= m-tran \=0A- | --progr-tra | --program-tr | --program-t)=0A- ac=5Fprev= =3Dprogram=5Ftransform=5Fname ;;=0A- -program-transform-name=3D* | --progr= am-transform-name=3D* \=0A- | --program-transform-nam=3D* | --program-tran= sform-na=3D* \=0A- | --program-transform-n=3D* | --program-transform-=3D* = \=0A- | --program-transform=3D* | --program-transfor=3D* \=0A- | --progra= m-transfo=3D* | --program-transf=3D* \=0A- | --program-trans=3D* | --progr= am-tran=3D* \=0A- | --progr-tra=3D* | --program-tr=3D* | --program-t=3D*)= =0A- program=5Ftransform=5Fname=3D$ac=5Foptarg ;;=0A-=0A- -pdfdir | --p= dfdir | --pdfdi | --pdfd | --pdf | --pd)=0A- ac=5Fprev=3Dpdfdir ;;=0A- = -pdfdir=3D* | --pdfdir=3D* | --pdfdi=3D* | --pdfd=3D* | --pdf=3D* | --pd=3D= *)=0A- pdfdir=3D$ac=5Foptarg ;;=0A-=0A- -psdir | --psdir | --psdi | --p= sd | --ps)=0A- ac=5Fprev=3Dpsdir ;;=0A- -psdir=3D* | --psdir=3D* | --ps= di=3D* | --psd=3D* | --ps=3D*)=0A- psdir=3D$ac=5Foptarg ;;=0A-=0A- -q |= -quiet | --quiet | --quie | --qui | --qu | --q \=0A- | -silent | --silent= | --silen | --sile | --sil)=0A- silent=3Dyes ;;=0A-=0A- -sbindir | --s= bindir | --sbindi | --sbind | --sbin | --sbi | --sb)=0A- ac=5Fprev=3Dsbi= ndir ;;=0A- -sbindir=3D* | --sbindir=3D* | --sbindi=3D* | --sbind=3D* | --= sbin=3D* \=0A- | --sbi=3D* | --sb=3D*)=0A- sbindir=3D$ac=5Foptarg ;;=0A= -=0A- -sharedstatedir | --sharedstatedir | --sharedstatedi \=0A- | --shar= edstated | --sharedstate | --sharedstat | --sharedsta \=0A- | --sharedst |= --shareds | --shared | --share | --shar \=0A- | --sha | --sh)=0A- ac= =5Fprev=3Dsharedstatedir ;;=0A- -sharedstatedir=3D* | --sharedstatedir=3D*= | --sharedstatedi=3D* \=0A- | --sharedstated=3D* | --sharedstate=3D* | --= sharedstat=3D* | --sharedsta=3D* \=0A- | --sharedst=3D* | --shareds=3D* | = --shared=3D* | --share=3D* | --shar=3D* \=0A- | --sha=3D* | --sh=3D*)=0A- = sharedstatedir=3D$ac=5Foptarg ;;=0A-=0A- -site | --site | --sit)=0A- = ac=5Fprev=3Dsite ;;=0A- -site=3D* | --site=3D* | --sit=3D*)=0A- site= =3D$ac=5Foptarg ;;=0A-=0A- -srcdir | --srcdir | --srcdi | --srcd | --src |= --sr)=0A- ac=5Fprev=3Dsrcdir ;;=0A- -srcdir=3D* | --srcdir=3D* | --src= di=3D* | --srcd=3D* | --src=3D* | --sr=3D*)=0A- srcdir=3D$ac=5Foptarg ;;= =0A-=0A- -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf= \=0A- | --syscon | --sysco | --sysc | --sys | --sy)=0A- ac=5Fprev=3Dsy= sconfdir ;;=0A- -sysconfdir=3D* | --sysconfdir=3D* | --sysconfdi=3D* | --s= ysconfd=3D* | --sysconf=3D* \=0A- | --syscon=3D* | --sysco=3D* | --sysc=3D= * | --sys=3D* | --sy=3D*)=0A- sysconfdir=3D$ac=5Foptarg ;;=0A-=0A- -tar= get | --target | --targe | --targ | --tar | --ta | --t)=0A- ac=5Fprev=3D= target=5Falias ;;=0A- -target=3D* | --target=3D* | --targe=3D* | --targ=3D= * | --tar=3D* | --ta=3D* | --t=3D*)=0A- target=5Falias=3D$ac=5Foptarg ;;= =0A-=0A- -v | -verbose | --verbose | --verbos | --verbo | --verb)=0A- v= erbose=3Dyes ;;=0A-=0A- -version | --version | --versio | --versi | --vers= | -V)=0A- ac=5Finit=5Fversion=3D: ;;=0A-=0A- -with-* | --with-*)=0A- = ac=5Fpackage=3D`expr "x$ac=5Foption" : 'x-*with-\([^=3D]*\)'`=0A- # Re= ject names that are not valid shell variable names.=0A- expr "x$ac=5Fpac= kage" : ".*[^-.=5F$as=5Fcr=5Falnum]" >/dev/null &&=0A- { echo "$as=5Fm= e: error: invalid package name: $ac=5Fpackage" >&2=0A- { (exit 1); exit 1= ; }; }=0A- ac=5Fpackage=3D`echo $ac=5Fpackage | sed 's/[-.]/=5F/g'`=0A- = eval with=5F$ac=5Fpackage=3D\$ac=5Foptarg ;;=0A-=0A- -without-* | --wit= hout-*)=0A- ac=5Fpackage=3D`expr "x$ac=5Foption" : 'x-*without-\(.*\)'`= =0A- # Reject names that are not valid shell variable names.=0A- expr= "x$ac=5Fpackage" : ".*[^-.=5F$as=5Fcr=5Falnum]" >/dev/null &&=0A- { e= cho "$as=5Fme: error: invalid package name: $ac=5Fpackage" >&2=0A- { (exi= t 1); exit 1; }; }=0A- ac=5Fpackage=3D`echo $ac=5Fpackage | sed 's/[-.]/= =5F/g'`=0A- eval with=5F$ac=5Fpackage=3Dno ;;=0A-=0A- --x)=0A- # Obs= olete; use --with-x.=0A- with=5Fx=3Dyes ;;=0A-=0A- -x-includes | --x-in= cludes | --x-include | --x-includ | --x-inclu \=0A- | --x-incl | --x-inc |= --x-in | --x-i)=0A- ac=5Fprev=3Dx=5Fincludes ;;=0A- -x-includes=3D* | = --x-includes=3D* | --x-include=3D* | --x-includ=3D* | --x-inclu=3D* \=0A- = | --x-incl=3D* | --x-inc=3D* | --x-in=3D* | --x-i=3D*)=0A- x=5Fincludes= =3D$ac=5Foptarg ;;=0A-=0A- -x-libraries | --x-libraries | --x-librarie | -= -x-librari \=0A- | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | = --x-l)=0A- ac=5Fprev=3Dx=5Flibraries ;;=0A- -x-libraries=3D* | --x-libr= aries=3D* | --x-librarie=3D* | --x-librari=3D* \=0A- | --x-librar=3D* | --= x-libra=3D* | --x-libr=3D* | --x-lib=3D* | --x-li=3D* | --x-l=3D*)=0A- x= =5Flibraries=3D$ac=5Foptarg ;;=0A-=0A- -*) { echo "$as=5Fme: error: unreco= gnized option: $ac=5Foption=0A-Try \`$0 --help' for more information." >&2= =0A- { (exit 1); exit 1; }; }=0A- ;;=0A-=0A- *=3D*)=0A- ac=5Fenvva= r=3D`expr "x$ac=5Foption" : 'x\([^=3D]*\)=3D'`=0A- # Reject names that a= re not valid shell variable names.=0A- expr "x$ac=5Fenvvar" : ".*[^=5F$a= s=5Fcr=5Falnum]" >/dev/null &&=0A- { echo "$as=5Fme: error: invalid va= riable name: $ac=5Fenvvar" >&2=0A- { (exit 1); exit 1; }; }=0A- eval $= ac=5Fenvvar=3D\$ac=5Foptarg=0A- export $ac=5Fenvvar ;;=0A-=0A- *)=0A- = # FIXME: should be removed in autoconf 3.0.=0A- echo "$as=5Fme: WARNIN= G: you should use --build, --host, --target" >&2=0A- expr "x$ac=5Foption= " : ".*[^-.=5F$as=5Fcr=5Falnum]" >/dev/null &&=0A- echo "$as=5Fme: WAR= NING: invalid host type: $ac=5Foption" >&2=0A- : ${build=5Falias=3D$ac= =5Foption} ${host=5Falias=3D$ac=5Foption} ${target=5Falias=3D$ac=5Foption}= =0A- ;;=0A-=0A- esac=0A-done=0A-=0A-if test -n "$ac=5Fprev"; then=0A- = ac=5Foption=3D--`echo $ac=5Fprev | sed 's/=5F/-/g'`=0A- { echo "$as=5Fme: = error: missing argument to $ac=5Foption" >&2=0A- { (exit 1); exit 1; }; }= =0A-fi=0A-=0A-# Be sure to have absolute directory names.=0A-for ac=5Fvar i= n exec=5Fprefix prefix bindir sbindir libexecdir datarootdir \=0A- datadir= sysconfdir sharedstatedir localstatedir includedir \=0A- oldincludedir do= cdir infodir htmldir dvidir pdfdir psdir \=0A- libdir localedir mandir=0A-= do=0A- eval ac=5Fval=3D\$$ac=5Fvar=0A- case $ac=5Fval in=0A- [\\/$]* |= ?:[\\/]* ) continue;;=0A- NONE | '' ) case $ac=5Fvar in *prefix ) cont= inue;; esac;;=0A- esac=0A- { echo "$as=5Fme: error: expected an absolute = directory name for --$ac=5Fvar: $ac=5Fval" >&2=0A- { (exit 1); exit 1; };= }=0A-done=0A-=0A-# There might be people who depend on the old broken beha= vior: `$host'=0A-# used to hold the argument of --host etc.=0A-# FIXME: To = remove some day.=0A-build=3D$build=5Falias=0A-host=3D$host=5Falias=0A-targe= t=3D$target=5Falias=0A-=0A-# FIXME: To remove some day.=0A-if test "x$host= =5Falias" !=3D x; then=0A- if test "x$build=5Falias" =3D x; then=0A- cr= oss=5Fcompiling=3Dmaybe=0A- echo "$as=5Fme: WARNING: If you wanted to se= t the --build type, don't use --host.=0A- If a cross compiler is detecte= d then cross compile mode will be used." >&2=0A- elif test "x$build=5Falia= s" !=3D "x$host=5Falias"; then=0A- cross=5Fcompiling=3Dyes=0A- fi=0A-fi= =0A-=0A-ac=5Ftool=5Fprefix=3D=0A-test -n "$host=5Falias" && ac=5Ftool=5Fpre= fix=3D$host=5Falias-=0A-=0A-test "$silent" =3D yes && exec 6>/dev/null=0A-= =0A-=0A-ac=5Fpwd=3D`pwd` && test -n "$ac=5Fpwd" &&=0A-ac=5Fls=5Fdi=3D`ls -d= i .` &&=0A-ac=5Fpwd=5Fls=5Fdi=3D`cd "$ac=5Fpwd" && ls -di .` ||=0A- { echo= "$as=5Fme: error: Working directory cannot be determined" >&2=0A- { (exi= t 1); exit 1; }; }=0A-test "X$ac=5Fls=5Fdi" =3D "X$ac=5Fpwd=5Fls=5Fdi" ||= =0A- { echo "$as=5Fme: error: pwd does not report name of working director= y" >&2=0A- { (exit 1); exit 1; }; }=0A-=0A-=0A-# Find the source files, i= f location was not specified.=0A-if test -z "$srcdir"; then=0A- ac=5Fsrcdi= r=5Fdefaulted=3Dyes=0A- # Try the directory containing this script, then t= he parent directory.=0A- ac=5Fconfdir=3D`$as=5Fdirname -- "$0" ||=0A-$as= =5Fexpr X"$0" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \=0A- X"$0" : 'X\(//\)[^/]= ' \| \=0A- X"$0" : 'X\(//\)$' \| \=0A- X"$0" : 'X\(/\)' \| . 2>/dev/null = ||=0A-echo X"$0" |=0A- sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{=0A- s/= /\1/=0A- q=0A- }=0A- /^X\(\/\/\)[^/].*/{=0A- s//\1/=0A- q= =0A- }=0A- /^X\(\/\/\)$/{=0A- s//\1/=0A- q=0A- }=0A- /^X\(\= /\).*/{=0A- s//\1/=0A- q=0A- }=0A- s/.*/./; q'`=0A- srcdir=3D$= ac=5Fconfdir=0A- if test ! -r "$srcdir/$ac=5Funique=5Ffile"; then=0A- s= rcdir=3D..=0A- fi=0A-else=0A- ac=5Fsrcdir=5Fdefaulted=3Dno=0A-fi=0A-if te= st ! -r "$srcdir/$ac=5Funique=5Ffile"; then=0A- test "$ac=5Fsrcdir=5Fdefau= lted" =3D yes && srcdir=3D"$ac=5Fconfdir or .."=0A- { echo "$as=5Fme: erro= r: cannot find sources ($ac=5Funique=5Ffile) in $srcdir" >&2=0A- { (exit = 1); exit 1; }; }=0A-fi=0A-ac=5Fmsg=3D"sources are in $srcdir, but \`cd $src= dir' does not work"=0A-ac=5Fabs=5Fconfdir=3D`(=0A- cd "$srcdir" && test -r = "./$ac=5Funique=5Ffile" || { echo "$as=5Fme: error: $ac=5Fmsg" >&2=0A- { = (exit 1); exit 1; }; }=0A- pwd)`=0A-# When building in place, set srcdir=3D= .=0A-if test "$ac=5Fabs=5Fconfdir" =3D "$ac=5Fpwd"; then=0A- srcdir=3D.=0A= -fi=0A-# Remove unnecessary trailing slashes from srcdir.=0A-# Double slash= es in file names in object file debugging info=0A-# mess up M-x gdb in Emac= s.=0A-case $srcdir in=0A-*/) srcdir=3D`expr "X$srcdir" : 'X\(.*[^/]\)' \| "= X$srcdir" : 'X\(.*\)'`;;=0A-esac=0A-for ac=5Fvar in $ac=5Fprecious=5Fvars; = do=0A- eval ac=5Fenv=5F${ac=5Fvar}=5Fset=3D\${${ac=5Fvar}+set}=0A- eval a= c=5Fenv=5F${ac=5Fvar}=5Fvalue=3D\$${ac=5Fvar}=0A- eval ac=5Fcv=5Fenv=5F${a= c=5Fvar}=5Fset=3D\${${ac=5Fvar}+set}=0A- eval ac=5Fcv=5Fenv=5F${ac=5Fvar}= =5Fvalue=3D\$${ac=5Fvar}=0A-done=0A-=0A-#=0A-# Report the --help message.= =0A-#=0A-if test "$ac=5Finit=5Fhelp" =3D "long"; then=0A- # Omit some inte= rnal or obsolete options to make the list less imposing.=0A- # This messag= e is too long to be a string in the A/UX 3.1 sh.=0A- cat <<=5FACEOF=0A-\`c= onfigure' configures this package to adapt to many kinds of systems.=0A-=0A= -Usage: $0 [OPTION]... [VAR=3DVALUE]...=0A-=0A-To assign environment variab= les (e.g., CC, CFLAGS...), specify them as=0A-VAR=3DVALUE. See below for d= escriptions of some of the useful variables.=0A-=0A-Defaults for the option= s are specified in brackets.=0A-=0A-Configuration:=0A- -h, --help = display this help and exit=0A- --help=3Dshort display opti= ons specific to this package=0A- --help=3Drecursive display the sho= rt help of all the included packages=0A- -V, --version display v= ersion information and exit=0A- -q, --quiet, --silent do not print \`che= cking...' messages=0A- --cache-file=3DFILE cache test results in FIL= E [disabled]=0A- -C, --config-cache alias for \`--cache-file=3Dconfig= .cache'=0A- -n, --no-create do not create output files=0A- --= srcdir=3DDIR find the sources in DIR [configure dir or \`..']=0A-=0A= -Installation directories:=0A- --prefix=3DPREFIX install architect= ure-independent files in PREFIX=0A- [$ac=5Fdefault=5Fprefix]=0A- --exe= c-prefix=3DEPREFIX install architecture-dependent files in EPREFIX=0A- = [PREFIX]=0A-=0A-By default, \`make install' will install all the files in= =0A-\`$ac=5Fdefault=5Fprefix/bin', \`$ac=5Fdefault=5Fprefix/lib' etc. You = can specify=0A-an installation prefix other than \`$ac=5Fdefault=5Fprefix' = using \`--prefix',=0A-for instance \`--prefix=3D\$HOME'.=0A-=0A-For better = control, use the options below.=0A-=0A-Fine tuning of the installation dire= ctories:=0A- --bindir=3DDIR user executables [EPREFIX/bin]=0A- = --sbindir=3DDIR system admin executables [EPREFIX/sbin]=0A- --lib= execdir=3DDIR program executables [EPREFIX/libexec]=0A- --sysconfdir= =3DDIR read-only single-machine data [PREFIX/etc]=0A- --sharedstated= ir=3DDIR modifiable architecture-independent data [PREFIX/com]=0A- --loc= alstatedir=3DDIR modifiable single-machine data [PREFIX/var]=0A- --libd= ir=3DDIR object code libraries [EPREFIX/lib]=0A- --includedir=3D= DIR C header files [PREFIX/include]=0A- --oldincludedir=3DDIR C h= eader files for non-gcc [/usr/include]=0A- --datarootdir=3DDIR read-o= nly arch.-independent data root [PREFIX/share]=0A- --datadir=3DDIR = read-only architecture-independent data [DATAROOTDIR]=0A- --infodir=3DDI= R info documentation [DATAROOTDIR/info]=0A- --localedir=3DDIR = locale-dependent data [DATAROOTDIR/locale]=0A- --mandir=3DDIR = man documentation [DATAROOTDIR/man]=0A- --docdir=3DDIR documen= tation root [DATAROOTDIR/doc/PACKAGE]=0A- --htmldir=3DDIR html do= cumentation [DOCDIR]=0A- --dvidir=3DDIR dvi documentation [DOCDI= R]=0A- --pdfdir=3DDIR pdf documentation [DOCDIR]=0A- --psdir=3D= DIR ps documentation [DOCDIR]=0A-=5FACEOF=0A-=0A- cat <<\=5FACE= OF=0A-=0A-Program names:=0A- --program-prefix=3DPREFIX prepend = PREFIX to installed program names=0A- --program-suffix=3DSUFFIX = append SUFFIX to installed program names=0A- --program-transform-name=3DP= ROGRAM run sed PROGRAM on installed program names=0A-=0A-System types:=0A= - --build=3DBUILD configure for building on BUILD [guessed]=0A- --hos= t=3DHOST cross-compile to build programs to run on HOST [BUILD]=0A-= =5FACEOF=0A-fi=0A-=0A-if test -n "$ac=5Finit=5Fhelp"; then=0A-=0A- cat <<\= =5FACEOF=0A-=0A-Optional Features:=0A- --disable-FEATURE do not incl= ude FEATURE (same as --enable-FEATURE=3Dno)=0A- --enable-FEATURE[=3DARG] = include FEATURE [ARG=3Dyes]=0A- --disable-dependency-tracking speeds up o= ne-time build=0A- --enable-dependency-tracking do not reject slow depend= ency extractors=0A-=0A-Some influential environment variables:=0A- CC = C compiler command=0A- CFLAGS C compiler flags=0A- LDFLAGS = linker flags, e.g. -L if you have libraries in a=0A- = nonstandard directory =0A- LIBS libraries to pass to the l= inker, e.g. -l=0A- CPPFLAGS C/C++/Objective C preprocessor fla= gs, e.g. -I if=0A- you have headers in a nonstand= ard directory =0A- CPP C preprocessor=0A-=0A-Use thes= e variables to override the choices made by `configure' or to help=0A-it to= find libraries and programs with nonstandard names/locations.=0A-=0A-=5FAC= EOF=0A-ac=5Fstatus=3D$?=0A-fi=0A-=0A-if test "$ac=5Finit=5Fhelp" =3D "recur= sive"; then=0A- # If there are subdirs, report their specific --help.=0A- = for ac=5Fdir in : $ac=5Fsubdirs=5Fall; do test "x$ac=5Fdir" =3D x: && cont= inue=0A- test -d "$ac=5Fdir" || continue=0A- ac=5Fbuilddir=3D.=0A-=0A= -case "$ac=5Fdir" in=0A-.) ac=5Fdir=5Fsuffix=3D ac=5Ftop=5Fbuilddir=5Fsub= =3D. ac=5Ftop=5Fbuild=5Fprefix=3D ;;=0A-*)=0A- ac=5Fdir=5Fsuffix=3D/`echo = "$ac=5Fdir" | sed 's,^\.[\\/],,'`=0A- # A ".." for each directory in $ac= =5Fdir=5Fsuffix.=0A- ac=5Ftop=5Fbuilddir=5Fsub=3D`echo "$ac=5Fdir=5Fsuffix= " | sed 's,/[^\\/]*,/..,g;s,/,,'`=0A- case $ac=5Ftop=5Fbuilddir=5Fsub in= =0A- "") ac=5Ftop=5Fbuilddir=5Fsub=3D. ac=5Ftop=5Fbuild=5Fprefix=3D ;;=0A-= *) ac=5Ftop=5Fbuild=5Fprefix=3D$ac=5Ftop=5Fbuilddir=5Fsub/ ;;=0A- esac = ;;=0A-esac=0A-ac=5Fabs=5Ftop=5Fbuilddir=3D$ac=5Fpwd=0A-ac=5Fabs=5Fbuilddir= =3D$ac=5Fpwd$ac=5Fdir=5Fsuffix=0A-# for backward compatibility:=0A-ac=5Ftop= =5Fbuilddir=3D$ac=5Ftop=5Fbuild=5Fprefix=0A-=0A-case $srcdir in=0A- .) # = We are building in place.=0A- ac=5Fsrcdir=3D.=0A- ac=5Ftop=5Fsrcdir= =3D$ac=5Ftop=5Fbuilddir=5Fsub=0A- ac=5Fabs=5Ftop=5Fsrcdir=3D$ac=5Fpwd ;;= =0A- [\\/]* | ?:[\\/]* ) # Absolute name.=0A- ac=5Fsrcdir=3D$srcdir$ac= =5Fdir=5Fsuffix;=0A- ac=5Ftop=5Fsrcdir=3D$srcdir=0A- ac=5Fabs=5Ftop= =5Fsrcdir=3D$srcdir ;;=0A- *) # Relative name.=0A- ac=5Fsrcdir=3D$ac=5F= top=5Fbuild=5Fprefix$srcdir$ac=5Fdir=5Fsuffix=0A- ac=5Ftop=5Fsrcdir=3D$a= c=5Ftop=5Fbuild=5Fprefix$srcdir=0A- ac=5Fabs=5Ftop=5Fsrcdir=3D$ac=5Fpwd/= $srcdir ;;=0A-esac=0A-ac=5Fabs=5Fsrcdir=3D$ac=5Fabs=5Ftop=5Fsrcdir$ac=5Fdir= =5Fsuffix=0A-=0A- cd "$ac=5Fdir" || { ac=5Fstatus=3D$?; continue; }=0A- = # Check for guested configure.=0A- if test -f "$ac=5Fsrcdir/configure= .gnu"; then=0A- echo &&=0A- $SHELL "$ac=5Fsrcdir/configure.gnu" -= -help=3Drecursive=0A- elif test -f "$ac=5Fsrcdir/configure"; then=0A- = echo &&=0A- $SHELL "$ac=5Fsrcdir/configure" --help=3Drecursive=0A- = else=0A- echo "$as=5Fme: WARNING: no configuration information is i= n $ac=5Fdir" >&2=0A- fi || ac=5Fstatus=3D$?=0A- cd "$ac=5Fpwd" || { a= c=5Fstatus=3D$?; break; }=0A- done=0A-fi=0A-=0A-test -n "$ac=5Finit=5Fhelp= " && exit $ac=5Fstatus=0A-if $ac=5Finit=5Fversion; then=0A- cat <<\=5FACEO= F=0A-configure=0A-generated by GNU Autoconf 2.61=0A-=0A-Copyright (C) 1992,= 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001,=0A-2002, 2003, 2004, 2005,= 2006 Free Software Foundation, Inc.=0A-This configure script is free softw= are; the Free Software Foundation=0A-gives unlimited permission to copy, di= stribute and modify it.=0A-=5FACEOF=0A- exit=0A-fi=0A-cat >config.log <<= =5FACEOF=0A-This file contains any messages produced by compilers while=0A-= running configure, to aid debugging if configure makes a mistake.=0A-=0A-It= was created by $as=5Fme, which was=0A-generated by GNU Autoconf 2.61. Inv= ocation command line was=0A-=0A- $ $0 $@=0A-=0A-=5FACEOF=0A-exec 5>>config= .log=0A-{=0A-cat <<=5FASUNAME=0A-## --------- ##=0A-## Platform. ##=0A-## -= -------- ##=0A-=0A-hostname =3D `(hostname || uname -n) 2>/dev/null | sed 1= q`=0A-uname -m =3D `(uname -m) 2>/dev/null || echo unknown`=0A-uname -r =3D= `(uname -r) 2>/dev/null || echo unknown`=0A-uname -s =3D `(uname -s) 2>/de= v/null || echo unknown`=0A-uname -v =3D `(uname -v) 2>/dev/null || echo unk= nown`=0A-=0A-/usr/bin/uname -p =3D `(/usr/bin/uname -p) 2>/dev/null || echo= unknown`=0A-/bin/uname -X =3D `(/bin/uname -X) 2>/dev/null || echo= unknown`=0A-=0A-/bin/arch =3D `(/bin/arch) 2>/dev/null = || echo unknown`=0A-/usr/bin/arch -k =3D `(/usr/bin/arch -k) 2= >/dev/null || echo unknown`=0A-/usr/convex/getsysinfo =3D `(/usr/conv= ex/getsysinfo) 2>/dev/null || echo unknown`=0A-/usr/bin/hostinfo =3D `= (/usr/bin/hostinfo) 2>/dev/null || echo unknown`=0A-/bin/machine = =3D `(/bin/machine) 2>/dev/null || echo unknown`=0A-/usr/bin= /oslevel =3D `(/usr/bin/oslevel) 2>/dev/null || echo unknown`= =0A-/bin/universe =3D `(/bin/universe) 2>/dev/null || ech= o unknown`=0A-=0A-=5FASUNAME=0A-=0A-as=5Fsave=5FIFS=3D$IFS; IFS=3D$PATH=5FS= EPARATOR=0A-for as=5Fdir in $PATH=0A-do=0A- IFS=3D$as=5Fsave=5FIFS=0A- te= st -z "$as=5Fdir" && as=5Fdir=3D.=0A- echo "PATH: $as=5Fdir"=0A-done=0A-IF= S=3D$as=5Fsave=5FIFS=0A-=0A-} >&5=0A-=0A-cat >&5 <<=5FACEOF=0A-=0A-=0A-## -= ---------- ##=0A-## Core tests. ##=0A-## ----------- ##=0A-=0A-=5FACEOF=0A-= =0A-=0A-# Keep a trace of the command line.=0A-# Strip out --no-create and = --no-recursion so they do not pile up.=0A-# Strip out --silent because we d= on't want to record it for future runs.=0A-# Also quote any args containing= shell meta-characters.=0A-# Make two passes to allow for proper duplicate-= argument suppression.=0A-ac=5Fconfigure=5Fargs=3D=0A-ac=5Fconfigure=5Fargs0= =3D=0A-ac=5Fconfigure=5Fargs1=3D=0A-ac=5Fmust=5Fkeep=5Fnext=3Dfalse=0A-for = ac=5Fpass in 1 2=0A-do=0A- for ac=5Farg=0A- do=0A- case $ac=5Farg in= =0A- -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;;=0A= - -q | -quiet | --quiet | --quie | --qui | --qu | --q \=0A- | -silent= | --silent | --silen | --sile | --sil)=0A- continue ;;=0A- *\'*)= =0A- ac=5Farg=3D`echo "$ac=5Farg" | sed "s/'/'\\\\\\\\''/g"` ;;=0A- = esac=0A- case $ac=5Fpass in=0A- 1) ac=5Fconfigure=5Fargs0=3D"$ac=5Fc= onfigure=5Fargs0 '$ac=5Farg'" ;;=0A- 2)=0A- ac=5Fconfigure=5Fargs1= =3D"$ac=5Fconfigure=5Fargs1 '$ac=5Farg'"=0A- if test $ac=5Fmust=5Fkeep= =5Fnext =3D true; then=0A- ac=5Fmust=5Fkeep=5Fnext=3Dfalse # Got value, bac= k to normal.=0A- else=0A- case $ac=5Farg in=0A- *=3D* | --config-cac= he | -C | -disable-* | --disable-* \=0A- | -enable-* | --enable-* | -gas = | --g* | -nfp | --nf* \=0A- | -q | -quiet | --q* | -silent | --sil* | -v = | -verb* \=0A- | -with-* | --with-* | -without-* | --without-* | --x)=0A-= case "$ac=5Fconfigure=5Fargs0 " in=0A- "$ac=5Fconfigure=5Fargs1"= *" '$ac=5Farg' "* ) continue ;;=0A- esac=0A- ;;=0A- -* ) ac=5Fmus= t=5Fkeep=5Fnext=3Dtrue ;;=0A- esac=0A- fi=0A- ac=5Fconfigure=5Far= gs=3D"$ac=5Fconfigure=5Fargs '$ac=5Farg'"=0A- ;;=0A- esac=0A- done= =0A-done=0A-$as=5Funset ac=5Fconfigure=5Fargs0 || test "${ac=5Fconfigure=5F= args0+set}" !=3D set || { ac=5Fconfigure=5Fargs0=3D; export ac=5Fconfigure= =5Fargs0; }=0A-$as=5Funset ac=5Fconfigure=5Fargs1 || test "${ac=5Fconfigure= =5Fargs1+set}" !=3D set || { ac=5Fconfigure=5Fargs1=3D; export ac=5Fconfigu= re=5Fargs1; }=0A-=0A-# When interrupted or exit'd, cleanup temporary files,= and complete=0A-# config.log. We remove comments because anyway the quote= s in there=0A-# would cause problems or look ugly.=0A-# WARNING: Use '\'' t= o represent an apostrophe within the trap.=0A-# WARNING: Do not start the t= rap code with a newline, due to a FreeBSD 4.0 bug.=0A-trap 'exit=5Fstatus= =3D$?=0A- # Save into config.log some information that might help in debug= ging.=0A- {=0A- echo=0A-=0A- cat <<\=5FASBOX=0A-## ---------------- = ##=0A-## Cache variables. ##=0A-## ---------------- ##=0A-=5FASBOX=0A- e= cho=0A- # The following way of writing the cache mishandles newlines in = values,=0A-(=0A- for ac=5Fvar in `(set) 2>&1 | sed -n '\''s/^\([a-zA-Z=5F]= [a-zA-Z0-9=5F]*\)=3D.*/\1/p'\''`; do=0A- eval ac=5Fval=3D\$$ac=5Fvar=0A-= case $ac=5Fval in #(=0A- *${as=5Fnl}*)=0A- case $ac=5Fvar in #(= =0A- *=5Fcv=5F*) { echo "$as=5Fme:$LINENO: WARNING: Cache variable $ac= =5Fvar contains a newline." >&5=0A-echo "$as=5Fme: WARNING: Cache variable = $ac=5Fvar contains a newline." >&2;} ;;=0A- esac=0A- case $ac=5Fv= ar in #(=0A- =5F | IFS | as=5Fnl) ;; #(=0A- *) $as=5Funset $ac=5F= var ;;=0A- esac ;;=0A- esac=0A- done=0A- (set) 2>&1 |=0A- case= $as=5Fnl`(ac=5Fspace=3D'\'' '\''; set) 2>&1` in #(=0A- *${as=5Fnl}ac=5F= space=3D\ *)=0A- sed -n \=0A- "s/'\''/'\''\\\\'\'''\''/g;=0A- s/^\\(= [=5F$as=5Fcr=5Falnum]*=5Fcv=5F[=5F$as=5Fcr=5Falnum]*\\)=3D\\(.*\\)/\\1=3D'\= ''\\2'\''/p"=0A- ;; #(=0A- *)=0A- sed -n "/^[=5F$as=5Fcr=5Faln= um]*=5Fcv=5F[=5F$as=5Fcr=5Falnum]*=3D/p"=0A- ;;=0A- esac |=0A- s= ort=0A-)=0A- echo=0A-=0A- cat <<\=5FASBOX=0A-## ----------------- ##= =0A-## Output variables. ##=0A-## ----------------- ##=0A-=5FASBOX=0A- e= cho=0A- for ac=5Fvar in $ac=5Fsubst=5Fvars=0A- do=0A- eval ac=5F= val=3D\$$ac=5Fvar=0A- case $ac=5Fval in=0A- *\'\''*) ac=5Fval=3D`= echo "$ac=5Fval" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;;=0A- esac=0A-= echo "$ac=5Fvar=3D'\''$ac=5Fval'\''"=0A- done | sort=0A- echo= =0A-=0A- if test -n "$ac=5Fsubst=5Ffiles"; then=0A- cat <<\=5FASBOX= =0A-## ------------------- ##=0A-## File substitutions. ##=0A-## ----------= --------- ##=0A-=5FASBOX=0A- echo=0A- for ac=5Fvar in $ac=5Fsubst= =5Ffiles=0A- do=0A- eval ac=5Fval=3D\$$ac=5Fvar=0A- case $ac=5Fval in= =0A- *\'\''*) ac=5Fval=3D`echo "$ac=5Fval" | sed "s/'\''/'\''\\\\\\\\'\'''\= ''/g"`;;=0A- esac=0A- echo "$ac=5Fvar=3D'\''$ac=5Fval'\''"=0A- done | = sort=0A- echo=0A- fi=0A-=0A- if test -s confdefs.h; then=0A- = cat <<\=5FASBOX=0A-## ----------- ##=0A-## confdefs.h. ##=0A-## ---------= -- ##=0A-=5FASBOX=0A- echo=0A- cat confdefs.h=0A- echo=0A- = fi=0A- test "$ac=5Fsignal" !=3D 0 &&=0A- echo "$as=5Fme: caught s= ignal $ac=5Fsignal"=0A- echo "$as=5Fme: exit $exit=5Fstatus"=0A- } >&5= =0A- rm -f core *.core core.conftest.* &&=0A- rm -f -r conftest* confde= fs* conf$$* $ac=5Fclean=5Ffiles &&=0A- exit $exit=5Fstatus=0A-' 0=0A-for= ac=5Fsignal in 1 2 13 15; do=0A- trap 'ac=5Fsignal=3D'$ac=5Fsignal'; { (e= xit 1); exit 1; }' $ac=5Fsignal=0A-done=0A-ac=5Fsignal=3D0=0A-=0A-# confdef= s.h avoids OS command line length limits that DEFS can exceed.=0A-rm -f -r = conftest* confdefs.h=0A-=0A-# Predefined preprocessor variables.=0A-=0A-cat= >>confdefs.h <<=5FACEOF=0A-#define PACKAGE=5FNAME "$PACKAGE=5FNAME"=0A-=5F= ACEOF=0A-=0A-=0A-cat >>confdefs.h <<=5FACEOF=0A-#define PACKAGE=5FTARNAME "= $PACKAGE=5FTARNAME"=0A-=5FACEOF=0A-=0A-=0A-cat >>confdefs.h <<=5FACEOF=0A-#= define PACKAGE=5FVERSION "$PACKAGE=5FVERSION"=0A-=5FACEOF=0A-=0A-=0A-cat >>= confdefs.h <<=5FACEOF=0A-#define PACKAGE=5FSTRING "$PACKAGE=5FSTRING"=0A-= =5FACEOF=0A-=0A-=0A-cat >>confdefs.h <<=5FACEOF=0A-#define PACKAGE=5FBUGREP= ORT "$PACKAGE=5FBUGREPORT"=0A-=5FACEOF=0A-=0A-=0A-# Let the site file selec= t an alternate cache file if it wants to.=0A-# Prefer explicitly selected f= ile to automatically selected ones.=0A-if test -n "$CONFIG=5FSITE"; then=0A= - set x "$CONFIG=5FSITE"=0A-elif test "x$prefix" !=3D xNONE; then=0A- set= x "$prefix/share/config.site" "$prefix/etc/config.site"=0A-else=0A- set x= "$ac=5Fdefault=5Fprefix/share/config.site" \=0A- "$ac=5Fdefault=5Fprefix/e= tc/config.site"=0A-fi=0A-shift=0A-for ac=5Fsite=5Ffile=0A-do=0A- if test -= r "$ac=5Fsite=5Ffile"; then=0A- { echo "$as=5Fme:$LINENO: loading site s= cript $ac=5Fsite=5Ffile" >&5=0A-echo "$as=5Fme: loading site script $ac=5Fs= ite=5Ffile" >&6;}=0A- sed 's/^/| /' "$ac=5Fsite=5Ffile" >&5=0A- . "$a= c=5Fsite=5Ffile"=0A- fi=0A-done=0A-=0A-if test -r "$cache=5Ffile"; then=0A= - # Some versions of bash will fail to source /dev/null (special=0A- # fi= les actually), so we avoid doing that.=0A- if test -f "$cache=5Ffile"; the= n=0A- { echo "$as=5Fme:$LINENO: loading cache $cache=5Ffile" >&5=0A-echo= "$as=5Fme: loading cache $cache=5Ffile" >&6;}=0A- case $cache=5Ffile in= =0A- [\\/]* | ?:[\\/]* ) . "$cache=5Ffile";;=0A- *) = . "./$cache=5Ffile";;=0A- esac=0A- fi=0A-else=0A- { echo "$as= =5Fme:$LINENO: creating cache $cache=5Ffile" >&5=0A-echo "$as=5Fme: creatin= g cache $cache=5Ffile" >&6;}=0A- >$cache=5Ffile=0A-fi=0A-=0A-# Check that = the precious variables saved in the cache have kept the same=0A-# value.=0A= -ac=5Fcache=5Fcorrupted=3Dfalse=0A-for ac=5Fvar in $ac=5Fprecious=5Fvars; d= o=0A- eval ac=5Fold=5Fset=3D\$ac=5Fcv=5Fenv=5F${ac=5Fvar}=5Fset=0A- eval = ac=5Fnew=5Fset=3D\$ac=5Fenv=5F${ac=5Fvar}=5Fset=0A- eval ac=5Fold=5Fval=3D= \$ac=5Fcv=5Fenv=5F${ac=5Fvar}=5Fvalue=0A- eval ac=5Fnew=5Fval=3D\$ac=5Fenv= =5F${ac=5Fvar}=5Fvalue=0A- case $ac=5Fold=5Fset,$ac=5Fnew=5Fset in=0A- = set,)=0A- { echo "$as=5Fme:$LINENO: error: \`$ac=5Fvar' was set to \`$= ac=5Fold=5Fval' in the previous run" >&5=0A-echo "$as=5Fme: error: \`$ac=5F= var' was set to \`$ac=5Fold=5Fval' in the previous run" >&2;}=0A- ac= =5Fcache=5Fcorrupted=3D: ;;=0A- ,set)=0A- { echo "$as=5Fme:$LINENO:= error: \`$ac=5Fvar' was not set in the previous run" >&5=0A-echo "$as=5Fme= : error: \`$ac=5Fvar' was not set in the previous run" >&2;}=0A- ac=5F= cache=5Fcorrupted=3D: ;;=0A- ,);;=0A- *)=0A- if test "x$ac=5Fold= =5Fval" !=3D "x$ac=5Fnew=5Fval"; then=0A- { echo "$as=5Fme:$LINENO: error: = \`$ac=5Fvar' has changed since the previous run:" >&5=0A-echo "$as=5Fme: er= ror: \`$ac=5Fvar' has changed since the previous run:" >&2;}=0A- { echo "$a= s=5Fme:$LINENO: former value: $ac=5Fold=5Fval" >&5=0A-echo "$as=5Fme: = former value: $ac=5Fold=5Fval" >&2;}=0A- { echo "$as=5Fme:$LINENO: curre= nt value: $ac=5Fnew=5Fval" >&5=0A-echo "$as=5Fme: current value: $ac=5Fne= w=5Fval" >&2;}=0A- ac=5Fcache=5Fcorrupted=3D:=0A- fi;;=0A- esac=0A- = # Pass precious variables to config.status.=0A- if test "$ac=5Fnew=5Fset" = =3D set; then=0A- case $ac=5Fnew=5Fval in=0A- *\'*) ac=5Farg=3D$ac=5F= var=3D`echo "$ac=5Fnew=5Fval" | sed "s/'/'\\\\\\\\''/g"` ;;=0A- *) ac=5F= arg=3D$ac=5Fvar=3D$ac=5Fnew=5Fval ;;=0A- esac=0A- case " $ac=5Fconfig= ure=5Fargs " in=0A- *" '$ac=5Farg' "*) ;; # Avoid dups. Use of quotes= ensures accuracy.=0A- *) ac=5Fconfigure=5Fargs=3D"$ac=5Fconfigure=5Fa= rgs '$ac=5Farg'" ;;=0A- esac=0A- fi=0A-done=0A-if $ac=5Fcache=5Fcorrupt= ed; then=0A- { echo "$as=5Fme:$LINENO: error: changes in the environment c= an compromise the build" >&5=0A-echo "$as=5Fme: error: changes in the envir= onment can compromise the build" >&2;}=0A- { { echo "$as=5Fme:$LINENO: err= or: run \`make distclean' and/or \`rm $cache=5Ffile' and start over" >&5=0A= -echo "$as=5Fme: error: run \`make distclean' and/or \`rm $cache=5Ffile' an= d start over" >&2;}=0A- { (exit 1); exit 1; }; }=0A-fi=0A-=0A-=0A-=0A-=0A= -=0A-=0A-=0A-=0A-=0A-=0A-=0A-=0A-=0A-=0A-=0A-=0A-=0A-ac=5Fext=3Dc=0A-ac=5Fc= pp=3D'$CPP $CPPFLAGS'=0A-ac=5Fcompile=3D'$CC -c $CFLAGS $CPPFLAGS conftest.= $ac=5Fext >&5'=0A-ac=5Flink=3D'$CC -o conftest$ac=5Fexeext $CFLAGS $CPPFLAG= S $LDFLAGS conftest.$ac=5Fext $LIBS >&5'=0A-ac=5Fcompiler=5Fgnu=3D$ac=5Fcv= =5Fc=5Fcompiler=5Fgnu=0A-=0A-=0A-am=5F=5Fapi=5Fversion=3D'1.10'=0A-=0A-ac= =5Faux=5Fdir=3D=0A-for ac=5Fdir in "$srcdir" "$srcdir/.." "$srcdir/../.."; = do=0A- if test -f "$ac=5Fdir/install-sh"; then=0A- ac=5Faux=5Fdir=3D$ac= =5Fdir=0A- ac=5Finstall=5Fsh=3D"$ac=5Faux=5Fdir/install-sh -c"=0A- br= eak=0A- elif test -f "$ac=5Fdir/install.sh"; then=0A- ac=5Faux=5Fdir=3D= $ac=5Fdir=0A- ac=5Finstall=5Fsh=3D"$ac=5Faux=5Fdir/install.sh -c"=0A- = break=0A- elif test -f "$ac=5Fdir/shtool"; then=0A- ac=5Faux=5Fdir=3D$= ac=5Fdir=0A- ac=5Finstall=5Fsh=3D"$ac=5Faux=5Fdir/shtool install -c"=0A-= break=0A- fi=0A-done=0A-if test -z "$ac=5Faux=5Fdir"; then=0A- { { ec= ho "$as=5Fme:$LINENO: error: cannot find install-sh or install.sh in \"$src= dir\" \"$srcdir/..\" \"$srcdir/../..\"" >&5=0A-echo "$as=5Fme: error: canno= t find install-sh or install.sh in \"$srcdir\" \"$srcdir/..\" \"$srcdir/../= ..\"" >&2;}=0A- { (exit 1); exit 1; }; }=0A-fi=0A-=0A-# These three varia= bles are undocumented and unsupported,=0A-# and are intended to be withdraw= n in a future Autoconf release.=0A-# They can cause serious problems if a b= uilder's source tree is in a directory=0A-# whose full name contains unusua= l characters.=0A-ac=5Fconfig=5Fguess=3D"$SHELL $ac=5Faux=5Fdir/config.guess= " # Please don't use this var.=0A-ac=5Fconfig=5Fsub=3D"$SHELL $ac=5Faux=5F= dir/config.sub" # Please don't use this var.=0A-ac=5Fconfigure=3D"$SHELL $= ac=5Faux=5Fdir/configure" # Please don't use this var.=0A-=0A-=0A-# Find a= good install program. We prefer a C program (faster),=0A-# so one script = is as good as another. But avoid the broken or=0A-# incompatible versions:= =0A-# SysV /etc/install, /usr/sbin/install=0A-# SunOS /usr/etc/install=0A-#= IRIX /sbin/install=0A-# AIX /bin/install=0A-# AmigaOS /C/install, which in= stalls bootblocks on floppy discs=0A-# AIX 4 /usr/bin/installbsd, which doe= sn't work without a -g flag=0A-# AFS /usr/afsws/bin/install, which mishandl= es nonexistent args=0A-# SVR4 /usr/ucb/install, which tries to use the none= xistent group "staff"=0A-# OS/2's system install, which has a completely di= fferent semantic=0A-# ./install, which can be erroneously created by make f= rom ./install.sh.=0A-{ echo "$as=5Fme:$LINENO: checking for a BSD-compatibl= e install" >&5=0A-echo $ECHO=5FN "checking for a BSD-compatible install... = $ECHO=5FC" >&6; }=0A-if test -z "$INSTALL"; then=0A-if test "${ac=5Fcv=5Fpa= th=5Finstall+set}" =3D set; then=0A- echo $ECHO=5FN "(cached) $ECHO=5FC" >= &6=0A-else=0A- as=5Fsave=5FIFS=3D$IFS; IFS=3D$PATH=5FSEPARATOR=0A-for as= =5Fdir in $PATH=0A-do=0A- IFS=3D$as=5Fsave=5FIFS=0A- test -z "$as=5Fdir" = && as=5Fdir=3D.=0A- # Account for people who put trailing slashes in PATH = elements.=0A-case $as=5Fdir/ in=0A- ./ | .// | /cC/* | \=0A- /etc/* | /us= r/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \=0A- ?:\\/os2\\/inst= all\\/* | ?:\\/OS2\\/INSTALL\\/* | \=0A- /usr/ucb/* ) ;;=0A- *)=0A- # = OSF1 and SCO ODT 3.0 have their own names for install.=0A- # Don't use i= nstallbsd from OSF since it installs stuff as root=0A- # by default.=0A-= for ac=5Fprog in ginstall scoinst install; do=0A- for ac=5Fexec=5F= ext in '' $ac=5Fexecutable=5Fextensions; do=0A- if { test -f "$as=5Fdir/$ac= =5Fprog$ac=5Fexec=5Fext" && $as=5Ftest=5Fx "$as=5Fdir/$ac=5Fprog$ac=5Fexec= =5Fext"; }; then=0A- if test $ac=5Fprog =3D install &&=0A- grep dspms= g "$as=5Fdir/$ac=5Fprog$ac=5Fexec=5Fext" >/dev/null 2>&1; then=0A- # AI= X install. It has an incompatible calling convention.=0A- :=0A- elif= test $ac=5Fprog =3D install &&=0A- grep pwplus "$as=5Fdir/$ac=5Fprog$a= c=5Fexec=5Fext" >/dev/null 2>&1; then=0A- # program-specific install sc= ript used by HP pwplus--don't use.=0A- :=0A- else=0A- ac=5Fcv=5Fp= ath=5Finstall=3D"$as=5Fdir/$ac=5Fprog$ac=5Fexec=5Fext -c"=0A- break 3= =0A- fi=0A- fi=0A- done=0A- done=0A- ;;=0A-esac=0A-done=0A-IFS= =3D$as=5Fsave=5FIFS=0A-=0A-=0A-fi=0A- if test "${ac=5Fcv=5Fpath=5Finstall+= set}" =3D set; then=0A- INSTALL=3D$ac=5Fcv=5Fpath=5Finstall=0A- else=0A= - # As a last resort, use the slow shell script. Don't cache a=0A- #= value for INSTALL within a source directory, because that will=0A- # br= eak other packages using the cache if that directory is=0A- # removed, o= r if the value is a relative name.=0A- INSTALL=3D$ac=5Finstall=5Fsh=0A- = fi=0A-fi=0A-{ echo "$as=5Fme:$LINENO: result: $INSTALL" >&5=0A-echo "${ECH= O=5FT}$INSTALL" >&6; }=0A-=0A-# Use test -z because SunOS4 sh mishandles br= aces in ${var-val}.=0A-# It thinks the first close brace ends the variable = substitution.=0A-test -z "$INSTALL=5FPROGRAM" && INSTALL=5FPROGRAM=3D'${INS= TALL}'=0A-=0A-test -z "$INSTALL=5FSCRIPT" && INSTALL=5FSCRIPT=3D'${INSTALL}= '=0A-=0A-test -z "$INSTALL=5FDATA" && INSTALL=5FDATA=3D'${INSTALL} -m 644'= =0A-=0A-{ echo "$as=5Fme:$LINENO: checking whether build environment is san= e" >&5=0A-echo $ECHO=5FN "checking whether build environment is sane... $EC= HO=5FC" >&6; }=0A-# Just in case=0A-sleep 1=0A-echo timestamp > conftest.fi= le=0A-# Do `set' in a subshell so we don't clobber the current shell's=0A-#= arguments. Must try -L first in case configure is actually a=0A-# symlink= ; some systems play weird games with the mod time of symlinks=0A-# (eg Free= BSD returns the mod time of the symlink's containing=0A-# directory).=0A-if= (=0A- set X `ls -Lt $srcdir/configure conftest.file 2> /dev/null`=0A- = if test "$*" =3D "X"; then=0A- # -L didn't work.=0A- set X `ls -t= $srcdir/configure conftest.file`=0A- fi=0A- rm -f conftest.file=0A- = if test "$*" !=3D "X $srcdir/configure conftest.file" \=0A- && test "$= *" !=3D "X conftest.file $srcdir/configure"; then=0A-=0A- # If neither= matched, then we have a broken ls. This can happen=0A- # if, for ins= tance, CONFIG=5FSHELL is bash and it inherits a=0A- # broken ls alias = from the environment. This has actually=0A- # happened. Such a syste= m could not be considered "sane".=0A- { { echo "$as=5Fme:$LINENO: erro= r: ls -t appears to fail. Make sure there is not a broken=0A-alias in your= environment" >&5=0A-echo "$as=5Fme: error: ls -t appears to fail. Make su= re there is not a broken=0A-alias in your environment" >&2;}=0A- { (exit = 1); exit 1; }; }=0A- fi=0A-=0A- test "$2" =3D conftest.file=0A- )=0A-= then=0A- # Ok.=0A- :=0A-else=0A- { { echo "$as=5Fme:$LINENO: error: n= ewly created file is older than distributed files!=0A-Check your system clo= ck" >&5=0A-echo "$as=5Fme: error: newly created file is older than distribu= ted files!=0A-Check your system clock" >&2;}=0A- { (exit 1); exit 1; }; }= =0A-fi=0A-{ echo "$as=5Fme:$LINENO: result: yes" >&5=0A-echo "${ECHO=5FT}ye= s" >&6; }=0A-test "$program=5Fprefix" !=3D NONE &&=0A- program=5Ftransform= =5Fname=3D"s&^&$program=5Fprefix&;$program=5Ftransform=5Fname"=0A-# Use a d= ouble $ so make ignores it.=0A-test "$program=5Fsuffix" !=3D NONE &&=0A- p= rogram=5Ftransform=5Fname=3D"s&\$&$program=5Fsuffix&;$program=5Ftransform= =5Fname"=0A-# Double any \ or $. echo might interpret backslashes.=0A-# By= default was `s,x,x', remove it if useless.=0A-cat <<\=5FACEOF >conftest.se= d=0A-s/[\\$]/&&/g;s/;s,x,x,$//=0A-=5FACEOF=0A-program=5Ftransform=5Fname=3D= `echo $program=5Ftransform=5Fname | sed -f conftest.sed`=0A-rm -f conftest.= sed=0A-=0A-# expand $ac=5Faux=5Fdir to an absolute path=0A-am=5Faux=5Fdir= =3D`cd $ac=5Faux=5Fdir && pwd`=0A-=0A-test x"${MISSING+set}" =3D xset || MI= SSING=3D"\${SHELL} $am=5Faux=5Fdir/missing"=0A-# Use eval to expand $SHELL= =0A-if eval "$MISSING --run true"; then=0A- am=5Fmissing=5Frun=3D"$MISSING= --run "=0A-else=0A- am=5Fmissing=5Frun=3D=0A- { echo "$as=5Fme:$LINENO: = WARNING: \`missing' script is too old or missing" >&5=0A-echo "$as=5Fme: WA= RNING: \`missing' script is too old or missing" >&2;}=0A-fi=0A-=0A-{ echo "= $as=5Fme:$LINENO: checking for a thread-safe mkdir -p" >&5=0A-echo $ECHO=5F= N "checking for a thread-safe mkdir -p... $ECHO=5FC" >&6; }=0A-if test -z "= $MKDIR=5FP"; then=0A- if test "${ac=5Fcv=5Fpath=5Fmkdir+set}" =3D set; the= n=0A- echo $ECHO=5FN "(cached) $ECHO=5FC" >&6=0A-else=0A- as=5Fsave=5FIFS= =3D$IFS; IFS=3D$PATH=5FSEPARATOR=0A-for as=5Fdir in $PATH$PATH=5FSEPARATOR/= opt/sfw/bin=0A-do=0A- IFS=3D$as=5Fsave=5FIFS=0A- test -z "$as=5Fdir" && a= s=5Fdir=3D.=0A- for ac=5Fprog in mkdir gmkdir; do=0A- for ac=5Fexec=5Fext= in '' $ac=5Fexecutable=5Fextensions; do=0A- { test -f "$as=5Fdir/$ac=5F= prog$ac=5Fexec=5Fext" && $as=5Ftest=5Fx "$as=5Fdir/$ac=5Fprog$ac=5Fexec=5Fe= xt"; } || continue=0A- case `"$as=5Fdir/$ac=5Fprog$ac=5Fexec=5Fext" --ve= rsion 2>&1` in #(=0A- 'mkdir (GNU coreutils) '* | \=0A- 'mkdir (c= oreutils) '* | \=0A- 'mkdir (fileutils) '4.1*)=0A- ac=5Fcv=5Fpa= th=5Fmkdir=3D$as=5Fdir/$ac=5Fprog$ac=5Fexec=5Fext=0A- break 3;;=0A- = esac=0A- done=0A- done=0A-done=0A-IFS=3D$as=5Fsave=5FIFS=0A-=0A-f= i=0A-=0A- if test "${ac=5Fcv=5Fpath=5Fmkdir+set}" =3D set; then=0A- MKD= IR=5FP=3D"$ac=5Fcv=5Fpath=5Fmkdir -p"=0A- else=0A- # As a last resort, = use the slow shell script. Don't cache a=0A- # value for MKDIR=5FP with= in a source directory, because that will=0A- # break other packages usin= g the cache if that directory is=0A- # removed, or if the value is a rel= ative name.=0A- test -d ./--version && rmdir ./--version=0A- MKDIR=5F= P=3D"$ac=5Finstall=5Fsh -d"=0A- fi=0A-fi=0A-{ echo "$as=5Fme:$LINENO: resu= lt: $MKDIR=5FP" >&5=0A-echo "${ECHO=5FT}$MKDIR=5FP" >&6; }=0A-=0A-mkdir=5Fp= =3D"$MKDIR=5FP"=0A-case $mkdir=5Fp in=0A- [\\/$]* | ?:[\\/]*) ;;=0A- */*)= mkdir=5Fp=3D"\$(top=5Fbuilddir)/$mkdir=5Fp" ;;=0A-esac=0A-=0A-for ac=5Fpro= g in gawk mawk nawk awk=0A-do=0A- # Extract the first word of "$ac=5Fprog"= , so it can be a program name with args.=0A-set dummy $ac=5Fprog; ac=5Fword= =3D$2=0A-{ echo "$as=5Fme:$LINENO: checking for $ac=5Fword" >&5=0A-echo $EC= HO=5FN "checking for $ac=5Fword... $ECHO=5FC" >&6; }=0A-if test "${ac=5Fcv= =5Fprog=5FAWK+set}" =3D set; then=0A- echo $ECHO=5FN "(cached) $ECHO=5FC" = >&6=0A-else=0A- if test -n "$AWK"; then=0A- ac=5Fcv=5Fprog=5FAWK=3D"$AWK"= # Let the user override the test.=0A-else=0A-as=5Fsave=5FIFS=3D$IFS; IFS= =3D$PATH=5FSEPARATOR=0A-for as=5Fdir in $PATH=0A-do=0A- IFS=3D$as=5Fsave= =5FIFS=0A- test -z "$as=5Fdir" && as=5Fdir=3D.=0A- for ac=5Fexec=5Fext in= '' $ac=5Fexecutable=5Fextensions; do=0A- if { test -f "$as=5Fdir/$ac=5Fwo= rd$ac=5Fexec=5Fext" && $as=5Ftest=5Fx "$as=5Fdir/$ac=5Fword$ac=5Fexec=5Fext= "; }; then=0A- ac=5Fcv=5Fprog=5FAWK=3D"$ac=5Fprog"=0A- echo "$as=5Fme= :$LINENO: found $as=5Fdir/$ac=5Fword$ac=5Fexec=5Fext" >&5=0A- break 2=0A= - fi=0A-done=0A-done=0A-IFS=3D$as=5Fsave=5FIFS=0A-=0A-fi=0A-fi=0A-AWK=3D$a= c=5Fcv=5Fprog=5FAWK=0A-if test -n "$AWK"; then=0A- { echo "$as=5Fme:$LINEN= O: result: $AWK" >&5=0A-echo "${ECHO=5FT}$AWK" >&6; }=0A-else=0A- { echo "= $as=5Fme:$LINENO: result: no" >&5=0A-echo "${ECHO=5FT}no" >&6; }=0A-fi=0A-= =0A-=0A- test -n "$AWK" && break=0A-done=0A-=0A-{ echo "$as=5Fme:$LINENO: = checking whether ${MAKE-make} sets \$(MAKE)" >&5=0A-echo $ECHO=5FN "checkin= g whether ${MAKE-make} sets \$(MAKE)... $ECHO=5FC" >&6; }=0A-set x ${MAKE-m= ake}; ac=5Fmake=3D`echo "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9=5F]/=5F/g'`=0A-i= f { as=5Fvar=3Dac=5Fcv=5Fprog=5Fmake=5F${ac=5Fmake}=5Fset; eval "test \"\${= $as=5Fvar+set}\" =3D set"; }; then=0A- echo $ECHO=5FN "(cached) $ECHO=5FC"= >&6=0A-else=0A- cat >conftest.make <<\=5FACEOF=0A-SHELL =3D /bin/sh=0A-al= l:=0A- @echo '@@@%%%=3D$(MAKE)=3D@@@%%%'=0A-=5FACEOF=0A-# GNU make sometime= s prints "make[1]: Entering...", which would confuse us.=0A-case `${MAKE-ma= ke} -f conftest.make 2>/dev/null` in=0A- *@@@%%%=3D?*=3D@@@%%%*)=0A- ev= al ac=5Fcv=5Fprog=5Fmake=5F${ac=5Fmake}=5Fset=3Dyes;;=0A- *)=0A- eval a= c=5Fcv=5Fprog=5Fmake=5F${ac=5Fmake}=5Fset=3Dno;;=0A-esac=0A-rm -f conftest.= make=0A-fi=0A-if eval test \$ac=5Fcv=5Fprog=5Fmake=5F${ac=5Fmake}=5Fset =3D= yes; then=0A- { echo "$as=5Fme:$LINENO: result: yes" >&5=0A-echo "${ECHO= =5FT}yes" >&6; }=0A- SET=5FMAKE=3D=0A-else=0A- { echo "$as=5Fme:$LINENO: = result: no" >&5=0A-echo "${ECHO=5FT}no" >&6; }=0A- SET=5FMAKE=3D"MAKE=3D${= MAKE-make}"=0A-fi=0A-=0A-rm -rf .tst 2>/dev/null=0A-mkdir .tst 2>/dev/null= =0A-if test -d .tst; then=0A- am=5F=5Fleading=5Fdot=3D.=0A-else=0A- am=5F= =5Fleading=5Fdot=3D=5F=0A-fi=0A-rmdir .tst 2>/dev/null=0A-=0A-if test "`cd = $srcdir && pwd`" !=3D "`pwd`"; then=0A- # Use -I$(srcdir) only when $(srcd= ir) !=3D ., so that make's output=0A- # is not polluted with repeated "-I.= "=0A- am=5F=5Fisrc=3D' -I$(srcdir)'=0A- # test to see if srcdir already c= onfigured=0A- if test -f $srcdir/config.status; then=0A- { { echo "$as= =5Fme:$LINENO: error: source directory already configured; run \"make distc= lean\" there first" >&5=0A-echo "$as=5Fme: error: source directory already = configured; run \"make distclean\" there first" >&2;}=0A- { (exit 1); exi= t 1; }; }=0A- fi=0A-fi=0A-=0A-# test whether we have cygpath=0A-if test -z= "$CYGPATH=5FW"; then=0A- if (cygpath --version) >/dev/null 2>/dev/null; t= hen=0A- CYGPATH=5FW=3D'cygpath -w'=0A- else=0A- CYGPATH=5FW=3Decho= =0A- fi=0A-fi=0A-=0A-=0A-# Define the identity of the package.=0A- PACKAGE= =3Dffsb=0A- VERSION=3D6.0-RC2=0A-=0A-=0A-cat >>confdefs.h <<=5FACEOF=0A-#de= fine PACKAGE "$PACKAGE"=0A-=5FACEOF=0A-=0A-=0A-cat >>confdefs.h <<=5FACEOF= =0A-#define VERSION "$VERSION"=0A-=5FACEOF=0A-=0A-# Some tools Automake nee= ds.=0A-=0A-ACLOCAL=3D${ACLOCAL-"${am=5Fmissing=5Frun}aclocal-${am=5F=5Fapi= =5Fversion}"}=0A-=0A-=0A-AUTOCONF=3D${AUTOCONF-"${am=5Fmissing=5Frun}autoco= nf"}=0A-=0A-=0A-AUTOMAKE=3D${AUTOMAKE-"${am=5Fmissing=5Frun}automake-${am= =5F=5Fapi=5Fversion}"}=0A-=0A-=0A-AUTOHEADER=3D${AUTOHEADER-"${am=5Fmissing= =5Frun}autoheader"}=0A-=0A-=0A-MAKEINFO=3D${MAKEINFO-"${am=5Fmissing=5Frun}= makeinfo"}=0A-=0A-install=5Fsh=3D${install=5Fsh-"\$(SHELL) $am=5Faux=5Fdir/= install-sh"}=0A-=0A-# Installed binaries are usually stripped using `strip'= when the user=0A-# run `make install-strip'. However `strip' might not be= the right=0A-# tool to use in cross-compilation environments, therefore Au= tomake=0A-# will honor the `STRIP' environment variable to overrule this pr= ogram.=0A-if test "$cross=5Fcompiling" !=3D no; then=0A- if test -n "$ac= =5Ftool=5Fprefix"; then=0A- # Extract the first word of "${ac=5Ftool=5Fpre= fix}strip", so it can be a program name with args.=0A-set dummy ${ac=5Ftool= =5Fprefix}strip; ac=5Fword=3D$2=0A-{ echo "$as=5Fme:$LINENO: checking for $= ac=5Fword" >&5=0A-echo $ECHO=5FN "checking for $ac=5Fword... $ECHO=5FC" >&6= ; }=0A-if test "${ac=5Fcv=5Fprog=5FSTRIP+set}" =3D set; then=0A- echo $ECH= O=5FN "(cached) $ECHO=5FC" >&6=0A-else=0A- if test -n "$STRIP"; then=0A- = ac=5Fcv=5Fprog=5FSTRIP=3D"$STRIP" # Let the user override the test.=0A-else= =0A-as=5Fsave=5FIFS=3D$IFS; IFS=3D$PATH=5FSEPARATOR=0A-for as=5Fdir in $PAT= H=0A-do=0A- IFS=3D$as=5Fsave=5FIFS=0A- test -z "$as=5Fdir" && as=5Fdir=3D= .=0A- for ac=5Fexec=5Fext in '' $ac=5Fexecutable=5Fextensions; do=0A- if = { test -f "$as=5Fdir/$ac=5Fword$ac=5Fexec=5Fext" && $as=5Ftest=5Fx "$as=5Fd= ir/$ac=5Fword$ac=5Fexec=5Fext"; }; then=0A- ac=5Fcv=5Fprog=5FSTRIP=3D"${= ac=5Ftool=5Fprefix}strip"=0A- echo "$as=5Fme:$LINENO: found $as=5Fdir/$a= c=5Fword$ac=5Fexec=5Fext" >&5=0A- break 2=0A- fi=0A-done=0A-done=0A-IFS= =3D$as=5Fsave=5FIFS=0A-=0A-fi=0A-fi=0A-STRIP=3D$ac=5Fcv=5Fprog=5FSTRIP=0A-i= f test -n "$STRIP"; then=0A- { echo "$as=5Fme:$LINENO: result: $STRIP" >&5= =0A-echo "${ECHO=5FT}$STRIP" >&6; }=0A-else=0A- { echo "$as=5Fme:$LINENO: = result: no" >&5=0A-echo "${ECHO=5FT}no" >&6; }=0A-fi=0A-=0A-=0A-fi=0A-if te= st -z "$ac=5Fcv=5Fprog=5FSTRIP"; then=0A- ac=5Fct=5FSTRIP=3D$STRIP=0A- # = Extract the first word of "strip", so it can be a program name with args.= =0A-set dummy strip; ac=5Fword=3D$2=0A-{ echo "$as=5Fme:$LINENO: checking f= or $ac=5Fword" >&5=0A-echo $ECHO=5FN "checking for $ac=5Fword... $ECHO=5FC"= >&6; }=0A-if test "${ac=5Fcv=5Fprog=5Fac=5Fct=5FSTRIP+set}" =3D set; then= =0A- echo $ECHO=5FN "(cached) $ECHO=5FC" >&6=0A-else=0A- if test -n "$ac= =5Fct=5FSTRIP"; then=0A- ac=5Fcv=5Fprog=5Fac=5Fct=5FSTRIP=3D"$ac=5Fct=5FST= RIP" # Let the user override the test.=0A-else=0A-as=5Fsave=5FIFS=3D$IFS; I= FS=3D$PATH=5FSEPARATOR=0A-for as=5Fdir in $PATH=0A-do=0A- IFS=3D$as=5Fsave= =5FIFS=0A- test -z "$as=5Fdir" && as=5Fdir=3D.=0A- for ac=5Fexec=5Fext in= '' $ac=5Fexecutable=5Fextensions; do=0A- if { test -f "$as=5Fdir/$ac=5Fwo= rd$ac=5Fexec=5Fext" && $as=5Ftest=5Fx "$as=5Fdir/$ac=5Fword$ac=5Fexec=5Fext= "; }; then=0A- ac=5Fcv=5Fprog=5Fac=5Fct=5FSTRIP=3D"strip"=0A- echo "$= as=5Fme:$LINENO: found $as=5Fdir/$ac=5Fword$ac=5Fexec=5Fext" >&5=0A- bre= ak 2=0A- fi=0A-done=0A-done=0A-IFS=3D$as=5Fsave=5FIFS=0A-=0A-fi=0A-fi=0A-a= c=5Fct=5FSTRIP=3D$ac=5Fcv=5Fprog=5Fac=5Fct=5FSTRIP=0A-if test -n "$ac=5Fct= =5FSTRIP"; then=0A- { echo "$as=5Fme:$LINENO: result: $ac=5Fct=5FSTRIP" >&= 5=0A-echo "${ECHO=5FT}$ac=5Fct=5FSTRIP" >&6; }=0A-else=0A- { echo "$as=5Fm= e:$LINENO: result: no" >&5=0A-echo "${ECHO=5FT}no" >&6; }=0A-fi=0A-=0A- if= test "x$ac=5Fct=5FSTRIP" =3D x; then=0A- STRIP=3D":"=0A- else=0A- c= ase $cross=5Fcompiling:$ac=5Ftool=5Fwarned in=0A-yes:)=0A-{ echo "$as=5Fme:= $LINENO: WARNING: In the future, Autoconf will not detect cross-tools=0A-wh= ose name does not start with the host triplet. If you think this=0A-config= uration is useful to you, please write to autoconf@gnu.org." >&5=0A-echo "$= as=5Fme: WARNING: In the future, Autoconf will not detect cross-tools=0A-wh= ose name does not start with the host triplet. If you think this=0A-config= uration is useful to you, please write to autoconf@gnu.org." >&2;}=0A-ac=5F= tool=5Fwarned=3Dyes ;;=0A-esac=0A- STRIP=3D$ac=5Fct=5FSTRIP=0A- fi=0A-e= lse=0A- STRIP=3D"$ac=5Fcv=5Fprog=5FSTRIP"=0A-fi=0A-=0A-fi=0A-INSTALL=5FSTR= IP=5FPROGRAM=3D"\$(install=5Fsh) -c -s"=0A-=0A-# We need awk for the "check= " target. The system "awk" is bad on=0A-# some platforms.=0A-# Always defi= ne AMTAR for backward compatibility.=0A-=0A-AMTAR=3D${AMTAR-"${am=5Fmissing= =5Frun}tar"}=0A-=0A-am=5F=5Ftar=3D'${AMTAR} chof - "$$tardir"'; am=5F=5Funt= ar=3D'${AMTAR} xf -'=0A-=0A-=0A-=0A-=0A-=0A-=0A-ac=5Fconfig=5Fheaders=3D"$a= c=5Fconfig=5Fheaders config.h"=0A-=0A-# Make sure we can run config.sub.=0A= -$SHELL "$ac=5Faux=5Fdir/config.sub" sun4 >/dev/null 2>&1 ||=0A- { { echo = "$as=5Fme:$LINENO: error: cannot run $SHELL $ac=5Faux=5Fdir/config.sub" >&5= =0A-echo "$as=5Fme: error: cannot run $SHELL $ac=5Faux=5Fdir/config.sub" >&= 2;}=0A- { (exit 1); exit 1; }; }=0A-=0A-{ echo "$as=5Fme:$LINENO: checkin= g build system type" >&5=0A-echo $ECHO=5FN "checking build system type... $= ECHO=5FC" >&6; }=0A-if test "${ac=5Fcv=5Fbuild+set}" =3D set; then=0A- ech= o $ECHO=5FN "(cached) $ECHO=5FC" >&6=0A-else=0A- ac=5Fbuild=5Falias=3D$bui= ld=5Falias=0A-test "x$ac=5Fbuild=5Falias" =3D x &&=0A- ac=5Fbuild=5Falias= =3D`$SHELL "$ac=5Faux=5Fdir/config.guess"`=0A-test "x$ac=5Fbuild=5Falias" = =3D x &&=0A- { { echo "$as=5Fme:$LINENO: error: cannot guess build type; y= ou must specify one" >&5=0A-echo "$as=5Fme: error: cannot guess build type;= you must specify one" >&2;}=0A- { (exit 1); exit 1; }; }=0A-ac=5Fcv=5Fbu= ild=3D`$SHELL "$ac=5Faux=5Fdir/config.sub" $ac=5Fbuild=5Falias` ||=0A- { {= echo "$as=5Fme:$LINENO: error: $SHELL $ac=5Faux=5Fdir/config.sub $ac=5Fbui= ld=5Falias failed" >&5=0A-echo "$as=5Fme: error: $SHELL $ac=5Faux=5Fdir/con= fig.sub $ac=5Fbuild=5Falias failed" >&2;}=0A- { (exit 1); exit 1; }; }=0A= -=0A-fi=0A-{ echo "$as=5Fme:$LINENO: result: $ac=5Fcv=5Fbuild" >&5=0A-echo = "${ECHO=5FT}$ac=5Fcv=5Fbuild" >&6; }=0A-case $ac=5Fcv=5Fbuild in=0A-*-*-*) = ;;=0A-*) { { echo "$as=5Fme:$LINENO: error: invalid value of canonical buil= d" >&5=0A-echo "$as=5Fme: error: invalid value of canonical build" >&2;}=0A= - { (exit 1); exit 1; }; };;=0A-esac=0A-build=3D$ac=5Fcv=5Fbuild=0A-ac=5F= save=5FIFS=3D$IFS; IFS=3D'-'=0A-set x $ac=5Fcv=5Fbuild=0A-shift=0A-build=5F= cpu=3D$1=0A-build=5Fvendor=3D$2=0A-shift; shift=0A-# Remember, the first ch= aracter of IFS is used to create $*,=0A-# except with old shells:=0A-build= =5Fos=3D$*=0A-IFS=3D$ac=5Fsave=5FIFS=0A-case $build=5Fos in *\ *) build=5Fo= s=3D`echo "$build=5Fos" | sed 's/ /-/g'`;; esac=0A-=0A-=0A-{ echo "$as=5Fme= :$LINENO: checking host system type" >&5=0A-echo $ECHO=5FN "checking host s= ystem type... $ECHO=5FC" >&6; }=0A-if test "${ac=5Fcv=5Fhost+set}" =3D set;= then=0A- echo $ECHO=5FN "(cached) $ECHO=5FC" >&6=0A-else=0A- if test "x$= host=5Falias" =3D x; then=0A- ac=5Fcv=5Fhost=3D$ac=5Fcv=5Fbuild=0A-else=0A= - ac=5Fcv=5Fhost=3D`$SHELL "$ac=5Faux=5Fdir/config.sub" $host=5Falias` ||= =0A- { { echo "$as=5Fme:$LINENO: error: $SHELL $ac=5Faux=5Fdir/config.su= b $host=5Falias failed" >&5=0A-echo "$as=5Fme: error: $SHELL $ac=5Faux=5Fdi= r/config.sub $host=5Falias failed" >&2;}=0A- { (exit 1); exit 1; }; }=0A-= fi=0A-=0A-fi=0A-{ echo "$as=5Fme:$LINENO: result: $ac=5Fcv=5Fhost" >&5=0A-e= cho "${ECHO=5FT}$ac=5Fcv=5Fhost" >&6; }=0A-case $ac=5Fcv=5Fhost in=0A-*-*-*= ) ;;=0A-*) { { echo "$as=5Fme:$LINENO: error: invalid value of canonical ho= st" >&5=0A-echo "$as=5Fme: error: invalid value of canonical host" >&2;}=0A= - { (exit 1); exit 1; }; };;=0A-esac=0A-host=3D$ac=5Fcv=5Fhost=0A-ac=5Fsa= ve=5FIFS=3D$IFS; IFS=3D'-'=0A-set x $ac=5Fcv=5Fhost=0A-shift=0A-host=5Fcpu= =3D$1=0A-host=5Fvendor=3D$2=0A-shift; shift=0A-# Remember, the first charac= ter of IFS is used to create $*,=0A-# except with old shells:=0A-host=5Fos= =3D$*=0A-IFS=3D$ac=5Fsave=5FIFS=0A-case $host=5Fos in *\ *) host=5Fos=3D`ec= ho "$host=5Fos" | sed 's/ /-/g'`;; esac=0A-=0A-=0A-=0A-DEPDIR=3D"${am=5F=5F= leading=5Fdot}deps"=0A-=0A-ac=5Fconfig=5Fcommands=3D"$ac=5Fconfig=5Fcommand= s depfiles"=0A-=0A-=0A-am=5Fmake=3D${MAKE-make}=0A-cat > confinc << 'END'= =0A-am=5F=5Fdoit:=0A- @echo done=0A-.PHONY: am=5F=5Fdoit=0A-END=0A-# If we = don't find an include directive, just comment out the code.=0A-{ echo "$as= =5Fme:$LINENO: checking for style of include used by $am=5Fmake" >&5=0A-ech= o $ECHO=5FN "checking for style of include used by $am=5Fmake... $ECHO=5FC"= >&6; }=0A-am=5F=5Finclude=3D"#"=0A-am=5F=5Fquote=3D=0A-=5Fam=5Fresult=3Dno= ne=0A-# First try GNU make style include.=0A-echo "include confinc" > confm= f=0A-# We grep out `Entering directory' and `Leaving directory'=0A-# messag= es which can occur if `w' ends up in MAKEFLAGS.=0A-# In particular we don't= look at `^make:' because GNU make might=0A-# be invoked under some other n= ame (usually "gmake"), in which=0A-# case it prints its new name instead of= `make'.=0A-if test "`$am=5Fmake -s -f confmf 2> /dev/null | grep -v 'ing d= irectory'`" =3D "done"; then=0A- am=5F=5Finclude=3Dinclude=0A- am=5F=5F= quote=3D=0A- =5Fam=5Fresult=3DGNU=0A-fi=0A-# Now try BSD make style inclu= de.=0A-if test "$am=5F=5Finclude" =3D "#"; then=0A- echo '.include "confi= nc"' > confmf=0A- if test "`$am=5Fmake -s -f confmf 2> /dev/null`" =3D "d= one"; then=0A- am=5F=5Finclude=3D.include=0A- am=5F=5Fquote=3D"\"= "=0A- =5Fam=5Fresult=3DBSD=0A- fi=0A-fi=0A-=0A-=0A-{ echo "$as=5Fme:= $LINENO: result: $=5Fam=5Fresult" >&5=0A-echo "${ECHO=5FT}$=5Fam=5Fresult" = >&6; }=0A-rm -f confinc confmf=0A-=0A-# Check whether --enable-dependency-t= racking was given.=0A-if test "${enable=5Fdependency=5Ftracking+set}" =3D s= et; then=0A- enableval=3D$enable=5Fdependency=5Ftracking;=0A-fi=0A-=0A-if = test "x$enable=5Fdependency=5Ftracking" !=3D xno; then=0A- am=5Fdepcomp=3D= "$ac=5Faux=5Fdir/depcomp"=0A- AMDEPBACKSLASH=3D'\'=0A-fi=0A- if test "x$en= able=5Fdependency=5Ftracking" !=3D xno; then=0A- AMDEP=5FTRUE=3D=0A- AMDE= P=5FFALSE=3D'#'=0A-else=0A- AMDEP=5FTRUE=3D'#'=0A- AMDEP=5FFALSE=3D=0A-fi= =0A-=0A-=0A-ac=5Fext=3Dc=0A-ac=5Fcpp=3D'$CPP $CPPFLAGS'=0A-ac=5Fcompile=3D'= $CC -c $CFLAGS $CPPFLAGS conftest.$ac=5Fext >&5'=0A-ac=5Flink=3D'$CC -o con= ftest$ac=5Fexeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac=5Fext $LIBS >&5'= =0A-ac=5Fcompiler=5Fgnu=3D$ac=5Fcv=5Fc=5Fcompiler=5Fgnu=0A-if test -n "$ac= =5Ftool=5Fprefix"; then=0A- # Extract the first word of "${ac=5Ftool=5Fpre= fix}gcc", so it can be a program name with args.=0A-set dummy ${ac=5Ftool= =5Fprefix}gcc; ac=5Fword=3D$2=0A-{ echo "$as=5Fme:$LINENO: checking for $ac= =5Fword" >&5=0A-echo $ECHO=5FN "checking for $ac=5Fword... $ECHO=5FC" >&6; = }=0A-if test "${ac=5Fcv=5Fprog=5FCC+set}" =3D set; then=0A- echo $ECHO=5FN= "(cached) $ECHO=5FC" >&6=0A-else=0A- if test -n "$CC"; then=0A- ac=5Fcv= =5Fprog=5FCC=3D"$CC" # Let the user override the test.=0A-else=0A-as=5Fsave= =5FIFS=3D$IFS; IFS=3D$PATH=5FSEPARATOR=0A-for as=5Fdir in $PATH=0A-do=0A- = IFS=3D$as=5Fsave=5FIFS=0A- test -z "$as=5Fdir" && as=5Fdir=3D.=0A- for ac= =5Fexec=5Fext in '' $ac=5Fexecutable=5Fextensions; do=0A- if { test -f "$a= s=5Fdir/$ac=5Fword$ac=5Fexec=5Fext" && $as=5Ftest=5Fx "$as=5Fdir/$ac=5Fword= $ac=5Fexec=5Fext"; }; then=0A- ac=5Fcv=5Fprog=5FCC=3D"${ac=5Ftool=5Fpref= ix}gcc"=0A- echo "$as=5Fme:$LINENO: found $as=5Fdir/$ac=5Fword$ac=5Fexec= =5Fext" >&5=0A- break 2=0A- fi=0A-done=0A-done=0A-IFS=3D$as=5Fsave=5FIF= S=0A-=0A-fi=0A-fi=0A-CC=3D$ac=5Fcv=5Fprog=5FCC=0A-if test -n "$CC"; then=0A= - { echo "$as=5Fme:$LINENO: result: $CC" >&5=0A-echo "${ECHO=5FT}$CC" >&6;= }=0A-else=0A- { echo "$as=5Fme:$LINENO: result: no" >&5=0A-echo "${ECHO= =5FT}no" >&6; }=0A-fi=0A-=0A-=0A-fi=0A-if test -z "$ac=5Fcv=5Fprog=5FCC"; t= hen=0A- ac=5Fct=5FCC=3D$CC=0A- # Extract the first word of "gcc", so it c= an be a program name with args.=0A-set dummy gcc; ac=5Fword=3D$2=0A-{ echo = "$as=5Fme:$LINENO: checking for $ac=5Fword" >&5=0A-echo $ECHO=5FN "checking= for $ac=5Fword... $ECHO=5FC" >&6; }=0A-if test "${ac=5Fcv=5Fprog=5Fac=5Fct= =5FCC+set}" =3D set; then=0A- echo $ECHO=5FN "(cached) $ECHO=5FC" >&6=0A-e= lse=0A- if test -n "$ac=5Fct=5FCC"; then=0A- ac=5Fcv=5Fprog=5Fac=5Fct=5FC= C=3D"$ac=5Fct=5FCC" # Let the user override the test.=0A-else=0A-as=5Fsave= =5FIFS=3D$IFS; IFS=3D$PATH=5FSEPARATOR=0A-for as=5Fdir in $PATH=0A-do=0A- = IFS=3D$as=5Fsave=5FIFS=0A- test -z "$as=5Fdir" && as=5Fdir=3D.=0A- for ac= =5Fexec=5Fext in '' $ac=5Fexecutable=5Fextensions; do=0A- if { test -f "$a= s=5Fdir/$ac=5Fword$ac=5Fexec=5Fext" && $as=5Ftest=5Fx "$as=5Fdir/$ac=5Fword= $ac=5Fexec=5Fext"; }; then=0A- ac=5Fcv=5Fprog=5Fac=5Fct=5FCC=3D"gcc"=0A-= echo "$as=5Fme:$LINENO: found $as=5Fdir/$ac=5Fword$ac=5Fexec=5Fext" >&5= =0A- break 2=0A- fi=0A-done=0A-done=0A-IFS=3D$as=5Fsave=5FIFS=0A-=0A-fi= =0A-fi=0A-ac=5Fct=5FCC=3D$ac=5Fcv=5Fprog=5Fac=5Fct=5FCC=0A-if test -n "$ac= =5Fct=5FCC"; then=0A- { echo "$as=5Fme:$LINENO: result: $ac=5Fct=5FCC" >&5= =0A-echo "${ECHO=5FT}$ac=5Fct=5FCC" >&6; }=0A-else=0A- { echo "$as=5Fme:$L= INENO: result: no" >&5=0A-echo "${ECHO=5FT}no" >&6; }=0A-fi=0A-=0A- if tes= t "x$ac=5Fct=5FCC" =3D x; then=0A- CC=3D""=0A- else=0A- case $cross= =5Fcompiling:$ac=5Ftool=5Fwarned in=0A-yes:)=0A-{ echo "$as=5Fme:$LINENO: W= ARNING: In the future, Autoconf will not detect cross-tools=0A-whose name d= oes not start with the host triplet. If you think this=0A-configuration is= useful to you, please write to autoconf@gnu.org." >&5=0A-echo "$as=5Fme: W= ARNING: In the future, Autoconf will not detect cross-tools=0A-whose name d= oes not start with the host triplet. If you think this=0A-configuration is= useful to you, please write to autoconf@gnu.org." >&2;}=0A-ac=5Ftool=5Fwar= ned=3Dyes ;;=0A-esac=0A- CC=3D$ac=5Fct=5FCC=0A- fi=0A-else=0A- CC=3D"$= ac=5Fcv=5Fprog=5FCC"=0A-fi=0A-=0A-if test -z "$CC"; then=0A- if te= st -n "$ac=5Ftool=5Fprefix"; then=0A- # Extract the first word of "${ac= =5Ftool=5Fprefix}cc", so it can be a program name with args.=0A-set dummy $= {ac=5Ftool=5Fprefix}cc; ac=5Fword=3D$2=0A-{ echo "$as=5Fme:$LINENO: checkin= g for $ac=5Fword" >&5=0A-echo $ECHO=5FN "checking for $ac=5Fword... $ECHO= =5FC" >&6; }=0A-if test "${ac=5Fcv=5Fprog=5FCC+set}" =3D set; then=0A- ech= o $ECHO=5FN "(cached) $ECHO=5FC" >&6=0A-else=0A- if test -n "$CC"; then=0A= - ac=5Fcv=5Fprog=5FCC=3D"$CC" # Let the user override the test.=0A-else=0A= -as=5Fsave=5FIFS=3D$IFS; IFS=3D$PATH=5FSEPARATOR=0A-for as=5Fdir in $PATH= =0A-do=0A- IFS=3D$as=5Fsave=5FIFS=0A- test -z "$as=5Fdir" && as=5Fdir=3D.= =0A- for ac=5Fexec=5Fext in '' $ac=5Fexecutable=5Fextensions; do=0A- if {= test -f "$as=5Fdir/$ac=5Fword$ac=5Fexec=5Fext" && $as=5Ftest=5Fx "$as=5Fdi= r/$ac=5Fword$ac=5Fexec=5Fext"; }; then=0A- ac=5Fcv=5Fprog=5FCC=3D"${ac= =5Ftool=5Fprefix}cc"=0A- echo "$as=5Fme:$LINENO: found $as=5Fdir/$ac=5Fw= ord$ac=5Fexec=5Fext" >&5=0A- break 2=0A- fi=0A-done=0A-done=0A-IFS=3D$a= s=5Fsave=5FIFS=0A-=0A-fi=0A-fi=0A-CC=3D$ac=5Fcv=5Fprog=5FCC=0A-if test -n "= $CC"; then=0A- { echo "$as=5Fme:$LINENO: result: $CC" >&5=0A-echo "${ECHO= =5FT}$CC" >&6; }=0A-else=0A- { echo "$as=5Fme:$LINENO: result: no" >&5=0A-= echo "${ECHO=5FT}no" >&6; }=0A-fi=0A-=0A-=0A- fi=0A-fi=0A-if test -z "$CC"= ; then=0A- # Extract the first word of "cc", so it can be a program name w= ith args.=0A-set dummy cc; ac=5Fword=3D$2=0A-{ echo "$as=5Fme:$LINENO: chec= king for $ac=5Fword" >&5=0A-echo $ECHO=5FN "checking for $ac=5Fword... $ECH= O=5FC" >&6; }=0A-if test "${ac=5Fcv=5Fprog=5FCC+set}" =3D set; then=0A- ec= ho $ECHO=5FN "(cached) $ECHO=5FC" >&6=0A-else=0A- if test -n "$CC"; then= =0A- ac=5Fcv=5Fprog=5FCC=3D"$CC" # Let the user override the test.=0A-else= =0A- ac=5Fprog=5Frejected=3Dno=0A-as=5Fsave=5FIFS=3D$IFS; IFS=3D$PATH=5FSE= PARATOR=0A-for as=5Fdir in $PATH=0A-do=0A- IFS=3D$as=5Fsave=5FIFS=0A- tes= t -z "$as=5Fdir" && as=5Fdir=3D.=0A- for ac=5Fexec=5Fext in '' $ac=5Fexecu= table=5Fextensions; do=0A- if { test -f "$as=5Fdir/$ac=5Fword$ac=5Fexec=5F= ext" && $as=5Ftest=5Fx "$as=5Fdir/$ac=5Fword$ac=5Fexec=5Fext"; }; then=0A- = if test "$as=5Fdir/$ac=5Fword$ac=5Fexec=5Fext" =3D "/usr/ucb/cc"; then= =0A- ac=5Fprog=5Frejected=3Dyes=0A- continue=0A- fi=0A- = ac=5Fcv=5Fprog=5FCC=3D"cc"=0A- echo "$as=5Fme:$LINENO: found $as=5Fdir/$= ac=5Fword$ac=5Fexec=5Fext" >&5=0A- break 2=0A- fi=0A-done=0A-done=0A-IF= S=3D$as=5Fsave=5FIFS=0A-=0A-if test $ac=5Fprog=5Frejected =3D yes; then=0A-= # We found a bogon in the path, so make sure we never use it.=0A- set du= mmy $ac=5Fcv=5Fprog=5FCC=0A- shift=0A- if test $# !=3D 0; then=0A- # W= e chose a different compiler from the bogus one.=0A- # However, it has t= he same basename, so the bogon will be chosen=0A- # first if we set CC t= o just the basename; use the full file name.=0A- shift=0A- ac=5Fcv=5F= prog=5FCC=3D"$as=5Fdir/$ac=5Fword${1+' '}$@"=0A- fi=0A-fi=0A-fi=0A-fi=0A-C= C=3D$ac=5Fcv=5Fprog=5FCC=0A-if test -n "$CC"; then=0A- { echo "$as=5Fme:$L= INENO: result: $CC" >&5=0A-echo "${ECHO=5FT}$CC" >&6; }=0A-else=0A- { echo= "$as=5Fme:$LINENO: result: no" >&5=0A-echo "${ECHO=5FT}no" >&6; }=0A-fi=0A= -=0A-=0A-fi=0A-if test -z "$CC"; then=0A- if test -n "$ac=5Ftool=5Fprefix"= ; then=0A- for ac=5Fprog in cl.exe=0A- do=0A- # Extract the first word= of "$ac=5Ftool=5Fprefix$ac=5Fprog", so it can be a program name with args.= =0A-set dummy $ac=5Ftool=5Fprefix$ac=5Fprog; ac=5Fword=3D$2=0A-{ echo "$as= =5Fme:$LINENO: checking for $ac=5Fword" >&5=0A-echo $ECHO=5FN "checking for= $ac=5Fword... $ECHO=5FC" >&6; }=0A-if test "${ac=5Fcv=5Fprog=5FCC+set}" = =3D set; then=0A- echo $ECHO=5FN "(cached) $ECHO=5FC" >&6=0A-else=0A- if = test -n "$CC"; then=0A- ac=5Fcv=5Fprog=5FCC=3D"$CC" # Let the user overrid= e the test.=0A-else=0A-as=5Fsave=5FIFS=3D$IFS; IFS=3D$PATH=5FSEPARATOR=0A-f= or as=5Fdir in $PATH=0A-do=0A- IFS=3D$as=5Fsave=5FIFS=0A- test -z "$as=5F= dir" && as=5Fdir=3D.=0A- for ac=5Fexec=5Fext in '' $ac=5Fexecutable=5Fexte= nsions; do=0A- if { test -f "$as=5Fdir/$ac=5Fword$ac=5Fexec=5Fext" && $as= =5Ftest=5Fx "$as=5Fdir/$ac=5Fword$ac=5Fexec=5Fext"; }; then=0A- ac=5Fcv= =5Fprog=5FCC=3D"$ac=5Ftool=5Fprefix$ac=5Fprog"=0A- echo "$as=5Fme:$LINEN= O: found $as=5Fdir/$ac=5Fword$ac=5Fexec=5Fext" >&5=0A- break 2=0A- fi= =0A-done=0A-done=0A-IFS=3D$as=5Fsave=5FIFS=0A-=0A-fi=0A-fi=0A-CC=3D$ac=5Fcv= =5Fprog=5FCC=0A-if test -n "$CC"; then=0A- { echo "$as=5Fme:$LINENO: resul= t: $CC" >&5=0A-echo "${ECHO=5FT}$CC" >&6; }=0A-else=0A- { echo "$as=5Fme:$= LINENO: result: no" >&5=0A-echo "${ECHO=5FT}no" >&6; }=0A-fi=0A-=0A-=0A- = test -n "$CC" && break=0A- done=0A-fi=0A-if test -z "$CC"; then=0A- ac= =5Fct=5FCC=3D$CC=0A- for ac=5Fprog in cl.exe=0A-do=0A- # Extract the firs= t word of "$ac=5Fprog", so it can be a program name with args.=0A-set dummy= $ac=5Fprog; ac=5Fword=3D$2=0A-{ echo "$as=5Fme:$LINENO: checking for $ac= =5Fword" >&5=0A-echo $ECHO=5FN "checking for $ac=5Fword... $ECHO=5FC" >&6; = }=0A-if test "${ac=5Fcv=5Fprog=5Fac=5Fct=5FCC+set}" =3D set; then=0A- echo= $ECHO=5FN "(cached) $ECHO=5FC" >&6=0A-else=0A- if test -n "$ac=5Fct=5FCC"= ; then=0A- ac=5Fcv=5Fprog=5Fac=5Fct=5FCC=3D"$ac=5Fct=5FCC" # Let the user = override the test.=0A-else=0A-as=5Fsave=5FIFS=3D$IFS; IFS=3D$PATH=5FSEPARAT= OR=0A-for as=5Fdir in $PATH=0A-do=0A- IFS=3D$as=5Fsave=5FIFS=0A- test -z = "$as=5Fdir" && as=5Fdir=3D.=0A- for ac=5Fexec=5Fext in '' $ac=5Fexecutable= =5Fextensions; do=0A- if { test -f "$as=5Fdir/$ac=5Fword$ac=5Fexec=5Fext" = && $as=5Ftest=5Fx "$as=5Fdir/$ac=5Fword$ac=5Fexec=5Fext"; }; then=0A- ac= =5Fcv=5Fprog=5Fac=5Fct=5FCC=3D"$ac=5Fprog"=0A- echo "$as=5Fme:$LINENO: f= ound $as=5Fdir/$ac=5Fword$ac=5Fexec=5Fext" >&5=0A- break 2=0A- fi=0A-do= ne=0A-done=0A-IFS=3D$as=5Fsave=5FIFS=0A-=0A-fi=0A-fi=0A-ac=5Fct=5FCC=3D$ac= =5Fcv=5Fprog=5Fac=5Fct=5FCC=0A-if test -n "$ac=5Fct=5FCC"; then=0A- { echo= "$as=5Fme:$LINENO: result: $ac=5Fct=5FCC" >&5=0A-echo "${ECHO=5FT}$ac=5Fct= =5FCC" >&6; }=0A-else=0A- { echo "$as=5Fme:$LINENO: result: no" >&5=0A-ech= o "${ECHO=5FT}no" >&6; }=0A-fi=0A-=0A-=0A- test -n "$ac=5Fct=5FCC" && brea= k=0A-done=0A-=0A- if test "x$ac=5Fct=5FCC" =3D x; then=0A- CC=3D""=0A- = else=0A- case $cross=5Fcompiling:$ac=5Ftool=5Fwarned in=0A-yes:)=0A-{ e= cho "$as=5Fme:$LINENO: WARNING: In the future, Autoconf will not detect cro= ss-tools=0A-whose name does not start with the host triplet. If you think = this=0A-configuration is useful to you, please write to autoconf@gnu.org." = >&5=0A-echo "$as=5Fme: WARNING: In the future, Autoconf will not detect cro= ss-tools=0A-whose name does not start with the host triplet. If you think = this=0A-configuration is useful to you, please write to autoconf@gnu.org." = >&2;}=0A-ac=5Ftool=5Fwarned=3Dyes ;;=0A-esac=0A- CC=3D$ac=5Fct=5FCC=0A- = fi=0A-fi=0A-=0A-fi=0A-=0A-=0A-test -z "$CC" && { { echo "$as=5Fme:$LINENO:= error: no acceptable C compiler found in \$PATH=0A-See \`config.log' for m= ore details." >&5=0A-echo "$as=5Fme: error: no acceptable C compiler found = in \$PATH=0A-See \`config.log' for more details." >&2;}=0A- { (exit 1); e= xit 1; }; }=0A-=0A-# Provide some information about the compiler.=0A-echo "= $as=5Fme:$LINENO: checking for C compiler version" >&5=0A-ac=5Fcompiler=3D`= set X $ac=5Fcompile; echo $2`=0A-{ (ac=5Ftry=3D"$ac=5Fcompiler --version >&= 5"=0A-case "(($ac=5Ftry" in=0A- *\"* | *\`* | *\\*) ac=5Ftry=5Fecho=3D\$ac= =5Ftry;;=0A- *) ac=5Ftry=5Fecho=3D$ac=5Ftry;;=0A-esac=0A-eval "echo \"\$as= =5Fme:$LINENO: $ac=5Ftry=5Fecho\"") >&5=0A- (eval "$ac=5Fcompiler --versio= n >&5") 2>&5=0A- ac=5Fstatus=3D$?=0A- echo "$as=5Fme:$LINENO: \$? =3D $ac= =5Fstatus" >&5=0A- (exit $ac=5Fstatus); }=0A-{ (ac=5Ftry=3D"$ac=5Fcompiler= -v >&5"=0A-case "(($ac=5Ftry" in=0A- *\"* | *\`* | *\\*) ac=5Ftry=5Fecho= =3D\$ac=5Ftry;;=0A- *) ac=5Ftry=5Fecho=3D$ac=5Ftry;;=0A-esac=0A-eval "echo= \"\$as=5Fme:$LINENO: $ac=5Ftry=5Fecho\"") >&5=0A- (eval "$ac=5Fcompiler -= v >&5") 2>&5=0A- ac=5Fstatus=3D$?=0A- echo "$as=5Fme:$LINENO: \$? =3D $ac= =5Fstatus" >&5=0A- (exit $ac=5Fstatus); }=0A-{ (ac=5Ftry=3D"$ac=5Fcompiler= -V >&5"=0A-case "(($ac=5Ftry" in=0A- *\"* | *\`* | *\\*) ac=5Ftry=5Fecho= =3D\$ac=5Ftry;;=0A- *) ac=5Ftry=5Fecho=3D$ac=5Ftry;;=0A-esac=0A-eval "echo= \"\$as=5Fme:$LINENO: $ac=5Ftry=5Fecho\"") >&5=0A- (eval "$ac=5Fcompiler -= V >&5") 2>&5=0A- ac=5Fstatus=3D$?=0A- echo "$as=5Fme:$LINENO: \$? =3D $ac= =5Fstatus" >&5=0A- (exit $ac=5Fstatus); }=0A-=0A-cat >conftest.$ac=5Fext <= <=5FACEOF=0A-/* confdefs.h. */=0A-=5FACEOF=0A-cat confdefs.h >>conftest.$a= c=5Fext=0A-cat >>conftest.$ac=5Fext <<=5FACEOF=0A-/* end confdefs.h. */=0A= -=0A-int=0A-main ()=0A-{=0A-=0A- ;=0A- return 0;=0A-}=0A-=5FACEOF=0A-ac= =5Fclean=5Ffiles=5Fsave=3D$ac=5Fclean=5Ffiles=0A-ac=5Fclean=5Ffiles=3D"$ac= =5Fclean=5Ffiles a.out a.exe b.out"=0A-# Try to create an executable withou= t -o first, disregard a.out.=0A-# It will help us diagnose broken compilers= , and finding out an intuition=0A-# of exeext.=0A-{ echo "$as=5Fme:$LINENO:= checking for C compiler default output file name" >&5=0A-echo $ECHO=5FN "c= hecking for C compiler default output file name... $ECHO=5FC" >&6; }=0A-ac= =5Flink=5Fdefault=3D`echo "$ac=5Flink" | sed 's/ -o *conftest[^ ]*//'`=0A-#= =0A-# List of possible output files, starting from the most likely.=0A-# Th= e algorithm is not robust to junk in `.', hence go to wildcards (a.*)=0A-# = only as a last resort. b.out is created by i960 compilers.=0A-ac=5Ffiles= =3D'a=5Fout.exe a.exe conftest.exe a.out conftest a.* conftest.* b.out'=0A-= #=0A-# The IRIX 6 linker writes into existing files which may not be=0A-# e= xecutable, retaining their permissions. Remove them first so a=0A-# subseq= uent execution test works.=0A-ac=5Frmfiles=3D=0A-for ac=5Ffile in $ac=5Ffil= es=0A-do=0A- case $ac=5Ffile in=0A- *.$ac=5Fext | *.xcoff | *.tds | *.d= | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.o | *.obj ) ;;=0A- = * ) ac=5Frmfiles=3D"$ac=5Frmfiles $ac=5Ffile";;=0A- esac=0A-done=0A-rm -f = $ac=5Frmfiles=0A-=0A-if { (ac=5Ftry=3D"$ac=5Flink=5Fdefault"=0A-case "(($ac= =5Ftry" in=0A- *\"* | *\`* | *\\*) ac=5Ftry=5Fecho=3D\$ac=5Ftry;;=0A- *) = ac=5Ftry=5Fecho=3D$ac=5Ftry;;=0A-esac=0A-eval "echo \"\$as=5Fme:$LINENO: $a= c=5Ftry=5Fecho\"") >&5=0A- (eval "$ac=5Flink=5Fdefault") 2>&5=0A- ac=5Fst= atus=3D$?=0A- echo "$as=5Fme:$LINENO: \$? =3D $ac=5Fstatus" >&5=0A- (exit= $ac=5Fstatus); }; then=0A- # Autoconf-2.13 could set the ac=5Fcv=5Fexeext= variable to `no'.=0A-# So ignore a value of `no', otherwise this would lea= d to `EXEEXT =3D no'=0A-# in a Makefile. We should not override ac=5Fcv=5F= exeext if it was cached,=0A-# so that the user can short-circuit this test = for compilers unknown to=0A-# Autoconf.=0A-for ac=5Ffile in $ac=5Ffiles ''= =0A-do=0A- test -f "$ac=5Ffile" || continue=0A- case $ac=5Ffile in=0A- = *.$ac=5Fext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.ma= p | *.inf | *.o | *.obj )=0A- ;;=0A- [ab].out )=0A- # We found the defau= lt executable, but exeext=3D'' is most=0A- # certainly right.=0A- break;;= =0A- *.* )=0A- if test "${ac=5Fcv=5Fexeext+set}" =3D set && test = "$ac=5Fcv=5Fexeext" !=3D no;=0A- then :; else=0A- ac=5Fcv=5Fexeext=3D`ex= pr "$ac=5Ffile" : '[^.]*\(\..*\)'`=0A- fi=0A- # We set ac=5Fcv=5Fexeext her= e because the later test for it is not=0A- # safe: cross compilers may not = add the suffix if given an `-o'=0A- # argument, so we may need to know it a= t that point already.=0A- # Even if this section looks crufty: it has the a= dvantage of=0A- # actually working.=0A- break;;=0A- * )=0A- break;;=0A- = esac=0A-done=0A-test "$ac=5Fcv=5Fexeext" =3D no && ac=5Fcv=5Fexeext=3D=0A-= =0A-else=0A- ac=5Ffile=3D''=0A-fi=0A-=0A-{ echo "$as=5Fme:$LINENO: result:= $ac=5Ffile" >&5=0A-echo "${ECHO=5FT}$ac=5Ffile" >&6; }=0A-if test -z "$ac= =5Ffile"; then=0A- echo "$as=5Fme: failed program was:" >&5=0A-sed 's/^/| = /' conftest.$ac=5Fext >&5=0A-=0A-{ { echo "$as=5Fme:$LINENO: error: C compi= ler cannot create executables=0A-See \`config.log' for more details." >&5= =0A-echo "$as=5Fme: error: C compiler cannot create executables=0A-See \`co= nfig.log' for more details." >&2;}=0A- { (exit 77); exit 77; }; }=0A-fi= =0A-=0A-ac=5Fexeext=3D$ac=5Fcv=5Fexeext=0A-=0A-# Check that the compiler pr= oduces executables we can run. If not, either=0A-# the compiler is broken,= or we cross compile.=0A-{ echo "$as=5Fme:$LINENO: checking whether the C c= ompiler works" >&5=0A-echo $ECHO=5FN "checking whether the C compiler works= ... $ECHO=5FC" >&6; }=0A-# FIXME: These cross compiler hacks should be remo= ved for Autoconf 3.0=0A-# If not cross compiling, check that we can run a s= imple program.=0A-if test "$cross=5Fcompiling" !=3D yes; then=0A- if { ac= =5Ftry=3D'./$ac=5Ffile'=0A- { (case "(($ac=5Ftry" in=0A- *\"* | *\`* | *\= \*) ac=5Ftry=5Fecho=3D\$ac=5Ftry;;=0A- *) ac=5Ftry=5Fecho=3D$ac=5Ftry;;=0A= -esac=0A-eval "echo \"\$as=5Fme:$LINENO: $ac=5Ftry=5Fecho\"") >&5=0A- (eva= l "$ac=5Ftry") 2>&5=0A- ac=5Fstatus=3D$?=0A- echo "$as=5Fme:$LINENO: \$? = =3D $ac=5Fstatus" >&5=0A- (exit $ac=5Fstatus); }; }; then=0A- cross=5Fc= ompiling=3Dno=0A- else=0A- if test "$cross=5Fcompiling" =3D maybe; then= =0A- cross=5Fcompiling=3Dyes=0A- else=0A- { { echo "$as=5Fme:$LINENO: er= ror: cannot run C compiled programs.=0A-If you meant to cross compile, use = \`--host'.=0A-See \`config.log' for more details." >&5=0A-echo "$as=5Fme: e= rror: cannot run C compiled programs.=0A-If you meant to cross compile, use= \`--host'.=0A-See \`config.log' for more details." >&2;}=0A- { (exit 1);= exit 1; }; }=0A- fi=0A- fi=0A-fi=0A-{ echo "$as=5Fme:$LINENO: result: = yes" >&5=0A-echo "${ECHO=5FT}yes" >&6; }=0A-=0A-rm -f a.out a.exe conftest$= ac=5Fcv=5Fexeext b.out=0A-ac=5Fclean=5Ffiles=3D$ac=5Fclean=5Ffiles=5Fsave= =0A-# Check that the compiler produces executables we can run. If not, eit= her=0A-# the compiler is broken, or we cross compile.=0A-{ echo "$as=5Fme:$= LINENO: checking whether we are cross compiling" >&5=0A-echo $ECHO=5FN "che= cking whether we are cross compiling... $ECHO=5FC" >&6; }=0A-{ echo "$as=5F= me:$LINENO: result: $cross=5Fcompiling" >&5=0A-echo "${ECHO=5FT}$cross=5Fco= mpiling" >&6; }=0A-=0A-{ echo "$as=5Fme:$LINENO: checking for suffix of exe= cutables" >&5=0A-echo $ECHO=5FN "checking for suffix of executables... $ECH= O=5FC" >&6; }=0A-if { (ac=5Ftry=3D"$ac=5Flink"=0A-case "(($ac=5Ftry" in=0A-= *\"* | *\`* | *\\*) ac=5Ftry=5Fecho=3D\$ac=5Ftry;;=0A- *) ac=5Ftry=5Fech= o=3D$ac=5Ftry;;=0A-esac=0A-eval "echo \"\$as=5Fme:$LINENO: $ac=5Ftry=5Fecho= \"") >&5=0A- (eval "$ac=5Flink") 2>&5=0A- ac=5Fstatus=3D$?=0A- echo "$as= =5Fme:$LINENO: \$? =3D $ac=5Fstatus" >&5=0A- (exit $ac=5Fstatus); }; then= =0A- # If both `conftest.exe' and `conftest' are `present' (well, observab= le)=0A-# catch `conftest.exe'. For instance with Cygwin, `ls conftest' wil= l=0A-# work properly (i.e., refer to `conftest.exe'), while it won't with= =0A-# `rm'.=0A-for ac=5Ffile in conftest.exe conftest conftest.*; do=0A- t= est -f "$ac=5Ffile" || continue=0A- case $ac=5Ffile in=0A- *.$ac=5Fext = | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *= .o | *.obj ) ;;=0A- *.* ) ac=5Fcv=5Fexeext=3D`expr "$ac=5Ffile" : '[^.]*= \(\..*\)'`=0A- break;;=0A- * ) break;;=0A- esac=0A-done=0A-else=0A- = { { echo "$as=5Fme:$LINENO: error: cannot compute suffix of executables: ca= nnot compile and link=0A-See \`config.log' for more details." >&5=0A-echo "= $as=5Fme: error: cannot compute suffix of executables: cannot compile and l= ink=0A-See \`config.log' for more details." >&2;}=0A- { (exit 1); exit 1;= }; }=0A-fi=0A-=0A-rm -f conftest$ac=5Fcv=5Fexeext=0A-{ echo "$as=5Fme:$LIN= ENO: result: $ac=5Fcv=5Fexeext" >&5=0A-echo "${ECHO=5FT}$ac=5Fcv=5Fexeext" = >&6; }=0A-=0A-rm -f conftest.$ac=5Fext=0A-EXEEXT=3D$ac=5Fcv=5Fexeext=0A-ac= =5Fexeext=3D$EXEEXT=0A-{ echo "$as=5Fme:$LINENO: checking for suffix of obj= ect files" >&5=0A-echo $ECHO=5FN "checking for suffix of object files... $E= CHO=5FC" >&6; }=0A-if test "${ac=5Fcv=5Fobjext+set}" =3D set; then=0A- ech= o $ECHO=5FN "(cached) $ECHO=5FC" >&6=0A-else=0A- cat >conftest.$ac=5Fext <= <=5FACEOF=0A-/* confdefs.h. */=0A-=5FACEOF=0A-cat confdefs.h >>conftest.$a= c=5Fext=0A-cat >>conftest.$ac=5Fext <<=5FACEOF=0A-/* end confdefs.h. */=0A= -=0A-int=0A-main ()=0A-{=0A-=0A- ;=0A- return 0;=0A-}=0A-=5FACEOF=0A-rm -= f conftest.o conftest.obj=0A-if { (ac=5Ftry=3D"$ac=5Fcompile"=0A-case "(($a= c=5Ftry" in=0A- *\"* | *\`* | *\\*) ac=5Ftry=5Fecho=3D\$ac=5Ftry;;=0A- *)= ac=5Ftry=5Fecho=3D$ac=5Ftry;;=0A-esac=0A-eval "echo \"\$as=5Fme:$LINENO: $= ac=5Ftry=5Fecho\"") >&5=0A- (eval "$ac=5Fcompile") 2>&5=0A- ac=5Fstatus= =3D$?=0A- echo "$as=5Fme:$LINENO: \$? =3D $ac=5Fstatus" >&5=0A- (exit $ac= =5Fstatus); }; then=0A- for ac=5Ffile in conftest.o conftest.obj conftest.= *; do=0A- test -f "$ac=5Ffile" || continue;=0A- case $ac=5Ffile in=0A- = *.$ac=5Fext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.ma= p | *.inf ) ;;=0A- *) ac=5Fcv=5Fobjext=3D`expr "$ac=5Ffile" : '.*\.\(.*\= )'`=0A- break;;=0A- esac=0A-done=0A-else=0A- echo "$as=5Fme: failed= program was:" >&5=0A-sed 's/^/| /' conftest.$ac=5Fext >&5=0A-=0A-{ { echo = "$as=5Fme:$LINENO: error: cannot compute suffix of object files: cannot com= pile=0A-See \`config.log' for more details." >&5=0A-echo "$as=5Fme: error: = cannot compute suffix of object files: cannot compile=0A-See \`config.log' = for more details." >&2;}=0A- { (exit 1); exit 1; }; }=0A-fi=0A-=0A-rm -f = conftest.$ac=5Fcv=5Fobjext conftest.$ac=5Fext=0A-fi=0A-{ echo "$as=5Fme:$LI= NENO: result: $ac=5Fcv=5Fobjext" >&5=0A-echo "${ECHO=5FT}$ac=5Fcv=5Fobjext"= >&6; }=0A-OBJEXT=3D$ac=5Fcv=5Fobjext=0A-ac=5Fobjext=3D$OBJEXT=0A-{ echo "$= as=5Fme:$LINENO: checking whether we are using the GNU C compiler" >&5=0A-e= cho $ECHO=5FN "checking whether we are using the GNU C compiler... $ECHO=5F= C" >&6; }=0A-if test "${ac=5Fcv=5Fc=5Fcompiler=5Fgnu+set}" =3D set; then=0A= - echo $ECHO=5FN "(cached) $ECHO=5FC" >&6=0A-else=0A- cat >conftest.$ac= =5Fext <<=5FACEOF=0A-/* confdefs.h. */=0A-=5FACEOF=0A-cat confdefs.h >>con= ftest.$ac=5Fext=0A-cat >>conftest.$ac=5Fext <<=5FACEOF=0A-/* end confdefs.h= . */=0A-=0A-int=0A-main ()=0A-{=0A-#ifndef =5F=5FGNUC=5F=5F=0A- chok= e me=0A-#endif=0A-=0A- ;=0A- return 0;=0A-}=0A-=5FACEOF=0A-rm -f conftest= .$ac=5Fobjext=0A-if { (ac=5Ftry=3D"$ac=5Fcompile"=0A-case "(($ac=5Ftry" in= =0A- *\"* | *\`* | *\\*) ac=5Ftry=5Fecho=3D\$ac=5Ftry;;=0A- *) ac=5Ftry= =5Fecho=3D$ac=5Ftry;;=0A-esac=0A-eval "echo \"\$as=5Fme:$LINENO: $ac=5Ftry= =5Fecho\"") >&5=0A- (eval "$ac=5Fcompile") 2>conftest.er1=0A- ac=5Fstatus= =3D$?=0A- grep -v '^ *+' conftest.er1 >conftest.err=0A- rm -f conftest.er= 1=0A- cat conftest.err >&5=0A- echo "$as=5Fme:$LINENO: \$? =3D $ac=5Fstat= us" >&5=0A- (exit $ac=5Fstatus); } && {=0A- test -z "$ac=5Fc=5Fwerror=5Ff= lag" ||=0A- test ! -s conftest.err=0A- } && test -s conftest.$ac=5Fo= bjext; then=0A- ac=5Fcompiler=5Fgnu=3Dyes=0A-else=0A- echo "$as=5Fme: fai= led program was:" >&5=0A-sed 's/^/| /' conftest.$ac=5Fext >&5=0A-=0A- ac=5F= compiler=5Fgnu=3Dno=0A-fi=0A-=0A-rm -f core conftest.err conftest.$ac=5Fobj= ext conftest.$ac=5Fext=0A-ac=5Fcv=5Fc=5Fcompiler=5Fgnu=3D$ac=5Fcompiler=5Fg= nu=0A-=0A-fi=0A-{ echo "$as=5Fme:$LINENO: result: $ac=5Fcv=5Fc=5Fcompiler= =5Fgnu" >&5=0A-echo "${ECHO=5FT}$ac=5Fcv=5Fc=5Fcompiler=5Fgnu" >&6; }=0A-GC= C=3D`test $ac=5Fcompiler=5Fgnu =3D yes && echo yes`=0A-ac=5Ftest=5FCFLAGS= =3D${CFLAGS+set}=0A-ac=5Fsave=5FCFLAGS=3D$CFLAGS=0A-{ echo "$as=5Fme:$LINEN= O: checking whether $CC accepts -g" >&5=0A-echo $ECHO=5FN "checking whether= $CC accepts -g... $ECHO=5FC" >&6; }=0A-if test "${ac=5Fcv=5Fprog=5Fcc=5Fg+= set}" =3D set; then=0A- echo $ECHO=5FN "(cached) $ECHO=5FC" >&6=0A-else=0A= - ac=5Fsave=5Fc=5Fwerror=5Fflag=3D$ac=5Fc=5Fwerror=5Fflag=0A- ac=5Fc=5Fw= error=5Fflag=3Dyes=0A- ac=5Fcv=5Fprog=5Fcc=5Fg=3Dno=0A- CFLAGS=3D"-g"= =0A- cat >conftest.$ac=5Fext <<=5FACEOF=0A-/* confdefs.h. */=0A-=5FACEOF= =0A-cat confdefs.h >>conftest.$ac=5Fext=0A-cat >>conftest.$ac=5Fext <<=5FAC= EOF=0A-/* end confdefs.h. */=0A-=0A-int=0A-main ()=0A-{=0A-=0A- ;=0A- re= turn 0;=0A-}=0A-=5FACEOF=0A-rm -f conftest.$ac=5Fobjext=0A-if { (ac=5Ftry= =3D"$ac=5Fcompile"=0A-case "(($ac=5Ftry" in=0A- *\"* | *\`* | *\\*) ac=5Ft= ry=5Fecho=3D\$ac=5Ftry;;=0A- *) ac=5Ftry=5Fecho=3D$ac=5Ftry;;=0A-esac=0A-e= val "echo \"\$as=5Fme:$LINENO: $ac=5Ftry=5Fecho\"") >&5=0A- (eval "$ac=5Fc= ompile") 2>conftest.er1=0A- ac=5Fstatus=3D$?=0A- grep -v '^ *+' conftest.= er1 >conftest.err=0A- rm -f conftest.er1=0A- cat conftest.err >&5=0A- ec= ho "$as=5Fme:$LINENO: \$? =3D $ac=5Fstatus" >&5=0A- (exit $ac=5Fstatus); }= && {=0A- test -z "$ac=5Fc=5Fwerror=5Fflag" ||=0A- test ! -s conftest.err= =0A- } && test -s conftest.$ac=5Fobjext; then=0A- ac=5Fcv=5Fprog=5Fc= c=5Fg=3Dyes=0A-else=0A- echo "$as=5Fme: failed program was:" >&5=0A-sed 's= /^/| /' conftest.$ac=5Fext >&5=0A-=0A- CFLAGS=3D""=0A- cat >conftest.$= ac=5Fext <<=5FACEOF=0A-/* confdefs.h. */=0A-=5FACEOF=0A-cat confdefs.h >>c= onftest.$ac=5Fext=0A-cat >>conftest.$ac=5Fext <<=5FACEOF=0A-/* end confdefs= .h. */=0A-=0A-int=0A-main ()=0A-{=0A-=0A- ;=0A- return 0;=0A-}=0A-=5FACE= OF=0A-rm -f conftest.$ac=5Fobjext=0A-if { (ac=5Ftry=3D"$ac=5Fcompile"=0A-ca= se "(($ac=5Ftry" in=0A- *\"* | *\`* | *\\*) ac=5Ftry=5Fecho=3D\$ac=5Ftry;;= =0A- *) ac=5Ftry=5Fecho=3D$ac=5Ftry;;=0A-esac=0A-eval "echo \"\$as=5Fme:$L= INENO: $ac=5Ftry=5Fecho\"") >&5=0A- (eval "$ac=5Fcompile") 2>conftest.er1= =0A- ac=5Fstatus=3D$?=0A- grep -v '^ *+' conftest.er1 >conftest.err=0A- = rm -f conftest.er1=0A- cat conftest.err >&5=0A- echo "$as=5Fme:$LINENO: \= $? =3D $ac=5Fstatus" >&5=0A- (exit $ac=5Fstatus); } && {=0A- test -z "$ac= =5Fc=5Fwerror=5Fflag" ||=0A- test ! -s conftest.err=0A- } && test -s= conftest.$ac=5Fobjext; then=0A- :=0A-else=0A- echo "$as=5Fme: failed pro= gram was:" >&5=0A-sed 's/^/| /' conftest.$ac=5Fext >&5=0A-=0A- ac=5Fc=5Fwer= ror=5Fflag=3D$ac=5Fsave=5Fc=5Fwerror=5Fflag=0A- CFLAGS=3D"-g"=0A- cat >co= nftest.$ac=5Fext <<=5FACEOF=0A-/* confdefs.h. */=0A-=5FACEOF=0A-cat confde= fs.h >>conftest.$ac=5Fext=0A-cat >>conftest.$ac=5Fext <<=5FACEOF=0A-/* end = confdefs.h. */=0A-=0A-int=0A-main ()=0A-{=0A-=0A- ;=0A- return 0;=0A-}= =0A-=5FACEOF=0A-rm -f conftest.$ac=5Fobjext=0A-if { (ac=5Ftry=3D"$ac=5Fcomp= ile"=0A-case "(($ac=5Ftry" in=0A- *\"* | *\`* | *\\*) ac=5Ftry=5Fecho=3D\$= ac=5Ftry;;=0A- *) ac=5Ftry=5Fecho=3D$ac=5Ftry;;=0A-esac=0A-eval "echo \"\$= as=5Fme:$LINENO: $ac=5Ftry=5Fecho\"") >&5=0A- (eval "$ac=5Fcompile") 2>con= ftest.er1=0A- ac=5Fstatus=3D$?=0A- grep -v '^ *+' conftest.er1 >conftest.= err=0A- rm -f conftest.er1=0A- cat conftest.err >&5=0A- echo "$as=5Fme:$= LINENO: \$? =3D $ac=5Fstatus" >&5=0A- (exit $ac=5Fstatus); } && {=0A- tes= t -z "$ac=5Fc=5Fwerror=5Fflag" ||=0A- test ! -s conftest.err=0A- } &= & test -s conftest.$ac=5Fobjext; then=0A- ac=5Fcv=5Fprog=5Fcc=5Fg=3Dyes=0A= -else=0A- echo "$as=5Fme: failed program was:" >&5=0A-sed 's/^/| /' confte= st.$ac=5Fext >&5=0A-=0A-=0A-fi=0A-=0A-rm -f core conftest.err conftest.$ac= =5Fobjext conftest.$ac=5Fext=0A-fi=0A-=0A-rm -f core conftest.err conftest.= $ac=5Fobjext conftest.$ac=5Fext=0A-fi=0A-=0A-rm -f core conftest.err confte= st.$ac=5Fobjext conftest.$ac=5Fext=0A- ac=5Fc=5Fwerror=5Fflag=3D$ac=5Fsav= e=5Fc=5Fwerror=5Fflag=0A-fi=0A-{ echo "$as=5Fme:$LINENO: result: $ac=5Fcv= =5Fprog=5Fcc=5Fg" >&5=0A-echo "${ECHO=5FT}$ac=5Fcv=5Fprog=5Fcc=5Fg" >&6; }= =0A-if test "$ac=5Ftest=5FCFLAGS" =3D set; then=0A- CFLAGS=3D$ac=5Fsave=5F= CFLAGS=0A-elif test $ac=5Fcv=5Fprog=5Fcc=5Fg =3D yes; then=0A- if test "$G= CC" =3D yes; then=0A- CFLAGS=3D"-g -O2"=0A- else=0A- CFLAGS=3D"-g"= =0A- fi=0A-else=0A- if test "$GCC" =3D yes; then=0A- CFLAGS=3D"-O2"=0A= - else=0A- CFLAGS=3D=0A- fi=0A-fi=0A-{ echo "$as=5Fme:$LINENO: checkin= g for $CC option to accept ISO C89" >&5=0A-echo $ECHO=5FN "checking for $CC= option to accept ISO C89... $ECHO=5FC" >&6; }=0A-if test "${ac=5Fcv=5Fprog= =5Fcc=5Fc89+set}" =3D set; then=0A- echo $ECHO=5FN "(cached) $ECHO=5FC" >&= 6=0A-else=0A- ac=5Fcv=5Fprog=5Fcc=5Fc89=3Dno=0A-ac=5Fsave=5FCC=3D$CC=0A-ca= t >conftest.$ac=5Fext <<=5FACEOF=0A-/* confdefs.h. */=0A-=5FACEOF=0A-cat c= onfdefs.h >>conftest.$ac=5Fext=0A-cat >>conftest.$ac=5Fext <<=5FACEOF=0A-/*= end confdefs.h. */=0A-#include =0A-#include =0A-#inclu= de =0A-#include =0A-/* Most of the following tests= are stolen from RCS 5.7's src/conf.sh. */=0A-struct buf { int x; };=0A-FI= LE * (*rcsopen) (struct buf *, struct stat *, int);=0A-static char *e (p, i= )=0A- char **p;=0A- int i;=0A-{=0A- return p[i];=0A-}=0A-static ch= ar *f (char * (*g) (char **, int), char **p, ...)=0A-{=0A- char *s;=0A- v= a=5Flist v;=0A- va=5Fstart (v,p);=0A- s =3D g (p, va=5Farg (v,int));=0A- = va=5Fend (v);=0A- return s;=0A-}=0A-=0A-/* OSF 4.0 Compaq cc is some sort= of almost-ANSI by default. It has=0A- function prototypes and stuff, bu= t not '\xHH' hex character constants.=0A- These don't provoke an error un= fortunately, instead are silently treated=0A- as 'x'. The following indu= ces an error, until -std is added to get=0A- proper ANSI mode. Curiously= '\x00'!=3D'x' always comes out true, for an=0A- array size at least. It= 's necessary to write '\x00'=3D=3D0 to get something=0A- that's true only= with -std. */=0A-int osf4=5Fcc=5Farray ['\x00' =3D=3D 0 ? 1 : -1];=0A-=0A= -/* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parame= ters=0A- inside strings and character constants. */=0A-#define FOO(x) 'x= '=0A-int xlc6=5Fcc=5Farray[FOO(a) =3D=3D 'x' ? 1 : -1];=0A-=0A-int test (in= t i, double x);=0A-struct s1 {int (*f) (int a);};=0A-struct s2 {int (*f) (d= ouble a);};=0A-int pairnames (int, char **, FILE *(*)(struct buf *, struct = stat *, int), int, int);=0A-int argc;=0A-char **argv;=0A-int=0A-main ()=0A-= {=0A-return f (e, argv, 0) !=3D argv[0] || f (e, argv, 1) !=3D argv[1];= =0A- ;=0A- return 0;=0A-}=0A-=5FACEOF=0A-for ac=5Farg in '' -qlanglvl=3De= xtc89 -qlanglvl=3Dansi -std \=0A- -Ae "-Aa -D=5FHPUX=5FSOURCE" "-Xc -D=5F= =5FEXTENSIONS=5F=5F"=0A-do=0A- CC=3D"$ac=5Fsave=5FCC $ac=5Farg"=0A- rm -f= conftest.$ac=5Fobjext=0A-if { (ac=5Ftry=3D"$ac=5Fcompile"=0A-case "(($ac= =5Ftry" in=0A- *\"* | *\`* | *\\*) ac=5Ftry=5Fecho=3D\$ac=5Ftry;;=0A- *) = ac=5Ftry=5Fecho=3D$ac=5Ftry;;=0A-esac=0A-eval "echo \"\$as=5Fme:$LINENO: $a= c=5Ftry=5Fecho\"") >&5=0A- (eval "$ac=5Fcompile") 2>conftest.er1=0A- ac= =5Fstatus=3D$?=0A- grep -v '^ *+' conftest.er1 >conftest.err=0A- rm -f co= nftest.er1=0A- cat conftest.err >&5=0A- echo "$as=5Fme:$LINENO: \$? =3D $= ac=5Fstatus" >&5=0A- (exit $ac=5Fstatus); } && {=0A- test -z "$ac=5Fc=5Fw= error=5Fflag" ||=0A- test ! -s conftest.err=0A- } && test -s conftes= t.$ac=5Fobjext; then=0A- ac=5Fcv=5Fprog=5Fcc=5Fc89=3D$ac=5Farg=0A-else=0A-= echo "$as=5Fme: failed program was:" >&5=0A-sed 's/^/| /' conftest.$ac=5F= ext >&5=0A-=0A-=0A-fi=0A-=0A-rm -f core conftest.err conftest.$ac=5Fobjext= =0A- test "x$ac=5Fcv=5Fprog=5Fcc=5Fc89" !=3D "xno" && break=0A-done=0A-rm = -f conftest.$ac=5Fext=0A-CC=3D$ac=5Fsave=5FCC=0A-=0A-fi=0A-# AC=5FCACHE=5FV= AL=0A-case "x$ac=5Fcv=5Fprog=5Fcc=5Fc89" in=0A- x)=0A- { echo "$as=5Fme= :$LINENO: result: none needed" >&5=0A-echo "${ECHO=5FT}none needed" >&6; } = ;;=0A- xno)=0A- { echo "$as=5Fme:$LINENO: result: unsupported" >&5=0A-e= cho "${ECHO=5FT}unsupported" >&6; } ;;=0A- *)=0A- CC=3D"$CC $ac=5Fcv=5F= prog=5Fcc=5Fc89"=0A- { echo "$as=5Fme:$LINENO: result: $ac=5Fcv=5Fprog= =5Fcc=5Fc89" >&5=0A-echo "${ECHO=5FT}$ac=5Fcv=5Fprog=5Fcc=5Fc89" >&6; } ;;= =0A-esac=0A-=0A-=0A-ac=5Fext=3Dc=0A-ac=5Fcpp=3D'$CPP $CPPFLAGS'=0A-ac=5Fcom= pile=3D'$CC -c $CFLAGS $CPPFLAGS conftest.$ac=5Fext >&5'=0A-ac=5Flink=3D'$C= C -o conftest$ac=5Fexeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac=5Fext $LI= BS >&5'=0A-ac=5Fcompiler=5Fgnu=3D$ac=5Fcv=5Fc=5Fcompiler=5Fgnu=0A-=0A-depcc= =3D"$CC" am=5Fcompiler=5Flist=3D=0A-=0A-{ echo "$as=5Fme:$LINENO: checkin= g dependency style of $depcc" >&5=0A-echo $ECHO=5FN "checking dependency st= yle of $depcc... $ECHO=5FC" >&6; }=0A-if test "${am=5Fcv=5FCC=5Fdependencie= s=5Fcompiler=5Ftype+set}" =3D set; then=0A- echo $ECHO=5FN "(cached) $ECHO= =5FC" >&6=0A-else=0A- if test -z "$AMDEP=5FTRUE" && test -f "$am=5Fdepcomp= "; then=0A- # We make a subdir and do the tests there. Otherwise we can e= nd up=0A- # making bogus files that we don't know about and never remove. = For=0A- # instance it was reported that on HP-UX the gcc test will end up= =0A- # making a dummy file named `D' -- because `-MD' means `put the outpu= t=0A- # in D'.=0A- mkdir conftest.dir=0A- # Copy depcomp to subdir becau= se otherwise we won't find it if we're=0A- # using a relative directory.= =0A- cp "$am=5Fdepcomp" conftest.dir=0A- cd conftest.dir=0A- # We will b= uild objects and dependencies in a subdirectory because=0A- # it helps to = detect inapplicable dependency modes. For instance=0A- # both Tru64's cc = and ICC support -MD to output dependencies as a=0A- # side effect of compi= lation, but ICC will put the dependencies in=0A- # the current directory w= hile Tru64 will put them in the object=0A- # directory.=0A- mkdir sub=0A-= =0A- am=5Fcv=5FCC=5Fdependencies=5Fcompiler=5Ftype=3Dnone=0A- if test "$a= m=5Fcompiler=5Flist" =3D ""; then=0A- am=5Fcompiler=5Flist=3D`sed -n 's= /^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp`=0A- fi=0A- for depmode in $am= =5Fcompiler=5Flist; do=0A- # Setup a source with many dependencies, beca= use some compilers=0A- # like to wrap large dependency lists on column 8= 0 (with \), and=0A- # we should not choose a depcomp mode which is confu= sed by this.=0A- #=0A- # We need to recreate these files for each tes= t, as the compiler may=0A- # overwrite some of them when testing with ob= scure command lines.=0A- # This happens at least with the AIX C compiler= .=0A- : > sub/conftest.c=0A- for i in 1 2 3 4 5 6; do=0A- echo '= #include "conftst'$i'.h"' >> sub/conftest.c=0A- # Using `: > sub/conft= st$i.h' creates only sub/conftst1.h with=0A- # Solaris 8's {/usr,}/bin= /sh.=0A- touch sub/conftst$i.h=0A- done=0A- echo "${am=5F=5Fincl= ude} ${am=5F=5Fquote}sub/conftest.Po${am=5F=5Fquote}" > confmf=0A-=0A- c= ase $depmode in=0A- nosideeffect)=0A- # after this tag, mechanisms = are not by side-effect, so they'll=0A- # only be used when explicitly = requested=0A- if test "x$enable=5Fdependency=5Ftracking" =3D xyes; the= n=0A- continue=0A- else=0A- break=0A- fi=0A- ;;=0A- none)= break ;;=0A- esac=0A- # We check with `-c' and `-o' for the sake of = the "dashmstdout"=0A- # mode. It turns out that the SunPro C++ compiler= does not properly=0A- # handle `-M -o', and we need to detect this.=0A-= if depmode=3D$depmode \=0A- source=3Dsub/conftest.c object=3Dsub/= conftest.${OBJEXT-o} \=0A- depfile=3Dsub/conftest.Po tmpdepfile=3Dsub= /conftest.TPo \=0A- $SHELL ./depcomp $depcc -c -o sub/conftest.${OBJE= XT-o} sub/conftest.c \=0A- >/dev/null 2>conftest.err &&=0A- g= rep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 &&=0A- grep sub/c= onftst6.h sub/conftest.Po > /dev/null 2>&1 &&=0A- grep sub/conftest.$= {OBJEXT-o} sub/conftest.Po > /dev/null 2>&1 &&=0A- ${MAKE-make} -s -f= confmf > /dev/null 2>&1; then=0A- # icc doesn't choke on unknown opti= ons, it will just issue warnings=0A- # or remarks (even with -Werror).= So we grep stderr for any message=0A- # that says an option was igno= red or not supported.=0A- # When given -MP, icc 7.0 and 7.1 complain t= husly:=0A- # icc: Command line warning: ignoring option '-M'; no arg= ument required=0A- # The diagnosis changed in icc 8.0:=0A- # ic= c: Command line remark: option '-MP' not supported=0A- if (grep 'ignor= ing option' conftest.err ||=0A- grep 'not supported' conftest.err)= >/dev/null 2>&1; then :; else=0A- am=5Fcv=5FCC=5Fdependencies=5Fcom= piler=5Ftype=3D$depmode=0A- break=0A- fi=0A- fi=0A- done=0A= -=0A- cd ..=0A- rm -rf conftest.dir=0A-else=0A- am=5Fcv=5FCC=5Fdependenc= ies=5Fcompiler=5Ftype=3Dnone=0A-fi=0A-=0A-fi=0A-{ echo "$as=5Fme:$LINENO: r= esult: $am=5Fcv=5FCC=5Fdependencies=5Fcompiler=5Ftype" >&5=0A-echo "${ECHO= =5FT}$am=5Fcv=5FCC=5Fdependencies=5Fcompiler=5Ftype" >&6; }=0A-CCDEPMODE=3D= depmode=3D$am=5Fcv=5FCC=5Fdependencies=5Fcompiler=5Ftype=0A-=0A- if=0A- te= st "x$enable=5Fdependency=5Ftracking" !=3D xno \=0A- && test "$am=5Fcv=5FC= C=5Fdependencies=5Fcompiler=5Ftype" =3D gcc3; then=0A- am=5F=5FfastdepCC= =5FTRUE=3D=0A- am=5F=5FfastdepCC=5FFALSE=3D'#'=0A-else=0A- am=5F=5Ffastde= pCC=5FTRUE=3D'#'=0A- am=5F=5FfastdepCC=5FFALSE=3D=0A-fi=0A-=0A-=0A-=0A-ac= =5Fext=3Dc=0A-ac=5Fcpp=3D'$CPP $CPPFLAGS'=0A-ac=5Fcompile=3D'$CC -c $CFLAGS= $CPPFLAGS conftest.$ac=5Fext >&5'=0A-ac=5Flink=3D'$CC -o conftest$ac=5Fexe= ext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac=5Fext $LIBS >&5'=0A-ac=5Fcompil= er=5Fgnu=3D$ac=5Fcv=5Fc=5Fcompiler=5Fgnu=0A-{ echo "$as=5Fme:$LINENO: check= ing how to run the C preprocessor" >&5=0A-echo $ECHO=5FN "checking how to r= un the C preprocessor... $ECHO=5FC" >&6; }=0A-# On Suns, sometimes $CPP nam= es a directory.=0A-if test -n "$CPP" && test -d "$CPP"; then=0A- CPP=3D=0A= -fi=0A-if test -z "$CPP"; then=0A- if test "${ac=5Fcv=5Fprog=5FCPP+set}" = =3D set; then=0A- echo $ECHO=5FN "(cached) $ECHO=5FC" >&6=0A-else=0A- = # Double quotes because CPP needs to be expanded=0A- for CPP in "$CC -E= " "$CC -E -traditional-cpp" "/lib/cpp"=0A- do=0A- ac=5Fpreproc=5Fok= =3Dfalse=0A-for ac=5Fc=5Fpreproc=5Fwarn=5Fflag in '' yes=0A-do=0A- # Use a= header file that comes with gcc, so configuring glibc=0A- # with a fresh = cross-compiler works.=0A- # Prefer to if =5F=5FSTDC= =5F=5F is defined, since=0A- # exists even on freestanding comp= ilers.=0A- # On the NeXT, cc -E runs the code through the compiler's parse= r,=0A- # not just through cpp. "Syntax error" is here to catch this case.= =0A- cat >conftest.$ac=5Fext <<=5FACEOF=0A-/* confdefs.h. */=0A-=5FACEOF= =0A-cat confdefs.h >>conftest.$ac=5Fext=0A-cat >>conftest.$ac=5Fext <<=5FAC= EOF=0A-/* end confdefs.h. */=0A-#ifdef =5F=5FSTDC=5F=5F=0A-# include =0A-#else=0A-# include =0A-#endif=0A- Syntax error=0A-= =5FACEOF=0A-if { (ac=5Ftry=3D"$ac=5Fcpp conftest.$ac=5Fext"=0A-case "(($ac= =5Ftry" in=0A- *\"* | *\`* | *\\*) ac=5Ftry=5Fecho=3D\$ac=5Ftry;;=0A- *) = ac=5Ftry=5Fecho=3D$ac=5Ftry;;=0A-esac=0A-eval "echo \"\$as=5Fme:$LINENO: $a= c=5Ftry=5Fecho\"") >&5=0A- (eval "$ac=5Fcpp conftest.$ac=5Fext") 2>conftes= t.er1=0A- ac=5Fstatus=3D$?=0A- grep -v '^ *+' conftest.er1 >conftest.err= =0A- rm -f conftest.er1=0A- cat conftest.err >&5=0A- echo "$as=5Fme:$LIN= ENO: \$? =3D $ac=5Fstatus" >&5=0A- (exit $ac=5Fstatus); } >/dev/null && {= =0A- test -z "$ac=5Fc=5Fpreproc=5Fwarn=5Fflag$ac=5Fc=5Fwerror=5Fflag" ||= =0A- test ! -s conftest.err=0A- }; then=0A- :=0A-else=0A- echo "$a= s=5Fme: failed program was:" >&5=0A-sed 's/^/| /' conftest.$ac=5Fext >&5=0A= -=0A- # Broken: fails on valid input.=0A-continue=0A-fi=0A-=0A-rm -f conft= est.err conftest.$ac=5Fext=0A-=0A- # OK, works on sane cases. Now check w= hether nonexistent headers=0A- # can be detected and how.=0A- cat >confte= st.$ac=5Fext <<=5FACEOF=0A-/* confdefs.h. */=0A-=5FACEOF=0A-cat confdefs.h= >>conftest.$ac=5Fext=0A-cat >>conftest.$ac=5Fext <<=5FACEOF=0A-/* end conf= defs.h. */=0A-#include =0A-=5FACEOF=0A-if { (ac=5Ftry= =3D"$ac=5Fcpp conftest.$ac=5Fext"=0A-case "(($ac=5Ftry" in=0A- *\"* | *\`*= | *\\*) ac=5Ftry=5Fecho=3D\$ac=5Ftry;;=0A- *) ac=5Ftry=5Fecho=3D$ac=5Ftry= ;;=0A-esac=0A-eval "echo \"\$as=5Fme:$LINENO: $ac=5Ftry=5Fecho\"") >&5=0A- = (eval "$ac=5Fcpp conftest.$ac=5Fext") 2>conftest.er1=0A- ac=5Fstatus=3D$?= =0A- grep -v '^ *+' conftest.er1 >conftest.err=0A- rm -f conftest.er1=0A-= cat conftest.err >&5=0A- echo "$as=5Fme:$LINENO: \$? =3D $ac=5Fstatus" >= &5=0A- (exit $ac=5Fstatus); } >/dev/null && {=0A- test -z "$ac=5Fc=5Fprep= roc=5Fwarn=5Fflag$ac=5Fc=5Fwerror=5Fflag" ||=0A- test ! -s conftest.err=0A= - }; then=0A- # Broken: success on invalid input.=0A-continue=0A-els= e=0A- echo "$as=5Fme: failed program was:" >&5=0A-sed 's/^/| /' conftest.$= ac=5Fext >&5=0A-=0A- # Passes both tests.=0A-ac=5Fpreproc=5Fok=3D:=0A-brea= k=0A-fi=0A-=0A-rm -f conftest.err conftest.$ac=5Fext=0A-=0A-done=0A-# Becau= se of `break', =5FAC=5FPREPROC=5FIFELSE's cleaning code was skipped.=0A-rm = -f conftest.err conftest.$ac=5Fext=0A-if $ac=5Fpreproc=5Fok; then=0A- brea= k=0A-fi=0A-=0A- done=0A- ac=5Fcv=5Fprog=5FCPP=3D$CPP=0A-=0A-fi=0A- C= PP=3D$ac=5Fcv=5Fprog=5FCPP=0A-else=0A- ac=5Fcv=5Fprog=5FCPP=3D$CPP=0A-fi= =0A-{ echo "$as=5Fme:$LINENO: result: $CPP" >&5=0A-echo "${ECHO=5FT}$CPP" >= &6; }=0A-ac=5Fpreproc=5Fok=3Dfalse=0A-for ac=5Fc=5Fpreproc=5Fwarn=5Fflag in= '' yes=0A-do=0A- # Use a header file that comes with gcc, so configuring = glibc=0A- # with a fresh cross-compiler works.=0A- # Prefer to= if =5F=5FSTDC=5F=5F is defined, since=0A- # exists = even on freestanding compilers.=0A- # On the NeXT, cc -E runs the code thr= ough the compiler's parser,=0A- # not just through cpp. "Syntax error" is = here to catch this case.=0A- cat >conftest.$ac=5Fext <<=5FACEOF=0A-/* conf= defs.h. */=0A-=5FACEOF=0A-cat confdefs.h >>conftest.$ac=5Fext=0A-cat >>con= ftest.$ac=5Fext <<=5FACEOF=0A-/* end confdefs.h. */=0A-#ifdef =5F=5FSTDC= =5F=5F=0A-# include =0A-#else=0A-# include =0A-#endif= =0A- Syntax error=0A-=5FACEOF=0A-if { (ac=5Ftry=3D"$ac=5Fcpp conftest= .$ac=5Fext"=0A-case "(($ac=5Ftry" in=0A- *\"* | *\`* | *\\*) ac=5Ftry=5Fec= ho=3D\$ac=5Ftry;;=0A- *) ac=5Ftry=5Fecho=3D$ac=5Ftry;;=0A-esac=0A-eval "ec= ho \"\$as=5Fme:$LINENO: $ac=5Ftry=5Fecho\"") >&5=0A- (eval "$ac=5Fcpp conf= test.$ac=5Fext") 2>conftest.er1=0A- ac=5Fstatus=3D$?=0A- grep -v '^ *+' c= onftest.er1 >conftest.err=0A- rm -f conftest.er1=0A- cat conftest.err >&5= =0A- echo "$as=5Fme:$LINENO: \$? =3D $ac=5Fstatus" >&5=0A- (exit $ac=5Fst= atus); } >/dev/null && {=0A- test -z "$ac=5Fc=5Fpreproc=5Fwarn=5Fflag$ac= =5Fc=5Fwerror=5Fflag" ||=0A- test ! -s conftest.err=0A- }; then=0A- = :=0A-else=0A- echo "$as=5Fme: failed program was:" >&5=0A-sed 's/^/| /' c= onftest.$ac=5Fext >&5=0A-=0A- # Broken: fails on valid input.=0A-continue= =0A-fi=0A-=0A-rm -f conftest.err conftest.$ac=5Fext=0A-=0A- # OK, works on= sane cases. Now check whether nonexistent headers=0A- # can be detected = and how.=0A- cat >conftest.$ac=5Fext <<=5FACEOF=0A-/* confdefs.h. */=0A-= =5FACEOF=0A-cat confdefs.h >>conftest.$ac=5Fext=0A-cat >>conftest.$ac=5Fext= <<=5FACEOF=0A-/* end confdefs.h. */=0A-#include =0A-= =5FACEOF=0A-if { (ac=5Ftry=3D"$ac=5Fcpp conftest.$ac=5Fext"=0A-case "(($ac= =5Ftry" in=0A- *\"* | *\`* | *\\*) ac=5Ftry=5Fecho=3D\$ac=5Ftry;;=0A- *) = ac=5Ftry=5Fecho=3D$ac=5Ftry;;=0A-esac=0A-eval "echo \"\$as=5Fme:$LINENO: $a= c=5Ftry=5Fecho\"") >&5=0A- (eval "$ac=5Fcpp conftest.$ac=5Fext") 2>conftes= t.er1=0A- ac=5Fstatus=3D$?=0A- grep -v '^ *+' conftest.er1 >conftest.err= =0A- rm -f conftest.er1=0A- cat conftest.err >&5=0A- echo "$as=5Fme:$LIN= ENO: \$? =3D $ac=5Fstatus" >&5=0A- (exit $ac=5Fstatus); } >/dev/null && {= =0A- test -z "$ac=5Fc=5Fpreproc=5Fwarn=5Fflag$ac=5Fc=5Fwerror=5Fflag" ||= =0A- test ! -s conftest.err=0A- }; then=0A- # Broken: success on in= valid input.=0A-continue=0A-else=0A- echo "$as=5Fme: failed program was:" = >&5=0A-sed 's/^/| /' conftest.$ac=5Fext >&5=0A-=0A- # Passes both tests.= =0A-ac=5Fpreproc=5Fok=3D:=0A-break=0A-fi=0A-=0A-rm -f conftest.err conftest= .$ac=5Fext=0A-=0A-done=0A-# Because of `break', =5FAC=5FPREPROC=5FIFELSE's = cleaning code was skipped.=0A-rm -f conftest.err conftest.$ac=5Fext=0A-if $= ac=5Fpreproc=5Fok; then=0A- :=0A-else=0A- { { echo "$as=5Fme:$LINENO: err= or: C preprocessor \"$CPP\" fails sanity check=0A-See \`config.log' for mor= e details." >&5=0A-echo "$as=5Fme: error: C preprocessor \"$CPP\" fails san= ity check=0A-See \`config.log' for more details." >&2;}=0A- { (exit 1); e= xit 1; }; }=0A-fi=0A-=0A-ac=5Fext=3Dc=0A-ac=5Fcpp=3D'$CPP $CPPFLAGS'=0A-ac= =5Fcompile=3D'$CC -c $CFLAGS $CPPFLAGS conftest.$ac=5Fext >&5'=0A-ac=5Flink= =3D'$CC -o conftest$ac=5Fexeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac=5Fe= xt $LIBS >&5'=0A-ac=5Fcompiler=5Fgnu=3D$ac=5Fcv=5Fc=5Fcompiler=5Fgnu=0A-=0A= -=0A-{ echo "$as=5Fme:$LINENO: checking for grep that handles long lines an= d -e" >&5=0A-echo $ECHO=5FN "checking for grep that handles long lines and = -e... $ECHO=5FC" >&6; }=0A-if test "${ac=5Fcv=5Fpath=5FGREP+set}" =3D set; = then=0A- echo $ECHO=5FN "(cached) $ECHO=5FC" >&6=0A-else=0A- # Extract th= e first word of "grep ggrep" to use in msg output=0A-if test -z "$GREP"; th= en=0A-set dummy grep ggrep; ac=5Fprog=5Fname=3D$2=0A-if test "${ac=5Fcv=5Fp= ath=5FGREP+set}" =3D set; then=0A- echo $ECHO=5FN "(cached) $ECHO=5FC" >&6= =0A-else=0A- ac=5Fpath=5FGREP=5Ffound=3Dfalse=0A-# Loop through the user's= path and test for each of PROGNAME-LIST=0A-as=5Fsave=5FIFS=3D$IFS; IFS=3D$= PATH=5FSEPARATOR=0A-for as=5Fdir in $PATH$PATH=5FSEPARATOR/usr/xpg4/bin=0A-= do=0A- IFS=3D$as=5Fsave=5FIFS=0A- test -z "$as=5Fdir" && as=5Fdir=3D.=0A-= for ac=5Fprog in grep ggrep; do=0A- for ac=5Fexec=5Fext in '' $ac=5Fexec= utable=5Fextensions; do=0A- ac=5Fpath=5FGREP=3D"$as=5Fdir/$ac=5Fprog$ac= =5Fexec=5Fext"=0A- { test -f "$ac=5Fpath=5FGREP" && $as=5Ftest=5Fx "$ac= =5Fpath=5FGREP"; } || continue=0A- # Check for GNU ac=5Fpath=5FGREP and = select it if it is found.=0A- # Check for GNU $ac=5Fpath=5FGREP=0A-case `"= $ac=5Fpath=5FGREP" --version 2>&1` in=0A-*GNU*)=0A- ac=5Fcv=5Fpath=5FGREP= =3D"$ac=5Fpath=5FGREP" ac=5Fpath=5FGREP=5Ffound=3D:;;=0A-*)=0A- ac=5Fcount= =3D0=0A- echo $ECHO=5FN "0123456789$ECHO=5FC" >"conftest.in"=0A- while := =0A- do=0A- cat "conftest.in" "conftest.in" >"conftest.tmp"=0A- mv "= conftest.tmp" "conftest.in"=0A- cp "conftest.in" "conftest.nl"=0A- ec= ho 'GREP' >> "conftest.nl"=0A- "$ac=5Fpath=5FGREP" -e 'GREP$' -e '-(cann= ot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break=0A- dif= f "conftest.out" "conftest.nl" >/dev/null 2>&1 || break=0A- ac=5Fcount= =3D`expr $ac=5Fcount + 1`=0A- if test $ac=5Fcount -gt ${ac=5Fpath=5FGREP= =5Fmax-0}; then=0A- # Best one so far, save it but keep looking for a = better one=0A- ac=5Fcv=5Fpath=5FGREP=3D"$ac=5Fpath=5FGREP"=0A- ac= =5Fpath=5FGREP=5Fmax=3D$ac=5Fcount=0A- fi=0A- # 10*(2^10) chars as in= put seems more than enough=0A- test $ac=5Fcount -gt 10 && break=0A- don= e=0A- rm -f conftest.in conftest.tmp conftest.nl conftest.out;;=0A-esac=0A= -=0A-=0A- $ac=5Fpath=5FGREP=5Ffound && break 3=0A- done=0A-done=0A-=0A-= done=0A-IFS=3D$as=5Fsave=5FIFS=0A-=0A-=0A-fi=0A-=0A-GREP=3D"$ac=5Fcv=5Fpath= =5FGREP"=0A-if test -z "$GREP"; then=0A- { { echo "$as=5Fme:$LINENO: error= : no acceptable $ac=5Fprog=5Fname could be found in $PATH$PATH=5FSEPARATOR/= usr/xpg4/bin" >&5=0A-echo "$as=5Fme: error: no acceptable $ac=5Fprog=5Fname= could be found in $PATH$PATH=5FSEPARATOR/usr/xpg4/bin" >&2;}=0A- { (exit= 1); exit 1; }; }=0A-fi=0A-=0A-else=0A- ac=5Fcv=5Fpath=5FGREP=3D$GREP=0A-f= i=0A-=0A-=0A-fi=0A-{ echo "$as=5Fme:$LINENO: result: $ac=5Fcv=5Fpath=5FGREP= " >&5=0A-echo "${ECHO=5FT}$ac=5Fcv=5Fpath=5FGREP" >&6; }=0A- GREP=3D"$ac=5F= cv=5Fpath=5FGREP"=0A-=0A-=0A-{ echo "$as=5Fme:$LINENO: checking for egrep" = >&5=0A-echo $ECHO=5FN "checking for egrep... $ECHO=5FC" >&6; }=0A-if test "= ${ac=5Fcv=5Fpath=5FEGREP+set}" =3D set; then=0A- echo $ECHO=5FN "(cached) = $ECHO=5FC" >&6=0A-else=0A- if echo a | $GREP -E '(a|b)' >/dev/null 2>&1=0A= - then ac=5Fcv=5Fpath=5FEGREP=3D"$GREP -E"=0A- else=0A- # Extract t= he first word of "egrep" to use in msg output=0A-if test -z "$EGREP"; then= =0A-set dummy egrep; ac=5Fprog=5Fname=3D$2=0A-if test "${ac=5Fcv=5Fpath=5FE= GREP+set}" =3D set; then=0A- echo $ECHO=5FN "(cached) $ECHO=5FC" >&6=0A-el= se=0A- ac=5Fpath=5FEGREP=5Ffound=3Dfalse=0A-# Loop through the user's path= and test for each of PROGNAME-LIST=0A-as=5Fsave=5FIFS=3D$IFS; IFS=3D$PATH= =5FSEPARATOR=0A-for as=5Fdir in $PATH$PATH=5FSEPARATOR/usr/xpg4/bin=0A-do= =0A- IFS=3D$as=5Fsave=5FIFS=0A- test -z "$as=5Fdir" && as=5Fdir=3D.=0A- = for ac=5Fprog in egrep; do=0A- for ac=5Fexec=5Fext in '' $ac=5Fexecutable= =5Fextensions; do=0A- ac=5Fpath=5FEGREP=3D"$as=5Fdir/$ac=5Fprog$ac=5Fexe= c=5Fext"=0A- { test -f "$ac=5Fpath=5FEGREP" && $as=5Ftest=5Fx "$ac=5Fpat= h=5FEGREP"; } || continue=0A- # Check for GNU ac=5Fpath=5FEGREP and sele= ct it if it is found.=0A- # Check for GNU $ac=5Fpath=5FEGREP=0A-case `"$ac= =5Fpath=5FEGREP" --version 2>&1` in=0A-*GNU*)=0A- ac=5Fcv=5Fpath=5FEGREP= =3D"$ac=5Fpath=5FEGREP" ac=5Fpath=5FEGREP=5Ffound=3D:;;=0A-*)=0A- ac=5Fcou= nt=3D0=0A- echo $ECHO=5FN "0123456789$ECHO=5FC" >"conftest.in"=0A- while = :=0A- do=0A- cat "conftest.in" "conftest.in" >"conftest.tmp"=0A- mv = "conftest.tmp" "conftest.in"=0A- cp "conftest.in" "conftest.nl"=0A- e= cho 'EGREP' >> "conftest.nl"=0A- "$ac=5Fpath=5FEGREP" 'EGREP$' < "confte= st.nl" >"conftest.out" 2>/dev/null || break=0A- diff "conftest.out" "con= ftest.nl" >/dev/null 2>&1 || break=0A- ac=5Fcount=3D`expr $ac=5Fcount + = 1`=0A- if test $ac=5Fcount -gt ${ac=5Fpath=5FEGREP=5Fmax-0}; then=0A- = # Best one so far, save it but keep looking for a better one=0A- ac= =5Fcv=5Fpath=5FEGREP=3D"$ac=5Fpath=5FEGREP"=0A- ac=5Fpath=5FEGREP=5Fma= x=3D$ac=5Fcount=0A- fi=0A- # 10*(2^10) chars as input seems more than= enough=0A- test $ac=5Fcount -gt 10 && break=0A- done=0A- rm -f confte= st.in conftest.tmp conftest.nl conftest.out;;=0A-esac=0A-=0A-=0A- $ac=5F= path=5FEGREP=5Ffound && break 3=0A- done=0A-done=0A-=0A-done=0A-IFS=3D$as= =5Fsave=5FIFS=0A-=0A-=0A-fi=0A-=0A-EGREP=3D"$ac=5Fcv=5Fpath=5FEGREP"=0A-if = test -z "$EGREP"; then=0A- { { echo "$as=5Fme:$LINENO: error: no acceptabl= e $ac=5Fprog=5Fname could be found in $PATH$PATH=5FSEPARATOR/usr/xpg4/bin" = >&5=0A-echo "$as=5Fme: error: no acceptable $ac=5Fprog=5Fname could be foun= d in $PATH$PATH=5FSEPARATOR/usr/xpg4/bin" >&2;}=0A- { (exit 1); exit 1; }= ; }=0A-fi=0A-=0A-else=0A- ac=5Fcv=5Fpath=5FEGREP=3D$EGREP=0A-fi=0A-=0A-=0A= - fi=0A-fi=0A-{ echo "$as=5Fme:$LINENO: result: $ac=5Fcv=5Fpath=5FEGREP" = >&5=0A-echo "${ECHO=5FT}$ac=5Fcv=5Fpath=5FEGREP" >&6; }=0A- EGREP=3D"$ac=5F= cv=5Fpath=5FEGREP"=0A-=0A-=0A-=0A-{ echo "$as=5Fme:$LINENO: checking for AI= X" >&5=0A-echo $ECHO=5FN "checking for AIX... $ECHO=5FC" >&6; }=0A-cat >con= ftest.$ac=5Fext <<=5FACEOF=0A-/* confdefs.h. */=0A-=5FACEOF=0A-cat confdef= s.h >>conftest.$ac=5Fext=0A-cat >>conftest.$ac=5Fext <<=5FACEOF=0A-/* end c= onfdefs.h. */=0A-#ifdef =5FAIX=0A- yes=0A-#endif=0A-=0A-=5FACEOF=0A-if (e= val "$ac=5Fcpp conftest.$ac=5Fext") 2>&5 |=0A- $EGREP "yes" >/dev/null 2>&= 1; then=0A- { echo "$as=5Fme:$LINENO: result: yes" >&5=0A-echo "${ECHO=5FT= }yes" >&6; }=0A-cat >>confdefs.h <<\=5FACEOF=0A-#define =5FALL=5FSOURCE 1= =0A-=5FACEOF=0A-=0A-else=0A- { echo "$as=5Fme:$LINENO: result: no" >&5=0A-= echo "${ECHO=5FT}no" >&6; }=0A-fi=0A-rm -f conftest*=0A-=0A-=0A-=0A-case "$= {host}" in=0A- *aix*)=0A- CFLAGS=3D"${CFLAGS} -D=5FTHREAD=5FSAFE"=0A- = ;;=0A- *linux*)=0A- CFLAGS=3D"${CFLAGS} -D=5FREENTRANT"=0A- ;;=0A-= *)=0A- echo "detected unknown platform : ${host} : compiles may fail"= =0A- CFLAGS=3D"${CFLAGS} -D=5FREENTRANT"=0A- ;;=0A-esac=0A-=0A-ac=5Fe= xt=3Dc=0A-ac=5Fcpp=3D'$CPP $CPPFLAGS'=0A-ac=5Fcompile=3D'$CC -c $CFLAGS $CP= PFLAGS conftest.$ac=5Fext >&5'=0A-ac=5Flink=3D'$CC -o conftest$ac=5Fexeext = $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac=5Fext $LIBS >&5'=0A-ac=5Fcompiler= =5Fgnu=3D$ac=5Fcv=5Fc=5Fcompiler=5Fgnu=0A-if test -n "$ac=5Ftool=5Fprefix";= then=0A- # Extract the first word of "${ac=5Ftool=5Fprefix}gcc", so it ca= n be a program name with args.=0A-set dummy ${ac=5Ftool=5Fprefix}gcc; ac=5F= word=3D$2=0A-{ echo "$as=5Fme:$LINENO: checking for $ac=5Fword" >&5=0A-echo= $ECHO=5FN "checking for $ac=5Fword... $ECHO=5FC" >&6; }=0A-if test "${ac= =5Fcv=5Fprog=5FCC+set}" =3D set; then=0A- echo $ECHO=5FN "(cached) $ECHO= =5FC" >&6=0A-else=0A- if test -n "$CC"; then=0A- ac=5Fcv=5Fprog=5FCC=3D"$= CC" # Let the user override the test.=0A-else=0A-as=5Fsave=5FIFS=3D$IFS; IF= S=3D$PATH=5FSEPARATOR=0A-for as=5Fdir in $PATH=0A-do=0A- IFS=3D$as=5Fsave= =5FIFS=0A- test -z "$as=5Fdir" && as=5Fdir=3D.=0A- for ac=5Fexec=5Fext in= '' $ac=5Fexecutable=5Fextensions; do=0A- if { test -f "$as=5Fdir/$ac=5Fwo= rd$ac=5Fexec=5Fext" && $as=5Ftest=5Fx "$as=5Fdir/$ac=5Fword$ac=5Fexec=5Fext= "; }; then=0A- ac=5Fcv=5Fprog=5FCC=3D"${ac=5Ftool=5Fprefix}gcc"=0A- e= cho "$as=5Fme:$LINENO: found $as=5Fdir/$ac=5Fword$ac=5Fexec=5Fext" >&5=0A- = break 2=0A- fi=0A-done=0A-done=0A-IFS=3D$as=5Fsave=5FIFS=0A-=0A-fi=0A-f= i=0A-CC=3D$ac=5Fcv=5Fprog=5FCC=0A-if test -n "$CC"; then=0A- { echo "$as= =5Fme:$LINENO: result: $CC" >&5=0A-echo "${ECHO=5FT}$CC" >&6; }=0A-else=0A-= { echo "$as=5Fme:$LINENO: result: no" >&5=0A-echo "${ECHO=5FT}no" >&6; }= =0A-fi=0A-=0A-=0A-fi=0A-if test -z "$ac=5Fcv=5Fprog=5FCC"; then=0A- ac=5Fc= t=5FCC=3D$CC=0A- # Extract the first word of "gcc", so it can be a program= name with args.=0A-set dummy gcc; ac=5Fword=3D$2=0A-{ echo "$as=5Fme:$LINE= NO: checking for $ac=5Fword" >&5=0A-echo $ECHO=5FN "checking for $ac=5Fword= ... $ECHO=5FC" >&6; }=0A-if test "${ac=5Fcv=5Fprog=5Fac=5Fct=5FCC+set}" =3D= set; then=0A- echo $ECHO=5FN "(cached) $ECHO=5FC" >&6=0A-else=0A- if tes= t -n "$ac=5Fct=5FCC"; then=0A- ac=5Fcv=5Fprog=5Fac=5Fct=5FCC=3D"$ac=5Fct= =5FCC" # Let the user override the test.=0A-else=0A-as=5Fsave=5FIFS=3D$IFS;= IFS=3D$PATH=5FSEPARATOR=0A-for as=5Fdir in $PATH=0A-do=0A- IFS=3D$as=5Fsa= ve=5FIFS=0A- test -z "$as=5Fdir" && as=5Fdir=3D.=0A- for ac=5Fexec=5Fext = in '' $ac=5Fexecutable=5Fextensions; do=0A- if { test -f "$as=5Fdir/$ac=5F= word$ac=5Fexec=5Fext" && $as=5Ftest=5Fx "$as=5Fdir/$ac=5Fword$ac=5Fexec=5Fe= xt"; }; then=0A- ac=5Fcv=5Fprog=5Fac=5Fct=5FCC=3D"gcc"=0A- echo "$as= =5Fme:$LINENO: found $as=5Fdir/$ac=5Fword$ac=5Fexec=5Fext" >&5=0A- break= 2=0A- fi=0A-done=0A-done=0A-IFS=3D$as=5Fsave=5FIFS=0A-=0A-fi=0A-fi=0A-ac= =5Fct=5FCC=3D$ac=5Fcv=5Fprog=5Fac=5Fct=5FCC=0A-if test -n "$ac=5Fct=5FCC"; = then=0A- { echo "$as=5Fme:$LINENO: result: $ac=5Fct=5FCC" >&5=0A-echo "${E= CHO=5FT}$ac=5Fct=5FCC" >&6; }=0A-else=0A- { echo "$as=5Fme:$LINENO: result= : no" >&5=0A-echo "${ECHO=5FT}no" >&6; }=0A-fi=0A-=0A- if test "x$ac=5Fct= =5FCC" =3D x; then=0A- CC=3D""=0A- else=0A- case $cross=5Fcompiling:= $ac=5Ftool=5Fwarned in=0A-yes:)=0A-{ echo "$as=5Fme:$LINENO: WARNING: In th= e future, Autoconf will not detect cross-tools=0A-whose name does not start= with the host triplet. If you think this=0A-configuration is useful to yo= u, please write to autoconf@gnu.org." >&5=0A-echo "$as=5Fme: WARNING: In th= e future, Autoconf will not detect cross-tools=0A-whose name does not start= with the host triplet. If you think this=0A-configuration is useful to yo= u, please write to autoconf@gnu.org." >&2;}=0A-ac=5Ftool=5Fwarned=3Dyes ;;= =0A-esac=0A- CC=3D$ac=5Fct=5FCC=0A- fi=0A-else=0A- CC=3D"$ac=5Fcv=5Fpr= og=5FCC"=0A-fi=0A-=0A-if test -z "$CC"; then=0A- if test -n "$ac= =5Ftool=5Fprefix"; then=0A- # Extract the first word of "${ac=5Ftool=5Fp= refix}cc", so it can be a program name with args.=0A-set dummy ${ac=5Ftool= =5Fprefix}cc; ac=5Fword=3D$2=0A-{ echo "$as=5Fme:$LINENO: checking for $ac= =5Fword" >&5=0A-echo $ECHO=5FN "checking for $ac=5Fword... $ECHO=5FC" >&6; = }=0A-if test "${ac=5Fcv=5Fprog=5FCC+set}" =3D set; then=0A- echo $ECHO=5FN= "(cached) $ECHO=5FC" >&6=0A-else=0A- if test -n "$CC"; then=0A- ac=5Fcv= =5Fprog=5FCC=3D"$CC" # Let the user override the test.=0A-else=0A-as=5Fsave= =5FIFS=3D$IFS; IFS=3D$PATH=5FSEPARATOR=0A-for as=5Fdir in $PATH=0A-do=0A- = IFS=3D$as=5Fsave=5FIFS=0A- test -z "$as=5Fdir" && as=5Fdir=3D.=0A- for ac= =5Fexec=5Fext in '' $ac=5Fexecutable=5Fextensions; do=0A- if { test -f "$a= s=5Fdir/$ac=5Fword$ac=5Fexec=5Fext" && $as=5Ftest=5Fx "$as=5Fdir/$ac=5Fword= $ac=5Fexec=5Fext"; }; then=0A- ac=5Fcv=5Fprog=5FCC=3D"${ac=5Ftool=5Fpref= ix}cc"=0A- echo "$as=5Fme:$LINENO: found $as=5Fdir/$ac=5Fword$ac=5Fexec= =5Fext" >&5=0A- break 2=0A- fi=0A-done=0A-done=0A-IFS=3D$as=5Fsave=5FIF= S=0A-=0A-fi=0A-fi=0A-CC=3D$ac=5Fcv=5Fprog=5FCC=0A-if test -n "$CC"; then=0A= - { echo "$as=5Fme:$LINENO: result: $CC" >&5=0A-echo "${ECHO=5FT}$CC" >&6;= }=0A-else=0A- { echo "$as=5Fme:$LINENO: result: no" >&5=0A-echo "${ECHO= =5FT}no" >&6; }=0A-fi=0A-=0A-=0A- fi=0A-fi=0A-if test -z "$CC"; then=0A- = # Extract the first word of "cc", so it can be a program name with args.=0A= -set dummy cc; ac=5Fword=3D$2=0A-{ echo "$as=5Fme:$LINENO: checking for $ac= =5Fword" >&5=0A-echo $ECHO=5FN "checking for $ac=5Fword... $ECHO=5FC" >&6; = }=0A-if test "${ac=5Fcv=5Fprog=5FCC+set}" =3D set; then=0A- echo $ECHO=5FN= "(cached) $ECHO=5FC" >&6=0A-else=0A- if test -n "$CC"; then=0A- ac=5Fcv= =5Fprog=5FCC=3D"$CC" # Let the user override the test.=0A-else=0A- ac=5Fpr= og=5Frejected=3Dno=0A-as=5Fsave=5FIFS=3D$IFS; IFS=3D$PATH=5FSEPARATOR=0A-fo= r as=5Fdir in $PATH=0A-do=0A- IFS=3D$as=5Fsave=5FIFS=0A- test -z "$as=5Fd= ir" && as=5Fdir=3D.=0A- for ac=5Fexec=5Fext in '' $ac=5Fexecutable=5Fexten= sions; do=0A- if { test -f "$as=5Fdir/$ac=5Fword$ac=5Fexec=5Fext" && $as= =5Ftest=5Fx "$as=5Fdir/$ac=5Fword$ac=5Fexec=5Fext"; }; then=0A- if test = "$as=5Fdir/$ac=5Fword$ac=5Fexec=5Fext" =3D "/usr/ucb/cc"; then=0A- ac= =5Fprog=5Frejected=3Dyes=0A- continue=0A- fi=0A- ac=5Fcv=5Fpro= g=5FCC=3D"cc"=0A- echo "$as=5Fme:$LINENO: found $as=5Fdir/$ac=5Fword$ac= =5Fexec=5Fext" >&5=0A- break 2=0A- fi=0A-done=0A-done=0A-IFS=3D$as=5Fsa= ve=5FIFS=0A-=0A-if test $ac=5Fprog=5Frejected =3D yes; then=0A- # We found= a bogon in the path, so make sure we never use it.=0A- set dummy $ac=5Fcv= =5Fprog=5FCC=0A- shift=0A- if test $# !=3D 0; then=0A- # We chose a di= fferent compiler from the bogus one.=0A- # However, it has the same base= name, so the bogon will be chosen=0A- # first if we set CC to just the b= asename; use the full file name.=0A- shift=0A- ac=5Fcv=5Fprog=5FCC=3D= "$as=5Fdir/$ac=5Fword${1+' '}$@"=0A- fi=0A-fi=0A-fi=0A-fi=0A-CC=3D$ac=5Fcv= =5Fprog=5FCC=0A-if test -n "$CC"; then=0A- { echo "$as=5Fme:$LINENO: resul= t: $CC" >&5=0A-echo "${ECHO=5FT}$CC" >&6; }=0A-else=0A- { echo "$as=5Fme:$= LINENO: result: no" >&5=0A-echo "${ECHO=5FT}no" >&6; }=0A-fi=0A-=0A-=0A-fi= =0A-if test -z "$CC"; then=0A- if test -n "$ac=5Ftool=5Fprefix"; then=0A- = for ac=5Fprog in cl.exe=0A- do=0A- # Extract the first word of "$ac=5F= tool=5Fprefix$ac=5Fprog", so it can be a program name with args.=0A-set dum= my $ac=5Ftool=5Fprefix$ac=5Fprog; ac=5Fword=3D$2=0A-{ echo "$as=5Fme:$LINEN= O: checking for $ac=5Fword" >&5=0A-echo $ECHO=5FN "checking for $ac=5Fword.= .. $ECHO=5FC" >&6; }=0A-if test "${ac=5Fcv=5Fprog=5FCC+set}" =3D set; then= =0A- echo $ECHO=5FN "(cached) $ECHO=5FC" >&6=0A-else=0A- if test -n "$CC"= ; then=0A- ac=5Fcv=5Fprog=5FCC=3D"$CC" # Let the user override the test.= =0A-else=0A-as=5Fsave=5FIFS=3D$IFS; IFS=3D$PATH=5FSEPARATOR=0A-for as=5Fdir= in $PATH=0A-do=0A- IFS=3D$as=5Fsave=5FIFS=0A- test -z "$as=5Fdir" && as= =5Fdir=3D.=0A- for ac=5Fexec=5Fext in '' $ac=5Fexecutable=5Fextensions; do= =0A- if { test -f "$as=5Fdir/$ac=5Fword$ac=5Fexec=5Fext" && $as=5Ftest=5Fx= "$as=5Fdir/$ac=5Fword$ac=5Fexec=5Fext"; }; then=0A- ac=5Fcv=5Fprog=5FCC= =3D"$ac=5Ftool=5Fprefix$ac=5Fprog"=0A- echo "$as=5Fme:$LINENO: found $as= =5Fdir/$ac=5Fword$ac=5Fexec=5Fext" >&5=0A- break 2=0A- fi=0A-done=0A-do= ne=0A-IFS=3D$as=5Fsave=5FIFS=0A-=0A-fi=0A-fi=0A-CC=3D$ac=5Fcv=5Fprog=5FCC= =0A-if test -n "$CC"; then=0A- { echo "$as=5Fme:$LINENO: result: $CC" >&5= =0A-echo "${ECHO=5FT}$CC" >&6; }=0A-else=0A- { echo "$as=5Fme:$LINENO: res= ult: no" >&5=0A-echo "${ECHO=5FT}no" >&6; }=0A-fi=0A-=0A-=0A- test -n "$= CC" && break=0A- done=0A-fi=0A-if test -z "$CC"; then=0A- ac=5Fct=5FCC=3D= $CC=0A- for ac=5Fprog in cl.exe=0A-do=0A- # Extract the first word of "$a= c=5Fprog", so it can be a program name with args.=0A-set dummy $ac=5Fprog; = ac=5Fword=3D$2=0A-{ echo "$as=5Fme:$LINENO: checking for $ac=5Fword" >&5=0A= -echo $ECHO=5FN "checking for $ac=5Fword... $ECHO=5FC" >&6; }=0A-if test "$= {ac=5Fcv=5Fprog=5Fac=5Fct=5FCC+set}" =3D set; then=0A- echo $ECHO=5FN "(ca= ched) $ECHO=5FC" >&6=0A-else=0A- if test -n "$ac=5Fct=5FCC"; then=0A- ac= =5Fcv=5Fprog=5Fac=5Fct=5FCC=3D"$ac=5Fct=5FCC" # Let the user override the t= est.=0A-else=0A-as=5Fsave=5FIFS=3D$IFS; IFS=3D$PATH=5FSEPARATOR=0A-for as= =5Fdir in $PATH=0A-do=0A- IFS=3D$as=5Fsave=5FIFS=0A- test -z "$as=5Fdir" = && as=5Fdir=3D.=0A- for ac=5Fexec=5Fext in '' $ac=5Fexecutable=5Fextension= s; do=0A- if { test -f "$as=5Fdir/$ac=5Fword$ac=5Fexec=5Fext" && $as=5Ftes= t=5Fx "$as=5Fdir/$ac=5Fword$ac=5Fexec=5Fext"; }; then=0A- ac=5Fcv=5Fprog= =5Fac=5Fct=5FCC=3D"$ac=5Fprog"=0A- echo "$as=5Fme:$LINENO: found $as=5Fd= ir/$ac=5Fword$ac=5Fexec=5Fext" >&5=0A- break 2=0A- fi=0A-done=0A-done= =0A-IFS=3D$as=5Fsave=5FIFS=0A-=0A-fi=0A-fi=0A-ac=5Fct=5FCC=3D$ac=5Fcv=5Fpro= g=5Fac=5Fct=5FCC=0A-if test -n "$ac=5Fct=5FCC"; then=0A- { echo "$as=5Fme:= $LINENO: result: $ac=5Fct=5FCC" >&5=0A-echo "${ECHO=5FT}$ac=5Fct=5FCC" >&6;= }=0A-else=0A- { echo "$as=5Fme:$LINENO: result: no" >&5=0A-echo "${ECHO= =5FT}no" >&6; }=0A-fi=0A-=0A-=0A- test -n "$ac=5Fct=5FCC" && break=0A-done= =0A-=0A- if test "x$ac=5Fct=5FCC" =3D x; then=0A- CC=3D""=0A- else=0A-= case $cross=5Fcompiling:$ac=5Ftool=5Fwarned in=0A-yes:)=0A-{ echo "$as= =5Fme:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools= =0A-whose name does not start with the host triplet. If you think this=0A-= configuration is useful to you, please write to autoconf@gnu.org." >&5=0A-e= cho "$as=5Fme: WARNING: In the future, Autoconf will not detect cross-tools= =0A-whose name does not start with the host triplet. If you think this=0A-= configuration is useful to you, please write to autoconf@gnu.org." >&2;}=0A= -ac=5Ftool=5Fwarned=3Dyes ;;=0A-esac=0A- CC=3D$ac=5Fct=5FCC=0A- fi=0A-f= i=0A-=0A-fi=0A-=0A-=0A-test -z "$CC" && { { echo "$as=5Fme:$LINENO: error: = no acceptable C compiler found in \$PATH=0A-See \`config.log' for more deta= ils." >&5=0A-echo "$as=5Fme: error: no acceptable C compiler found in \$PAT= H=0A-See \`config.log' for more details." >&2;}=0A- { (exit 1); exit 1; }= ; }=0A-=0A-# Provide some information about the compiler.=0A-echo "$as=5Fme= :$LINENO: checking for C compiler version" >&5=0A-ac=5Fcompiler=3D`set X $a= c=5Fcompile; echo $2`=0A-{ (ac=5Ftry=3D"$ac=5Fcompiler --version >&5"=0A-ca= se "(($ac=5Ftry" in=0A- *\"* | *\`* | *\\*) ac=5Ftry=5Fecho=3D\$ac=5Ftry;;= =0A- *) ac=5Ftry=5Fecho=3D$ac=5Ftry;;=0A-esac=0A-eval "echo \"\$as=5Fme:$L= INENO: $ac=5Ftry=5Fecho\"") >&5=0A- (eval "$ac=5Fcompiler --version >&5") = 2>&5=0A- ac=5Fstatus=3D$?=0A- echo "$as=5Fme:$LINENO: \$? =3D $ac=5Fstatu= s" >&5=0A- (exit $ac=5Fstatus); }=0A-{ (ac=5Ftry=3D"$ac=5Fcompiler -v >&5"= =0A-case "(($ac=5Ftry" in=0A- *\"* | *\`* | *\\*) ac=5Ftry=5Fecho=3D\$ac= =5Ftry;;=0A- *) ac=5Ftry=5Fecho=3D$ac=5Ftry;;=0A-esac=0A-eval "echo \"\$as= =5Fme:$LINENO: $ac=5Ftry=5Fecho\"") >&5=0A- (eval "$ac=5Fcompiler -v >&5")= 2>&5=0A- ac=5Fstatus=3D$?=0A- echo "$as=5Fme:$LINENO: \$? =3D $ac=5Fstat= us" >&5=0A- (exit $ac=5Fstatus); }=0A-{ (ac=5Ftry=3D"$ac=5Fcompiler -V >&5= "=0A-case "(($ac=5Ftry" in=0A- *\"* | *\`* | *\\*) ac=5Ftry=5Fecho=3D\$ac= =5Ftry;;=0A- *) ac=5Ftry=5Fecho=3D$ac=5Ftry;;=0A-esac=0A-eval "echo \"\$as= =5Fme:$LINENO: $ac=5Ftry=5Fecho\"") >&5=0A- (eval "$ac=5Fcompiler -V >&5")= 2>&5=0A- ac=5Fstatus=3D$?=0A- echo "$as=5Fme:$LINENO: \$? =3D $ac=5Fstat= us" >&5=0A- (exit $ac=5Fstatus); }=0A-=0A-{ echo "$as=5Fme:$LINENO: checki= ng whether we are using the GNU C compiler" >&5=0A-echo $ECHO=5FN "checking= whether we are using the GNU C compiler... $ECHO=5FC" >&6; }=0A-if test "$= {ac=5Fcv=5Fc=5Fcompiler=5Fgnu+set}" =3D set; then=0A- echo $ECHO=5FN "(cac= hed) $ECHO=5FC" >&6=0A-else=0A- cat >conftest.$ac=5Fext <<=5FACEOF=0A-/* c= onfdefs.h. */=0A-=5FACEOF=0A-cat confdefs.h >>conftest.$ac=5Fext=0A-cat >>= conftest.$ac=5Fext <<=5FACEOF=0A-/* end confdefs.h. */=0A-=0A-int=0A-main = ()=0A-{=0A-#ifndef =5F=5FGNUC=5F=5F=0A- choke me=0A-#endif=0A-=0A- ;= =0A- return 0;=0A-}=0A-=5FACEOF=0A-rm -f conftest.$ac=5Fobjext=0A-if { (ac= =5Ftry=3D"$ac=5Fcompile"=0A-case "(($ac=5Ftry" in=0A- *\"* | *\`* | *\\*) = ac=5Ftry=5Fecho=3D\$ac=5Ftry;;=0A- *) ac=5Ftry=5Fecho=3D$ac=5Ftry;;=0A-esa= c=0A-eval "echo \"\$as=5Fme:$LINENO: $ac=5Ftry=5Fecho\"") >&5=0A- (eval "$= ac=5Fcompile") 2>conftest.er1=0A- ac=5Fstatus=3D$?=0A- grep -v '^ *+' con= ftest.er1 >conftest.err=0A- rm -f conftest.er1=0A- cat conftest.err >&5= =0A- echo "$as=5Fme:$LINENO: \$? =3D $ac=5Fstatus" >&5=0A- (exit $ac=5Fst= atus); } && {=0A- test -z "$ac=5Fc=5Fwerror=5Fflag" ||=0A- test ! -s conf= test.err=0A- } && test -s conftest.$ac=5Fobjext; then=0A- ac=5Fcompi= ler=5Fgnu=3Dyes=0A-else=0A- echo "$as=5Fme: failed program was:" >&5=0A-se= d 's/^/| /' conftest.$ac=5Fext >&5=0A-=0A- ac=5Fcompiler=5Fgnu=3Dno=0A-fi= =0A-=0A-rm -f core conftest.err conftest.$ac=5Fobjext conftest.$ac=5Fext=0A= -ac=5Fcv=5Fc=5Fcompiler=5Fgnu=3D$ac=5Fcompiler=5Fgnu=0A-=0A-fi=0A-{ echo "$= as=5Fme:$LINENO: result: $ac=5Fcv=5Fc=5Fcompiler=5Fgnu" >&5=0A-echo "${ECHO= =5FT}$ac=5Fcv=5Fc=5Fcompiler=5Fgnu" >&6; }=0A-GCC=3D`test $ac=5Fcompiler=5F= gnu =3D yes && echo yes`=0A-ac=5Ftest=5FCFLAGS=3D${CFLAGS+set}=0A-ac=5Fsave= =5FCFLAGS=3D$CFLAGS=0A-{ echo "$as=5Fme:$LINENO: checking whether $CC accep= ts -g" >&5=0A-echo $ECHO=5FN "checking whether $CC accepts -g... $ECHO=5FC"= >&6; }=0A-if test "${ac=5Fcv=5Fprog=5Fcc=5Fg+set}" =3D set; then=0A- echo= $ECHO=5FN "(cached) $ECHO=5FC" >&6=0A-else=0A- ac=5Fsave=5Fc=5Fwerror=5Ff= lag=3D$ac=5Fc=5Fwerror=5Fflag=0A- ac=5Fc=5Fwerror=5Fflag=3Dyes=0A- ac= =5Fcv=5Fprog=5Fcc=5Fg=3Dno=0A- CFLAGS=3D"-g"=0A- cat >conftest.$ac=5Fex= t <<=5FACEOF=0A-/* confdefs.h. */=0A-=5FACEOF=0A-cat confdefs.h >>conftest= .$ac=5Fext=0A-cat >>conftest.$ac=5Fext <<=5FACEOF=0A-/* end confdefs.h. */= =0A-=0A-int=0A-main ()=0A-{=0A-=0A- ;=0A- return 0;=0A-}=0A-=5FACEOF=0A-r= m -f conftest.$ac=5Fobjext=0A-if { (ac=5Ftry=3D"$ac=5Fcompile"=0A-case "(($= ac=5Ftry" in=0A- *\"* | *\`* | *\\*) ac=5Ftry=5Fecho=3D\$ac=5Ftry;;=0A- *= ) ac=5Ftry=5Fecho=3D$ac=5Ftry;;=0A-esac=0A-eval "echo \"\$as=5Fme:$LINENO: = $ac=5Ftry=5Fecho\"") >&5=0A- (eval "$ac=5Fcompile") 2>conftest.er1=0A- ac= =5Fstatus=3D$?=0A- grep -v '^ *+' conftest.er1 >conftest.err=0A- rm -f co= nftest.er1=0A- cat conftest.err >&5=0A- echo "$as=5Fme:$LINENO: \$? =3D $= ac=5Fstatus" >&5=0A- (exit $ac=5Fstatus); } && {=0A- test -z "$ac=5Fc=5Fw= error=5Fflag" ||=0A- test ! -s conftest.err=0A- } && test -s conftes= t.$ac=5Fobjext; then=0A- ac=5Fcv=5Fprog=5Fcc=5Fg=3Dyes=0A-else=0A- echo "= $as=5Fme: failed program was:" >&5=0A-sed 's/^/| /' conftest.$ac=5Fext >&5= =0A-=0A- CFLAGS=3D""=0A- cat >conftest.$ac=5Fext <<=5FACEOF=0A-/* conf= defs.h. */=0A-=5FACEOF=0A-cat confdefs.h >>conftest.$ac=5Fext=0A-cat >>con= ftest.$ac=5Fext <<=5FACEOF=0A-/* end confdefs.h. */=0A-=0A-int=0A-main ()= =0A-{=0A-=0A- ;=0A- return 0;=0A-}=0A-=5FACEOF=0A-rm -f conftest.$ac=5Fob= jext=0A-if { (ac=5Ftry=3D"$ac=5Fcompile"=0A-case "(($ac=5Ftry" in=0A- *\"*= | *\`* | *\\*) ac=5Ftry=5Fecho=3D\$ac=5Ftry;;=0A- *) ac=5Ftry=5Fecho=3D$a= c=5Ftry;;=0A-esac=0A-eval "echo \"\$as=5Fme:$LINENO: $ac=5Ftry=5Fecho\"") >= &5=0A- (eval "$ac=5Fcompile") 2>conftest.er1=0A- ac=5Fstatus=3D$?=0A- gr= ep -v '^ *+' conftest.er1 >conftest.err=0A- rm -f conftest.er1=0A- cat co= nftest.err >&5=0A- echo "$as=5Fme:$LINENO: \$? =3D $ac=5Fstatus" >&5=0A- = (exit $ac=5Fstatus); } && {=0A- test -z "$ac=5Fc=5Fwerror=5Fflag" ||=0A- = test ! -s conftest.err=0A- } && test -s conftest.$ac=5Fobjext; then= =0A- :=0A-else=0A- echo "$as=5Fme: failed program was:" >&5=0A-sed 's/^/|= /' conftest.$ac=5Fext >&5=0A-=0A- ac=5Fc=5Fwerror=5Fflag=3D$ac=5Fsave=5Fc= =5Fwerror=5Fflag=0A- CFLAGS=3D"-g"=0A- cat >conftest.$ac=5Fext <<=5FACEOF= =0A-/* confdefs.h. */=0A-=5FACEOF=0A-cat confdefs.h >>conftest.$ac=5Fext= =0A-cat >>conftest.$ac=5Fext <<=5FACEOF=0A-/* end confdefs.h. */=0A-=0A-in= t=0A-main ()=0A-{=0A-=0A- ;=0A- return 0;=0A-}=0A-=5FACEOF=0A-rm -f conft= est.$ac=5Fobjext=0A-if { (ac=5Ftry=3D"$ac=5Fcompile"=0A-case "(($ac=5Ftry" = in=0A- *\"* | *\`* | *\\*) ac=5Ftry=5Fecho=3D\$ac=5Ftry;;=0A- *) ac=5Ftry= =5Fecho=3D$ac=5Ftry;;=0A-esac=0A-eval "echo \"\$as=5Fme:$LINENO: $ac=5Ftry= =5Fecho\"") >&5=0A- (eval "$ac=5Fcompile") 2>conftest.er1=0A- ac=5Fstatus= =3D$?=0A- grep -v '^ *+' conftest.er1 >conftest.err=0A- rm -f conftest.er= 1=0A- cat conftest.err >&5=0A- echo "$as=5Fme:$LINENO: \$? =3D $ac=5Fstat= us" >&5=0A- (exit $ac=5Fstatus); } && {=0A- test -z "$ac=5Fc=5Fwerror=5Ff= lag" ||=0A- test ! -s conftest.err=0A- } && test -s conftest.$ac=5Fo= bjext; then=0A- ac=5Fcv=5Fprog=5Fcc=5Fg=3Dyes=0A-else=0A- echo "$as=5Fme:= failed program was:" >&5=0A-sed 's/^/| /' conftest.$ac=5Fext >&5=0A-=0A-= =0A-fi=0A-=0A-rm -f core conftest.err conftest.$ac=5Fobjext conftest.$ac=5F= ext=0A-fi=0A-=0A-rm -f core conftest.err conftest.$ac=5Fobjext conftest.$ac= =5Fext=0A-fi=0A-=0A-rm -f core conftest.err conftest.$ac=5Fobjext conftest.= $ac=5Fext=0A- ac=5Fc=5Fwerror=5Fflag=3D$ac=5Fsave=5Fc=5Fwerror=5Fflag=0A-= fi=0A-{ echo "$as=5Fme:$LINENO: result: $ac=5Fcv=5Fprog=5Fcc=5Fg" >&5=0A-ec= ho "${ECHO=5FT}$ac=5Fcv=5Fprog=5Fcc=5Fg" >&6; }=0A-if test "$ac=5Ftest=5FCF= LAGS" =3D set; then=0A- CFLAGS=3D$ac=5Fsave=5FCFLAGS=0A-elif test $ac=5Fcv= =5Fprog=5Fcc=5Fg =3D yes; then=0A- if test "$GCC" =3D yes; then=0A- CFL= AGS=3D"-g -O2"=0A- else=0A- CFLAGS=3D"-g"=0A- fi=0A-else=0A- if test = "$GCC" =3D yes; then=0A- CFLAGS=3D"-O2"=0A- else=0A- CFLAGS=3D=0A- = fi=0A-fi=0A-{ echo "$as=5Fme:$LINENO: checking for $CC option to accept ISO= C89" >&5=0A-echo $ECHO=5FN "checking for $CC option to accept ISO C89... $= ECHO=5FC" >&6; }=0A-if test "${ac=5Fcv=5Fprog=5Fcc=5Fc89+set}" =3D set; the= n=0A- echo $ECHO=5FN "(cached) $ECHO=5FC" >&6=0A-else=0A- ac=5Fcv=5Fprog= =5Fcc=5Fc89=3Dno=0A-ac=5Fsave=5FCC=3D$CC=0A-cat >conftest.$ac=5Fext <<=5FAC= EOF=0A-/* confdefs.h. */=0A-=5FACEOF=0A-cat confdefs.h >>conftest.$ac=5Fex= t=0A-cat >>conftest.$ac=5Fext <<=5FACEOF=0A-/* end confdefs.h. */=0A-#incl= ude =0A-#include =0A-#include =0A-#include = =0A-/* Most of the following tests are stolen from RCS 5.7's sr= c/conf.sh. */=0A-struct buf { int x; };=0A-FILE * (*rcsopen) (struct buf *= , struct stat *, int);=0A-static char *e (p, i)=0A- char **p;=0A- i= nt i;=0A-{=0A- return p[i];=0A-}=0A-static char *f (char * (*g) (char **, = int), char **p, ...)=0A-{=0A- char *s;=0A- va=5Flist v;=0A- va=5Fstart (= v,p);=0A- s =3D g (p, va=5Farg (v,int));=0A- va=5Fend (v);=0A- return s;= =0A-}=0A-=0A-/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. = It has=0A- function prototypes and stuff, but not '\xHH' hex character co= nstants.=0A- These don't provoke an error unfortunately, instead are sile= ntly treated=0A- as 'x'. The following induces an error, until -std is a= dded to get=0A- proper ANSI mode. Curiously '\x00'!=3D'x' always comes o= ut true, for an=0A- array size at least. It's necessary to write '\x00'= =3D=3D0 to get something=0A- that's true only with -std. */=0A-int osf4= =5Fcc=5Farray ['\x00' =3D=3D 0 ? 1 : -1];=0A-=0A-/* IBM C 6 for AIX is almo= st-ANSI by default, but it replaces macro parameters=0A- inside strings a= nd character constants. */=0A-#define FOO(x) 'x'=0A-int xlc6=5Fcc=5Farray[= FOO(a) =3D=3D 'x' ? 1 : -1];=0A-=0A-int test (int i, double x);=0A-struct s= 1 {int (*f) (int a);};=0A-struct s2 {int (*f) (double a);};=0A-int pairname= s (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int);=0A= -int argc;=0A-char **argv;=0A-int=0A-main ()=0A-{=0A-return f (e, argv, 0) = !=3D argv[0] || f (e, argv, 1) !=3D argv[1];=0A- ;=0A- return 0;=0A-}= =0A-=5FACEOF=0A-for ac=5Farg in '' -qlanglvl=3Dextc89 -qlanglvl=3Dansi -std= \=0A- -Ae "-Aa -D=5FHPUX=5FSOURCE" "-Xc -D=5F=5FEXTENSIONS=5F=5F"=0A-do=0A= - CC=3D"$ac=5Fsave=5FCC $ac=5Farg"=0A- rm -f conftest.$ac=5Fobjext=0A-if = { (ac=5Ftry=3D"$ac=5Fcompile"=0A-case "(($ac=5Ftry" in=0A- *\"* | *\`* | *= \\*) ac=5Ftry=5Fecho=3D\$ac=5Ftry;;=0A- *) ac=5Ftry=5Fecho=3D$ac=5Ftry;;= =0A-esac=0A-eval "echo \"\$as=5Fme:$LINENO: $ac=5Ftry=5Fecho\"") >&5=0A- (= eval "$ac=5Fcompile") 2>conftest.er1=0A- ac=5Fstatus=3D$?=0A- grep -v '^ = *+' conftest.er1 >conftest.err=0A- rm -f conftest.er1=0A- cat conftest.er= r >&5=0A- echo "$as=5Fme:$LINENO: \$? =3D $ac=5Fstatus" >&5=0A- (exit $ac= =5Fstatus); } && {=0A- test -z "$ac=5Fc=5Fwerror=5Fflag" ||=0A- test ! -s= conftest.err=0A- } && test -s conftest.$ac=5Fobjext; then=0A- ac=5F= cv=5Fprog=5Fcc=5Fc89=3D$ac=5Farg=0A-else=0A- echo "$as=5Fme: failed progra= m was:" >&5=0A-sed 's/^/| /' conftest.$ac=5Fext >&5=0A-=0A-=0A-fi=0A-=0A-rm= -f core conftest.err conftest.$ac=5Fobjext=0A- test "x$ac=5Fcv=5Fprog=5Fc= c=5Fc89" !=3D "xno" && break=0A-done=0A-rm -f conftest.$ac=5Fext=0A-CC=3D$a= c=5Fsave=5FCC=0A-=0A-fi=0A-# AC=5FCACHE=5FVAL=0A-case "x$ac=5Fcv=5Fprog=5Fc= c=5Fc89" in=0A- x)=0A- { echo "$as=5Fme:$LINENO: result: none needed" >= &5=0A-echo "${ECHO=5FT}none needed" >&6; } ;;=0A- xno)=0A- { echo "$as= =5Fme:$LINENO: result: unsupported" >&5=0A-echo "${ECHO=5FT}unsupported" >&= 6; } ;;=0A- *)=0A- CC=3D"$CC $ac=5Fcv=5Fprog=5Fcc=5Fc89"=0A- { echo = "$as=5Fme:$LINENO: result: $ac=5Fcv=5Fprog=5Fcc=5Fc89" >&5=0A-echo "${ECHO= =5FT}$ac=5Fcv=5Fprog=5Fcc=5Fc89" >&6; } ;;=0A-esac=0A-=0A-=0A-ac=5Fext=3Dc= =0A-ac=5Fcpp=3D'$CPP $CPPFLAGS'=0A-ac=5Fcompile=3D'$CC -c $CFLAGS $CPPFLAGS= conftest.$ac=5Fext >&5'=0A-ac=5Flink=3D'$CC -o conftest$ac=5Fexeext $CFLAG= S $CPPFLAGS $LDFLAGS conftest.$ac=5Fext $LIBS >&5'=0A-ac=5Fcompiler=5Fgnu= =3D$ac=5Fcv=5Fc=5Fcompiler=5Fgnu=0A-=0A-depcc=3D"$CC" am=5Fcompiler=5Flis= t=3D=0A-=0A-{ echo "$as=5Fme:$LINENO: checking dependency style of $depcc" = >&5=0A-echo $ECHO=5FN "checking dependency style of $depcc... $ECHO=5FC" >&= 6; }=0A-if test "${am=5Fcv=5FCC=5Fdependencies=5Fcompiler=5Ftype+set}" =3D = set; then=0A- echo $ECHO=5FN "(cached) $ECHO=5FC" >&6=0A-else=0A- if test= -z "$AMDEP=5FTRUE" && test -f "$am=5Fdepcomp"; then=0A- # We make a subdi= r and do the tests there. Otherwise we can end up=0A- # making bogus file= s that we don't know about and never remove. For=0A- # instance it was re= ported that on HP-UX the gcc test will end up=0A- # making a dummy file na= med `D' -- because `-MD' means `put the output=0A- # in D'.=0A- mkdir con= ftest.dir=0A- # Copy depcomp to subdir because otherwise we won't find it = if we're=0A- # using a relative directory.=0A- cp "$am=5Fdepcomp" conftes= t.dir=0A- cd conftest.dir=0A- # We will build objects and dependencies in= a subdirectory because=0A- # it helps to detect inapplicable dependency m= odes. For instance=0A- # both Tru64's cc and ICC support -MD to output de= pendencies as a=0A- # side effect of compilation, but ICC will put the dep= endencies in=0A- # the current directory while Tru64 will put them in the = object=0A- # directory.=0A- mkdir sub=0A-=0A- am=5Fcv=5FCC=5Fdependencie= s=5Fcompiler=5Ftype=3Dnone=0A- if test "$am=5Fcompiler=5Flist" =3D ""; the= n=0A- am=5Fcompiler=5Flist=3D`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < .= /depcomp`=0A- fi=0A- for depmode in $am=5Fcompiler=5Flist; do=0A- # Se= tup a source with many dependencies, because some compilers=0A- # like t= o wrap large dependency lists on column 80 (with \), and=0A- # we should= not choose a depcomp mode which is confused by this.=0A- #=0A- # We = need to recreate these files for each test, as the compiler may=0A- # ov= erwrite some of them when testing with obscure command lines.=0A- # This= happens at least with the AIX C compiler.=0A- : > sub/conftest.c=0A- = for i in 1 2 3 4 5 6; do=0A- echo '#include "conftst'$i'.h"' >> sub/c= onftest.c=0A- # Using `: > sub/conftst$i.h' creates only sub/conftst1.= h with=0A- # Solaris 8's {/usr,}/bin/sh.=0A- touch sub/conftst$i.= h=0A- done=0A- echo "${am=5F=5Finclude} ${am=5F=5Fquote}sub/conftest.= Po${am=5F=5Fquote}" > confmf=0A-=0A- case $depmode in=0A- nosideeffec= t)=0A- # after this tag, mechanisms are not by side-effect, so they'll= =0A- # only be used when explicitly requested=0A- if test "x$enab= le=5Fdependency=5Ftracking" =3D xyes; then=0A- continue=0A- else=0A- b= reak=0A- fi=0A- ;;=0A- none) break ;;=0A- esac=0A- # We = check with `-c' and `-o' for the sake of the "dashmstdout"=0A- # mode. = It turns out that the SunPro C++ compiler does not properly=0A- # handle= `-M -o', and we need to detect this.=0A- if depmode=3D$depmode \=0A- = source=3Dsub/conftest.c object=3Dsub/conftest.${OBJEXT-o} \=0A- d= epfile=3Dsub/conftest.Po tmpdepfile=3Dsub/conftest.TPo \=0A- $SHELL .= /depcomp $depcc -c -o sub/conftest.${OBJEXT-o} sub/conftest.c \=0A- = >/dev/null 2>conftest.err &&=0A- grep sub/conftst1.h sub/conftest.Po= > /dev/null 2>&1 &&=0A- grep sub/conftst6.h sub/conftest.Po > /dev/n= ull 2>&1 &&=0A- grep sub/conftest.${OBJEXT-o} sub/conftest.Po > /dev/= null 2>&1 &&=0A- ${MAKE-make} -s -f confmf > /dev/null 2>&1; then=0A-= # icc doesn't choke on unknown options, it will just issue warnings= =0A- # or remarks (even with -Werror). So we grep stderr for any mess= age=0A- # that says an option was ignored or not supported.=0A- #= When given -MP, icc 7.0 and 7.1 complain thusly:=0A- # icc: Command= line warning: ignoring option '-M'; no argument required=0A- # The di= agnosis changed in icc 8.0:=0A- # icc: Command line remark: option '= -MP' not supported=0A- if (grep 'ignoring option' conftest.err ||=0A- = grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else= =0A- am=5Fcv=5FCC=5Fdependencies=5Fcompiler=5Ftype=3D$depmode=0A- = break=0A- fi=0A- fi=0A- done=0A-=0A- cd ..=0A- rm -rf conft= est.dir=0A-else=0A- am=5Fcv=5FCC=5Fdependencies=5Fcompiler=5Ftype=3Dnone= =0A-fi=0A-=0A-fi=0A-{ echo "$as=5Fme:$LINENO: result: $am=5Fcv=5FCC=5Fdepen= dencies=5Fcompiler=5Ftype" >&5=0A-echo "${ECHO=5FT}$am=5Fcv=5FCC=5Fdependen= cies=5Fcompiler=5Ftype" >&6; }=0A-CCDEPMODE=3Ddepmode=3D$am=5Fcv=5FCC=5Fdep= endencies=5Fcompiler=5Ftype=0A-=0A- if=0A- test "x$enable=5Fdependency=5Ft= racking" !=3D xno \=0A- && test "$am=5Fcv=5FCC=5Fdependencies=5Fcompiler= =5Ftype" =3D gcc3; then=0A- am=5F=5FfastdepCC=5FTRUE=3D=0A- am=5F=5Ffastd= epCC=5FFALSE=3D'#'=0A-else=0A- am=5F=5FfastdepCC=5FTRUE=3D'#'=0A- am=5F= =5FfastdepCC=5FFALSE=3D=0A-fi=0A-=0A-=0A-=0A-=0A-{ echo "$as=5Fme:$LINENO: = checking for main in -lm" >&5=0A-echo $ECHO=5FN "checking for main in -lm..= . $ECHO=5FC" >&6; }=0A-if test "${ac=5Fcv=5Flib=5Fm=5Fmain+set}" =3D set; t= hen=0A- echo $ECHO=5FN "(cached) $ECHO=5FC" >&6=0A-else=0A- ac=5Fcheck=5F= lib=5Fsave=5FLIBS=3D$LIBS=0A-LIBS=3D"-lm $LIBS"=0A-cat >conftest.$ac=5Fext= <<=5FACEOF=0A-/* confdefs.h. */=0A-=5FACEOF=0A-cat confdefs.h >>conftest.= $ac=5Fext=0A-cat >>conftest.$ac=5Fext <<=5FACEOF=0A-/* end confdefs.h. */= =0A-=0A-=0A-int=0A-main ()=0A-{=0A-return main ();=0A- ;=0A- return 0;=0A= -}=0A-=5FACEOF=0A-rm -f conftest.$ac=5Fobjext conftest$ac=5Fexeext=0A-if { = (ac=5Ftry=3D"$ac=5Flink"=0A-case "(($ac=5Ftry" in=0A- *\"* | *\`* | *\\*) = ac=5Ftry=5Fecho=3D\$ac=5Ftry;;=0A- *) ac=5Ftry=5Fecho=3D$ac=5Ftry;;=0A-esa= c=0A-eval "echo \"\$as=5Fme:$LINENO: $ac=5Ftry=5Fecho\"") >&5=0A- (eval "$= ac=5Flink") 2>conftest.er1=0A- ac=5Fstatus=3D$?=0A- grep -v '^ *+' confte= st.er1 >conftest.err=0A- rm -f conftest.er1=0A- cat conftest.err >&5=0A- = echo "$as=5Fme:$LINENO: \$? =3D $ac=5Fstatus" >&5=0A- (exit $ac=5Fstatus)= ; } && {=0A- test -z "$ac=5Fc=5Fwerror=5Fflag" ||=0A- test ! -s conftest.= err=0A- } && test -s conftest$ac=5Fexeext &&=0A- $as=5Ftest=5Fx= conftest$ac=5Fexeext; then=0A- ac=5Fcv=5Flib=5Fm=5Fmain=3Dyes=0A-else=0A-= echo "$as=5Fme: failed program was:" >&5=0A-sed 's/^/| /' conftest.$ac=5F= ext >&5=0A-=0A- ac=5Fcv=5Flib=5Fm=5Fmain=3Dno=0A-fi=0A-=0A-rm -f core conft= est.err conftest.$ac=5Fobjext conftest=5Fipa8=5Fconftest.oo \=0A- conf= test$ac=5Fexeext conftest.$ac=5Fext=0A-LIBS=3D$ac=5Fcheck=5Flib=5Fsave=5FLI= BS=0A-fi=0A-{ echo "$as=5Fme:$LINENO: result: $ac=5Fcv=5Flib=5Fm=5Fmain" >&= 5=0A-echo "${ECHO=5FT}$ac=5Fcv=5Flib=5Fm=5Fmain" >&6; }=0A-if test $ac=5Fcv= =5Flib=5Fm=5Fmain =3D yes; then=0A- cat >>confdefs.h <<=5FACEOF=0A-#define= HAVE=5FLIBM 1=0A-=5FACEOF=0A-=0A- LIBS=3D"-lm $LIBS"=0A-=0A-fi=0A-=0A-=0A= -{ echo "$as=5Fme:$LINENO: checking for main in -lpthread" >&5=0A-echo $ECH= O=5FN "checking for main in -lpthread... $ECHO=5FC" >&6; }=0A-if test "${ac= =5Fcv=5Flib=5Fpthread=5Fmain+set}" =3D set; then=0A- echo $ECHO=5FN "(cach= ed) $ECHO=5FC" >&6=0A-else=0A- ac=5Fcheck=5Flib=5Fsave=5FLIBS=3D$LIBS=0A-L= IBS=3D"-lpthread $LIBS"=0A-cat >conftest.$ac=5Fext <<=5FACEOF=0A-/* confde= fs.h. */=0A-=5FACEOF=0A-cat confdefs.h >>conftest.$ac=5Fext=0A-cat >>conft= est.$ac=5Fext <<=5FACEOF=0A-/* end confdefs.h. */=0A-=0A-=0A-int=0A-main (= )=0A-{=0A-return main ();=0A- ;=0A- return 0;=0A-}=0A-=5FACEOF=0A-rm -f c= onftest.$ac=5Fobjext conftest$ac=5Fexeext=0A-if { (ac=5Ftry=3D"$ac=5Flink"= =0A-case "(($ac=5Ftry" in=0A- *\"* | *\`* | *\\*) ac=5Ftry=5Fecho=3D\$ac= =5Ftry;;=0A- *) ac=5Ftry=5Fecho=3D$ac=5Ftry;;=0A-esac=0A-eval "echo \"\$as= =5Fme:$LINENO: $ac=5Ftry=5Fecho\"") >&5=0A- (eval "$ac=5Flink") 2>conftest= .er1=0A- ac=5Fstatus=3D$?=0A- grep -v '^ *+' conftest.er1 >conftest.err= =0A- rm -f conftest.er1=0A- cat conftest.err >&5=0A- echo "$as=5Fme:$LIN= ENO: \$? =3D $ac=5Fstatus" >&5=0A- (exit $ac=5Fstatus); } && {=0A- test -= z "$ac=5Fc=5Fwerror=5Fflag" ||=0A- test ! -s conftest.err=0A- } && t= est -s conftest$ac=5Fexeext &&=0A- $as=5Ftest=5Fx conftest$ac=5Fexeex= t; then=0A- ac=5Fcv=5Flib=5Fpthread=5Fmain=3Dyes=0A-else=0A- echo "$as=5F= me: failed program was:" >&5=0A-sed 's/^/| /' conftest.$ac=5Fext >&5=0A-=0A= - ac=5Fcv=5Flib=5Fpthread=5Fmain=3Dno=0A-fi=0A-=0A-rm -f core conftest.err = conftest.$ac=5Fobjext conftest=5Fipa8=5Fconftest.oo \=0A- conftest$ac= =5Fexeext conftest.$ac=5Fext=0A-LIBS=3D$ac=5Fcheck=5Flib=5Fsave=5FLIBS=0A-f= i=0A-{ echo "$as=5Fme:$LINENO: result: $ac=5Fcv=5Flib=5Fpthread=5Fmain" >&5= =0A-echo "${ECHO=5FT}$ac=5Fcv=5Flib=5Fpthread=5Fmain" >&6; }=0A-if test $ac= =5Fcv=5Flib=5Fpthread=5Fmain =3D yes; then=0A- cat >>confdefs.h <<=5FACEOF= =0A-#define HAVE=5FLIBPTHREAD 1=0A-=5FACEOF=0A-=0A- LIBS=3D"-lpthread $LIB= S"=0A-=0A-fi=0A-=0A-=0A-=0A-{ echo "$as=5Fme:$LINENO: checking for ANSI C h= eader files" >&5=0A-echo $ECHO=5FN "checking for ANSI C header files... $EC= HO=5FC" >&6; }=0A-if test "${ac=5Fcv=5Fheader=5Fstdc+set}" =3D set; then=0A= - echo $ECHO=5FN "(cached) $ECHO=5FC" >&6=0A-else=0A- cat >conftest.$ac= =5Fext <<=5FACEOF=0A-/* confdefs.h. */=0A-=5FACEOF=0A-cat confdefs.h >>con= ftest.$ac=5Fext=0A-cat >>conftest.$ac=5Fext <<=5FACEOF=0A-/* end confdefs.h= . */=0A-#include =0A-#include =0A-#include = =0A-#include =0A-=0A-int=0A-main ()=0A-{=0A-=0A- ;=0A- return 0;= =0A-}=0A-=5FACEOF=0A-rm -f conftest.$ac=5Fobjext=0A-if { (ac=5Ftry=3D"$ac= =5Fcompile"=0A-case "(($ac=5Ftry" in=0A- *\"* | *\`* | *\\*) ac=5Ftry=5Fec= ho=3D\$ac=5Ftry;;=0A- *) ac=5Ftry=5Fecho=3D$ac=5Ftry;;=0A-esac=0A-eval "ec= ho \"\$as=5Fme:$LINENO: $ac=5Ftry=5Fecho\"") >&5=0A- (eval "$ac=5Fcompile"= ) 2>conftest.er1=0A- ac=5Fstatus=3D$?=0A- grep -v '^ *+' conftest.er1 >co= nftest.err=0A- rm -f conftest.er1=0A- cat conftest.err >&5=0A- echo "$as= =5Fme:$LINENO: \$? =3D $ac=5Fstatus" >&5=0A- (exit $ac=5Fstatus); } && {= =0A- test -z "$ac=5Fc=5Fwerror=5Fflag" ||=0A- test ! -s conftest.err=0A- = } && test -s conftest.$ac=5Fobjext; then=0A- ac=5Fcv=5Fheader=5Fstdc= =3Dyes=0A-else=0A- echo "$as=5Fme: failed program was:" >&5=0A-sed 's/^/| = /' conftest.$ac=5Fext >&5=0A-=0A- ac=5Fcv=5Fheader=5Fstdc=3Dno=0A-fi=0A-=0A= -rm -f core conftest.err conftest.$ac=5Fobjext conftest.$ac=5Fext=0A-=0A-if= test $ac=5Fcv=5Fheader=5Fstdc =3D yes; then=0A- # SunOS 4.x string.h does= not declare mem*, contrary to ANSI.=0A- cat >conftest.$ac=5Fext <<=5FACEO= F=0A-/* confdefs.h. */=0A-=5FACEOF=0A-cat confdefs.h >>conftest.$ac=5Fext= =0A-cat >>conftest.$ac=5Fext <<=5FACEOF=0A-/* end confdefs.h. */=0A-#inclu= de =0A-=0A-=5FACEOF=0A-if (eval "$ac=5Fcpp conftest.$ac=5Fext") 2= >&5 |=0A- $EGREP "memchr" >/dev/null 2>&1; then=0A- :=0A-else=0A- ac=5Fc= v=5Fheader=5Fstdc=3Dno=0A-fi=0A-rm -f conftest*=0A-=0A-fi=0A-=0A-if test $a= c=5Fcv=5Fheader=5Fstdc =3D yes; then=0A- # ISC 2.0.2 stdlib.h does not dec= lare free, contrary to ANSI.=0A- cat >conftest.$ac=5Fext <<=5FACEOF=0A-/* = confdefs.h. */=0A-=5FACEOF=0A-cat confdefs.h >>conftest.$ac=5Fext=0A-cat >= >conftest.$ac=5Fext <<=5FACEOF=0A-/* end confdefs.h. */=0A-#include =0A-=0A-=5FACEOF=0A-if (eval "$ac=5Fcpp conftest.$ac=5Fext") 2>&5 |=0A-= $EGREP "free" >/dev/null 2>&1; then=0A- :=0A-else=0A- ac=5Fcv=5Fheader= =5Fstdc=3Dno=0A-fi=0A-rm -f conftest*=0A-=0A-fi=0A-=0A-if test $ac=5Fcv=5Fh= eader=5Fstdc =3D yes; then=0A- # /bin/cc in Irix-4.0.5 gets non-ANSI ctype= macros unless using -ansi.=0A- if test "$cross=5Fcompiling" =3D yes; then= =0A- :=0A-else=0A- cat >conftest.$ac=5Fext <<=5FACEOF=0A-/* confdefs.h. = */=0A-=5FACEOF=0A-cat confdefs.h >>conftest.$ac=5Fext=0A-cat >>conftest.$ac= =5Fext <<=5FACEOF=0A-/* end confdefs.h. */=0A-#include =0A-#inclu= de =0A-#if ((' ' & 0x0FF) =3D=3D 0x020)=0A-# define ISLOWER(c) ('= a' <=3D (c) && (c) <=3D 'z')=0A-# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c= ) - 'a') : (c))=0A-#else=0A-# define ISLOWER(c) \=0A- (('a' <=3D (c) &&= (c) <=3D 'i') \=0A- || ('j' <=3D (c) && (c) <=3D 'r') \=0A- ||= ('s' <=3D (c) && (c) <=3D 'z'))=0A-# define TOUPPER(c) (ISLOWER(c) ? ((c) = | 0x40) : (c))=0A-#endif=0A-=0A-#define XOR(e, f) (((e) && !(f)) || (!(e) &= & (f)))=0A-int=0A-main ()=0A-{=0A- int i;=0A- for (i =3D 0; i < 256; i++)= =0A- if (XOR (islower (i), ISLOWER (i))=0A- || toupper (i) !=3D TOUPPER = (i))=0A- return 2;=0A- return 0;=0A-}=0A-=5FACEOF=0A-rm -f conftest$a= c=5Fexeext=0A-if { (ac=5Ftry=3D"$ac=5Flink"=0A-case "(($ac=5Ftry" in=0A- *= \"* | *\`* | *\\*) ac=5Ftry=5Fecho=3D\$ac=5Ftry;;=0A- *) ac=5Ftry=5Fecho= =3D$ac=5Ftry;;=0A-esac=0A-eval "echo \"\$as=5Fme:$LINENO: $ac=5Ftry=5Fecho\= "") >&5=0A- (eval "$ac=5Flink") 2>&5=0A- ac=5Fstatus=3D$?=0A- echo "$as= =5Fme:$LINENO: \$? =3D $ac=5Fstatus" >&5=0A- (exit $ac=5Fstatus); } && { a= c=5Ftry=3D'./conftest$ac=5Fexeext'=0A- { (case "(($ac=5Ftry" in=0A- *\"* = | *\`* | *\\*) ac=5Ftry=5Fecho=3D\$ac=5Ftry;;=0A- *) ac=5Ftry=5Fecho=3D$ac= =5Ftry;;=0A-esac=0A-eval "echo \"\$as=5Fme:$LINENO: $ac=5Ftry=5Fecho\"") >&= 5=0A- (eval "$ac=5Ftry") 2>&5=0A- ac=5Fstatus=3D$?=0A- echo "$as=5Fme:$L= INENO: \$? =3D $ac=5Fstatus" >&5=0A- (exit $ac=5Fstatus); }; }; then=0A- = :=0A-else=0A- echo "$as=5Fme: program exited with status $ac=5Fstatus" >&5= =0A-echo "$as=5Fme: failed program was:" >&5=0A-sed 's/^/| /' conftest.$ac= =5Fext >&5=0A-=0A-( exit $ac=5Fstatus )=0A-ac=5Fcv=5Fheader=5Fstdc=3Dno=0A-= fi=0A-rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac=5Fexeex= t conftest.$ac=5Fobjext conftest.$ac=5Fext=0A-fi=0A-=0A-=0A-fi=0A-fi=0A-{ e= cho "$as=5Fme:$LINENO: result: $ac=5Fcv=5Fheader=5Fstdc" >&5=0A-echo "${ECH= O=5FT}$ac=5Fcv=5Fheader=5Fstdc" >&6; }=0A-if test $ac=5Fcv=5Fheader=5Fstdc = =3D yes; then=0A-=0A-cat >>confdefs.h <<\=5FACEOF=0A-#define STDC=5FHEADERS= 1=0A-=5FACEOF=0A-=0A-fi=0A-=0A-{ echo "$as=5Fme:$LINENO: checking for sys/= wait.h that is POSIX.1 compatible" >&5=0A-echo $ECHO=5FN "checking for sys/= wait.h that is POSIX.1 compatible... $ECHO=5FC" >&6; }=0A-if test "${ac=5Fc= v=5Fheader=5Fsys=5Fwait=5Fh+set}" =3D set; then=0A- echo $ECHO=5FN "(cache= d) $ECHO=5FC" >&6=0A-else=0A- cat >conftest.$ac=5Fext <<=5FACEOF=0A-/* con= fdefs.h. */=0A-=5FACEOF=0A-cat confdefs.h >>conftest.$ac=5Fext=0A-cat >>co= nftest.$ac=5Fext <<=5FACEOF=0A-/* end confdefs.h. */=0A-#include =0A-#include =0A-#ifndef WEXITSTATUS=0A-# define WEXITSTATU= S(stat=5Fval) ((unsigned int) (stat=5Fval) >> 8)=0A-#endif=0A-#ifndef WIFEX= ITED=0A-# define WIFEXITED(stat=5Fval) (((stat=5Fval) & 255) =3D=3D 0)=0A-#= endif=0A-=0A-int=0A-main ()=0A-{=0A- int s;=0A- wait (&s);=0A- s =3D WIF= EXITED (s) ? WEXITSTATUS (s) : 1;=0A- ;=0A- return 0;=0A-}=0A-=5FACEOF=0A= -rm -f conftest.$ac=5Fobjext=0A-if { (ac=5Ftry=3D"$ac=5Fcompile"=0A-case "(= ($ac=5Ftry" in=0A- *\"* | *\`* | *\\*) ac=5Ftry=5Fecho=3D\$ac=5Ftry;;=0A- = *) ac=5Ftry=5Fecho=3D$ac=5Ftry;;=0A-esac=0A-eval "echo \"\$as=5Fme:$LINENO= : $ac=5Ftry=5Fecho\"") >&5=0A- (eval "$ac=5Fcompile") 2>conftest.er1=0A- = ac=5Fstatus=3D$?=0A- grep -v '^ *+' conftest.er1 >conftest.err=0A- rm -f = conftest.er1=0A- cat conftest.err >&5=0A- echo "$as=5Fme:$LINENO: \$? =3D= $ac=5Fstatus" >&5=0A- (exit $ac=5Fstatus); } && {=0A- test -z "$ac=5Fc= =5Fwerror=5Fflag" ||=0A- test ! -s conftest.err=0A- } && test -s con= ftest.$ac=5Fobjext; then=0A- ac=5Fcv=5Fheader=5Fsys=5Fwait=5Fh=3Dyes=0A-el= se=0A- echo "$as=5Fme: failed program was:" >&5=0A-sed 's/^/| /' conftest.= $ac=5Fext >&5=0A-=0A- ac=5Fcv=5Fheader=5Fsys=5Fwait=5Fh=3Dno=0A-fi=0A-=0A-r= m -f core conftest.err conftest.$ac=5Fobjext conftest.$ac=5Fext=0A-fi=0A-{ = echo "$as=5Fme:$LINENO: result: $ac=5Fcv=5Fheader=5Fsys=5Fwait=5Fh" >&5=0A-= echo "${ECHO=5FT}$ac=5Fcv=5Fheader=5Fsys=5Fwait=5Fh" >&6; }=0A-if test $ac= =5Fcv=5Fheader=5Fsys=5Fwait=5Fh =3D yes; then=0A-=0A-cat >>confdefs.h <<\= =5FACEOF=0A-#define HAVE=5FSYS=5FWAIT=5FH 1=0A-=5FACEOF=0A-=0A-fi=0A-=0A-# = On IRIX 5.3, sys/types and inttypes.h are conflicting.=0A-=0A-=0A-=0A-=0A-= =0A-=0A-=0A-=0A-=0A-for ac=5Fheader in sys/types.h sys/stat.h stdlib.h stri= ng.h memory.h strings.h \=0A- inttypes.h stdint.h unistd.h=0A-do=0A-as= =5Fac=5FHeader=3D`echo "ac=5Fcv=5Fheader=5F$ac=5Fheader" | $as=5Ftr=5Fsh`= =0A-{ echo "$as=5Fme:$LINENO: checking for $ac=5Fheader" >&5=0A-echo $ECHO= =5FN "checking for $ac=5Fheader... $ECHO=5FC" >&6; }=0A-if { as=5Fvar=3D$as= =5Fac=5FHeader; eval "test \"\${$as=5Fvar+set}\" =3D set"; }; then=0A- ech= o $ECHO=5FN "(cached) $ECHO=5FC" >&6=0A-else=0A- cat >conftest.$ac=5Fext <= <=5FACEOF=0A-/* confdefs.h. */=0A-=5FACEOF=0A-cat confdefs.h >>conftest.$a= c=5Fext=0A-cat >>conftest.$ac=5Fext <<=5FACEOF=0A-/* end confdefs.h. */=0A= -$ac=5Fincludes=5Fdefault=0A-=0A-#include <$ac=5Fheader>=0A-=5FACEOF=0A-rm = -f conftest.$ac=5Fobjext=0A-if { (ac=5Ftry=3D"$ac=5Fcompile"=0A-case "(($ac= =5Ftry" in=0A- *\"* | *\`* | *\\*) ac=5Ftry=5Fecho=3D\$ac=5Ftry;;=0A- *) = ac=5Ftry=5Fecho=3D$ac=5Ftry;;=0A-esac=0A-eval "echo \"\$as=5Fme:$LINENO: $a= c=5Ftry=5Fecho\"") >&5=0A- (eval "$ac=5Fcompile") 2>conftest.er1=0A- ac= =5Fstatus=3D$?=0A- grep -v '^ *+' conftest.er1 >conftest.err=0A- rm -f co= nftest.er1=0A- cat conftest.err >&5=0A- echo "$as=5Fme:$LINENO: \$? =3D $= ac=5Fstatus" >&5=0A- (exit $ac=5Fstatus); } && {=0A- test -z "$ac=5Fc=5Fw= error=5Fflag" ||=0A- test ! -s conftest.err=0A- } && test -s conftes= t.$ac=5Fobjext; then=0A- eval "$as=5Fac=5FHeader=3Dyes"=0A-else=0A- echo = "$as=5Fme: failed program was:" >&5=0A-sed 's/^/| /' conftest.$ac=5Fext >&5= =0A-=0A- eval "$as=5Fac=5FHeader=3Dno"=0A-fi=0A-=0A-rm -f core conftest.err= conftest.$ac=5Fobjext conftest.$ac=5Fext=0A-fi=0A-ac=5Fres=3D`eval echo '$= {'$as=5Fac=5FHeader'}'`=0A- { echo "$as=5Fme:$LINENO: result: $ac=5F= res" >&5=0A-echo "${ECHO=5FT}$ac=5Fres" >&6; }=0A-if test `eval echo '${'$a= s=5Fac=5FHeader'}'` =3D yes; then=0A- cat >>confdefs.h <<=5FACEOF=0A-#defi= ne `echo "HAVE=5F$ac=5Fheader" | $as=5Ftr=5Fcpp` 1=0A-=5FACEOF=0A-=0A-fi=0A= -=0A-done=0A-=0A-=0A-=0A-=0A-=0A-=0A-=0A-=0A-=0A-=0A-for ac=5Fheader in pth= read.h fcntl.h limits.h stdint.h sys/time.h unistd.h sys/vfs.h sys/limits.h= =0A-do=0A-as=5Fac=5FHeader=3D`echo "ac=5Fcv=5Fheader=5F$ac=5Fheader" | $as= =5Ftr=5Fsh`=0A-if { as=5Fvar=3D$as=5Fac=5FHeader; eval "test \"\${$as=5Fvar= +set}\" =3D set"; }; then=0A- { echo "$as=5Fme:$LINENO: checking for $ac= =5Fheader" >&5=0A-echo $ECHO=5FN "checking for $ac=5Fheader... $ECHO=5FC" >= &6; }=0A-if { as=5Fvar=3D$as=5Fac=5FHeader; eval "test \"\${$as=5Fvar+set}\= " =3D set"; }; then=0A- echo $ECHO=5FN "(cached) $ECHO=5FC" >&6=0A-fi=0A-a= c=5Fres=3D`eval echo '${'$as=5Fac=5FHeader'}'`=0A- { echo "$as=5Fme:= $LINENO: result: $ac=5Fres" >&5=0A-echo "${ECHO=5FT}$ac=5Fres" >&6; }=0A-el= se=0A- # Is the header compilable?=0A-{ echo "$as=5Fme:$LINENO: checking $= ac=5Fheader usability" >&5=0A-echo $ECHO=5FN "checking $ac=5Fheader usabili= ty... $ECHO=5FC" >&6; }=0A-cat >conftest.$ac=5Fext <<=5FACEOF=0A-/* confdef= s.h. */=0A-=5FACEOF=0A-cat confdefs.h >>conftest.$ac=5Fext=0A-cat >>confte= st.$ac=5Fext <<=5FACEOF=0A-/* end confdefs.h. */=0A-$ac=5Fincludes=5Fdefau= lt=0A-#include <$ac=5Fheader>=0A-=5FACEOF=0A-rm -f conftest.$ac=5Fobjext=0A= -if { (ac=5Ftry=3D"$ac=5Fcompile"=0A-case "(($ac=5Ftry" in=0A- *\"* | *\`*= | *\\*) ac=5Ftry=5Fecho=3D\$ac=5Ftry;;=0A- *) ac=5Ftry=5Fecho=3D$ac=5Ftry= ;;=0A-esac=0A-eval "echo \"\$as=5Fme:$LINENO: $ac=5Ftry=5Fecho\"") >&5=0A- = (eval "$ac=5Fcompile") 2>conftest.er1=0A- ac=5Fstatus=3D$?=0A- grep -v '= ^ *+' conftest.er1 >conftest.err=0A- rm -f conftest.er1=0A- cat conftest.= err >&5=0A- echo "$as=5Fme:$LINENO: \$? =3D $ac=5Fstatus" >&5=0A- (exit $= ac=5Fstatus); } && {=0A- test -z "$ac=5Fc=5Fwerror=5Fflag" ||=0A- test ! = -s conftest.err=0A- } && test -s conftest.$ac=5Fobjext; then=0A- ac= =5Fheader=5Fcompiler=3Dyes=0A-else=0A- echo "$as=5Fme: failed program was:= " >&5=0A-sed 's/^/| /' conftest.$ac=5Fext >&5=0A-=0A- ac=5Fheader=5Fcompile= r=3Dno=0A-fi=0A-=0A-rm -f core conftest.err conftest.$ac=5Fobjext conftest.= $ac=5Fext=0A-{ echo "$as=5Fme:$LINENO: result: $ac=5Fheader=5Fcompiler" >&5= =0A-echo "${ECHO=5FT}$ac=5Fheader=5Fcompiler" >&6; }=0A-=0A-# Is the header= present?=0A-{ echo "$as=5Fme:$LINENO: checking $ac=5Fheader presence" >&5= =0A-echo $ECHO=5FN "checking $ac=5Fheader presence... $ECHO=5FC" >&6; }=0A-= cat >conftest.$ac=5Fext <<=5FACEOF=0A-/* confdefs.h. */=0A-=5FACEOF=0A-cat= confdefs.h >>conftest.$ac=5Fext=0A-cat >>conftest.$ac=5Fext <<=5FACEOF=0A-= /* end confdefs.h. */=0A-#include <$ac=5Fheader>=0A-=5FACEOF=0A-if { (ac= =5Ftry=3D"$ac=5Fcpp conftest.$ac=5Fext"=0A-case "(($ac=5Ftry" in=0A- *\"* = | *\`* | *\\*) ac=5Ftry=5Fecho=3D\$ac=5Ftry;;=0A- *) ac=5Ftry=5Fecho=3D$ac= =5Ftry;;=0A-esac=0A-eval "echo \"\$as=5Fme:$LINENO: $ac=5Ftry=5Fecho\"") >&= 5=0A- (eval "$ac=5Fcpp conftest.$ac=5Fext") 2>conftest.er1=0A- ac=5Fstatu= s=3D$?=0A- grep -v '^ *+' conftest.er1 >conftest.err=0A- rm -f conftest.e= r1=0A- cat conftest.err >&5=0A- echo "$as=5Fme:$LINENO: \$? =3D $ac=5Fsta= tus" >&5=0A- (exit $ac=5Fstatus); } >/dev/null && {=0A- test -z "$ac=5Fc= =5Fpreproc=5Fwarn=5Fflag$ac=5Fc=5Fwerror=5Fflag" ||=0A- test ! -s conftest= .err=0A- }; then=0A- ac=5Fheader=5Fpreproc=3Dyes=0A-else=0A- echo "= $as=5Fme: failed program was:" >&5=0A-sed 's/^/| /' conftest.$ac=5Fext >&5= =0A-=0A- ac=5Fheader=5Fpreproc=3Dno=0A-fi=0A-=0A-rm -f conftest.err confte= st.$ac=5Fext=0A-{ echo "$as=5Fme:$LINENO: result: $ac=5Fheader=5Fpreproc" >= &5=0A-echo "${ECHO=5FT}$ac=5Fheader=5Fpreproc" >&6; }=0A-=0A-# So? What ab= out this header?=0A-case $ac=5Fheader=5Fcompiler:$ac=5Fheader=5Fpreproc:$ac= =5Fc=5Fpreproc=5Fwarn=5Fflag in=0A- yes:no: )=0A- { echo "$as=5Fme:$LIN= ENO: WARNING: $ac=5Fheader: accepted by the compiler, rejected by the prepr= ocessor!" >&5=0A-echo "$as=5Fme: WARNING: $ac=5Fheader: accepted by the com= piler, rejected by the preprocessor!" >&2;}=0A- { echo "$as=5Fme:$LINENO= : WARNING: $ac=5Fheader: proceeding with the compiler's result" >&5=0A-echo= "$as=5Fme: WARNING: $ac=5Fheader: proceeding with the compiler's result" >= &2;}=0A- ac=5Fheader=5Fpreproc=3Dyes=0A- ;;=0A- no:yes:* )=0A- { = echo "$as=5Fme:$LINENO: WARNING: $ac=5Fheader: present but cannot be compil= ed" >&5=0A-echo "$as=5Fme: WARNING: $ac=5Fheader: present but cannot be com= piled" >&2;}=0A- { echo "$as=5Fme:$LINENO: WARNING: $ac=5Fheader: ch= eck for missing prerequisite headers?" >&5=0A-echo "$as=5Fme: WARNING: $ac= =5Fheader: check for missing prerequisite headers?" >&2;}=0A- { echo= "$as=5Fme:$LINENO: WARNING: $ac=5Fheader: see the Autoconf documentation" = >&5=0A-echo "$as=5Fme: WARNING: $ac=5Fheader: see the Autoconf documentatio= n" >&2;}=0A- { echo "$as=5Fme:$LINENO: WARNING: $ac=5Fheader: sectio= n \"Present But Cannot Be Compiled\"" >&5=0A-echo "$as=5Fme: WARNING: $ac= =5Fheader: section \"Present But Cannot Be Compiled\"" >&2;}=0A- { e= cho "$as=5Fme:$LINENO: WARNING: $ac=5Fheader: proceeding with the preproces= sor's result" >&5=0A-echo "$as=5Fme: WARNING: $ac=5Fheader: proceeding with= the preprocessor's result" >&2;}=0A- { echo "$as=5Fme:$LINENO: WARNING:= $ac=5Fheader: in the future, the compiler will take precedence" >&5=0A-ech= o "$as=5Fme: WARNING: $ac=5Fheader: in the future, the compiler will take p= recedence" >&2;}=0A-=0A- ;;=0A-esac=0A-{ echo "$as=5Fme:$LINENO: checkin= g for $ac=5Fheader" >&5=0A-echo $ECHO=5FN "checking for $ac=5Fheader... $EC= HO=5FC" >&6; }=0A-if { as=5Fvar=3D$as=5Fac=5FHeader; eval "test \"\${$as=5F= var+set}\" =3D set"; }; then=0A- echo $ECHO=5FN "(cached) $ECHO=5FC" >&6= =0A-else=0A- eval "$as=5Fac=5FHeader=3D\$ac=5Fheader=5Fpreproc"=0A-fi=0A-a= c=5Fres=3D`eval echo '${'$as=5Fac=5FHeader'}'`=0A- { echo "$as=5Fme:= $LINENO: result: $ac=5Fres" >&5=0A-echo "${ECHO=5FT}$ac=5Fres" >&6; }=0A-= =0A-fi=0A-if test `eval echo '${'$as=5Fac=5FHeader'}'` =3D yes; then=0A- c= at >>confdefs.h <<=5FACEOF=0A-#define `echo "HAVE=5F$ac=5Fheader" | $as=5Ft= r=5Fcpp` 1=0A-=5FACEOF=0A-=0A-fi=0A-=0A-done=0A-=0A-=0A-{ echo "$as=5Fme:$L= INENO: checking for an ANSI C-conforming const" >&5=0A-echo $ECHO=5FN "chec= king for an ANSI C-conforming const... $ECHO=5FC" >&6; }=0A-if test "${ac= =5Fcv=5Fc=5Fconst+set}" =3D set; then=0A- echo $ECHO=5FN "(cached) $ECHO= =5FC" >&6=0A-else=0A- cat >conftest.$ac=5Fext <<=5FACEOF=0A-/* confdefs.h.= */=0A-=5FACEOF=0A-cat confdefs.h >>conftest.$ac=5Fext=0A-cat >>conftest.$= ac=5Fext <<=5FACEOF=0A-/* end confdefs.h. */=0A-=0A-int=0A-main ()=0A-{=0A= -/* FIXME: Include the comments suggested by Paul. */=0A-#ifndef =5F=5Fcplu= splus=0A- /* Ultrix mips cc rejects this. */=0A- typedef int charset[2];= =0A- const charset cs;=0A- /* SunOS 4.1.1 cc rejects this. */=0A- char = const *const *pcpcc;=0A- char **ppc;=0A- /* NEC SVR4.0.2 mips cc rejects = this. */=0A- struct point {int x, y;};=0A- static struct point const zer= o =3D {0,0};=0A- /* AIX XL C 1.02.0.0 rejects this.=0A- It does not le= t you subtract one const X* pointer from another in=0A- an arm of an if= -expression whose if-part is not a constant=0A- expression */=0A- cons= t char *g =3D "string";=0A- pcpcc =3D &g + (g ? g-g : 0);=0A- /* HPUX 7.0= cc rejects these. */=0A- ++pcpcc;=0A- ppc =3D (char**) pcpcc;=0A- pcpcc= =3D (char const *const *) ppc;=0A- { /* SCO 3.2v4 cc rejects this. */=0A= - char *t;=0A- char const *s =3D 0 ? (char *) 0 : (char const *) 0;= =0A-=0A- *t++ =3D 0;=0A- if (s) return 0;=0A- }=0A- { /* Someone th= inks the Sun supposedly-ANSI compiler will reject this. */=0A- int x[] = =3D {25, 17};=0A- const int *foo =3D &x[0];=0A- ++foo;=0A- }=0A- { = /* Sun SC1.0 ANSI compiler rejects this -- but not the above. */=0A- typ= edef const int *iptr;=0A- iptr p =3D 0;=0A- ++p;=0A- }=0A- { /* AIX= XL C 1.02.0.0 rejects this saying=0A- "k.c", line 2.27: 1506-025 (S)= Operand must be a modifiable lvalue. */=0A- struct s { int j; const int= *ap[3]; };=0A- struct s *b; b->j =3D 5;=0A- }=0A- { /* ULTRIX-32 V3.1= (Rev 9) vcc rejects this */=0A- const int foo =3D 10;=0A- if (!foo) = return 0;=0A- }=0A- return !cs[0] && !zero.x;=0A-#endif=0A-=0A- ;=0A- r= eturn 0;=0A-}=0A-=5FACEOF=0A-rm -f conftest.$ac=5Fobjext=0A-if { (ac=5Ftry= =3D"$ac=5Fcompile"=0A-case "(($ac=5Ftry" in=0A- *\"* | *\`* | *\\*) ac=5Ft= ry=5Fecho=3D\$ac=5Ftry;;=0A- *) ac=5Ftry=5Fecho=3D$ac=5Ftry;;=0A-esac=0A-e= val "echo \"\$as=5Fme:$LINENO: $ac=5Ftry=5Fecho\"") >&5=0A- (eval "$ac=5Fc= ompile") 2>conftest.er1=0A- ac=5Fstatus=3D$?=0A- grep -v '^ *+' conftest.= er1 >conftest.err=0A- rm -f conftest.er1=0A- cat conftest.err >&5=0A- ec= ho "$as=5Fme:$LINENO: \$? =3D $ac=5Fstatus" >&5=0A- (exit $ac=5Fstatus); }= && {=0A- test -z "$ac=5Fc=5Fwerror=5Fflag" ||=0A- test ! -s conftest.err= =0A- } && test -s conftest.$ac=5Fobjext; then=0A- ac=5Fcv=5Fc=5Fcons= t=3Dyes=0A-else=0A- echo "$as=5Fme: failed program was:" >&5=0A-sed 's/^/|= /' conftest.$ac=5Fext >&5=0A-=0A- ac=5Fcv=5Fc=5Fconst=3Dno=0A-fi=0A-=0A-rm= -f core conftest.err conftest.$ac=5Fobjext conftest.$ac=5Fext=0A-fi=0A-{ e= cho "$as=5Fme:$LINENO: result: $ac=5Fcv=5Fc=5Fconst" >&5=0A-echo "${ECHO=5F= T}$ac=5Fcv=5Fc=5Fconst" >&6; }=0A-if test $ac=5Fcv=5Fc=5Fconst =3D no; then= =0A-=0A-cat >>confdefs.h <<\=5FACEOF=0A-#define const=0A-=5FACEOF=0A-=0A-fi= =0A-=0A-{ echo "$as=5Fme:$LINENO: checking whether time.h and sys/time.h ma= y both be included" >&5=0A-echo $ECHO=5FN "checking whether time.h and sys/= time.h may both be included... $ECHO=5FC" >&6; }=0A-if test "${ac=5Fcv=5Fhe= ader=5Ftime+set}" =3D set; then=0A- echo $ECHO=5FN "(cached) $ECHO=5FC" >&= 6=0A-else=0A- cat >conftest.$ac=5Fext <<=5FACEOF=0A-/* confdefs.h. */=0A-= =5FACEOF=0A-cat confdefs.h >>conftest.$ac=5Fext=0A-cat >>conftest.$ac=5Fext= <<=5FACEOF=0A-/* end confdefs.h. */=0A-#include =0A-#include= =0A-#include =0A-=0A-int=0A-main ()=0A-{=0A-if ((struc= t tm *) 0)=0A-return 0;=0A- ;=0A- return 0;=0A-}=0A-=5FACEOF=0A-rm -f con= ftest.$ac=5Fobjext=0A-if { (ac=5Ftry=3D"$ac=5Fcompile"=0A-case "(($ac=5Ftry= " in=0A- *\"* | *\`* | *\\*) ac=5Ftry=5Fecho=3D\$ac=5Ftry;;=0A- *) ac=5Ft= ry=5Fecho=3D$ac=5Ftry;;=0A-esac=0A-eval "echo \"\$as=5Fme:$LINENO: $ac=5Ftr= y=5Fecho\"") >&5=0A- (eval "$ac=5Fcompile") 2>conftest.er1=0A- ac=5Fstatu= s=3D$?=0A- grep -v '^ *+' conftest.er1 >conftest.err=0A- rm -f conftest.e= r1=0A- cat conftest.err >&5=0A- echo "$as=5Fme:$LINENO: \$? =3D $ac=5Fsta= tus" >&5=0A- (exit $ac=5Fstatus); } && {=0A- test -z "$ac=5Fc=5Fwerror=5F= flag" ||=0A- test ! -s conftest.err=0A- } && test -s conftest.$ac=5F= objext; then=0A- ac=5Fcv=5Fheader=5Ftime=3Dyes=0A-else=0A- echo "$as=5Fme= : failed program was:" >&5=0A-sed 's/^/| /' conftest.$ac=5Fext >&5=0A-=0A- = ac=5Fcv=5Fheader=5Ftime=3Dno=0A-fi=0A-=0A-rm -f core conftest.err conftest.= $ac=5Fobjext conftest.$ac=5Fext=0A-fi=0A-{ echo "$as=5Fme:$LINENO: result: = $ac=5Fcv=5Fheader=5Ftime" >&5=0A-echo "${ECHO=5FT}$ac=5Fcv=5Fheader=5Ftime"= >&6; }=0A-if test $ac=5Fcv=5Fheader=5Ftime =3D yes; then=0A-=0A-cat >>conf= defs.h <<\=5FACEOF=0A-#define TIME=5FWITH=5FSYS=5FTIME 1=0A-=5FACEOF=0A-=0A= -fi=0A-=0A-=0A-{ echo "$as=5Fme:$LINENO: checking for function prototypes" = >&5=0A-echo $ECHO=5FN "checking for function prototypes... $ECHO=5FC" >&6; = }=0A-if test "$ac=5Fcv=5Fprog=5Fcc=5Fc89" !=3D no; then=0A- { echo "$as=5F= me:$LINENO: result: yes" >&5=0A-echo "${ECHO=5FT}yes" >&6; }=0A-=0A-cat >>c= onfdefs.h <<\=5FACEOF=0A-#define PROTOTYPES 1=0A-=5FACEOF=0A-=0A-=0A-cat >>= confdefs.h <<\=5FACEOF=0A-#define =5F=5FPROTOTYPES 1=0A-=5FACEOF=0A-=0A-els= e=0A- { echo "$as=5Fme:$LINENO: result: no" >&5=0A-echo "${ECHO=5FT}no" >&= 6; }=0A-fi=0A-=0A-{ echo "$as=5Fme:$LINENO: checking whether setvbuf argume= nts are reversed" >&5=0A-echo $ECHO=5FN "checking whether setvbuf arguments= are reversed... $ECHO=5FC" >&6; }=0A-if test "${ac=5Fcv=5Ffunc=5Fsetvbuf= =5Freversed+set}" =3D set; then=0A- echo $ECHO=5FN "(cached) $ECHO=5FC" >&= 6=0A-else=0A- ac=5Fcv=5Ffunc=5Fsetvbuf=5Freversed=3Dno=0A- cat >conftest= .$ac=5Fext <<=5FACEOF=0A-/* confdefs.h. */=0A-=5FACEOF=0A-cat confdefs.h >= >conftest.$ac=5Fext=0A-cat >>conftest.$ac=5Fext <<=5FACEOF=0A-/* end confde= fs.h. */=0A-#include =0A-# ifdef PROTOTYPES=0A- int (setvbuf= ) (FILE *, int, char *, size=5Ft);=0A-# endif=0A-int=0A-main ()=0A-{=0A-c= har buf; return setvbuf (stdout, =5FIOLBF, &buf, 1);=0A- ;=0A- return 0;= =0A-}=0A-=5FACEOF=0A-rm -f conftest.$ac=5Fobjext conftest$ac=5Fexeext=0A-if= { (ac=5Ftry=3D"$ac=5Flink"=0A-case "(($ac=5Ftry" in=0A- *\"* | *\`* | *\\= *) ac=5Ftry=5Fecho=3D\$ac=5Ftry;;=0A- *) ac=5Ftry=5Fecho=3D$ac=5Ftry;;=0A-= esac=0A-eval "echo \"\$as=5Fme:$LINENO: $ac=5Ftry=5Fecho\"") >&5=0A- (eval= "$ac=5Flink") 2>conftest.er1=0A- ac=5Fstatus=3D$?=0A- grep -v '^ *+' con= ftest.er1 >conftest.err=0A- rm -f conftest.er1=0A- cat conftest.err >&5= =0A- echo "$as=5Fme:$LINENO: \$? =3D $ac=5Fstatus" >&5=0A- (exit $ac=5Fst= atus); } && {=0A- test -z "$ac=5Fc=5Fwerror=5Fflag" ||=0A- test ! -s conf= test.err=0A- } && test -s conftest$ac=5Fexeext &&=0A- $as=5Ftes= t=5Fx conftest$ac=5Fexeext; then=0A- cat >conftest.$ac=5Fext <<=5FACEOF=0A= -/* confdefs.h. */=0A-=5FACEOF=0A-cat confdefs.h >>conftest.$ac=5Fext=0A-c= at >>conftest.$ac=5Fext <<=5FACEOF=0A-/* end confdefs.h. */=0A-#include =0A-# ifdef PROTOTYPES=0A- int (setvbuf) (FILE *, int, ch= ar *, size=5Ft);=0A-# endif=0A-int=0A-main ()=0A-{=0A-char buf; return= setvbuf (stdout, &buf, =5FIOLBF, 1);=0A- ;=0A- return 0;=0A-}=0A-=5FACEO= F=0A-rm -f conftest.$ac=5Fobjext conftest$ac=5Fexeext=0A-if { (ac=5Ftry=3D"= $ac=5Flink"=0A-case "(($ac=5Ftry" in=0A- *\"* | *\`* | *\\*) ac=5Ftry=5Fec= ho=3D\$ac=5Ftry;;=0A- *) ac=5Ftry=5Fecho=3D$ac=5Ftry;;=0A-esac=0A-eval "ec= ho \"\$as=5Fme:$LINENO: $ac=5Ftry=5Fecho\"") >&5=0A- (eval "$ac=5Flink") 2= >conftest.er1=0A- ac=5Fstatus=3D$?=0A- grep -v '^ *+' conftest.er1 >conft= est.err=0A- rm -f conftest.er1=0A- cat conftest.err >&5=0A- echo "$as=5F= me:$LINENO: \$? =3D $ac=5Fstatus" >&5=0A- (exit $ac=5Fstatus); } && {=0A- = test -z "$ac=5Fc=5Fwerror=5Fflag" ||=0A- test ! -s conftest.err=0A- = } && test -s conftest$ac=5Fexeext &&=0A- $as=5Ftest=5Fx conftest$ac= =5Fexeext; then=0A- # It compiles and links either way, so it must not be = declared=0A- # with a prototype and most likely this is a K&R C compiler.= =0A- # Try running it.=0A- if test "$cross=5Fcompiling" =3D yes; then=0A-= : # Assume setvbuf is not reversed when cross-compiling.=0A-else=0A- cat= >conftest.$ac=5Fext <<=5FACEOF=0A-/* confdefs.h. */=0A-=5FACEOF=0A-cat co= nfdefs.h >>conftest.$ac=5Fext=0A-cat >>conftest.$ac=5Fext <<=5FACEOF=0A-/* = end confdefs.h. */=0A-$ac=5Fincludes=5Fdefault=0A-int=0A-main ()=0A-{=0A-/= * This call has the arguments reversed.=0A- A reversed system may check= and see that the address of buf=0A- is not =5FIOLBF, =5FIONBF, or =5FI= OFBF, and return nonzero. */=0A- char buf;=0A- if (setvbuf (stdout, =5FI= OLBF, &buf, 1) !=3D 0)=0A- return 1;=0A- putchar ('\r');=0A- return 0;= /* Non-reversed systems SEGV here. */=0A- ;=0A- return 0;=0A-}=0A-=5FAC= EOF=0A-rm -f conftest$ac=5Fexeext=0A-if { (ac=5Ftry=3D"$ac=5Flink"=0A-case = "(($ac=5Ftry" in=0A- *\"* | *\`* | *\\*) ac=5Ftry=5Fecho=3D\$ac=5Ftry;;=0A= - *) ac=5Ftry=5Fecho=3D$ac=5Ftry;;=0A-esac=0A-eval "echo \"\$as=5Fme:$LINE= NO: $ac=5Ftry=5Fecho\"") >&5=0A- (eval "$ac=5Flink") 2>&5=0A- ac=5Fstatus= =3D$?=0A- echo "$as=5Fme:$LINENO: \$? =3D $ac=5Fstatus" >&5=0A- (exit $ac= =5Fstatus); } && { ac=5Ftry=3D'./conftest$ac=5Fexeext'=0A- { (case "(($ac= =5Ftry" in=0A- *\"* | *\`* | *\\*) ac=5Ftry=5Fecho=3D\$ac=5Ftry;;=0A- *) = ac=5Ftry=5Fecho=3D$ac=5Ftry;;=0A-esac=0A-eval "echo \"\$as=5Fme:$LINENO: $a= c=5Ftry=5Fecho\"") >&5=0A- (eval "$ac=5Ftry") 2>&5=0A- ac=5Fstatus=3D$?= =0A- echo "$as=5Fme:$LINENO: \$? =3D $ac=5Fstatus" >&5=0A- (exit $ac=5Fst= atus); }; }; then=0A- ac=5Fcv=5Ffunc=5Fsetvbuf=5Freversed=3Dyes=0A-else=0A= - echo "$as=5Fme: program exited with status $ac=5Fstatus" >&5=0A-echo "$a= s=5Fme: failed program was:" >&5=0A-sed 's/^/| /' conftest.$ac=5Fext >&5=0A= -=0A-fi=0A-rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac=5F= exeext conftest.$ac=5Fobjext conftest.$ac=5Fext=0A-fi=0A-=0A-=0A- ac=5Fcv= =5Ffunc=5Fsetvbuf=5Freversed=3Dyes=0A-else=0A- echo "$as=5Fme: failed prog= ram was:" >&5=0A-sed 's/^/| /' conftest.$ac=5Fext >&5=0A-=0A-=0A-fi=0A-=0A-= rm -f core conftest.err conftest.$ac=5Fobjext conftest=5Fipa8=5Fconftest.oo= \=0A- conftest$ac=5Fexeext conftest.$ac=5Fext=0A-else=0A- echo "$as= =5Fme: failed program was:" >&5=0A-sed 's/^/| /' conftest.$ac=5Fext >&5=0A-= =0A-=0A-fi=0A-=0A-rm -f core conftest.err conftest.$ac=5Fobjext conftest=5F= ipa8=5Fconftest.oo \=0A- conftest$ac=5Fexeext conftest.$ac=5Fext=0A-fi= =0A-{ echo "$as=5Fme:$LINENO: result: $ac=5Fcv=5Ffunc=5Fsetvbuf=5Freversed"= >&5=0A-echo "${ECHO=5FT}$ac=5Fcv=5Ffunc=5Fsetvbuf=5Freversed" >&6; }=0A-if= test $ac=5Fcv=5Ffunc=5Fsetvbuf=5Freversed =3D yes; then=0A-=0A-cat >>confd= efs.h <<\=5FACEOF=0A-#define SETVBUF=5FREVERSED 1=0A-=5FACEOF=0A-=0A-fi=0A-= =0A-=0A-=0A-=0A-=0A-=0A-=0A-=0A-=0A-=0A-for ac=5Ffunc in system gettimeofda= y mkdir strerror open64 stat64 fseeko64 lrand48=5Fr srand48=5Fr=0A-do=0A-as= =5Fac=5Fvar=3D`echo "ac=5Fcv=5Ffunc=5F$ac=5Ffunc" | $as=5Ftr=5Fsh`=0A-{ ech= o "$as=5Fme:$LINENO: checking for $ac=5Ffunc" >&5=0A-echo $ECHO=5FN "checki= ng for $ac=5Ffunc... $ECHO=5FC" >&6; }=0A-if { as=5Fvar=3D$as=5Fac=5Fvar; e= val "test \"\${$as=5Fvar+set}\" =3D set"; }; then=0A- echo $ECHO=5FN "(cac= hed) $ECHO=5FC" >&6=0A-else=0A- cat >conftest.$ac=5Fext <<=5FACEOF=0A-/* c= onfdefs.h. */=0A-=5FACEOF=0A-cat confdefs.h >>conftest.$ac=5Fext=0A-cat >>= conftest.$ac=5Fext <<=5FACEOF=0A-/* end confdefs.h. */=0A-/* Define $ac=5F= func to an innocuous variant, in case declares $ac=5Ffunc.=0A- = For example, HP-UX 11i declares gettimeofday. */=0A-#define $a= c=5Ffunc innocuous=5F$ac=5Ffunc=0A-=0A-/* System header to define =5F=5Fstu= b macros and hopefully few prototypes,=0A- which can conflict with char = $ac=5Ffunc (); below.=0A- Prefer to if =5F=5FSTDC= =5F=5F is defined, since=0A- exists even on freestanding comp= ilers. */=0A-=0A-#ifdef =5F=5FSTDC=5F=5F=0A-# include =0A-#else= =0A-# include =0A-#endif=0A-=0A-#undef $ac=5Ffunc=0A-=0A-/* Overr= ide any GCC internal prototype to avoid an error.=0A- Use char because in= t might match the return type of a GCC=0A- builtin and then its argument = prototype would still apply. */=0A-#ifdef =5F=5Fcplusplus=0A-extern "C"=0A= -#endif=0A-char $ac=5Ffunc ();=0A-/* The GNU C library defines this for fun= ctions which it implements=0A- to always fail with ENOSYS. Some functio= ns are actually named=0A- something starting with =5F=5F and the normal = name is an alias. */=0A-#if defined =5F=5Fstub=5F$ac=5Ffunc || defined =5F= =5Fstub=5F=5F=5F$ac=5Ffunc=0A-choke me=0A-#endif=0A-=0A-int=0A-main ()=0A-{= =0A-return $ac=5Ffunc ();=0A- ;=0A- return 0;=0A-}=0A-=5FACEOF=0A-rm -f c= onftest.$ac=5Fobjext conftest$ac=5Fexeext=0A-if { (ac=5Ftry=3D"$ac=5Flink"= =0A-case "(($ac=5Ftry" in=0A- *\"* | *\`* | *\\*) ac=5Ftry=5Fecho=3D\$ac= =5Ftry;;=0A- *) ac=5Ftry=5Fecho=3D$ac=5Ftry;;=0A-esac=0A-eval "echo \"\$as= =5Fme:$LINENO: $ac=5Ftry=5Fecho\"") >&5=0A- (eval "$ac=5Flink") 2>conftest= .er1=0A- ac=5Fstatus=3D$?=0A- grep -v '^ *+' conftest.er1 >conftest.err= =0A- rm -f conftest.er1=0A- cat conftest.err >&5=0A- echo "$as=5Fme:$LIN= ENO: \$? =3D $ac=5Fstatus" >&5=0A- (exit $ac=5Fstatus); } && {=0A- test -= z "$ac=5Fc=5Fwerror=5Fflag" ||=0A- test ! -s conftest.err=0A- } && t= est -s conftest$ac=5Fexeext &&=0A- $as=5Ftest=5Fx conftest$ac=5Fexeex= t; then=0A- eval "$as=5Fac=5Fvar=3Dyes"=0A-else=0A- echo "$as=5Fme: faile= d program was:" >&5=0A-sed 's/^/| /' conftest.$ac=5Fext >&5=0A-=0A- eval "$= as=5Fac=5Fvar=3Dno"=0A-fi=0A-=0A-rm -f core conftest.err conftest.$ac=5Fobj= ext conftest=5Fipa8=5Fconftest.oo \=0A- conftest$ac=5Fexeext conftest.= $ac=5Fext=0A-fi=0A-ac=5Fres=3D`eval echo '${'$as=5Fac=5Fvar'}'`=0A- = { echo "$as=5Fme:$LINENO: result: $ac=5Fres" >&5=0A-echo "${ECHO=5FT}$ac=5F= res" >&6; }=0A-if test `eval echo '${'$as=5Fac=5Fvar'}'` =3D yes; then=0A- = cat >>confdefs.h <<=5FACEOF=0A-#define `echo "HAVE=5F$ac=5Ffunc" | $as=5Ft= r=5Fcpp` 1=0A-=5FACEOF=0A-=0A-fi=0A-done=0A-=0A-=0A-=0A-=0A-ac=5Fconfig=5Ff= iles=3D"$ac=5Fconfig=5Ffiles Makefile"=0A-=0A-ac=5Fconfig=5Fcommands=3D"$ac= =5Fconfig=5Fcommands default"=0A-=0A-cat >confcache <<\=5FACEOF=0A-# This f= ile is a shell script that caches the results of configure=0A-# tests run o= n this system so they can be shared between configure=0A-# scripts and conf= igure runs, see configure's option --config-cache.=0A-# It is not useful on= other systems. If it contains results you don't=0A-# want to keep, you ma= y remove or edit it.=0A-#=0A-# config.status only pays attention to the cac= he file if you give it=0A-# the --recheck option to rerun configure.=0A-#= =0A-# `ac=5Fcv=5Fenv=5Ffoo' variables (set or unset) will be overridden whe= n=0A-# loading this file, other *unset* `ac=5Fcv=5Ffoo' will be assigned th= e=0A-# following values.=0A-=0A-=5FACEOF=0A-=0A-# The following way of writ= ing the cache mishandles newlines in values,=0A-# but we know of no workaro= und that is simple, portable, and efficient.=0A-# So, we kill variables con= taining newlines.=0A-# Ultrix sh set writes to stderr and can't be redirect= ed directly,=0A-# and sets the high bit in the cache file unless we assign = to the vars.=0A-(=0A- for ac=5Fvar in `(set) 2>&1 | sed -n 's/^\([a-zA-Z= =5F][a-zA-Z0-9=5F]*\)=3D.*/\1/p'`; do=0A- eval ac=5Fval=3D\$$ac=5Fvar=0A= - case $ac=5Fval in #(=0A- *${as=5Fnl}*)=0A- case $ac=5Fvar in #= (=0A- *=5Fcv=5F*) { echo "$as=5Fme:$LINENO: WARNING: Cache variable $a= c=5Fvar contains a newline." >&5=0A-echo "$as=5Fme: WARNING: Cache variable= $ac=5Fvar contains a newline." >&2;} ;;=0A- esac=0A- case $ac=5F= var in #(=0A- =5F | IFS | as=5Fnl) ;; #(=0A- *) $as=5Funset $ac= =5Fvar ;;=0A- esac ;;=0A- esac=0A- done=0A-=0A- (set) 2>&1 |=0A- = case $as=5Fnl`(ac=5Fspace=3D' '; set) 2>&1` in #(=0A- *${as=5Fnl}ac= =5Fspace=3D\ *)=0A- # `set' does not quote correctly, so add quotes (d= ouble-quote=0A- # substitution turns \\\\ into \\, and sed turns \\ in= to \).=0A- sed -n \=0A- "s/'/'\\\\''/g;=0A- s/^\\([=5F$as=5Fcr=5Faln= um]*=5Fcv=5F[=5F$as=5Fcr=5Falnum]*\\)=3D\\(.*\\)/\\1=3D'\\2'/p"=0A- ;;= #(=0A- *)=0A- # `set' quotes correctly as required by POSIX, so do= not add quotes.=0A- sed -n "/^[=5F$as=5Fcr=5Falnum]*=5Fcv=5F[=5F$as= =5Fcr=5Falnum]*=3D/p"=0A- ;;=0A- esac |=0A- sort=0A-) |=0A- sed= '=0A- /^ac=5Fcv=5Fenv=5F/b end=0A- t clear=0A- :clear=0A- = s/^\([^=3D]*\)=3D\(.*[{}].*\)$/test "${\1+set}" =3D set || &/=0A- t end= =0A- s/^\([^=3D]*\)=3D\(.*\)$/\1=3D${\1=3D\2}/=0A- :end' >>confcach= e=0A-if diff "$cache=5Ffile" confcache >/dev/null 2>&1; then :; else=0A- i= f test -w "$cache=5Ffile"; then=0A- test "x$cache=5Ffile" !=3D "x/dev/nu= ll" &&=0A- { echo "$as=5Fme:$LINENO: updating cache $cache=5Ffile" >&5= =0A-echo "$as=5Fme: updating cache $cache=5Ffile" >&6;}=0A- cat confcach= e >$cache=5Ffile=0A- else=0A- { echo "$as=5Fme:$LINENO: not updating un= writable cache $cache=5Ffile" >&5=0A-echo "$as=5Fme: not updating unwritabl= e cache $cache=5Ffile" >&6;}=0A- fi=0A-fi=0A-rm -f confcache=0A-=0A-test "= x$prefix" =3D xNONE && prefix=3D$ac=5Fdefault=5Fprefix=0A-# Let make expand= exec=5Fprefix.=0A-test "x$exec=5Fprefix" =3D xNONE && exec=5Fprefix=3D'${p= refix}'=0A-=0A-DEFS=3D-DHAVE=5FCONFIG=5FH=0A-=0A-ac=5Flibobjs=3D=0A-ac=5Flt= libobjs=3D=0A-for ac=5Fi in : $LIBOBJS; do test "x$ac=5Fi" =3D x: && contin= ue=0A- # 1. Remove the extension, and $U if already installed.=0A- ac=5Fs= cript=3D's/\$U\././;s/\.o$//;s/\.obj$//'=0A- ac=5Fi=3D`echo "$ac=5Fi" | se= d "$ac=5Fscript"`=0A- # 2. Prepend LIBOBJDIR. When used with automake>=3D= 1.10 LIBOBJDIR=0A- # will be set to the directory where LIBOBJS objects= are built.=0A- ac=5Flibobjs=3D"$ac=5Flibobjs \${LIBOBJDIR}$ac=5Fi\$U.$ac= =5Fobjext"=0A- ac=5Fltlibobjs=3D"$ac=5Fltlibobjs \${LIBOBJDIR}$ac=5Fi"'$U.= lo'=0A-done=0A-LIBOBJS=3D$ac=5Flibobjs=0A-=0A-LTLIBOBJS=3D$ac=5Fltlibobjs= =0A-=0A-=0A-if test -z "${AMDEP=5FTRUE}" && test -z "${AMDEP=5FFALSE}"; the= n=0A- { { echo "$as=5Fme:$LINENO: error: conditional \"AMDEP\" was never d= efined.=0A-Usually this means the macro was only invoked conditionally." >&= 5=0A-echo "$as=5Fme: error: conditional \"AMDEP\" was never defined.=0A-Usu= ally this means the macro was only invoked conditionally." >&2;}=0A- { (e= xit 1); exit 1; }; }=0A-fi=0A-if test -z "${am=5F=5FfastdepCC=5FTRUE}" && t= est -z "${am=5F=5FfastdepCC=5FFALSE}"; then=0A- { { echo "$as=5Fme:$LINENO= : error: conditional \"am=5F=5FfastdepCC\" was never defined.=0A-Usually th= is means the macro was only invoked conditionally." >&5=0A-echo "$as=5Fme: = error: conditional \"am=5F=5FfastdepCC\" was never defined.=0A-Usually this= means the macro was only invoked conditionally." >&2;}=0A- { (exit 1); e= xit 1; }; }=0A-fi=0A-if test -z "${am=5F=5FfastdepCC=5FTRUE}" && test -z "$= {am=5F=5FfastdepCC=5FFALSE}"; then=0A- { { echo "$as=5Fme:$LINENO: error: = conditional \"am=5F=5FfastdepCC\" was never defined.=0A-Usually this means = the macro was only invoked conditionally." >&5=0A-echo "$as=5Fme: error: co= nditional \"am=5F=5FfastdepCC\" was never defined.=0A-Usually this means th= e macro was only invoked conditionally." >&2;}=0A- { (exit 1); exit 1; };= }=0A-fi=0A-=0A-: ${CONFIG=5FSTATUS=3D./config.status}=0A-ac=5Fclean=5Ffile= s=5Fsave=3D$ac=5Fclean=5Ffiles=0A-ac=5Fclean=5Ffiles=3D"$ac=5Fclean=5Ffiles= $CONFIG=5FSTATUS"=0A-{ echo "$as=5Fme:$LINENO: creating $CONFIG=5FSTATUS" = >&5=0A-echo "$as=5Fme: creating $CONFIG=5FSTATUS" >&6;}=0A-cat >$CONFIG=5FS= TATUS <<=5FACEOF=0A-#! $SHELL=0A-# Generated by $as=5Fme.=0A-# Run this fil= e to recreate the current configuration.=0A-# Compiler output produced by c= onfigure, useful for debugging=0A-# configure, is in config.log if it exist= s.=0A-=0A-debug=3Dfalse=0A-ac=5Fcs=5Frecheck=3Dfalse=0A-ac=5Fcs=5Fsilent=3D= false=0A-SHELL=3D\${CONFIG=5FSHELL-$SHELL}=0A-=5FACEOF=0A-=0A-cat >>$CONFIG= =5FSTATUS <<\=5FACEOF=0A-## --------------------- ##=0A-## M4sh Initializat= ion. ##=0A-## --------------------- ##=0A-=0A-# Be more Bourne compatible= =0A-DUALCASE=3D1; export DUALCASE # for MKS sh=0A-if test -n "${ZSH=5FVERSI= ON+set}" && (emulate sh) >/dev/null 2>&1; then=0A- emulate sh=0A- NULLCMD= =3D:=0A- # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which=0A-= # is contrary to our usage. Disable this feature.=0A- alias -g '${1+"$@= "}'=3D'"$@"'=0A- setopt NO=5FGLOB=5FSUBST=0A-else=0A- case `(set -o) 2>/d= ev/null` in=0A- *posix*) set -o posix ;;=0A-esac=0A-=0A-fi=0A-=0A-=0A-=0A-= =0A-# PATH needs CR=0A-# Avoid depending upon Character Ranges.=0A-as=5Fcr= =5Fletters=3D'abcdefghijklmnopqrstuvwxyz'=0A-as=5Fcr=5FLETTERS=3D'ABCDEFGHI= JKLMNOPQRSTUVWXYZ'=0A-as=5Fcr=5FLetters=3D$as=5Fcr=5Fletters$as=5Fcr=5FLETT= ERS=0A-as=5Fcr=5Fdigits=3D'0123456789'=0A-as=5Fcr=5Falnum=3D$as=5Fcr=5FLett= ers$as=5Fcr=5Fdigits=0A-=0A-# The user is always right.=0A-if test "${PATH= =5FSEPARATOR+set}" !=3D set; then=0A- echo "#! /bin/sh" >conf$$.sh=0A- ec= ho "exit 0" >>conf$$.sh=0A- chmod +x conf$$.sh=0A- if (PATH=3D"/nonexi= stent;."; conf$$.sh) >/dev/null 2>&1; then=0A- PATH=5FSEPARATOR=3D';'=0A= - else=0A- PATH=5FSEPARATOR=3D:=0A- fi=0A- rm -f conf$$.sh=0A-fi=0A-= =0A-# Support unset when possible.=0A-if ( (MAIL=3D60; unset MAIL) || exit)= >/dev/null 2>&1; then=0A- as=5Funset=3Dunset=0A-else=0A- as=5Funset=3Dfa= lse=0A-fi=0A-=0A-=0A-# IFS=0A-# We need space, tab and new line, in precise= ly that order. Quoting is=0A-# there to prevent editors from complaining a= bout space-tab.=0A-# (If =5FAS=5FPATH=5FWALK were called with IFS unset, it= would disable word=0A-# splitting by setting IFS to empty value.)=0A-as=5F= nl=3D'=0A-'=0A-IFS=3D" "" $as=5Fnl"=0A-=0A-# Find who we are. Look in the = path if we contain no directory separator.=0A-case $0 in=0A- *[\\/]* ) as= =5Fmyself=3D$0 ;;=0A- *) as=5Fsave=5FIFS=3D$IFS; IFS=3D$PATH=5FSEPARATOR= =0A-for as=5Fdir in $PATH=0A-do=0A- IFS=3D$as=5Fsave=5FIFS=0A- test -z "$= as=5Fdir" && as=5Fdir=3D.=0A- test -r "$as=5Fdir/$0" && as=5Fmyself=3D$as= =5Fdir/$0 && break=0A-done=0A-IFS=3D$as=5Fsave=5FIFS=0A-=0A- ;;=0A-esac= =0A-# We did not find ourselves, most probably we were run as `sh COMMAND'= =0A-# in which case we are not to be found in the path.=0A-if test "x$as=5F= myself" =3D x; then=0A- as=5Fmyself=3D$0=0A-fi=0A-if test ! -f "$as=5Fmyse= lf"; then=0A- echo "$as=5Fmyself: error: cannot find myself; rerun with an= absolute file name" >&2=0A- { (exit 1); exit 1; }=0A-fi=0A-=0A-# Work aro= und bugs in pre-3.0 UWIN ksh.=0A-for as=5Fvar in ENV MAIL MAILPATH=0A-do ($= as=5Funset $as=5Fvar) >/dev/null 2>&1 && $as=5Funset $as=5Fvar=0A-done=0A-P= S1=3D'$ '=0A-PS2=3D'> '=0A-PS4=3D'+ '=0A-=0A-# NLS nuisances.=0A-for as=5Fv= ar in \=0A- LANG LANGUAGE LC=5FADDRESS LC=5FALL LC=5FCOLLATE LC=5FCTYPE LC= =5FIDENTIFICATION \=0A- LC=5FMEASUREMENT LC=5FMESSAGES LC=5FMONETARY LC=5F= NAME LC=5FNUMERIC LC=5FPAPER \=0A- LC=5FTELEPHONE LC=5FTIME=0A-do=0A- if = (set +x; test -z "`(eval $as=5Fvar=3DC; export $as=5Fvar) 2>&1`"); then=0A-= eval $as=5Fvar=3DC; export $as=5Fvar=0A- else=0A- ($as=5Funset $as= =5Fvar) >/dev/null 2>&1 && $as=5Funset $as=5Fvar=0A- fi=0A-done=0A-=0A-# R= equired to use basename.=0A-if expr a : '\(a\)' >/dev/null 2>&1 &&=0A- te= st "X`expr 00001 : '.*\(...\)'`" =3D X001; then=0A- as=5Fexpr=3Dexpr=0A-el= se=0A- as=5Fexpr=3Dfalse=0A-fi=0A-=0A-if (basename -- /) >/dev/null 2>&1 &= & test "X`basename -- / 2>&1`" =3D "X/"; then=0A- as=5Fbasename=3Dbasename= =0A-else=0A- as=5Fbasename=3Dfalse=0A-fi=0A-=0A-=0A-# Name of the executab= le.=0A-as=5Fme=3D`$as=5Fbasename -- "$0" ||=0A-$as=5Fexpr X/"$0" : '.*/\([^= /][^/]*\)/*$' \| \=0A- X"$0" : 'X\(//\)$' \| \=0A- X"$0" : 'X\(/\)' \| . = 2>/dev/null ||=0A-echo X/"$0" |=0A- sed '/^.*\/\([^/][^/]*\)\/*$/{=0A- = s//\1/=0A- q=0A- }=0A- /^X\/\(\/\/\)$/{=0A- s//\1/=0A- q= =0A- }=0A- /^X\/\(\/\).*/{=0A- s//\1/=0A- q=0A- }=0A- s/.*/= ./; q'`=0A-=0A-# CDPATH.=0A-$as=5Funset CDPATH=0A-=0A-=0A-=0A- as=5Flineno= =5F1=3D$LINENO=0A- as=5Flineno=5F2=3D$LINENO=0A- test "x$as=5Flineno=5F1"= !=3D "x$as=5Flineno=5F2" &&=0A- test "x`expr $as=5Flineno=5F1 + 1`" =3D "= x$as=5Flineno=5F2" || {=0A-=0A- # Create $as=5Fme.lineno as a copy of $as= =5Fmyself, but with $LINENO=0A- # uniformly replaced by the line number. = The first 'sed' inserts a=0A- # line-number line after each line using $LI= NENO; the second 'sed'=0A- # does the real work. The second script uses '= N' to pair each=0A- # line-number line with the line containing $LINENO, a= nd appends=0A- # trailing '-' during substitution so that $LINENO is not a= special=0A- # case at line end.=0A- # (Raja R Harinath suggested sed '= =3D', and Paul Eggert wrote the=0A- # scripts with optimization help from = Paolo Bonzini. Blame Lee=0A- # E. McMahon (1931-1989) for sed's syntax. = :-)=0A- sed -n '=0A- p=0A- /[$]LINENO/=3D=0A- ' <$as=5Fmyself |=0A-= sed '=0A- s/[$]LINENO.*/&-/=0A- t lineno=0A- b=0A- = :lineno=0A- N=0A- :loop=0A- s/[$]LINENO\([^'$as=5Fcr=5Falnum= '=5F].*\n\)\(.*\)/\2\1\2/=0A- t loop=0A- s/-\n.*//=0A- ' >$as= =5Fme.lineno &&=0A- chmod +x "$as=5Fme.lineno" ||=0A- { echo "$as=5Fme:= error: cannot create $as=5Fme.lineno; rerun with a POSIX shell" >&2=0A- = { (exit 1); exit 1; }; }=0A-=0A- # Don't try to exec as it changes $[0], c= ausing all sort of problems=0A- # (the dirname of $[0] is not the place wh= ere we might find the=0A- # original and so on. Autoconf is especially se= nsitive to this).=0A- . "./$as=5Fme.lineno"=0A- # Exit status is that of = the last command.=0A- exit=0A-}=0A-=0A-=0A-if (as=5Fdir=3D`dirname -- /` &= & test "X$as=5Fdir" =3D X/) >/dev/null 2>&1; then=0A- as=5Fdirname=3Ddirna= me=0A-else=0A- as=5Fdirname=3Dfalse=0A-fi=0A-=0A-ECHO=5FC=3D ECHO=5FN=3D E= CHO=5FT=3D=0A-case `echo -n x` in=0A--n*)=0A- case `echo 'x\c'` in=0A- *c= *) ECHO=5FT=3D' ';; # ECHO=5FT is single tab character.=0A- *) ECHO=5FC= =3D'\c';;=0A- esac;;=0A-*)=0A- ECHO=5FN=3D'-n';;=0A-esac=0A-=0A-if expr a= : '\(a\)' >/dev/null 2>&1 &&=0A- test "X`expr 00001 : '.*\(...\)'`" =3D = X001; then=0A- as=5Fexpr=3Dexpr=0A-else=0A- as=5Fexpr=3Dfalse=0A-fi=0A-= =0A-rm -f conf$$ conf$$.exe conf$$.file=0A-if test -d conf$$.dir; then=0A- = rm -f conf$$.dir/conf$$.file=0A-else=0A- rm -f conf$$.dir=0A- mkdir conf= $$.dir=0A-fi=0A-echo >conf$$.file=0A-if ln -s conf$$.file conf$$ 2>/dev/nul= l; then=0A- as=5Fln=5Fs=3D'ln -s'=0A- # ... but there are two gotchas:=0A= - # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail.=0A- # 2) DJ= GPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable.=0A- # In= both cases, we have to default to `cp -p'.=0A- ln -s conf$$.file conf$$.d= ir 2>/dev/null && test ! -f conf$$.exe ||=0A- as=5Fln=5Fs=3D'cp -p'=0A-e= lif ln conf$$.file conf$$ 2>/dev/null; then=0A- as=5Fln=5Fs=3Dln=0A-else= =0A- as=5Fln=5Fs=3D'cp -p'=0A-fi=0A-rm -f conf$$ conf$$.exe conf$$.dir/con= f$$.file conf$$.file=0A-rmdir conf$$.dir 2>/dev/null=0A-=0A-if mkdir -p . 2= >/dev/null; then=0A- as=5Fmkdir=5Fp=3D:=0A-else=0A- test -d ./-p && rmdir= ./-p=0A- as=5Fmkdir=5Fp=3Dfalse=0A-fi=0A-=0A-if test -x / >/dev/null 2>&1= ; then=0A- as=5Ftest=5Fx=3D'test -x'=0A-else=0A- if ls -dL / >/dev/null 2= >&1; then=0A- as=5Fls=5FL=5Foption=3DL=0A- else=0A- as=5Fls=5FL=5Fop= tion=3D=0A- fi=0A- as=5Ftest=5Fx=3D'=0A- eval sh -c '\''=0A- if t= est -d "$1"; then=0A- test -d "$1/.";=0A- else=0A- case $1 in= =0A- -*)set "./$1";;=0A- esac;=0A- case `ls -ld'$as=5Fls=5FL=5Foptio= n' "$1" 2>/dev/null` in=0A- ???[sx]*):;;*)false;;esac;fi=0A- '\'' sh=0A-= '=0A-fi=0A-as=5Fexecutable=5Fp=3D$as=5Ftest=5Fx=0A-=0A-# Sed expression t= o map a string onto a valid CPP name.=0A-as=5Ftr=5Fcpp=3D"eval sed 'y%*$as= =5Fcr=5Fletters%P$as=5Fcr=5FLETTERS%;s%[^=5F$as=5Fcr=5Falnum]%=5F%g'"=0A-= =0A-# Sed expression to map a string onto a valid variable name.=0A-as=5Ftr= =5Fsh=3D"eval sed 'y%*+%pp%;s%[^=5F$as=5Fcr=5Falnum]%=5F%g'"=0A-=0A-=0A-exe= c 6>&1=0A-=0A-# Save the log message, to keep $[0] and so on meaningful, an= d to=0A-# report actual input values of CONFIG=5FFILES etc. instead of thei= r=0A-# values after options handling.=0A-ac=5Flog=3D"=0A-This file was exte= nded by $as=5Fme, which was=0A-generated by GNU Autoconf 2.61. Invocation = command line was=0A-=0A- CONFIG=5FFILES =3D $CONFIG=5FFILES=0A- CONFIG= =5FHEADERS =3D $CONFIG=5FHEADERS=0A- CONFIG=5FLINKS =3D $CONFIG=5FLINK= S=0A- CONFIG=5FCOMMANDS =3D $CONFIG=5FCOMMANDS=0A- $ $0 $@=0A-=0A-on `(ho= stname || uname -n) 2>/dev/null | sed 1q`=0A-"=0A-=0A-=5FACEOF=0A-=0A-cat >= >$CONFIG=5FSTATUS <<=5FACEOF=0A-# Files that config.status was made for.=0A= -config=5Ffiles=3D"$ac=5Fconfig=5Ffiles"=0A-config=5Fheaders=3D"$ac=5Fconfi= g=5Fheaders"=0A-config=5Fcommands=3D"$ac=5Fconfig=5Fcommands"=0A-=0A-=5FACE= OF=0A-=0A-cat >>$CONFIG=5FSTATUS <<\=5FACEOF=0A-ac=5Fcs=5Fusage=3D"\=0A-\`$= as=5Fme' instantiates files from templates according to the=0A-current conf= iguration.=0A-=0A-Usage: $0 [OPTIONS] [FILE]...=0A-=0A- -h, --help p= rint this help, then exit=0A- -V, --version print version number and co= nfiguration settings, then exit=0A- -q, --quiet do not print progress= messages=0A- -d, --debug don't remove temporary files=0A- --rec= heck update $as=5Fme by reconfiguring in the same conditions=0A- --file= =3DFILE[:TEMPLATE]=0A- instantiate the configuration file FILE=0A- --h= eader=3DFILE[:TEMPLATE]=0A- instantiate the configuration header FILE= =0A-=0A-Configuration files:=0A-$config=5Ffiles=0A-=0A-Configuration header= s:=0A-$config=5Fheaders=0A-=0A-Configuration commands:=0A-$config=5Fcommand= s=0A-=0A-Report bugs to ."=0A-=0A-=5FACEOF=0A-cat >>$= CONFIG=5FSTATUS <<=5FACEOF=0A-ac=5Fcs=5Fversion=3D"\\=0A-config.status=0A-c= onfigured by $0, generated by GNU Autoconf 2.61,=0A- with options \\"`echo= "$ac=5Fconfigure=5Fargs" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`\\"=0A-=0A-C= opyright (C) 2006 Free Software Foundation, Inc.=0A-This config.status scri= pt is free software; the Free Software Foundation=0A-gives unlimited permis= sion to copy, distribute and modify it."=0A-=0A-ac=5Fpwd=3D'$ac=5Fpwd'=0A-s= rcdir=3D'$srcdir'=0A-INSTALL=3D'$INSTALL'=0A-MKDIR=5FP=3D'$MKDIR=5FP'=0A-= =5FACEOF=0A-=0A-cat >>$CONFIG=5FSTATUS <<\=5FACEOF=0A-# If no file are spec= ified by the user, then we need to provide default=0A-# value. By we need = to know if files were specified by the user.=0A-ac=5Fneed=5Fdefaults=3D:=0A= -while test $# !=3D 0=0A-do=0A- case $1 in=0A- --*=3D*)=0A- ac=5Foptio= n=3D`expr "X$1" : 'X\([^=3D]*\)=3D'`=0A- ac=5Foptarg=3D`expr "X$1" : 'X[= ^=3D]*=3D\(.*\)'`=0A- ac=5Fshift=3D:=0A- ;;=0A- *)=0A- ac=5Foptio= n=3D$1=0A- ac=5Foptarg=3D$2=0A- ac=5Fshift=3Dshift=0A- ;;=0A- esa= c=0A-=0A- case $ac=5Foption in=0A- # Handling of the options.=0A- -reche= ck | --recheck | --rechec | --reche | --rech | --rec | --re | --r)=0A- a= c=5Fcs=5Frecheck=3D: ;;=0A- --version | --versio | --versi | --vers | --ve= r | --ve | --v | -V )=0A- echo "$ac=5Fcs=5Fversion"; exit ;;=0A- --debu= g | --debu | --deb | --de | --d | -d )=0A- debug=3D: ;;=0A- --file | --= fil | --fi | --f )=0A- $ac=5Fshift=0A- CONFIG=5FFILES=3D"$CONFIG=5FFI= LES $ac=5Foptarg"=0A- ac=5Fneed=5Fdefaults=3Dfalse;;=0A- --header | --h= eade | --head | --hea )=0A- $ac=5Fshift=0A- CONFIG=5FHEADERS=3D"$CONF= IG=5FHEADERS $ac=5Foptarg"=0A- ac=5Fneed=5Fdefaults=3Dfalse;;=0A- --he = | --h)=0A- # Conflict between --help and --header=0A- { echo "$as=5Fm= e: error: ambiguous option: $1=0A-Try \`$0 --help' for more information." >= &2=0A- { (exit 1); exit 1; }; };;=0A- --help | --hel | -h )=0A- echo = "$ac=5Fcs=5Fusage"; exit ;;=0A- -q | -quiet | --quiet | --quie | --qui | -= -qu | --q \=0A- | -silent | --silent | --silen | --sile | --sil | --si | -= -s)=0A- ac=5Fcs=5Fsilent=3D: ;;=0A-=0A- # This is an error.=0A- -*) { = echo "$as=5Fme: error: unrecognized option: $1=0A-Try \`$0 --help' for more= information." >&2=0A- { (exit 1); exit 1; }; } ;;=0A-=0A- *) ac=5Fconfi= g=5Ftargets=3D"$ac=5Fconfig=5Ftargets $1"=0A- ac=5Fneed=5Fdefaults=3Dfa= lse ;;=0A-=0A- esac=0A- shift=0A-done=0A-=0A-ac=5Fconfigure=5Fextra=5Farg= s=3D=0A-=0A-if $ac=5Fcs=5Fsilent; then=0A- exec 6>/dev/null=0A- ac=5Fconf= igure=5Fextra=5Fargs=3D"$ac=5Fconfigure=5Fextra=5Fargs --silent"=0A-fi=0A-= =0A-=5FACEOF=0A-cat >>$CONFIG=5FSTATUS <<=5FACEOF=0A-if \$ac=5Fcs=5Frecheck= ; then=0A- echo "running CONFIG=5FSHELL=3D$SHELL $SHELL $0 "$ac=5Fconfigur= e=5Fargs \$ac=5Fconfigure=5Fextra=5Fargs " --no-create --no-recursion" >&6= =0A- CONFIG=5FSHELL=3D$SHELL=0A- export CONFIG=5FSHELL=0A- exec $SHELL "= $0"$ac=5Fconfigure=5Fargs \$ac=5Fconfigure=5Fextra=5Fargs --no-create --no-= recursion=0A-fi=0A-=0A-=5FACEOF=0A-cat >>$CONFIG=5FSTATUS <<\=5FACEOF=0A-ex= ec 5>>config.log=0A-{=0A- echo=0A- sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/= ;p;x;p;x' <<=5FASBOX=0A-## Running $as=5Fme. ##=0A-=5FASBOX=0A- echo "$ac= =5Flog"=0A-} >&5=0A-=0A-=5FACEOF=0A-cat >>$CONFIG=5FSTATUS <<=5FACEOF=0A-#= =0A-# INIT-COMMANDS=0A-#=0A-AMDEP=5FTRUE=3D"$AMDEP=5FTRUE" ac=5Faux=5Fdir= =3D"$ac=5Faux=5Fdir"=0A-=0A-=5FACEOF=0A-=0A-cat >>$CONFIG=5FSTATUS <<\=5FAC= EOF=0A-=0A-# Handling of arguments.=0A-for ac=5Fconfig=5Ftarget in $ac=5Fco= nfig=5Ftargets=0A-do=0A- case $ac=5Fconfig=5Ftarget in=0A- "config.h") = CONFIG=5FHEADERS=3D"$CONFIG=5FHEADERS config.h" ;;=0A- "depfiles") CONFI= G=5FCOMMANDS=3D"$CONFIG=5FCOMMANDS depfiles" ;;=0A- "Makefile") CONFIG= =5FFILES=3D"$CONFIG=5FFILES Makefile" ;;=0A- "default") CONFIG=5FCOMMAND= S=3D"$CONFIG=5FCOMMANDS default" ;;=0A-=0A- *) { { echo "$as=5Fme:$LINENO:= error: invalid argument: $ac=5Fconfig=5Ftarget" >&5=0A-echo "$as=5Fme: err= or: invalid argument: $ac=5Fconfig=5Ftarget" >&2;}=0A- { (exit 1); exit 1= ; }; };;=0A- esac=0A-done=0A-=0A-=0A-# If the user did not use the argumen= ts to specify the items to instantiate,=0A-# then the envvar interface is u= sed. Set only those that are not.=0A-# We use the long form for the defaul= t assignment because of an extremely=0A-# bizarre bug on SunOS 4.1.3.=0A-if= $ac=5Fneed=5Fdefaults; then=0A- test "${CONFIG=5FFILES+set}" =3D set || C= ONFIG=5FFILES=3D$config=5Ffiles=0A- test "${CONFIG=5FHEADERS+set}" =3D set= || CONFIG=5FHEADERS=3D$config=5Fheaders=0A- test "${CONFIG=5FCOMMANDS+set= }" =3D set || CONFIG=5FCOMMANDS=3D$config=5Fcommands=0A-fi=0A-=0A-# Have a = temporary directory for convenience. Make it in the build tree=0A-# simply= because there is no reason against having it here, and in addition,=0A-# c= reating and moving files from /tmp can sometimes cause problems.=0A-# Hook = for its removal unless debugging.=0A-# Note that there is a small window in= which the directory will not be cleaned:=0A-# after its creation but befor= e its name has been assigned to `$tmp'.=0A-$debug ||=0A-{=0A- tmp=3D=0A- = trap 'exit=5Fstatus=3D$?=0A- { test -z "$tmp" || test ! -d "$tmp" || rm -f= r "$tmp"; } && exit $exit=5Fstatus=0A-' 0=0A- trap '{ (exit 1); exit 1; }'= 1 2 13 15=0A-}=0A-# Create a (secure) tmp directory for tmp files.=0A-=0A-= {=0A- tmp=3D`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` &&=0A- = test -n "$tmp" && test -d "$tmp"=0A-} ||=0A-{=0A- tmp=3D./conf$$-$RANDOM= =0A- (umask 077 && mkdir "$tmp")=0A-} ||=0A-{=0A- echo "$me: cannot crea= te a temporary directory in ." >&2=0A- { (exit 1); exit 1; }=0A-}=0A-=0A-= #=0A-# Set up the sed scripts for CONFIG=5FFILES section.=0A-#=0A-=0A-# No = need to generate the scripts if there are no CONFIG=5FFILES.=0A-# This happ= ens for instance when ./config.status config.h=0A-if test -n "$CONFIG=5FFIL= ES"; then=0A-=0A-=5FACEOF=0A-=0A-=0A-=0A-ac=5Fdelim=3D'%!=5F!# '=0A-for ac= =5Flast=5Ftry in false false false false false :; do=0A- cat >conf$$subs.s= ed <<=5FACEOF=0A-SHELL!$SHELL$ac=5Fdelim=0A-PATH=5FSEPARATOR!$PATH=5FSEPARA= TOR$ac=5Fdelim=0A-PACKAGE=5FNAME!$PACKAGE=5FNAME$ac=5Fdelim=0A-PACKAGE=5FTA= RNAME!$PACKAGE=5FTARNAME$ac=5Fdelim=0A-PACKAGE=5FVERSION!$PACKAGE=5FVERSION= $ac=5Fdelim=0A-PACKAGE=5FSTRING!$PACKAGE=5FSTRING$ac=5Fdelim=0A-PACKAGE=5FB= UGREPORT!$PACKAGE=5FBUGREPORT$ac=5Fdelim=0A-exec=5Fprefix!$exec=5Fprefix$ac= =5Fdelim=0A-prefix!$prefix$ac=5Fdelim=0A-program=5Ftransform=5Fname!$progra= m=5Ftransform=5Fname$ac=5Fdelim=0A-bindir!$bindir$ac=5Fdelim=0A-sbindir!$sb= indir$ac=5Fdelim=0A-libexecdir!$libexecdir$ac=5Fdelim=0A-datarootdir!$datar= ootdir$ac=5Fdelim=0A-datadir!$datadir$ac=5Fdelim=0A-sysconfdir!$sysconfdir$= ac=5Fdelim=0A-sharedstatedir!$sharedstatedir$ac=5Fdelim=0A-localstatedir!$l= ocalstatedir$ac=5Fdelim=0A-includedir!$includedir$ac=5Fdelim=0A-oldincluded= ir!$oldincludedir$ac=5Fdelim=0A-docdir!$docdir$ac=5Fdelim=0A-infodir!$infod= ir$ac=5Fdelim=0A-htmldir!$htmldir$ac=5Fdelim=0A-dvidir!$dvidir$ac=5Fdelim= =0A-pdfdir!$pdfdir$ac=5Fdelim=0A-psdir!$psdir$ac=5Fdelim=0A-libdir!$libdir$= ac=5Fdelim=0A-localedir!$localedir$ac=5Fdelim=0A-mandir!$mandir$ac=5Fdelim= =0A-DEFS!$DEFS$ac=5Fdelim=0A-ECHO=5FC!$ECHO=5FC$ac=5Fdelim=0A-ECHO=5FN!$ECH= O=5FN$ac=5Fdelim=0A-ECHO=5FT!$ECHO=5FT$ac=5Fdelim=0A-LIBS!$LIBS$ac=5Fdelim= =0A-build=5Falias!$build=5Falias$ac=5Fdelim=0A-host=5Falias!$host=5Falias$a= c=5Fdelim=0A-target=5Falias!$target=5Falias$ac=5Fdelim=0A-INSTALL=5FPROGRAM= !$INSTALL=5FPROGRAM$ac=5Fdelim=0A-INSTALL=5FSCRIPT!$INSTALL=5FSCRIPT$ac=5Fd= elim=0A-INSTALL=5FDATA!$INSTALL=5FDATA$ac=5Fdelim=0A-am=5F=5Fisrc!$am=5F=5F= isrc$ac=5Fdelim=0A-CYGPATH=5FW!$CYGPATH=5FW$ac=5Fdelim=0A-PACKAGE!$PACKAGE$= ac=5Fdelim=0A-VERSION!$VERSION$ac=5Fdelim=0A-ACLOCAL!$ACLOCAL$ac=5Fdelim=0A= -AUTOCONF!$AUTOCONF$ac=5Fdelim=0A-AUTOMAKE!$AUTOMAKE$ac=5Fdelim=0A-AUTOHEAD= ER!$AUTOHEADER$ac=5Fdelim=0A-MAKEINFO!$MAKEINFO$ac=5Fdelim=0A-install=5Fsh!= $install=5Fsh$ac=5Fdelim=0A-STRIP!$STRIP$ac=5Fdelim=0A-INSTALL=5FSTRIP=5FPR= OGRAM!$INSTALL=5FSTRIP=5FPROGRAM$ac=5Fdelim=0A-mkdir=5Fp!$mkdir=5Fp$ac=5Fde= lim=0A-AWK!$AWK$ac=5Fdelim=0A-SET=5FMAKE!$SET=5FMAKE$ac=5Fdelim=0A-am=5F=5F= leading=5Fdot!$am=5F=5Fleading=5Fdot$ac=5Fdelim=0A-AMTAR!$AMTAR$ac=5Fdelim= =0A-am=5F=5Ftar!$am=5F=5Ftar$ac=5Fdelim=0A-am=5F=5Funtar!$am=5F=5Funtar$ac= =5Fdelim=0A-build!$build$ac=5Fdelim=0A-build=5Fcpu!$build=5Fcpu$ac=5Fdelim= =0A-build=5Fvendor!$build=5Fvendor$ac=5Fdelim=0A-build=5Fos!$build=5Fos$ac= =5Fdelim=0A-host!$host$ac=5Fdelim=0A-host=5Fcpu!$host=5Fcpu$ac=5Fdelim=0A-h= ost=5Fvendor!$host=5Fvendor$ac=5Fdelim=0A-host=5Fos!$host=5Fos$ac=5Fdelim= =0A-CC!$CC$ac=5Fdelim=0A-CFLAGS!$CFLAGS$ac=5Fdelim=0A-LDFLAGS!$LDFLAGS$ac= =5Fdelim=0A-CPPFLAGS!$CPPFLAGS$ac=5Fdelim=0A-ac=5Fct=5FCC!$ac=5Fct=5FCC$ac= =5Fdelim=0A-EXEEXT!$EXEEXT$ac=5Fdelim=0A-OBJEXT!$OBJEXT$ac=5Fdelim=0A-DEPDI= R!$DEPDIR$ac=5Fdelim=0A-am=5F=5Finclude!$am=5F=5Finclude$ac=5Fdelim=0A-am= =5F=5Fquote!$am=5F=5Fquote$ac=5Fdelim=0A-AMDEP=5FTRUE!$AMDEP=5FTRUE$ac=5Fde= lim=0A-AMDEP=5FFALSE!$AMDEP=5FFALSE$ac=5Fdelim=0A-AMDEPBACKSLASH!$AMDEPBACK= SLASH$ac=5Fdelim=0A-CCDEPMODE!$CCDEPMODE$ac=5Fdelim=0A-am=5F=5FfastdepCC=5F= TRUE!$am=5F=5FfastdepCC=5FTRUE$ac=5Fdelim=0A-am=5F=5FfastdepCC=5FFALSE!$am= =5F=5FfastdepCC=5FFALSE$ac=5Fdelim=0A-CPP!$CPP$ac=5Fdelim=0A-GREP!$GREP$ac= =5Fdelim=0A-EGREP!$EGREP$ac=5Fdelim=0A-LIBOBJS!$LIBOBJS$ac=5Fdelim=0A-LTLIB= OBJS!$LTLIBOBJS$ac=5Fdelim=0A-=5FACEOF=0A-=0A- if test `sed -n "s/.*$ac=5F= delim\$/X/p" conf$$subs.sed | grep -c X` =3D 88; then=0A- break=0A- eli= f $ac=5Flast=5Ftry; then=0A- { { echo "$as=5Fme:$LINENO: error: could no= t make $CONFIG=5FSTATUS" >&5=0A-echo "$as=5Fme: error: could not make $CONF= IG=5FSTATUS" >&2;}=0A- { (exit 1); exit 1; }; }=0A- else=0A- ac=5Fdel= im=3D"$ac=5Fdelim!$ac=5Fdelim =5F$ac=5Fdelim!! "=0A- fi=0A-done=0A-=0A-ac= =5Feof=3D`sed -n '/^CEOF[0-9]*$/s/CEOF/0/p' conf$$subs.sed`=0A-if test -n "= $ac=5Feof"; then=0A- ac=5Feof=3D`echo "$ac=5Feof" | sort -nru | sed 1q`=0A= - ac=5Feof=3D`expr $ac=5Feof + 1`=0A-fi=0A-=0A-cat >>$CONFIG=5FSTATUS <<= =5FACEOF=0A-cat >"\$tmp/subs-1.sed" <<\CEOF$ac=5Feof=0A-/@[a-zA-Z=5F][a-zA-= Z=5F0-9]*@/!b end=0A-=5FACEOF=0A-sed '=0A-s/[,\\&]/\\&/g; s/@/@|#=5F!!=5F#|= /g=0A-s/^/s,@/; s/!/@,|#=5F!!=5F#|/=0A-:n=0A-t n=0A-s/'"$ac=5Fdelim"'$/,g/;= t=0A-s/$/\\/; p=0A-N; s/^.*\n//; s/[,\\&]/\\&/g; s/@/@|#=5F!!=5F#|/g; b n= =0A-' >>$CONFIG=5FSTATUS >$= CONFIG=5FSTATUS <<=5FACEOF=0A-:end=0A-s/|#=5F!!=5F#|//g=0A-CEOF$ac=5Feof=0A= -=5FACEOF=0A-=0A-=0A-# VPATH may cause trouble with some makes, so we remov= e $(srcdir),=0A-# ${srcdir} and @srcdir@ from VPATH if srcdir is ".", strip= leading and=0A-# trailing colons and then remove the whole line if VPATH b= ecomes empty=0A-# (actually we leave an empty line to preserve line numbers= ).=0A-if test "x$srcdir" =3D x.; then=0A- ac=5Fvpsub=3D'/^[ ]*VPATH[ ]*= =3D/{=0A-s/:*\$(srcdir):*/:/=0A-s/:*\${srcdir}:*/:/=0A-s/:*@srcdir@:*/:/=0A= -s/^\([^=3D]*=3D[ ]*\):*/\1/=0A-s/:*$//=0A-s/^[^=3D]*=3D[ ]*$//=0A-}'=0A-= fi=0A-=0A-cat >>$CONFIG=5FSTATUS <<\=5FACEOF=0A-fi # test -n "$CONFIG=5FFIL= ES"=0A-=0A-=0A-for ac=5Ftag in :F $CONFIG=5FFILES :H $CONFIG=5FHEADERS = :C $CONFIG=5FCOMMANDS=0A-do=0A- case $ac=5Ftag in=0A- :[FHLC]) ac=5Fmode= =3D$ac=5Ftag; continue;;=0A- esac=0A- case $ac=5Fmode$ac=5Ftag in=0A- :[= FHL]*:*);;=0A- :L* | :C*:*) { { echo "$as=5Fme:$LINENO: error: Invalid tag= $ac=5Ftag." >&5=0A-echo "$as=5Fme: error: Invalid tag $ac=5Ftag." >&2;}=0A= - { (exit 1); exit 1; }; };;=0A- :[FH]-) ac=5Ftag=3D-:-;;=0A- :[FH]*) a= c=5Ftag=3D$ac=5Ftag:$ac=5Ftag.in;;=0A- esac=0A- ac=5Fsave=5FIFS=3D$IFS=0A= - IFS=3D:=0A- set x $ac=5Ftag=0A- IFS=3D$ac=5Fsave=5FIFS=0A- shift=0A- = ac=5Ffile=3D$1=0A- shift=0A-=0A- case $ac=5Fmode in=0A- :L) ac=5Fsource= =3D$1;;=0A- :[FH])=0A- ac=5Ffile=5Finputs=3D=0A- for ac=5Ff=0A- d= o=0A- case $ac=5Ff in=0A- -) ac=5Ff=3D"$tmp/stdin";;=0A- *) = # Look for the file first in the build tree, then in the source tree=0A- #= (if the path is not absolute). The absolute path cannot be DOS-style,=0A-= # because $ac=5Ff cannot contain `:'.=0A- test -f "$ac=5Ff" ||=0A- ca= se $ac=5Ff in=0A- [\\/$]*) false;;=0A- *) test -f "$srcdir/$ac=5Ff" &= & ac=5Ff=3D"$srcdir/$ac=5Ff";;=0A- esac ||=0A- { { echo "$as=5Fme:$LI= NENO: error: cannot find input file: $ac=5Ff" >&5=0A-echo "$as=5Fme: error:= cannot find input file: $ac=5Ff" >&2;}=0A- { (exit 1); exit 1; }; };;=0A= - esac=0A- ac=5Ffile=5Finputs=3D"$ac=5Ffile=5Finputs $ac=5Ff"=0A-= done=0A-=0A- # Let's still pretend it is `configure' which instantia= tes (i.e., don't=0A- # use $as=5Fme), people would be surprised to read:= =0A- # /* config.h. Generated by config.status. */=0A- configure= =5Finput=3D"Generated from "`IFS=3D:=0A- echo $* | sed 's|^[^:]*/||;s|:[^= :]*/|, |g'`" by configure."=0A- if test x"$ac=5Ffile" !=3D x-; then=0A- = configure=5Finput=3D"$ac=5Ffile. $configure=5Finput"=0A- { echo = "$as=5Fme:$LINENO: creating $ac=5Ffile" >&5=0A-echo "$as=5Fme: creating $ac= =5Ffile" >&6;}=0A- fi=0A-=0A- case $ac=5Ftag in=0A- *:-:* | *:-) c= at >"$tmp/stdin";;=0A- esac=0A- ;;=0A- esac=0A-=0A- ac=5Fdir=3D`$as= =5Fdirname -- "$ac=5Ffile" ||=0A-$as=5Fexpr X"$ac=5Ffile" : 'X\(.*[^/]\)//*= [^/][^/]*/*$' \| \=0A- X"$ac=5Ffile" : 'X\(//\)[^/]' \| \=0A- X"$ac=5Ffil= e" : 'X\(//\)$' \| \=0A- X"$ac=5Ffile" : 'X\(/\)' \| . 2>/dev/null ||=0A-e= cho X"$ac=5Ffile" |=0A- sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{=0A- s= //\1/=0A- q=0A- }=0A- /^X\(\/\/\)[^/].*/{=0A- s//\1/=0A- q= =0A- }=0A- /^X\(\/\/\)$/{=0A- s//\1/=0A- q=0A- }=0A- /^X\(\= /\).*/{=0A- s//\1/=0A- q=0A- }=0A- s/.*/./; q'`=0A- { as=5Fdir= =3D"$ac=5Fdir"=0A- case $as=5Fdir in #(=0A- -*) as=5Fdir=3D./$as=5Fdir;;= =0A- esac=0A- test -d "$as=5Fdir" || { $as=5Fmkdir=5Fp && mkdir -p "$as= =5Fdir"; } || {=0A- as=5Fdirs=3D=0A- while :; do=0A- case $as=5F= dir in #(=0A- *\'*) as=5Fqdir=3D`echo "$as=5Fdir" | sed "s/'/'\\\\\\\\= ''/g"`;; #(=0A- *) as=5Fqdir=3D$as=5Fdir;;=0A- esac=0A- as= =5Fdirs=3D"'$as=5Fqdir' $as=5Fdirs"=0A- as=5Fdir=3D`$as=5Fdirname -- "= $as=5Fdir" ||=0A-$as=5Fexpr X"$as=5Fdir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| = \=0A- X"$as=5Fdir" : 'X\(//\)[^/]' \| \=0A- X"$as=5Fdir" : 'X\(//\)$' \| = \=0A- X"$as=5Fdir" : 'X\(/\)' \| . 2>/dev/null ||=0A-echo X"$as=5Fdir" |= =0A- sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{=0A- s//\1/=0A- q=0A-= }=0A- /^X\(\/\/\)[^/].*/{=0A- s//\1/=0A- q=0A- }=0A- /^X\(= \/\/\)$/{=0A- s//\1/=0A- q=0A- }=0A- /^X\(\/\).*/{=0A- s//\= 1/=0A- q=0A- }=0A- s/.*/./; q'`=0A- test -d "$as=5Fdir" && bre= ak=0A- done=0A- test -z "$as=5Fdirs" || eval "mkdir $as=5Fdirs"=0A- = } || test -d "$as=5Fdir" || { { echo "$as=5Fme:$LINENO: error: cannot creat= e directory $as=5Fdir" >&5=0A-echo "$as=5Fme: error: cannot create director= y $as=5Fdir" >&2;}=0A- { (exit 1); exit 1; }; }; }=0A- ac=5Fbuilddir=3D.= =0A-=0A-case "$ac=5Fdir" in=0A-.) ac=5Fdir=5Fsuffix=3D ac=5Ftop=5Fbuilddir= =5Fsub=3D. ac=5Ftop=5Fbuild=5Fprefix=3D ;;=0A-*)=0A- ac=5Fdir=5Fsuffix=3D/= `echo "$ac=5Fdir" | sed 's,^\.[\\/],,'`=0A- # A ".." for each directory in= $ac=5Fdir=5Fsuffix.=0A- ac=5Ftop=5Fbuilddir=5Fsub=3D`echo "$ac=5Fdir=5Fsu= ffix" | sed 's,/[^\\/]*,/..,g;s,/,,'`=0A- case $ac=5Ftop=5Fbuilddir=5Fsub = in=0A- "") ac=5Ftop=5Fbuilddir=5Fsub=3D. ac=5Ftop=5Fbuild=5Fprefix=3D ;;= =0A- *) ac=5Ftop=5Fbuild=5Fprefix=3D$ac=5Ftop=5Fbuilddir=5Fsub/ ;;=0A- e= sac ;;=0A-esac=0A-ac=5Fabs=5Ftop=5Fbuilddir=3D$ac=5Fpwd=0A-ac=5Fabs=5Fbuild= dir=3D$ac=5Fpwd$ac=5Fdir=5Fsuffix=0A-# for backward compatibility:=0A-ac=5F= top=5Fbuilddir=3D$ac=5Ftop=5Fbuild=5Fprefix=0A-=0A-case $srcdir in=0A- .) = # We are building in place.=0A- ac=5Fsrcdir=3D.=0A- ac=5Ftop=5Fsrcdi= r=3D$ac=5Ftop=5Fbuilddir=5Fsub=0A- ac=5Fabs=5Ftop=5Fsrcdir=3D$ac=5Fpwd ;= ;=0A- [\\/]* | ?:[\\/]* ) # Absolute name.=0A- ac=5Fsrcdir=3D$srcdir$a= c=5Fdir=5Fsuffix;=0A- ac=5Ftop=5Fsrcdir=3D$srcdir=0A- ac=5Fabs=5Ftop= =5Fsrcdir=3D$srcdir ;;=0A- *) # Relative name.=0A- ac=5Fsrcdir=3D$ac=5F= top=5Fbuild=5Fprefix$srcdir$ac=5Fdir=5Fsuffix=0A- ac=5Ftop=5Fsrcdir=3D$a= c=5Ftop=5Fbuild=5Fprefix$srcdir=0A- ac=5Fabs=5Ftop=5Fsrcdir=3D$ac=5Fpwd/= $srcdir ;;=0A-esac=0A-ac=5Fabs=5Fsrcdir=3D$ac=5Fabs=5Ftop=5Fsrcdir$ac=5Fdir= =5Fsuffix=0A-=0A-=0A- case $ac=5Fmode in=0A- :F)=0A- #=0A- # CONFIG=5FF= ILE=0A- #=0A-=0A- case $INSTALL in=0A- [\\/$]* | ?:[\\/]* ) ac=5FINSTALL= =3D$INSTALL ;;=0A- *) ac=5FINSTALL=3D$ac=5Ftop=5Fbuild=5Fprefix$INSTALL ;;= =0A- esac=0A- ac=5FMKDIR=5FP=3D$MKDIR=5FP=0A- case $MKDIR=5FP in=0A- [\= \/$]* | ?:[\\/]* ) ;;=0A- */*) ac=5FMKDIR=5FP=3D$ac=5Ftop=5Fbuild=5Fprefix= $MKDIR=5FP ;;=0A- esac=0A-=5FACEOF=0A-=0A-cat >>$CONFIG=5FSTATUS <<\=5FACE= OF=0A-# If the template does not know about datarootdir, expand it.=0A-# FI= XME: This hack should be removed a few years after 2.60.=0A-ac=5Fdatarootdi= r=5Fhack=3D; ac=5Fdatarootdir=5Fseen=3D=0A-=0A-case `sed -n '/datarootdir/ = {=0A- p=0A- q=0A-}=0A-/@datadir@/p=0A-/@docdir@/p=0A-/@infodir@/p=0A-/@lo= caledir@/p=0A-/@mandir@/p=0A-' $ac=5Ffile=5Finputs` in=0A-*datarootdir*) ac= =5Fdatarootdir=5Fseen=3Dyes;;=0A-*@datadir@*|*@docdir@*|*@infodir@*|*@local= edir@*|*@mandir@*)=0A- { echo "$as=5Fme:$LINENO: WARNING: $ac=5Ffile=5Finp= uts seems to ignore the --datarootdir setting" >&5=0A-echo "$as=5Fme: WARNI= NG: $ac=5Ffile=5Finputs seems to ignore the --datarootdir setting" >&2;}=0A= -=5FACEOF=0A-cat >>$CONFIG=5FSTATUS <<=5FACEOF=0A- ac=5Fdatarootdir=5Fhack= =3D'=0A- s&@datadir@&$datadir&g=0A- s&@docdir@&$docdir&g=0A- s&@infodir@= &$infodir&g=0A- s&@localedir@&$localedir&g=0A- s&@mandir@&$mandir&g=0A- = s&\\\${datarootdir}&$datarootdir&g' ;;=0A-esac=0A-=5FACEOF=0A-=0A-# Neutr= alize VPATH when `$srcdir' =3D `.'.=0A-# Shell code in configure.ac might s= et extrasub.=0A-# FIXME: do we really want to maintain this feature?=0A-cat= >>$CONFIG=5FSTATUS <<=5FACEOF=0A- sed "$ac=5Fvpsub=0A-$extrasub=0A-=5FACE= OF=0A-cat >>$CONFIG=5FSTATUS <<\=5FACEOF=0A-:t=0A-/@[a-zA-Z=5F][a-zA-Z=5F0-= 9]*@/!b=0A-s&@configure=5Finput@&$configure=5Finput&;t t=0A-s&@top=5Fbuildd= ir@&$ac=5Ftop=5Fbuilddir=5Fsub&;t t=0A-s&@srcdir@&$ac=5Fsrcdir&;t t=0A-s&@a= bs=5Fsrcdir@&$ac=5Fabs=5Fsrcdir&;t t=0A-s&@top=5Fsrcdir@&$ac=5Ftop=5Fsrcdir= &;t t=0A-s&@abs=5Ftop=5Fsrcdir@&$ac=5Fabs=5Ftop=5Fsrcdir&;t t=0A-s&@builddi= r@&$ac=5Fbuilddir&;t t=0A-s&@abs=5Fbuilddir@&$ac=5Fabs=5Fbuilddir&;t t=0A-s= &@abs=5Ftop=5Fbuilddir@&$ac=5Fabs=5Ftop=5Fbuilddir&;t t=0A-s&@INSTALL@&$ac= =5FINSTALL&;t t=0A-s&@MKDIR=5FP@&$ac=5FMKDIR=5FP&;t t=0A-$ac=5Fdatarootdir= =5Fhack=0A-" $ac=5Ffile=5Finputs | sed -f "$tmp/subs-1.sed" >$tmp/out=0A-= =0A-test -z "$ac=5Fdatarootdir=5Fhack$ac=5Fdatarootdir=5Fseen" &&=0A- { ac= =5Fout=3D`sed -n '/\${datarootdir}/p' "$tmp/out"`; test -n "$ac=5Fout"; } &= &=0A- { ac=5Fout=3D`sed -n '/^[ ]*datarootdir[ ]*:*=3D/p' "$tmp/out"`; t= est -z "$ac=5Fout"; } &&=0A- { echo "$as=5Fme:$LINENO: WARNING: $ac=5Ffile= contains a reference to the variable \`datarootdir'=0A-which seems to be u= ndefined. Please make sure it is defined." >&5=0A-echo "$as=5Fme: WARNING:= $ac=5Ffile contains a reference to the variable \`datarootdir'=0A-which se= ems to be undefined. Please make sure it is defined." >&2;}=0A-=0A- rm -f= "$tmp/stdin"=0A- case $ac=5Ffile in=0A- -) cat "$tmp/out"; rm -f "$tmp/o= ut";;=0A- *) rm -f "$ac=5Ffile"; mv "$tmp/out" $ac=5Ffile;;=0A- esac=0A- = ;;=0A- :H)=0A- #=0A- # CONFIG=5FHEADER=0A- #=0A-=5FACEOF=0A-=0A-# Trans= form confdefs.h into a sed script `conftest.defines', that=0A-# substitutes= the proper values into config.h.in to produce config.h.=0A-rm -f conftest.= defines conftest.tail=0A-# First, append a space to every undef/define line= , to ease matching.=0A-echo 's/$/ /' >conftest.defines=0A-# Then, protect a= gainst being on the right side of a sed subst, or in=0A-# an unquoted here = document, in config.status. If some macros were=0A-# called several times = there might be several #defines for the same=0A-# symbol, which is useless.= But do not sort them, since the last=0A-# AC=5FDEFINE must be honored.=0A= -ac=5Fword=5Fre=3D[=5F$as=5Fcr=5FLetters][=5F$as=5Fcr=5Falnum]*=0A-# These = sed commands are passed to sed as "A NAME B PARAMS C VALUE D", where=0A-# N= AME is the cpp macro being defined, VALUE is the value it is being given.= =0A-# PARAMS is the parameter list in the macro definition--in most cases, = it's=0A-# just an empty string.=0A-ac=5FdA=3D's,^\\([ #]*\\)[^ ]*\\([ ]*= '=0A-ac=5FdB=3D'\\)[ (].*,\\1define\\2'=0A-ac=5FdC=3D' '=0A-ac=5FdD=3D' ,'= =0A-=0A-uniq confdefs.h |=0A- sed -n '=0A- t rset=0A- :rset=0A- s/^[ ]*#[= ]*define[ ][ ]*//=0A- t ok=0A- d=0A- :ok=0A- s/[\\&,]/\\&/g=0A- s/^\('"= $ac=5Fword=5Fre"'\)\(([^()]*)\)[ ]*\(.*\)/ '"$ac=5FdA"'\1'"$ac=5FdB"'\2'"$= {ac=5FdC}"'\3'"$ac=5FdD"'/p=0A- s/^\('"$ac=5Fword=5Fre"'\)[ ]*\(.*\)/'"$ac= =5FdA"'\1'"$ac=5FdB$ac=5FdC"'\2'"$ac=5FdD"'/p=0A- ' >>conftest.defines=0A-= =0A-# Remove the space that was appended to ease matching.=0A-# Then replac= e #undef with comments. This is necessary, for=0A-# example, in the case o= f =5FPOSIX=5FSOURCE, which is predefined and required=0A-# on some systems = where configure will not decide to define it.=0A-# (The regexp can be short= , since the line contains either #define or #undef.)=0A-echo 's/ $//=0A-s,^= [ #]*u.*,/* & */,' >>conftest.defines=0A-=0A-# Break up conftest.defines:= =0A-ac=5Fmax=5Fsed=5Flines=3D50=0A-=0A-# First sed command is: sed -f defi= nes.sed $ac=5Ffile=5Finputs >"$tmp/out1"=0A-# Second one is: sed -f define= s.sed "$tmp/out1" >"$tmp/out2"=0A-# Third one will be: sed -f defines.sed = "$tmp/out2" >"$tmp/out1"=0A-# et cetera.=0A-ac=5Fin=3D'$ac=5Ffile=5Finputs'= =0A-ac=5Fout=3D'"$tmp/out1"'=0A-ac=5Fnxt=3D'"$tmp/out2"'=0A-=0A-while :=0A-= do=0A- # Write a here document:=0A- cat >>$CONFIG=5FSTATUS <<=5FACEOF= =0A- # First, check the format of the line:=0A- cat >"\$tmp/defines.s= ed" <<\\CEOF=0A-/^[ ]*#[ ]*undef[ ][ ]*$ac=5Fword=5Fre[ ]*\$/b def=0A-= /^[ ]*#[ ]*define[ ][ ]*$ac=5Fword=5Fre[( ]/b def=0A-b=0A-:def=0A-=5FA= CEOF=0A- sed ${ac=5Fmax=5Fsed=5Flines}q conftest.defines >>$CONFIG=5FSTATU= S=0A- echo 'CEOF=0A- sed -f "$tmp/defines.sed"' "$ac=5Fin >$ac=5Fout" >= >$CONFIG=5FSTATUS=0A- ac=5Fin=3D$ac=5Fout; ac=5Fout=3D$ac=5Fnxt; ac=5Fnxt= =3D$ac=5Fin=0A- sed 1,${ac=5Fmax=5Fsed=5Flines}d conftest.defines >conftes= t.tail=0A- grep . conftest.tail >/dev/null || break=0A- rm -f conftest.de= fines=0A- mv conftest.tail conftest.defines=0A-done=0A-rm -f conftest.defi= nes conftest.tail=0A-=0A-echo "ac=5Fresult=3D$ac=5Fin" >>$CONFIG=5FSTATUS= =0A-cat >>$CONFIG=5FSTATUS <<\=5FACEOF=0A- if test x"$ac=5Ffile" !=3D x-; = then=0A- echo "/* $configure=5Finput */" >"$tmp/config.h"=0A- cat "$= ac=5Fresult" >>"$tmp/config.h"=0A- if diff $ac=5Ffile "$tmp/config.h" >/= dev/null 2>&1; then=0A- { echo "$as=5Fme:$LINENO: $ac=5Ffile is unchan= ged" >&5=0A-echo "$as=5Fme: $ac=5Ffile is unchanged" >&6;}=0A- else=0A- = rm -f $ac=5Ffile=0A- mv "$tmp/config.h" $ac=5Ffile=0A- fi=0A- = else=0A- echo "/* $configure=5Finput */"=0A- cat "$ac=5Fresult"=0A-= fi=0A- rm -f "$tmp/out12"=0A-# Compute $ac=5Ffile's index in $config=5Fh= eaders.=0A-=5Fam=5Farg=3D$ac=5Ffile=0A-=5Fam=5Fstamp=5Fcount=3D1=0A-for =5F= am=5Fheader in $config=5Fheaders :; do=0A- case $=5Fam=5Fheader in=0A- = $=5Fam=5Farg | $=5Fam=5Farg:* )=0A- break ;;=0A- * )=0A- =5Fam= =5Fstamp=5Fcount=3D`expr $=5Fam=5Fstamp=5Fcount + 1` ;;=0A- esac=0A-done= =0A-echo "timestamp for $=5Fam=5Farg" >`$as=5Fdirname -- "$=5Fam=5Farg" ||= =0A-$as=5Fexpr X"$=5Fam=5Farg" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \=0A- X"$= =5Fam=5Farg" : 'X\(//\)[^/]' \| \=0A- X"$=5Fam=5Farg" : 'X\(//\)$' \| \=0A= - X"$=5Fam=5Farg" : 'X\(/\)' \| . 2>/dev/null ||=0A-echo X"$=5Fam=5Farg" |= =0A- sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{=0A- s//\1/=0A- q=0A-= }=0A- /^X\(\/\/\)[^/].*/{=0A- s//\1/=0A- q=0A- }=0A- /^X\(= \/\/\)$/{=0A- s//\1/=0A- q=0A- }=0A- /^X\(\/\).*/{=0A- s//\= 1/=0A- q=0A- }=0A- s/.*/./; q'`/stamp-h$=5Fam=5Fstamp=5Fcount=0A- ;= ;=0A-=0A- :C) { echo "$as=5Fme:$LINENO: executing $ac=5Ffile commands" >&= 5=0A-echo "$as=5Fme: executing $ac=5Ffile commands" >&6;}=0A- ;;=0A- esac= =0A-=0A-=0A- case $ac=5Ffile$ac=5Fmode in=0A- "depfiles":C) test x"$AMD= EP=5FTRUE" !=3D x"" || for mf in $CONFIG=5FFILES; do=0A- # Strip MF so we = end up with the name of the file.=0A- mf=3D`echo "$mf" | sed -e 's/:.*$//'= `=0A- # Check whether this is an Automake generated Makefile or not.=0A- = # We used to match only the files named `Makefile.in', but=0A- # some peop= le rename them; so instead we look at the file content.=0A- # Grep'ing the= first line is not enough: some people post-process=0A- # each Makefile.in= and add a new line on top of each file to say so.=0A- # Grep'ing the whol= e file is not good either: AIX grep has a line=0A- # limit of 2048, but al= l sed's we know have understand at least 4000.=0A- if sed -n 's,^#.*genera= ted by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then=0A- dirpart= =3D`$as=5Fdirname -- "$mf" ||=0A-$as=5Fexpr X"$mf" : 'X\(.*[^/]\)//*[^/][^/= ]*/*$' \| \=0A- X"$mf" : 'X\(//\)[^/]' \| \=0A- X"$mf" : 'X\(//\)$' \| \= =0A- X"$mf" : 'X\(/\)' \| . 2>/dev/null ||=0A-echo X"$mf" |=0A- sed '/^= X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{=0A- s//\1/=0A- q=0A- }=0A- /^X\= (\/\/\)[^/].*/{=0A- s//\1/=0A- q=0A- }=0A- /^X\(\/\/\)$/{=0A- = s//\1/=0A- q=0A- }=0A- /^X\(\/\).*/{=0A- s//\1/=0A- q=0A= - }=0A- s/.*/./; q'`=0A- else=0A- continue=0A- fi=0A- # Extract t= he definition of DEPDIR, am=5F=5Finclude, and am=5F=5Fquote=0A- # from the= Makefile without running `make'.=0A- DEPDIR=3D`sed -n 's/^DEPDIR =3D //p'= < "$mf"`=0A- test -z "$DEPDIR" && continue=0A- am=5F=5Finclude=3D`sed -n= 's/^am=5F=5Finclude =3D //p' < "$mf"`=0A- test -z "am=5F=5Finclude" && co= ntinue=0A- am=5F=5Fquote=3D`sed -n 's/^am=5F=5Fquote =3D //p' < "$mf"`=0A-= # When using ansi2knr, U may be empty or an underscore; expand it=0A- U= =3D`sed -n 's/^U =3D //p' < "$mf"`=0A- # Find all dependency output files,= they are included files with=0A- # $(DEPDIR) in their names. We invoke s= ed twice because it is the=0A- # simplest approach to changing $(DEPDIR) t= o its actual value in the=0A- # expansion.=0A- for file in `sed -n "=0A- = s/^$am=5F=5Finclude $am=5F=5Fquote\(.*(DEPDIR).*\)$am=5F=5Fquote"'$/\1/p= ' <"$mf" | \=0A- sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'= /g'`; do=0A- # Make sure the directory exists.=0A- test -f "$dirpart/= $file" && continue=0A- fdir=3D`$as=5Fdirname -- "$file" ||=0A-$as=5Fexpr= X"$file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \=0A- X"$file" : 'X\(//\)[^/]'= \| \=0A- X"$file" : 'X\(//\)$' \| \=0A- X"$file" : 'X\(/\)' \| . 2>/dev/= null ||=0A-echo X"$file" |=0A- sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{=0A= - s//\1/=0A- q=0A- }=0A- /^X\(\/\/\)[^/].*/{=0A- s//\1/=0A-= q=0A- }=0A- /^X\(\/\/\)$/{=0A- s//\1/=0A- q=0A- }=0A- = /^X\(\/\).*/{=0A- s//\1/=0A- q=0A- }=0A- s/.*/./; q'`=0A- { = as=5Fdir=3D$dirpart/$fdir=0A- case $as=5Fdir in #(=0A- -*) as=5Fdir=3D./$= as=5Fdir;;=0A- esac=0A- test -d "$as=5Fdir" || { $as=5Fmkdir=5Fp && mkdir= -p "$as=5Fdir"; } || {=0A- as=5Fdirs=3D=0A- while :; do=0A- cas= e $as=5Fdir in #(=0A- *\'*) as=5Fqdir=3D`echo "$as=5Fdir" | sed "s/'/'= \\\\\\\\''/g"`;; #(=0A- *) as=5Fqdir=3D$as=5Fdir;;=0A- esac=0A- = as=5Fdirs=3D"'$as=5Fqdir' $as=5Fdirs"=0A- as=5Fdir=3D`$as=5Fdirnam= e -- "$as=5Fdir" ||=0A-$as=5Fexpr X"$as=5Fdir" : 'X\(.*[^/]\)//*[^/][^/]*/*= $' \| \=0A- X"$as=5Fdir" : 'X\(//\)[^/]' \| \=0A- X"$as=5Fdir" : 'X\(//\)= $' \| \=0A- X"$as=5Fdir" : 'X\(/\)' \| . 2>/dev/null ||=0A-echo X"$as=5Fdi= r" |=0A- sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{=0A- s//\1/=0A- q= =0A- }=0A- /^X\(\/\/\)[^/].*/{=0A- s//\1/=0A- q=0A- }=0A- /= ^X\(\/\/\)$/{=0A- s//\1/=0A- q=0A- }=0A- /^X\(\/\).*/{=0A- = s//\1/=0A- q=0A- }=0A- s/.*/./; q'`=0A- test -d "$as=5Fdir" &&= break=0A- done=0A- test -z "$as=5Fdirs" || eval "mkdir $as=5Fdirs"= =0A- } || test -d "$as=5Fdir" || { { echo "$as=5Fme:$LINENO: error: cannot= create directory $as=5Fdir" >&5=0A-echo "$as=5Fme: error: cannot create di= rectory $as=5Fdir" >&2;}=0A- { (exit 1); exit 1; }; }; }=0A- # echo "c= reating $dirpart/$file"=0A- echo '# dummy' > "$dirpart/$file"=0A- done= =0A-done=0A- ;;=0A- "default":C) echo timestamp > stamp-h ;;=0A-=0A- es= ac=0A-done # for ac=5Ftag=0A-=0A-=0A-{ (exit 0); exit 0; }=0A-=5FACEOF=0A-c= hmod +x $CONFIG=5FSTATUS=0A-ac=5Fclean=5Ffiles=3D$ac=5Fclean=5Ffiles=5Fsave= =0A-=0A-=0A-# configure is writing to config.log, and then calls config.sta= tus.=0A-# config.status does its own redirection, appending to config.log.= =0A-# Unfortunately, on DOS this fails, as config.log is still kept open=0A= -# by configure, so config.status won't be able to write to it; its=0A-# ou= tput is simply discarded. So we exec the FD to /dev/null,=0A-# effectively= closing config.log, so it can be properly (re)opened and=0A-# appended to = by config.status. When coming back to configure, we=0A-# need to make the = FD available again.=0A-if test "$no=5Fcreate" !=3D yes; then=0A- ac=5Fcs= =5Fsuccess=3D:=0A- ac=5Fconfig=5Fstatus=5Fargs=3D=0A- test "$silent" =3D = yes &&=0A- ac=5Fconfig=5Fstatus=5Fargs=3D"$ac=5Fconfig=5Fstatus=5Fargs -= -quiet"=0A- exec 5>/dev/null=0A- $SHELL $CONFIG=5FSTATUS $ac=5Fconfig=5Fs= tatus=5Fargs || ac=5Fcs=5Fsuccess=3Dfalse=0A- exec 5>>config.log=0A- # Us= e ||, not &&, to avoid exiting from the if with $? =3D 1, which=0A- # woul= d make configure fail if this is the last instruction.=0A- $ac=5Fcs=5Fsucc= ess || { (exit 1); exit 1; }=0A-fi=0A-=0Adiff --git a/testcases/kernel/fs/e= xt4-new-features/ffsb-6.0-rc2/configure.in b/testcases/kernel/fs/ext4-new-f= eatures/ffsb-6.0-rc2/configure.in=0Adeleted file mode 100644=0Aindex 9ce49d= 2..0000000=0A--- a/testcases/kernel/fs/ext4-new-features/ffsb-6.0-rc2/confi= gure.in=0A+++ /dev/null=0A@@ -1,49 +0,0 @@=0A-dnl Process this file with au= toconf to produce a configure script.=0A-AC=5FINIT(main.c)=0A-AM=5FINIT=5FA= UTOMAKE(ffsb, 6.0-RC2)=0A-=0A-AM=5FCONFIG=5FHEADER(config.h)=0A-AC=5FCANONI= CAL=5FHOST=0A-=0A-dnl need to define =5FALL=5FSOURCE and =5FTHREAD=5FSAFE o= n AIX=0A-AC=5FAIX=0A-=0A-case "${host}" in=0A- *aix*)=0A- CFLAGS=3D"${C= FLAGS} -D=5FTHREAD=5FSAFE"=0A- ;;=0A- *linux*)=0A- CFLAGS=3D"${CFLAG= S} -D=5FREENTRANT"=0A- ;;=0A- *)=0A- echo "detected unknown platform= : ${host} : compiles may fail"=0A- CFLAGS=3D"${CFLAGS} -D=5FREENTRANT"= =0A- ;;=0A-esac=0A-=0A-dnl Checks for programs.=0A-AC=5FPROG=5FCC=0A-=0A= -dnl Checks for libraries.=0A-dnl Replace `main' with a function in -lm:=0A= -AC=5FCHECK=5FLIB(m, main)=0A-dnl Replace `main' with a function in -lpthre= ad:=0A-AC=5FCHECK=5FLIB(pthread, main)=0A-=0A-=0A-dnl Checks for header fil= es.=0A-AC=5FHEADER=5FSTDC=0A-AC=5FHEADER=5FSYS=5FWAIT=0A-AC=5FCHECK=5FHEADE= RS(pthread.h fcntl.h limits.h stdint.h sys/time.h unistd.h sys/vfs.h sys/li= mits.h)=0A-=0A-dnl Checks for typedefs, structures, and compiler characteri= stics.=0A-AC=5FC=5FCONST=0A-AC=5FHEADER=5FTIME=0A-=0A-dnl Checks for librar= y functions.=0A-AC=5FFUNC=5FSETVBUF=5FREVERSED=0A-AC=5FCHECK=5FFUNCS(system= gettimeofday mkdir strerror open64 stat64 fseeko64 lrand48=5Fr srand48=5Fr= )=0A-=0A-AC=5FSUBST(CFLAGS)=0A-AC=5FSUBST(CC)=0A-AC=5FOUTPUT(Makefile, echo= timestamp > stamp-h)=0Adiff --git a/testcases/kernel/fs/ext4-new-features/= ffsb-6.0-rc2/depcomp b/testcases/kernel/fs/ext4-new-features/ffsb-6.0-rc2/d= epcomp=0Adeleted file mode 100755=0Aindex aea3d00..0000000=0A--- a/testcase= s/kernel/fs/ext4-new-features/ffsb-6.0-rc2/depcomp=0A+++ /dev/null=0A@@ -1,= 472 +0,0 @@=0A-#! /bin/sh=0A-=0A-# depcomp - compile a program generating d= ependencies as side-effects=0A-# Copyright 1999, 2000 Free Software Foundat= ion, Inc.=0A-=0A-# This program is free software; you can redistribute it a= nd/or modify=0A-# it under the terms of the GNU General Public License as p= ublished by=0A-# the Free Software Foundation; either version 2, or (at you= r option)=0A-# any later version.=0A-=0A-# This program is distributed in t= he hope that it will be useful,=0A-# but WITHOUT ANY WARRANTY; without even= the implied warranty of=0A-# MERCHANTABILITY or FITNESS FOR A PARTICULAR P= URPOSE. See the=0A-# GNU General Public License for more details.=0A-=0A-#= You should have received a copy of the GNU General Public License=0A-# alo= ng with this program; if not, write to the Free Software=0A-# Foundation, I= nc., 59 Temple Place - Suite 330, Boston, MA=0A-# 02111-1307, USA.=0A-=0A-#= As a special exception to the GNU General Public License, if you=0A-# dist= ribute this file as part of a program that contains a=0A-# configuration sc= ript generated by Autoconf, you may include it under=0A-# the same distribu= tion terms that you use for the rest of that program.=0A-=0A-# Originally w= ritten by Alexandre Oliva .=0A-=0A-if test -z "$depmo= de" || test -z "$source" || test -z "$object"; then=0A- echo "depcomp: Var= iables source, object and depmode must be set" 1>&2=0A- exit 1=0A-fi=0A-# = `libtool' can also be set to `yes' or `no'.=0A-=0A-if test -z "$depfile"; t= hen=0A- base=3D`echo "$object" | sed -e 's,^.*/,,' -e 's,\.\([^.]*\)$,.P\= 1,'`=0A- dir=3D`echo "$object" | sed 's,/.*$,/,'`=0A- if test "$dir" = =3D "$object"; then=0A- dir=3D=0A- fi=0A- # FIXME: should be =5Fde= ps on DOS.=0A- depfile=3D"$dir.deps/$base"=0A-fi=0A-=0A-tmpdepfile=3D${tm= pdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`}=0A-=0A-rm -f "$tmp= depfile"=0A-=0A-# Some modes work just like other modes, but use different = flags. We=0A-# parameterize here, but still list the modes in the big case= below,=0A-# to make depend.m4 easier to write. Note that we *cannot* use = a case=0A-# here, because this file can only contain one case statement.=0A= -if test "$depmode" =3D hp; then=0A- # HP compiler uses -M and no extra ar= g.=0A- gccflag=3D-M=0A- depmode=3Dgcc=0A-fi=0A-=0A-if test "$depmode" =3D= dashXmstdout; then=0A- # This is just like dashmstdout with a different = argument.=0A- dashmflag=3D-xM=0A- depmode=3Ddashmstdout=0A-fi=0A-=0A-ca= se "$depmode" in=0A-gcc3)=0A-## gcc 3 implements dependency tracking that d= oes exactly what=0A-## we want. Yay! Note: for some reason libtool 1.4 do= esn't like=0A-## it if -MD -MP comes after the -MF stuff. Hmm.=0A- "$@" -= MT "$object" -MD -MP -MF "$tmpdepfile"=0A- stat=3D$?=0A- if test $stat -e= q 0; then :=0A- else=0A- rm -f "$tmpdepfile"=0A- exit $stat=0A- fi= =0A- mv "$tmpdepfile" "$depfile"=0A- ;;=0A-=0A-gcc)=0A-## There are vario= us ways to get dependency output from gcc. Here's=0A-## why we pick this r= ather obscure method:=0A-## - Don't want to use -MD because we'd like the d= ependencies to end=0A-## up in a subdir. Having to rename by hand is ugl= y.=0A-## (We might end up doing this anyway to support other compilers.)= =0A-## - The DEPENDENCIES=5FOUTPUT environment variable makes gcc act like= =0A-## -MM, not -M (despite what the docs say).=0A-## - Using -M directly= means running the compiler twice (even worse=0A-## than renaming).=0A- = if test -z "$gccflag"; then=0A- gccflag=3D-MD,=0A- fi=0A- "$@" -Wp,"$g= ccflag$tmpdepfile"=0A- stat=3D$?=0A- if test $stat -eq 0; then :=0A- els= e=0A- rm -f "$tmpdepfile"=0A- exit $stat=0A- fi=0A- rm -f "$depfile= "=0A- echo "$object : \\" > "$depfile"=0A- alpha=3DABCDEFGHIJKLMNOPQRSTUV= WXYZabcdefghijklmnopqrstuvwxyz=0A-## The second -e expression handles DOS-s= tyle file names with drive letters.=0A- sed -e 's/^[^:]*: / /' \=0A- = -e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile"=0A-## This ne= xt piece of magic avoids the `deleted header file' problem.=0A-## The probl= em is that when a header file which appears in a .P file=0A-## is deleted, = the dependency causes make to die (because there is=0A-## typically no way = to rebuild the header). We avoid this by adding=0A-## dummy dependencies f= or each header file. Too bad gcc doesn't do=0A-## this for us directly.=0A= - tr ' ' '=0A-' < "$tmpdepfile" |=0A-## Some versions of gcc put a space b= efore the `:'. On the theory=0A-## that the space means something, we add = a space to the output as=0A-## well.=0A-## Some versions of the HPUX 10.20 = sed can't process this invocation=0A-## correctly. Breaking it into two se= d invocations is a workaround.=0A- sed -e 's/^\\$//' -e '/^$/d' -e '/:$/= d' | sed -e 's/$/ :/' >> "$depfile"=0A- rm -f "$tmpdepfile"=0A- ;;=0A-=0A= -hp)=0A- # This case exists only to let depend.m4 do its work. It works b= y=0A- # looking at the text of this script. This case will never be run,= =0A- # since it is checked for above.=0A- exit 1=0A- ;;=0A-=0A-sgi)=0A- = if test "$libtool" =3D yes; then=0A- "$@" "-Wp,-MDupdate,$tmpdepfile"= =0A- else=0A- "$@" -MDupdate "$tmpdepfile"=0A- fi=0A- stat=3D$?=0A- = if test $stat -eq 0; then :=0A- else=0A- rm -f "$tmpdepfile"=0A- exi= t $stat=0A- fi=0A- rm -f "$depfile"=0A-=0A- if test -f "$tmpdepfile"; th= en # yes, the sourcefile depend on other files=0A- echo "$object : \\" = > "$depfile"=0A-=0A- # Clip off the initial element (the dependent). Do= n't try to be=0A- # clever and replace this with sed code, as IRIX sed w= on't handle=0A- # lines with more than a fixed number of characters (409= 6 in=0A- # IRIX 6.2 sed, 8192 in IRIX 6.5). We also remove comment line= s;=0A- # the IRIX cc adds comments like `#:fec' to the end of the=0A- = # dependency line.=0A- tr ' ' '=0A-' < "$tmpdepfile" \=0A- | sed -e = 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' | \=0A- tr '=0A-' ' ' >> $depfil= e=0A- echo >> $depfile=0A-=0A- # The second pass generates a dummy en= try for each header file.=0A- tr ' ' '=0A-' < "$tmpdepfile" \=0A- | se= d -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \=0A- >> $depfil= e=0A- else=0A- # The sourcefile does not contain any dependencies, so j= ust=0A- # store a dummy comment line, to avoid errors with the Makefile= =0A- # "include basename.Plo" scheme.=0A- echo "#dummy" > "$depfile"= =0A- fi=0A- rm -f "$tmpdepfile"=0A- ;;=0A-=0A-aix)=0A- # The C for AIX = Compiler uses -M and outputs the dependencies=0A- # in a .u file. This fi= le always lives in the current directory.=0A- # Also, the AIX compiler put= s `$object:' at the start of each line;=0A- # $object doesn't have directo= ry information.=0A- stripped=3D`echo "$object" | sed -e 's,^.*/,,' -e 's/\= (.*\)\..*$/\1/'`=0A- tmpdepfile=3D"$stripped.u"=0A- outname=3D"$stripped.= o"=0A- if test "$libtool" =3D yes; then=0A- "$@" -Wc,-M=0A- else=0A- = "$@" -M=0A- fi=0A-=0A- stat=3D$?=0A- if test $stat -eq 0; then :=0A- = else=0A- rm -f "$tmpdepfile"=0A- exit $stat=0A- fi=0A-=0A- if test = -f "$tmpdepfile"; then=0A- # Each line is of the form `foo.o: dependent.= h'.=0A- # Do two passes, one to just change these to=0A- # `$object: = dependent.h' and one to simply `dependent.h:'.=0A- sed -e "s,^$outname:,= $object :," < "$tmpdepfile" > "$depfile"=0A- sed -e "s,^$outname: \(.*\)= $,\1:," < "$tmpdepfile" >> "$depfile"=0A- else=0A- # The sourcefile doe= s not contain any dependencies, so just=0A- # store a dummy comment line= , to avoid errors with the Makefile=0A- # "include basename.Plo" scheme.= =0A- echo "#dummy" > "$depfile"=0A- fi=0A- rm -f "$tmpdepfile"=0A- ;;= =0A-=0A-icc)=0A- # Intel's C compiler understands `-MD -MF file'. However= on=0A- # icc -MD -MF foo.d -c -o sub/foo.o sub/foo.c=0A- # ICC 7.0 wi= ll fill foo.d with something like=0A- # foo.o: sub/foo.c=0A- # foo.= o: sub/foo.h=0A- # which is wrong. We want:=0A- # sub/foo.o: sub/foo.= c=0A- # sub/foo.o: sub/foo.h=0A- # sub/foo.c:=0A- # sub/foo.h:= =0A- # ICC 7.1 will output=0A- # foo.o: sub/foo.c sub/foo.h=0A- # and= will wrap long lines using \ :=0A- # foo.o: sub/foo.c ... \=0A- # = sub/foo.h ... \=0A- # ...=0A-=0A- "$@" -MD -MF "$tmpdepfile"=0A- st= at=3D$?=0A- if test $stat -eq 0; then :=0A- else=0A- rm -f "$tmpdepfil= e"=0A- exit $stat=0A- fi=0A- rm -f "$depfile"=0A- # Each line is of t= he form `foo.o: dependent.h',=0A- # or `foo.o: dep1.h dep2.h \', or ` dep3= .h dep4.h \'.=0A- # Do two passes, one to just change these to=0A- # `$ob= ject: dependent.h' and one to simply `dependent.h:'.=0A- sed "s,^[^:]*:,$o= bject :," < "$tmpdepfile" > "$depfile"=0A- # Some versions of the HPUX 10.= 20 sed can't process this invocation=0A- # correctly. Breaking it into tw= o sed invocations is a workaround.=0A- sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//= ;/^$/d;/:$/d' < "$tmpdepfile" |=0A- sed -e 's/$/ :/' >> "$depfile"=0A- = rm -f "$tmpdepfile"=0A- ;;=0A-=0A-tru64)=0A- # The Tru64 compiler uses -= MD to generate dependencies as a side=0A- # effect. `cc -MD -o foo.o ...= ' puts the dependencies into `foo.o.d'.=0A- # At least on Alpha/Redhat 6.= 1, Compaq CCC V6.2-504 seems to put=0A- # dependencies in `foo.d' instead= , so we check for that too.=0A- # Subdirectories are respected.=0A- dir= =3D`echo "$object" | sed -e 's|/[^/]*$|/|'`=0A- test "x$dir" =3D "x$objec= t" && dir=3D=0A- base=3D`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//'= -e 's/\.lo$//'`=0A-=0A- if test "$libtool" =3D yes; then=0A- tmpdep= file1=3D"$dir.libs/$base.lo.d"=0A- tmpdepfile2=3D"$dir.libs/$base.d"= =0A- "$@" -Wc,-MD=0A- else=0A- tmpdepfile1=3D"$dir$base.o.d"=0A= - tmpdepfile2=3D"$dir$base.d"=0A- "$@" -MD=0A- fi=0A-=0A- sta= t=3D$?=0A- if test $stat -eq 0; then :=0A- else=0A- rm -f "$tmpdep= file1" "$tmpdepfile2"=0A- exit $stat=0A- fi=0A-=0A- if test -f "$t= mpdepfile1"; then=0A- tmpdepfile=3D"$tmpdepfile1"=0A- else=0A- = tmpdepfile=3D"$tmpdepfile2"=0A- fi=0A- if test -f "$tmpdepfile"; then= =0A- sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile"=0A= - # That's a space and a tab in the [].=0A- sed -e 's,^.*\.[a-z]*= :[ ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile"=0A- else=0A- ech= o "#dummy" > "$depfile"=0A- fi=0A- rm -f "$tmpdepfile"=0A- ;;=0A-=0A-= #nosideeffect)=0A- # This comment above is used by automake to tell side-e= ffect=0A- # dependency tracking mechanisms from slower ones.=0A-=0A-dashms= tdout)=0A- # Important note: in order to support this mode, a compiler *mu= st*=0A- # always write the proprocessed file to stdout, regardless of -o.= =0A- "$@" || exit $?=0A-=0A- # Remove the call to Libtool.=0A- if test "= $libtool" =3D yes; then=0A- while test $1 !=3D '--mode=3Dcompile'; do=0A= - shift=0A- done=0A- shift=0A- fi=0A-=0A- # Remove `-o $object= '.=0A- IFS=3D" "=0A- for arg=0A- do=0A- case $arg in=0A- -o)=0A- = shift=0A- ;;=0A- $object)=0A- shift=0A- ;;=0A- *)= =0A- set fnord "$@" "$arg"=0A- shift # fnord=0A- shift # $ar= g=0A- ;;=0A- esac=0A- done=0A-=0A- test -z "$dashmflag" && dashmf= lag=3D-M=0A- # Require at least two characters before searching for `:'=0A= - # in the target name. This is to cope with DOS-style filenames:=0A- # = a dependency such as `c:/foo/bar' could be seen as target `c' otherwise.=0A= - "$@" $dashmflag |=0A- sed 's:^[ ]*[^: ][^:][^:]*\:[ ]*:'"$object"= '\: :' > "$tmpdepfile"=0A- rm -f "$depfile"=0A- cat < "$tmpdepfile" > "$d= epfile"=0A- tr ' ' '=0A-' < "$tmpdepfile" | \=0A-## Some versions of the H= PUX 10.20 sed can't process this invocation=0A-## correctly. Breaking it i= nto two sed invocations is a workaround.=0A- sed -e 's/^\\$//' -e '/^$/d= ' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"=0A- rm -f "$tmpdepfile"=0A- = ;;=0A-=0A-dashXmstdout)=0A- # This case only exists to satisfy depend.m4.= It is never actually=0A- # run, as this mode is specially recognized in = the preamble.=0A- exit 1=0A- ;;=0A-=0A-makedepend)=0A- "$@" || exit $?= =0A- # Remove any Libtool call=0A- if test "$libtool" =3D yes; then=0A- = while test $1 !=3D '--mode=3Dcompile'; do=0A- shift=0A- done=0A- = shift=0A- fi=0A- # X makedepend=0A- shift=0A- cleared=3Dno=0A- for = arg in "$@"; do=0A- case $cleared in=0A- no)=0A- set ""; shift= =0A- cleared=3Dyes ;;=0A- esac=0A- case "$arg" in=0A- -D*|-I*= )=0A- set fnord "$@" "$arg"; shift ;;=0A- # Strip any option that m= akedepend may not understand. Remove=0A- # the object too, otherwise ma= kedepend will parse it as a source file.=0A- -*|$object)=0A- ;;=0A-= *)=0A- set fnord "$@" "$arg"; shift ;;=0A- esac=0A- done=0A- = obj=5Fsuffix=3D"`echo $object | sed 's/^.*\././'`"=0A- touch "$tmpdepfile"= =0A- ${MAKEDEPEND-makedepend} -o"$obj=5Fsuffix" -f"$tmpdepfile" "$@"=0A- = rm -f "$depfile"=0A- cat < "$tmpdepfile" > "$depfile"=0A- sed '1,2d' "$tm= pdepfile" | tr ' ' '=0A-' | \=0A-## Some versions of the HPUX 10.20 sed can= 't process this invocation=0A-## correctly. Breaking it into two sed invoc= ations is a workaround.=0A- sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | se= d -e 's/$/ :/' >> "$depfile"=0A- rm -f "$tmpdepfile" "$tmpdepfile".bak=0A-= ;;=0A-=0A-cpp)=0A- # Important note: in order to support this mode, a co= mpiler *must*=0A- # always write the proprocessed file to stdout.=0A- "$@= " || exit $?=0A-=0A- # Remove the call to Libtool.=0A- if test "$libtool"= =3D yes; then=0A- while test $1 !=3D '--mode=3Dcompile'; do=0A- sh= ift=0A- done=0A- shift=0A- fi=0A-=0A- # Remove `-o $object'.=0A- I= FS=3D" "=0A- for arg=0A- do=0A- case $arg in=0A- -o)=0A- shift= =0A- ;;=0A- $object)=0A- shift=0A- ;;=0A- *)=0A- = set fnord "$@" "$arg"=0A- shift # fnord=0A- shift # $arg=0A- = ;;=0A- esac=0A- done=0A-=0A- "$@" -E |=0A- sed -n '/^# [0-9][0-9]*= "\([^"]*\)".*/ s:: \1 \\:p' |=0A- sed '$ s: \\$::' > "$tmpdepfile"=0A- = rm -f "$depfile"=0A- echo "$object : \\" > "$depfile"=0A- cat < "$tmpdep= file" >> "$depfile"=0A- sed < "$tmpdepfile" '/^$/d;s/^ //;s/ \\$//;s/$/ :/= ' >> "$depfile"=0A- rm -f "$tmpdepfile"=0A- ;;=0A-=0A-msvisualcpp)=0A- #= Important note: in order to support this mode, a compiler *must*=0A- # al= ways write the proprocessed file to stdout, regardless of -o,=0A- # becaus= e we must use -o when running libtool.=0A- "$@" || exit $?=0A- IFS=3D" "= =0A- for arg=0A- do=0A- case "$arg" in=0A- "-Gm"|"/Gm"|"-Gi"|"/Gi"|= "-ZI"|"/ZI")=0A- set fnord "$@"=0A- shift=0A- shift=0A- ;;=0A- *)=0A- se= t fnord "$@" "$arg"=0A- shift=0A- shift=0A- ;;=0A- esac=0A- done=0A- "= $@" -E |=0A- sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::echo "`cygpath -u= \\"\1\\"`":p' | sort | uniq > "$tmpdepfile"=0A- rm -f "$depfile"=0A- ech= o "$object : \\" > "$depfile"=0A- . "$tmpdepfile" | sed 's% %\\ %g' | sed = -n '/^\(.*\)$/ s:: \1 \\:p' >> "$depfile"=0A- echo " " >> "$depfile"=0A- = . "$tmpdepfile" | sed 's% %\\ %g' | sed -n '/^\(.*\)$/ s::\1\::p' >> "$depf= ile"=0A- rm -f "$tmpdepfile"=0A- ;;=0A-=0A-none)=0A- exec "$@"=0A- ;;= =0A-=0A-*)=0A- echo "Unknown depmode $depmode" 1>&2=0A- exit 1=0A- ;;=0A= -esac=0A-=0A-exit 0=0Adiff --git a/testcases/kernel/fs/ext4-new-features/ff= sb-6.0-rc2/examples/profile=5Feverything b/testcases/kernel/fs/ext4-new-fea= tures/ffsb-6.0-rc2/examples/profile=5Feverything=0Adeleted file mode 100644= =0Aindex 67972e1..0000000=0A--- a/testcases/kernel/fs/ext4-new-features/ffs= b-6.0-rc2/examples/profile=5Feverything=0A+++ /dev/null=0A@@ -1,119 +0,0 @@= =0A-directio =3D 0=0A-time =3D 10=0A-=0A-[filesystem]=0A- location =3D /mn= t/test1=0A-=0A- num=5Fdirs =3D 100=0A-=0A- size=5Fweight 4k 33=0A- size=5Fw= eight 8k 21=0A- size=5Fweight 16k 13=0A- size=5Fweight 32k 10=0A- size=5Fwe= ight 64k 8=0A- size=5Fweight 128k 5=0A- size=5Fweight 256k 4=0A- size=5Fwei= ght 512k 3=0A- size=5Fweight 8m 2=0A- size=5Fweight 32m 1=0A-# size=5Fweigh= t 1g 1=0A-=0A-# min=5Ffilesize =3D 4k=0A-# max=5Ffilesize =3D 10m=0A-=0A-# = num=5Ffiles =3D 0=0A- init=5Fsize =3D 100m=0A-# init=5Fsize =3D 6GB=0A-# in= it=5Fsize =3D 1gb=0A-# init=5Futil =3D 0.002=0A-=0A- agefs =3D 0=0A- [thre= adgroup]=0A- num=5Fthreads =3D 10=0A- write=5Fsize =3D 400=0A- write=5Fb= locksize =3D 1024=0A- create=5Fweight =3D 10=0A- append=5Fweight =3D 10= =0A- delete=5Fweight =3D 1=0A- [end]=0A- desired=5Futil =3D 0.005=0A-=0A-= =0A-[end]=0A-=0A-#[filesystem]=0A-# location =3D /mnt/test1=0A-# clone =3D= /mnt/test2=0A-#[end]=0A-=0A-[threadgroup]=0A- num=5Fthreads =3D 4=0A-=0A-#= bindfs =3D /mnt/test1=0A-=0A- append=5Fweight =3D 1=0A- append=5Ffsync= =5Fweight =3D 1=0A- stat=5Fweight =3D 1=0A-# write=5Fweight =3D 1=0A-# wr= ite=5Ffsync=5Fweight =3D 1=0A-# read=5Fweight =3D 1=0A- create=5Fweight = =3D 1=0A- create=5Ffsync=5Fweight =3D 1=0A- delete=5Fweight =3D 1=0A- read= all=5Fweight =3D 1=0A- writeall=5Fweight =3D 1=0A- writeall=5Ffsync=5Fwei= ght =3D 1=0A- open=5Fclose=5Fweight =3D 1=0A-=0A- read=5Frandom =3D 0=0A- w= rite=5Frandom =3D 0=0A-=0A- write=5Fsize =3D 40k=0A- write=5Fblocksize =3D = 4k=0A- read=5Fsize =3D 40k=0A- read=5Fblocksize =3D 4k=0A-=0A- op=5Fdelay = =3D 0=0A-=0A- [stats]=0A- enable=5Fstats =3D 1=0A- enable=5Frange =3D 0= =0A-=0A-# ignore =3D close=0A-# ignore =3D open=0A-# ignore =3D lseek= =0A-# ignore =3D write=0A-# ignore =3D read=0A-=0A- msec=5Frange 0.00 = 0.01=0A- msec=5Frange 0.01 0.02=0A- msec=5Frange 0.02 0.03=0A- msec=5Fra= nge 0.03 0.04=0A- msec=5Frange 0.04 0.05=0A- msec=5Frange 0.05 0.1=0A- m= sec=5Frange 0.1 0.2=0A- msec=5Frange 0.2 0.5=0A- msec=5Frange 0.5 1.0=0A-= msec=5Frange 1.0 2.0=0A- msec=5Frange 2.0 3.0=0A- msec=5Frange 3.0 4.0= =0A- msec=5Frange 4.0 5.0=0A- msec=5Frange 5.0 10.0=0A- msec=5Frange 10.= 0 10000.0=0A- [end]=0A-[end]=0A-=0A-#[threadgroup]=0A-# num=5Fthreads =3D 1= =0A-#=0A-# readall=5Fweight =3D 0=0A-# writeall=5Fweight =3D 0=0A-# create= dir=5Fweight =3D 0=0A-#=0A-# write=5Fsize =3D 4096=0A-# write=5Fblocks= ize =3D 4096=0A-# read=5Fsize =3D 4096=0A-# read=5Fblocksize =3D 409= 6=0A-#=0A-# op=5Fdelay =3D 12=0A-#[end]=0Adiff --git a/testcases/kernel/fs/= ext4-new-features/ffsb-6.0-rc2/ffsb.h b/testcases/kernel/fs/ext4-new-featur= es/ffsb-6.0-rc2/ffsb.h=0Adeleted file mode 100644=0Aindex 25a9a10..0000000= =0A--- a/testcases/kernel/fs/ext4-new-features/ffsb-6.0-rc2/ffsb.h=0A+++ /d= ev/null=0A@@ -1,105 +0,0 @@=0A-/*=0A- * Copyright (c) International Busin= ess Machines Corp., 2001-2004=0A- *=0A- * This program is free software; = you can redistribute it and/or modify=0A- * it under the terms of the GN= U General Public License as published by=0A- * the Free Software Foundati= on; either version 2 of the License, or=0A- * (at your option) any later = version.=0A- *=0A- * This program is distributed in the hope that it will= be useful,=0A- * but WITHOUT ANY WARRANTY; without even the implied war= ranty of=0A- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See= =0A- * the GNU General Public License for more details.=0A- *=0A- * You= should have received a copy of the GNU General Public License=0A- * alon= g with this program; if not, write to the Free Software=0A- * Foundation= , Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA=0A- */= =0A-#ifndef =5FFFSB=5FH=5F=0A-#define =5FFFSB=5FH=5F=0A-=0A-#include =0A-#include =0A-#include =0A-#include =0A-#include =0A-=0A-#include "config.h"=0A-=0A-#include "ff= sb=5Fop.h"=0A-#include "ffsb=5Ftg.h"=0A-#include "ffsb=5Ffs.h"=0A-=0A-/*=0A= - * The main thread wakes up once in so many seconds to check elapsed=0A- *= time this is a tunable for that sleep interval in seconds=0A- */=0A-=0A-#d= efine FFSB=5FTG=5FWAIT=5FTIME (1)=0A-=0A-#define MARK printf("MARK FUNC: %s= () @ %s:%d\n", =5F=5FFUNCTION=5F=5F, =5F=5FFILE=5F=5F, =5F=5FLINE=5F=5F);= =0A-=0A-struct results {=0A- struct rusage before;=0A- struct rusage after;= =0A- double runtime;=0A- double cputime;=0A- double cpu=5Fbefore;=0A- doubl= e cpu=5Fafter;=0A- double cpu=5Ftotal;=0A-};=0A-=0A-struct ffsb=5Ftg;=0A-st= ruct ffsb=5Ffs;=0A-=0A-typedef struct profile=5Fconfig {=0A- struct config= =5Foptions *global;=0A- struct container *fs=5Fcontainer;=0A- struct contai= ner *tg=5Fcontainer;=0A-} profile=5Fconfig=5Ft;=0A-=0A-typedef struct ffsb= =5Fconfig {=0A- unsigned time;=0A-=0A- unsigned num=5Ffilesys;=0A- unsigned= num=5Fthreadgroups;=0A-=0A- int num=5Ftotalthreads; /* gets calculated af= ter init() */=0A-=0A- struct ffsb=5Ftg *groups;=0A- struct ffsb=5Ffs *files= ystems;=0A-=0A- struct profile=5Fconfig *profile=5Fconf;=0A- char *callout;= /* we will try and exec this */=0A-=0A- struct results results;=0A-} ffs= b=5Fconfig=5Ft;=0A-=0A-void init=5Fffsb=5Fconfig(ffsb=5Fconfig=5Ft *fc, uns= igned num=5Ffs, unsigned num=5Ftg);=0A-=0A-/*=0A- * this is kind of like a = special case "constructor" which is only=0A- * used by fs-aging code to bui= ld a fake config for the aging tg=0A- */=0A-void init=5Fffsb=5Fconfig=5F1fs= (ffsb=5Fconfig=5Ft *fc, struct ffsb=5Ffs *fs,=0A- struct ffsb=5Ftg *tg= );=0A-=0A-void destroy=5Fffsb=5Fconfig(ffsb=5Fconfig=5Ft *fc);=0A-=0A-/* ge= tters/setters, parser only should use setters */=0A-=0A-void fc=5Fset=5Ftim= e(ffsb=5Fconfig=5Ft *fc, unsigned time);=0A-=0A-void fc=5Fset=5Fnum=5Ftotal= threads(ffsb=5Fconfig=5Ft *fc, int num);=0A-=0A-/* num is zero-based */=0A-= /* get a particular threadgroup object */=0A-struct ffsb=5Ftg *fc=5Fget=5Ft= g(ffsb=5Fconfig=5Ft *fc, unsigned num);=0A-=0A-/* get a particular filesyst= em object */=0A-struct ffsb=5Ffs *fc=5Fget=5Ffs(ffsb=5Fconfig=5Ft *fc, unsi= gned num);=0A-=0A-void fc=5Fset=5Fcallout(ffsb=5Fconfig=5Ft *fc, char *call= out);=0A-char *fc=5Fget=5Fcallout(ffsb=5Fconfig=5Ft *fc);=0A-=0A-#endif=0Ad= iff --git a/testcases/kernel/fs/ext4-new-features/ffsb-6.0-rc2/ffsb=5Ffc.c = b/testcases/kernel/fs/ext4-new-features/ffsb-6.0-rc2/ffsb=5Ffc.c=0Adeleted = file mode 100644=0Aindex 60b6313..0000000=0A--- a/testcases/kernel/fs/ext4-= new-features/ffsb-6.0-rc2/ffsb=5Ffc.c=0A+++ /dev/null=0A@@ -1,110 +0,0 @@= =0A-/*=0A- * Copyright (c) International Business Machines Corp., 2001-20= 04=0A- *=0A- * This program is free software; you can redistribute it an= d/or modify=0A- * it under the terms of the GNU General Public License as= published by=0A- * the Free Software Foundation; either version 2 of the= License, or=0A- * (at your option) any later version.=0A- *=0A- * This= program is distributed in the hope that it will be useful,=0A- * but WIT= HOUT ANY WARRANTY; without even the implied warranty of=0A- * MERCHANTAB= ILITY or FITNESS FOR A PARTICULAR PURPOSE. See=0A- * the GNU General Pub= lic License for more details.=0A- *=0A- * You should have received a copy= of the GNU General Public License=0A- * along with this program; if not= , write to the Free Software=0A- * Foundation, Inc., 51 Franklin Street, = Fifth Floor, Boston, MA 02110-1301 USA=0A- */=0A-#include =0A-#i= nclude =0A-#include =0A-#include =0A-#in= clude =0A-#include =0A-#include =0A-#include <= pthread.h>=0A-=0A-#include =0A-=0A-#include "config.h"=0A-=0A-#in= clude "ffsb.h"=0A-#include "util.h"=0A-#include "parser.h"=0A-=0A-void init= =5Fffsb=5Fconfig(ffsb=5Fconfig=5Ft * fc, unsigned num=5Ffs, unsigned num=5F= tg)=0A-{=0A- memset(fc, 0, sizeof(ffsb=5Fconfig=5Ft));=0A-=0A- fc->num=5Fto= talthreads =3D -1;=0A- fc->num=5Fthreadgroups =3D num=5Ftg;=0A- fc->num=5Ff= ilesys =3D num=5Ffs;=0A-=0A- fc->groups =3D ffsb=5Fmalloc(sizeof(ffsb=5Ftg= =5Ft) * num=5Ftg);=0A- fc->filesystems =3D ffsb=5Fmalloc(sizeof(ffsb=5Ffs= =5Ft) * num=5Ffs);=0A-}=0A-=0A-void init=5Fffsb=5Fconfig=5F1fs(ffsb=5Fconfi= g=5Ft * fc, ffsb=5Ffs=5Ft * fs, ffsb=5Ftg=5Ft * tg)=0A-{=0A- memset(fc, 0, = sizeof(*fc));=0A-=0A- fc->num=5Ftotalthreads =3D tg=5Fget=5Fnumthreads(tg);= =0A- fc->num=5Fthreadgroups =3D 1;=0A- fc->num=5Ffilesys =3D 1;=0A-=0A- fc-= >groups =3D tg;=0A- fc->filesystems =3D fs;=0A-}=0A-=0A-void destroy=5Fffsb= =5Fconfig(ffsb=5Fconfig=5Ft * fc)=0A-{=0A- int i;=0A- for (i =3D 0; i < fc-= >num=5Ffilesys; i++)=0A- destroy=5Fffsb=5Ffs(&fc->filesystems[i]);=0A-=0A-= for (i =3D 0; i < fc->num=5Fthreadgroups; i++)=0A- destroy=5Fffsb=5Ftg(&f= c->groups[i]);=0A-=0A- free(fc->groups);=0A- free(fc->filesystems);=0A-}=0A= -=0A-void fc=5Fset=5Ftime(ffsb=5Fconfig=5Ft * fc, unsigned time)=0A-{=0A- f= c->time =3D time;=0A-}=0A-=0A-unsigned fc=5Fget=5Fnum=5Ffilesys(ffsb=5Fconf= ig=5Ft * fc)=0A-{=0A- return fc->num=5Ffilesys;=0A-}=0A-=0A-struct ffsb=5Ft= g *fc=5Fget=5Ftg(ffsb=5Fconfig=5Ft * fc, unsigned num)=0A-{=0A- assert(num = < fc->num=5Fthreadgroups);=0A- return &fc->groups[num];=0A-}=0A-=0A-struct = ffsb=5Ffs *fc=5Fget=5Ffs(ffsb=5Fconfig=5Ft * fc, unsigned num)=0A-{=0A- ass= ert(num < fc->num=5Ffilesys);=0A- return &fc->filesystems[num];=0A-}=0A-=0A= -void fc=5Fset=5Fnum=5Ftotalthreads(ffsb=5Fconfig=5Ft * fc, int num)=0A-{= =0A- assert(num > 0);=0A- fc->num=5Ftotalthreads =3D num;=0A-}=0A-=0A-void = fc=5Fset=5Fcallout(ffsb=5Fconfig=5Ft * fc, char *callout)=0A-{=0A- if (fc->= callout)=0A- free(fc->callout);=0A- fc->callout =3D ffsb=5Fstrdup(callout)= ;=0A-}=0A-=0A-char *fc=5Fget=5Fcallout(ffsb=5Fconfig=5Ft * fc)=0A-{=0A- ret= urn fc->callout;=0A-}=0Adiff --git a/testcases/kernel/fs/ext4-new-features/= ffsb-6.0-rc2/ffsb=5Ffs.c b/testcases/kernel/fs/ext4-new-features/ffsb-6.0-r= c2/ffsb=5Ffs.c=0Adeleted file mode 100644=0Aindex eb5a759..0000000=0A--- a/= testcases/kernel/fs/ext4-new-features/ffsb-6.0-rc2/ffsb=5Ffs.c=0A+++ /dev/n= ull=0A@@ -1,630 +0,0 @@=0A-/*=0A- * Copyright (c) International Business = Machines Corp., 2001-2004=0A- *=0A- * This program is free software; you= can redistribute it and/or modify=0A- * it under the terms of the GNU Ge= neral Public License as published by=0A- * the Free Software Foundation; = either version 2 of the License, or=0A- * (at your option) any later vers= ion.=0A- *=0A- * This program is distributed in the hope that it will be = useful,=0A- * but WITHOUT ANY WARRANTY; without even the implied warrant= y of=0A- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See=0A- = * the GNU General Public License for more details.=0A- *=0A- * You shou= ld have received a copy of the GNU General Public License=0A- * along wit= h this program; if not, write to the Free Software=0A- * Foundation, Inc= ., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA=0A- */=0A-#in= clude =0A-#include =0A-#include =0A-#includ= e =0A-#include =0A-#include =0A-=0A-#include= "ffsb=5Ffs.h"=0A-#include "util.h"=0A-#include "fh.h"=0A-=0A-/* First zero= out struct, set num=5Fdirs, and strdups basedir */=0A-void init=5Fffsb=5Ff= s(ffsb=5Ffs=5Ft * fs, char *basedir, uint32=5Ft num=5Fdata=5Fdirs,=0A- u= int32=5Ft numstartfiles, unsigned flags)=0A-{=0A- memset(fs, 0, sizeof(ffsb= =5Ffs=5Ft));=0A- fs->basedir =3D ffsb=5Fstrdup(basedir);=0A- fs->num=5Fdirs= =3D num=5Fdata=5Fdirs;=0A- fs->num=5Fstart=5Ffiles =3D numstartfiles;=0A- = fs->flags =3D flags;=0A- fs->create=5Fblocksize =3D FFSB=5FFS=5FDEFAULT=5FC= REATE=5FBLOCKSIZE;=0A- fs->age=5Fblocksize =3D FFSB=5FFS=5FDEFAULT=5FAGE=5F= BLOCKSIZE;=0A- fs->age=5Ffs =3D 0;=0A-}=0A-=0A-/*=0A- * Does not remove fil= es/dirs on disk, only frees up data=0A- * structures=0A-*/=0A-void destroy= =5Fffsb=5Ffs(ffsb=5Ffs=5Ft * fs)=0A-{=0A- free(fs->basedir);=0A- destroy=5F= filelist(&fs->files);=0A- destroy=5Ffilelist(&fs->fill);=0A- destroy=5Ffile= list(&fs->meta);=0A-}=0A-=0A-void clone=5Fffsb=5Ffs(ffsb=5Ffs=5Ft * target,= ffsb=5Ffs=5Ft * orig)=0A-{=0A- target->basedir =3D orig->basedir;=0A- targ= et->flags =3D orig->flags;=0A-=0A- /* !!!! hackish, write a filelist=5Fclon= e() function later */=0A- memcpy(&target->files, &orig->files, sizeof(orig-= >files));=0A- memcpy(&target->fill, &orig->fill, sizeof(orig->fill));=0A- m= emcpy(&target->meta, &orig->meta, sizeof(orig->meta));=0A-=0A- target->num= =5Fdirs =3D orig->num=5Fdirs;=0A- target->num=5Fstart=5Ffiles =3D orig->num= =5Fstart=5Ffiles;=0A- target->minfilesize =3D orig->minfilesize;=0A- target= ->maxfilesize =3D orig->maxfilesize;=0A-=0A- target->start=5Ffsutil =3D ori= g->start=5Ffsutil;=0A- target->desired=5Ffsutil =3D orig->desired=5Ffsutil;= =0A-=0A- target->age=5Ffs =3D orig->age=5Ffs;=0A- target->num=5Fage=5Fdirs = =3D orig->num=5Fage=5Fdirs;=0A- target->aging=5Ftg =3D orig->aging=5Ftg;=0A= -=0A- target->create=5Fblocksize =3D orig->create=5Fblocksize;=0A- target->= age=5Fblocksize =3D orig->age=5Fblocksize;=0A-=0A- memcpy(target->op=5Fdata= , orig->op=5Fdata, sizeof(void *) * FFSB=5FNUMOPS);=0A-}=0A-=0A-static void= add=5Ffiles(ffsb=5Ffs=5Ft * fs, struct benchfiles *bf, int num,=0A- = uint64=5Ft minsize, uint64=5Ft maxsize, unsigned blocksize)=0A-{=0A- struc= t ffsb=5Ffile *cur;=0A- int i, fd, condition =3D 0, has=5Fdirectio =3D 0;= =0A- randdata=5Ft rd;=0A- char *buf =3D ffsb=5Fmalloc(blocksize);=0A- uint6= 4=5Ft initial=5Ffree =3D getfsutil=5Fsize(fs->basedir);=0A-=0A- if (fs=5Fge= t=5Fdirectio(fs)) {=0A- has=5Fdirectio =3D 1;=0A- fs=5Fset=5Fdirectio(fs,= 0);=0A- }=0A-=0A- assert(blocksize);=0A-=0A- init=5Frandom(&rd, 0);=0A-=0A= - if (num)=0A- condition =3D num;=0A- else if (fs->init=5Fsize) {=0A- if = (getfsutil(fs->basedir) !=3D initial=5Ffree ||=0A- fs->init=5Fsize > (= getfsutil=5Fsize(fs->basedir) -=0A- initial=5Ffree))=0A- conditio= n =3D 1;=0A- else=0A- condition =3D 0;=0A- } else if (fs->init=5Ffsutil)= {=0A- if (fs->init=5Ffsutil > getfsutil(fs->basedir))=0A- condition =3D= 1;=0A- else=0A- condition =3D 0;=0A- }=0A-=0A- while (condition) {=0A- = uint64=5Ft size;=0A- if (fs->num=5Fweights) {=0A- int num =3D 1 + getra= ndom(&rd, fs->sum=5Fweights);=0A- int curop =3D 0;=0A-=0A- while (fs->s= ize=5Fweights[curop].weight < num) {=0A- num -=3D fs->size=5Fweights[cur= op].weight;=0A- curop++;=0A- }=0A- size =3D fs->size=5Fweights[curop= ].size;=0A- } else=0A- size =3D minsize + getllrandom(&rd, maxsize - min= size);=0A-=0A- cur =3D add=5Ffile(bf, size, &rd);=0A- fd =3D fhopencreate= (cur->name, NULL, fs);=0A- writefile=5Fhelper(fd, size, blocksize, buf, NU= LL, fs);=0A- fhclose(fd, NULL, fs);=0A- unlock=5Ffile=5Fwriter(cur);=0A-= =0A- if (num)=0A- condition--;=0A- else if (fs->init=5Fsize) {=0A- if= (fs->init=5Fsize > getfsutil=5Fsize(fs->basedir) -=0A- initial=5Ffre= e)=0A- condition =3D 1;=0A- else=0A- condition =3D 0;=0A- } else i= f (fs->init=5Ffsutil) {=0A- if (fs->init=5Ffsutil > getfsutil(fs->basedir= ))=0A- condition =3D 1;=0A- else=0A- condition =3D 0;=0A- }=0A-=0A= - }=0A- free(buf);=0A- if (has=5Fdirectio)=0A- fs=5Fset=5Fdirectio(fs, 1);= =0A-}=0A-=0A-static void age=5Ffs(ffsb=5Ffs=5Ft * fs, double utilization);= =0A-static ffsb=5Ffs=5Ft *construct=5Fnew=5Ffileset(ffsb=5Ffs=5Ft * fs);=0A= -static ffsb=5Ffs=5Ft *check=5Fexisting=5Ffileset(ffsb=5Ffs=5Ft * fs);=0A-= =0A-void *construct=5Fffsb=5Ffs(void *data)=0A-{=0A- ffsb=5Ffs=5Ft *fs =3D = (ffsb=5Ffs=5Ft *) data;=0A- ffsb=5Ffs=5Ft *ret =3D NULL;=0A-=0A- if (fs=5Fg= et=5Freuse=5Ffs(fs)) {=0A- printf("checking existing fs: %s\n", fs->basedi= r);=0A- ret =3D check=5Fexisting=5Ffileset(fs);=0A- if (ret =3D=3D NULL) = {=0A- printf("recreating new fileset\n");=0A- ret =3D construct=5Fnew= =5Ffileset(fs);=0A- }=0A- } else {=0A- printf("creating new fileset %s\n"= , fs->basedir);=0A- ret =3D construct=5Fnew=5Ffileset(fs);=0A- }=0A- if (r= et =3D=3D NULL) {=0A- printf("fs setup on %s failed\n", fs->basedir);=0A- = exit(1);=0A- }=0A- return ret;=0A-}=0A-=0A-static int verify=5Ffile(struct= benchfiles *bf, char *fname, void *fs=5Fptr)=0A-{=0A- ffsb=5Ffs=5Ft *fs = =3D (ffsb=5Ffs=5Ft *) fs=5Fptr;=0A- uint64=5Ft minsize =3D fs->minfilesize;= =0A- uint64=5Ft maxsize =3D fs->maxfilesize;=0A- uint64=5Ft filesize =3D 0;= =0A- int fd =3D 0;=0A- DIR *dirptr =3D NULL;=0A-=0A- /* If it is a director= y and it passed the name verification we=0A- * don't need to do anything h= ere=0A- */=0A- dirptr =3D opendir(fname);=0A- if (dirptr) {=0A- closedir(= dirptr);=0A- return 0;=0A- }=0A-=0A- fd =3D open(fname, O=5FRDONLY);=0A- /= * If we can't open it for read we're done */=0A- if (fd < 0) {=0A- printf(= "verify=5Ffile: error opening %s for readonly\n", fname);=0A- perror(fname= );=0A- return 1;=0A- }=0A- close(fd);=0A- filesize =3D ffsb=5Fget=5Ffilesi= ze(fname);=0A-=0A- if (filesize < minsize || filesize > maxsize) {=0A- pri= ntf("size %llu bytes for file %s is invalid\n",=0A- filesize, fname= );=0A- return 1;=0A- }=0A-=0A- return 0;=0A-}=0A-=0A-/* Record the number = of files and directorys there are supposed to be=0A- * grab (check and buil= d the structures) the regular data fileset then=0A- * check to make sure th= e number of directories and files in that=0A- * filelist matches up. Then = grab the meta filelist and verify that=0A- * the meta filelist is empty. S= et up the filelist for fill (aging)=0A- * and setup the ops for the benchma= rk.=0A-*/=0A-static ffsb=5Ffs=5Ft *check=5Fexisting=5Ffileset(ffsb=5Ffs=5Ft= * fs)=0A-{=0A- char buf[FILENAME=5FMAX * 3];=0A- int retval =3D 0;=0A- uin= t32=5Ft num=5Fdirs =3D fs->num=5Fdirs;=0A- uint32=5Ft num=5Ffiles =3D fs->n= um=5Fstart=5Ffiles;=0A-=0A- if (fs->age=5Ffs) {=0A- printf("Aging and reus= ing the fileset are mutually "=0A- "exclusive\n");=0A- printf("abo= rting\n");=0A- return NULL;=0A- }=0A-=0A- /* Set up bench/age dir */=0A- i= f (FILENAME=5FMAX <=3D=0A- snprintf(buf, FILENAME=5FMAX, "%s/%s", fs->b= asedir, FILES=5FBASE)) {=0A- printf("pathname \"%s\" is too long, aborting= \n", buf);=0A- return NULL;=0A- }=0A-=0A- /* Make a "dummy" filelist that = has numsubdirs set to 0 and=0A- * numstartfiles set to 0=0A- */=0A- init= =5Ffilelist(&fs->files, buf, FILES=5FBASE, 0, 0);=0A-=0A- retval =3D grab= =5Fold=5Ffileset(&fs->files, buf, verify=5Ffile, fs);=0A-=0A- if (retval)= =0A- return NULL;=0A-=0A- if ((get=5Flistsize(&fs->files) !=3D num=5Ffiles= ) ||=0A- (get=5Fnumsubdirs(&fs->files) !=3D num=5Fdirs)) {=0A- printf(= "check=5Fexisting=5Ffileset: number of files (%u)"=0A- " or directo= rys (%u) don't match up\n",=0A- get=5Flistsize(&fs->files), get=5Fn= umsubdirs(&fs->files));=0A- destroy=5Ffilelist(&fs->files);=0A- return NU= LL;=0A- }=0A-=0A- if (FILENAME=5FMAX <=3D=0A- snprintf(buf, FILENAME=5F= MAX, "%s/%s", fs->basedir, META=5FBASE)) {=0A- printf("pathname \"%s\" is = too long, aborting\n", buf);=0A- return NULL;=0A- }=0A-=0A- init=5Ffilelis= t(&fs->meta, buf, META=5FBASE, 0, 1);=0A- retval =3D grab=5Fold=5Ffileset(&= fs->meta, buf, verify=5Ffile, fs);=0A-=0A- if (retval) {=0A- destroy=5Ffil= elist(&fs->files);=0A- return NULL;=0A- }=0A-=0A- if ((get=5Flistsize(&fs-= >meta) !=3D 0) || (get=5Fnumsubdirs(&fs->meta) !=3D 0)) {=0A- printf("chec= k=5Fexisting=5Ffileset: meta directory isn't empty\n"=0A- "aborting= \n");=0A- destroy=5Ffilelist(&fs->files);=0A- destroy=5Ffilelist(&fs->met= a);=0A- return NULL;=0A- }=0A-=0A- /* Even though we won't use it, we stil= l need to be consistent=0A- * here.=0A- */=0A- init=5Ffilelist(&fs->fill,= buf, AGE=5FBASE, 0, 0);=0A-=0A- /* Have to do this or everything else coul= d break. */=0A- ops=5Fsetup=5Fbench(fs);=0A-=0A- return fs;=0A-}=0A-=0A-/*= =0A- * clean up fs, "rm -rf data meta"=0A- * record utilization=0A- * se= t up the dirs: files, meta=0A- * age filesystem=0A- * have ffsb=5Fops set= up their data=0A- * create starting files in files=0A- */=0A-static ffsb= =5Ffs=5Ft *construct=5Fnew=5Ffileset(ffsb=5Ffs=5Ft * fs)=0A-{=0A- char buf[= FILENAME=5FMAX * 3];=0A-=0A- /* TODO: Convert this quick and dirty rm -rf t= o a "real"=0A- * programmatic version, that doesn't rely on the rm command= .=0A- */=0A- if (FILENAME=5FMAX * 3 <=3D snprintf(buf, FILENAME=5FMAX * 3,= =0A- "rm -rf %s/data %s/meta",=0A- fs->basedir, fs->basedir)) {= =0A- printf("pathname too long for command \"%s\"\n", buf);=0A- return NU= LL;=0A- }=0A-=0A- if (ffsb=5Fsystem(buf) < 0) {=0A- perror(buf);=0A- retu= rn NULL;=0A- }=0A-=0A- fs->start=5Ffsutil =3D getfsutil(fs->basedir);=0A-= =0A- /* Set up bench/age dir */=0A- if (FILENAME=5FMAX <=3D=0A- snprint= f(buf, FILENAME=5FMAX, "%s/%s", fs->basedir, FILES=5FBASE)) {=0A- printf("= pathname \"%s\" is too long, aborting\n", buf);=0A- return NULL;=0A- }=0A-= =0A- ffsb=5Fmkdir(buf);=0A-=0A- /* Regular files and aging share this direc= tory */=0A- init=5Ffilelist(&fs->files, buf, FILES=5FBASE, fs->num=5Fdirs, = 1);=0A- init=5Ffilelist(&fs->fill, buf, AGE=5FBASE, fs->num=5Fage=5Fdirs, 1= );=0A-=0A- /* Set up meta dir */=0A- snprintf(buf, FILENAME=5FMAX, "%s/%s",= fs->basedir, META=5FBASE);=0A-=0A- ffsb=5Fmkdir(buf);=0A-=0A- init=5Ffilel= ist(&fs->meta, buf, META=5FBASE, 0, 1);=0A-=0A- /* Do aging */=0A- if (fs->= age=5Ffs)=0A- age=5Ffs(fs, fs->desired=5Ffsutil);=0A-=0A- /* Call back int= o ops, set for benchmark */=0A- ops=5Fsetup=5Fbench(fs);=0A-=0A- /* Create = initial fileset */=0A- add=5Ffiles(fs, &fs->files, fs->num=5Fstart=5Ffiles,= fs->minfilesize,=0A- fs->maxfilesize, fs->create=5Fblocksize);=0A- retu= rn fs;=0A-}=0A-=0A-struct poll=5Fdata {=0A- ffsb=5Ffs=5Ft *fs;=0A- double u= til;=0A-};=0A-=0A-static int fs=5Fget=5Futil(void *data)=0A-{=0A- struct po= ll=5Fdata *pd =3D (struct poll=5Fdata *)data;=0A- double fsutil =3D getfsut= il(pd->fs->basedir);=0A-=0A- if (fsutil >=3D pd->util)=0A- return 1;=0A-= =0A- return 0;=0A-}=0A-=0A-static void age=5Ffs(ffsb=5Ffs=5Ft * fs, double = utilization)=0A-{=0A- ffsb=5Fbarrier=5Ft barrier;=0A- pthread=5Ft thread;= =0A- struct poll=5Fdata pdata;=0A- ffsb=5Ftg=5Ft *tg =3D fs=5Fget=5Faging= =5Ftg(fs);=0A- tg=5Frun=5Fparams=5Ft params;=0A- ffsb=5Fconfig=5Ft fc;=0A-= =0A- printf("aging fs %s from %.2lf to %.2lf\n", fs->basedir,=0A- fs= ->start=5Ffsutil, utilization);=0A- ffsb=5Fbarrier=5Finit(&barrier, tg=5Fge= t=5Fnumthreads(tg));=0A-=0A- init=5Fffsb=5Fconfig=5F1fs(&fc, fs, tg);=0A-= =0A- pdata.fs =3D fs;=0A- pdata.util =3D utilization;=0A-=0A- params.tg =3D= tg;=0A- params.poll=5Ffn =3D fs=5Fget=5Futil;=0A- params.poll=5Fdata =3D &= pdata;=0A- params.wait=5Ftime =3D 1;=0A- params.fc =3D &fc;=0A-=0A- params.= tg=5Fbarrier =3D NULL;=0A- params.thread=5Fbarrier =3D &barrier;=0A-=0A- /*= Call back into ops, setup for aging */=0A- ops=5Fsetup=5Fage(fs);=0A-=0A- = /* Throw in some files to start off, so there's something */=0A- add=5Ffile= s(fs, &fs->fill, 10, 0, 0, fs->age=5Fblocksize);=0A-=0A- pthread=5Fcreate(&= thread, NULL, tg=5Frun, ¶ms);=0A- pthread=5Fjoin(thread, NULL);=0A-}=0A= -=0A-void fs=5Fset=5Fcreate=5Fblocksize(ffsb=5Ffs=5Ft * fs, uint32=5Ft bloc= ksize)=0A-{=0A- fs->create=5Fblocksize =3D blocksize;=0A-}=0A-=0A-void fs= =5Fset=5Fage=5Fblocksize(ffsb=5Ffs=5Ft * fs, uint32=5Ft blocksize)=0A-{=0A-= fs->age=5Fblocksize =3D blocksize;=0A-}=0A-=0A-uint32=5Ft fs=5Fget=5Fcreat= e=5Fblocksize(ffsb=5Ffs=5Ft * fs)=0A-{=0A- return fs->create=5Fblocksize;= =0A-}=0A-=0A-uint32=5Ft fs=5Fget=5Fage=5Fblocksize(ffsb=5Ffs=5Ft * fs)=0A-{= =0A- return fs->age=5Fblocksize;=0A-}=0A-=0A-char *fs=5Fget=5Fbasedir(ffsb= =5Ffs=5Ft * fs)=0A-{=0A- return fs->basedir;=0A-}=0A-=0A-uint32=5Ft fs=5Fge= t=5Fnumstartfiles(ffsb=5Ffs=5Ft * fs)=0A-{=0A- return fs->num=5Fstart=5Ffil= es;=0A-}=0A-=0A-uint32=5Ft fs=5Fget=5Fnumdirs(ffsb=5Ffs=5Ft * fs)=0A-{=0A- = return fs->num=5Fdirs;=0A-}=0A-=0A-int fs=5Fget=5Flibcio(ffsb=5Ffs=5Ft * fs= )=0A-{=0A- return fs->flags & FFSB=5FFS=5FLIBCIO;=0A-}=0A-=0A-void fs=5Fset= =5Flibcio(ffsb=5Ffs=5Ft * fs, int lio)=0A-{=0A- if (lio)=0A- fs->flags |= =3D FFSB=5FFS=5FLIBCIO;=0A- else=0A- fs->flags &=3D ~0 & ~FFSB=5FFS=5FLIBC= IO;=0A-}=0A-=0A-int fs=5Fget=5Fdirectio(ffsb=5Ffs=5Ft * fs)=0A-{=0A- return= fs->flags & FFSB=5FFS=5FDIRECTIO;=0A-}=0A-=0A-void fs=5Fset=5Fdirectio(ffs= b=5Ffs=5Ft * fs, int dio)=0A-{=0A- if (dio)=0A- fs->flags |=3D FFSB=5FFS= =5FDIRECTIO;=0A- else=0A- fs->flags &=3D ~0 & ~FFSB=5FFS=5FDIRECTIO;=0A-}= =0A-=0A-int fs=5Fget=5Falignio(ffsb=5Ffs=5Ft * fs)=0A-{=0A- return fs->flag= s & FFSB=5FFS=5FALIGNIO4K;=0A-}=0A-=0A-void fs=5Fset=5Falignio(ffsb=5Ffs=5F= t * fs, int aio)=0A-{=0A- if (aio)=0A- fs->flags |=3D FFSB=5FFS=5FALIGNIO4= K;=0A- else=0A- fs->flags &=3D ~0 & ~FFSB=5FFS=5FALIGNIO4K;=0A-}=0A-=0A-in= t fs=5Fget=5Freuse=5Ffs(ffsb=5Ffs=5Ft * fs)=0A-{=0A- return fs->flags & FFS= B=5FFS=5FREUSE=5FFS;=0A-}=0A-=0A-void fs=5Fset=5Freuse=5Ffs(ffsb=5Ffs=5Ft *= fs, int rfs)=0A-{=0A- if (rfs)=0A- fs->flags |=3D FFSB=5FFS=5FREUSE=5FFS;= =0A- else=0A- fs->flags &=3D ~0 & ~FFSB=5FFS=5FREUSE=5FFS;=0A-}=0A-=0A-str= uct benchfiles *fs=5Fget=5Fdatafiles(ffsb=5Ffs=5Ft * fs)=0A-{=0A- return &f= s->files;=0A-}=0A-=0A-struct benchfiles *fs=5Fget=5Fmetafiles(ffsb=5Ffs=5Ft= * fs)=0A-{=0A- return &fs->meta;=0A-}=0A-=0A-struct benchfiles *fs=5Fget= =5Fagefiles(ffsb=5Ffs=5Ft * fs)=0A-{=0A- return &fs->fill;=0A-}=0A-=0A-void= fs=5Fset=5Faging=5Ftg(ffsb=5Ffs=5Ft * fs, struct ffsb=5Ftg *tg, double uti= l)=0A-{=0A- fs->aging=5Ftg =3D tg;=0A- fs->age=5Ffs =3D 1;=0A- fs->desired= =5Ffsutil =3D util;=0A-}=0A-=0A-struct ffsb=5Ftg *fs=5Fget=5Faging=5Ftg(ffs= b=5Ffs=5Ft * fs)=0A-{=0A- return fs->aging=5Ftg;=0A-}=0A-=0A-int fs=5Fget= =5Fagefs(ffsb=5Ffs=5Ft * fs)=0A-{=0A- return fs->age=5Ffs;=0A-}=0A-=0A-/* T= ODO: Implement this!!!*/=0A-void fs=5Fset=5Fnum=5Fage=5Fdirs(ffsb=5Ffs=5Ft = * fs, uint32=5Ft numdirs)=0A-{=0A- fs->num=5Fage=5Fdirs =3D numdirs;=0A-}= =0A-=0A-void fs=5Fset=5Fopdata(ffsb=5Ffs=5Ft * fs, void *data, unsigned opn= um)=0A-{=0A- fs->op=5Fdata[opnum] =3D data;=0A-}=0A-=0A-void *fs=5Fget=5Fop= data(ffsb=5Ffs=5Ft * fs, unsigned opnum)=0A-{=0A- return fs->op=5Fdata[opnu= m];=0A-}=0A-=0A-void fs=5Fset=5Fmin=5Ffilesize(ffsb=5Ffs=5Ft * fs, uint64= =5Ft size)=0A-{=0A- fs->minfilesize =3D size;=0A-}=0A-=0A-void fs=5Fset=5Fm= ax=5Ffilesize(ffsb=5Ffs=5Ft * fs, uint64=5Ft size)=0A-{=0A- fs->maxfilesize= =3D size;=0A-}=0A-=0A-uint64=5Ft fs=5Fget=5Fmin=5Ffilesize(ffsb=5Ffs=5Ft *= fs)=0A-{=0A- return fs->minfilesize;=0A-}=0A-=0A-uint64=5Ft fs=5Fget=5Fmax= =5Ffilesize(ffsb=5Ffs=5Ft * fs)=0A-{=0A- return fs->maxfilesize;=0A-}=0A-= =0A-double fs=5Fget=5Fdesired=5Ffsutil(ffsb=5Ffs=5Ft * fs)=0A-{=0A- return = fs->desired=5Ffsutil;=0A-}=0A-=0A-void fs=5Fprint=5Fconfig(ffsb=5Ffs=5Ft * = fs)=0A-{=0A- char buf[256];=0A-=0A- printf("FileSystem %s\n", fs->basedir);= =0A- printf("=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D\n");=0A- printf("\t num=5Fdirs = =3D %u\n", fs->num=5Fdirs);=0A- printf("\t starting files =3D %u\= n", fs->num=5Fstart=5Ffiles);=0A- printf("\t\n");=0A- if (fs->num=5Fweights= ) {=0A- int i;=0A- printf("\t Fileset weight:\n");=0A- for (i =3D 0; i <= fs->num=5Fweights; i++)=0A- printf("\t\t %12llu (%6s) -> %u (%.2f\%)\n",= =0A- fs->size=5Fweights[i].size,=0A- ffsb=5Fprintsize(buf= , fs->size=5Fweights[i].size,=0A- 256), fs->size=5Fweights[i].wei= ght,=0A- ((float)fs->size=5Fweights[i].weight /=0A- (float)fs->= sum=5Fweights) * 100);=0A- } else {=0A- printf("\t min file size =3D %l= lu\t(%s)\n", fs->minfilesize,=0A- ffsb=5Fprintsize(buf, fs->minfile= size, 256));=0A- printf("\t max file size =3D %llu\t(%s)\n", fs->maxfil= esize,=0A- ffsb=5Fprintsize(buf, fs->maxfilesize, 256));=0A- }=0A- = printf("\t directio =3D %s\n", (fs->flags & FFSB=5FFS=5FDIRECTIO) ?= =0A- "on" : "off");=0A- printf("\t alignedio =3D %s\n", (fs->= flags & FFSB=5FFS=5FALIGNIO4K) ?=0A- "on" : "off");=0A- printf("\t b= ufferedio =3D %s\n", (fs->flags & FFSB=5FFS=5FLIBCIO) ?=0A- "o= n" : "off");=0A- printf("\t\n");=0A- printf("\t aging is %s\n", (fs->age=5F= fs) ? "on" : "off");=0A- printf("\t current utilization =3D %.2f\%\n",=0A- = getfsutil(fs->basedir) * 100);=0A- if (fs->age=5Ffs) {=0A- printf("= \t desired utilization =3D %.2lf%\n",=0A- fs->desired=5Ffsutil * 10= 0);=0A- printf("\t \n");=0A- tg=5Fprint=5Fconfig=5Faging(fs->aging=5Ftg, = fs->basedir);=0A- }=0A- printf("\t\n");=0A-}=0A-=0A-int fs=5Fneeds=5Fstats(= ffsb=5Ffs=5Ft * fs, syscall=5Ft sys)=0A-{=0A- return (fs !=3D NULL) ? (int)= fs->fsd.config : 0;=0A-}=0A-=0A-void fs=5Fadd=5Fstat(ffsb=5Ffs=5Ft * fs, sy= scall=5Ft sys, uint32=5Ft val)=0A-{=0A- if (fs)=0A- ffsb=5Fadd=5Fdata(&fs-= >fsd, sys, val);=0A-}=0Adiff --git a/testcases/kernel/fs/ext4-new-features/= ffsb-6.0-rc2/ffsb=5Ffs.h b/testcases/kernel/fs/ext4-new-features/ffsb-6.0-r= c2/ffsb=5Ffs.h=0Adeleted file mode 100644=0Aindex e811fa8..0000000=0A--- a/= testcases/kernel/fs/ext4-new-features/ffsb-6.0-rc2/ffsb=5Ffs.h=0A+++ /dev/n= ull=0A@@ -1,184 +0,0 @@=0A-/*=0A- * Copyright (c) International Business = Machines Corp., 2001-2004=0A- *=0A- * This program is free software; you= can redistribute it and/or modify=0A- * it under the terms of the GNU Ge= neral Public License as published by=0A- * the Free Software Foundation; = either version 2 of the License, or=0A- * (at your option) any later vers= ion.=0A- *=0A- * This program is distributed in the hope that it will be = useful,=0A- * but WITHOUT ANY WARRANTY; without even the implied warrant= y of=0A- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See=0A- = * the GNU General Public License for more details.=0A- *=0A- * You shou= ld have received a copy of the GNU General Public License=0A- * along wit= h this program; if not, write to the Free Software=0A- * Foundation, Inc= ., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA=0A- */=0A-#if= ndef =5FFFSB=5FFS=5FH=5F=0A-#define =5FFFSB=5FFS=5FH=5F=0A-=0A-#include "fi= lelist.h"=0A-#include "ffsb=5Fop.h"=0A-#include "ffsb=5Ftg.h"=0A-#include "= ffsb=5Fstats.h"=0A-=0A-/* These are the base names for the different file t= ypes on a=0A- * filesystem.=0A-*/=0A-#define FILES=5FBASE "data"=0A-#define= META=5FBASE "meta"=0A-#define AGE=5FBASE "fill"=0A-=0A-struct ffsb=5Ftg= ;=0A-=0A-typedef struct size=5Fweight {=0A- uint64=5Ft size;=0A- int weight= ;=0A-} size=5Fweight=5Ft;=0A-=0A-/* A filesystem object=0A- * --=0A- * repr= esents a filesystem on disk, and maintains access to the different=0A- * di= rectories within it. Currently there are two directories created in=0A- * = each filesystem: data and meta=0A- * "data" contains the aging files and th= e working set files=0A- * "meta" only contains directories for use in the m= etadata operation=0A- *=0A- * Aging=0A- * This object contains methods for = aging the filesystem if needed=0A- * a properly set up threadgroup is suppl= ied by the parser which is run=0A- * until the filesystem reaches the desir= ed utilization=0A- *=0A- * Operations=0A- * The semantics of a ffsb operati= on are always such that they occur on=0A- * a filesystem, so the filesystem= also hold operation specific data as=0A- * an opaque type=0A- * One exampl= e of how this is useful is the aging process, where a different=0A- * set o= f files is operated upon than in the regular benchmark and the=0A- * op=5Fd= ata is pointing to the "fill" set rather than the "files" set=0A- */=0A-=0A= -typedef struct ffsb=5Ffs {=0A- char *basedir;=0A-=0A- struct benchfiles fi= les;=0A- struct benchfiles meta;=0A- struct benchfiles fill;=0A-=0A- int fl= ags;=0A-#define FFSB=5FFS=5FDIRECTIO (1 << 0)=0A-#define FFSB=5FFS=5FALIG= NIO4K (1 << 1)=0A-#define FFSB=5FFS=5FLIBCIO (1 << 2)=0A-#define FFSB= =5FFS=5FREUSE=5FFS (1 << 3)=0A-=0A- /* These pararmeters pertain to files= in the files and fill=0A- * dirs. Meta dir only contains directories, st= arting with 0.=0A- */=0A- uint32=5Ft num=5Fdirs;=0A- uint32=5Ft num=5Fstar= t=5Ffiles;=0A- uint64=5Ft minfilesize, maxfilesize;=0A- double init=5Ffsuti= l;=0A- uint64=5Ft init=5Fsize;=0A-=0A- /* These two parameters specify the = blocksize to use for=0A- * writes when creating and aging the fs.=0A- */= =0A- uint32=5Ft create=5Fblocksize, age=5Fblocksize;=0A-#define FFSB=5FFS= =5FDEFAULT=5FCREATE=5FBLOCKSIZE 4096=0A-#define FFSB=5FFS=5FDEFAULT=5FAGE= =5FBLOCKSIZE 4096=0A-=0A- double start=5Ffsutil;=0A-=0A- /* Aging data/p= arameters */=0A- double desired=5Ffsutil;=0A- int age=5Ffs;=0A- uint32=5Ft = num=5Fage=5Fdirs;=0A-=0A- /* Use an ffsb thread group to do the aging work = */=0A- struct ffsb=5Ftg *aging=5Ftg;=0A-=0A- /* If a particular operation w= ants to maintain fs-specific=0A- * data, it should use this array. Natura= lly, the ops must=0A- * synchonize access to the data for now, they are al= l just=0A- * putting pointers to a particular benchfiles struct here,=0A- = * which is already sync'ed=0A- */=0A- void *op=5Fdata[FFSB=5FNUMOPS];=0A-= =0A- /* per-fs stats */=0A- ffsb=5Fstatsc=5Ft fsc;=0A- ffsb=5Fstatsd=5Ft fs= d;=0A-=0A- size=5Fweight=5Ft *size=5Fweights;=0A- unsigned num=5Fweights;= =0A- unsigned sum=5Fweights;=0A-=0A-} ffsb=5Ffs=5Ft;=0A-=0A-/* Set up the s= tructure, zeros everything out and dups the basedir=0A- * string=0A- */=0A-= void init=5Fffsb=5Ffs(ffsb=5Ffs=5Ft *fs, char *basedir, uint32=5Ft num=5Fda= ta=5Fdirs,=0A- uint32=5Ft num=5Fstart=5Ffiles, unsigned flags);=0A-=0A-/= * Does not remove files/dirs on disk, only frees up data=0A- * structures= =0A- */=0A-void destroy=5Fffsb=5Ffs(ffsb=5Ffs=5Ft *fs);=0A-=0A-/* Set up th= e files and such on the disk including aging if requested.=0A- * Should cal= l back into each op, which initialize its op=5Fdata[]=0A- * entry. Aging i= s done by starting the aging=5Ftg thread group, and=0A- * waiting until the= desired utilization is achieved. It can (and is)=0A- * be used with pthre= ad=5Fcreate(). Parameter should be a ffsb=5Ffs=5Ft * ,=0A- * and it will r= eturn the same type=0A- */=0A-void *construct=5Fffsb=5Ffs(void *ffsb=5Ffs= =5Fptr);=0A-=0A-/* Shallow clone, original should simply be discarded (not = destroyed).=0A- * Generally should only be used by parser to write into the= config=0A- * object=0A- */=0A-void clone=5Fffsb=5Ffs(ffsb=5Ffs=5Ft *target= , ffsb=5Ffs=5Ft *original);=0A-=0A-void fs=5Fprint=5Fconfig(ffsb=5Ffs=5Ft *= fs);=0A-=0A-char *fs=5Fget=5Fbasedir(ffsb=5Ffs=5Ft *fs);=0A-int fs=5Fget=5F= directio(ffsb=5Ffs=5Ft *fs);=0A-void fs=5Fset=5Fdirectio(ffsb=5Ffs=5Ft *fs,= int dio);=0A-int fs=5Fget=5Falignio(ffsb=5Ffs=5Ft *fs);=0A-void fs=5Fset= =5Falignio(ffsb=5Ffs=5Ft *fs, int aio);=0A-int fs=5Fget=5Flibcio(ffsb=5Ffs= =5Ft *fs);=0A-void fs=5Fset=5Flibcio(ffsb=5Ffs=5Ft *fs, int lio);=0A-int fs= =5Fget=5Freuse=5Ffs(ffsb=5Ffs=5Ft *fs);=0A-void fs=5Fset=5Freuse=5Ffs(ffsb= =5Ffs=5Ft *fs, int rfs);=0A-=0A-struct benchfiles *fs=5Fget=5Fdatafiles(ffs= b=5Ffs=5Ft *fs);=0A-struct benchfiles *fs=5Fget=5Fmetafiles(ffsb=5Ffs=5Ft *= fs);=0A-struct benchfiles *fs=5Fget=5Fagefiles(ffsb=5Ffs=5Ft *fs);=0A-=0A-v= oid fs=5Fset=5Faging=5Ftg(ffsb=5Ffs=5Ft *fs, struct ffsb=5Ftg *, double uti= l);=0A-struct ffsb=5Ftg *fs=5Fget=5Faging=5Ftg(ffsb=5Ffs=5Ft *fs);=0A-int f= s=5Fget=5Fagefs(ffsb=5Ffs=5Ft *fs);=0A-=0A-void fs=5Fset=5Fopdata(ffsb=5Ffs= =5Ft *fs, void *data, unsigned opnum);=0A-void *fs=5Fget=5Fopdata(ffsb=5Ffs= =5Ft *fs, unsigned opnum);=0A-void fs=5Fset=5Fmin=5Ffilesize(ffsb=5Ffs=5Ft = *fs, uint64=5Ft size);=0A-void fs=5Fset=5Fmax=5Ffilesize(ffsb=5Ffs=5Ft *fs,= uint64=5Ft size);=0A-void fs=5Fset=5Fcreate=5Fblocksize(ffsb=5Ffs=5Ft *fs,= uint32=5Ft blocksize);=0A-void fs=5Fset=5Fage=5Fblocksize(ffsb=5Ffs=5Ft *f= s, uint32=5Ft blocksize);=0A-uint32=5Ft fs=5Fget=5Fcreate=5Fblocksize(ffsb= =5Ffs=5Ft *fs);=0A-uint32=5Ft fs=5Fget=5Fage=5Fblocksize(ffsb=5Ffs=5Ft *fs)= ;=0A-uint64=5Ft fs=5Fget=5Fmin=5Ffilesize(ffsb=5Ffs=5Ft *fs);=0A-uint64=5Ft= fs=5Fget=5Fmax=5Ffilesize(ffsb=5Ffs=5Ft *fs);=0A-uint32=5Ft fs=5Fget=5Fnum= startfiles(ffsb=5Ffs=5Ft *fs);=0A-uint32=5Ft fs=5Fget=5Fnumdirs(ffsb=5Ffs= =5Ft *fs);=0A-=0A-double fs=5Fget=5Fdesired=5Ffsutil(ffsb=5Ffs=5Ft *fs);=0A= -=0A-/* For these two, fs =3D=3D NULL is OK */=0A-int fs=5Fneeds=5Fstats(ff= sb=5Ffs=5Ft *fs, syscall=5Ft s);=0A-void fs=5Fadd=5Fstat(ffsb=5Ffs=5Ft *fs,= syscall=5Ft sys, uint32=5Ft val);=0A-=0A-#endif /* =5FFFSB=5FFS=5FH=5F */= =0Adiff --git a/testcases/kernel/fs/ext4-new-features/ffsb-6.0-rc2/ffsb=5Fo= p.c b/testcases/kernel/fs/ext4-new-features/ffsb-6.0-rc2/ffsb=5Fop.c=0Adele= ted file mode 100644=0Aindex ba05fba..0000000=0A--- a/testcases/kernel/fs/e= xt4-new-features/ffsb-6.0-rc2/ffsb=5Fop.c=0A+++ /dev/null=0A@@ -1,192 +0,0 = @@=0A-/*=0A- * Copyright (c) International Business Machines Corp., 2001-= 2004=0A- *=0A- * This program is free software; you can redistribute it = and/or modify=0A- * it under the terms of the GNU General Public License = as published by=0A- * the Free Software Foundation; either version 2 of t= he License, or=0A- * (at your option) any later version.=0A- *=0A- * Th= is program is distributed in the hope that it will be useful,=0A- * but W= ITHOUT ANY WARRANTY; without even the implied warranty of=0A- * MERCHANT= ABILITY or FITNESS FOR A PARTICULAR PURPOSE. See=0A- * the GNU General P= ublic License for more details.=0A- *=0A- * You should have received a co= py of the GNU General Public License=0A- * along with this program; if n= ot, write to the Free Software=0A- * Foundation, Inc., 51 Franklin Street= , Fifth Floor, Boston, MA 02110-1301 USA=0A- */=0A-#include =0A-#= include =0A-#include =0A-=0A-#include "ffsb=5Fop.h"=0A-#= include "fileops.h"=0A-#include "metaops.h"=0A-=0A-ffsb=5Fop=5Ft ffsb=5Fop= =5Flist[] =3D { {0, "read", ffsb=5Freadfile, READ, fop=5Fbench, NULL}=0A-,= =0A-{1, "readall", ffsb=5Freadall, READ, fop=5Fbench, NULL}=0A-,=0A-{2, "wr= ite", ffsb=5Fwritefile, WRITE, fop=5Fbench, NULL}=0A-,=0A-{3, "create", ffs= b=5Fcreatefile, WRITE, fop=5Fbench, fop=5Fage}=0A-,=0A-{4, "append", ffsb= =5Fappendfile, WRITE, fop=5Fbench, fop=5Fage}=0A-,=0A-{5, "delete", ffsb=5F= deletefile, NA, fop=5Fbench, fop=5Fage}=0A-,=0A-{6, "metaop", ffsb=5Fmetaop= s, NA, metaops=5Fmetadir, NULL}=0A-,=0A-{7, "createdir", ffsb=5Fcreatedir, = NA, fop=5Fbench, NULL}=0A-,=0A-{8, "stat", ffsb=5Fstat, NA, fop=5Fbench, NU= LL}=0A-,=0A-{9, "writeall", ffsb=5Fwriteall, WRITE, fop=5Fbench, NULL}=0A-,= =0A-{10, "writeall=5Ffsync", ffsb=5Fwriteall=5Ffsync, WRITE, fop=5Fbench, N= ULL}=0A-,=0A-{11, "open=5Fclose", ffsb=5Fopen=5Fclose, NA, fop=5Fbench, NUL= L}=0A-,=0A-{12, "write=5Ffsync", ffsb=5Fwritefile=5Ffsync, WRITE, fop=5Fben= ch, NULL}=0A-,=0A-{13, "create=5Ffsync", ffsb=5Fcreatefile=5Ffsync, WRITE, = fop=5Fbench, fop=5Fage}=0A-,=0A-{14, "append=5Ffsync", ffsb=5Fappendfile=5F= fsync, WRITE, fop=5Fbench, fop=5Fage}=0A-,=0A-};=0A-=0A-void init=5Fffsb=5F= op=5Fresults(ffsb=5Fop=5Fresults=5Ft * results)=0A-{=0A- memset(results, 0,= sizeof(ffsb=5Fop=5Fresults=5Ft));=0A-}=0A-=0A-static int exclusive=5Fop(ff= sb=5Fop=5Fresults=5Ft * results, unsigned int op=5Fnum)=0A-{=0A- int i;=0A-= int ret =3D 0;=0A- for (i =3D 0; i < FFSB=5FNUMOPS; i++) {=0A- if (i =3D= =3D op=5Fnum)=0A- continue;=0A- ret +=3D results->ops[i];=0A- }=0A-=0A- = if (ret)=0A- return 0;=0A- return 1;=0A-}=0A-=0A-static void generic=5Fop= =5Fprint(char *name, unsigned num, double op=5Fpcnt,=0A- double weig= th=5Fpcnt, double runtime, char *tput)=0A-{=0A- printf("%20s : %12u\t%10.2l= f\t%6.3lf%%\t\t%6.3lf%%\t %11s\n",=0A- name, num, num / runtime, op= =5Fpcnt, weigth=5Fpcnt, tput);=0A-}=0A-=0A-static void print=5Fop=5Fresults= (unsigned int op=5Fnum, ffsb=5Fop=5Fresults=5Ft * results,=0A- doubl= e runtime, unsigned total=5Fops,=0A- unsigned total=5Fweight)=0A-{= =0A- char buf[256];=0A-=0A- double op=5Fpcnt =3D 100 * (double)results->ops= [op=5Fnum] / (double)total=5Fops;=0A- double weight=5Fpcnt =3D 100 * (doubl= e)results->op=5Fweight[op=5Fnum] /=0A- (double)total=5Fweight;=0A- if (= ffsb=5Fop=5Flist[op=5Fnum].throughput) {=0A- ffsb=5Fprintsize(buf, results= ->bytes[op=5Fnum] / runtime, 256);=0A- sprintf(buf, "%s/sec\0", buf);=0A- = } else=0A- sprintf(buf, "NA\0");=0A- generic=5Fop=5Fprint(ffsb=5Fop=5Flist= [op=5Fnum].op=5Fname, results->ops[op=5Fnum],=0A- op=5Fpcnt, weight=5Fpc= nt, runtime, buf);=0A-}=0A-=0A-#if 0=0A-static void print=5Fop=5Fthroughput= (unsigned int op=5Fnum,=0A- ffsb=5Fop=5Fresults=5Ft * results, double ru= ntime)=0A-{=0A- if (ffsb=5Fop=5Flist[op=5Fnum].op=5Fexl=5Fprint=5Ffn !=3D N= ULL)=0A- ffsb=5Fop=5Flist[op=5Fnum].op=5Fexl=5Fprint=5Ffn(results, runtime= , op=5Fnum);=0A-}=0A-#endif=0A-=0A-void print=5Fresults(struct ffsb=5Fop=5F= results *results, double runtime)=0A-{=0A- int i;=0A- uint64=5Ft total=5Fop= s =3D 0;=0A- uint64=5Ft total=5Fweight =3D 0;=0A- char buf[256];=0A-=0A- fo= r (i =3D 0; i < FFSB=5FNUMOPS; i++) {=0A- total=5Fops +=3D results->ops[i]= ;=0A- total=5Fweight +=3D results->op=5Fweight[i];=0A- }=0A-=0A- printf=0A= - (" Op Name Transactions\t Trans/sec\t% Trans\t % Op = Weight\t Throughput\n");=0A- printf=0A- (" =3D=3D=3D=3D= =3D=3D=3D =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D\t =3D=3D=3D=3D=3D=3D=3D=3D= =3D\t=3D=3D=3D=3D=3D=3D=3D\t =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D\t =3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D\n");=0A- for (i =3D 0; i < FFSB=5FNUMOPS; i++)= =0A- if (results->ops[i] !=3D 0)=0A- print=5Fop=5Fresults(i, results, ru= ntime, total=5Fops,=0A- total=5Fweight);=0A- printf("-\n%.2lf Transact= ions per Second\n\n",=0A- (double)total=5Fops / runtime);=0A-=0A- if= (results->write=5Fbytes || results->read=5Fbytes)=0A- printf("Throughput = Results\n=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D\n");=0A-= if (results->read=5Fbytes) {=0A- ffsb=5Fprintsize(buf, results->read=5Fby= tes / runtime, 256);=0A- printf("Read Throughput: %s/sec\n", buf);=0A- }= =0A- if (results->write=5Fbytes) {=0A- ffsb=5Fprintsize(buf, results->writ= e=5Fbytes / runtime, 256);=0A- printf("Write Throughput: %s/sec\n", buf);= =0A- }=0A-}=0A-=0A-char *op=5Fget=5Fname(int opnum)=0A-{=0A- return ffsb=5F= op=5Flist[opnum].op=5Fname;=0A-}=0A-=0A-void ops=5Fsetup=5Fbench(ffsb=5Ffs= =5Ft * fs)=0A-{=0A- int i;=0A- for (i =3D 0; i < FFSB=5FNUMOPS; i++)=0A- f= fsb=5Fop=5Flist[i].op=5Fbench(fs, i);=0A-}=0A-=0A-void ops=5Fsetup=5Fage(ff= sb=5Ffs=5Ft * fs)=0A-{=0A- int i;=0A- for (i =3D 0; i < FFSB=5FNUMOPS; i++)= =0A- if (ffsb=5Fop=5Flist[i].op=5Fage)=0A- ffsb=5Fop=5Flist[i].op=5Fage(= fs, i);=0A-}=0A-=0A-int ops=5Ffind=5Fop(char *opname)=0A-{=0A- int i;=0A- f= or (i =3D 0; i < FFSB=5FNUMOPS; i++)=0A- if (!strcmp(opname, ffsb=5Fop=5Fl= ist[i].op=5Fname))=0A- return i;=0A- return -1;=0A-}=0A-=0A-void add=5Fre= sults(struct ffsb=5Fop=5Fresults *target, struct ffsb=5Fop=5Fresults *src)= =0A-{=0A- int i;=0A- target->read=5Fbytes +=3D src->read=5Fbytes;=0A- targe= t->write=5Fbytes +=3D src->write=5Fbytes;=0A-=0A- for (i =3D 0; i < FFSB=5F= NUMOPS; i++) {=0A- target->ops[i] +=3D src->ops[i];=0A- target->op=5Fweig= ht[i] +=3D src->op=5Fweight[i];=0A- target->bytes[i] +=3D src->bytes[i];= =0A- }=0A-}=0A-=0A-void do=5Fop(struct ffsb=5Fthread *ft, struct ffsb=5Ffs = *fs, unsigned op=5Fnum)=0A-{=0A- ffsb=5Fop=5Flist[op=5Fnum].op=5Ffn(ft, fs,= op=5Fnum);=0A-}=0Adiff --git a/testcases/kernel/fs/ext4-new-features/ffsb-= 6.0-rc2/ffsb=5Fop.h b/testcases/kernel/fs/ext4-new-features/ffsb-6.0-rc2/ff= sb=5Fop.h=0Adeleted file mode 100644=0Aindex a0064a5..0000000=0A--- a/testc= ases/kernel/fs/ext4-new-features/ffsb-6.0-rc2/ffsb=5Fop.h=0A+++ /dev/null= =0A@@ -1,102 +0,0 @@=0A-/*=0A- * Copyright (c) International Business Mac= hines Corp., 2001-2004=0A- *=0A- * This program is free software; you ca= n redistribute it and/or modify=0A- * it under the terms of the GNU Gener= al Public License as published by=0A- * the Free Software Foundation; eit= her version 2 of the License, or=0A- * (at your option) any later version= .=0A- *=0A- * This program is distributed in the hope that it will be use= ful,=0A- * but WITHOUT ANY WARRANTY; without even the implied warranty o= f=0A- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See=0A- * = the GNU General Public License for more details.=0A- *=0A- * You should = have received a copy of the GNU General Public License=0A- * along with t= his program; if not, write to the Free Software=0A- * Foundation, Inc., = 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA=0A- */=0A-#ifnde= f =5FFFSB=5FOP=5FH=5F=0A-#define =5FFFSB=5FOP=5FH=5F=0A-=0A-#include =0A-#include =0A-#include =0A-=0A-struct ffsb= =5Fop=5Fresults;=0A-struct ffsb=5Fthread;=0A-struct ffsb=5Ffs;=0A-=0A-#defi= ne NA 0x00=0A-#define READ 0x01=0A-#define WRITE 0x02=0A-=0A-/* This file h= andles all of the operations FFSB supports. It has=0A- * tight interaction= s with the filesystem objects, but is otherwise=0A- * pretty abstract.=0A- = */=0A-=0A-/* The op callback */=0A-typedef void (*ffsb=5Fop=5Ffn)(struct ff= sb=5Fthread *, struct ffsb=5Ffs *,=0A- unsigned op=5Fnum);=0A-=0A-/*= Operation results printing function */=0A-typedef void (*ffsb=5Fop=5Fprint= =5Ffn)(struct ffsb=5Fop=5Fresults *, double secs,=0A- unsigned int op= =5Fnum);=0A-=0A-/* Operation specific initialization for a filesystem */=0A= -typedef void (*ffsb=5Fop=5Ffs=5Ffn)(struct ffsb=5Ffs *, unsigned opnum);= =0A-=0A-typedef struct ffsb=5Fop {=0A- unsigned int op=5Fid;=0A- char *op= =5Fname;=0A- ffsb=5Fop=5Ffn op=5Ffn;=0A-=0A- unsigned int throughput;=0A- /= * The point of these two fields is to determine which set of=0A- * files a= re being worked on. Currently either data, meta, or=0A- * aging. Data an= d meta are mutually exclusive, so we only=0A- * need two funcs.=0A- */=0A= - ffsb=5Fop=5Ffs=5Ffn op=5Fbench;=0A- ffsb=5Fop=5Ffs=5Ffn op=5Fage;=0A-} ff= sb=5Fop=5Ft;=0A-=0A-/* List of all operations, located in ffsb=5Fop.c */=0A= -extern ffsb=5Fop=5Ft ffsb=5Fop=5Flist[];=0A-=0A-/* This *must* be updated = when a new operation is added or one is=0A- * removed several other structu= res use it for statically sized arrays=0A- */=0A-#define FFSB=5FNUMOPS (15)= =0A-=0A-/* Returns index of an op.=0A- * Returns -1 if opname isn't found, = and its case sensitive :)=0A- */=0A-int ops=5Ffind=5Fop(char *opname);=0A-= =0A-typedef struct ffsb=5Fop=5Fresults {=0A- /* Count of how many times eac= h op was run */=0A- unsigned int ops[FFSB=5FNUMOPS];=0A- unsigned int op=5F= weight[FFSB=5FNUMOPS];=0A- uint64=5Ft bytes[FFSB=5FNUMOPS];=0A-=0A- uint64= =5Ft read=5Fbytes;=0A- uint64=5Ft write=5Fbytes;=0A-} ffsb=5Fop=5Fresults= =5Ft;=0A-=0A-void init=5Fffsb=5Fop=5Fresults(struct ffsb=5Fop=5Fresults *);= =0A-void print=5Fresults(struct ffsb=5Fop=5Fresults *results, double runtim= e);=0A-char *op=5Fget=5Fname(int opnum);=0A-=0A-/* Setup the ops for the be= nchmark */=0A-void ops=5Fsetup=5Fbench(struct ffsb=5Ffs *fs);=0A-=0A-/* set= up the ops for aging the filesystem */=0A-void ops=5Fsetup=5Fage(struct ffs= b=5Ffs *fs);=0A-=0A-void add=5Fresults(struct ffsb=5Fop=5Fresults *target, = struct ffsb=5Fop=5Fresults *src);=0A-=0A-/* Run this op, using this thread = state, on this filesystem */=0A-void do=5Fop(struct ffsb=5Fthread *ft, stru= ct ffsb=5Ffs *fs, unsigned op=5Fnum);=0A-=0A-#endif /* =5FFFSB=5FOP=5FH=5F = */=0Adiff --git a/testcases/kernel/fs/ext4-new-features/ffsb-6.0-rc2/ffsb= =5Fstats.c b/testcases/kernel/fs/ext4-new-features/ffsb-6.0-rc2/ffsb=5Fstat= s.c=0Adeleted file mode 100644=0Aindex 2b3a3be..0000000=0A--- a/testcases/k= ernel/fs/ext4-new-features/ffsb-6.0-rc2/ffsb=5Fstats.c=0A+++ /dev/null=0A@@= -1,240 +0,0 @@=0A-#include =0A-#include =0A-#include =0A-#include "ffsb=5Fstats.h"=0A-#include "util.h"=0A-=0A-char *sys= call=5Fnames[] =3D {=0A- "open",=0A- "read",=0A- "write",=0A- "create",=0A-= "lseek",=0A- "unlink",=0A- "close",=0A- "stat",=0A-};=0A-=0A-/* yuck, just= for the parser anyway.. */=0A-int ffsb=5Fstats=5Fstr2syscall(char *str, sy= scall=5Ft * sys)=0A-{=0A- int i;=0A- int ret;=0A- for (i =3D 0; i < FFSB=5F= NUM=5FSYSCALLS; i++) {=0A- ret =3D strncasecmp(syscall=5Fnames[i], str,=0A= - strlen(syscall=5Fnames[i]));=0A- /* printf("%s =3D syscall=5Fnames[= %d] vs %str ret =3D %d\n",=0A- * syscall=5Fnames[i],i,str,ret);=0A- */= =0A- if (0 =3D=3D ret) {=0A- *sys =3D (syscall=5Ft) i; /* ewww */=0A- = /* printf("matched syscall %s\n",syscall=5Fnames[i]); */=0A- return 1;=0A= - }=0A- }=0A- printf("warning: failed to get match for syscall %s\n", str)= ;=0A- return 0;=0A-}=0A-=0A-void ffsb=5Fstatsc=5Finit(ffsb=5Fstatsc=5Ft * f= sc)=0A-{=0A- fsc->num=5Fbuckets =3D 0;=0A- fsc->buckets =3D NULL;=0A- fsc->= ignore=5Fstats =3D 0;=0A-}=0A-=0A-void ffsb=5Fstatsc=5Faddbucket(ffsb=5Fsta= tsc=5Ft * fsc, uint32=5Ft min, uint32=5Ft max)=0A-{=0A- struct stat=5Fbucke= t *temp;=0A- fsc->num=5Fbuckets++;=0A-=0A- /* printf("ffsb=5Frealloc(): fsc= =5Fbuckets =3D %d\n",fsc->num=5Fbuckets); */=0A- temp =3D ffsb=5Frealloc(fs= c->buckets, sizeof(struct stat=5Fbucket) *=0A- fsc->num=5Fbuckets);= =0A-=0A- fsc->buckets =3D temp;=0A-=0A- /* Convert to micro-secs from milli= -secs */=0A- fsc->buckets[fsc->num=5Fbuckets - 1].min =3D min;=0A- fsc->buc= kets[fsc->num=5Fbuckets - 1].max =3D max;=0A-}=0A-=0A-void ffsb=5Fstatsc=5F= destroy(ffsb=5Fstatsc=5Ft * fsc)=0A-{=0A- free(fsc->buckets);=0A-}=0A-=0A-v= oid ffsb=5Fstatsc=5Fignore=5Fsys(ffsb=5Fstatsc=5Ft * fsc, syscall=5Ft s)=0A= -{=0A- /* printf("fsis: oring 0x%x with 0x%x\n",=0A- * fsc->ignore=5F= stats,=0A- * (1 << s ) );=0A- */=0A- fsc->ignore=5Fstats |=3D (1 << = s);=0A-}=0A-=0A-int fsc=5Fignore=5Fsys(ffsb=5Fstatsc=5Ft * fsc, syscall=5Ft= s)=0A-{=0A- return fsc->ignore=5Fstats & (1 << s);=0A-}=0A-=0A-void ffsb= =5Fstatsd=5Finit(ffsb=5Fstatsd=5Ft * fsd, ffsb=5Fstatsc=5Ft * fsc)=0A-{=0A-= int i;=0A- memset(fsd, 0, sizeof(*fsd));=0A-=0A- for (i =3D 0; i < FFSB=5F= NUM=5FSYSCALLS; i++) {=0A- fsd->totals[i] =3D 0;=0A- fsd->mins[i] =3D UIN= T=5FMAX;=0A- fsd->maxs[i] =3D 0;=0A- fsd->buckets[i] =3D ffsb=5Fmalloc(si= zeof(uint32=5Ft) *=0A- fsc->num=5Fbuckets);=0A- assert(fsd->buck= ets[i] !=3D NULL);=0A-=0A- memset(fsd->buckets[i], 0, sizeof(uint32=5Ft) *= fsc->num=5Fbuckets);=0A- }=0A- fsd->config =3D fsc;=0A-}=0A-=0A-void ffsb= =5Fstatsd=5Fdestroy(ffsb=5Fstatsd=5Ft * fsd)=0A-{=0A- int i;=0A- for (i =3D= 0; i < FFSB=5FNUM=5FSYSCALLS; i++)=0A- free(fsd->buckets[i]);=0A-}=0A-=0A= -void ffsb=5Fadd=5Fdata(ffsb=5Fstatsd=5Ft * fsd, syscall=5Ft s, uint32=5Ft = value)=0A-{=0A- unsigned num=5Fbuckets, i;=0A- struct stat=5Fbucket *bucket= =5Fdefs;=0A-=0A- if (!fsd || fsc=5Fignore=5Fsys(fsd->config, s))=0A- retur= n;=0A-=0A- if (value < fsd->mins[s])=0A- fsd->mins[s] =3D value;=0A- if (v= alue > fsd->maxs[s])=0A- fsd->maxs[s] =3D value;=0A-=0A- fsd->counts[s]++;= =0A- fsd->totals[s] +=3D value;=0A-=0A- if (fsd->config->num=5Fbuckets =3D= =3D 0)=0A- return;=0A-=0A- num=5Fbuckets =3D fsd->config->num=5Fbuckets;= =0A- bucket=5Fdefs =3D fsd->config->buckets;=0A-=0A- for (i =3D 0; i < num= =5Fbuckets; i++) {=0A- struct stat=5Fbucket *b =3D &bucket=5Fdefs[i];=0A-= =0A- if (value <=3D b->max && value >=3D b->min) {=0A- fsd->buckets[s][i= ]++;=0A- break;=0A- }=0A- }=0A-}=0A-=0A-void ffsb=5Fstatsc=5Fcopy(ffsb= =5Fstatsc=5Ft * dest, ffsb=5Fstatsc=5Ft * src)=0A-{=0A- memcpy(dest, src, s= izeof(*src));=0A-}=0A-=0A-void ffsb=5Fstatsd=5Fadd(ffsb=5Fstatsd=5Ft * dest= , ffsb=5Fstatsd=5Ft * src)=0A-{=0A- int i, j;=0A- unsigned num=5Fbuckets;= =0A- if (dest->config !=3D src->config)=0A- printf("ffsb=5Fstatsd=5Fadd: w= arning configs do not"=0A- "match for data being collected\n");=0A-= =0A- num=5Fbuckets =3D dest->config->num=5Fbuckets;=0A-=0A- for (i =3D 0; i= < FFSB=5FNUM=5FSYSCALLS; i++) {=0A- dest->counts[i] +=3D src->counts[i];= =0A- dest->totals[i] +=3D src->totals[i];=0A-=0A- if (src->mins[i] < dest= ->mins[i])=0A- dest->mins[i] =3D src->mins[i];=0A- if (src->maxs[i] > de= st->maxs[i])=0A- dest->maxs[i] =3D src->maxs[i];=0A-=0A- for (j =3D 0; j= < num=5Fbuckets; j++)=0A- dest->buckets[i][j] +=3D src->buckets[i][j];= =0A- }=0A-}=0A-=0A-static void print=5Fbuckets=5Fhelper(ffsb=5Fstatsc=5Ft *= fsc, uint32=5Ft * buckets)=0A-{=0A- int i;=0A- if (fsc->num=5Fbuckets =3D= =3D 0) {=0A- printf(" -\n");=0A- return;=0A- }=0A- for (i =3D 0; i < fs= c->num=5Fbuckets; i++) {=0A- struct stat=5Fbucket *sb =3D &fsc->buckets[i]= ;=0A- printf("\t\t msec=5Frange[%d]\t%f - %f : %8u\n",=0A- i, (dou= ble)sb->min / 1000.0f, (double)sb->max / 1000.0f,=0A- buckets[i]);= =0A- }=0A- printf("\n");=0A-}=0A-=0A-void ffsb=5Fstatsd=5Fprint(ffsb=5Fstat= sd=5Ft * fsd)=0A-{=0A- int i;=0A- printf("\nSystem Call Latency statistics = in millisecs\n" "=3D=3D=3D=3D=3D\n");=0A- printf("\t\tMin\t\tAvg\t\tMax\t\t= Total Calls\n");=0A- printf("\t\t=3D=3D=3D=3D=3D=3D=3D=3D\t=3D=3D=3D=3D=3D= =3D=3D=3D\t=3D=3D=3D=3D=3D=3D=3D=3D\t=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D\n= ");=0A- for (i =3D 0; i < FFSB=5FNUM=5FSYSCALLS; i++)=0A- if (fsd->counts[= i]) {=0A- printf("[%7s]\t%05f\t%05lf\t%05f\t%12u\n",=0A- syscall= =5Fnames[i], (float)fsd->mins[i] / 1000.0f,=0A- (fsd->totals[i] / = (1000.0f *=0A- (double)fsd->counts[i])),=0A- (float)fsd->ma= xs[i] / 1000.0f, fsd->counts[i]);=0A- print=5Fbuckets=5Fhelper(fsd->confi= g, fsd->buckets[i]);=0A- }=0A-}=0A-=0A-#if 0 /* Testing */=0A-=0A-void = *ffsb=5Fmalloc(size=5Ft s)=0A-{=0A- void *p =3D malloc(s);=0A- assert(p != =3D NULL);=0A- return p;=0A-}=0A-=0A-int main(int arc, char *argv[])=0A-{= =0A- ffsb=5Fstatsc=5Ft fsc;=0A- ffsb=5Fstatsd=5Ft fsd;=0A- int i;=0A-=0A- p= rintf("init\n");=0A-=0A- ffsb=5Fstatsc=5Finit(&fsc, 10);=0A- ffsb=5Fstatsc= =5Fsetbucket(&fsc, 0, 0.0f, 50.0f);=0A- ffsb=5Fstatsc=5Fsetbucket(&fsc, 1, = 50.0f, 10000.0f);=0A- ffsb=5Fstatsc=5Fsetbucket(&fsc, 2, 0.1f, 0.2f);=0A- f= fsb=5Fstatsc=5Fsetbucket(&fsc, 3, 0.0f, 50.0f);=0A- ffsb=5Fstatsc=5Fsetbuck= et(&fsc, 4, 50.0f, 10000.0f);=0A- ffsb=5Fstatsc=5Fsetbucket(&fsc, 5, 0.1f, = 0.2f);=0A- ffsb=5Fstatsc=5Fsetbucket(&fsc, 6, 0.0f, 50.0f);=0A- ffsb=5Fstat= sc=5Fsetbucket(&fsc, 7, 50.0f, 10000.0f);=0A- ffsb=5Fstatsc=5Fsetbucket(&fs= c, 8, 0.1f, 0.2f);=0A- ffsb=5Fstatsc=5Fsetbucket(&fsc, 9, 50.0f, 10000.0f);= =0A- ffsb=5Fstatsd=5Finit(&fsd, &fsc);=0A-=0A- printf("test\n");=0A- for (i= =3D 0; i < 50000000; i++)=0A- ffsb=5Fadd=5Fdata(&fsd, SYS=5FREAD, (float)= i);=0A-=0A- printf("cleanup\n");=0A- ffsb=5Fstatsd=5Fdestroy(&fsd);=0A- ffs= b=5Fstatsc=5Fdestroy(&fsc);=0A- return 0;=0A-}=0A-=0A-#endif /* Testing */= =0Adiff --git a/testcases/kernel/fs/ext4-new-features/ffsb-6.0-rc2/ffsb=5Fs= tats.h b/testcases/kernel/fs/ext4-new-features/ffsb-6.0-rc2/ffsb=5Fstats.h= =0Adeleted file mode 100644=0Aindex 616e12e..0000000=0A--- a/testcases/kern= el/fs/ext4-new-features/ffsb-6.0-rc2/ffsb=5Fstats.h=0A+++ /dev/null=0A@@ -1= ,109 +0,0 @@=0A-/*=0A- * Copyright (c) International Business Machines Co= rp., 2001-2007=0A- *=0A- * This program is free software; you can redist= ribute it and/or modify=0A- * it under the terms of the GNU General Publi= c License as published by=0A- * the Free Software Foundation; either vers= ion 2 of the License, or=0A- * (at your option) any later version.=0A- *= =0A- * This program is distributed in the hope that it will be useful,=0A= - * but WITHOUT ANY WARRANTY; without even the implied warranty of=0A- *= MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See=0A- * the GN= U General Public License for more details.=0A- *=0A- * You should have re= ceived a copy of the GNU General Public License=0A- * along with this pro= gram; if not, write to the Free Software=0A- * Foundation, Inc., 51 Fran= klin Street, Fifth Floor, Boston, MA 02110-1301 USA=0A- */=0A-#ifndef =5FFF= SB=5FSTATS=5FH=5F=0A-#define =5FFFSB=5FSTATS=5FH=5F=0A-=0A-#include =0A-=0A-/* Latency statistics collection extension.=0A- *=0A- * For no= w, we are going to collect latency info on each (most)=0A- * syscalls using= gettimeofday. Unfortunately, it is the=0A- * responsibility of each operat= ion to collect this timing info. We=0A- * try to make this easier by provi= ding a function that does the=0A- * timing for supported syscalls.=0A- *=0A= - * We want the ability to collect the average latency for a particular=0A-= * call, and also to collect latency info for user specified intervals=0A- = * -- called "buckets"=0A- */=0A-=0A-struct stat=5Fbucket {=0A- uint32=5Ft m= in;=0A- uint32=5Ft max;=0A- /* max =3D 0 indicates uninitialized bucket */= =0A-};=0A-=0A-/* These are all the syscalls we currently support */=0A-type= def enum { SYS=5FOPEN =3D 0,=0A- SYS=5FREAD,=0A- SYS=5FWRITE,= =0A- SYS=5FCREATE,=0A- SYS=5FLSEEK,=0A- SYS=5FUNLINK,= =0A- SYS=5FCLOSE,=0A- SYS=5FSTAT=0A-} syscall=5Ft;=0A-=0A-/* = ASCII versions of the syscall names */=0A-extern char *syscall=5Fnames[];= =0A-=0A-/* Return 1 on success, 0 on error */=0A-int ffsb=5Fstats=5Fstr2sys= call(char *, syscall=5Ft *);=0A-=0A-/* Keep it in sync with syscall=5Ft */= =0A-#define FFSB=5FNUM=5FSYSCALLS (8UL)=0A-=0A-/* What stats to collect, sh= ared among all threads */=0A-typedef struct ffsb=5Fstats=5Fconfig {=0A- un= signed num=5Fbuckets;=0A- struct stat=5Fbucket *buckets;=0A-=0A- /* Ignore = stats collection for some syscalls.=0A- * Each bit corresponds to one sysc= all.=0A- */=0A- uint32=5Ft ignore=5Fstats;=0A-} ffsb=5Fstatsc=5Ft;=0A-=0A-= void ffsb=5Fstatsc=5Finit(ffsb=5Fstatsc=5Ft *);=0A-void ffsb=5Fstatsc=5Fadd= bucket(ffsb=5Fstatsc=5Ft *, uint32=5Ft min, uint32=5Ft max);=0A-void ffsb= =5Fstatsc=5Fignore=5Fsys(ffsb=5Fstatsc=5Ft *, syscall=5Ft s);=0A-void ffsb= =5Fstatsc=5Fdestroy(ffsb=5Fstatsc=5Ft *);=0A-=0A-/* If we are collecting st= ats, then the config field is non-NULL */=0A-typedef struct ffsb=5Fstats=5F= data {=0A- ffsb=5Fstatsc=5Ft *config;=0A- uint32=5Ft counts[FFSB=5FNUM=5FSY= SCALLS];=0A- uint64=5Ft totals[FFSB=5FNUM=5FSYSCALLS]; /* cumulative sums *= /=0A- uint64=5Ft mins[FFSB=5FNUM=5FSYSCALLS];=0A- uint64=5Ft maxs[FFSB=5FNU= M=5FSYSCALLS];=0A- uint32=5Ft *buckets[FFSB=5FNUM=5FSYSCALLS]; /* bucket co= unters */=0A-} ffsb=5Fstatsd=5Ft ;=0A-=0A-/* constructor/destructor */=0A-v= oid ffsb=5Fstatsd=5Finit(ffsb=5Fstatsd=5Ft *, ffsb=5Fstatsc=5Ft *);=0A-void= ffsb=5Fstatsd=5Fdestroy(ffsb=5Fstatsd=5Ft *);=0A-=0A-/* Add data to a stat= s data struct. Value should be in microsecs=0A- * =5FNOT=5F milli-secs=0A-= */=0A-void ffsb=5Fadd=5Fdata(ffsb=5Fstatsd=5Ft *, syscall=5Ft, uint32=5Ft)= ;=0A-=0A-/* Make a copy of a stats config */=0A-void ffsb=5Fstatsc=5Fcopy(f= fsb=5Fstatsc=5Ft *, ffsb=5Fstatsc=5Ft *);=0A-=0A-/* Add two statsd structs = together */=0A-void ffsb=5Fstatsd=5Fadd(ffsb=5Fstatsd=5Ft *, ffsb=5Fstatsd= =5Ft *);=0A-=0A-/* Print out statsd structure */=0A-void ffsb=5Fstatsd=5Fpr= int(ffsb=5Fstatsd=5Ft *fsd);=0A-=0A-/* Do we want stats for the specified s= yscall */=0A-int fsc=5Fignore=5Fsys(ffsb=5Fstatsc=5Ft *fsc, syscall=5Ft s);= =0A-=0A-#endif /* =5FFFSB=5FSTATS=5FH=5F */=0Adiff --git a/testcases/kernel= /fs/ext4-new-features/ffsb-6.0-rc2/ffsb=5Ftg.c b/testcases/kernel/fs/ext4-n= ew-features/ffsb-6.0-rc2/ffsb=5Ftg.c=0Adeleted file mode 100644=0Aindex 881= f32d..0000000=0A--- a/testcases/kernel/fs/ext4-new-features/ffsb-6.0-rc2/ff= sb=5Ftg.c=0A+++ /dev/null=0A@@ -1,369 +0,0 @@=0A-/*=0A- * Copyright (c) I= nternational Business Machines Corp., 2001-2004=0A- *=0A- * This program = is free software; you can redistribute it and/or modify=0A- * it under t= he terms of the GNU General Public License as published by=0A- * the Free= Software Foundation; either version 2 of the License, or=0A- * (at your = option) any later version.=0A- *=0A- * This program is distributed in the= hope that it will be useful,=0A- * but WITHOUT ANY WARRANTY; without ev= en the implied warranty of=0A- * MERCHANTABILITY or FITNESS FOR A PARTICU= LAR PURPOSE. See=0A- * the GNU General Public License for more details.= =0A- *=0A- * You should have received a copy of the GNU General Public Li= cense=0A- * along with this program; if not, write to the Free Software= =0A- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 0211= 0-1301 USA=0A- */=0A-#include =0A-#include =0A-#include = =0A-#include =0A-=0A-#include "ffsb=5Ftg.h"=0A-#includ= e "util.h"=0A-=0A-void init=5Fffsb=5Ftg(ffsb=5Ftg=5Ft * tg, unsigned num=5F= threads, unsigned tg=5Fnum)=0A-{=0A- int i;=0A- memset(tg, 0, sizeof(ffsb= =5Ftg=5Ft));=0A-=0A- tg->threads =3D ffsb=5Fmalloc(sizeof(ffsb=5Fthread=5Ft= ) * num=5Fthreads);=0A- tg->tg=5Fnum =3D tg=5Fnum;=0A- tg->num=5Fthreads = =3D num=5Fthreads;=0A-=0A- tg->bindfs =3D -1; /* default is not bound */=0A= -=0A- tg->thread=5Fbufsize =3D 0;=0A- for (i =3D 0; i < num=5Fthreads; i++)= =0A- init=5Fffsb=5Fthread(tg->threads + i, tg, 0, tg=5Fnum, i);=0A-}=0A-= =0A-void destroy=5Fffsb=5Ftg(ffsb=5Ftg=5Ft * tg)=0A-{=0A- int i;=0A- for (i= =3D 0; i < tg->num=5Fthreads; i++)=0A- destroy=5Fffsb=5Fthread(tg->thread= s + i);=0A- free(tg->threads);=0A- if (tg=5Fneeds=5Fstats(tg))=0A- ffsb=5F= statsc=5Fdestroy(&tg->fsc);=0A-}=0A-=0A-void *tg=5Frun(void *data)=0A-{=0A-= tg=5Frun=5Fparams=5Ft *params =3D (tg=5Frun=5Fparams=5Ft *) data;=0A- ffsb= =5Ftg=5Ft *tg =3D params->tg;=0A- int i;=0A- pthread=5Fattr=5Ft attr;=0A-= =0A- pthread=5Fattr=5Finit(&attr);=0A- pthread=5Fattr=5Fsetscope(&attr, PTH= READ=5FSCOPE=5FSYSTEM);=0A-=0A- tg->start=5Fbarrier =3D params->thread=5Fba= rrier;=0A-=0A- /* Sum up the weights for use later by tg=5Fget=5Fop() */=0A= - tg->sum=5Fweights =3D 0;=0A- for (i =3D 0; i < FFSB=5FNUMOPS; i++)=0A- t= g->sum=5Fweights +=3D tg->op=5Fweights[i];=0A-=0A- tg->fc =3D params->fc;= =0A- tg->flagval =3D -1;=0A- tg->stopval =3D 1;=0A-=0A- /* spawn threads */= =0A- for (i =3D 0; i < tg->num=5Fthreads; i++) {=0A- ffsb=5Fthread=5Ft *ft= =3D &tg->threads[i];=0A- pthread=5Fcreate(&ft->ptid, &attr, ft=5Frun, ft)= ;=0A- }=0A-=0A- if (params->tg=5Fbarrier)=0A- ffsb=5Fbarrier=5Fwait(params= ->tg=5Fbarrier);=0A-=0A- /* wait for termination condition to be true */=0A= - do {=0A- ffsb=5Fsleep(params->wait=5Ftime);=0A- } while (params->poll=5F= fn(params->poll=5Fdata) =3D=3D 0);=0A-=0A- /* set flag value */=0A- tg->fla= gval =3D tg->stopval;=0A-=0A- /* wait on theads to finish */=0A- for (i =3D= 0; i < tg->num=5Fthreads; i++)=0A- pthread=5Fjoin(tg->threads[i].ptid, NU= LL);=0A-=0A- return NULL;=0A-}=0A-=0A-/* Needs to set params->opnum and par= ams->fs */=0A-void tg=5Fget=5Fop(ffsb=5Ftg=5Ft * tg, randdata=5Ft * rd, tg= =5Fop=5Fparams=5Ft * params)=0A-{=0A- unsigned curop;=0A- int num;=0A- int = fsnum;=0A-=0A- num =3D 1 + getrandom(rd, tg->sum=5Fweights);=0A- curop =3D = 0;=0A-=0A- while (tg->op=5Fweights[curop] < num) {=0A- num -=3D tg->op=5Fw= eights[curop];=0A- curop++;=0A- }=0A-=0A- params->opnum =3D curop;=0A-=0A-= /* If we're bound to a particular filesystem, use that,=0A- * otherwise, = pick one at random.=0A- */=0A- fsnum =3D tg->bindfs;=0A- if (fsnum < 0)=0A= - fsnum =3D getrandom(rd, tg->fc->num=5Ffilesys);=0A-=0A- params->fs =3D f= c=5Fget=5Ffs(tg->fc, fsnum);=0A-}=0A-=0A-void tg=5Fset=5Fop=5Fweight(ffsb= =5Ftg=5Ft * tg, char *opname, unsigned weight)=0A-{=0A- int opnum =3D ops= =5Ffind=5Fop(opname);=0A- assert(opnum >=3D 0);=0A- tg->op=5Fweights[opnum]= =3D weight;=0A-}=0A-=0A-unsigned tg=5Fget=5Fop=5Fweight(ffsb=5Ftg=5Ft * tg= , char *opname)=0A-{=0A- int opnum =3D ops=5Ffind=5Fop(opname);=0A- assert(= opnum >=3D 0);=0A- return tg->op=5Fweights[opnum];=0A-}=0A-=0A-void tg=5Fse= t=5Fbindfs(ffsb=5Ftg=5Ft * tg, int fsnum)=0A-{=0A- tg->bindfs =3D fsnum;=0A= -}=0A-=0A-int tg=5Fget=5Fbindfs(ffsb=5Ftg=5Ft * tg)=0A-{=0A- return tg->bin= dfs;=0A-}=0A-=0A-unsigned tg=5Fget=5Fnumthreads(ffsb=5Ftg=5Ft * tg)=0A-{=0A= - return tg->num=5Fthreads;=0A-}=0A-=0A-static void update=5Fbufsize(ffsb= =5Ftg=5Ft * tg)=0A-{=0A- int i;=0A- uint32=5Ft newmax =3D max(tg->read=5Fbl= ocksize, tg->write=5Fblocksize);=0A-=0A- if (newmax =3D=3D max(newmax, tg->= thread=5Fbufsize))=0A- for (i =3D 0; i < tg->num=5Fthreads; i++)=0A- ft= =5Falter=5Fbufsize(tg->threads + i, newmax);=0A-}=0A-=0A-void tg=5Fset=5Fre= ad=5Frandom(ffsb=5Ftg=5Ft * tg, int rr)=0A-{=0A- tg->read=5Frandom =3D rr;= =0A-}=0A-=0A-void tg=5Fset=5Fwrite=5Frandom(ffsb=5Ftg=5Ft * tg, int wr)=0A-= {=0A- tg->write=5Frandom =3D wr;=0A-}=0A-=0A-void tg=5Fset=5Ffsync=5Ffile(f= fsb=5Ftg=5Ft * tg, int fsync)=0A-{=0A- tg->fsync=5Ffile =3D fsync;=0A-}=0A-= =0A-void tg=5Fset=5Fread=5Fsize(ffsb=5Ftg=5Ft * tg, uint64=5Ft rs)=0A-{=0A-= tg->read=5Fsize =3D rs;=0A-}=0A-=0A-void tg=5Fset=5Fread=5Fblocksize(ffsb= =5Ftg=5Ft * tg, uint32=5Ft rs)=0A-{=0A- tg->read=5Fblocksize =3D rs;=0A- up= date=5Fbufsize(tg);=0A-}=0A-=0A-void tg=5Fset=5Fread=5Fskip(ffsb=5Ftg=5Ft *= tg, int rs)=0A-{=0A- tg->read=5Fskip =3D rs;=0A-}=0A-=0A-void tg=5Fset=5Fr= ead=5Fskipsize(ffsb=5Ftg=5Ft * tg, uint32=5Ft rs)=0A-{=0A- tg->read=5Fskips= ize =3D rs;=0A-}=0A-=0A-void tg=5Fset=5Fwrite=5Fsize(ffsb=5Ftg=5Ft * tg, ui= nt64=5Ft ws)=0A-{=0A- tg->write=5Fsize =3D ws;=0A-}=0A-=0A-void tg=5Fset=5F= write=5Fblocksize(ffsb=5Ftg=5Ft * tg, uint32=5Ft ws)=0A-{=0A- tg->write=5Fb= locksize =3D ws;=0A- update=5Fbufsize(tg);=0A-}=0A-=0A-int tg=5Fget=5Fread= =5Frandom(ffsb=5Ftg=5Ft * tg)=0A-{=0A- return tg->read=5Frandom;=0A-}=0A-= =0A-int tg=5Fget=5Fwrite=5Frandom(ffsb=5Ftg=5Ft * tg)=0A-{=0A- return tg->w= rite=5Frandom;=0A-}=0A-=0A-int tg=5Fget=5Ffsync=5Ffile(ffsb=5Ftg=5Ft * tg)= =0A-{=0A- return tg->fsync=5Ffile;=0A-}=0A-=0A-uint64=5Ft tg=5Fget=5Fread= =5Fsize(ffsb=5Ftg=5Ft * tg)=0A-{=0A- return tg->read=5Fsize;=0A-}=0A-=0A-ui= nt32=5Ft tg=5Fget=5Fread=5Fblocksize(ffsb=5Ftg=5Ft * tg)=0A-{=0A- return tg= ->read=5Fblocksize;=0A-}=0A-=0A-int tg=5Fget=5Fread=5Fskip(ffsb=5Ftg=5Ft * = tg)=0A-{=0A- return tg->read=5Fskip;=0A-}=0A-=0A-uint32=5Ft tg=5Fget=5Fread= =5Fskipsize(ffsb=5Ftg=5Ft * tg)=0A-{=0A- return tg->read=5Fskipsize;=0A-}= =0A-=0A-uint64=5Ft tg=5Fget=5Fwrite=5Fsize(ffsb=5Ftg=5Ft * tg)=0A-{=0A- ret= urn tg->write=5Fsize;=0A-}=0A-=0A-uint32=5Ft tg=5Fget=5Fwrite=5Fblocksize(f= fsb=5Ftg=5Ft * tg)=0A-{=0A- return tg->write=5Fblocksize;=0A-}=0A-=0A-int t= g=5Fget=5Fstopval(ffsb=5Ftg=5Ft * tg)=0A-{=0A- return tg->stopval;=0A-}=0A-= =0A-ffsb=5Fbarrier=5Ft *tg=5Fget=5Fstart=5Fbarrier(ffsb=5Ftg=5Ft * tg)=0A-{= =0A- return tg->start=5Fbarrier;=0A-}=0A-=0A-static void tg=5Fprint=5Fconfi= g=5Fhelper(ffsb=5Ftg=5Ft * tg)=0A-{=0A- int i;=0A- int sumweights =3D 0;=0A= - char buf[256];=0A-=0A- printf("\t num=5Fthreads =3D %d\n", tg->num= =5Fthreads);=0A- printf("\t\n");=0A- printf("\t read=5Frandom =3D %s\n= ", (tg->read=5Frandom) ? "on" : "off");=0A- printf("\t read=5Fsize = =3D %llu\t(%s)\n", tg->read=5Fsize,=0A- ffsb=5Fprintsize(buf, tg->re= ad=5Fsize, 256));=0A- printf("\t read=5Fblocksize =3D %u\t(%s)\n", tg->re= ad=5Fblocksize,=0A- ffsb=5Fprintsize(buf, tg->read=5Fblocksize, 256)= );=0A- printf("\t read=5Fskip =3D %s\n", (tg->read=5Fskip) ? "on" : = "off");=0A- printf("\t read=5Fskipsize =3D %u\t(%s)\n", tg->read=5Fskips= ize,=0A- ffsb=5Fprintsize(buf, tg->read=5Fskipsize, 256));=0A- print= f("\t\n");=0A- printf("\t write=5Frandom =3D %s\n", (tg->write=5Frandom= ) ? "on" : "off");=0A- printf("\t write=5Fsize =3D %llu\t(%s)\n", tg-= >write=5Fsize,=0A- ffsb=5Fprintsize(buf, tg->write=5Fsize, 256));=0A= - printf("\t fsync=5Ffile =3D %d\n", tg->fsync=5Ffile);=0A- printf("\= t write=5Fblocksize =3D %u\t(%s)\n", tg->write=5Fblocksize,=0A- ffs= b=5Fprintsize(buf, tg->write=5Fblocksize, 256));=0A- printf("\t wait time = =3D %u\n", tg->wait=5Ftime);=0A- if (tg->bindfs >=3D 0) {=0A- printf= ("\t\n");=0A- printf("\t bound to fs %d\n", tg->bindfs);=0A- }=0A- printf(= "\t\n");=0A- printf("\t op weights\n");=0A-=0A- for (i =3D 0; i < FFSB=5FNU= MOPS; i++)=0A- sumweights +=3D tg->op=5Fweights[i];=0A-=0A- for (i =3D 0; = i < FFSB=5FNUMOPS; i++)=0A- printf("\t %20s =3D %d (%.2f%%)\n", op=5Fget= =5Fname(i),=0A- tg->op=5Fweights[i], 100 * (float)tg->op=5Fweights[= i] /=0A- (float)sumweights);=0A- printf("\t\n");=0A-}=0A-=0A-void t= g=5Fprint=5Fconfig(ffsb=5Ftg=5Ft * tg)=0A-{=0A- printf("ThreadGroup %d\n", = tg->tg=5Fnum);=0A- printf("=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= \n");=0A- tg=5Fprint=5Fconfig=5Fhelper(tg);=0A-}=0A-=0A-void tg=5Fprint=5Fc= onfig=5Faging(ffsb=5Ftg=5Ft * tg, char *fsname)=0A-{=0A- printf("\t Aging T= hreadGroup for fs %s\n", fsname);=0A- printf("\t =3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D\n");=0A- tg=5Fprint=5Fconfig=5Fhelper(tg);=0A-}=0A= -=0A-void tg=5Fcollect=5Fresults(ffsb=5Ftg=5Ft * tg, ffsb=5Fop=5Fresults=5F= t * r)=0A-{=0A- int i;=0A- for (i =3D 0; i < tg=5Fget=5Fnumthreads(tg); i++= )=0A- add=5Fresults(r, ft=5Fget=5Fresults(tg->threads + i));=0A-}=0A-=0A-v= oid tg=5Fset=5Fwaittime(ffsb=5Ftg=5Ft * tg, unsigned time)=0A-{=0A- tg->wai= t=5Ftime =3D time;=0A-}=0A-=0A-unsigned tg=5Fget=5Fwaittime(ffsb=5Ftg=5Ft *= tg)=0A-{=0A- return tg->wait=5Ftime;=0A-}=0A-=0A-int tg=5Fget=5Fflagval(ff= sb=5Ftg=5Ft * tg)=0A-{=0A- return tg->flagval;=0A-}=0A-=0A-void tg=5Fset=5F= statsc(ffsb=5Ftg=5Ft * tg, ffsb=5Fstatsc=5Ft * fsc)=0A-{=0A- if (fsc) {=0A-= int i;=0A-=0A- tg->need=5Fstats =3D 1;=0A- ffsb=5Fstatsc=5Fcopy(&tg->fs= c, fsc);=0A-=0A- for (i =3D 0; i < tg->num=5Fthreads; i++)=0A- ft=5Fset= =5Fstatsc(tg->threads + i, &tg->fsc);=0A- }=0A-}=0A-=0A-void tg=5Fcollect= =5Fstats(ffsb=5Ftg=5Ft * tg, ffsb=5Fstatsd=5Ft * fsd)=0A-{=0A- int i;=0A-= =0A- assert(tg->need=5Fstats);=0A- ffsb=5Fstatsd=5Finit(fsd, &tg->fsc);=0A-= =0A- for (i =3D 0; i < tg=5Fget=5Fnumthreads(tg); i++)=0A- ffsb=5Fstatsd= =5Fadd(fsd, ft=5Fget=5Fstats=5Fdata(tg->threads + i));=0A-}=0A-=0A-int tg= =5Fneeds=5Fstats(ffsb=5Ftg=5Ft * tg)=0A-{=0A- return tg->need=5Fstats;=0A-}= =0Adiff --git a/testcases/kernel/fs/ext4-new-features/ffsb-6.0-rc2/ffsb=5Ft= g.h b/testcases/kernel/fs/ext4-new-features/ffsb-6.0-rc2/ffsb=5Ftg.h=0Adele= ted file mode 100644=0Aindex 0f915b0..0000000=0A--- a/testcases/kernel/fs/e= xt4-new-features/ffsb-6.0-rc2/ffsb=5Ftg.h=0A+++ /dev/null=0A@@ -1,206 +0,0 = @@=0A-/*=0A- * Copyright (c) International Business Machines Corp., 2001-= 2004=0A- *=0A- * This program is free software; you can redistribute it = and/or modify=0A- * it under the terms of the GNU General Public License = as published by=0A- * the Free Software Foundation; either version 2 of t= he License, or=0A- * (at your option) any later version.=0A- *=0A- * Th= is program is distributed in the hope that it will be useful,=0A- * but W= ITHOUT ANY WARRANTY; without even the implied warranty of=0A- * MERCHANT= ABILITY or FITNESS FOR A PARTICULAR PURPOSE. See=0A- * the GNU General P= ublic License for more details.=0A- *=0A- * You should have received a co= py of the GNU General Public License=0A- * along with this program; if n= ot, write to the Free Software=0A- * Foundation, Inc., 51 Franklin Street= , Fifth Floor, Boston, MA 02110-1301 USA=0A- */=0A-#ifndef =5FFFSB=5FTG=5FH= =5F=0A-#define =5FFFSB=5FTG=5FH=5F=0A-#include =0A-#include =0A-#include =0A-=0A-#include =0A-=0A-#inclu= de "ffsb.h"=0A-#include "ffsb=5Fop.h"=0A-#include "ffsb=5Fthread.h"=0A-#inc= lude "ffsb=5Ffs.h"=0A-#include "ffsb=5Fstats.h"=0A-=0A-#include "util.h" /*= for barrier obj */=0A-=0A-/* "Thread Group" object defs.=0A- *=0A- * A th= read group contains configuration information and can run its=0A- * "gang"= of threads performing a particular mix of operations.=0A- *=0A- * The thre= ad group is responsible for creating the ffsb=5Fthread=0A- * objects which = must ask the thread group object to select an=0A- * operation and a filesys= tem to run that operation on. The thread=0A- * objects don't contain any o= f the configuration information.=0A- *=0A- * Thread groups are also abstrac= ted so they can be "run" arbitrarily=0A- * which is useful because we can r= euse them for aging. The running=0A- * is a bit complex, the thread group = has to have a callback function=0A- * which is runs at a specified interval= to determine when to=0A- * terminate.=0A- *=0A- * To synchronize starting = across many thread groups there are two=0A- * barriers used, the first one = "tg=5Fbarrier" in the run=5Fparams is to=0A- * synchronize multiple thread-= groups being ready to start, meaning=0A- * that all their threads have been= spawned The second one=0A- * "thread=5Fbarrier" synchronizes all threads a= cross multiple thread=0A- * groups, so that they all start at once.=0A-*/= =0A-=0A-struct ffsb=5Fthread;=0A-struct ffsb=5Fconfig;=0A-=0A-typedef struc= t ffsb=5Ftg {=0A- unsigned tg=5Fnum;=0A- unsigned num=5Fthreads;=0A- unsign= ed op=5Fweights[FFSB=5FNUMOPS];=0A- struct ffsb=5Fthread *threads;=0A-=0A- = /* A threadgroup can be bound to just one filesystem.=0A- * A value * < 0 = , means we aren't bound to any.=0A- */=0A- int bindfs;=0A-=0A- int read=5Fr= andom; /* boolean */=0A- uint64=5Ft read=5Fsize;=0A- uint32=5Ft read=5Fbloc= ksize;=0A-=0A- int read=5Fskip; /* boolean */=0A- uint32=5Ft read=5Fskipsi= ze;=0A-=0A- int write=5Frandom; /* boolean */=0A- uint64=5Ft write=5Fsize;= =0A- uint32=5Ft write=5Fblocksize;=0A-=0A- int fsync=5Ffile; /* boolean */= =0A-=0A- /* Should be max(write=5Fblocksize, read=5Fblocksize) */=0A- uint3= 2=5Ft thread=5Fbufsize;=0A-=0A- /* these fields are calculated/set by tg=5F= run() */=0A- unsigned sum=5Fweights;=0A- struct ffsb=5Fconfig *fc;=0A- ffsb= =5Fbarrier=5Ft *start=5Fbarrier;=0A-=0A- /* Used for stopping the threads *= /=0A- int flagval;=0A- int stopval;=0A-=0A- /* Delay between every operatio= n, in milliseconds*/=0A- unsigned wait=5Ftime;=0A-=0A- /* stats configurati= on */=0A- int need=5Fstats;=0A- ffsb=5Fstatsc=5Ft fsc;=0A-} ffsb=5Ftg=5Ft;= =0A-=0A-/* Init should be the very first thing called on the tg. After tha= t,=0A- * the user can call the set methods and finally run.=0A- */=0A-void = init=5Fffsb=5Ftg(ffsb=5Ftg=5Ft *tg, unsigned num=5Fthreads, unsigned tg=5Fn= um);=0A-void destroy=5Fffsb=5Ftg(ffsb=5Ftg=5Ft *tg);=0A-=0A-/* Parameters n= eeded to fire off a thread group. The main thread will=0A- * evaluate poll= =5Ffn(poll=5Fdata) until it gets a nonzero return value.=0A- * It will slee= p for wait=5Ftime secs between calls The ffsb=5Fconfig=0A- * struct is need= ed for fs selection. Barriers are to synchronize=0A- * multiple tgs and al= l threads pt is for pthread=5Fcreate()=0A- */=0A-typedef struct tg=5Frun=5F= params {=0A- ffsb=5Ftg=5Ft *tg;=0A- int (*poll=5Ffn)(void *);=0A- void *pol= l=5Fdata;=0A- unsigned wait=5Ftime; /* in sec */=0A- struct ffsb=5Fconfig *= fc;=0A- ffsb=5Fbarrier=5Ft *tg=5Fbarrier;=0A-=0A- /* Should be initialized = by caller to tg=5Frun() */=0A- ffsb=5Fbarrier=5Ft *thread=5Fbarrier;=0A- pt= hread=5Ft pt;=0A-} tg=5Frun=5Fparams=5Ft;=0A-=0A-/* This function is meant= to be called as a parameter to=0A- * pthread=5Fcreate()=0A- */=0A-void *tg= =5Frun(void *);=0A-=0A-void tg=5Fprint=5Fconfig(ffsb=5Ftg=5Ft *tg);=0A-void= tg=5Fprint=5Fconfig=5Faging(ffsb=5Ftg=5Ft *tg, char *fsname);=0A-=0A-/* Ad= ds all of this tg's results to res */=0A-void tg=5Fcollect=5Fresults(ffsb= =5Ftg=5Ft *tg, ffsb=5Fop=5Fresults=5Ft *res);=0A-=0A-/* Adds up all this tg= 's stats to totals */=0A-void tg=5Fcollect=5Fstats(ffsb=5Ftg=5Ft *tg, ffsb= =5Fstatsd=5Ft *totals);=0A-=0A-/* getters/setters, setters should not be ca= lled after a run has begun */=0A-=0A-void tg=5Fset=5Fstatsc(ffsb=5Ftg=5Ft *= tg, ffsb=5Fstatsc=5Ft *fsc);=0A-=0A-void tg=5Fset=5Fbindfs(ffsb=5Ftg=5Ft *t= g, int fsnum);=0A-int tg=5Fget=5Fbindfs(ffsb=5Ftg=5Ft *tg);=0A-=0A-unsigne= d tg=5Fget=5Fnumthreads(ffsb=5Ftg=5Ft *tg);=0A-=0A-void tg=5Fset=5Fop=5Fwei= ght(ffsb=5Ftg=5Ft *tg, char *opname, unsigned weight);=0A-unsigned tg=5Fget= =5Fop=5Fweight(ffsb=5Ftg=5Ft *tg, char *opname);=0A-=0A-void tg=5Fset=5Frea= d=5Frandom(ffsb=5Ftg=5Ft *tg, int rr);=0A-void tg=5Fset=5Fwrite=5Frandom(ff= sb=5Ftg=5Ft *tg, int wr);=0A-void tg=5Fset=5Ffsync=5Ffile(ffsb=5Ftg=5Ft *tg= , int fsync);=0A-=0A-int tg=5Fget=5Fread=5Frandom(ffsb=5Ftg=5Ft *tg);=0A-in= t tg=5Fget=5Fwrite=5Frandom(ffsb=5Ftg=5Ft *tg);=0A-int tg=5Fget=5Ffsync=5Ff= ile(ffsb=5Ftg=5Ft *tg);=0A-=0A-void tg=5Fset=5Fread=5Fsize(ffsb=5Ftg=5Ft *t= g, uint64=5Ft rs);=0A-void tg=5Fset=5Fread=5Fblocksize(ffsb=5Ftg=5Ft *tg, u= int32=5Ft rs);=0A-=0A-void tg=5Fset=5Fread=5Fskipsize(ffsb=5Ftg=5Ft *tg, ui= nt32=5Ft rs);=0A-void tg=5Fset=5Fread=5Fskip(ffsb=5Ftg=5Ft *tg, int rs);=0A= -=0A-void tg=5Fset=5Fwrite=5Fsize(ffsb=5Ftg=5Ft *tg, uint64=5Ft ws);=0A-voi= d tg=5Fset=5Fwrite=5Fblocksize(ffsb=5Ftg=5Ft *tg, uint32=5Ft ws);=0A-=0A-ui= nt64=5Ft tg=5Fget=5Fread=5Fsize(ffsb=5Ftg=5Ft *tg);=0A-uint32=5Ft tg=5Fget= =5Fread=5Fblocksize(ffsb=5Ftg=5Ft *tg);=0A-=0A-int tg=5Fget=5Fread=5Fskip(f= fsb=5Ftg=5Ft *tg);=0A-uint32=5Ft tg=5Fget=5Fread=5Fskipsize(ffsb=5Ftg=5Ft *= tg);=0A-=0A-uint64=5Ft tg=5Fget=5Fwrite=5Fsize(ffsb=5Ftg=5Ft *tg);=0A-uint3= 2=5Ft tg=5Fget=5Fwrite=5Fblocksize(ffsb=5Ftg=5Ft *tg);=0A-=0A-void tg=5Fset= =5Fwaittime(ffsb=5Ftg=5Ft *tg, unsigned time);=0A-unsigned tg=5Fget=5Fwaitt= ime(ffsb=5Ftg=5Ft *tg);=0A-=0A-/* The threads in the tg should be the only = ones using these (below)=0A- * funcs.=0A- */=0A-ffsb=5Fbarrier=5Ft *tg=5Fge= t=5Fstart=5Fbarrier(ffsb=5Ftg=5Ft *tg);=0A-int tg=5Fget=5Fstopval(ffsb=5Ftg= =5Ft *tg);=0A-int tg=5Fget=5Fflagval(ffsb=5Ftg=5Ft *tg);=0A-=0A-/* The thre= ads in this tg will use this function to get an op to run,=0A- * so all con= figuration specific information is kept in this object.=0A- */=0A-typedef s= truct tg=5Fop=5Fparams {=0A- struct ffsb=5Ffs *fs; /* out parameter */= =0A- unsigned opnum; /* out parameter */=0A-} tg=5Fop=5Fparams=5Ft;= =0A-=0A-/* tg and rd and in parameters, everything in params is out */=0A-v= oid tg=5Fget=5Fop(ffsb=5Ftg=5Ft *tg, randdata=5Ft *rd, tg=5Fop=5Fparams=5F= t *params);=0A-=0A-/* want stats for this tg ? */=0A-int tg=5Fneeds=5Fstats= (ffsb=5Ftg=5Ft *tg);=0A-=0A-#endif /* =5FFFSB=5FTG=5FH=5F */=0Adiff --git a= /testcases/kernel/fs/ext4-new-features/ffsb-6.0-rc2/ffsb=5Fthread.c b/testc= ases/kernel/fs/ext4-new-features/ffsb-6.0-rc2/ffsb=5Fthread.c=0Adeleted fil= e mode 100644=0Aindex 95cebcb..0000000=0A--- a/testcases/kernel/fs/ext4-new= -features/ffsb-6.0-rc2/ffsb=5Fthread.c=0A+++ /dev/null=0A@@ -1,171 +0,0 @@= =0A-/*=0A- * Copyright (c) International Business Machines Corp., 2001-20= 04=0A- *=0A- * This program is free software; you can redistribute it an= d/or modify=0A- * it under the terms of the GNU General Public License as= published by=0A- * the Free Software Foundation; either version 2 of the= License, or=0A- * (at your option) any later version.=0A- *=0A- * This= program is distributed in the hope that it will be useful,=0A- * but WIT= HOUT ANY WARRANTY; without even the implied warranty of=0A- * MERCHANTAB= ILITY or FITNESS FOR A PARTICULAR PURPOSE. See=0A- * the GNU General Pub= lic License for more details.=0A- *=0A- * You should have received a copy= of the GNU General Public License=0A- * along with this program; if not= , write to the Free Software=0A- * Foundation, Inc., 51 Franklin Street, = Fifth Floor, Boston, MA 02110-1301 USA=0A- */=0A-#include "ffsb=5Ftg.h"=0A-= #include "ffsb=5Fthread.h"=0A-#include "ffsb=5Fop.h"=0A-#include "util.h"= =0A-=0A-void init=5Fffsb=5Fthread(ffsb=5Fthread=5Ft * ft, struct ffsb=5Ftg = *tg, unsigned bufsize,=0A- unsigned tg=5Fnum, unsigned thread=5Fnum)= =0A-{=0A- memset(ft, 0, sizeof(ffsb=5Fthread=5Ft));=0A-=0A- ft->tg =3D tg;= =0A- ft->tg=5Fnum =3D tg=5Fnum;=0A- ft->thread=5Fnum =3D thread=5Fnum;=0A-= =0A- if (bufsize)=0A- ft=5Falter=5Fbufsize(ft, bufsize);=0A-=0A- init=5Fra= ndom(&ft->rd, MAX=5FRANDBUF=5FSIZE);=0A-}=0A-=0A-void destroy=5Fffsb=5Fthre= ad(ffsb=5Fthread=5Ft * ft)=0A-{=0A- free(ft->mallocbuf);=0A- destroy=5Frand= om(&ft->rd);=0A- if (ft->fsd.config)=0A- ffsb=5Fstatsd=5Fdestroy(&ft->fsd)= ;=0A-}=0A-=0A-void ft=5Fset=5Fstatsc(ffsb=5Fthread=5Ft * ft, ffsb=5Fstatsc= =5Ft * fsc)=0A-{=0A- ffsb=5Fstatsd=5Finit(&ft->fsd, fsc);=0A-}=0A-=0A-void = *ft=5Frun(void *data)=0A-{=0A- ffsb=5Fthread=5Ft *ft =3D (ffsb=5Fthread=5Ft= *) data;=0A- tg=5Fop=5Fparams=5Ft params;=0A- unsigned wait=5Ftime =3D tg= =5Fget=5Fwaittime(ft->tg);=0A- int stopval =3D tg=5Fget=5Fstopval(ft->tg);= =0A-=0A- ffsb=5Fbarrier=5Fwait(tg=5Fget=5Fstart=5Fbarrier(ft->tg));=0A-=0A-= while (tg=5Fget=5Fflagval(ft->tg) !=3D stopval) {=0A- tg=5Fget=5Fop(ft->t= g, &ft->rd, ¶ms);=0A- do=5Fop(ft, params.fs, params.opnum);=0A- ffsb= =5Fmilli=5Fsleep(wait=5Ftime);=0A- }=0A- return NULL;=0A-}=0A-=0A-void ft= =5Falter=5Fbufsize(ffsb=5Fthread=5Ft * ft, unsigned bufsize)=0A-{=0A- if (f= t->mallocbuf !=3D NULL)=0A- free(ft->mallocbuf);=0A- ft->mallocbuf =3D ffs= b=5Fmalloc(bufsize + 4096);=0A- ft->alignedbuf =3D ffsb=5Falign=5F4k(ft->ma= llocbuf + (4096 - 1));=0A-}=0A-=0A-char *ft=5Fgetbuf(ffsb=5Fthread=5Ft * ft= )=0A-{=0A- return ft->alignedbuf;=0A-}=0A-=0A-int ft=5Fget=5Fread=5Frandom(= ffsb=5Fthread=5Ft * ft)=0A-{=0A- return tg=5Fget=5Fread=5Frandom(ft->tg);= =0A-}=0A-=0A-uint32=5Ft ft=5Fget=5Fread=5Fsize(ffsb=5Fthread=5Ft * ft)=0A-{= =0A- return tg=5Fget=5Fread=5Fsize(ft->tg);=0A-}=0A-=0A-uint32=5Ft ft=5Fget= =5Fread=5Fblocksize(ffsb=5Fthread=5Ft * ft)=0A-{=0A- return tg=5Fget=5Fread= =5Fblocksize(ft->tg);=0A-}=0A-=0A-int ft=5Fget=5Fwrite=5Frandom(ffsb=5Fthre= ad=5Ft * ft)=0A-{=0A- return tg=5Fget=5Fwrite=5Frandom(ft->tg);=0A-}=0A-=0A= -uint32=5Ft ft=5Fget=5Fwrite=5Fsize(ffsb=5Fthread=5Ft * ft)=0A-{=0A- return= tg=5Fget=5Fwrite=5Fsize(ft->tg);=0A-}=0A-=0A-uint32=5Ft ft=5Fget=5Fwrite= =5Fblocksize(ffsb=5Fthread=5Ft * ft)=0A-{=0A- return tg=5Fget=5Fwrite=5Fblo= cksize(ft->tg);=0A-}=0A-=0A-int ft=5Fget=5Ffsync=5Ffile(ffsb=5Fthread=5Ft *= ft)=0A-{=0A- return tg=5Fget=5Ffsync=5Ffile(ft->tg);=0A-}=0A-=0A-randdata= =5Ft *ft=5Fget=5Franddata(ffsb=5Fthread=5Ft * ft)=0A-{=0A- return &ft->rd;= =0A-}=0A-=0A-void ft=5Fincr=5Fop(ffsb=5Fthread=5Ft * ft, unsigned opnum, un= signed increment,=0A- uint64=5Ft bytes)=0A-{=0A- ft->results.ops[opnum] += =3D increment;=0A- ft->results.op=5Fweight[opnum]++;=0A- ft->results.bytes[= opnum] +=3D bytes;=0A-}=0A-=0A-void ft=5Fadd=5Freadbytes(ffsb=5Fthread=5Ft = * ft, uint32=5Ft bytes)=0A-{=0A- ft->results.read=5Fbytes +=3D bytes;=0A-}= =0A-=0A-void ft=5Fadd=5Fwritebytes(ffsb=5Fthread=5Ft * ft, uint32=5Ft bytes= )=0A-{=0A- ft->results.write=5Fbytes +=3D bytes;=0A-}=0A-=0A-ffsb=5Fop=5Fre= sults=5Ft *ft=5Fget=5Fresults(ffsb=5Fthread=5Ft * ft)=0A-{=0A- return &ft->= results;=0A-}=0A-=0A-int ft=5Fget=5Fread=5Fskip(ffsb=5Fthread=5Ft * ft)=0A-= {=0A- return tg=5Fget=5Fread=5Fskip(ft->tg);=0A-}=0A-=0A-uint32=5Ft ft=5Fge= t=5Fread=5Fskipsize(ffsb=5Fthread=5Ft * ft)=0A-{=0A- return tg=5Fget=5Fread= =5Fskipsize(ft->tg);=0A-}=0A-=0A-int ft=5Fneeds=5Fstats(ffsb=5Fthread=5Ft *= ft, syscall=5Ft sys)=0A-{=0A- int ret =3D 0;=0A- if (ft && ft->fsd.config = && !fsc=5Fignore=5Fsys(ft->fsd.config, sys))=0A- ret =3D 1;=0A- return ret= ;=0A-}=0A-=0A-void ft=5Fadd=5Fstat(ffsb=5Fthread=5Ft * ft, syscall=5Ft sys,= uint32=5Ft val)=0A-{=0A- if (ft)=0A- ffsb=5Fadd=5Fdata(&ft->fsd, sys, val= );=0A-}=0A-=0A-ffsb=5Fstatsd=5Ft *ft=5Fget=5Fstats=5Fdata(ffsb=5Fthread=5Ft= * ft)=0A-{=0A- return &ft->fsd;=0A-}=0Adiff --git a/testcases/kernel/fs/ex= t4-new-features/ffsb-6.0-rc2/ffsb=5Fthread.h b/testcases/kernel/fs/ext4-new= -features/ffsb-6.0-rc2/ffsb=5Fthread.h=0Adeleted file mode 100644=0Aindex 9= 543e2f..0000000=0A--- a/testcases/kernel/fs/ext4-new-features/ffsb-6.0-rc2/= ffsb=5Fthread.h=0A+++ /dev/null=0A@@ -1,108 +0,0 @@=0A-/*=0A- * Copyright= (c) International Business Machines Corp., 2001-2004=0A- *=0A- * This pr= ogram is free software; you can redistribute it and/or modify=0A- * it u= nder the terms of the GNU General Public License as published by=0A- * th= e Free Software Foundation; either version 2 of the License, or=0A- * (at= your option) any later version.=0A- *=0A- * This program is distributed = in the hope that it will be useful,=0A- * but WITHOUT ANY WARRANTY; with= out even the implied warranty of=0A- * MERCHANTABILITY or FITNESS FOR A P= ARTICULAR PURPOSE. See=0A- * the GNU General Public License for more det= ails.=0A- *=0A- * You should have received a copy of the GNU General Publ= ic License=0A- * along with this program; if not, write to the Free Soft= ware=0A- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA = 02110-1301 USA=0A- */=0A-#ifndef =5FFFSB=5FTHREAD=5FH=5F=0A-#define =5FFFSB= =5FTHREAD=5FH=5F=0A-=0A-#include =0A-#include =0A-= =0A-#include "rand.h"=0A-#include "ffsb=5Fop.h"=0A-#include "ffsb=5Ftg.h"= =0A-#include "ffsb=5Fstats.h"=0A-=0A-#include "util.h" /* for barrier stuff= */=0A-=0A-struct ffsb=5Ftg;=0A-struct ffsb=5Fop=5Fresults;=0A-=0A-/* FFSB = thread object=0A- *=0A- * The thread object doesn't store any configuration= information, it=0A- * mostly just holds per-thread state information such = as the random=0A- * data store and the per-thread buffer to copy data to/fr= om disk=0A- */=0A-=0A-typedef struct ffsb=5Fthread {=0A- unsigned thread=5F= num;=0A- unsigned tg=5Fnum;=0A- pthread=5Ft ptid;=0A- struct randdata rd;= =0A- struct ffsb=5Ftg *tg; /* owning thread group */=0A-=0A- /* If we are u= sing Direct IO, then we must only use a 4k=0A- * aligned buffer so, aligne= dbuf=5F4k is a pointer into=0A- * "mallocbuf" which is what malloc gave us= .=0A- */=0A- char *alignedbuf;=0A- char *mallocbuf;=0A-=0A- struct ffsb=5F= op=5Fresults results;=0A-=0A- /* stats */=0A- ffsb=5Fstatsd=5Ft fsd;=0A-} f= fsb=5Fthread=5Ft ;=0A-=0A-void init=5Fffsb=5Fthread(ffsb=5Fthread=5Ft *, st= ruct ffsb=5Ftg *, unsigned,=0A- unsigned, unsigned);=0A-void destro= y=5Fffsb=5Fthread(ffsb=5Fthread=5Ft *);=0A-=0A-/* Owning thread group will = start thread with this, thread runs until=0A- * *ft->checkval =3D=3D ft->st= opval. Yes this is not strictly=0A- * synchronized, but that is okay for o= ur purposes, and it limits (IMO=0A- * expensive) bus-locking.=0A- *=0A- * p= thread=5Fcreate() is called by tg with this function as a parameter=0A- * d= ata is a (ffsb=5Fthread=5Ft*)=0A- */=0A-void *ft=5Frun(void *);=0A-=0A-void= ft=5Falter=5Fbufsize(ffsb=5Fthread=5Ft *, unsigned);=0A-char *ft=5Fgetbuf(= ffsb=5Fthread=5Ft *);=0A-=0A-int ft=5Fget=5Fread=5Frandom(ffsb=5Fthread=5Ft= *);=0A-uint32=5Ft ft=5Fget=5Fread=5Fsize(ffsb=5Fthread=5Ft *);=0A-uint32= =5Ft ft=5Fget=5Fread=5Fblocksize(ffsb=5Fthread=5Ft *);=0A-=0A-int ft=5Fget= =5Fwrite=5Frandom(ffsb=5Fthread=5Ft *);=0A-uint32=5Ft ft=5Fget=5Fwrite=5Fsi= ze(ffsb=5Fthread=5Ft *);=0A-uint32=5Ft ft=5Fget=5Fwrite=5Fblocksize(ffsb=5F= thread=5Ft *);=0A-=0A-int ft=5Fget=5Ffsync=5Ffile(ffsb=5Fthread=5Ft *);=0A-= =0A-randdata=5Ft *ft=5Fget=5Franddata(ffsb=5Fthread=5Ft *);=0A-=0A-void ft= =5Fincr=5Fop(ffsb=5Fthread=5Ft *ft, unsigned opnum, unsigned increment, uin= t64=5Ft bytes);=0A-=0A-void ft=5Fadd=5Freadbytes(ffsb=5Fthread=5Ft *, uint3= 2=5Ft);=0A-void ft=5Fadd=5Fwritebytes(ffsb=5Fthread=5Ft *, uint32=5Ft);=0A-= =0A-int ft=5Fget=5Fread=5Fskip(ffsb=5Fthread=5Ft *);=0A-uint32=5Ft ft=5Fget= =5Fread=5Fskipsize(ffsb=5Fthread=5Ft *);=0A-=0A-ffsb=5Fop=5Fresults=5Ft *ft= =5Fget=5Fresults(ffsb=5Fthread=5Ft *);=0A-=0A-void ft=5Fset=5Fstatsc(ffsb= =5Fthread=5Ft *, ffsb=5Fstatsc=5Ft *);=0A-=0A-/* for these two, ft =3D=3D N= ULL is OK */=0A-int ft=5Fneeds=5Fstats(ffsb=5Fthread=5Ft *, syscall=5Ft);= =0A-void ft=5Fadd=5Fstat(ffsb=5Fthread=5Ft *, syscall=5Ft, uint32=5Ft);=0A-= =0A-ffsb=5Fstatsd=5Ft *ft=5Fget=5Fstats=5Fdata(ffsb=5Fthread=5Ft *);=0A-=0A= -#endif /* =5FFFSB=5FTHREAD=5FH=5F */=0Adiff --git a/testcases/kernel/fs/ex= t4-new-features/ffsb-6.0-rc2/fh.c b/testcases/kernel/fs/ext4-new-features/f= fsb-6.0-rc2/fh.c=0Adeleted file mode 100644=0Aindex 196e5be..0000000=0A--- = a/testcases/kernel/fs/ext4-new-features/ffsb-6.0-rc2/fh.c=0A+++ /dev/null= =0A@@ -1,280 +0,0 @@=0A-/*=0A- * Copyright (c) International Business Mac= hines Corp., 2001-2004=0A- *=0A- * This program is free software; you ca= n redistribute it and/or modify=0A- * it under the terms of the GNU Gener= al Public License as published by=0A- * the Free Software Foundation; eit= her version 2 of the License, or=0A- * (at your option) any later version= .=0A- *=0A- * This program is distributed in the hope that it will be use= ful,=0A- * but WITHOUT ANY WARRANTY; without even the implied warranty o= f=0A- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See=0A- * = the GNU General Public License for more details.=0A- *=0A- * You should = have received a copy of the GNU General Public License=0A- * along with t= his program; if not, write to the Free Software=0A- * Foundation, Inc., = 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA=0A- */=0A-=0A-#d= efine FILE=5FOFFSET=5FBITS 64=0A-=0A-#include =0A-#include =0A-#include =0A-#include =0A-#include =0A-#include =0A-#include =0A-#include =0A= -=0A-#include "ffsb.h"=0A-#include "fh.h"=0A-=0A-#include "config.h"=0A-=0A= -/* !!! ugly */=0A-#ifndef HAVE=5FOPEN64=0A-#define open64 open=0A-#endif= =0A-=0A-#ifndef HAVE=5FFSEEKO64=0A-#define lseek64 lseek=0A-#endif=0A-=0A-/= * All these functions read the global mainconfig->bufferedio variable=0A- *= to determine if they are to do buffered i/o or normal.=0A- *=0A- * ha, wel= l, they're supposed to anyway...!!! TODO -SR 2006/05/14=0A- */=0A-=0A-stati= c void do=5Fstats(struct timeval *start, struct timeval *end,=0A- ffs= b=5Fthread=5Ft * ft, ffsb=5Ffs=5Ft * fs, syscall=5Ft sys)=0A-{=0A- struct t= imeval diff;=0A- uint32=5Ft value =3D 0;=0A-=0A- if (!ft && !fs)=0A- retur= n;=0A-=0A- timersub(end, start, &diff);=0A-=0A- value =3D 1000000 * diff.tv= =5Fsec + diff.tv=5Fusec;=0A-=0A- if (ft && ft=5Fneeds=5Fstats(ft, sys))=0A-= ft=5Fadd=5Fstat(ft, sys, value);=0A- if (fs && fs=5Fneeds=5Fstats(fs, sys= ))=0A- fs=5Fadd=5Fstat(fs, sys, value);=0A-}=0A-=0A-static int fhopenhelpe= r(char *filename, char *bufflags, int flags,=0A- ffsb=5Fthread=5Ft * ft, = ffsb=5Ffs=5Ft * fs)=0A-{=0A- int fd =3D 0;=0A- struct timeval start, end;= =0A- int need=5Fstats =3D ft=5Fneeds=5Fstats(ft, SYS=5FOPEN) ||=0A- fs= =5Fneeds=5Fstats(fs, SYS=5FOPEN);=0A-=0A- flags |=3D O=5FLARGEFILE;=0A-=0A-= if (need=5Fstats)=0A- gettimeofday(&start, NULL);=0A-=0A- fd =3D open64(f= ilename, flags, S=5FIRWXU);=0A- if (fd < 0) {=0A- perror(filename);=0A- e= xit(0);=0A- }=0A-=0A- if (need=5Fstats) {=0A- gettimeofday(&end, NULL);=0A= - do=5Fstats(&start, &end, ft, fs, SYS=5FOPEN);=0A- }=0A-=0A- return fd;= =0A-}=0A-=0A-int fhopenread(char *filename, ffsb=5Fthread=5Ft * ft, ffsb=5F= fs=5Ft * fs)=0A-{=0A- int flags =3D O=5FRDONLY;=0A- int directio =3D fs=5Fg= et=5Fdirectio(fs);=0A-=0A- if (directio)=0A- flags |=3D O=5FDIRECT;=0A- re= turn fhopenhelper(filename, "r", flags, ft, fs);=0A-}=0A-=0A-int fhopenappe= nd(char *filename, ffsb=5Fthread=5Ft * ft, ffsb=5Ffs=5Ft * fs)=0A-{=0A- int= flags =3D O=5FAPPEND | O=5FWRONLY;=0A- int directio =3D fs=5Fget=5Fdirecti= o(fs);=0A-=0A- if (directio)=0A- flags |=3D O=5FDIRECT;=0A- return fhopenh= elper(filename, "a", flags, ft, fs);=0A-}=0A-=0A-int fhopenwrite(char *file= name, ffsb=5Fthread=5Ft * ft, ffsb=5Ffs=5Ft * fs)=0A-{=0A- int flags =3D O= =5FWRONLY;=0A- int directio =3D fs=5Fget=5Fdirectio(fs);=0A-=0A- if (direct= io)=0A- flags |=3D O=5FDIRECT;=0A- return fhopenhelper(filename, "w", flag= s, ft, fs);=0A-}=0A-=0A-int fhopencreate(char *filename, ffsb=5Fthread=5Ft = * ft, ffsb=5Ffs=5Ft * fs)=0A-{=0A- int flags =3D O=5FCREAT | O=5FRDWR | O= =5FTRUNC;=0A- int directio =3D fs=5Fget=5Fdirectio(fs);=0A-=0A- if (directi= o)=0A- flags |=3D O=5FDIRECT;=0A- return fhopenhelper(filename, "rw", flag= s, ft, fs);=0A-}=0A-=0A-void fhread(int fd, void *buf, uint64=5Ft size, ffs= b=5Fthread=5Ft * ft,=0A- ffsb=5Ffs=5Ft * fs)=0A-{=0A- ssize=5Ft realsiz= e;=0A- struct timeval start, end;=0A- int need=5Fstats =3D ft=5Fneeds=5Fsta= ts(ft, SYS=5FREAD) ||=0A- fs=5Fneeds=5Fstats(fs, SYS=5FREAD);=0A-=0A- a= ssert(size <=3D SIZE=5FMAX);=0A- if (need=5Fstats)=0A- gettimeofday(&start= , NULL);=0A- realsize =3D read(fd, buf, size);=0A-=0A- if (need=5Fstats) {= =0A- gettimeofday(&end, NULL);=0A- do=5Fstats(&start, &end, ft, fs, SYS= =5FREAD);=0A- }=0A-=0A- if (realsize !=3D size) {=0A- printf("Read %lld in= stead of %llu bytes.\n",=0A- (unsigned long long)realsize, (unsigne= d long long)size);=0A- perror("read");=0A- exit(1);=0A- }=0A-}=0A-=0A-voi= d fhwrite(int fd, void *buf, uint32=5Ft size, ffsb=5Fthread=5Ft * ft,=0A- = ffsb=5Ffs=5Ft * fs)=0A-{=0A- ssize=5Ft realsize;=0A- struct timeval sta= rt, end;=0A- int need=5Fstats =3D ft=5Fneeds=5Fstats(ft, SYS=5FWRITE) ||=0A= - fs=5Fneeds=5Fstats(fs, SYS=5FWRITE);=0A-=0A- assert(size <=3D SIZE=5F= MAX);=0A- if (need=5Fstats)=0A- gettimeofday(&start, NULL);=0A-=0A- realsi= ze =3D write(fd, buf, size);=0A-=0A- if (need=5Fstats) {=0A- gettimeofday(= &end, NULL);=0A- do=5Fstats(&start, &end, ft, fs, SYS=5FWRITE);=0A- }=0A-= =0A- if (realsize !=3D size) {=0A- printf("Wrote %d instead of %d bytes.\n= "=0A- "Probably out of disk space\n", realsize, size);=0A- perror(= "write");=0A- exit(1);=0A- }=0A-}=0A-=0A-void fhseek(int fd, uint64=5Ft of= fset, int whence, ffsb=5Fthread=5Ft * ft,=0A- ffsb=5Ffs=5Ft * fs)=0A-{= =0A- uint64=5Ft res;=0A- struct timeval start, end;=0A- int need=5Fstats = =3D ft=5Fneeds=5Fstats(ft, SYS=5FLSEEK) ||=0A- fs=5Fneeds=5Fstats(fs, S= YS=5FLSEEK);=0A-=0A- if ((whence =3D=3D SEEK=5FCUR) && (offset =3D=3D 0))= =0A- return;=0A-=0A- if (need=5Fstats)=0A- gettimeofday(&start, NULL);=0A= -=0A- res =3D lseek64(fd, offset, whence);=0A-=0A- if (need=5Fstats) {=0A- = gettimeofday(&end, NULL);=0A- do=5Fstats(&start, &end, ft, fs, SYS=5FLSEE= K);=0A- }=0A- if ((whence =3D=3D SEEK=5FSET) && (res !=3D offset))=0A- per= ror("seek");=0A-=0A- if (res =3D=3D -1) {=0A- if (whence =3D=3D SEEK=5FSET= )=0A- fprintf(stderr, "tried to seek to %lld\n", offset);=0A- else=0A- = fprintf(stderr, "tried to seek from current "=0A- "position to %lld\n",= offset);=0A-=0A- perror("seek");=0A- exit(1);=0A- }=0A-}=0A-=0A-void fhc= lose(int fd, ffsb=5Fthread=5Ft * ft, ffsb=5Ffs=5Ft * fs)=0A-{=0A- struct ti= meval start, end;=0A- int need=5Fstats =3D ft=5Fneeds=5Fstats(ft, SYS=5FCLO= SE) ||=0A- fs=5Fneeds=5Fstats(fs, SYS=5FCLOSE);=0A-=0A- if (need=5Fstat= s)=0A- gettimeofday(&start, NULL);=0A-=0A- close(fd);=0A-=0A- if (need=5Fs= tats) {=0A- gettimeofday(&end, NULL);=0A- do=5Fstats(&start, &end, ft, fs= , SYS=5FCLOSE);=0A- }=0A-}=0A-=0A-void fhstat(char *name, ffsb=5Fthread=5Ft= * ft, ffsb=5Ffs=5Ft * fs)=0A-{=0A- struct timeval start, end;=0A- struct s= tat tmp=5Fstat;=0A-=0A- int need=5Fstats =3D ft=5Fneeds=5Fstats(ft, SYS=5FS= TAT) ||=0A- fs=5Fneeds=5Fstats(fs, SYS=5FCLOSE);=0A-=0A- if (need=5Fsta= ts)=0A- gettimeofday(&start, NULL);=0A-=0A- if (stat(name, &tmp=5Fstat)) {= =0A- fprintf(stderr, "stat call failed for file %s\n", name);=0A- exit(1)= ;=0A- }=0A-=0A- if (need=5Fstats) {=0A- gettimeofday(&end, NULL);=0A- do= =5Fstats(&start, &end, ft, fs, SYS=5FSTAT);=0A- }=0A-}=0A-=0A-int writefile= =5Fhelper(int fd, uint64=5Ft size, uint32=5Ft blocksize, char *buf,=0A- = struct ffsb=5Fthread *ft, struct ffsb=5Ffs *fs)=0A-{=0A- uint64=5Ft iter= ations, a;=0A- uint64=5Ft last;=0A-=0A- iterations =3D size / blocksize;=0A= - last =3D size % blocksize;=0A-=0A- for (a =3D 0; a < iterations; a++)=0A-= fhwrite(fd, buf, blocksize, ft, fs);=0A-=0A- if (last) {=0A- a++;=0A- f= hwrite(fd, buf, last, ft, fs);=0A- }=0A- return a;=0A-}=0Adiff --git a/test= cases/kernel/fs/ext4-new-features/ffsb-6.0-rc2/fh.h b/testcases/kernel/fs/e= xt4-new-features/ffsb-6.0-rc2/fh.h=0Adeleted file mode 100644=0Aindex 23a19= 8b..0000000=0A--- a/testcases/kernel/fs/ext4-new-features/ffsb-6.0-rc2/fh.h= =0A+++ /dev/null=0A@@ -1,41 +0,0 @@=0A-/*=0A- * Copyright (c) Internation= al Business Machines Corp., 2001-2004=0A- *=0A- * This program is free so= ftware; you can redistribute it and/or modify=0A- * it under the terms o= f the GNU General Public License as published by=0A- * the Free Software = Foundation; either version 2 of the License, or=0A- * (at your option) an= y later version.=0A- *=0A- * This program is distributed in the hope that= it will be useful,=0A- * but WITHOUT ANY WARRANTY; without even the imp= lied warranty of=0A- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOS= E. See=0A- * the GNU General Public License for more details.=0A- *=0A- = * You should have received a copy of the GNU General Public License=0A- *= along with this program; if not, write to the Free Software=0A- * Fou= ndation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA= =0A- */=0A-#ifndef =5FFH=5FH=5F=0A-#define =5FFH=5FH=5F=0A-=0A-#include =0A-=0A-struct ffsb=5Fthread;=0A-struct ffsb=5Ffs;=0A-=0A-int fhop= enread(char *, struct ffsb=5Fthread *, struct ffsb=5Ffs *);=0A-int fhopenwr= ite(char *, struct ffsb=5Fthread *, struct ffsb=5Ffs *);=0A-int fhopencreat= e(char *, struct ffsb=5Fthread *, struct ffsb=5Ffs *);=0A-int fhopenappend(= char *, struct ffsb=5Fthread *, struct ffsb=5Ffs *);=0A-=0A-void fhread(int= , void *, uint64=5Ft, struct ffsb=5Fthread *, struct ffsb=5Ffs *);=0A-=0A-/= * can only write up to size=5Ft bytes at a time, so size is a uint32=5Ft */= =0A-void fhwrite(int, void *, uint32=5Ft, struct ffsb=5Fthread *, struct ff= sb=5Ffs *);=0A-void fhseek(int, uint64=5Ft, int, struct ffsb=5Fthread *, st= ruct ffsb=5Ffs *);=0A-void fhclose(int, struct ffsb=5Fthread *, struct ffsb= =5Ffs *);=0A-=0A-int writefile=5Fhelper(int, uint64=5Ft, uint32=5Ft, char *= , struct ffsb=5Fthread *,=0A- struct ffsb=5Ffs *);=0A-=0A-#endif /* = =5FFH=5FH=5F */=0Adiff --git a/testcases/kernel/fs/ext4-new-features/ffsb-6= .0-rc2/filelist.c b/testcases/kernel/fs/ext4-new-features/ffsb-6.0-rc2/file= list.c=0Adeleted file mode 100644=0Aindex 98fdad4..0000000=0A--- a/testcase= s/kernel/fs/ext4-new-features/ffsb-6.0-rc2/filelist.c=0A+++ /dev/null=0A@@ = -1,499 +0,0 @@=0A-/*=0A- * Copyright (c) International Business Machines = Corp., 2001-2004=0A- *=0A- * This program is free software; you can redi= stribute it and/or modify=0A- * it under the terms of the GNU General Pub= lic License as published by=0A- * the Free Software Foundation; either ve= rsion 2 of the License, or=0A- * (at your option) any later version.=0A- = *=0A- * This program is distributed in the hope that it will be useful,= =0A- * but WITHOUT ANY WARRANTY; without even the implied warranty of=0A= - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See=0A- * the= GNU General Public License for more details.=0A- *=0A- * You should have= received a copy of the GNU General Public License=0A- * along with this = program; if not, write to the Free Software=0A- * Foundation, Inc., 51 F= ranklin Street, Fifth Floor, Boston, MA 02110-1301 USA=0A- */=0A-#include <= limits.h>=0A-#include =0A-#include =0A-#include =0A-#include =0A-#include =0A-#include =0A-#include =0A-=0A-#include "rand.h"=0A-#include "filelist.h"= =0A-#include "util.h"=0A-#include "rwlock.h"=0A-#include "rbt.h"=0A-#includ= e "cirlist.h"=0A-=0A-#if 0=0A-static=0A-void print=5Fcl(struct cirlist *cl)= =0A-{=0A- struct cnode *cur =3D cl->head;=0A- printf("curlist: ");=0A- if (= cur =3D=3D NULL) {=0A- printf("\n");=0A- return;=0A- }=0A- do {=0A- prin= tf("%d ", cur->obj->num);=0A- cur =3D cur->next;=0A- } while (cur !=3D cl-= >head);=0A- printf("\n");=0A-}=0A-#endif=0A-=0A-#if 0=0A-static=0A-int node= =5Fcmp(struct ffsb=5Ffile *a, struct ffsb=5Ffile *b)=0A-{=0A- return a->num= - b->num;=0A-}=0A-#endif=0A-=0A-static=0A-void build=5Fdirs(struct benchfi= les *bf)=0A-{=0A- char buf[FILENAME=5FMAX];=0A- int i;=0A-=0A- if (mkdir(bf= ->basedir, S=5FIRWXU) < 0)=0A- if (errno !=3D EEXIST) {=0A- perror(bf->b= asedir);=0A- exit(1);=0A- }=0A- for (i =3D 0; i < bf->numsubdirs; i++) {= =0A- snprintf(buf, FILENAME=5FMAX, "%s/%s%s%d",=0A- bf->basedir, bf->ba= sename, SUBDIRNAME=5FBASE, i);=0A- if (mkdir(buf, S=5FIRWXU) =3D=3D -1)=0A= - if (errno !=3D EEXIST) {=0A- perror(buf);=0A- exit(1);=0A- }=0A= - }=0A-}=0A-=0A-void init=5Ffilelist(struct benchfiles *b, char *basedir, c= har *basename,=0A- uint32=5Ft numsubdirs, int builddirs)=0A-{=0A- memse= t(b, 0, sizeof(struct benchfiles));=0A- b->basedir =3D ffsb=5Fstrdup(basedi= r);=0A- b->basename =3D ffsb=5Fstrdup(basename);=0A- b->numsubdirs =3D nums= ubdirs;=0A- init=5Frwlock(&b->fileslock);=0A- b->files =3D rbtree=5Fconstru= ct();=0A- b->dirs =3D rbtree=5Fconstruct();=0A- b->holes =3D ffsb=5Fmalloc(= sizeof(struct cirlist));=0A- b->dholes =3D ffsb=5Fmalloc(sizeof(struct cirl= ist));=0A- init=5Fcirlist(b->holes);=0A- init=5Fcirlist(b->dholes);=0A-=0A-= if (builddirs)=0A- build=5Fdirs(b);=0A-}=0A-=0A-static void file=5Fdestru= ctor(struct ffsb=5Ffile *file)=0A-{=0A- free(file->name);=0A- free(file);= =0A-}=0A-=0A-void destroy=5Ffilelist(struct benchfiles *bf)=0A-{=0A- free(b= f->basedir);=0A- free(bf->basename);=0A-=0A- while (!cl=5Fempty(bf->holes))= {=0A- struct ffsb=5Ffile *cur =3D cl=5Fremove=5Fhead(bf->holes);=0A- fil= e=5Fdestructor(cur);=0A- }=0A- free(bf->holes);=0A- rbtree=5Fclean(bf->file= s, file=5Fdestructor);=0A- free(bf->files);=0A-}=0A-=0A-struct ffsb=5Ffile = *add=5Ffile(struct benchfiles *b, uint64=5Ft size, randdata=5Ft * rd)=0A-{= =0A- struct ffsb=5Ffile *newfile, *oldfile =3D NULL;=0A- int filenum =3D 0;= =0A-=0A- /* We pre-allocate here, because I don't want to spend time=0A- *= malloc'ing while the list is locked we free it later if=0A- * necessary= =0A- */=0A- newfile =3D ffsb=5Fmalloc(sizeof(struct ffsb=5Ffile));=0A-=0A-= newfile->size =3D size;=0A- init=5Frwlock(&(newfile->lock));=0A-=0A- /* Wr= ite lock the filelist, begin critical section */=0A- rw=5Flock=5Fwrite(&b->= fileslock);=0A-=0A- /* First check "holes" for a file */=0A- if (!cl=5Femp= ty(b->holes)) {=0A- oldfile =3D cl=5Fremove=5Fhead(b->holes);=0A- rbtree= =5Finsert(b->files, oldfile);=0A- rw=5Flock=5Fwrite(&oldfile->lock);=0A- }= else {=0A- filenum =3D b->listsize;=0A- b->listsize++;=0A-=0A- newfile-= >num =3D filenum;=0A- rbtree=5Finsert(b->files, newfile);=0A-=0A- rw=5Flo= ck=5Fwrite(&newfile->lock);=0A- }=0A-=0A- /* unlock filelist */=0A- rw=5Fun= lock=5Fwrite(&b->fileslock);=0A-=0A- if (oldfile =3D=3D NULL) {=0A- char b= uf[FILENAME=5FMAX];=0A- int randdir =3D getrandom(rd, b->numsubdirs + 1);= =0A- int namesize =3D 0;=0A- if (randdir =3D=3D 0)=0A- namesize =3D snp= rintf(buf, FILENAME=5FMAX, "%s/%s%s%d",=0A- b->basedir, b->basename= ,=0A- FILENAME=5FBASE, filenum);=0A- else=0A- namesize =3D snpri= ntf(buf, FILENAME=5FMAX,=0A- "%s/%s%s%d/%s%s%d", b->basedir,=0A- = b->basename, SUBDIRNAME=5FBASE,=0A- randdir - 1, b->basename,= =0A- FILENAME=5FBASE, filenum);=0A- if (namesize >=3D FILENAME=5FM= AX)=0A- /* !!! do something about this ? */=0A- printf("warning: filena= me \"%s\" too long\n", buf);=0A- newfile->name =3D ffsb=5Fstrdup(buf);=0A-= return newfile;=0A- } else {=0A- free(newfile);=0A- return oldfile;=0A-= }=0A-}=0A-=0A-struct ffsb=5Ffile *add=5Fdir(struct benchfiles *b, uint64= =5Ft size, randdata=5Ft * rd)=0A-{=0A- struct ffsb=5Ffile *newdir, *olddir = =3D NULL;=0A- int dirnum =3D 0;=0A-=0A- newdir =3D ffsb=5Fmalloc(sizeof(str= uct ffsb=5Ffile));=0A-=0A- init=5Frwlock(&newdir->lock);=0A-=0A- /* write l= ock the filelist, beging critical section */=0A- rw=5Flock=5Fwrite(&b->file= slock);=0A-=0A- /* First check "holes" for a file */=0A- if (!cl=5Fempty(b= ->dholes)) {=0A- olddir =3D cl=5Fremove=5Fhead(b->dholes);=0A- rbtree=5Fi= nsert(b->files, olddir);=0A- rw=5Flock=5Fwrite(&olddir->lock);=0A- } else = {=0A- dirnum =3D b->numsubdirs;=0A- b->numsubdirs++;=0A- printf("dirnum:= %d\n", dirnum);=0A- newdir->num =3D dirnum;=0A- rbtree=5Finsert(b->dirs,= newdir);=0A-=0A- rw=5Flock=5Fwrite(&newdir->lock);=0A- }=0A-=0A- /* unloc= k filelist */=0A- rw=5Funlock=5Fwrite(&b->fileslock);=0A-=0A- if (olddir = =3D=3D NULL) {=0A- char buf[FILENAME=5FMAX];=0A- int namesize =3D 0;=0A- = namesize =3D snprintf(buf, FILENAME=5FMAX, "%s/%s%s%d",=0A- b->base= dir, b->basename,=0A- SUBDIRNAME=5FBASE, dirnum);=0A- if (namesize = >=3D FILENAME=5FMAX)=0A- printf("warning: filename \"%s\" too long\n", bu= f);=0A- /* TODO: take action here... */=0A- newdir->name =3D ffsb=5Fstrdu= p(buf);=0A- return newdir;=0A- } else {=0A- free(newdir);=0A- return old= dir;=0A- }=0A-}=0A-=0A-/* Private version of above function used only for r= eusing a=0A- * fileset.=0A- */=0A-static struct ffsb=5Ffile *add=5Ffile=5Fn= amed(struct benchfiles *b, uint64=5Ft size,=0A- char *name)=0A-{=0A- st= ruct ffsb=5Ffile *newfile =3D NULL;=0A-=0A- newfile =3D ffsb=5Fmalloc(sizeo= f(struct ffsb=5Ffile));=0A- memset(newfile, 0, sizeof(struct ffsb=5Ffile));= =0A- newfile->name =3D ffsb=5Fstrdup(name);=0A- newfile->size =3D size;=0A-= init=5Frwlock(&newfile->lock);=0A-=0A- /* Write lock the filelist, begin c= ritical section */=0A- rw=5Flock=5Fwrite(&b->fileslock);=0A-=0A- newfile->n= um =3D b->listsize;=0A- b->listsize++;=0A-=0A- /* Add a new file to the rbt= ree */=0A- rbtree=5Finsert(b->files, newfile);=0A-=0A- rw=5Flock=5Fwrite(&n= ewfile->lock);=0A-=0A- /* Unlock filelist */=0A- rw=5Funlock=5Fwrite(&b->fi= leslock);=0A-=0A- return newfile;=0A-}=0A-=0A-#if 0=0A-static void print=5F= rb=5Fhelper(rb=5Fnode * cur)=0A-{=0A- if (cur !=3D NULL) {=0A- print=5Frb= =5Fhelper(cur->left);=0A- printf("%d ", cur->object->num);=0A- print=5Frb= =5Fhelper(cur->right);=0A- }=0A-}=0A-=0A-static void print=5Frb(rb=5Ftree *= tree)=0A-{=0A- print=5Frb=5Fhelper(tree->root);=0A-}=0A-#endif=0A-=0A-void= remove=5Ffile(struct benchfiles *b, struct ffsb=5Ffile *entry)=0A-{=0A- rw= =5Flock=5Fwrite(&b->fileslock);=0A-=0A- rbtree=5Fremove(b->files, entry, NU= LL);=0A- /* add node to the cir. list of "holes" */=0A- cl=5Finsert=5Ftail(= b->holes, entry);=0A-=0A- rw=5Funlock=5Fwrite(&b->fileslock);=0A-}=0A-=0A-s= tatic struct ffsb=5Ffile *choose=5Ffile(struct benchfiles *b, randdata=5Ft = * rd)=0A-{=0A- rb=5Fnode *cur =3D NULL;=0A- int chosen =3D 0;=0A- struct ff= sb=5Ffile temp;=0A- temp.num =3D chosen;=0A-=0A- if (b->listsize =3D=3D 0) = {=0A- fprintf(stderr, "No more files to operate on,"=0A- " try making mo= re initial files "=0A- "or fewer delete operations\n");=0A- exit(0);=0A-= }=0A-=0A- while (cur =3D=3D NULL) {=0A- chosen =3D getrandom(rd, b->lists= ize);=0A- temp.num =3D chosen;=0A- cur =3D rbtree=5Ffind(b->files, &temp)= ;=0A- }=0A- return cur->object;=0A-}=0A-=0A-struct ffsb=5Ffile *choose=5Ffi= le=5Freader(struct benchfiles *bf, randdata=5Ft * rd)=0A-{=0A- struct ffsb= =5Ffile *ret;=0A-=0A- rw=5Flock=5Fread(&bf->fileslock);=0A- /* If b->holes-= >count =3D=3D bf->listsize, all files have been=0A- * deleted!=0A- */=0A-= assert(bf->holes->count !=3D bf->listsize);=0A-=0A- ret =3D choose=5Ffile(= bf, rd);=0A- if (rw=5Ftrylock=5Fread(&ret->lock)) {=0A- rw=5Funlock=5Fread= (&bf->fileslock);=0A- return choose=5Ffile=5Freader(bf, rd);=0A- }=0A-=0A-= rw=5Funlock=5Fread(&bf->fileslock);=0A- return ret;=0A-}=0A-=0A-struct ffs= b=5Ffile *choose=5Ffile=5Fwriter(struct benchfiles *bf, randdata=5Ft * rd)= =0A-{=0A- struct ffsb=5Ffile *ret;=0A-=0A- rw=5Flock=5Fread(&bf->fileslock)= ;=0A- assert(bf->holes->count !=3D bf->listsize);=0A- ret =3D choose=5Ffile= (bf, rd);=0A-=0A- if (rw=5Ftrylock=5Fwrite(&ret->lock)) {=0A- rw=5Funlock= =5Fread(&bf->fileslock);=0A- return choose=5Ffile=5Fwriter(bf, rd);=0A- }= =0A-=0A- rw=5Funlock=5Fread(&bf->fileslock);=0A- return ret;=0A-}=0A-=0A-vo= id unlock=5Ffile=5Freader(struct ffsb=5Ffile *file)=0A-{=0A- rw=5Funlock=5F= read(&file->lock);=0A-}=0A-=0A-void unlock=5Ffile=5Fwriter(struct ffsb=5Ffi= le *file)=0A-{=0A- rw=5Funlock=5Fwrite(&file->lock);=0A-}=0A-=0A-void renam= e=5Ffile(struct ffsb=5Ffile *file)=0A-{=0A- char *newname =3D malloc(strlen= (file->name) + 2);=0A- sprintf(newname, "%sa", file->name);=0A- file->name = =3D newname;=0A-}=0A-=0A-int validate=5Ffilename(struct benchfiles *bf, cha= r *name)=0A-{=0A- int retval =3D -1;=0A- char fmt=5Fstr[FILENAME=5FMAX];=0A= - if (FILENAME=5FMAX <=3D snprintf(fmt=5Fstr, FILENAME=5FMAX,=0A- "= %s%s%%d", bf->basename, FILENAME=5FBASE)) {=0A- printf("filename is too lo= ng declaring it invalid\n");=0A- return -1;=0A- }=0A-=0A- sscanf(name, fmt= =5Fstr, &retval);=0A- return retval;=0A-}=0A-=0A-int validate=5Fdirname(str= uct benchfiles *bf, char *name)=0A-{=0A- int retval =3D -1;=0A- char fmt=5F= str[FILENAME=5FMAX];=0A- if (FILENAME=5FMAX <=3D snprintf(fmt=5Fstr, FILENA= ME=5FMAX, "%s%s%%d",=0A- bf->basename, SUBDIRNAME=5FBASE)) {=0A- p= rintf("dirname is too long declaring it invalid\n");=0A- return -1;=0A- }= =0A-=0A- sscanf(name, fmt=5Fstr, &retval);=0A- return retval;=0A-}=0A-=0A-/= * Do all the dirty work of recursing through a directory structure=0A- * ch= eck everything for validitiy and update everything properly.=0A- * Note it = does not check filesizes !!!, it doesn't know anything=0A- * about them=0A-= */=0A-static int add=5Fdir=5Fto=5Ffilelist(struct benchfiles *bf, DIR * su= bdir,=0A- char *subdir=5Fpath, fl=5Fvalidation=5Ffunc=5Ft vfunc,= =0A- void *vf=5Fdata)=0A-{=0A- int retval =3D 0;=0A- struct dirent= *d=5Fent =3D NULL;=0A-=0A- while ((d=5Fent =3D readdir(subdir)) !=3D NULL)= {=0A- DIR *tmp =3D NULL;=0A- char filename=5Fbuf[FILENAME=5FMAX * 2];=0A= -=0A- if (FILENAME=5FMAX < snprintf(filename=5Fbuf, FILENAME=5FMAX, "%s/%s= ",=0A- subdir=5Fpath, d=5Fent->d=5Fname)) {=0A- printf("filename = \"%s\" too long aborting\n",=0A- filename=5Fbuf);=0A- return -1;= =0A- }=0A- tmp =3D opendir(filename=5Fbuf);=0A- if (tmp =3D=3D NULL) {= =0A- struct ffsb=5Ffile *ffsb=5Ffile =3D NULL;=0A-=0A- if (validate=5Ff= ilename(bf, d=5Fent->d=5Fname) < 0) {=0A- printf("filename \"%s\" is inv= alid aborting\n",=0A- d=5Fent->d=5Fname);=0A- return -1;=0A- = }=0A- /* Verify size/other attributes via callback */=0A- if (vfunc(b= f, filename=5Fbuf, vf=5Fdata)) {=0A- printf("filename \"%s\" didn't pass= "=0A- "validation\n", d=5Fent->d=5Fname);=0A- return -1;=0A- = }=0A- /* Add file to data structure */=0A- ffsb=5Ffile =3D=0A- = add=5Ffile=5Fnamed(bf, ffsb=5Fget=5Ffilesize(filename=5Fbuf),=0A- fi= lename=5Fbuf);=0A- unlock=5Ffile=5Fwriter(ffsb=5Ffile);=0A- } else {=0A-= /* Check for the usual suspects and skip them */=0A- if ((0 =3D=3D str= cmp(".", d=5Fent->d=5Fname)) ||=0A- (0 =3D=3D strcmp("..", d=5Fent->d= =5Fname))) {=0A- closedir(tmp);=0A- continue;=0A- }=0A- if (valid= ate=5Fdirname(bf, d=5Fent->d=5Fname) < 0) {=0A- printf("dirname \"%s\" i= s invalid aborting\n",=0A- d=5Fent->d=5Fname);=0A- closedir(tm= p);=0A- return -1;=0A- }=0A- if (vfunc(bf, filename=5Fbuf, vf=5Fdata= )) {=0A- printf("dir \"%s\" didn't pass validation\n",=0A- d= =5Fent->d=5Fname);=0A- closedir(tmp);=0A- return -1;=0A- }=0A- /*= Update filelist */=0A- bf->numsubdirs++;=0A-=0A- /* recurse */=0A- r= etval +=3D add=5Fdir=5Fto=5Ffilelist(bf, tmp, filename=5Fbuf,=0A- = vfunc, vf=5Fdata);=0A-=0A- /* clean up */=0A- closedir(tmp);=0A- }= =0A- }=0A- return retval;=0A-}=0A-=0A-int grab=5Fold=5Ffileset(struct bench= files *bf, char *basename,=0A- fl=5Fvalidation=5Ffunc=5Ft vfunc, void= *vfunc=5Fdata)=0A-{=0A- int retval =3D 0;=0A- char buf[FILENAME=5FMAX * 2]= ;=0A- DIR *lc=5Fdir =3D NULL;=0A-=0A- if (FILENAME=5FMAX < snprintf(buf, FI= LENAME=5FMAX, "%s", bf->basedir)) {=0A- printf("filename \"%s\" is too lon= g aborting\n", buf);=0A- return -1;=0A- }=0A-=0A- lc=5Fdir =3D opendir(buf= );=0A- if (lc=5Fdir =3D=3D NULL) {=0A- perror("opendir");=0A- return -1;= =0A- }=0A-=0A- retval =3D add=5Fdir=5Fto=5Ffilelist(bf, lc=5Fdir, buf, vfun= c, vfunc=5Fdata);=0A-=0A- closedir(lc=5Fdir);=0A- return retval;=0A-}=0A-= =0A-/* Get the number of files */=0A-uint32=5Ft get=5Flistsize(struct bench= files * bf)=0A-{=0A- return bf->listsize;=0A-}=0A-=0A-/* Get the number of = subdirectories */=0A-uint32=5Ft get=5Fnumsubdirs(struct benchfiles * bf)=0A= -{=0A- return bf->numsubdirs;=0A-}=0Adiff --git a/testcases/kernel/fs/ext4-= new-features/ffsb-6.0-rc2/filelist.h b/testcases/kernel/fs/ext4-new-feature= s/ffsb-6.0-rc2/filelist.h=0Adeleted file mode 100644=0Aindex e11d066..00000= 00=0A--- a/testcases/kernel/fs/ext4-new-features/ffsb-6.0-rc2/filelist.h=0A= +++ /dev/null=0A@@ -1,145 +0,0 @@=0A-/*=0A- * Copyright (c) International= Business Machines Corp., 2001-2004=0A- *=0A- * This program is free soft= ware; you can redistribute it and/or modify=0A- * it under the terms of = the GNU General Public License as published by=0A- * the Free Software Fo= undation; either version 2 of the License, or=0A- * (at your option) any = later version.=0A- *=0A- * This program is distributed in the hope that i= t will be useful,=0A- * but WITHOUT ANY WARRANTY; without even the impli= ed warranty of=0A- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.= See=0A- * the GNU General Public License for more details.=0A- *=0A- * = You should have received a copy of the GNU General Public License=0A- * = along with this program; if not, write to the Free Software=0A- * Found= ation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA=0A-= */=0A-#ifndef =5FFILELIST=5FH=5F=0A-#define =5FFILELIST=5FH=5F=0A-=0A-#inc= lude =0A-#include "rand.h"=0A-#include "rwlock.h"=0A-#include "c= irlist.h"=0A-#include "rbt.h"=0A-=0A-#define SUBDIRNAME=5FBASE "dir"=0A-#de= fine FILENAME=5FBASE "file"=0A-=0A-struct ffsb=5Ffile {=0A- char *name;=0A-= uint64=5Ft size;=0A- struct rwlock lock;=0A- uint32=5Ft num;=0A-};=0A-=0A-= struct cirlist;=0A-=0A-/* Tree of ffsb=5Ffile structs and associated state = info struct must be=0A- * locked during use.=0A- */=0A-struct benchfiles {= =0A- /* The base directory in which all subdirs and files are=0A- * create= d=0A- */=0A- char *basedir;=0A-=0A- /* The name to prepend to all director= y and file names */=0A- char *basename;=0A- uint32=5Ft numsubdirs;=0A-=0A- = /* Files which currently exist on the filesystem */=0A- struct red=5Fblack= =5Ftree *files;=0A-=0A- /* Directories which currently exist on the filesys= tem */=0A- struct red=5Fblack=5Ftree *dirs;=0A-=0A- /* Files which have bee= n deleted, and whose numbers should be=0A- * reused=0A- */=0A- struct cir= list *holes;=0A- struct cirlist *dholes;=0A-=0A- /* This lock must be held = while manipulating the structure */=0A- struct rwlock fileslock;=0A- uint32= =5Ft listsize; /* Sum size of nodes in files and holes */=0A-};=0A-=0A-/* I= nitializes the list, user must call this before anything else it=0A- * will= create the basedir and subdirs on the filesystem automatically=0A- * if th= e builddirs arg. is nonzero=0A- */=0A-void init=5Ffilelist(struct benchfile= s *, char *, char *, uint32=5Ft, int);=0A-void destroy=5Ffilelist(struct be= nchfiles *);=0A-=0A-/* Allocates a new file, adds to list, (write) locks it= , and returns=0A- * it. This function also randomly selects a filename + p= ath to=0A- * assign to the new file.=0A- *=0A- * It first checks the "holes= " list for any available filenames.=0A- * Caller must ensure file is actual= ly created on disk=0A- */=0A-struct ffsb=5Ffile *add=5Ffile(struct benchfil= es *b, uint64=5Ft size, randdata=5Ft *rd);=0A-struct ffsb=5Ffile *add=5Fdir= (struct benchfiles *, uint64=5Ft, randdata=5Ft *);=0A-=0A-/* Removes file f= rom list, decrements listsize.=0A- *=0A- * File should be writer-locked bef= ore calling this function.=0A- *=0A- * This function does not unlock file a= fter removal from list.=0A- *=0A- * Caller must ensure file is actually rem= oved on disk.=0A- *=0A- * Caller must NOT free file->name and file, since o= ldfiles are being=0A- * put into holes list.=0A- */=0A-void remove=5Ffile(s= truct benchfiles *, struct ffsb=5Ffile *);=0A-=0A-/* Picks a file at random= , locks it for reading and returns it=0A- * locked=0A- */=0A-struct ffsb=5F= file *choose=5Ffile=5Freader(struct benchfiles *, randdata=5Ft *);=0A-=0A-/= * Picks a file at random, locks it for writing and returns it=0A- * locked= =0A- */=0A-struct ffsb=5Ffile *choose=5Ffile=5Fwriter(struct benchfiles *, = randdata=5Ft *);=0A-=0A-/* changes the file->name of a file, file must be w= rite locked=0A- * it does not free the old file->name, so caller must keep = a ref to it=0A- * and free after the call=0A- */=0A-void rename=5Ffile(stru= ct ffsb=5Ffile *);=0A-=0A-void unlock=5Ffile=5Freader(struct ffsb=5Ffile *)= ;=0A-void unlock=5Ffile=5Fwriter(struct ffsb=5Ffile *);=0A-=0A-/* Uses SUBD= IRNAME=5FBASE/FILENAME=5FBASE + bf->basename to validate a=0A- * name retur= ns a negative on invalid names, and the actual file=0A- * number if valid= =0A- */=0A-int validate=5Ffilename(struct benchfiles *, char *);=0A-int val= idate=5Fdirname(struct benchfiles *, char *);=0A-=0A-/* Function type which= , does some validation of existing files=0A- * currently only used by ffsb= =5Ffs stuff, returns 0 on success=0A- */=0A-typedef int (*fl=5Fvalidation= =5Ffunc=5Ft)(struct benchfiles *, char *, void *);=0A-=0A-/* Provided for r= e-use of filesets. Also runs the validation callback=0A- * on each file/di= r that is found, after verifying the name is=0A- * conformant. The fileset= should be initialized with init=5Ffileset()=0A- * beforehand.=0A- * Return= s 0 on success=0A- */=0A-int grab=5Fold=5Ffileset(struct benchfiles *, char= *, fl=5Fvalidation=5Ffunc=5Ft,=0A- void *);=0A-=0A-/* Get the numbe= r of files */=0A-uint32=5Ft get=5Flistsize(struct benchfiles *);=0A-=0A-/* = Get the number of subdirectories */=0A-uint32=5Ft get=5Fnumsubdirs(struct b= enchfiles *);=0A-=0A-#endif /* =5FFILELIST=5FH=5F */=0Adiff --git a/testcas= es/kernel/fs/ext4-new-features/ffsb-6.0-rc2/fileops.c b/testcases/kernel/fs= /ext4-new-features/ffsb-6.0-rc2/fileops.c=0Adeleted file mode 100644=0Ainde= x 3212c18..0000000=0A--- a/testcases/kernel/fs/ext4-new-features/ffsb-6.0-r= c2/fileops.c=0A+++ /dev/null=0A@@ -1,542 +0,0 @@=0A-/*=0A- * Copyright (c= ) International Business Machines Corp., 2001-2004=0A- *=0A- * This progr= am is free software; you can redistribute it and/or modify=0A- * it unde= r the terms of the GNU General Public License as published by=0A- * the F= ree Software Foundation; either version 2 of the License, or=0A- * (at yo= ur option) any later version.=0A- *=0A- * This program is distributed in = the hope that it will be useful,=0A- * but WITHOUT ANY WARRANTY; without= even the implied warranty of=0A- * MERCHANTABILITY or FITNESS FOR A PART= ICULAR PURPOSE. See=0A- * the GNU General Public License for more detail= s.=0A- *=0A- * You should have received a copy of the GNU General Public = License=0A- * along with this program; if not, write to the Free Softwar= e=0A- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 021= 10-1301 USA=0A- */=0A-#define =5FLARGEFILE64=5FSOURCE=0A-#include =0A-#include =0A-#include =0A-#include =0A-#include =0A-#include =0A-#include =0A-#i= nclude =0A-=0A-#include "fh.h"=0A-#include "util.h"=0A-#include "f= fsb.h"=0A-#include "fileops.h"=0A-#include "ffsb=5Fop.h"=0A-=0A-static void= do=5Fstats(struct timeval *start, struct timeval *end,=0A- ffsb=5Fth= read=5Ft * ft, ffsb=5Ffs=5Ft * fs, syscall=5Ft sys)=0A-{=0A- struct timeval= diff;=0A- uint32=5Ft value =3D 0;=0A-=0A- if (!ft && !fs)=0A- return;=0A-= =0A- timersub(end, start, &diff);=0A-=0A- value =3D 1000000 * diff.tv=5Fsec= + diff.tv=5Fusec;=0A-=0A- if (ft && ft=5Fneeds=5Fstats(ft, sys))=0A- ft= =5Fadd=5Fstat(ft, sys, value);=0A- if (fs && fs=5Fneeds=5Fstats(fs, sys))= =0A- fs=5Fadd=5Fstat(fs, sys, value);=0A-}=0A-=0A-void fop=5Fbench(ffsb=5F= fs=5Ft * fs, unsigned opnum)=0A-{=0A- fs=5Fset=5Fopdata(fs, fs=5Fget=5Fdata= files(fs), opnum);=0A-}=0A-=0A-void fop=5Fage(ffsb=5Ffs=5Ft * fs, unsigned = opnum)=0A-{=0A- fs=5Fset=5Fopdata(fs, fs=5Fget=5Fagefiles(fs), opnum);=0A-}= =0A-=0A-static unsigned readfile=5Fhelper(int fd, uint64=5Ft size, uint32= =5Ft blocksize,=0A- char *buf, ffsb=5Fthread=5Ft * ft, ffsb=5Ffs=5Ft * f= s)=0A-{=0A- int iterations, a;=0A- int last;=0A-=0A- iterations =3D size / = blocksize;=0A- last =3D size % blocksize;=0A-=0A- for (a =3D 0; a < iterati= ons; a++)=0A- fhread(fd, buf, blocksize, ft, fs);=0A- if (last)=0A- fhrea= d(fd, buf, last, ft, fs);=0A- return iterations;=0A-}=0A-=0A-static uint64= =5Ft get=5Frandom=5Foffset(randdata=5Ft * rd, uint64=5Ft filesize,=0A- = int aligned)=0A-{=0A- if (!aligned)=0A- return getllrandom(rd, filesize);= =0A-=0A- filesize /=3D 4096;=0A- return getllrandom(rd, filesize) * 4096;= =0A-}=0A-=0A-void ffsb=5Freadfile(ffsb=5Fthread=5Ft * ft, ffsb=5Ffs=5Ft * f= s, unsigned opnum)=0A-{=0A- struct benchfiles *bf =3D (struct benchfiles *)= fs=5Fget=5Fopdata(fs, opnum);=0A- struct ffsb=5Ffile *curfile =3D NULL;=0A-= =0A- int fd;=0A- uint64=5Ft filesize;=0A-=0A- char *buf =3D ft=5Fgetbuf(ft)= ;=0A- int read=5Frandom =3D ft=5Fget=5Fread=5Frandom(ft);=0A- uint64=5Ft re= ad=5Fsize =3D ft=5Fget=5Fread=5Fsize(ft);=0A- uint32=5Ft read=5Fblocksize = =3D ft=5Fget=5Fread=5Fblocksize(ft);=0A- uint32=5Ft read=5Fskipsize =3D ft= =5Fget=5Fread=5Fskipsize(ft);=0A- int skip=5Freads =3D ft=5Fget=5Fread=5Fsk= ip(ft);=0A- struct randdata *rd =3D ft=5Fget=5Franddata(ft);=0A-=0A- uint64= =5Ft iterations =3D 0;=0A-=0A- curfile =3D choose=5Ffile=5Freader(bf, rd);= =0A- fd =3D fhopenread(curfile->name, ft, fs);=0A-=0A- filesize =3D ffsb=5F= get=5Ffilesize(curfile->name);=0A-=0A- assert(filesize >=3D read=5Fsize);= =0A-=0A- /* Sequential read, starting at a random point */=0A- if (!read=5F= random) {=0A- uint64=5Ft range =3D filesize - read=5Fsize;=0A- uint64=5Ft= offset =3D 0;=0A- /* Skip or "stride" reads option */=0A- if (skip=5Frea= ds) {=0A- unsigned i, last;=0A- uint64=5Ft minfilesize;=0A- iteration= s =3D read=5Fsize / read=5Fblocksize;=0A- last =3D read=5Fsize % read=5Fb= locksize;=0A-=0A- /* Double check that the user hasn't specified=0A- *= a read=5Fsize that is too large when combined=0A- * with the seeks=0A- = */=0A- if (last)=0A- minfilesize =3D last + iterations *=0A- = (read=5Fblocksize + read=5Fskipsize);=0A- else=0A- minfilesize =3D re= ad=5Fblocksize + iterations - 1 *=0A- (read=5Fblocksize + read=5Fski= psize);=0A-=0A- if (minfilesize > filesize) {=0A- printf("Error: read = size %llu bytes too big "=0A- "w/ skipsize %u and blocksize %u,"= =0A- " for file of size %llu bytes\n"=0A- " aborting\n\= n", read=5Fsize,=0A- read=5Fskipsize, read=5Fblocksize, filesize)= ;=0A- printf("minimum file size must be at least "=0A- " %llu = bytes\n", minfilesize);=0A- exit(1);=0A- }=0A-=0A- for (i =3D 0; i <= iterations; i++) {=0A- fhread(fd, buf, read=5Fblocksize, ft, fs);=0A- = fhseek(fd, (uint64=5Ft) read=5Fskipsize, SEEK=5FCUR,=0A- ft, fs= );=0A- }=0A- if (last) {=0A- fhread(fd, buf, (uint64=5Ft) last, ft, = fs);=0A- iterations++;=0A- }=0A- } else {=0A- /* Regular sequential= reads */=0A- if (range) {=0A- offset =3D get=5Frandom=5Foffset(rd, ra= nge,=0A- fs=5Fget=5Falignio(fs));=0A- fhseek(fd, offset, SEEK= =5FSET, ft, fs);=0A- }=0A- iterations =3D readfile=5Fhelper(fd, read=5F= size,=0A- read=5Fblocksize, buf,=0A- ft, fs);=0A- }=0A= - } else {=0A- /* Randomized read */=0A- uint64=5Ft range =3D filesize - = read=5Fblocksize;=0A- int i;=0A-=0A- iterations =3D read=5Fsize / read=5F= blocksize;=0A-=0A- for (i =3D 0; i < iterations; i++) {=0A- uint64=5Ft o= ffset =3D get=5Frandom=5Foffset(rd, range,=0A- fs=5Fget=5Falignio= (fs));=0A- fhseek(fd, offset, SEEK=5FSET, ft, fs);=0A- fhread(fd, buf, = read=5Fblocksize, ft, fs);=0A- }=0A- }=0A-=0A- unlock=5Ffile=5Freader(curf= ile);=0A- fhclose(fd, ft, fs);=0A-=0A- ft=5Fincr=5Fop(ft, opnum, iterations= , read=5Fsize);=0A- ft=5Fadd=5Freadbytes(ft, read=5Fsize);=0A-}=0A-=0A-/* J= ust like ffsb=5Freadfile but we read the whole file from start to=0A- * fin= ish regardless of file size.=0A- */=0A-void ffsb=5Freadall(ffsb=5Fthread=5F= t * ft, ffsb=5Ffs=5Ft * fs, unsigned opnum)=0A-{=0A- struct benchfiles *bf = =3D (struct benchfiles *)fs=5Fget=5Fopdata(fs, opnum);=0A- struct ffsb=5Ffi= le *curfile =3D NULL;=0A- int fd;=0A- uint64=5Ft filesize;=0A-=0A- char *bu= f =3D ft=5Fgetbuf(ft);=0A- uint32=5Ft read=5Fblocksize =3D ft=5Fget=5Fread= =5Fblocksize(ft);=0A- struct randdata *rd =3D ft=5Fget=5Franddata(ft);=0A-= =0A- unsigned iterations =3D 0;=0A-=0A- curfile =3D choose=5Ffile=5Freader(= bf, rd);=0A- fd =3D fhopenread(curfile->name, ft, fs);=0A-=0A- filesize =3D= ffsb=5Fget=5Ffilesize(curfile->name);=0A- iterations =3D readfile=5Fhelper= (fd, filesize, read=5Fblocksize, buf, ft, fs);=0A-=0A- unlock=5Ffile=5Fread= er(curfile);=0A- fhclose(fd, ft, fs);=0A-=0A- ft=5Fincr=5Fop(ft, opnum, ite= rations, filesize);=0A- ft=5Fadd=5Freadbytes(ft, filesize);=0A-}=0A-=0A-/* = Shared core between ffsb=5Fwritefile and ffsb=5Fwritefile=5Ffsync.*/=0A-=0A= -static unsigned ffsb=5Fwritefile=5Fcore(ffsb=5Fthread=5Ft * ft, ffsb=5Ffs= =5Ft * fs,=0A- unsigned opnum, uint64=5Ft * filesize=5Fret,=0A- = int fsync=5Ffile)=0A-{=0A- struct benchfiles *bf =3D (struct benchfiles = *)fs=5Fget=5Fopdata(fs, opnum);=0A- struct ffsb=5Ffile *curfile =3D NULL;= =0A-=0A- int fd;=0A- uint64=5Ft filesize;=0A-=0A- char *buf =3D ft=5Fgetbuf= (ft);=0A- int write=5Frandom =3D ft=5Fget=5Fwrite=5Frandom(ft);=0A- uint32= =5Ft write=5Fsize =3D ft=5Fget=5Fwrite=5Fsize(ft);=0A- uint32=5Ft write=5Fb= locksize =3D ft=5Fget=5Fwrite=5Fblocksize(ft);=0A- struct randdata *rd =3D = ft=5Fget=5Franddata(ft);=0A- unsigned iterations =3D 0;=0A-=0A- curfile =3D= choose=5Ffile=5Freader(bf, rd);=0A- fd =3D fhopenwrite(curfile->name, ft, = fs);=0A-=0A- filesize =3D ffsb=5Fget=5Ffilesize(curfile->name);=0A-=0A- ass= ert(filesize >=3D write=5Fsize);=0A-=0A- /* Sequential write, starting at a= random point */=0A- if (!write=5Frandom) {=0A- uint64=5Ft range =3D file= size - write=5Fsize;=0A- uint64=5Ft offset =3D 0;=0A- if (range) {=0A- = offset =3D get=5Frandom=5Foffset(rd, range,=0A- fs=5Fget=5Falignio(= fs));=0A- fhseek(fd, offset, SEEK=5FSET, ft, fs);=0A- }=0A- iterations = =3D writefile=5Fhelper(fd, write=5Fsize, write=5Fblocksize,=0A- b= uf, ft, fs);=0A- } else {=0A- /* Randomized write */=0A- uint64=5Ft range= =3D filesize - write=5Fblocksize;=0A- int i;=0A- iterations =3D write=5F= size / write=5Fblocksize;=0A-=0A- for (i =3D 0; i < iterations; i++) {=0A-= uint64=5Ft offset =3D get=5Frandom=5Foffset(rd, range,=0A- fs= =5Fget=5Falignio(fs));=0A- fhseek(fd, offset, SEEK=5FSET, ft, fs);=0A- = fhwrite(fd, buf, write=5Fblocksize, ft, fs);=0A- }=0A- }=0A-=0A- if (fsync= =5Ffile) {=0A- if (fsync(fd)) {=0A- perror("fsync");=0A- printf("abort= ing\n");=0A- exit(1);=0A- }=0A- }=0A- unlock=5Ffile=5Freader(curfile);= =0A- fhclose(fd, ft, fs);=0A- *filesize=5Fret =3D filesize;=0A- return iter= ations;=0A-}=0A-=0A-void ffsb=5Fwritefile(ffsb=5Fthread=5Ft * ft, ffsb=5Ffs= =5Ft * fs, unsigned opnum)=0A-{=0A- unsigned iterations;=0A- uint64=5Ft fil= esize;=0A-=0A- iterations =3D ffsb=5Fwritefile=5Fcore(ft, fs, opnum, &files= ize, 0);=0A- ft=5Fincr=5Fop(ft, opnum, iterations, filesize);=0A- ft=5Fadd= =5Fwritebytes(ft, filesize);=0A-}=0A-=0A-void ffsb=5Fwritefile=5Ffsync(ffsb= =5Fthread=5Ft * ft, ffsb=5Ffs=5Ft * fs, unsigned opnum)=0A-{=0A- unsigned i= terations;=0A- uint64=5Ft filesize;=0A-=0A- iterations =3D ffsb=5Fwritefile= =5Fcore(ft, fs, opnum, &filesize, 1);=0A- ft=5Fincr=5Fop(ft, opnum, iterati= ons, filesize);=0A- ft=5Fadd=5Fwritebytes(ft, filesize);=0A-}=0A-=0A-/* Sha= red core between ffsb=5Fwriteall and ffsb=5Fwriteall=5Ffsync.*/=0A-=0A-stat= ic unsigned ffsb=5Fwriteall=5Fcore(ffsb=5Fthread=5Ft * ft, ffsb=5Ffs=5Ft * = fs,=0A- unsigned opnum, uint64=5Ft * filesize=5Fret,=0A- int fs= ync=5Ffile)=0A-{=0A- struct benchfiles *bf =3D (struct benchfiles *)fs=5Fge= t=5Fopdata(fs, opnum);=0A- struct ffsb=5Ffile *curfile =3D NULL;=0A- int fd= ;=0A- uint64=5Ft filesize;=0A-=0A- char *buf =3D ft=5Fgetbuf(ft);=0A- uint3= 2=5Ft write=5Fblocksize =3D ft=5Fget=5Fwrite=5Fblocksize(ft);=0A- struct ra= nddata *rd =3D ft=5Fget=5Franddata(ft);=0A-=0A- unsigned iterations =3D 0;= =0A-=0A- curfile =3D choose=5Ffile=5Freader(bf, rd);=0A- fd =3D fhopenwrite= (curfile->name, ft, fs);=0A-=0A- filesize =3D ffsb=5Fget=5Ffilesize(curfile= ->name);=0A- iterations =3D writefile=5Fhelper(fd, filesize, write=5Fblocks= ize, buf,=0A- ft, fs);=0A- if (fsync=5Ffile)=0A- if (fsync(fd)) {= =0A- perror("fsync");=0A- printf("aborting\n");=0A- exit(1);=0A- }= =0A-=0A- unlock=5Ffile=5Freader(curfile);=0A- fhclose(fd, ft, fs);=0A- *fil= esize=5Fret =3D filesize;=0A- return iterations;=0A-}=0A-=0A-/* Just like f= fsb=5Fwritefile but we write the whole file from start to=0A- * finish rega= rdless of file size=0A- */=0A-void ffsb=5Fwriteall(ffsb=5Fthread=5Ft * ft, = ffsb=5Ffs=5Ft * fs, unsigned opnum)=0A-{=0A- unsigned iterations;=0A- uint6= 4=5Ft filesize;=0A-=0A- iterations =3D ffsb=5Fwriteall=5Fcore(ft, fs, opnum= , &filesize, 0);=0A- ft=5Fincr=5Fop(ft, opnum, iterations, filesize);=0A- f= t=5Fadd=5Fwritebytes(ft, filesize);=0A-}=0A-=0A-void ffsb=5Fwriteall=5Ffsyn= c(ffsb=5Fthread=5Ft * ft, ffsb=5Ffs=5Ft * fs, unsigned opnum)=0A-{=0A- unsi= gned iterations;=0A- uint64=5Ft filesize;=0A-=0A- iterations =3D ffsb=5Fwri= teall=5Fcore(ft, fs, opnum, &filesize, 1);=0A- ft=5Fincr=5Fop(ft, opnum, it= erations, filesize);=0A- ft=5Fadd=5Fwritebytes(ft, filesize);=0A-}=0A-=0A-s= tatic unsigned ffsb=5Fappendfile=5Fcore(ffsb=5Fthread=5Ft * ft, ffsb=5Ffs= =5Ft * fs,=0A- unsigned opnum, uint64=5Ft * filesize=5Fret,=0A- = int fsync=5Ffile)=0A-{=0A- struct benchfiles *bf =3D (struct benchfile= s *)fs=5Fget=5Fopdata(fs, opnum);=0A- struct ffsb=5Ffile *curfile;=0A-=0A- = int fd;=0A-=0A- char *buf =3D ft=5Fgetbuf(ft);=0A- uint32=5Ft write=5Fsize = =3D ft=5Fget=5Fwrite=5Fsize(ft);=0A- uint32=5Ft write=5Fblocksize =3D ft=5F= get=5Fwrite=5Fblocksize(ft);=0A- struct randdata *rd =3D ft=5Fget=5Franddat= a(ft);=0A- unsigned iterations =3D 0;=0A-=0A- curfile =3D choose=5Ffile=5Fr= eader(bf, rd);=0A- fd =3D fhopenappend(curfile->name, ft, fs);=0A-=0A- unlo= ck=5Ffile=5Freader(curfile);=0A-=0A- curfile->size +=3D (uint64=5Ft) write= =5Fsize;=0A-=0A- iterations =3D writefile=5Fhelper(fd, write=5Fsize, write= =5Fblocksize, buf,=0A- ft, fs);=0A- if (fsync=5Ffile)=0A- if (fsy= nc(fd)) {=0A- perror("fsync");=0A- printf("aborting\n");=0A- exit(1);= =0A- }=0A-=0A- fhclose(fd, ft, fs);=0A- *filesize=5Fret =3D write=5Fsize;= =0A- return iterations;=0A-}=0A-=0A-void ffsb=5Fappendfile(ffsb=5Fthread=5F= t * ft, ffsb=5Ffs=5Ft * fs, unsigned opnum)=0A-{=0A- unsigned iterations;= =0A- uint64=5Ft filesize;=0A-=0A- iterations =3D ffsb=5Fappendfile=5Fcore(f= t, fs, opnum, &filesize, 0);=0A- ft=5Fincr=5Fop(ft, opnum, iterations, file= size);=0A- ft=5Fadd=5Fwritebytes(ft, filesize);=0A-}=0A-=0A-void ffsb=5Fapp= endfile=5Ffsync(ffsb=5Fthread=5Ft * ft, ffsb=5Ffs=5Ft * fs, unsigned opnum)= =0A-{=0A- unsigned iterations;=0A- uint64=5Ft filesize;=0A-=0A- iterations = =3D ffsb=5Fappendfile=5Fcore(ft, fs, opnum, &filesize, 1);=0A- ft=5Fincr=5F= op(ft, opnum, iterations, filesize);=0A- ft=5Fadd=5Fwritebytes(ft, filesize= );=0A-}=0A-=0A-static unsigned ffsb=5Fcreatefile=5Fcore(ffsb=5Fthread=5Ft *= ft, ffsb=5Ffs=5Ft * fs,=0A- unsigned opnum, uint64=5Ft * filesize= =5Fret,=0A- int fsync=5Ffile)=0A-{=0A- struct benchfiles *bf =3D (s= truct benchfiles *)fs=5Fget=5Fopdata(fs, opnum);=0A- struct ffsb=5Ffile *ne= wfile =3D NULL;=0A-=0A- int fd;=0A- uint64=5Ft size;=0A-=0A- char *buf =3D = ft=5Fgetbuf(ft);=0A- uint32=5Ft write=5Fblocksize =3D ft=5Fget=5Fwrite=5Fbl= ocksize(ft);=0A- struct randdata *rd =3D ft=5Fget=5Franddata(ft);=0A- unsig= ned iterations =3D 0;=0A-=0A- if (fs->num=5Fweights) {=0A- int num =3D 1 += getrandom(rd, fs->sum=5Fweights);=0A- int curop =3D 0;=0A-=0A- while (fs= ->size=5Fweights[curop].weight < num) {=0A- num -=3D fs->size=5Fweights[c= urop].weight;=0A- curop++;=0A- }=0A- size =3D fs->size=5Fweights[curop]= .size;=0A- } else {=0A- uint64=5Ft range =3D=0A- fs=5Fget=5Fmax=5Ffil= esize(fs) - fs=5Fget=5Fmin=5Ffilesize(fs);=0A- size =3D fs=5Fget=5Fmin=5Ff= ilesize(fs);=0A- if (range !=3D 0)=0A- size +=3D getllrandom(rd, range);= =0A- }=0A-=0A- newfile =3D add=5Ffile(bf, size, rd);=0A- fd =3D fhopencreat= e(newfile->name, ft, fs);=0A- iterations =3D writefile=5Fhelper(fd, size, w= rite=5Fblocksize, buf, ft, fs);=0A-=0A- if (fsync=5Ffile)=0A- if (fsync(fd= )) {=0A- perror("fsync");=0A- printf("aborting\n");=0A- exit(1);=0A- = }=0A-=0A- fhclose(fd, ft, fs);=0A- unlock=5Ffile=5Fwriter(newfile);=0A- *f= ilesize=5Fret =3D size;=0A- return iterations;=0A-}=0A-=0A-void ffsb=5Fcrea= tefile(ffsb=5Fthread=5Ft * ft, ffsb=5Ffs=5Ft * fs, unsigned opnum)=0A-{=0A-= unsigned iterations;=0A- uint64=5Ft filesize;=0A-=0A- iterations =3D ffsb= =5Fcreatefile=5Fcore(ft, fs, opnum, &filesize, 0);=0A- ft=5Fincr=5Fop(ft, o= pnum, iterations, filesize);=0A- ft=5Fadd=5Fwritebytes(ft, filesize);=0A-}= =0A-=0A-void ffsb=5Fcreatefile=5Ffsync(ffsb=5Fthread=5Ft * ft, ffsb=5Ffs=5F= t * fs, unsigned opnum)=0A-{=0A- unsigned iterations;=0A- uint64=5Ft filesi= ze;=0A-=0A- iterations =3D ffsb=5Fcreatefile=5Fcore(ft, fs, opnum, &filesiz= e, 1);=0A- ft=5Fincr=5Fop(ft, opnum, iterations, filesize);=0A- ft=5Fadd=5F= writebytes(ft, filesize);=0A-}=0A-=0A-void ffsb=5Fdeletefile(ffsb=5Fthread= =5Ft * ft, ffsb=5Ffs=5Ft * fs, unsigned opnum)=0A-{=0A- struct benchfiles *= bf =3D (struct benchfiles *)fs=5Fget=5Fopdata(fs, opnum);=0A- struct ffsb= =5Ffile *curfile =3D NULL;=0A- randdata=5Ft *rd =3D ft=5Fget=5Franddata(ft)= ;=0A- struct timeval start, end;=0A- int need=5Fstats =3D ft=5Fneeds=5Fstat= s(ft, SYS=5FUNLINK) ||=0A- fs=5Fneeds=5Fstats(fs, SYS=5FUNLINK);=0A-=0A= - curfile =3D choose=5Ffile=5Fwriter(bf, rd);=0A- remove=5Ffile(bf, curfile= );=0A-=0A- if (need=5Fstats)=0A- gettimeofday(&start, NULL);=0A-=0A- if (u= nlink(curfile->name) =3D=3D -1) {=0A- printf("error deleting %s in deletef= ile\n", curfile->name);=0A- perror("deletefile");=0A- exit(0);=0A- }=0A-= =0A- if (need=5Fstats) {=0A- gettimeofday(&end, NULL);=0A- do=5Fstats(&st= art, &end, ft, fs, SYS=5FUNLINK);=0A- }=0A-=0A- rw=5Funlock=5Fwrite(&curfil= e->lock);=0A-=0A- ft=5Fincr=5Fop(ft, opnum, 1, 0);=0A-}=0A-=0A-void ffsb=5F= open=5Fclose(ffsb=5Fthread=5Ft * ft, ffsb=5Ffs=5Ft * fs, unsigned opnum)=0A= -{=0A- struct benchfiles *bf =3D (struct benchfiles *)fs=5Fget=5Fopdata(fs,= opnum);=0A- struct ffsb=5Ffile *curfile =3D NULL;=0A- randdata=5Ft *rd =3D= ft=5Fget=5Franddata(ft);=0A- int fd;=0A-=0A- curfile =3D choose=5Ffile=5Fr= eader(bf, rd);=0A- fd =3D fhopenread(curfile->name, ft, fs);=0A- fhclose(fd= , ft, fs);=0A- unlock=5Ffile=5Freader(curfile);=0A- ft=5Fincr=5Fop(ft, opnu= m, 1, 0);=0A-}=0A-=0A-void ffsb=5Fstat(ffsb=5Fthread=5Ft * ft, ffsb=5Ffs=5F= t * fs, unsigned opnum)=0A-{=0A- struct benchfiles *bf =3D (struct benchfil= es *)fs=5Fget=5Fopdata(fs, opnum);=0A- struct ffsb=5Ffile *curfile =3D NULL= ;=0A- randdata=5Ft *rd =3D ft=5Fget=5Franddata(ft);=0A-=0A- curfile =3D cho= ose=5Ffile=5Freader(bf, rd);=0A- fhstat(curfile->name, ft, fs);=0A- unlock= =5Ffile=5Freader(curfile);=0A-=0A- ft=5Fincr=5Fop(ft, opnum, 1, 0);=0A-}=0A= diff --git a/testcases/kernel/fs/ext4-new-features/ffsb-6.0-rc2/fileops.h b= /testcases/kernel/fs/ext4-new-features/ffsb-6.0-rc2/fileops.h=0Adeleted fil= e mode 100644=0Aindex f15f79b..0000000=0A--- a/testcases/kernel/fs/ext4-new= -features/ffsb-6.0-rc2/fileops.h=0A+++ /dev/null=0A@@ -1,51 +0,0 @@=0A-/*= =0A- * Copyright (c) International Business Machines Corp., 2001-2004=0A-= *=0A- * This program is free software; you can redistribute it and/or m= odify=0A- * it under the terms of the GNU General Public License as publi= shed by=0A- * the Free Software Foundation; either version 2 of the Licen= se, or=0A- * (at your option) any later version.=0A- *=0A- * This progr= am is distributed in the hope that it will be useful,=0A- * but WITHOUT A= NY WARRANTY; without even the implied warranty of=0A- * MERCHANTABILITY = or FITNESS FOR A PARTICULAR PURPOSE. See=0A- * the GNU General Public Li= cense for more details.=0A- *=0A- * You should have received a copy of th= e GNU General Public License=0A- * along with this program; if not, writ= e to the Free Software=0A- * Foundation, Inc., 51 Franklin Street, Fifth = Floor, Boston, MA 02110-1301 USA=0A- */=0A-#ifndef =5FFILEOPS=5FH=5F=0A-#de= fine =5FFILEOPS=5FH=5F=0A-=0A-#include "ffsb=5Fthread.h"=0A-#include "ffsb.= h"=0A-#include "ffsb=5Fop.h"=0A-#include "ffsb=5Ffs.h"=0A-=0A-void ffsb=5Fr= eadfile(ffsb=5Fthread=5Ft *tconfig, ffsb=5Ffs=5Ft *, unsigned opnum);=0A-vo= id ffsb=5Freadall(ffsb=5Fthread=5Ft *tconfig, ffsb=5Ffs=5Ft *, unsigned opn= um);=0A-void ffsb=5Fwritefile(ffsb=5Fthread=5Ft *tconfig, ffsb=5Ffs=5Ft *, = unsigned opnum);=0A-void ffsb=5Fwritefile=5Ffsync(ffsb=5Fthread=5Ft *tconfi= g, ffsb=5Ffs=5Ft *, unsigned opnum);=0A-void ffsb=5Fwriteall(ffsb=5Fthread= =5Ft *tconfig, ffsb=5Ffs=5Ft *, unsigned opnum);=0A-void ffsb=5Fwriteall=5F= fsync(ffsb=5Fthread=5Ft *tconfig, ffsb=5Ffs=5Ft *, unsigned opnum);=0A-void= ffsb=5Fcreatefile(ffsb=5Fthread=5Ft *tconfig, ffsb=5Ffs=5Ft *, unsigned op= num);=0A-void ffsb=5Fcreatefile=5Ffsync(ffsb=5Fthread=5Ft *tconfig, ffsb=5F= fs=5Ft *, unsigned opnum);=0A-void ffsb=5Fdeletefile(ffsb=5Fthread=5Ft *tco= nfig, ffsb=5Ffs=5Ft *, unsigned opnum);=0A-void ffsb=5Fappendfile(ffsb=5Fth= read=5Ft *tconfig, ffsb=5Ffs=5Ft *, unsigned opnum);=0A-void ffsb=5Fappendf= ile=5Ffsync(ffsb=5Fthread=5Ft *tconfig, ffsb=5Ffs=5Ft *, unsigned opnum);= =0A-void ffsb=5Fstat(ffsb=5Fthread=5Ft *ft, ffsb=5Ffs=5Ft *fs, unsigned opn= um);=0A-void ffsb=5Fopen=5Fclose(ffsb=5Fthread=5Ft *ft, ffsb=5Ffs=5Ft *fs, = unsigned opnum);=0A-=0A-struct ffsb=5Fop=5Fresults;=0A-=0A-void ffsb=5Fread= =5Fprint=5Fexl(struct ffsb=5Fop=5Fresults *, double secs, unsigned op=5Fnum= );=0A-void ffsb=5Fwrite=5Fprint=5Fexl(struct ffsb=5Fop=5Fresults *, double = secs, unsigned op=5Fnum);=0A-void ffsb=5Fcreate=5Fprint=5Fexl(struct ffsb= =5Fop=5Fresults *, double secs, unsigned op=5Fnum);=0A-void ffsb=5Fappend= =5Fprint=5Fexl(struct ffsb=5Fop=5Fresults *, double secs, unsigned op=5Fnum= );=0A-=0A-/* Set up ops for either aging or benchmarking */=0A-void fop=5Fb= ench(ffsb=5Ffs=5Ft *fs, unsigned opnum);=0A-void fop=5Fage(ffsb=5Ffs=5Ft *f= s, unsigned opnum);=0A-=0A-#endif /* =5FFILEOPS=5FH=5F */=0Adiff --git a/te= stcases/kernel/fs/ext4-new-features/ffsb-6.0-rc2/install-sh b/testcases/ker= nel/fs/ext4-new-features/ffsb-6.0-rc2/install-sh=0Adeleted file mode 100755= =0Aindex 4b1cd95..0000000=0A--- a/testcases/kernel/fs/ext4-new-features/ffs= b-6.0-rc2/install-sh=0A+++ /dev/null=0A@@ -1,250 +0,0 @@=0A-#!/bin/sh=0A-#= =0A-# install - install a program, script, or datafile=0A-# This comes from= X11R5 (mit/util/scripts/install.sh).=0A-#=0A-# Copyright 1991 by the Massa= chusetts Institute of Technology=0A-#=0A-# Permission to use, copy, modify,= distribute, and sell this software and its=0A-# documentation for any purp= ose is hereby granted without fee, provided that=0A-# the above copyright n= otice appear in all copies and that both that=0A-# copyright notice and thi= s permission notice appear in supporting=0A-# documentation, and that the n= ame of M.I.T. not be used in advertising or=0A-# publicity pertaining to di= stribution of the software without specific,=0A-# written prior permission.= M.I.T. makes no representations about the=0A-# suitability of this softwa= re for any purpose. It is provided "as is"=0A-# without express or implied= warranty.=0A-#=0A-# Calling this script install-sh is preferred over insta= ll.sh, to prevent=0A-# `make' implicit rules from creating a file called in= stall from it=0A-# when there is no Makefile.=0A-#=0A-# This script is comp= atible with the BSD install script, but was written=0A-# from scratch. It = can only install one file at a time, a restriction=0A-# shared with many OS= 's install programs.=0A-=0A-=0A-# set DOITPROG to echo to test this script= =0A-=0A-# Don't use :- since 4.3BSD and earlier shells don't like it.=0A-do= it=3D"${DOITPROG-}"=0A-=0A-=0A-# put in absolute paths if you don't have th= em in your path; or use env. vars.=0A-=0A-mvprog=3D"${MVPROG-mv}"=0A-cpprog= =3D"${CPPROG-cp}"=0A-chmodprog=3D"${CHMODPROG-chmod}"=0A-chownprog=3D"${CHO= WNPROG-chown}"=0A-chgrpprog=3D"${CHGRPPROG-chgrp}"=0A-stripprog=3D"${STRIPP= ROG-strip}"=0A-rmprog=3D"${RMPROG-rm}"=0A-mkdirprog=3D"${MKDIRPROG-mkdir}"= =0A-=0A-transformbasename=3D""=0A-transform=5Farg=3D""=0A-instcmd=3D"$mvpro= g"=0A-chmodcmd=3D"$chmodprog 0755"=0A-chowncmd=3D""=0A-chgrpcmd=3D""=0A-str= ipcmd=3D""=0A-rmcmd=3D"$rmprog -f"=0A-mvcmd=3D"$mvprog"=0A-src=3D""=0A-dst= =3D""=0A-dir=5Farg=3D""=0A-=0A-while [ x"$1" !=3D x ]; do=0A- case $1 in= =0A- -c) instcmd=3D"$cpprog"=0A- shift=0A- continue;;=0A-=0A- -d) d= ir=5Farg=3Dtrue=0A- shift=0A- continue;;=0A-=0A- -m) chmodcmd=3D"$c= hmodprog $2"=0A- shift=0A- shift=0A- continue;;=0A-=0A- -o) cho= wncmd=3D"$chownprog $2"=0A- shift=0A- shift=0A- continue;;=0A-= =0A- -g) chgrpcmd=3D"$chgrpprog $2"=0A- shift=0A- shift=0A- con= tinue;;=0A-=0A- -s) stripcmd=3D"$stripprog"=0A- shift=0A- continue;= ;=0A-=0A- -t=3D*) transformarg=3D`echo $1 | sed 's/-t=3D//'`=0A- shift= =0A- continue;;=0A-=0A- -b=3D*) transformbasename=3D`echo $1 | sed 's/-= b=3D//'`=0A- shift=0A- continue;;=0A-=0A- *) if [ x"$src" =3D x ]= =0A- then=0A- src=3D$1=0A- else=0A- # this colon is to work aroun= d a 386BSD /bin/sh bug=0A- :=0A- dst=3D$1=0A- fi=0A- shift=0A- = continue;;=0A- esac=0A-done=0A-=0A-if [ x"$src" =3D x ]=0A-then=0A- ec= ho "install: no input file specified"=0A- exit 1=0A-else=0A- true=0A-fi=0A-= =0A-if [ x"$dir=5Farg" !=3D x ]; then=0A- dst=3D$src=0A- src=3D""=0A-=0A- i= f [ -d $dst ]; then=0A- instcmd=3D:=0A- chmodcmd=3D""=0A- else=0A- instc= md=3Dmkdir=0A- fi=0A-else=0A-=0A-# Waiting for this to be detected by the "= $instcmd $src $dsttmp" command=0A-# might cause directories to be created, = which would be especially bad=0A-# if $src (and thus $dsttmp) contains '*'.= =0A-=0A- if [ -f $src -o -d $src ]=0A- then=0A- true=0A- else=0A- echo "i= nstall: $src does not exist"=0A- exit 1=0A- fi=0A-=0A- if [ x"$dst" =3D x= ]=0A- then=0A- echo "install: no destination specified"=0A- exit 1=0A- e= lse=0A- true=0A- fi=0A-=0A-# If destination is a directory, append the inp= ut filename; if your system=0A-# does not like double slashes in filenames,= you may need to add some logic=0A-=0A- if [ -d $dst ]=0A- then=0A- dst=3D= "$dst"/`basename $src`=0A- else=0A- true=0A- fi=0A-fi=0A-=0A-## this sed c= ommand emulates the dirname command=0A-dstdir=3D`echo $dst | sed -e 's,[^/]= *$,,;s,/$,,;s,^$,.,'`=0A-=0A-# Make sure that the destination directory exi= sts.=0A-# this part is taken from Noah Friedman's mkinstalldirs script=0A-= =0A-# Skip lots of stat calls in the usual case.=0A-if [ ! -d "$dstdir" ]; = then=0A-defaultIFS=3D''=0A-IFS=3D"${IFS-${defaultIFS}}"=0A-=0A-oIFS=3D"${IF= S}"=0A-# Some sh's can't handle IFS=3D/ for some reason.=0A-IFS=3D'%'=0A-se= t - `echo ${dstdir} | sed -e 's@/@%@g' -e 's@^%@/@'`=0A-IFS=3D"${oIFS}"=0A-= =0A-pathcomp=3D''=0A-=0A-while [ $# -ne 0 ] ; do=0A- pathcomp=3D"${pathcomp= }${1}"=0A- shift=0A-=0A- if [ ! -d "${pathcomp}" ] ;=0A- then=0A- $= mkdirprog "${pathcomp}"=0A- else=0A- true=0A- fi=0A-=0A- pathcomp=3D"${pat= hcomp}/"=0A-done=0A-fi=0A-=0A-if [ x"$dir=5Farg" !=3D x ]=0A-then=0A- $doit= $instcmd $dst &&=0A-=0A- if [ x"$chowncmd" !=3D x ]; then $doit $chowncmd = $dst; else true ; fi &&=0A- if [ x"$chgrpcmd" !=3D x ]; then $doit $chgrpcm= d $dst; else true ; fi &&=0A- if [ x"$stripcmd" !=3D x ]; then $doit $strip= cmd $dst; else true ; fi &&=0A- if [ x"$chmodcmd" !=3D x ]; then $doit $chm= odcmd $dst; else true ; fi=0A-else=0A-=0A-# If we're going to rename the fi= nal executable, determine the name now.=0A-=0A- if [ x"$transformarg" =3D x= ]=0A- then=0A- dstfile=3D`basename $dst`=0A- else=0A- dstfile=3D`basenam= e $dst $transformbasename |=0A- sed $transformarg`$transformbasename=0A- = fi=0A-=0A-# don't allow the sed command to completely eliminate the filenam= e=0A-=0A- if [ x"$dstfile" =3D x ]=0A- then=0A- dstfile=3D`basename $dst`= =0A- else=0A- true=0A- fi=0A-=0A-# Make a temp file name in the proper dir= ectory.=0A-=0A- dsttmp=3D$dstdir/#inst.$$#=0A-=0A-# Move or copy the file n= ame to the temp name=0A-=0A- $doit $instcmd $src $dsttmp &&=0A-=0A- trap "r= m -f ${dsttmp}" 0 &&=0A-=0A-# and set any options; do chmod last to preserv= e setuid bits=0A-=0A-# If any of these fail, we abort the whole thing. If = we want to=0A-# ignore errors from any of these, just make sure not to igno= re=0A-# errors from the above "$doit $instcmd $src $dsttmp" command.=0A-=0A= - if [ x"$chowncmd" !=3D x ]; then $doit $chowncmd $dsttmp; else true;fi &&= =0A- if [ x"$chgrpcmd" !=3D x ]; then $doit $chgrpcmd $dsttmp; else true;fi= &&=0A- if [ x"$stripcmd" !=3D x ]; then $doit $stripcmd $dsttmp; else true= ;fi &&=0A- if [ x"$chmodcmd" !=3D x ]; then $doit $chmodcmd $dsttmp; else t= rue;fi &&=0A-=0A-# Now rename the file to the real destination.=0A-=0A- $do= it $rmcmd -f $dstdir/$dstfile &&=0A- $doit $mvcmd $dsttmp $dstdir/$dstfile= =0A-=0A-fi &&=0A-=0A-=0A-exit 0=0Adiff --git a/testcases/kernel/fs/ext4-new= -features/ffsb-6.0-rc2/list.c b/testcases/kernel/fs/ext4-new-features/ffsb-= 6.0-rc2/list.c=0Adeleted file mode 100644=0Aindex eeed81f..0000000=0A--- a/= testcases/kernel/fs/ext4-new-features/ffsb-6.0-rc2/list.c=0A+++ /dev/null= =0A@@ -1,53 +0,0 @@=0A-=0A-/*=0A- * Simple list implementation mostly take = from the Linux Kernel=0A- */=0A-=0A-#include =0A-#include "list.h= "=0A-=0A-void INIT=5FLIST=5FHEAD(struct list=5Fhead *list)=0A-{=0A- list->n= ext =3D list;=0A- list->prev =3D list;=0A-}=0A-=0A-void =5F=5Flist=5Fadd(st= ruct list=5Fhead *new,=0A- struct list=5Fhead *prev, struct list=5Fhead *n= ext)=0A-{=0A- next->prev =3D new;=0A- new->next =3D next;=0A- new->prev =3D= prev;=0A- prev->next =3D new;=0A-}=0A-=0A-void =5F=5Flist=5Fdel(struct lis= t=5Fhead *prev, struct list=5Fhead *next)=0A-{=0A- next->prev =3D prev;=0A-= prev->next =3D next;=0A-}=0A-=0A-void list=5Fadd(struct list=5Fhead *new, = struct list=5Fhead *head)=0A-{=0A- =5F=5Flist=5Fadd(new, head, head->next);= =0A-}=0A-=0A-void list=5Fadd=5Ftail(struct list=5Fhead *new, struct list=5F= head *head)=0A-{=0A- =5F=5Flist=5Fadd(new, head->prev, head);=0A-}=0A-=0A-v= oid list=5Fdel(struct list=5Fhead *entry)=0A-{=0A- =5F=5Flist=5Fdel(entry->= prev, entry->next);=0A- entry->next =3D NULL;=0A- entry->prev =3D NULL;=0A-= }=0A-=0A-void list=5Freplace(struct list=5Fhead *old, struct list=5Fhead *n= ew)=0A-{=0A- new->next =3D old->next;=0A- new->next->prev =3D new;=0A- new-= >prev =3D old->prev;=0A- new->prev->next =3D new;=0A-}=0Adiff --git a/testc= ases/kernel/fs/ext4-new-features/ffsb-6.0-rc2/list.h b/testcases/kernel/fs/= ext4-new-features/ffsb-6.0-rc2/list.h=0Adeleted file mode 100644=0Aindex e1= 4709d..0000000=0A--- a/testcases/kernel/fs/ext4-new-features/ffsb-6.0-rc2/l= ist.h=0A+++ /dev/null=0A@@ -1,53 +0,0 @@=0A-=0A-/*=0A- * Simple list implem= entation mostly take from the Linux Kernel=0A- */=0A-=0A-#ifndef =5FLIST=5F= H=5F=0A-#define =5FLIST=5FH=5F=0A-=0A-struct list=5Fhead {=0A- struct list= =5Fhead *next, *prev;=0A-};=0A-=0A-void INIT=5FLIST=5FHEAD(struct list=5Fhe= ad *list);=0A-void =5F=5Flist=5Fadd(struct list=5Fhead *new, struct list=5F= head *prev,=0A- struct list=5Fhead *next);=0A-void =5F=5Flist=5Fdel(struct= list=5Fhead *prev, struct list=5Fhead *next);=0A-void list=5Fadd(struct li= st=5Fhead *new, struct list=5Fhead *head);=0A-void list=5Fadd=5Ftail(struct= list=5Fhead *new, struct list=5Fhead *head);=0A-void list=5Fdel(struct lis= t=5Fhead *entry);=0A-void list=5Freplace(struct list=5Fhead *old, struct li= st=5Fhead *new);=0A-=0A-#define LIST=5FHEAD=5FINIT(name) { &(name), &(name)= }=0A-=0A-#define LIST=5FHEAD(name) struct list=5Fhead name =3D LIST=5FHEAD= =5FINIT(name)=0A-=0A-#define list=5Ffor=5Feach(pos, head) \=0A- for (pos = =3D (head)->next; pos->next, pos !=3D (head); pos =3D pos->next)=0A-=0A-#de= fine offsetof(type, member) ((int) &((type *)0)->member)=0A-=0A-#define con= tainer=5Fof(ptr, type, member) ({ \=0A- const typeof(((type *)0)->member) *= =5F=5Fmptr =3D (ptr); \=0A- (type *)((char *)=5F=5Fmptr - offsetof(type, me= mber)); })=0A-=0A-#define list=5Fentry(ptr, type, member) \=0A- container= =5Fof(ptr, type, member)=0A-=0A-#define list=5Ffor=5Feach=5Fentry(pos, head= , member) \=0A- for (pos =3D list=5Fentry((head)->next, typeof(*pos), membe= r); \=0A- pos->member.next, &pos->member !=3D (head); \=0A- pos = =3D list=5Fentry(pos->member.next, typeof(*pos), member))=0A-=0A-#define li= st=5Ffor=5Feach=5Fentry=5Fsafe(pos, n, head, member) \=0A- for (pos =3D l= ist=5Fentry((head)->next, typeof(*pos), member), \=0A- n =3D list=5Fentry(= pos->member.next, typeof(*pos), member); \=0A- &pos->member !=3D (head= ); \=0A- pos =3D n, n =3D list=5Fentry(n->member.next, typeof(*n)= , member))=0A-=0A-#define list=5Ffor=5Feach=5Fsafe(pos, n, head) \=0A- for = (pos =3D (head)->next, n =3D pos->next; pos !=3D (head); \=0A- pos =3D n, = n =3D pos->next)=0A-=0A-#endif=0Adiff --git a/testcases/kernel/fs/ext4-new-= features/ffsb-6.0-rc2/main.c b/testcases/kernel/fs/ext4-new-features/ffsb-6= .0-rc2/main.c=0Adeleted file mode 100644=0Aindex b3c68b4..0000000=0A--- a/t= estcases/kernel/fs/ext4-new-features/ffsb-6.0-rc2/main.c=0A+++ /dev/null=0A= @@ -1,255 +0,0 @@=0A-/*=0A- * Copyright (c) International Business Machin= es Corp., 2001-2004=0A- *=0A- * This program is free software; you can r= edistribute it and/or modify=0A- * it under the terms of the GNU General = Public License as published by=0A- * the Free Software Foundation; either= version 2 of the License, or=0A- * (at your option) any later version.= =0A- *=0A- * This program is distributed in the hope that it will be usef= ul,=0A- * but WITHOUT ANY WARRANTY; without even the implied warranty of= =0A- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See=0A- * = the GNU General Public License for more details.=0A- *=0A- * You should h= ave received a copy of the GNU General Public License=0A- * along with th= is program; if not, write to the Free Software=0A- * Foundation, Inc., 5= 1 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA=0A- */=0A-#includ= e =0A-#include =0A-#include =0A-#includ= e =0A-#include =0A-#include =0A-#include= =0A-#include =0A-#include =0A-#include =0A-=0A-#include =0A-=0A-#include "config.h"=0A-=0A-#include= "ffsb.h"=0A-#include "util.h"=0A-#include "parser.h"=0A-=0A-/* State infor= mation for the polling function below */=0A-struct ffsb=5Ftime=5Fpoll {=0A-= struct timeval starttime;=0A- int wait=5Ftime;=0A-};=0A-=0A-/* This is the= polling function used by the threadgroups to check=0A- * elapsed time, whe= n it returns 1 they know it is time to stop=0A- */=0A-static int ffsb=5Fpol= l=5Ffn(void *ptr)=0A-{=0A- struct ffsb=5Ftime=5Fpoll *data =3D (struct ffsb= =5Ftime=5Fpoll *)ptr;=0A- struct timeval curtime, difftime;=0A- gettimeofda= y(&curtime, NULL);=0A-=0A- timersub(&curtime, &data->starttime, &difftime);= =0A- if (difftime.tv=5Fsec >=3D data->wait=5Ftime)=0A- return 1;=0A- retur= n 0;=0A-}=0A-=0A-int main(int argc, char *argv[])=0A-{=0A- int i;=0A- ffsb= =5Fconfig=5Ft fc;=0A- ffsb=5Fbarrier=5Ft thread=5Fbarrier, tg=5Fbarrier;=0A= - tg=5Frun=5Fparams=5Ft *params;=0A- struct ffsb=5Ftime=5Fpoll pdata;=0A- s= truct timeval starttime, endtime, difftime;=0A- pthread=5Fattr=5Ft attr;=0A= - ffsb=5Fop=5Fresults=5Ft total=5Fresults;=0A- double totaltime =3D 0.0f, u= sertime =3D 0.0f, systime =3D 0.0f;=0A- struct rusage before=5Fself, before= =5Fchildren, after=5Fself, after=5Fchildren;=0A- pthread=5Ft *fs=5Fpts; /* = threads to do filesystem creates in parallel */=0A- char *callout =3D NULL;= =0A-=0A- char ctime=5Fstart=5Fbuf[32];=0A- char ctime=5Fend=5Fbuf[32];=0A-= =0A- memset(&before=5Fself, 0, sizeof(before=5Fself));=0A- memset(&before= =5Fchildren, 0, sizeof(before=5Fchildren));=0A- memset(&after=5Fself, 0, si= zeof(after=5Fself));=0A- memset(&after=5Fchildren, 0, sizeof(after=5Fchildr= en));=0A-=0A- ffsb=5Funbuffer=5Fstdout();=0A-=0A- if (argc < 2) {=0A- fpri= ntf(stderr, "usage: %s \n", argv[0]);=0A- exit(1);=0A- }=0A-= =0A- /* VERSION comes from config.h (which is autogenerated by autoconf) */= =0A- printf("FFSB version %s started\n\n", VERSION);=0A-=0A- ffsb=5Fparse= =5Fnewconfig(&fc, argv[1]);=0A- pdata.wait=5Ftime =3D fc.time;=0A-=0A- if (= fc.time)=0A- printf("benchmark time =3D %u\n", fc.time);=0A- else=0A- pri= ntf("Only creating the fileset, not running benchmark.\n");=0A-=0A- pthread= =5Fattr=5Finit(&attr);=0A- pthread=5Fattr=5Fsetscope(&attr, PTHREAD=5FSCOPE= =5FSYSTEM);=0A-=0A- for (i =3D 0; i < fc.num=5Fthreadgroups; i++)=0A- tg= =5Fprint=5Fconfig(&fc.groups[i]);=0A-=0A- fs=5Fpts =3D ffsb=5Fmalloc(sizeof= (pthread=5Ft) * fc.num=5Ffilesys);=0A-=0A- gettimeofday(&starttime, NULL);= =0A- for (i =3D 0; i < fc.num=5Ffilesys; i++) {=0A- fs=5Fprint=5Fconfig(&f= c.filesystems[i]);=0A- pthread=5Fcreate(fs=5Fpts + i, &attr, construct=5Ff= fsb=5Ffs,=0A- &fc.filesystems[i]);=0A- }=0A-=0A- fflush(stdout);= =0A- for (i =3D 0; i < fc.num=5Ffilesys; i++)=0A- pthread=5Fjoin(fs=5Fpts[= i], NULL);=0A-=0A- gettimeofday(&endtime, NULL);=0A- timersub(&endtime, &st= arttime, &difftime);=0A- printf("fs setup took %ld secs\n", difftime.tv=5Fs= ec);=0A- free(fs=5Fpts);=0A-=0A- if (fc.time =3D=3D 0) {=0A- printf("Setup= complete, exiting\n");=0A- return 0;=0A- }=0A-=0A- params =3D ffsb=5Fmall= oc(sizeof(tg=5Frun=5Fparams=5Ft) * fc.num=5Fthreadgroups);=0A-=0A- init=5Ff= fsb=5Fop=5Fresults(&total=5Fresults);=0A- ffsb=5Fbarrier=5Finit(&thread=5Fb= arrier, fc.num=5Ftotalthreads);=0A- ffsb=5Fbarrier=5Finit(&tg=5Fbarrier, fc= .num=5Fthreadgroups + 1);=0A-=0A- ffsb=5Fsync();=0A-=0A- /* Execute the cal= lout if any and wait for it to return */=0A- callout =3D fc=5Fget=5Fcallout= (&fc);=0A- if (callout) {=0A- printf("executing callout: \n %s\n", callout= );=0A- if (ffsb=5Fsystem(callout) < 0) {=0A- perror("system");=0A- exi= t(1);=0A- }=0A- }=0A-=0A- /* Spawn all of the threadgroup master threads *= /=0A- for (i =3D 0; i < fc.num=5Fthreadgroups; i++) {=0A- params[i].tg =3D= &fc.groups[i];=0A- params[i].fc =3D &fc;=0A- params[i].poll=5Ffn =3D ffs= b=5Fpoll=5Ffn;=0A- params[i].poll=5Fdata =3D &pdata;=0A- params[i].wait= =5Ftime =3D FFSB=5FTG=5FWAIT=5FTIME;=0A- params[i].tg=5Fbarrier =3D &tg=5F= barrier;=0A- params[i].thread=5Fbarrier =3D &thread=5Fbarrier;=0A-=0A- pt= hread=5Fcreate(¶ms[i].pt, &attr, tg=5Frun, ¶ms[i]);=0A- }=0A-=0A- f= fsb=5Fgetrusage(&before=5Fself, &before=5Fchildren);=0A- gettimeofday(&pdat= a.starttime, NULL);=0A-=0A- ffsb=5Fbarrier=5Fwait(&tg=5Fbarrier); /* sync w= ith tg's to start */=0A- printf("Starting Actual Benchmark At: %s\n",=0A- = ctime=5Fr(&pdata.starttime.tv=5Fsec, ctime=5Fstart=5Fbuf));=0A- fflus= h(stdout);=0A-=0A- /* Wait for all of the threadgroup master threads to fin= ish */=0A- for (i =3D 0; i < fc.num=5Fthreadgroups; i++)=0A- pthread=5Fjoi= n(params[i].pt, NULL);=0A-=0A- ffsb=5Fsync();=0A- gettimeofday(&endtime, NU= LL);=0A- ffsb=5Fgetrusage(&after=5Fself, &after=5Fchildren);=0A-=0A- printf= ("FFSB benchmark finished at: %s\n",=0A- ctime=5Fr(&endtime.tv=5Fs= ec, ctime=5Fend=5Fbuf));=0A- printf("Results:\n");=0A- fflush(stdout);=0A-= =0A- timersub(&endtime, &pdata.starttime, &difftime);=0A-=0A- totaltime =3D= tvtodouble(&difftime);=0A-=0A- printf("Benchmark took %.2lf sec\n", totalt= ime);=0A- printf("\n");=0A-=0A- for (i =3D 0; i < fc.num=5Fthreadgroups; i+= +) {=0A- struct ffsb=5Fop=5Fresults tg=5Fresults;=0A- ffsb=5Ftg=5Ft *tg = =3D fc.groups + i;=0A-=0A- init=5Fffsb=5Fop=5Fresults(&tg=5Fresults);=0A-= =0A- /* Grab the individual tg results */=0A- tg=5Fcollect=5Fresults(tg, = &tg=5Fresults);=0A-=0A- if (fc.num=5Fthreadgroups =3D=3D 1)=0A- printf("= Total Results\n");=0A- else=0A- printf("ThreadGroup %d\n", i);=0A-=0A- = printf("=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D\n");=0A- print=5Fres= ults(&tg=5Fresults, totaltime);=0A-=0A- if (tg=5Fneeds=5Fstats(tg)) {=0A- = ffsb=5Fstatsd=5Ft fsd;=0A- tg=5Fcollect=5Fstats(tg, &fsd);=0A- ffsb= =5Fstatsd=5Fprint(&fsd);=0A- }=0A- printf("\n");=0A-=0A- /* Add the tg r= esults to the total */=0A- tg=5Fcollect=5Fresults(&fc.groups[i], &total=5F= results);=0A- }=0A-=0A- if (fc.num=5Fthreadgroups > 1) {=0A- printf("Total= Results\n");=0A- printf("=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D\n"= );=0A- print=5Fresults(&total=5Fresults, totaltime);=0A- }=0A-#define USEC= =5FPER=5FSEC ((double)(1000000.0f))=0A-=0A- /* sum up self and children aft= er */=0A- usertime =3D (after=5Fself.ru=5Futime.tv=5Fsec +=0A- ((after= =5Fself.ru=5Futime.tv=5Fusec) / USEC=5FPER=5FSEC)) +=0A- ((after=5Fchil= dren.ru=5Futime.tv=5Fsec +=0A- ((after=5Fchildren.ru=5Futime.tv=5Fuse= c) / USEC=5FPER=5FSEC)));=0A-=0A- /* subtract away the before */=0A- userti= me -=3D (before=5Fself.ru=5Futime.tv=5Fsec +=0A- ((before=5Fself.ru= =5Futime.tv=5Fusec) / USEC=5FPER=5FSEC)) +=0A- ((before=5Fchildren.ru= =5Futime.tv=5Fsec +=0A- ((before=5Fchildren.ru=5Futime.tv=5Fusec) / U= SEC=5FPER=5FSEC)));=0A-=0A- /* sum up self and children after */=0A- systim= e =3D (after=5Fself.ru=5Fstime.tv=5Fsec +=0A- ((after=5Fself.ru=5Fstime= .tv=5Fusec) / USEC=5FPER=5FSEC)) +=0A- ((after=5Fchildren.ru=5Fstime.tv= =5Fsec +=0A- ((after=5Fchildren.ru=5Fstime.tv=5Fusec) / USEC=5FPER=5F= SEC)));=0A-=0A- /* subtract away the before */=0A- systime -=3D (before=5Fs= elf.ru=5Fstime.tv=5Fsec +=0A- ((before=5Fself.ru=5Fstime.tv=5Fusec) / = USEC=5FPER=5FSEC)) +=0A- ((before=5Fchildren.ru=5Fstime.tv=5Fsec +=0A- = ((before=5Fchildren.ru=5Fstime.tv=5Fusec) / USEC=5FPER=5FSEC)));=0A-= =0A- printf("\n\n");=0A- printf("%.1lf%% User Time\n", 100 * usertime / t= otaltime);=0A- printf("%.1lf%% System Time\n", 100 * systime / totaltime);= =0A- printf("%.1f%% CPU Utilization\n", 100 * (usertime + systime) /=0A- = totaltime);=0A- free(params);=0A- destroy=5Fffsb=5Fconfig(&fc);=0A-=0A= - return 0;=0A-}=0Adiff --git a/testcases/kernel/fs/ext4-new-features/ffsb-= 6.0-rc2/metaops.c b/testcases/kernel/fs/ext4-new-features/ffsb-6.0-rc2/meta= ops.c=0Adeleted file mode 100644=0Aindex 954cddd..0000000=0A--- a/testcases= /kernel/fs/ext4-new-features/ffsb-6.0-rc2/metaops.c=0A+++ /dev/null=0A@@ -1= ,112 +0,0 @@=0A-/*=0A- * Copyright (c) International Business Machines Co= rp., 2001-2004=0A- *=0A- * This program is free software; you can redist= ribute it and/or modify=0A- * it under the terms of the GNU General Publi= c License as published by=0A- * the Free Software Foundation; either vers= ion 2 of the License, or=0A- * (at your option) any later version.=0A- *= =0A- * This program is distributed in the hope that it will be useful,=0A= - * but WITHOUT ANY WARRANTY; without even the implied warranty of=0A- *= MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See=0A- * the GN= U General Public License for more details.=0A- *=0A- * You should have re= ceived a copy of the GNU General Public License=0A- * along with this pro= gram; if not, write to the Free Software=0A- * Foundation, Inc., 51 Fran= klin Street, Fifth Floor, Boston, MA 02110-1301 USA=0A- */=0A-#include =0A-#include =0A-#include =0A-#include =0A-#include =0A-#include =0A-=0A-#include "ffsb.h"= =0A-#include "metaops.h"=0A-#include "rand.h"=0A-#include "filelist.h"=0A-= =0A-/* metaops:=0A- * createdir=0A- * removedir=0A- * renamedir=0A- * r= enamefile=0A- */=0A-=0A-void metaops=5Fmetadir(ffsb=5Ffs=5Ft * fs, unsigned= opnum)=0A-{=0A- fs=5Fset=5Fopdata(fs, fs=5Fget=5Fmetafiles(fs), opnum);=0A= -}=0A-=0A-static void createdir(struct benchfiles *dirs, randdata=5Ft * rd)= =0A-{=0A- struct ffsb=5Ffile *newdir;=0A-=0A- newdir =3D add=5Ffile(dirs, 0= , rd);=0A- if (mkdir(newdir->name, S=5FIRWXU) < 0) {=0A- perror("mkdir");= =0A- exit(1);=0A- }=0A- unlock=5Ffile=5Fwriter(newdir);=0A-}=0A-=0A-static= void removedir(struct benchfiles *dirs, randdata=5Ft * rd)=0A-{=0A- struct= ffsb=5Ffile *deldir;=0A-=0A- deldir =3D choose=5Ffile=5Fwriter(dirs, rd);= =0A- remove=5Ffile(dirs, deldir);=0A-=0A- if (rmdir(deldir->name) < 0) {=0A= - perror("rmdir");=0A- exit(1);=0A- }=0A- unlock=5Ffile=5Fwriter(deldir);= =0A-}=0A-=0A-static void renamedir(struct benchfiles *dirs, randdata=5Ft * = rd)=0A-{=0A- struct ffsb=5Ffile *dir;=0A- char *oldname;=0A-=0A- dir =3D ch= oose=5Ffile=5Fwriter(dirs, rd);=0A- oldname =3D dir->name;=0A- rename=5Ffil= e(dir);=0A-=0A- if (rename(oldname, dir->name) < 0) {=0A- perror("rename")= ;=0A- exit(1);=0A- }=0A- unlock=5Ffile=5Fwriter(dir);=0A- free(oldname);= =0A-}=0A-=0A-void ffsb=5Fmetaops(ffsb=5Fthread=5Ft * ft, ffsb=5Ffs=5Ft * fs= , unsigned opnum)=0A-{=0A- struct benchfiles *bf =3D (struct benchfiles *)f= s=5Fget=5Fopdata(fs, opnum);=0A- randdata=5Ft *rd =3D ft=5Fget=5Franddata(f= t);=0A-=0A- createdir(bf, rd);=0A- createdir(bf, rd);=0A- removedir(bf, rd)= ;=0A- renamedir(bf, rd);=0A-=0A- ft=5Fincr=5Fop(ft, opnum, 1, 0);=0A-}=0A-= =0A-void ffsb=5Fcreatedir(ffsb=5Fthread=5Ft * ft, ffsb=5Ffs=5Ft * fs, unsig= ned opnum)=0A-{=0A- struct benchfiles *bf =3D (struct benchfiles *)fs=5Fget= =5Fopdata(fs, opnum);=0A- struct ffsb=5Ffile *newdir;=0A- randdata=5Ft *rd = =3D ft=5Fget=5Franddata(ft);=0A-=0A- newdir =3D add=5Fdir(bf, 0, rd);=0A- i= f (mkdir(newdir->name, S=5FIRWXU) < 0) {=0A- perror("mkdir");=0A- exit(1)= ;=0A- }=0A- unlock=5Ffile=5Fwriter(newdir);=0A-=0A- ft=5Fincr=5Fop(ft, opnu= m, 1, 0);=0A-}=0Adiff --git a/testcases/kernel/fs/ext4-new-features/ffsb-6.= 0-rc2/metaops.h b/testcases/kernel/fs/ext4-new-features/ffsb-6.0-rc2/metaop= s.h=0Adeleted file mode 100644=0Aindex 3f81e4f..0000000=0A--- a/testcases/k= ernel/fs/ext4-new-features/ffsb-6.0-rc2/metaops.h=0A+++ /dev/null=0A@@ -1,2= 8 +0,0 @@=0A-/*=0A- * Copyright (c) International Business Machines Corp.= , 2001-2004=0A- *=0A- * This program is free software; you can redistrib= ute it and/or modify=0A- * it under the terms of the GNU General Public L= icense as published by=0A- * the Free Software Foundation; either version= 2 of the License, or=0A- * (at your option) any later version.=0A- *=0A-= * This program is distributed in the hope that it will be useful,=0A- * = but WITHOUT ANY WARRANTY; without even the implied warranty of=0A- * M= ERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See=0A- * the GNU Ge= neral Public License for more details.=0A- *=0A- * You should have receiv= ed a copy of the GNU General Public License=0A- * along with this program= ; if not, write to the Free Software=0A- * Foundation, Inc., 51 Franklin= Street, Fifth Floor, Boston, MA 02110-1301 USA=0A- */=0A-#ifndef =5FMETAOP= S=5FH=5F=0A-#define =5FMETAOPS=5FH=5F=0A-=0A-#include "ffsb.h"=0A-#include = "fileops.h"=0A-=0A-void ffsb=5Fmetaops(struct ffsb=5Fthread *, ffsb=5Ffs=5F= t *, unsigned);=0A-void ffsb=5Fcreatedir(struct ffsb=5Fthread *, ffsb=5Ffs= =5Ft *, unsigned);=0A-void metaops=5Fmetadir(ffsb=5Ffs=5Ft *, unsigned);=0A= -=0A-#endif /* =5FMETAOPS=5FH=5F */=0Adiff --git a/testcases/kernel/fs/ext4= -new-features/ffsb-6.0-rc2/missing b/testcases/kernel/fs/ext4-new-features/= ffsb-6.0-rc2/missing=0Adeleted file mode 100755=0Aindex 6a37006..0000000=0A= --- a/testcases/kernel/fs/ext4-new-features/ffsb-6.0-rc2/missing=0A+++ /dev= /null=0A@@ -1,336 +0,0 @@=0A-#! /bin/sh=0A-# Common stub for a few missing = GNU programs while installing.=0A-# Copyright (C) 1996, 1997, 1999, 2000, 2= 002 Free Software Foundation, Inc.=0A-# Originally by Fran,cois Pinard , 1996.=0A-=0A-# This program is free software; you ca= n redistribute it and/or modify=0A-# it under the terms of the GNU General = Public License as published by=0A-# the Free Software Foundation; either ve= rsion 2, or (at your option)=0A-# any later version.=0A-=0A-# This program = is distributed in the hope that it will be useful,=0A-# but WITHOUT ANY WAR= RANTY; without even the implied warranty of=0A-# MERCHANTABILITY or FITNESS= FOR A PARTICULAR PURPOSE. See the=0A-# GNU General Public License for mor= e details.=0A-=0A-# You should have received a copy of the GNU General Publ= ic License=0A-# along with this program; if not, write to the Free Software= =0A-# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA=0A-# 02111-= 1307, USA.=0A-=0A-# As a special exception to the GNU General Public Licens= e, if you=0A-# distribute this file as part of a program that contains a=0A= -# configuration script generated by Autoconf, you may include it under=0A-= # the same distribution terms that you use for the rest of that program.=0A= -=0A-if test $# -eq 0; then=0A- echo 1>&2 "Try \`$0 --help' for more infor= mation"=0A- exit 1=0A-fi=0A-=0A-run=3D:=0A-=0A-# In the cases where this m= atters, `missing' is being run in the=0A-# srcdir already.=0A-if test -f co= nfigure.ac; then=0A- configure=5Fac=3Dconfigure.ac=0A-else=0A- configure= =5Fac=3Dconfigure.in=0A-fi=0A-=0A-case "$1" in=0A---run)=0A- # Try to run = requested program, and just exit if it succeeds.=0A- run=3D=0A- shift=0A-= "$@" && exit 0=0A- ;;=0A-esac=0A-=0A-# If it does not exist, or fails to= run (possibly an outdated version),=0A-# try to emulate it.=0A-case "$1" i= n=0A-=0A- -h|--h|--he|--hel|--help)=0A- echo "\=0A-$0 [OPTION]... PROGR= AM [ARGUMENT]...=0A-=0A-Handle \`PROGRAM [ARGUMENT]...' for when PROGRAM is= missing, or return an=0A-error status if there is no known handling for PR= OGRAM.=0A-=0A-Options:=0A- -h, --help display this help and exit=0A- = -v, --version output version information and exit=0A- --run t= ry to run the given command, and emulate it if it fails=0A-=0A-Supported PR= OGRAM values:=0A- aclocal touch file \`aclocal.m4'=0A- autoconf = touch file \`configure'=0A- autoheader touch file \`config.h.in'=0A- au= tomake touch all \`Makefile.in' files=0A- bison create \`y.tab.= [ch]', if possible, from existing .[ch]=0A- flex create \`lex.yy.c= ', if possible, from existing .c=0A- help2man touch the output file=0A= - lex create \`lex.yy.c', if possible, from existing .c=0A- make= info touch the output file=0A- tar try tar, gnutar, gtar, the= n tar without non-portable flags=0A- yacc create \`y.tab.[ch]', if= possible, from existing .[ch]"=0A- ;;=0A-=0A- -v|--v|--ve|--ver|--vers= |--versi|--versio|--version)=0A- echo "missing 0.4 - GNU automake"=0A- = ;;=0A-=0A- -*)=0A- echo 1>&2 "$0: Unknown \`$1' option"=0A- echo 1= >&2 "Try \`$0 --help' for more information"=0A- exit 1=0A- ;;=0A-=0A-= aclocal*)=0A- if test -z "$run" && ($1 --version) > /dev/null 2>&1; th= en=0A- # We have it, but it failed.=0A- exit 1=0A- fi=0A-=0A= - echo 1>&2 "\=0A-WARNING: \`$1' is missing on your system. You should = only need it if=0A- you modified \`acinclude.m4' or \`${configure= =5Fac}'. You might want=0A- to install the \`Automake' and \`Perl'= packages. Grab them from=0A- any GNU archive site."=0A- touch = aclocal.m4=0A- ;;=0A-=0A- autoconf)=0A- if test -z "$run" && ($1 --v= ersion) > /dev/null 2>&1; then=0A- # We have it, but it failed.=0A- = exit 1=0A- fi=0A-=0A- echo 1>&2 "\=0A-WARNING: \`$1' is missing = on your system. You should only need it if=0A- you modified \`${co= nfigure=5Fac}'. You might want to install the=0A- \`Autoconf' and = \`GNU m4' packages. Grab them from any GNU=0A- archive site."=0A- = touch configure=0A- ;;=0A-=0A- autoheader)=0A- if test -z "$run" = && ($1 --version) > /dev/null 2>&1; then=0A- # We have it, but it fai= led.=0A- exit 1=0A- fi=0A-=0A- echo 1>&2 "\=0A-WARNING: \`$1' i= s missing on your system. You should only need it if=0A- you modif= ied \`acconfig.h' or \`${configure=5Fac}'. You might want=0A- to i= nstall the \`Autoconf' and \`GNU m4' packages. Grab them=0A- from = any GNU archive site."=0A- files=3D`sed -n 's/^[ ]*A[CM]=5FCONFIG=5FHEAD= ER(\([^)]*\)).*/\1/p' ${configure=5Fac}`=0A- test -z "$files" && files= =3D"config.h"=0A- touch=5Ffiles=3D=0A- for f in $files; do=0A- c= ase "$f" in=0A- *:*) touch=5Ffiles=3D"$touch=5Ffiles "`echo "$f" |=0A-= sed -e 's/^[^:]*://' -e 's/:.*//'`;;=0A- *) touch=5Ffiles= =3D"$touch=5Ffiles $f.in";;=0A- esac=0A- done=0A- touch $touch= =5Ffiles=0A- ;;=0A-=0A- automake*)=0A- if test -z "$run" && ($1 --ve= rsion) > /dev/null 2>&1; then=0A- # We have it, but it failed.=0A- = exit 1=0A- fi=0A-=0A- echo 1>&2 "\=0A-WARNING: \`$1' is missing o= n your system. You should only need it if=0A- you modified \`Makef= ile.am', \`acinclude.m4' or \`${configure=5Fac}'.=0A- You might wan= t to install the \`Automake' and \`Perl' packages.=0A- Grab them fr= om any GNU archive site."=0A- find . -type f -name Makefile.am -print |= =0A- sed 's/\.am$/.in/' |=0A- while read f; do touch "$f"; done=0A- = ;;=0A-=0A- autom4te)=0A- if test -z "$run" && ($1 --version) > /dev/n= ull 2>&1; then=0A- # We have it, but it failed.=0A- exit 1=0A- = fi=0A-=0A- echo 1>&2 "\=0A-WARNING: \`$1' is needed, and you do not s= eem to have it handy on your=0A- system. You might have modified s= ome files without having the=0A- proper tools for further handling = them.=0A- You can get \`$1Help2man' as part of \`Autoconf' from any= GNU=0A- archive site."=0A-=0A- file=3D`echo "$*" | sed -n 's/.*= --output[ =3D]*\([^ ]*\).*/\1/p'`=0A- test -z "$file" && file=3D`echo "$= *" | sed -n 's/.*-o[ ]*\([^ ]*\).*/\1/p'`=0A- if test -f "$file"; then= =0A- touch $file=0A- else=0A- test -z "$file" || exec >$file=0A- echo "#= ! /bin/sh"=0A- echo "# Created by GNU Automake missing as a replacement of"= =0A- echo "# $ $@"=0A- echo "exit 0"=0A- chmod +x $file=0A- exit 1=0A- = fi=0A- ;;=0A-=0A- bison|yacc)=0A- echo 1>&2 "\=0A-WARNING: \`$1' is = missing on your system. You should only need it if=0A- you modifie= d a \`.y' file. You may need the \`Bison' package=0A- in order for= those modifications to take effect. You can get=0A- \`Bison' from= any GNU archive site."=0A- rm -f y.tab.c y.tab.h=0A- if [ $# -ne 1 ]= ; then=0A- eval LASTARG=3D"\${$#}"=0A- case "$LASTARG" in=0A- *.y)= =0A- SRCFILE=3D`echo "$LASTARG" | sed 's/y$/c/'`=0A- if [ -f "$SRCF= ILE" ]; then=0A- cp "$SRCFILE" y.tab.c=0A- fi=0A- SRCFILE= =3D`echo "$LASTARG" | sed 's/y$/h/'`=0A- if [ -f "$SRCFILE" ]; then=0A-= cp "$SRCFILE" y.tab.h=0A- fi=0A- ;;=0A- esac=0A- fi=0A- = if [ ! -f y.tab.h ]; then=0A- echo >y.tab.h=0A- fi=0A- if [ ! -f y= .tab.c ]; then=0A- echo 'main() { return 0; }' >y.tab.c=0A- fi=0A- ;;= =0A-=0A- lex|flex)=0A- echo 1>&2 "\=0A-WARNING: \`$1' is missing on you= r system. You should only need it if=0A- you modified a \`.l' file= . You may need the \`Flex' package=0A- in order for those modifica= tions to take effect. You can get=0A- \`Flex' from any GNU archive= site."=0A- rm -f lex.yy.c=0A- if [ $# -ne 1 ]; then=0A- eval = LASTARG=3D"\${$#}"=0A- case "$LASTARG" in=0A- *.l)=0A- SRCFILE=3D`echo = "$LASTARG" | sed 's/l$/c/'`=0A- if [ -f "$SRCFILE" ]; then=0A- = cp "$SRCFILE" lex.yy.c=0A- fi=0A- ;;=0A- esac=0A- fi=0A- if [ = ! -f lex.yy.c ]; then=0A- echo 'main() { return 0; }' >lex.yy.c=0A- fi= =0A- ;;=0A-=0A- help2man)=0A- if test -z "$run" && ($1 --version) > = /dev/null 2>&1; then=0A- # We have it, but it failed.=0A- exit = 1=0A- fi=0A-=0A- echo 1>&2 "\=0A-WARNING: \`$1' is missing on your sy= stem. You should only need it if=0A- you modified a dependency of a manua= l page. You may need the=0A- \`Help2man' package in order for those modif= ications to take=0A- effect. You can get \`Help2man' from any GNU archive= site."=0A-=0A- file=3D`echo "$*" | sed -n 's/.*-o \([^ ]*\).*/\1/p'`=0A= - if test -z "$file"; then=0A- file=3D`echo "$*" | sed -n 's/.*--output= =3D\([^ ]*\).*/\1/p'`=0A- fi=0A- if [ -f "$file" ]; then=0A- touch $f= ile=0A- else=0A- test -z "$file" || exec >$file=0A- echo ".ab help2man i= s required to generate this page"=0A- exit 1=0A- fi=0A- ;;=0A-=0A- m= akeinfo)=0A- if test -z "$run" && (makeinfo --version) > /dev/null 2>&1;= then=0A- # We have makeinfo, but it failed.=0A- exit 1=0A- = fi=0A-=0A- echo 1>&2 "\=0A-WARNING: \`$1' is missing on your system. Yo= u should only need it if=0A- you modified a \`.texi' or \`.texinfo'= file, or any other file=0A- indirectly affecting the aspect of the= manual. The spurious=0A- call might also be the consequence of us= ing a buggy \`make' (AIX,=0A- DU, IRIX). You might want to install= the \`Texinfo' package or=0A- the \`GNU make' package. Grab eithe= r from any GNU archive site."=0A- file=3D`echo "$*" | sed -n 's/.*-o \([= ^ ]*\).*/\1/p'`=0A- if test -z "$file"; then=0A- file=3D`echo "$*" = | sed 's/.* \([^ ]*\) *$/\1/'`=0A- file=3D`sed -n '/^@setfilename/ { s= /.* \([^ ]*\) *$/\1/; p; q; }' $file`=0A- fi=0A- touch $file=0A- ;= ;=0A-=0A- tar)=0A- shift=0A- if test -n "$run"; then=0A- echo 1= >&2 "ERROR: \`tar' requires --run"=0A- exit 1=0A- fi=0A-=0A- # W= e have already tried tar in the generic part.=0A- # Look for gnutar/gtar= before invocation to avoid ugly error=0A- # messages.=0A- if (gnutar= --version > /dev/null 2>&1); then=0A- gnutar "$@" && exit 0=0A- f= i=0A- if (gtar --version > /dev/null 2>&1); then=0A- gtar "$@" && = exit 0=0A- fi=0A- firstarg=3D"$1"=0A- if shift; then=0A- case "$fi= rstarg" in=0A- *o*)=0A- firstarg=3D`echo "$firstarg" | sed s/o//`=0A- = tar "$firstarg" "$@" && exit 0=0A- ;;=0A- esac=0A- case "$firstarg" = in=0A- *h*)=0A- firstarg=3D`echo "$firstarg" | sed s/h//`=0A- tar "= $firstarg" "$@" && exit 0=0A- ;;=0A- esac=0A- fi=0A-=0A- echo 1>&= 2 "\=0A-WARNING: I can't seem to be able to run \`tar' with the given argum= ents.=0A- You may want to install GNU tar or Free paxutils, or chec= k the=0A- command line arguments."=0A- exit 1=0A- ;;=0A-=0A- = *)=0A- echo 1>&2 "\=0A-WARNING: \`$1' is needed, and you do not seem to= have it handy on your=0A- system. You might have modified some fi= les without having the=0A- proper tools for further handling them. = Check the \`README' file,=0A- it often tells you about the needed = prerequirements for installing=0A- this package. You may also peek= at any GNU archive site, in case=0A- some other package would cont= ain this missing \`$1' program."=0A- exit 1=0A- ;;=0A-esac=0A-=0A-exi= t 0=0Adiff --git a/testcases/kernel/fs/ext4-new-features/ffsb-6.0-rc2/mkins= talldirs b/testcases/kernel/fs/ext4-new-features/ffsb-6.0-rc2/mkinstalldirs= =0Adeleted file mode 100755=0Aindex 1790da1..0000000=0A--- a/testcases/kern= el/fs/ext4-new-features/ffsb-6.0-rc2/mkinstalldirs=0A+++ /dev/null=0A@@ -1,= 40 +0,0 @@=0A-#! /bin/sh=0A-# mkinstalldirs --- make directory hierarchy=0A= -# Author: Noah Friedman =0A-# Created: 1993-05-1= 6=0A-# Public domain=0A-=0A-# $Id: mkinstalldirs,v 1.1 2009/10/26 11:25:55 = subrata=5Fmodak Exp $=0A-=0A-errstatus=3D0=0A-=0A-for file=0A-do=0A- set = fnord `echo ":$file" | sed -ne 's/^:\//#/;s/^://;s/\// /g;s/^#/\//;p'`=0A- = shift=0A-=0A- pathcomp=3D=0A- for d=0A- do=0A- pathcomp=3D"$pat= hcomp$d"=0A- case "$pathcomp" in=0A- -* ) pathcomp=3D./$pathcomp = ;;=0A- esac=0A-=0A- if test ! -d "$pathcomp"; then=0A- echo = "mkdir $pathcomp"=0A-=0A- mkdir "$pathcomp" || lasterr=3D$?=0A-=0A- = if test ! -d "$pathcomp"; then=0A- errstatus=3D$lasterr=0A- = fi=0A- fi=0A-=0A- pathcomp=3D"$pathcomp/"=0A- done=0A-done=0A-= =0A-exit $errstatus=0A-=0A-# mkinstalldirs ends here=0Adiff --git a/testcas= es/kernel/fs/ext4-new-features/ffsb-6.0-rc2/parser.c b/testcases/kernel/fs/= ext4-new-features/ffsb-6.0-rc2/parser.c=0Adeleted file mode 100644=0Aindex = 64c89e1..0000000=0A--- a/testcases/kernel/fs/ext4-new-features/ffsb-6.0-rc2= /parser.c=0A+++ /dev/null=0A@@ -1,1051 +0,0 @@=0A-/*=0A- * Copyright (c) = International Business Machines Corp., 2001-2004=0A- *=0A- * This program= is free software; you can redistribute it and/or modify=0A- * it under = the terms of the GNU General Public License as published by=0A- * the Fre= e Software Foundation; either version 2 of the License, or=0A- * (at your= option) any later version.=0A- *=0A- * This program is distributed in th= e hope that it will be useful,=0A- * but WITHOUT ANY WARRANTY; without e= ven the implied warranty of=0A- * MERCHANTABILITY or FITNESS FOR A PARTIC= ULAR PURPOSE. See=0A- * the GNU General Public License for more details.= =0A- *=0A- * You should have received a copy of the GNU General Public Li= cense=0A- * along with this program; if not, write to the Free Software= =0A- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 0211= 0-1301 USA=0A- */=0A-#include =0A-#include =0A-#include = =0A-#include =0A-#include =0A-=0A-#include "= ffsb.h"=0A-#include "parser.h"=0A-#include "ffsb=5Ftg.h"=0A-#include "ffsb= =5Fstats.h"=0A-#include "util.h"=0A-#include "list.h"=0A-=0A-#define BUFSIZ= E 1024=0A-=0A-config=5Foptions=5Ft global=5Foptions[] =3D GLOBAL=5FOPTIONS;= =0A-config=5Foptions=5Ft tg=5Foptions[] =3D THREADGROUP=5FOPTIONS;=0A-confi= g=5Foptions=5Ft fs=5Foptions[] =3D FILESYSTEM=5FOPTIONS;=0A-config=5Foption= s=5Ft stats=5Foptions[] =3D STATS=5FOPTIONS;=0A-container=5Fdesc=5Ft contai= ner=5Fdesc[] =3D CONTAINER=5FDESC;=0A-=0A-/* strips out whitespace and comm= ents, returns NULL on eof */=0A-void parseerror(char *msg)=0A-{=0A- fprintf= (stderr, "Error parsing %s\n", msg);=0A- exit(1);=0A-}=0A-=0A-static char *= get=5Fnext=5Fline(FILE * f)=0A-{=0A- static char buf[BUFSIZE];=0A- char *re= t, *tmp;=0A- int flag =3D 1;=0A- while (flag) {=0A- ret =3D fgets(buf, BUF= SIZE, f);=0A- if (ret =3D=3D NULL)=0A- return NULL;=0A- ret =3D buf;=0A= - while (isspace(*ret))=0A- ret++;=0A-=0A- if ((*ret =3D=3D COMMENT=5FC= HAR) || (*ret =3D=3D '\0'))=0A- continue;=0A-=0A- tmp =3D ret;=0A- whil= e (*tmp !=3D '\0') {=0A- if (*tmp =3D=3D COMMENT=5FCHAR) {=0A- *tmp = =3D '\0';=0A- break;=0A- }=0A- tmp++;=0A- }=0A- flag =3D 0;=0A- }= =0A- return ret;=0A-}=0A-=0A-static char *strip=5Fspace(char *buf)=0A-{=0A-= int len;=0A- char *tmp, *tmp2;=0A- int flag =3D 1;=0A-=0A- len =3D strnlen= (buf, BUFSIZE);=0A- tmp =3D malloc(sizeof(char) * len);=0A- memset(tmp, 0, = sizeof(char) * len);=0A- tmp2 =3D tmp;=0A- while (flag) {=0A- if (!isspace= (*buf)) {=0A- *tmp =3D *buf;=0A- tmp++;=0A- }=0A- buf++;=0A- if (*bu= f !=3D '\0')=0A- continue;=0A- flag =3D 0;=0A- }=0A- return tmp2;=0A-}= =0A-=0A-static uint64=5Ft size64=5Fconvert(char *buf)=0A-{=0A- size=5Ft buf= =5Fsize =3D strlen(buf);=0A- char unit[3] =3D { 0 };=0A- char search=5Fstr[= 256];=0A- uint64=5Ft size;=0A- uint64=5Ft multiplier =3D 1;=0A- int i;=0A-= =0A- if (buf=5Fsize =3D=3D 1)=0A- goto out;=0A-=0A- strcpy(unit, buf + (bu= f=5Fsize - 2));=0A- for (i =3D 0; i < 2; i++) {=0A- if (isdigit(unit[i]))= =0A- goto try=5Fsingle;=0A- unit[i] =3D toupper(unit[i]);=0A- }=0A- goto= do=5Fmultiplier;=0A-=0A-try=5Fsingle:=0A- memcpy(unit, "\0", 3);=0A- strcp= y(unit, buf + (buf=5Fsize - 1));=0A- if (isdigit(unit[0])) {=0A- unit[0] = =3D 0;=0A- goto out;=0A- }=0A- unit[0] =3D toupper(unit[0]);=0A-=0A-do=5Fm= ultiplier:=0A- if (!strcmp("KB", unit) || !strcmp("K", unit))=0A- multipli= er =3D 1024;=0A- if (!strcmp("MB", unit) || !strcmp("M", unit))=0A- multip= lier =3D 1048576;=0A- if (!strcmp("GB", unit) || !strcmp("G", unit))=0A- m= ultiplier =3D 1073741824;=0A- if (multiplier =3D=3D 1) {=0A- unit[0] =3D 0= ;=0A- multiplier =3D 0;=0A- }=0A-out:=0A- sprintf(search=5Fstr, "%%llu%s",= unit);=0A- if (1 =3D=3D sscanf(buf, search=5Fstr, &size))=0A- return size= * multiplier;=0A- return 0;=0A-}=0A-=0A-static uint64=5Ft *get=5Fopt64(cha= r *buf, char string[])=0A-{=0A- char search=5Fstr[256];=0A- char *line =3D = strip=5Fspace(buf);=0A- uint64=5Ft temp;=0A- uint64=5Ft *ret;=0A-=0A- sprin= tf(search=5Fstr, "%s=3D%%llu\\n", string);=0A- if (1 =3D=3D sscanf(line, se= arch=5Fstr, &temp)) {=0A- ret =3D malloc(sizeof(uint64=5Ft));=0A- *ret = =3D temp;=0A- return ret;=0A- }=0A- free(line);=0A- return NULL;=0A-}=0A-= =0A-static uint32=5Ft *get=5Fopt32(char *buf, char string[])=0A-{=0A- uint3= 2=5Ft *ret;=0A- uint64=5Ft *res;=0A- res =3D get=5Fopt64(buf, string);=0A- = if (res) {=0A- ret =3D malloc(sizeof(uint32=5Ft));=0A- *ret =3D *res;=0A-= free(res);=0A- return ret;=0A- }=0A- return NULL;=0A-}=0A-=0A-static uin= t8=5Ft *get=5Foptbool(char *buf, char string[])=0A-{=0A- uint8=5Ft *ret;=0A= - uint64=5Ft *res;=0A- res =3D get=5Fopt64(buf, string);=0A- if (res) {=0A-= if ((int)*res < 0 || (int)*res > 1) {=0A- printf("Error in: %s", buf);= =0A- printf("%llu not boolean\n", (long long unsigned)*res);=0A- exit(1= );=0A- }=0A- ret =3D malloc(sizeof(uint8=5Ft));=0A- *ret =3D *res;=0A- = free(res);=0A- return ret;=0A- }=0A- return NULL;=0A-}=0A-=0A-static char = *get=5Foptstr(char *buf, char string[])=0A-{=0A- char search=5Fstr[256];=0A= - char *line =3D strip=5Fspace(buf);=0A- char *ret=5Fbuf;=0A- char temp[BUF= SIZE];=0A- int len;=0A-=0A- len =3D strnlen(string, BUFSIZE);=0A- sprintf(s= earch=5Fstr, "%s=3D%%%ds\\n", string, BUFSIZE - len - 1);=0A- if (1 =3D=3D = sscanf(line, search=5Fstr, &temp)) {=0A- len =3D strnlen(temp, 4096);=0A- = ret=5Fbuf =3D malloc(len);=0A- strncpy(ret=5Fbuf, temp, len);=0A- return= ret=5Fbuf;=0A- }=0A- free(line);=0A- return NULL;=0A-}=0A-=0A-static doubl= e *get=5Foptdouble(char *buf, char string[])=0A-{=0A- char search=5Fstr[256= ];=0A- char *line =3D strip=5Fspace(buf);=0A- double temp;=0A- double *ret;= =0A-=0A- sprintf(search=5Fstr, "%s=3D%%lf\\n", string);=0A- if (1 =3D=3D ss= canf(line, search=5Fstr, &temp)) {=0A- ret =3D malloc(sizeof(double));=0A-= *ret =3D temp;=0A- return ret;=0A- }=0A- free(line);=0A- return NULL;=0A= -}=0A-=0A-static range=5Ft *get=5Foptrange(char *buf, char string[])=0A-{= =0A- char search=5Fstr[256];=0A- double a, b;=0A- range=5Ft *ret;=0A-=0A- s= printf(search=5Fstr, "%s %%lf %%lf\\n", string);=0A- if (2 =3D=3D sscanf(bu= f, search=5Fstr, &a, &b)) {=0A- ret =3D malloc(sizeof(struct range));=0A- = ret->a =3D a;=0A- ret->b =3D b;=0A- return ret;=0A- }=0A- return NULL;= =0A-}=0A-=0A-static size=5Fweight=5Ft *get=5Foptsizeweight(char *buf, char = string[])=0A-{=0A- char search=5Fstr[256];=0A- char size[256];=0A- int weig= ht;=0A- size=5Fweight=5Ft *ret;=0A-=0A- sprintf(search=5Fstr, "%s %%s %%d\\= n", string);=0A- if (2 =3D=3D sscanf(buf, search=5Fstr, &size, &weight)) {= =0A- ret =3D malloc(sizeof(struct size=5Fweight));=0A- ret->size =3D size= 64=5Fconvert(size);=0A- ret->weight =3D weight;=0A- return ret;=0A- }=0A-= return NULL;=0A-}=0A-=0A-static uint64=5Ft *get=5Foptsize64(char *buf, cha= r string[])=0A-{=0A- char search=5Fstr[256];=0A- char *line =3D strip=5Fspa= ce(buf);=0A- char temp[256];=0A- uint64=5Ft size;=0A- uint64=5Ft *ret =3D N= ULL;=0A-=0A- sprintf(search=5Fstr, "%s=3D%%s\\n", string);=0A- if (1 =3D=3D= sscanf(line, search=5Fstr, &temp)) {=0A- ret =3D malloc(sizeof(uint64=5Ft= ));=0A- *ret =3D size64=5Fconvert(temp);=0A- }=0A- free(line);=0A- return = ret;=0A-}=0A-=0A-static uint32=5Ft *get=5Foptsize32(char *buf, char string[= ])=0A-{=0A- uint32=5Ft *ret;=0A- uint64=5Ft *res;=0A- res =3D get=5Foptsize= 64(buf, string);=0A- if (res) {=0A- ret =3D malloc(sizeof(uint32=5Ft));=0A= - *ret =3D *res;=0A- free(res);=0A- return ret;=0A- }=0A- return NULL;= =0A-}=0A-=0A-static uint64=5Ft *get=5Fdeprecated(char *buf, char string[])= =0A-{=0A- char search=5Fstr[256];=0A- char temp[BUFSIZE];=0A- int len;=0A-= =0A- len =3D strnlen(string, BUFSIZE);=0A- sprintf(search=5Fstr, "%s%%%ds\\= n", string, BUFSIZE - len - 1);=0A- if (1 =3D=3D sscanf(buf, search=5Fstr, = &temp))=0A- printf("WARNING: The \"%s\" option is deprecated!!!\n", string= );=0A-=0A- return NULL;=0A-}=0A-=0A-static container=5Ft *init=5Fcontainer(= void)=0A-{=0A- container=5Ft *container;=0A- container =3D malloc(sizeof(co= ntainer=5Ft));=0A- container->config =3D NULL;=0A- container->type =3D 0;= =0A- container->next =3D NULL;=0A- return container;=0A-}=0A-=0A-static int= set=5Foption(char *buf, config=5Foptions=5Ft * options)=0A-{=0A- void *val= ue;=0A-=0A- while (options->name) {=0A- switch (options->type) {=0A- case= TYPE=5FWEIGHT:=0A- case TYPE=5FU32:=0A- value =3D get=5Fopt32(buf, opti= ons->name);=0A- if (value)=0A- goto out;=0A- break;=0A- case TYPE= =5FU64:=0A- value =3D get=5Fopt64(buf, options->name);=0A- if (value)= =0A- goto out;=0A- break;=0A- case TYPE=5FSTRING:=0A- value =3D get= =5Foptstr(buf, options->name);=0A- if (value)=0A- goto out;=0A- brea= k;=0A- case TYPE=5FBOOLEAN:=0A- value =3D get=5Foptbool(buf, options->na= me);=0A- if (value)=0A- goto out;=0A- break;=0A- case TYPE=5FDOUBLE= :=0A- value =3D get=5Foptdouble(buf, options->name);=0A- if (value)=0A-= goto out;=0A- break;=0A- case TYPE=5FRANGE:=0A- value =3D get=5Fop= trange(buf, options->name);=0A- if (value)=0A- goto out;=0A- break;= =0A- case TYPE=5FSIZEWEIGHT:=0A- value =3D get=5Foptsizeweight(buf, opti= ons->name);=0A- if (value)=0A- goto out;=0A- break;=0A- case TYPE= =5FDEPRECATED:=0A- value =3D get=5Fdeprecated(buf, options->name);=0A- = if (value)=0A- goto out;=0A- break;=0A- case TYPE=5FSIZE32:=0A- val= ue =3D get=5Foptsize32(buf, options->name);=0A- if (value)=0A- goto ou= t;=0A- break;=0A- case TYPE=5FSIZE64:=0A- value =3D get=5Foptsize64(bu= f, options->name);=0A- if (value)=0A- goto out;=0A- break;=0A- defa= ult:=0A- printf("Unknown type\n");=0A- break;=0A- }=0A- options++;=0A= - }=0A- return 0;=0A-=0A-out:=0A- if (options->storage=5Ftype =3D=3D STORE= =5FSINGLE)=0A- options->value =3D value;=0A- if (options->storage=5Ftype = =3D=3D STORE=5FLIST) {=0A- if (!options->value) {=0A- value=5Flist=5Ft *= lhead;=0A- lhead =3D malloc(sizeof(struct value=5Flist));=0A- INIT=5FLI= ST=5FHEAD(&lhead->list);=0A- options->value =3D lhead;=0A- }=0A- value= =5Flist=5Ft *tmp=5Flist, *tmp=5Flist2;=0A- tmp=5Flist =3D malloc(sizeof(st= ruct value=5Flist));=0A- INIT=5FLIST=5FHEAD(&tmp=5Flist->list);=0A- tmp= =5Flist->value =3D value;=0A- tmp=5Flist2 =3D (struct value=5Flist *)optio= ns->value;=0A- list=5Fadd(&(tmp=5Flist->list), &(tmp=5Flist2->list));=0A- = }=0A-=0A- return 1;=0A-}=0A-=0A-void insert=5Fcontainer(container=5Ft * con= tainer, container=5Ft * new=5Fcontainer)=0A-{=0A- while (container->next)= =0A- container =3D container->next;=0A- container->next =3D new=5Fcontaine= r;=0A-}=0A-=0A-container=5Ft *search=5Fgroup(char *, FILE *);=0A-=0A-contai= ner=5Ft *handle=5Fcontainer(char *buf, FILE * f, uint32=5Ft type,=0A- = config=5Foptions=5Ft * options)=0A-{=0A- container=5Fdesc=5Ft *desc =3D = container=5Fdesc;=0A- container=5Ft *ret=5Fcontainer;=0A- container=5Ft *tm= p=5Fcontainer, *tmp2=5Fcontainer;=0A- container=5Ft *child =3D NULL;=0A- in= t is=5Foption;=0A-=0A- while (desc->name)=0A- if (desc->type =3D=3D type)= =0A- break;=0A- else=0A- desc++;=0A-=0A- if (!desc->name)=0A- return = NULL;=0A-=0A- buf =3D get=5Fnext=5Fline(f);=0A- while (buf) {=0A- is=5Fopt= ion =3D set=5Foption(buf, options);=0A- tmp=5Fcontainer =3D search=5Fgroup= (buf, f);=0A- if (tmp=5Fcontainer) {=0A- if (tmp=5Fcontainer->type =3D= =3D END) {=0A- free(tmp=5Fcontainer);=0A- break;=0A- } else {=0A- = if (child =3D=3D NULL)=0A- child =3D tmp=5Fcontainer;=0A- else {= =0A- tmp2=5Fcontainer =3D child;=0A- while (tmp2=5Fcontainer->next)= =0A- tmp2=5Fcontainer =3D=0A- tmp2=5Fcontainer->next;=0A- = tmp2=5Fcontainer->next =3D tmp=5Fcontainer;=0A- }=0A-=0A- }=0A- }=0A= - if (!is=5Foption && !tmp=5Fcontainer) {=0A- printf("ERROR!!! Unknow op= tion: %s", buf);=0A- exit(1);=0A- }=0A- buf =3D get=5Fnext=5Fline(f);= =0A- }=0A- ret=5Fcontainer =3D init=5Fcontainer();=0A- ret=5Fcontainer->con= fig =3D options;=0A- ret=5Fcontainer->type =3D type;=0A- if (child)=0A- re= t=5Fcontainer->child =3D child;=0A-=0A- return ret=5Fcontainer;=0A-}=0A-=0A= -container=5Ft *search=5Fgroup(char *buf, FILE * f)=0A-{=0A- char temp[BUFS= IZE];=0A- char *ptr;=0A- config=5Foptions=5Ft *options;=0A- container=5Fdes= c=5Ft *desc =3D container=5Fdesc;=0A- container=5Ft *ret=5Fcontainer;=0A-= =0A- if (1 =3D=3D sscanf(buf, "[%s]\n", (char *)&temp))=0A- while (desc->n= ame) {=0A- ptr =3D strstr(buf, desc->name);=0A- if (ptr)=0A- switch = (desc->type) {=0A- case FILESYSTEM:=0A- options =3D malloc(sizeof(fs= =5Foptions));=0A- memcpy(options, fs=5Foptions,=0A- sizeof(f= s=5Foptions));=0A- return handle=5Fcontainer(buf, f,=0A- desc->t= ype,=0A- options);=0A- break;=0A- case THREAD=5FGROUP:=0A- = options =3D malloc(sizeof(tg=5Foptions));=0A- memcpy(options, tg=5Fop= tions,=0A- sizeof(tg=5Foptions));=0A- return handle=5Fcontai= ner(buf, f,=0A- desc->type,=0A- options);=0A- break;=0A- = case STATS:=0A- options =3D malloc(sizeof(stats=5Foptions));=0A- = memcpy(options, stats=5Foptions,=0A- sizeof(stats=5Foptions));= =0A- return handle=5Fcontainer(buf, f,=0A- desc->type,=0A- = options);=0A- break;=0A- case END:=0A- ret=5Fcontainer =3D ini= t=5Fcontainer();=0A- ret=5Fcontainer->type =3D END;=0A- return ret= =5Fcontainer;=0A- break;=0A- }=0A- desc++;=0A- }=0A- return NULL;= =0A-}=0A-=0A-void *get=5Fvalue(config=5Foptions=5Ft * config, char *name)= =0A-{=0A- while (config->name) {=0A- if (!strcmp(config->name, name)) {=0A= - if (config->value)=0A- return config->value;=0A- else=0A- retur= n NULL;=0A- }=0A- config++;=0A- }=0A- return 0;=0A-}=0A-=0A-char *get=5Fc= onfig=5Fstr(config=5Foptions=5Ft * config, char *name)=0A-{=0A- return get= =5Fvalue(config, name);=0A-}=0A-=0A-uint32=5Ft get=5Fconfig=5Fu32(config=5F= options=5Ft * config, char *name)=0A-{=0A- void *value =3D get=5Fvalue(conf= ig, name);=0A- if (value)=0A- return *(uint32=5Ft *) value;=0A- return 0;= =0A-}=0A-=0A-uint8=5Ft get=5Fconfig=5Fbool(config=5Foptions=5Ft * config, c= har *name)=0A-{=0A- void *value =3D get=5Fvalue(config, name);=0A- if (valu= e)=0A- return *(uint8=5Ft *) value;=0A- return 0;=0A-}=0A-=0A-uint64=5Ft g= et=5Fconfig=5Fu64(config=5Foptions=5Ft * config, char *name)=0A-{=0A- void = *value =3D get=5Fvalue(config, name);=0A- if (value)=0A- return *(uint64= =5Ft *) value;=0A- return 0;=0A-}=0A-=0A-double get=5Fconfig=5Fdouble(confi= g=5Foptions=5Ft * config, char *name)=0A-{=0A- void *value =3D get=5Fvalue(= config, name);=0A- if (value)=0A- return *(double *)value;=0A- return 0;= =0A-}=0A-=0A-static profile=5Fconfig=5Ft *parse(FILE * f)=0A-{=0A- char *bu= f;=0A- profile=5Fconfig=5Ft *profile=5Fconf;=0A- container=5Ft *tmp=5Fconta= iner;=0A-=0A- profile=5Fconf =3D malloc(sizeof(profile=5Fconfig=5Ft));=0A- = profile=5Fconf->global =3D malloc(sizeof(global=5Foptions));=0A- memcpy(pro= file=5Fconf->global, global=5Foptions, sizeof(global=5Foptions));=0A- profi= le=5Fconf->fs=5Fcontainer =3D NULL;=0A- profile=5Fconf->tg=5Fcontainer =3D = NULL;=0A- int is=5Foption;=0A- buf =3D get=5Fnext=5Fline(f);=0A-=0A- while = (buf) {=0A- is=5Foption =3D set=5Foption(buf, profile=5Fconf->global);=0A-= tmp=5Fcontainer =3D search=5Fgroup(buf, f);=0A- if (tmp=5Fcontainer)=0A-= switch (tmp=5Fcontainer->type) {=0A- case FILESYSTEM:=0A- if (profi= le=5Fconf->fs=5Fcontainer =3D=3D NULL)=0A- profile=5Fconf->fs=5Fcontain= er =3D=0A- tmp=5Fcontainer;=0A- else=0A- insert=5Fcontainer(= profile=5Fconf->=0A- fs=5Fcontainer,=0A- tmp=5Fcontainer);=0A= - break;=0A- case THREAD=5FGROUP:=0A- if (profile=5Fconf->tg=5Fcont= ainer =3D=3D NULL)=0A- profile=5Fconf->tg=5Fcontainer =3D=0A- t= mp=5Fcontainer;=0A- else=0A- insert=5Fcontainer(profile=5Fconf->=0A-= tg=5Fcontainer,=0A- tmp=5Fcontainer);=0A- break;=0A- de= fault:=0A- break;=0A- }=0A- if (!is=5Foption && !tmp=5Fcontainer) {= =0A- printf("ERROR!!! Unknow option: %s", buf);=0A- exit(1);=0A- }=0A-= buf =3D get=5Fnext=5Fline(f);=0A- }=0A- return profile=5Fconf;=0A-}=0A-= =0A-void set=5Fweight(ffsb=5Ftg=5Ft * tg, config=5Foptions=5Ft * config)=0A= -{=0A- char *op;=0A- int len;=0A- config=5Foptions=5Ft *tmp=5Fconfig =3D co= nfig;=0A-=0A- while (tmp=5Fconfig->name) {=0A- if (tmp=5Fconfig->type =3D= =3D TYPE=5FWEIGHT) {=0A- len =3D strlen(tmp=5Fconfig->name);=0A- op =3D= malloc(sizeof(char) * len - 6);=0A- memset(op, 0, sizeof(char) * len - 6= );=0A- strncpy(op, tmp=5Fconfig->name, len - 7);=0A- tg=5Fset=5Fop=5Fwe= ight(tg, op,=0A- get=5Fconfig=5Fu32(config,=0A- tmp=5Fconfig->na= me));=0A- free(op);=0A- }=0A- tmp=5Fconfig++;=0A- }=0A-}=0A-=0A-int get= =5Fweight=5Ftotal(ffsb=5Ftg=5Ft * tg)=0A-{=0A- char *op;=0A- int len;=0A- i= nt total =3D 0;=0A- config=5Foptions=5Ft *tmp=5Fconfig =3D tg=5Foptions;=0A= -=0A- while (tmp=5Fconfig->name) {=0A- if (tmp=5Fconfig->type =3D=3D TYPE= =5FWEIGHT) {=0A- len =3D strlen(tmp=5Fconfig->name);=0A- op =3D malloc(= sizeof(char) * len - 6);=0A- memset(op, 0, sizeof(char) * len - 6);=0A- = strncpy(op, tmp=5Fconfig->name, len - 7);=0A- total +=3D tg=5Fget=5Fop= =5Fweight(tg, op);=0A- free(op);=0A- }=0A- tmp=5Fconfig++;=0A- }=0A- re= turn total;=0A-}=0A-=0A-/* !!! hackish verification function, we should som= ehow roll this into the */=0A-/* op descriptions/struct themselves at some = point with a callback verify */=0A-/* op requirements: */=0A-/* require tg-= >read=5Fblocksize: read, readall */=0A-/* require tg->write=5Fblocksize: w= rite, create, append, rewritefsync */=0A-/* */=0A-=0A-static int verify=5Ft= g(ffsb=5Ftg=5Ft * tg)=0A-{=0A- uint32=5Ft read=5Fweight =3D tg=5Fget=5Fop= =5Fweight(tg, "read");=0A- uint32=5Ft readall=5Fweight =3D tg=5Fget=5Fop=5F= weight(tg, "readall");=0A- uint32=5Ft write=5Fweight =3D tg=5Fget=5Fop=5Fwe= ight(tg, "write");=0A- uint32=5Ft create=5Fweight =3D tg=5Fget=5Fop=5Fweigh= t(tg, "create");=0A- uint32=5Ft append=5Fweight =3D tg=5Fget=5Fop=5Fweight(= tg, "append");=0A- uint32=5Ft createdir=5Fweight =3D tg=5Fget=5Fop=5Fweight= (tg, "createdir");=0A- uint32=5Ft delete=5Fweight =3D tg=5Fget=5Fop=5Fweigh= t(tg, "delete");=0A- uint32=5Ft writeall=5Fweight =3D tg=5Fget=5Fop=5Fweigh= t(tg, "writeall");=0A- uint32=5Ft writeall=5Ffsync=5Fweight =3D tg=5Fget=5F= op=5Fweight(tg, "writeall=5Ffsync");=0A-=0A- uint32=5Ft sum=5Fweight =3D ge= t=5Fweight=5Ftotal(tg);=0A-=0A- uint32=5Ft read=5Fblocksize =3D tg=5Fget=5F= read=5Fblocksize(tg);=0A- uint32=5Ft write=5Fblocksize =3D tg=5Fget=5Fwrite= =5Fblocksize(tg);=0A-=0A- int read=5Frandom =3D tg=5Fget=5Fread=5Frandom(tg= );=0A- int read=5Fskip =3D tg=5Fget=5Fread=5Fskip(tg);=0A- uint32=5Ft read= =5Fskipsize =3D tg=5Fget=5Fread=5Fskipsize(tg);=0A-=0A- if (sum=5Fweight = =3D=3D 0) {=0A- printf("Error: A threadgroup must have at least one weight= ed "=0A- "operation\n");=0A- return 1;=0A- }=0A-=0A- if ((read=5Fw= eight || readall=5Fweight) && !(read=5Fblocksize)) {=0A- printf("Error: re= ad and readall operations require a "=0A- "read=5Fblocksize\n");=0A= - return 1;=0A- }=0A-=0A- if ((write=5Fweight || create=5Fweight || append= =5Fweight || writeall=5Fweight=0A- || writeall=5Ffsync=5Fweight) && !(= write=5Fblocksize)) {=0A- printf("Error: write, writeall, create, append"= =0A- "operations require a write=5Fblocksize\n");=0A- return 1;=0A= - }=0A-=0A- if (read=5Frandom && read=5Fskip) {=0A- printf("Error: read=5F= random and read=5Fskip are mutually "=0A- "exclusive\n");=0A- retu= rn 1;=0A- }=0A-=0A- if (read=5Fskip && !(read=5Fskipsize)) {=0A- printf("E= rror: read=5Fskip specified but read=5Fskipsize is "=0A- "zero\n");= =0A- return 1;=0A- }=0A-=0A- return 0;=0A-}=0A-=0A-static unsigned get=5Fn= um=5Fcontainers(container=5Ft * container)=0A-{=0A- int numtg =3D 0;=0A- wh= ile (container) {=0A- numtg++;=0A- container =3D container->next;=0A- }= =0A- return numtg;=0A-}=0A-=0A-static unsigned get=5Fnum=5Fthreadgroups(pro= file=5Fconfig=5Ft * profile=5Fconf)=0A-{=0A- return get=5Fnum=5Fcontainers(= profile=5Fconf->tg=5Fcontainer);=0A-}=0A-=0A-static unsigned get=5Fnum=5Ffi= lesystems(profile=5Fconfig=5Ft * profile=5Fconf)=0A-{=0A- return get=5Fnum= =5Fcontainers(profile=5Fconf->fs=5Fcontainer);=0A-}=0A-=0A-static int get= =5Fnum=5Ftotalthreads(profile=5Fconfig=5Ft * profile=5Fconf)=0A-{=0A- int n= um=5Fthreads =3D 0;=0A- container=5Ft *tg =3D profile=5Fconf->tg=5Fcontaine= r;=0A- config=5Foptions=5Ft *tg=5Fconfig;=0A-=0A- while (tg) {=0A- tg=5Fco= nfig =3D tg->config;=0A- while (tg=5Fconfig->name) {=0A- if (!strcmp(tg= =5Fconfig->name, "num=5Fthreads"))=0A- num=5Fthreads +=3D *(uint32=5Ft *= ) tg=5Fconfig->value;=0A- tg=5Fconfig++;=0A- }=0A- if (tg->next)=0A- = tg =3D tg->next;=0A- else=0A- break;=0A- }=0A-=0A- return num=5Fthreads;= =0A-}=0A-=0A-container=5Ft *get=5Fcontainer(container=5Ft * head=5Fcont, in= t pos)=0A-{=0A- int count =3D 0;=0A- while (head=5Fcont) {=0A- if (count = =3D=3D pos)=0A- return head=5Fcont;=0A- head=5Fcont =3D head=5Fcont->nex= t;=0A- count++;=0A- }=0A- return NULL;=0A-}=0A-=0A-config=5Foptions=5Ft *g= et=5Ffs=5Fconfig(ffsb=5Fconfig=5Ft * fc, int pos)=0A-{=0A- container=5Ft *t= mp=5Fcont;=0A-=0A- assert(pos < fc->num=5Ffilesys);=0A- tmp=5Fcont =3D get= =5Fcontainer(fc->profile=5Fconf->fs=5Fcontainer, pos);=0A- if (tmp=5Fcont)= =0A- return tmp=5Fcont->config;=0A- return NULL;=0A-}=0A-=0A-container=5Ft= *get=5Ffs=5Fcontainer(ffsb=5Fconfig=5Ft * fc, int pos)=0A-{=0A- assert(pos= < fc->num=5Ffilesys);=0A- return get=5Fcontainer(fc->profile=5Fconf->fs=5F= container, pos);=0A-}=0A-=0A-config=5Foptions=5Ft *get=5Ftg=5Fconfig(ffsb= =5Fconfig=5Ft * fc, int pos)=0A-{=0A- container=5Ft *tmp=5Fcont;=0A-=0A- as= sert(pos < fc->num=5Fthreadgroups);=0A- tmp=5Fcont =3D get=5Fcontainer(fc->= profile=5Fconf->tg=5Fcontainer, pos);=0A- if (tmp=5Fcont)=0A- return tmp= =5Fcont->config;=0A- return NULL;=0A-}=0A-=0A-container=5Ft *get=5Ftg=5Fcon= tainer(ffsb=5Fconfig=5Ft * fc, int pos)=0A-{=0A- assert(pos < fc->num=5Fthr= eadgroups);=0A- return get=5Fcontainer(fc->profile=5Fconf->tg=5Fcontainer, = pos);=0A-}=0A-=0A-static void init=5Fthreadgroup(ffsb=5Fconfig=5Ft * fc, co= nfig=5Foptions=5Ft * config,=0A- ffsb=5Ftg=5Ft * tg, int tg=5Fnum)= =0A-{=0A- int num=5Fthreads;=0A- memset(tg, 0, sizeof(ffsb=5Ftg=5Ft));=0A-= =0A- num=5Fthreads =3D get=5Fconfig=5Fu32(config, "num=5Fthreads");=0A-=0A-= init=5Fffsb=5Ftg(tg, num=5Fthreads, tg=5Fnum);=0A-=0A- if (get=5Fconfig=5F= str(config, "bindfs")) {=0A- int i;=0A- config=5Foptions=5Ft *tmp=5Fconfi= g;=0A- for (i =3D 0; i < fc->num=5Ffilesys; i++) {=0A- tmp=5Fconfig =3D = get=5Ffs=5Fconfig(fc, i);=0A- if (!strcmp(get=5Fconfig=5Fstr(config, "bin= dfs"),=0A- get=5Fconfig=5Fstr(tmp=5Fconfig, "location")))=0A- bre= ak;=0A- }=0A- if (strcmp(get=5Fconfig=5Fstr(config, "bindfs"),=0A- g= et=5Fconfig=5Fstr(tmp=5Fconfig, "location"))) {=0A- printf("Bind fs faile= d: Base fs \"%s\" not found\n",=0A- get=5Fconfig=5Fstr(config, "b= indfs"));=0A- exit(1);=0A- }=0A- printf("%d\n", i);=0A- tg->bindfs =3D= i;=0A- }=0A-=0A- tg->read=5Frandom =3D get=5Fconfig=5Fbool(config, "read= =5Frandom");=0A- tg->read=5Fsize =3D get=5Fconfig=5Fu64(config, "read=5Fsiz= e");=0A- tg->read=5Fskip =3D get=5Fconfig=5Fbool(config, "read=5Fskip");=0A= - tg->read=5Fskipsize =3D get=5Fconfig=5Fu32(config, "read=5Fskipsize");=0A= -=0A- tg->write=5Frandom =3D get=5Fconfig=5Fbool(config, "write=5Frandom");= =0A- tg->write=5Fsize =3D get=5Fconfig=5Fu64(config, "write=5Fsize");=0A- t= g->fsync=5Ffile =3D get=5Fconfig=5Fbool(config, "fsync=5Ffile");=0A-=0A- tg= ->wait=5Ftime =3D get=5Fconfig=5Fu32(config, "op=5Fdelay");=0A-=0A- tg=5Fse= t=5Fread=5Fblocksize(tg, get=5Fconfig=5Fu32(config, "read=5Fblocksize"));= =0A- tg=5Fset=5Fwrite=5Fblocksize(tg, get=5Fconfig=5Fu32(config, "write=5Fb= locksize"));=0A-=0A- set=5Fweight(tg, config);=0A-=0A- if (verify=5Ftg(tg))= {=0A- printf("threadgroup %d verification failed\n", tg=5Fnum);=0A- exit= (1);=0A- }=0A-}=0A-=0A-static void init=5Ffilesys(ffsb=5Fconfig=5Ft * fc, i= nt num)=0A-{=0A- config=5Foptions=5Ft *config =3D get=5Ffs=5Fconfig(fc, num= );=0A- profile=5Fconfig=5Ft *profile=5Fconf =3D fc->profile=5Fconf;=0A- ffs= b=5Ffs=5Ft *fs =3D &fc->filesystems[num];=0A- value=5Flist=5Ft *tmp=5Flist,= *list=5Fhead;=0A-=0A- memset(fs, 0, sizeof(ffsb=5Ffs=5Ft));=0A-=0A- fs->ba= sedir =3D get=5Fconfig=5Fstr(config, "location");=0A-=0A- if (get=5Fconfig= =5Fstr(config, "clone")) {=0A- int i;=0A- config=5Foptions=5Ft *tmp=5Fcon= fig;=0A- for (i =3D 0; i < fc->num=5Ffilesys; i++) {=0A- tmp=5Fconfig = =3D get=5Ffs=5Fconfig(fc, i);=0A- if (!strcmp(get=5Fconfig=5Fstr(config, = "clone"),=0A- get=5Fconfig=5Fstr(tmp=5Fconfig, "location")))=0A- = break;=0A- }=0A- if (strcmp(get=5Fconfig=5Fstr(config, "clone"),=0A- = get=5Fconfig=5Fstr(tmp=5Fconfig, "location"))) {=0A- printf("Clone fs fa= iled: Base fs \"%s\" not found\n",=0A- get=5Fconfig=5Fstr(config,= "clone"));=0A- exit(1);=0A- }=0A- config =3D tmp=5Fconfig;=0A- }=0A-= =0A- fs->num=5Fdirs =3D get=5Fconfig=5Fu32(config, "num=5Fdirs");=0A- fs->n= um=5Fstart=5Ffiles =3D get=5Fconfig=5Fu32(config, "num=5Ffiles");=0A- fs->m= infilesize =3D get=5Fconfig=5Fu64(config, "min=5Ffilesize");=0A- fs->maxfil= esize =3D get=5Fconfig=5Fu64(config, "max=5Ffilesize");=0A- fs->desired=5Ff= sutil =3D get=5Fconfig=5Fdouble(config, "desired=5Futil");=0A- fs->init=5Ff= sutil =3D get=5Fconfig=5Fdouble(config, "init=5Futil");=0A- fs->init=5Fsize= =3D get=5Fconfig=5Fu64(config, "init=5Fsize");=0A-=0A- fs->flags =3D 0;=0A= - if (get=5Fconfig=5Fbool(config, "reuse"))=0A- fs->flags |=3D FFSB=5FFS= =5FREUSE=5FFS;=0A-=0A- if (get=5Fconfig=5Fbool(profile=5Fconf->global, "dir= ectio"))=0A- fs->flags |=3D FFSB=5FFS=5FDIRECTIO | FFSB=5FFS=5FALIGNIO4K;= =0A-=0A- if (get=5Fconfig=5Fbool(profile=5Fconf->global, "bufferio"))=0A- = fs->flags |=3D FFSB=5FFS=5FLIBCIO;=0A-=0A- if (get=5Fconfig=5Fbool(profile= =5Fconf->global, "alignio"))=0A- fs->flags |=3D FFSB=5FFS=5FALIGNIO4K;=0A= -=0A- if (get=5Fconfig=5Fbool(config, "agefs")) {=0A- container=5Ft *age= =5Fcont =3D get=5Ffs=5Fcontainer(fc, num);=0A- if (!age=5Fcont->child) {= =0A- printf("No age threaggroup in profile");=0A- exit(1);=0A- }=0A-= =0A- age=5Fcont =3D age=5Fcont->child;=0A- ffsb=5Ftg=5Ft *age=5Ftg =3D ff= sb=5Fmalloc(sizeof(ffsb=5Ftg=5Ft));=0A- init=5Fthreadgroup(fc, age=5Fcont-= >config, age=5Ftg, 0);=0A- fs->aging=5Ftg =3D age=5Ftg;=0A- fs->age=5Ffs = =3D 1;=0A- }=0A-=0A- if (get=5Fconfig=5Fu32(config, "create=5Fblocksize"))= =0A- fs->create=5Fblocksize =3D get=5Fconfig=5Fu32(config,=0A- = "create=5Fblocksize");=0A- else=0A- fs->create=5Fblocksize =3D FFSB=5FFS= =5FDEFAULT=5FCREATE=5FBLOCKSIZE;=0A-=0A- if (get=5Fconfig=5Fu32(config, "ag= e=5Fblocksize"))=0A- fs->age=5Fblocksize =3D get=5Fconfig=5Fu32(config, "a= ge=5Fblocksize");=0A- else=0A- fs->age=5Fblocksize =3D FFSB=5FFS=5FDEFAULT= =5FAGE=5FBLOCKSIZE;=0A-=0A- list=5Fhead =3D (value=5Flist=5Ft *) get=5Fvalu= e(config, "size=5Fweight");=0A- if (list=5Fhead) {=0A- int count =3D 0;=0A= - size=5Fweight=5Ft *sizew;=0A- list=5Ffor=5Feach=5Fentry(tmp=5Flist, &li= st=5Fhead->list, list)=0A- count++;=0A-=0A- fs->num=5Fweights =3D cou= nt;=0A- fs->size=5Fweights =3D=0A- malloc(sizeof(size=5Fweight=5Ft) *= fs->num=5Fweights);=0A-=0A- count =3D 0;=0A- list=5Ffor=5Feach=5Fentry(t= mp=5Flist, &list=5Fhead->list, list) {=0A- sizew =3D (size=5Fweight=5Ft *= ) tmp=5Flist->value;=0A- fs->size=5Fweights[count].size =3D sizew->size;= =0A- fs->size=5Fweights[count].weight =3D sizew->weight;=0A- fs->sum=5F= weights +=3D sizew->weight;=0A- count++;=0A- }=0A- }=0A-}=0A-=0A-static = void init=5Ftg=5Fstats(ffsb=5Fconfig=5Ft * fc, int num)=0A-{=0A- config=5Fo= ptions=5Ft *config;=0A- container=5Ft *tmp=5Fcont;=0A- value=5Flist=5Ft *tm= p=5Flist, *list=5Fhead;=0A- syscall=5Ft sys;=0A- ffsb=5Fstatsc=5Ft fsc =3D = { 0, };=0A- char *sys=5Fname;=0A- range=5Ft *bucket=5Frange;=0A- uint32=5Ft= min, max;=0A-=0A- tmp=5Fcont =3D get=5Ftg=5Fcontainer(fc, num);=0A- if (tm= p=5Fcont->child) {=0A- if (tmp=5Fcont->type =3D=3D STATS) {=0A- config = =3D tmp=5Fcont->config;=0A- if (get=5Fconfig=5Fbool(config, "enable=5Fsta= ts")) {=0A-=0A- list=5Fhead =3D=0A- (value=5Flist=5Ft *) get=5Fva= lue(config,=0A- "ignore");=0A- if (list=5Fhead)=0A- lis= t=5Ffor=5Feach=5Fentry(tmp=5Flist,=0A- &list=5Fhead->list,=0A- = list) {=0A- sys=5Fname =3D (char *)tmp=5Flist->value;=0A- f= fsb=5Fstats=5Fstr2syscall(sys=5Fname, &sys);=0A- ffsb=5Fstatsc=5Fignore= =5Fsys(&fsc, sys);=0A- }=0A-=0A- list=5Fhead =3D=0A- (value= =5Flist=5Ft *) get=5Fvalue(config,=0A- "msec=5Frange");=0A- = if (list=5Fhead=0A- && get=5Fconfig=5Fbool(config, "enable=5Frange"= ))=0A- list=5Ffor=5Feach=5Fentry(tmp=5Flist,=0A- &list=5Fhead= ->list,=0A- list) {=0A- bucket=5Frange =3D=0A- (range= =5Ft *) tmp=5Flist->value;=0A- min =3D=0A- (uint32=5Ft) (bucket= =5Frange->a *=0A- 1000.0f);=0A- max =3D=0A- (uint32=5Ft) = (bucket=5Frange->b *=0A- 1000.0f);=0A- ffsb=5Fstatsc=5Faddbucket(= &fsc, min, max);=0A- }=0A-=0A- tg=5Fset=5Fstatsc(&fc->groups[num], &= fsc);=0A- }=0A- }=0A- }=0A-}=0A-=0A-static void init=5Fconfig(ffsb=5Fcon= fig=5Ft * fc, profile=5Fconfig=5Ft * profile=5Fconf)=0A-{=0A- config=5Fopti= ons=5Ft *config;=0A- container=5Ft *tmp=5Fcont;=0A- int i;=0A-=0A- fc->time= =3D get=5Fconfig=5Fu32(profile=5Fconf->global, "time");=0A- fc->num=5Ffile= sys =3D get=5Fnum=5Ffilesystems(profile=5Fconf);=0A- fc->num=5Fthreadgroups= =3D get=5Fnum=5Fthreadgroups(profile=5Fconf);=0A- fc->num=5Ftotalthreads = =3D get=5Fnum=5Ftotalthreads(profile=5Fconf);=0A- fc->profile=5Fconf =3D pr= ofile=5Fconf;=0A- fc->callout =3D get=5Fconfig=5Fstr(profile=5Fconf->global= , "callout");=0A-=0A- fc->filesystems =3D ffsb=5Fmalloc(sizeof(ffsb=5Ffs=5F= t) * fc->num=5Ffilesys);=0A- for (i =3D 0; i < fc->num=5Ffilesys; i++)=0A- = init=5Ffilesys(fc, i);=0A-=0A- fc->groups =3D ffsb=5Fmalloc(sizeof(ffsb=5F= tg=5Ft) * fc->num=5Fthreadgroups);=0A- for (i =3D 0; i < fc->num=5Fthreadgr= oups; i++) {=0A- config =3D get=5Ftg=5Fconfig(fc, i);=0A- init=5Fthreadgr= oup(fc, config, &fc->groups[i], i);=0A- init=5Ftg=5Fstats(fc, i);=0A- }=0A= -}=0A-=0A-void ffsb=5Fparse=5Fnewconfig(ffsb=5Fconfig=5Ft * fc, char *filen= ame)=0A-{=0A- FILE *f;=0A-=0A- profile=5Fconfig=5Ft *profile=5Fconf;=0A-=0A= - f =3D fopen(filename, "r");=0A- if (f =3D=3D NULL) {=0A- perror(filename= );=0A- exit(1);=0A- }=0A- profile=5Fconf =3D parse(f);=0A- fclose(f);=0A-= =0A- init=5Fconfig(fc, profile=5Fconf);=0A-}=0Adiff --git a/testcases/kerne= l/fs/ext4-new-features/ffsb-6.0-rc2/parser.h b/testcases/kernel/fs/ext4-new= -features/ffsb-6.0-rc2/parser.h=0Adeleted file mode 100644=0Aindex 6357ede.= .0000000=0A--- a/testcases/kernel/fs/ext4-new-features/ffsb-6.0-rc2/parser.= h=0A+++ /dev/null=0A@@ -1,151 +0,0 @@=0A-/*=0A- * Copyright (c) Internati= onal Business Machines Corp., 2001-2004=0A- *=0A- * This program is free = software; you can redistribute it and/or modify=0A- * it under the terms= of the GNU General Public License as published by=0A- * the Free Softwar= e Foundation; either version 2 of the License, or=0A- * (at your option) = any later version.=0A- *=0A- * This program is distributed in the hope th= at it will be useful,=0A- * but WITHOUT ANY WARRANTY; without even the i= mplied warranty of=0A- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURP= OSE. See=0A- * the GNU General Public License for more details.=0A- *=0A= - * You should have received a copy of the GNU General Public License=0A-= * along with this program; if not, write to the Free Software=0A- * F= oundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA= =0A- */=0A-#ifndef =5FPARSER=5FH=5F=0A-#define =5FPARSER=5FH=5F=0A-=0A-#inc= lude "ffsb.h"=0A-#include "list.h"=0A-=0A-#define COMMENT=5FCHAR '#'=0A-=0A= -#define STORE=5FSINGLE 0x0001=0A-#define STORE=5FLIST 0x0002=0A-=0A-#def= ine TYPE=5FU32 0x0001=0A-#define TYPE=5FU64 0x0002=0A-#define TYPE=5FSTRI= NG 0x0004=0A-#define TYPE=5FBOOLEAN 0x0008=0A-#define TYPE=5FDOUBLE 0x00= 10=0A-#define TYPE=5FRANGE 0x0020=0A-#define TYPE=5FSIZEWEIGHT 0x0040=0A-= #define TYPE=5FDEPRECATED 0x0080=0A-#define TYPE=5FWEIGHT 0x0100=0A-#defi= ne TYPE=5FSIZE32 0x0200=0A-#define TYPE=5FSIZE64 0x0400=0A-=0A-#define RO= OT 0x0001=0A-#define THREAD=5FGROUP 0x0002=0A-#define FILESYSTEM 0x0004= =0A-#define END 0x0008=0A-#define STATS 0x0010=0A-=0A-#define GLOBAL=5F= OPTIONS { \=0A- {"num=5Ffilesystems", NULL, TYPE=5FDEPRECATED, STORE= =5FSINGLE}, \=0A- {"num=5Fthreadgroups", NULL, TYPE=5FDEPRECATED, STORE=5FS= INGLE}, \=0A- {"verbose", NULL, TYPE=5FBOOLEAN, STORE=5FSINGLE}, \=0A- {"= time", NULL, TYPE=5FU32, STORE=5FSINGLE}, \=0A- {"directio", NULL, TYPE= =5FBOOLEAN, STORE=5FSINGLE}, \=0A- {"bufferio", NULL, TYPE=5FBOOLEAN, STO= RE=5FSINGLE}, \=0A- {"alignio", NULL, TYPE=5FBOOLEAN, STORE=5FSINGLE}, = \=0A- {"callout", NULL, TYPE=5FSTRING, STORE=5FSINGLE}, \=0A- {NULL, NULL= , 0, 0} }=0A-=0A-#define THREADGROUP=5FOPTIONS { \=0A- {"bindfs", NULL= , TYPE=5FSTRING, STORE=5FSINGLE}, \=0A- {"num=5Fthreads", NULL, TYPE=5FU3= 2, STORE=5FSINGLE}, \=0A- {"read=5Fweight", NULL, TYPE=5FWEIGHT, STORE=5F= SINGLE}, \=0A- {"readall=5Fweight", NULL, TYPE=5FWEIGHT, STORE=5FSINGLE}, = \=0A- {"read=5Frandom", NULL, TYPE=5FBOOLEAN, STORE=5FSINGLE}, \=0A- {"re= ad=5Fskip", NULL, TYPE=5FU32, STORE=5FSINGLE}, \=0A- {"read=5Fsize", NULL= , TYPE=5FSIZE64, STORE=5FSINGLE}, \=0A- {"read=5Fblocksize", NULL, TYPE= =5FSIZE32, STORE=5FSINGLE}, \=0A- {"read=5Fskipsize", NULL, TYPE=5FSIZE32,= STORE=5FSINGLE}, \=0A- {"write=5Fweight", NULL, TYPE=5FWEIGHT, STORE=5FSI= NGLE}, \=0A- {"write=5Ffsync=5Fweight", NULL, TYPE=5FWEIGHT, STORE=5FSINGL= E}, \=0A- {"write=5Frandom", NULL, TYPE=5FBOOLEAN, STORE=5FSINGLE}, \=0A- = {"fsync=5Ffile", NULL, TYPE=5FDEPRECATED, STORE=5FSINGLE}, \=0A- {"write= =5Fsize", NULL, TYPE=5FSIZE64, STORE=5FSINGLE}, \=0A- {"write=5Fblocksize"= , NULL, TYPE=5FSIZE32, STORE=5FSINGLE}, \=0A- {"create=5Fweight", NULL, TY= PE=5FWEIGHT, STORE=5FSINGLE}, \=0A- {"create=5Ffsync=5Fweight", NULL, TYPE= =5FWEIGHT, STORE=5FSINGLE}, \=0A- {"delete=5Fweight", NULL, TYPE=5FWEIGHT, = STORE=5FSINGLE}, \=0A- {"append=5Fweight", NULL, TYPE=5FWEIGHT, STORE=5FSI= NGLE}, \=0A- {"append=5Ffsync=5Fweight", NULL, TYPE=5FWEIGHT, STORE=5FSING= LE}, \=0A- {"metaop=5Fweight", NULL, TYPE=5FWEIGHT, STORE=5FSINGLE}, \=0A-= {"createdir=5Fweight", NULL, TYPE=5FWEIGHT, STORE=5FSINGLE}, \=0A- {"op= =5Fdelay", NULL, TYPE=5FU32, STORE=5FSINGLE}, \=0A- {"stat=5Fweight", NUL= L, TYPE=5FWEIGHT, STORE=5FSINGLE}, \=0A- {"writeall=5Fweight", NULL, TYPE= =5FWEIGHT, STORE=5FSINGLE}, \=0A- {"writeall=5Ffsync=5Fweight", NULL, TYPE= =5FWEIGHT, STORE=5FSINGLE}, \=0A- {"open=5Fclose=5Fweight", NULL, TYPE=5FWE= IGHT, STORE=5FSINGLE}, \=0A- {NULL, NULL, 0} }=0A-=0A-#define FILESYSTEM= =5FOPTIONS { \=0A- {"location", NULL, TYPE=5FSTRING, STORE=5FSINGLE}, = \=0A- {"num=5Ffiles", NULL, TYPE=5FU32, STORE=5FSINGLE}, \=0A- {"num=5F= dirs", NULL, TYPE=5FU32, STORE=5FSINGLE}, \=0A- {"reuse", NULL, TYPE=5FBO= OLEAN, STORE=5FSINGLE}, \=0A- {"min=5Ffilesize", NULL, TYPE=5FSIZE64, STO= RE=5FSINGLE}, \=0A- {"max=5Ffilesize", NULL, TYPE=5FSIZE64, STORE=5FSINGLE= }, \=0A- {"create=5Fblocksize", NULL, TYPE=5FSIZE32, STORE=5FSINGLE}, \= =0A- {"age=5Fblocksize", NULL, TYPE=5FSIZE32, STORE=5FSINGLE}, \=0A- {"des= ired=5Futil", NULL, TYPE=5FDOUBLE, STORE=5FSINGLE}, \=0A- {"agefs", NULL, = TYPE=5FBOOLEAN, STORE=5FSINGLE}, \=0A- {"size=5Fweight", NULL, TYPE=5FSIZ= EWEIGHT, STORE=5FLIST}, \=0A- {"init=5Futil", NULL, TYPE=5FDOUBLE, STORE= =5FSINGLE}, \=0A- {"init=5Fsize", NULL, TYPE=5FSIZE64, STORE=5FSINGLE}, = \=0A- {"clone", NULL, TYPE=5FSTRING, STORE=5FSINGLE}, \=0A- {NULL, NULL,= 0} }=0A-=0A-#define STATS=5FOPTIONS { \=0A- {"enable=5Fstats", NULL,= TYPE=5FBOOLEAN, STORE=5FSINGLE}, \=0A- {"enable=5Frange", NULL, TYPE=5FBO= OLEAN, STORE=5FSINGLE}, \=0A- {"ignore", NULL, TYPE=5FSTRING, STORE=5FLIST= }, \=0A- {"msec=5Frange", NULL, TYPE=5FRANGE, STORE=5FLIST}, \=0A- {NUL= L, NULL, 0} }=0A-=0A-#define CONTAINER=5FDESC { \=0A- {"filesystem", FIL= ESYSTEM, 10}, \=0A- {"threadgroup", THREAD=5FGROUP, 11}, \=0A- {"end", E= ND, 3}, \=0A- {"stats", STATS, 5}, \=0A- {NULL, 0, 0} }=0A-=0A-typede= f struct container {=0A- struct config=5Foptions *config;=0A- uint32=5Ft ty= pe;=0A- struct container *child;=0A- struct container *next;=0A-} container= =5Ft;=0A-=0A-typedef struct config=5Foptions {=0A- char *name;=0A- void *va= lue;=0A- int type;=0A- int storage=5Ftype;=0A-} config=5Foptions=5Ft;=0A-= =0A-typedef struct container=5Fdesc {=0A- char *name;=0A- uint16=5Ft type;= =0A- uint16=5Ft size;=0A-} container=5Fdesc=5Ft;=0A-=0A-typedef struct rang= e {=0A- double a;=0A- double b;=0A-} range=5Ft;=0A-=0A-typedef struct value= =5Flist {=0A- void *value;=0A- struct list=5Fhead list;=0A-} value=5Flist= =5Ft;=0A-=0A-void ffsb=5Fparse=5Fnewconfig(ffsb=5Fconfig=5Ft *fc, char *fil= ename);=0A-=0A-#endif=0Adiff --git a/testcases/kernel/fs/ext4-new-features/= ffsb-6.0-rc2/public-description b/testcases/kernel/fs/ext4-new-features/ffs= b-6.0-rc2/public-description=0Adeleted file mode 100644=0Aindex f770dd0..00= 00000=0A--- a/testcases/kernel/fs/ext4-new-features/ffsb-6.0-rc2/public-des= cription=0A+++ /dev/null=0A@@ -1,4 +0,0 @@=0A-The Flexible Filesystem Bench= mark (FFSB) is a filesystem performance=0A-measurement tool. It uses custo= mizable profiles to measure of different=0A-workloads, and it supports mult= iple groups of threads across multiple=0A-filesystems.=0Adiff --git a/testc= ases/kernel/fs/ext4-new-features/ffsb-6.0-rc2/rand.c b/testcases/kernel/fs/= ext4-new-features/ffsb-6.0-rc2/rand.c=0Adeleted file mode 100644=0Aindex d2= b349b..0000000=0A--- a/testcases/kernel/fs/ext4-new-features/ffsb-6.0-rc2/r= and.c=0A+++ /dev/null=0A@@ -1,188 +0,0 @@=0A-/*=0A- * Copyright (c) Inter= national Business Machines Corp., 2001-2004=0A- *=0A- * This program is f= ree software; you can redistribute it and/or modify=0A- * it under the t= erms of the GNU General Public License as published by=0A- * the Free Sof= tware Foundation; either version 2 of the License, or=0A- * (at your opti= on) any later version.=0A- *=0A- * This program is distributed in the hop= e that it will be useful,=0A- * but WITHOUT ANY WARRANTY; without even t= he implied warranty of=0A- * MERCHANTABILITY or FITNESS FOR A PARTICULAR = PURPOSE. See=0A- * the GNU General Public License for more details.=0A- = *=0A- * You should have received a copy of the GNU General Public License= =0A- * along with this program; if not, write to the Free Software=0A- *= Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301= USA=0A- */=0A-#include =0A-#include =0A-#include =0A-#include =0A-#include =0A-#include =0A-#include =0A-#include =0A-#include = =0A-#include =0A-=0A-#include "config.h"=0A-#include "rand.h"=0A-= #include "util.h"=0A-=0A-#define RANDSRC "/dev/urandom"=0A-=0A-static int r= andfd =3D -1;=0A-=0A-/* close the file after we're done with the benchmark = */=0A-void randcleanup(void)=0A-{=0A- if (randfd > 0)=0A- close(randfd);= =0A-}=0A-=0A-/* We fill up the array with random bits from RANDSRC here and= set index */=0A-/* to 0 */=0A-/* pre: state->size must be set and state->m= t must be allocated! */=0A-static void sgenrand(randdata=5Ft * state)=0A-{= =0A- int got =3D 0;=0A- got =3D read(randfd, state->mt, state->size);=0A- i= f (got !=3D state->size) {=0A- int i;=0A- /* fall back on lrand48 */=0A- = /* printf("fallback=5Frand\n"); */=0A-=0A- for (i =3D got; i < state->siz= e; i +=3D 4) {=0A- long int rand =3D 0;=0A-#ifdef HAVE=5FLRAND48=0A- lr= and48=5Fr(&(state->data), &rand);=0A-#else=0A- rand =3D random();=0A-#end= if=0A- assert(rand !=3D 0);=0A- state->mt[i] =3D (rand >> 24) & (512 - = 1);=0A- state->mt[i + 1] =3D (rand >> 16) & (512 - 1);=0A- state->mt[i = + 2] =3D (rand >> 8) & (512 - 1);=0A- state->mt[i + 3] =3D (rand) & (512 = - 1);=0A- }=0A-=0A- }=0A- state->mti =3D 0;=0A-}=0A-=0A-/* returns 8 rando= m bits */=0A-static uint8=5Ft genrand8(randdata=5Ft * state)=0A-{=0A- unsig= ned long ret =3D 0;=0A- if (state->mti >=3D state->size) {=0A-/* sgenrand(= state); */=0A- state->mti =3D 0;=0A- }=0A- ret =3D state->mt[state->mti];= =0A- state->mti++;=0A- return ret;=0A-}=0A-=0A-/* returns 32 random bits */= =0A-static uint32=5Ft genrand32(randdata=5Ft * state)=0A-{=0A- uint8=5Ft by= tes[4];=0A- uint32=5Ft ret =3D 0;=0A-=0A- bytes[0] =3D genrand8(state);=0A-= bytes[1] =3D genrand8(state);=0A- bytes[2] =3D genrand8(state);=0A- bytes[= 3] =3D genrand8(state);=0A-=0A- ret =3D *((uint32=5Ft *) bytes); /* !!! hac= k */=0A- return ret;=0A-}=0A-=0A-void init=5Frandom(randdata=5Ft * state, u= int32=5Ft iter)=0A-{=0A- struct timeval time;=0A- if (iter =3D=3D 0)=0A- s= tate->size =3D MIN=5FRANDBUF=5FSIZE * AVG=5FITR=5FRNDBTS;=0A- else if (iter= > MAX=5FRANDBUF=5FSIZE)=0A- state->size =3D MAX=5FRANDBUF=5FSIZE * AVG=5F= ITR=5FRNDBTS;=0A- else=0A- state->size =3D iter * AVG=5FITR=5FRNDBTS;=0A-= =0A- state->mt =3D ffsb=5Fmalloc(state->size);=0A-=0A- /* !!!! racy? add pt= hread=5Fonce stuff later */=0A- if ((randfd < 0) && (randfd =3D open(RANDS= RC, O=5FRDONLY)) < 0) {=0A- perror("open " RANDSRC);=0A- exit(1);=0A- }= =0A- sgenrand(state);=0A- gettimeofday(&time, NULL);=0A-#ifdef HAVE=5FLRAND= 48=0A- srand48=5Fr(time.tv=5Fsec, &state->data);=0A-#endif=0A-}=0A-=0A-void= destroy=5Frandom(randdata=5Ft * rd)=0A-{=0A- free(rd->mt);=0A-}=0A-=0A-/*= =0A- * I've taken the liberty of slightly redesigning this stuff.=0A- * Ins= tead of simply getting the full word of random bits=0A- * and throwing away= most of it using the mod operator,=0A- * we should only get byte-sized chu= nks of random bits and=0A- * construct our random number that way with less= wasteage - SR=0A- */=0A-uint32=5Ft getrandom(randdata=5Ft * state, uint32= =5Ft mod)=0A-{=0A-=0A- uint8=5Ft bytes[4] =3D { 0, 0, 0, 0 };=0A- uint32=5F= t ret;=0A- int num=5Fbytes =3D 4;=0A- int i;=0A-=0A- if ((mod =3D=3D 0) || = (mod =3D=3D 1))=0A- return 0;=0A-=0A- if (!(mod >> 8))=0A- num=5Fbytes = =3D 1;=0A- else if (!(mod >> 16))=0A- num=5Fbytes =3D 2;=0A- else if (!(mo= d >> 24))=0A- num=5Fbytes =3D 3;=0A-=0A- for (i =3D 0; i < num=5Fbytes; i+= +)=0A- bytes[i] =3D genrand8(state);=0A-=0A- ret =3D (bytes[3] << 24) + (b= ytes[2] << 16) + (bytes[1] << 8) + bytes[0];=0A-=0A- return ret % mod;=0A-}= =0A-=0A-uint64=5Ft getllrandom(randdata=5Ft * state, uint64=5Ft mod)=0A-{= =0A- uint64=5Ft result =3D 0;=0A- uint64=5Ft high =3D 0;=0A- uint32=5Ft low= =3D 0;=0A-=0A- if (mod =3D=3D 0)=0A- return 0;=0A-=0A- /* ULONG=5FMAX com= es from limits.h */=0A- if (mod < ULONG=5FMAX)=0A- return (uint64=5Ft) get= random(state, (uint32=5Ft) mod);=0A-=0A- high =3D genrand32(state);=0A-=0A-= low =3D genrand32(state);=0A-=0A- result =3D high << 32;=0A- result |=3D (= uint64=5Ft) low;=0A-=0A- assert(result !=3D 0);=0A- assert(result > 0);=0A-= =0A- return result % mod;=0A-}=0Adiff --git a/testcases/kernel/fs/ext4-new-= features/ffsb-6.0-rc2/rand.h b/testcases/kernel/fs/ext4-new-features/ffsb-6= .0-rc2/rand.h=0Adeleted file mode 100644=0Aindex 3abfdec..0000000=0A--- a/t= estcases/kernel/fs/ext4-new-features/ffsb-6.0-rc2/rand.h=0A+++ /dev/null=0A= @@ -1,60 +0,0 @@=0A-/*=0A- * Copyright (c) International Business Machine= s Corp., 2001-2004=0A- *=0A- * This program is free software; you can re= distribute it and/or modify=0A- * it under the terms of the GNU General P= ublic License as published by=0A- * the Free Software Foundation; either = version 2 of the License, or=0A- * (at your option) any later version.=0A= - *=0A- * This program is distributed in the hope that it will be useful,= =0A- * but WITHOUT ANY WARRANTY; without even the implied warranty of=0A= - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See=0A- * the= GNU General Public License for more details.=0A- *=0A- * You should have= received a copy of the GNU General Public License=0A- * along with this = program; if not, write to the Free Software=0A- * Foundation, Inc., 51 F= ranklin Street, Fifth Floor, Boston, MA 02110-1301 USA=0A- */=0A-#ifndef = =5FMTINT=5FH=5F=0A-#define =5FMTINT=5FH=5F=0A-=0A-#include "config.h"=0A-= =0A-#include =0A-#include =0A-#include = =0A-=0A-/* A guess of how many random bytes (not bits) */=0A-/* will be con= sumed per iteration */=0A-/* This is multiplied by the iteration count */= =0A-/* to get the size of the array in init=5Frandom() */=0A-#define AVG=5F= ITR=5FRNDBTS 2=0A-=0A-/* Set a cap on the size of the array, note this */= =0A-/* is multiplied by AVG=5FITR=5FRNDBTS */=0A-#define MAX=5FRANDBUF=5FSI= ZE (10 * 1024)=0A-=0A-#define MIN=5FRANDBUF=5FSIZE 1024=0A-=0A-=0A-typedef = struct randdata {=0A- int size;=0A- uint8=5Ft *mt; /* the array of random b= its */=0A- int mti; /* mti=3D=3DN+1 means mt[N] is not initialized */=0A-= =0A- /* fallback random source, lrand48=5Fr() */=0A-#ifdef HAVE=5FLRAND48= =5FR=0A- struct drand48=5Fdata data;=0A-#endif=0A-} randdata=5Ft;=0A-=0A-ui= nt32=5Ft getrandom(randdata=5Ft *rd, uint32=5Ft mod);=0A-uint64=5Ft getllra= ndom(randdata=5Ft *rd, uint64=5Ft mod);=0A-=0A-/* pass in thread-local stat= e, and est. number of "uses" */=0A-/* pass in 0 for size if size is unknown= /not important */=0A-void init=5Frandom(randdata=5Ft *state, uint32=5Ft siz= e);=0A-void destroy=5Frandom(randdata=5Ft *rd);=0A-void randcleanup(void);= =0A-=0A-#endif=0Adiff --git a/testcases/kernel/fs/ext4-new-features/ffsb-6.= 0-rc2/rbt.c b/testcases/kernel/fs/ext4-new-features/ffsb-6.0-rc2/rbt.c=0Ade= leted file mode 100644=0Aindex e68e991..0000000=0A--- a/testcases/kernel/fs= /ext4-new-features/ffsb-6.0-rc2/rbt.c=0A+++ /dev/null=0A@@ -1,1063 +0,0 @@= =0A-/*=0A- * Copyright (c) International Business Machines Corp., 2001-20= 04=0A- *=0A- * This program is free software; you can redistribute it an= d/or modify=0A- * it under the terms of the GNU General Public License as= published by=0A- * the Free Software Foundation; either version 2 of the= License, or=0A- * (at your option) any later version.=0A- *=0A- * This= program is distributed in the hope that it will be useful,=0A- * but WIT= HOUT ANY WARRANTY; without even the implied warranty of=0A- * MERCHANTAB= ILITY or FITNESS FOR A PARTICULAR PURPOSE. See=0A- * the GNU General Pub= lic License for more details.=0A- *=0A- * You should have received a copy= of the GNU General Public License=0A- * along with this program; if not= , write to the Free Software=0A- * Foundation, Inc., 51 Franklin Street, = Fifth Floor, Boston, MA 02110-1301 USA=0A- */=0A-#include =0A-#inc= lude =0A-#include =0A-#include "rbt.h"=0A-=0A-/*=0A- * = ***********************************************=0A- *=0A- * D.H. IBM, S. Ra= o=0A- *=0A- * Module: Operations executed on red-black struct=0A- *=0A- * *= **********************************************=0A- */=0A-=0A-/* Construct a= red-black tree node */=0A-=0A-rb=5Fnode *rbnode=5Fconstruct(datatype objec= t, rb=5Fcolor color)=0A-{=0A- rb=5Fnode *node =3D (rb=5Fnode *) malloc(size= of(rb=5Fnode));=0A- if (!node) {=0A- fprintf(stderr, "Memory Shortage - No= Execution Possible\n");=0A- return NULL;=0A- }=0A- node->object =3D objec= t;=0A- node->color =3D color;=0A- node->parent =3D node->right =3D node->le= ft =3D NULL;=0A- return node;=0A-}=0A-=0A-/* Destructor of a red-black tree= node */=0A-=0A-void rbnode=5Fdestruct(rb=5Fnode * node, destructor d)=0A-{= =0A- if (!node)=0A- return;=0A- if (d !=3D NULL)=0A- d(node->object);=0A-= rbnode=5Fdestruct(node->right, d);=0A- rbnode=5Fdestruct(node->left, d);= =0A- free(node);=0A-}=0A-=0A-/* Determine the depth of the subtree spanned = by a given node */=0A-=0A-int rbnode=5Fdepth(rb=5Fnode * node)=0A-{=0A- /* = Recursively determine the depth of the left and right=0A- * subtrees=0A- = */=0A- int irightdepth =3D (node->right) ? rbnode=5Fdepth(node->right) : 0;= =0A- int ileftdepth =3D (node->left) ? rbnode=5Fdepth(node->left) : 0;=0A-= =0A- /* Return the maximal child depth + 1 (the current node) */=0A- return= ((irightdepth >=0A- ileftdepth) ? (irightdepth + 1) : (ileftdepth + 1));= =0A-}=0A-=0A-/* Return the leftmost leaf in the tree */=0A-=0A-rb=5Fnode *r= bnode=5Fminimum(rb=5Fnode * node)=0A-{=0A- while (node->left)=0A- node =3D= node->left;=0A- return node;=0A-}=0A-=0A-/* Return the rightmost leaf in t= he tree */=0A-=0A-rb=5Fnode *rbnode=5Fmaximum(rb=5Fnode * node)=0A-{=0A- wh= ile (node->right)=0A- node =3D node->right;=0A- return node;=0A-}=0A-=0A-/= * Replace an object */=0A-=0A-void rbnode=5Freplace(rb=5Fnode * node, datat= ype object)=0A-{=0A- /* Make sure the replacement does not violate the tree= order=0A- * Replace the object at the node=0A- */=0A- node->object =3D o= bject;=0A-}=0A-=0A-/* Get the next node in the tree (according to the tree = order) */=0A-=0A-rb=5Fnode *rbnode=5Fsuccessor(rb=5Fnode * node)=0A-{=0A- r= b=5Fnode *succ=5Fnode;=0A-=0A- if (node->right) {=0A-=0A- /* If there is a= right child, the successor is the=0A- * minimal object in the sub-tree s= panned by this=0A- * child.=0A- */=0A-=0A- succ=5Fnode =3D node->right= ;=0A- while (succ=5Fnode->left)=0A- succ=5Fnode =3D succ=5Fnode->left;= =0A- } else {=0A-=0A- /* Otherwise, go up the tree until reaching the pare= nt=0A- * from the left direction.=0A- */=0A-=0A- rb=5Fnode *prev=5Fnod= e =3D node;=0A- succ=5Fnode =3D node->parent;=0A- while (succ=5Fnode && p= rev=5Fnode =3D=3D succ=5Fnode->right) {=0A- prev=5Fnode =3D succ=5Fnode;= =0A- succ=5Fnode =3D succ=5Fnode->parent;=0A- }=0A- }=0A-=0A- return (su= cc=5Fnode);=0A-}=0A-=0A-/* Get the previous node in the tree (according to = the tree order) */=0A-=0A-rb=5Fnode *rbnode=5Fpredecessor(rb=5Fnode * node)= =0A-{=0A- rb=5Fnode *pred=5Fnode;=0A-=0A- if (node->left) {=0A-=0A- /* If = there is a left child, the predecessor is the=0A- * maximal object in the= sub-tree spanned by this=0A- * child.=0A- */=0A-=0A- pred=5Fnode =3D = node->left;=0A- while (pred=5Fnode->right)=0A- pred=5Fnode =3D pred=5Fno= de->right;=0A- } else {=0A-=0A- /* Otherwise, go up the tree until reachin= g the parent=0A- * from the right direction.=0A- */=0A-=0A- rb=5Fnode = *prev=5Fnode =3D node;=0A- pred=5Fnode =3D node->parent;=0A- while (pred= =5Fnode && prev=5Fnode =3D=3D pred=5Fnode->left) {=0A- prev=5Fnode =3D pr= ed=5Fnode;=0A- pred=5Fnode =3D pred=5Fnode->parent;=0A- }=0A- }=0A-=0A- = return (pred=5Fnode);=0A-}=0A-=0A-/* Return a pointer to a duplication of t= he given node */=0A-=0A-rb=5Fnode *rbnode=5Fduplicate(rb=5Fnode * node)=0A-= {=0A- /* Create a node of the same color, containing the same=0A- * object= =0A- */=0A- rb=5Fnode *dup=5Fnode =3D rbnode=5Fconstruct(node->object, nod= e->color);=0A- if (!dup=5Fnode)=0A- return NULL;=0A-=0A- /* Duplicate the = children recursively */=0A- if (node->right) {=0A- dup=5Fnode->right =3D r= bnode=5Fduplicate(node->right);=0A- dup=5Fnode->right->parent =3D dup=5Fno= de;=0A- } else {=0A- dup=5Fnode->right =3D NULL;=0A- }=0A-=0A- if (node->l= eft) {=0A- dup=5Fnode->left =3D rbnode=5Fduplicate(node->left);=0A- dup= =5Fnode->left->parent =3D dup=5Fnode;=0A- } else {=0A- dup=5Fnode->left = =3D NULL;=0A- }=0A-=0A- return dup=5Fnode; /* Return the duplicated node */= =0A-}=0A-=0A-/* Traverse a red-black subtree */=0A-=0A-void rbnode=5Ftraver= se(rb=5Fnode * node, opr * op)=0A-{=0A- if (!node)=0A- return;=0A- rbnode= =5Ftraverse(node->left, op);=0A- op(node->object);=0A- rbnode=5Ftraverse(no= de->right, op);=0A-}=0A-=0A-/*=0A- * ***********************************=0A= - *=0A- * Operations on rb=5Ftree struct=0A- *=0A- * **********************= *************=0A- */=0A-=0A-/* Intialize a tree */=0A-void rbtree=5Finit(rb= =5Ftree * tree)=0A-{=0A-/* tree->comp =3D comp; */=0A- tree->isize =3D 0;= =0A- tree->root =3D NULL;=0A-}=0A-=0A-/* Construct a tree given a compariso= n function */=0A-=0A-rb=5Ftree *rbtree=5Fconstruct()=0A-{=0A- rb=5Ftree *tr= ee =3D (rb=5Ftree *) malloc(sizeof(rb=5Ftree));=0A- if (!tree) {=0A- fprin= tf(stderr, "Memory Issue - Shortge Exists!\n");=0A- return NULL;=0A- }=0A-= rbtree=5Finit(tree);=0A- return tree;=0A-}=0A-=0A-/* Remove all objects fr= om a black-red tree */=0A-=0A-void rbtree=5Fclean(rb=5Ftree * tree, destruc= tor d)=0A-{=0A- if (tree->root)=0A- rbnode=5Fdestruct(tree->root, d);=0A- = tree->root =3D NULL;=0A- tree->isize =3D 0;=0A-}=0A-=0A-/* Destruct a red-b= lack tree */=0A-=0A-void rbtree=5Fdestruct(rb=5Ftree * tree, destructor d)= =0A-{=0A- rbtree=5Fclean(tree, d);=0A- free(tree);=0A-}=0A-=0A-/* Returns t= he size of the tree */=0A-=0A-int rbtree=5Fsize(rb=5Ftree * tree)=0A-{=0A- = return tree->isize;=0A-}=0A-=0A-/* Returns the depth of the tree */=0A-=0A-= int rbtree=5Fdepth(rb=5Ftree * tree)=0A-{=0A- if (!(tree->root))=0A- retur= n 0;=0A- return rbnode=5Fdepth(tree->root);=0A-}=0A-=0A-/* Check whether th= e tree contains a certain object */=0A-=0A-int rbtree=5Fcontains(rb=5Ftree = * tree, datatype object)=0A-{=0A- return (rbtree=5Ffind(tree, object) !=3D = NULL);=0A-}=0A-=0A-/* Insert an object into the rb-tree */=0A-=0A-rb=5Fnode= *rbtree=5Finsert(rb=5Ftree * tree, datatype object)=0A-{=0A- rb=5Fnode *cu= r=5Fnode;=0A- rb=5Fnode *new=5Fnode;=0A- int comp=5Fresult =3D 0;=0A-=0A- i= f (!(tree->root)) {=0A- /* Assign a new root node (the root is always=0A- = * black)=0A- */=0A- new=5Fnode =3D rbnode=5Fconstruct(object, black);= =0A- if (!new=5Fnode)=0A- return NULL;=0A- tree->root =3D new=5Fnode;= =0A- tree->isize =3D 1;=0A- return new=5Fnode;=0A- }=0A-=0A- /* Find a sp= ot for the new object, insert the object as a red=0A- * leaf=0A- */=0A-= =0A- cur=5Fnode =3D tree->root;=0A- new=5Fnode =3D rbnode=5Fconstruct(objec= t, red);=0A- if (!new=5Fnode)=0A- return NULL;=0A-=0A- while (cur=5Fnode) = {=0A- /* Compare inserted object with the object stored in=0A- * the cur= rent node=0A- */=0A- comp=5Fresult =3D COMP=5FNODES(object, cur=5Fnode->= object);=0A- if (comp=5Fresult =3D=3D 0) {=0A- printf=0A- ("Attemp= ted to insert duplicate node, aborting\n");=0A- free(new=5Fnode);=0A- r= eturn NULL;=0A- }=0A- if (comp=5Fresult > 0) {=0A- if (!(cur=5Fnode->le= ft)) {=0A- /* Insert the new leaf as the left=0A- * child of the cur= rent node=0A- */=0A- cur=5Fnode->left =3D new=5Fnode;=0A- new=5Fn= ode->parent =3D cur=5Fnode;=0A- cur=5Fnode =3D NULL; /* Terminate the wh= ile loop */=0A- } else {=0A- /* Go to the left subtree */=0A- cur= =5Fnode =3D cur=5Fnode->left;=0A- }=0A- } else {=0A- if (!(cur=5Fnode-= >right)) {=0A- /* Insert the new leaf as the right=0A- * child of th= e current node=0A- */=0A- cur=5Fnode->right =3D new=5Fnode;=0A- n= ew=5Fnode->parent =3D cur=5Fnode;=0A- cur=5Fnode =3D NULL; /* Terminate = the while loop */=0A- } else {=0A- /* Go to the right subtree */=0A- = cur=5Fnode =3D cur=5Fnode->right;=0A- }=0A- }=0A- }=0A-=0A- /* Mark th= e fact that a new node was added */=0A- tree->isize++;=0A-=0A- /* Fix the t= ree properties */=0A- rbtree=5Finsert=5Ffixup(tree, new=5Fnode);=0A-=0A- re= turn new=5Fnode;=0A-}=0A-=0A-/* Insert a new object to the tree as the a su= ccessor of a given=0A- * node=0A- */=0A-=0A-rb=5Fnode *insert=5Fsuccessor= =5Fat(rb=5Ftree * tree, rb=5Fnode * at=5Fnode, datatype object)=0A-{=0A- rb= =5Fnode *parent;=0A- rb=5Fnode *new=5Fnode;=0A-=0A- if (!(tree->root)) {=0A= - /* Assign a new root node (the root is always=0A- * black)=0A- */=0A= - new=5Fnode =3D rbnode=5Fconstruct(object, black);=0A- if (!new=5Fnode)= =0A- return NULL;=0A- tree->root =3D new=5Fnode;=0A- tree->isize =3D 1;= =0A- return new=5Fnode;=0A- }=0A-=0A- /* Insert the new object as a red le= af, being the successor of=0A- * node=0A- */=0A- new=5Fnode =3D rbnode=5F= construct(object, red);=0A- if (!new=5Fnode)=0A- return NULL;=0A-=0A- if (= !at=5Fnode) {=0A- /* The new node should become the tree's minimum Place= =0A- * is as the left child of the current minimal leaf=0A- */=0A- par= ent =3D rbnode=5Fminimum(tree->root);=0A- parent->left =3D new=5Fnode;=0A-= } else {=0A- /* Make sure the insertion does not violate the tree=0A- *= order In case given node has no right child, place=0A- * the new node as= its right child. Otherwise, place=0A- * it at the leftmost position at t= he sub-tree rooted=0A- * at its right side.=0A- */=0A- if (!at=5Fnode-= >right) {=0A- parent =3D at=5Fnode;=0A- parent->right =3D new=5Fnode;= =0A- } else {=0A- parent =3D rbnode=5Fminimum(at=5Fnode->right);=0A- p= arent->left =3D new=5Fnode;=0A- }=0A- }=0A-=0A- new=5Fnode->parent =3D par= ent;=0A-=0A- /* Mark that a new node was added */=0A- tree->isize++;=0A-=0A= - /* Fix the tree properties */=0A- rbtree=5Finsert=5Ffixup(tree, new=5Fnod= e);=0A-=0A- return new=5Fnode;=0A-}=0A-=0A-/* Insert a new object to the tr= ee as the a predecessor of a given node */=0A-=0A-rb=5Fnode *insert=5Fprede= cessor=5Fat(rb=5Ftree * tree, rb=5Fnode * at=5Fnode,=0A- datatype = object)=0A-{=0A- rb=5Fnode *parent;=0A- rb=5Fnode *new=5Fnode;=0A-=0A- if (= !(tree->root)) {=0A- /* Assign a new root node (the root is always=0A- *= black)=0A- */=0A- new=5Fnode =3D rbnode=5Fconstruct(object, black);=0A-= if (!new=5Fnode)=0A- return NULL;=0A- tree->root =3D new=5Fnode;=0A- = tree->isize =3D 1;=0A- return new=5Fnode;=0A- }=0A-=0A- /* Insert the new = object as a red leaf, being the predecessor=0A- * of at=5Fnode=0A- */=0A-= new=5Fnode =3D rbnode=5Fconstruct(object, red);=0A- if (!new=5Fnode)=0A- = return NULL;=0A-=0A- if (!at=5Fnode) {=0A- /* The new node should become t= he tree maximum. Place=0A- * is as the right child of the current maximal= leaf=0A- */=0A- parent =3D rbnode=5Fmaximum(tree->root);=0A- parent->r= ight =3D new=5Fnode;=0A- } else {=0A- /* Make sure the insertion does not = violate the tree=0A- * order In case given node has no left child, place= =0A- * the new node as its left child. Otherwise, place it=0A- * at the= rightmost position at the sub-tree rooted at=0A- * its left side.=0A- = */=0A- if (!(at=5Fnode->left)) {=0A- parent =3D at=5Fnode;=0A- parent-= >left =3D new=5Fnode;=0A- } else {=0A- parent =3D rbnode=5Fmaximum(at=5F= node->left);=0A- parent->right =3D new=5Fnode;=0A- }=0A- }=0A-=0A- new= =5Fnode->parent =3D parent;=0A-=0A- /* Mark that a new node was added */=0A= - tree->isize++;=0A-=0A- /* Fix the tree properties */=0A- rbtree=5Finsert= =5Ffixup(tree, new=5Fnode);=0A-=0A- return new=5Fnode;=0A-}=0A-=0A-/* Remov= e an object from the tree */=0A-=0A-void rbtree=5Fremove(rb=5Ftree * tree, = datatype object, destructor d)=0A-{=0A- rb=5Fnode *node =3D rbtree=5Ffind(t= ree, object); /* Find the node */=0A- rbtree=5Fremove=5Fat(tree, node, d); = /* Remove the node */=0A-}=0A-=0A-/* Remove the object pointed by the given= node. */=0A-=0A-void rbtree=5Fremove=5Fat(rb=5Ftree * tree, rb=5Fnode * no= de, destructor d)=0A-{=0A- rb=5Fnode *child =3D NULL;=0A-=0A- /* In case of= deleting the single object stored in the tree,=0A- * free the root, thus = emptying the tree=0A- */=0A- if (tree->isize =3D=3D 1) {=0A- rbnode=5Fdes= truct(tree->root, d);=0A- tree->root =3D NULL;=0A- tree->isize =3D 0;=0A-= return;=0A- }=0A-=0A- /* Remove the given node from the tree */=0A- if (n= ode->left && node->right) {=0A- /* If the node we want to remove has two c= hildren,=0A- * find its successor, which is the leftmost child in=0A- *= its right sub-tree and has at most one child (it=0A- * may have a right = child).=0A- */=0A- rb=5Fnode *succ=5Fnode =3D rbnode=5Fminimum(node->rig= ht);=0A-=0A- /* Now physically swap node and its successor. Notice=0A- *= this may temporarily violate the tree properties,=0A- * but we are going= to remove node anyway. This way=0A- * we have moved node to a position = were it is more=0A- * convinient to delete it.=0A- */=0A- int immediat= e=5Fsucc =3D (node->right =3D=3D succ=5Fnode);=0A- rb=5Fnode *succ=5Fparen= t =3D succ=5Fnode->parent;=0A- rb=5Fnode *succ=5Fleft =3D succ=5Fnode->lef= t;=0A- rb=5Fnode *succ=5Fright =3D succ=5Fnode->right;=0A- rb=5Fcolor suc= c=5Fcolor =3D succ=5Fnode->color;=0A-=0A- succ=5Fnode->parent =3D node->pa= rent;=0A- succ=5Fnode->left =3D node->left;=0A- succ=5Fnode->right =3D im= mediate=5Fsucc ? node : node->right;=0A- succ=5Fnode->color =3D node->colo= r;=0A-=0A- node->parent =3D immediate=5Fsucc ? succ=5Fnode : succ=5Fparent= ;=0A- node->left =3D succ=5Fleft;=0A- node->right =3D succ=5Fright;=0A- = node->color =3D succ=5Fcolor;=0A-=0A- if (!immediate=5Fsucc) {=0A- if (s= ucc=5Fnode =3D=3D node->parent->left)=0A- node->parent->left =3D node;= =0A- else=0A- node->parent->right =3D node;=0A- }=0A-=0A- if (node->= left)=0A- node->left->parent =3D node;=0A- if (node->right)=0A- node->= right->parent =3D node;=0A-=0A- if (succ=5Fnode->parent) {=0A- if (node = =3D=3D succ=5Fnode->parent->left)=0A- succ=5Fnode->parent->left =3D succ= =5Fnode;=0A- else=0A- succ=5Fnode->parent->right =3D succ=5Fnode;=0A- = } else {=0A- tree->root =3D succ=5Fnode;=0A- }=0A-=0A- if (succ=5Fnode= ->left)=0A- succ=5Fnode->left->parent =3D succ=5Fnode;=0A- if (succ=5Fno= de->right)=0A- succ=5Fnode->right->parent =3D succ=5Fnode;=0A- }=0A-=0A- = /* At this stage, the node we are going to remove has at most=0A- * one ch= ild=0A- */=0A- child =3D (node->left) ? node->left : node->right;=0A-=0A- = /* Splice out the node to be removed, by linking its parent=0A- * straight= to the removed node's single child.=0A- */=0A- if (child)=0A- child->par= ent =3D node->parent;=0A-=0A- if (!(node->parent)) {=0A- /* If we are dele= ting the root, make the child the new=0A- * tree node=0A- */=0A- tree-= >root =3D child;=0A- } else {=0A- /* Link the removed node parent to its c= hild */=0A- if (node =3D=3D node->parent->left)=0A- node->parent->left = =3D child;=0A- else=0A- node->parent->right =3D child;=0A- }=0A-=0A- /* = Fix-up the red-black properties that may have been damaged:=0A- * If we ha= ve just removed a black node, the black-depth=0A- * property is no longer = valid=0A- */=0A- if (node->color =3D=3D black && child)=0A- rbtree=5Fremo= ve=5Ffixup(tree, child);=0A-=0A- /* Delete the un-necessary node (nullify b= oth its children=0A- * because the node's destructor is recursive).=0A- *= /=0A- node->left =3D NULL;=0A- node->right =3D NULL;=0A- free(node);=0A-=0A= - /* Decrease the number of objects in the tree */=0A- tree->isize--;=0A-}= =0A-=0A-/* Get the tree minimum */=0A-=0A-rb=5Fnode *rbtree=5Fminimum(rb=5F= tree * tree)=0A-{=0A- if (!(tree->root))=0A- return NULL;=0A-=0A- /* Retur= n the leftmost leaf in the tree */=0A- return rbnode=5Fminimum(tree->root);= =0A-}=0A-=0A-/* Get the tree maximum */=0A-=0A-rb=5Fnode *rbtree=5Fmaximum(= rb=5Ftree * tree)=0A-{=0A- if (!(tree->root))=0A- return NULL;=0A-=0A- /* = Return the rightmost leaf in the tree */=0A- return rbnode=5Fmaximum(tree->= root);=0A-}=0A-=0A-/* Return a pointer to the node containing the given obj= ect */=0A-=0A-rb=5Fnode *rbtree=5Ffind(rb=5Ftree * tree, datatype object)= =0A-{=0A- rb=5Fnode *cur=5Fnode =3D tree->root;=0A- int comp=5Fresult;=0A-= =0A- while (cur=5Fnode) {=0A- comp=5Fresult =3D COMP=5FNODES(object, cur= =5Fnode->object);=0A- /* In case of equality, we can return the current=0A= - * node.=0A- */=0A- if (comp=5Fresult =3D=3D 0)=0A- return cur=5Fno= de;=0A- /* Go down to the left or right child. */=0A- cur=5Fnode =3D (com= p=5Fresult > 0) ? cur=5Fnode->left : cur=5Fnode->right;=0A- }=0A-=0A- /* If= we get here, the object is not in the tree */=0A- return NULL;=0A-}=0A-=0A= -void rbtree=5Frotate=5Fleft(rb=5Ftree * tree, rb=5Fnode * x=5Fnode)=0A-{= =0A- /* Get the right child of the node */=0A- rb=5Fnode *y=5Fnode =3D x=5F= node->right;=0A-=0A- /* Change its left subtree (T2) to x's right subtree *= /=0A- x=5Fnode->right =3D y=5Fnode->left;=0A-=0A- /* Link T2 to its new par= ent x */=0A- if (y=5Fnode->left !=3D NULL)=0A- y=5Fnode->left->parent =3D = x=5Fnode;=0A-=0A- /* Assign x's parent to be y's parent */=0A- y=5Fnode->pa= rent =3D x=5Fnode->parent;=0A-=0A- if (!(x=5Fnode->parent)) {=0A- /* Make = y the new tree root */=0A- tree->root =3D y=5Fnode;=0A- } else {=0A- /* A= ssign a pointer to y from x's parent */=0A- if (x=5Fnode =3D=3D x=5Fnode->= parent->left)=0A- x=5Fnode->parent->left =3D y=5Fnode;=0A- else=0A- x= =5Fnode->parent->right =3D y=5Fnode;=0A- }=0A-=0A- /* Assign x to be y's le= ft child */=0A- y=5Fnode->left =3D x=5Fnode;=0A- x=5Fnode->parent =3D y=5Fn= ode;=0A-}=0A-=0A-/* Right-rotate the sub-tree spanned by the given node */= =0A-=0A-void rbtree=5Frotate=5Fright(rb=5Ftree * tree, rb=5Fnode * y=5Fnode= )=0A-{=0A- /* Get the left child of the node */=0A- rb=5Fnode *x=5Fnode =3D= y=5Fnode->left;=0A-=0A- /* Change its right subtree (T2) to y's left subtr= ee */=0A- y=5Fnode->left =3D x=5Fnode->right;=0A-=0A- /* Link T2 to its new= parent y */=0A- if (x=5Fnode->right !=3D NULL)=0A- x=5Fnode->right->paren= t =3D y=5Fnode;=0A-=0A- /* Assign y's parent to be x's parent */=0A- x=5Fno= de->parent =3D y=5Fnode->parent;=0A-=0A- if (!(y=5Fnode->parent)) {=0A- /*= Make x the new tree root */=0A- tree->root =3D x=5Fnode;=0A- } else {=0A-= /* Assign a pointer to x from y's parent */=0A- if (y=5Fnode =3D=3D y=5F= node->parent->left)=0A- y=5Fnode->parent->left =3D x=5Fnode;=0A- else=0A= - y=5Fnode->parent->right =3D x=5Fnode;=0A- }=0A-=0A- /* Assign y to be x= 's right child */=0A- x=5Fnode->right =3D y=5Fnode;=0A- y=5Fnode->parent = =3D x=5Fnode;=0A-}=0A-=0A-/* Fix the tree so it maintains the red-black pro= perties after an insert */=0A-=0A-void rbtree=5Finsert=5Ffixup(rb=5Ftree * = tree, rb=5Fnode * node)=0A-{=0A- /* Fix the red-black propreties. We may ha= ve inserted a red=0A- * leaf as the child of a red parent - so we have to = fix the=0A- * coloring of the parent recursively.=0A- */=0A- rb=5Fnode *c= urr=5Fnode =3D node;=0A- rb=5Fnode *grandparent;=0A- rb=5Fnode *uncle;=0A-= =0A- assert(node && node->color =3D=3D red);=0A-=0A- while (curr=5Fnode != =3D tree->root && curr=5Fnode->parent->color =3D=3D red) {=0A- /* Get a po= inter to the current node's grandparent=0A- * (the root is always black, = so the red parent must=0A- * have a parent).=0A- */=0A-=0A- grandparen= t =3D curr=5Fnode->parent->parent;=0A-=0A- if (curr=5Fnode->parent =3D=3D = grandparent->left) {=0A- /* If the red parent is a left child, the=0A- = * uncle is the right child of the grandparent.=0A- */=0A- uncle =3D g= randparent->right;=0A-=0A- if (uncle && uncle->color =3D=3D red) {=0A-=0A= - /* If both parent and uncle are red,=0A- * color them black and co= lor the=0A- * grandparent red. In case of a NULL=0A- * uncle, treat= it as a black node=0A- */=0A- curr=5Fnode->parent->color =3D black;= =0A- uncle->color =3D black;=0A- grandparent->color =3D red;=0A-=0A- = /* Move to the grandparent */=0A- curr=5Fnode =3D grandparent;=0A- = } else {=0A- /* Make sure the current node is a=0A- * right child. I= f not, left-rotate the=0A- * parent's sub-tree so the parent=0A- * = becomes the right child of the=0A- * current node (see =5Frotate=5Fleft= ).=0A- */=0A- if (curr=5Fnode =3D=3D curr=5Fnode->parent->right) {= =0A- curr=5Fnode =3D curr=5Fnode->parent;=0A- rbtree=5Frotate=5Flef= t(tree, curr=5Fnode);=0A- }=0A-=0A- /* Color the parent black and the= =0A- * grandparent red=0A- */=0A- curr=5Fnode->parent->color =3D= black;=0A- grandparent->color =3D red;=0A-=0A- /* Right-rotate the g= randparent's=0A- * sub-tree=0A- */=0A- rbtree=5Frotate=5Fright(t= ree, grandparent);=0A- }=0A- } else {=0A- /* If the red parent is a ri= ght child, the=0A- * uncle is the left child of the grandparent.=0A- = */=0A- uncle =3D grandparent->left;=0A-=0A- if (uncle && uncle->color = =3D=3D red) {=0A- /* If both parent and uncle are red,=0A- * color t= hem black and color the=0A- * grandparent red. In case of a NULL=0A- = * uncle, treat it as a black node=0A- */=0A- curr=5Fnode->parent->= color =3D black;=0A- uncle->color =3D black;=0A- grandparent->color = =3D red;=0A-=0A- /* Move to the grandparent */=0A- curr=5Fnode =3D gr= andparent;=0A- } else {=0A- /* Make sure the current node is a=0A- = * left child. If not, right-rotate=0A- * the parent's sub-tree so the = parent=0A- * becomes the left child of the=0A- * current node.=0A- = */=0A- if (curr=5Fnode =3D=3D curr=5Fnode->parent->left) {=0A- c= urr=5Fnode =3D curr=5Fnode->parent;=0A- rbtree=5Frotate=5Fright(tree, c= urr=5Fnode);=0A- }=0A-=0A- /* Color the parent black and the=0A- = * grandparent red=0A- */=0A- curr=5Fnode->parent->color =3D black;= =0A- grandparent->color =3D red;=0A-=0A- /* Left-rotate the grandpare= nt's=0A- * sub-tree=0A- */=0A- rbtree=5Frotate=5Fleft(tree, gran= dparent);=0A- }=0A- }=0A- }=0A-=0A- /* Make sure that the root is black = */=0A- tree->root->color =3D black;=0A-}=0A-=0A-void rbtree=5Fremove=5Ffixu= p(rb=5Ftree * tree, rb=5Fnode * node)=0A-{=0A- rb=5Fnode *curr=5Fnode =3D n= ode;=0A- rb=5Fnode *sibling;=0A-=0A- while (curr=5Fnode !=3D tree->root && = curr=5Fnode->color =3D=3D black) {=0A- /* Get a pointer to the current nod= e's sibling (notice=0A- * that the node's parent must exist, since the no= de=0A- * is not the root).=0A- */=0A- if (curr=5Fnode =3D=3D curr=5Fno= de->parent->left) {=0A- /* If the current node is a left child, its=0A- = * sibling is the right child of the parent.=0A- */=0A- sibling =3D c= urr=5Fnode->parent->right;=0A-=0A- /* Check the sibling's color. Notice t= hat NULL=0A- * nodes are treated as if they are colored=0A- * black.= =0A- */=0A- if (sibling && sibling->color =3D=3D red) {=0A- /* In c= ase the sibling is red, color=0A- * it black and rotate. Then color=0A= - * the parent red (the grandparent is=0A- * now black)=0A- */= =0A- sibling->color =3D black;=0A- curr=5Fnode->parent->color =3D red= ;=0A- rbtree=5Frotate=5Fleft(tree, curr=5Fnode->parent);=0A- sibling = =3D curr=5Fnode->parent->right;=0A- }=0A-=0A- if (sibling &&=0A- = (!(sibling->left) || sibling->left->color =3D=3D black)=0A- && (!(sib= ling->right)=0A- || sibling->right->color =3D=3D black)) {=0A- /* If = the sibling has two black=0A- * children, color it red=0A- */=0A- = sibling->color =3D red;=0A- if (curr=5Fnode->parent->color =3D=3D red)= {=0A- /* If the parent is red, we=0A- * can safely color it black= =0A- * and terminate the fix=0A- * process.=0A- */=0A- c= urr=5Fnode->parent->color =3D black;=0A- /* In order to stop the while = loop */=0A- curr=5Fnode =3D tree->root;=0A- } else {=0A- /* The = black depth of the=0A- * entire sub-tree rooted at=0A- * the pare= nt is now too small=0A- * - fix it up recursively.=0A- */=0A- = curr=5Fnode =3D curr=5Fnode->parent;=0A- }=0A- } else {=0A- if (!s= ibling) {=0A- /* Take special care of the=0A- * case of a NULL sib= ling=0A- */=0A- if (curr=5Fnode->parent->color =3D=3D red) {=0A- = curr=5Fnode->parent->color =3D=0A- black;=0A- /* In order= to stop=0A- * the while loop */=0A- curr=5Fnode =3D tree->root;= =0A- } else {=0A- curr=5Fnode =3D curr=5Fnode->parent;=0A- }= =0A- } else {=0A- /* In this case, at least one=0A- * of the si= bling's children=0A- * is red. It is therfore=0A- * obvious that= the sibling=0A- * itself is black.=0A- */=0A- if (sibling->r= ight=0A- && sibling->right->color =3D=3D red) {=0A- /* If the = right child=0A- * of the sibling is=0A- * red, color it black= =0A- * and rotate around=0A- * the current parent.=0A- */= =0A- sibling->right->color =3D black;=0A- rbtree=5Frotate=5Fleft(= tree,=0A- curr=5Fnode->=0A- parent);=0A- } else {= =0A- /* If the left child=0A- * of the sibling is=0A- * re= d, rotate around=0A- * the sibling, then=0A- * rotate around th= e=0A- * new sibling of our=0A- * current node.=0A- */=0A-= rbtree=5Frotate=5Fright(tree,=0A- sibling);=0A- sibli= ng =3D=0A- curr=5Fnode->parent->right;=0A- rbtree=5Frotate=5F= left(tree,=0A- sibling);=0A- }=0A-=0A- /* It is now safe = to color the=0A- * parent black and to=0A- * terminate the fix pr= ocess.=0A- */=0A- if (curr=5Fnode->parent->parent)=0A- curr= =5Fnode->parent->parent->=0A- color =3D=0A- curr=5Fnode->= parent->color;=0A- curr=5Fnode->parent->color =3D black;=0A- /* In = order to stop the while loop */=0A- curr=5Fnode =3D tree->root;=0A- = }=0A- }=0A- } else {=0A- /* If the current node is a right child, its= =0A- * sibling is the left child of the parent.=0A- */=0A- sibling = =3D curr=5Fnode->parent->left;=0A-=0A- /* Check the sibling's color. Noti= ce that NULL=0A- * nodes are treated as if they are colored=0A- * bla= ck.=0A- */=0A- if (sibling && sibling->color =3D=3D red) {=0A- /* I= n case the sibling is red, color=0A- * it black and rotate. Then color= =0A- * the parent red (the grandparent is=0A- * now black).=0A- = */=0A- sibling->color =3D black;=0A- curr=5Fnode->parent->color =3D = red;=0A- rbtree=5Frotate=5Fright(tree, curr=5Fnode->parent);=0A-=0A- = sibling =3D curr=5Fnode->parent->left;=0A- }=0A-=0A- if (sibling &&=0A-= (!(sibling->left) || sibling->left->color =3D=3D black)=0A- &&= (!(sibling->right)=0A- || sibling->right->color =3D=3D black)) {=0A- = /* If the sibling has two black children, color it red */=0A- sibling->= color =3D red;=0A- if (curr=5Fnode->parent->color =3D=3D red) {=0A- = /* If the parent is red, we=0A- * can safely color it black=0A- *= and terminate the fix-up=0A- * process.=0A- */=0A- curr=5Fno= de->parent->color =3D black;=0A- /* In order to stop the while=0A- = * loop=0A- */=0A- curr=5Fnode =3D tree->root;=0A- } else {=0A-= /* The black depth of the=0A- * entire sub-tree rooted at=0A- = * the parent is now too small=0A- * - fix it up recursively.=0A- = */=0A- curr=5Fnode =3D curr=5Fnode->parent;=0A- }=0A- } else {= =0A- if (!sibling) {=0A- /* Take special care of the=0A- * case= of a NULL sibling */=0A- if (curr=5Fnode->parent->color =3D=3D red) {= =0A- curr=5Fnode->parent->color =3D=0A- black;=0A- /* In= order to stop=0A- * the while loop */=0A- curr=5Fnode =3D tree-= >root;=0A- } else {=0A- curr=5Fnode =3D curr=5Fnode->parent;=0A- = }=0A- } else {=0A- /* In this case, at least one=0A- * of th= e sibling's children is=0A- * red. It is therfore obvious=0A- * = that the sibling itself is=0A- * black.=0A- */=0A- if (siblin= g->left=0A- && sibling->left->color =3D=3D red) {=0A- /* If th= e left child=0A- * of the sibling is=0A- * red, color it black= =0A- * and rotate around=0A- * the current parent=0A- */= =0A- sibling->left->color =3D black;=0A- rbtree=5Frotate=5Fright(= tree,=0A- curr=5Fnode->=0A- parent);=0A- } else {= =0A- /* If the right child=0A- * of the sibling is=0A- * r= ed, rotate around=0A- * the sibling, then=0A- * rotate around t= he=0A- * new sibling of our=0A- * current node=0A- */=0A-= rbtree=5Frotate=5Fleft(tree,=0A- sibling);=0A- sibling= =3D=0A- curr=5Fnode->parent->left;=0A- rbtree=5Frotate=5Frig= ht(tree,=0A- sibling);=0A- }=0A-=0A- /* It is now safe t= o color the=0A- * parent black and to=0A- * terminate the fix pro= cess.=0A- */=0A- if (curr=5Fnode->parent->parent)=0A- curr=5F= node->parent->parent->=0A- color =3D=0A- curr=5Fnode->par= ent->color;=0A- curr=5Fnode->parent->color =3D black;=0A- /* In ord= er to stop the while loop */=0A- curr=5Fnode =3D tree->root;=0A- }= =0A- }=0A- }=0A- }=0A-=0A- /* The root can always be colored black */=0A= - curr=5Fnode->color =3D black;=0A-}=0A-=0A-/* Traverse a red-black tree */= =0A-=0A-void rbtree=5Ftraverse(rb=5Ftree * tree, opr * op)=0A-{=0A- rbnode= =5Ftraverse(tree->root, op);=0A-}=0Adiff --git a/testcases/kernel/fs/ext4-n= ew-features/ffsb-6.0-rc2/rbt.h b/testcases/kernel/fs/ext4-new-features/ffsb= -6.0-rc2/rbt.h=0Adeleted file mode 100644=0Aindex 9495a7a..0000000=0A--- a/= testcases/kernel/fs/ext4-new-features/ffsb-6.0-rc2/rbt.h=0A+++ /dev/null=0A= @@ -1,316 +0,0 @@=0A-/*=0A- * Copyright (c) International Business Machin= es Corp., 2001-2004=0A- *=0A- * This program is free software; you can r= edistribute it and/or modify=0A- * it under the terms of the GNU General = Public License as published by=0A- * the Free Software Foundation; either= version 2 of the License, or=0A- * (at your option) any later version.= =0A- *=0A- * This program is distributed in the hope that it will be usef= ul,=0A- * but WITHOUT ANY WARRANTY; without even the implied warranty of= =0A- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See=0A- * = the GNU General Public License for more details.=0A- *=0A- * You should h= ave received a copy of the GNU General Public License=0A- * along with th= is program; if not, write to the Free Software=0A- * Foundation, Inc., 5= 1 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA=0A- */=0A-#ifndef= RED=5FBLACK=5FTREE=5FH=0A-#define RED=5FBLACK=5FTREE=5FH=0A-=0A-/*=0A- * *= **************************************************************************= =0A- *=0A- * Container class for a red-black tree ......=0A- *=0A- * A bina= ry tree that satisfies the following properties:=0A- *=0A- * 1. Every node = is either red or black=0A- * 2. The root node is black=0A- * 3. Every leaf = (NIL) is black=0A- * 4. If a node is red, both its children are black=0A- *= 5. For each node, all paths from the node to descendant leaf nodes=0A- * = contain the same number of black nodes=0A- *=0A- * Due to points 4 & 5, t= he depth of a red-black tree containing n nodes=0A- * is bounded by 2*log2(= n+1) (WC).=0A- *=0A- *=0A- * The rb=5Ftree template requires two additional= parmeters:=0A- *=0A- * - The contained TYPE class represents the objects s= tored in the tree.=0A- * It has to support the copy constructor and the a= ssignment operator (opr)=0A- * - cmp is a functor used to define the order = of objects of class TYPE:=0A- * This class has to support an operator() t= hat recieves two objects from=0A- * the TYPE class and returns a negative= , 0, or a positive integer,=0A- * depending on the comparison result.=0A-= *=0A- * Dominique Heger, S. Rao=0A- *=0A- * ******************************= *********************************************=0A- */=0A-=0A-/* Color enumer= ation for nodes of red-black tree */=0A-/* ********************************= ************* */=0A-=0A-#include "filelist.h"=0A-=0A-typedef struct ffsb=5F= file *datatype;=0A-=0A-#define COMP=5FNODES(a, b) ((a)->num - (b)->num)=0A-= =0A-typedef enum red=5Fblack=5Fcolor {red, black} rb=5Fcolor;=0A-=0A-/*! Re= presentation of a node in a red-black tree */=0A-typedef struct red=5Fblack= =5Fnode {=0A- datatype object; /* the stored object */= =0A- rb=5Fcolor color; /* the color of the node */=0A= - struct red=5Fblack=5Fnode *parent; /* points to the parent node */= =0A- struct red=5Fblack=5Fnode *right; /* points to the right child = */=0A- struct red=5Fblack=5Fnode *left; /* points to the left child= */=0A-} rb=5Fnode;=0A-=0A-typedef int(cmp)(datatype, datatype);=0A-typedef= void(opr)(void *);=0A-typedef void(destructor)(datatype);=0A-=0A-/* Constr= uct of a red-black tree node=0A- * - The object stored in the node=0A- * - = The color of the node=0A- */=0A-=0A-extern rb=5Fnode *rbnode=5Fconstruct(da= tatype object, rb=5Fcolor color);=0A-=0A-/* Recursive destructor for the en= tire sub-tree */=0A-/* ******************************************** */=0A-= =0A-extern void rbnode=5Fdestruct(rb=5Fnode *node, destructor d);=0A-=0A-/*= Calculate the depth of the sub-tree spanned by the given node=0A- * - The = sub-tree root=0A- * - The sub-tree depth=0A- */=0A-=0A-extern int rbnode=5F= depth(rb=5Fnode *node);=0A-=0A-/* Get the leftmost node in the sub-tree spa= nned by the given node=0A- * - The sub-tree root=0A- * - The sub-tree minim= um=0A- */=0A-=0A-extern rb=5Fnode *rbnode=5Fminimum(rb=5Fnode *node);=0A-= =0A-/* Get the rightmost node in the sub-tree spanned by the given node=0A-= * - The sub-tree root=0A- * - The sub-tree maximum=0A- */=0A-=0A-extern rb= =5Fnode *rbnode=5Fmaximum(rb=5Fnode *node);=0A-=0A-/* Replace the object */= =0A-/* ****************** */=0A-=0A-extern void rbnode=5Freplace(rb=5Fnode = *node, datatype object);=0A-=0A-/* Get the next node in the tree (according= to the tree order)=0A- * - The current node=0A- * - The successor node, or= NULL if node is the tree maximum=0A- */=0A-=0A-extern rb=5Fnode *rbnode=5F= successor(rb=5Fnode *node);=0A-=0A-/* Get the previous node in the tree (ac= cording to the tree order)=0A- * - The current node=0A- * - The predecessor= node, or NULL if node is the tree minimum=0A- */=0A-=0A-extern rb=5Fnode *= rbnode=5Fpredecessor(rb=5Fnode *node);=0A-=0A-/* Duplicate the entire sub-t= ree rooted at the given node=0A- * - The sub-tree root=0A- * - A pointer to= the duplicated sub-tree root=0A- */=0A-=0A-extern rb=5Fnode *rbnode=5Fdupl= icate(rb=5Fnode *node);=0A-=0A-/* Traverse a red-black sub-tree=0A- * - The= sub-tree root=0A- * - The operation to perform on each object in the sub-t= ree=0A- */=0A-extern void rbnode=5Ftraverse(rb=5Fnode *node, opr *op);=0A-= =0A-/* Representation of a red-black tree */=0A-/* ************************= ********** */=0A-=0A-typedef struct red=5Fblack=5Ftree {=0A- rb=5Fnode *roo= t; /* pointer to the tree root */=0A- int isize; = /* number of objects stored */=0A- /* cmp * comp; */ = /* compare function */=0A-} rb=5Ftree;=0A-=0A-/* Initialize a red-bl= ack tree with a comparision function=0A- * - The tree=0A- * - The comparisi= on function=0A- */=0A-=0A-void rbtree=5Finit(rb=5Ftree *tree);=0A-=0A-/* Co= nstruct a red-black tree with a comparison object=0A- * - A pointer to the = comparison object to be used by the tree=0A- * - The newly constructed tre= e=0A- */=0A-=0A-rb=5Ftree *rbtree=5Fconstruct(void);=0A-=0A-/* Clean a red-= black tree [takes O(n) operations]=0A- * - The tree=0A- */=0A-=0A-extern vo= id rbtree=5Fclean(rb=5Ftree *tree, destructor d);=0A-=0A-/* Destruct a red-= black tree=0A- * - The tree=0A- */=0A-=0A-extern void rbtree=5Fdestruct(rb= =5Ftree *tree, destructor d);=0A-=0A-/* Get the size of the tree [takes O(1= ) operations]=0A- * - The tree=0A- * - The number of objects stored in the = tree=0A- */=0A-=0A-extern int rbtree=5Fsize(rb=5Ftree *tree);=0A-=0A-/* Get= the depth of the tree [takes O(n) operations]=0A- * - The tree=0A- * - The= length of the longest path from the root to a leaf node=0A- */=0A-=0A-exte= rn int rbtree=5Fdepth(rb=5Ftree *tree);=0A-=0A-/* Check whether the tree co= ntains an object [takes O(log n) operations]=0A- * - The tree=0A- * - The q= uery object=0A- * - (true) if an equal object is found in the tree, otherwi= se (false)=0A- */=0A-=0A-extern int rbtree=5Fcontains(rb=5Ftree *tree, data= type object);=0A-=0A-/* Insert an object to the tree [takes O(log n) operat= ions]=0A- * - The tree=0A- * - The object to be inserted=0A- * - Return the= inserted object node=0A- */=0A-=0A-extern rb=5Fnode *rbtree=5Finsert(rb=5F= tree *tree, datatype object);=0A-=0A-/* Insert a new object to the tree as = the a successor of a given node=0A- * - The tree=0A- * - The new node=0A- *= /=0A-=0A-extern rb=5Fnode *insert=5Fsuccessor=5Fat(rb=5Ftree *tree, rb=5Fno= de *at=5Fnode,=0A- datatype object);=0A-=0A-/* Insert a new object t= o the tree as the a predecessor of a given node=0A- * - The tree=0A- * - Th= e new node=0A- */=0A-=0A-extern rb=5Fnode *insert=5Fpredecessor=5Fat(rb=5Ft= ree *tree, rb=5Fnode *at=5Fnode,=0A- datatype object);=0A-=0A-/* R= emove an object from the tree [takes O(log n) operations]=0A- * - The tree= =0A- * - The object to be removed=0A- * - The object should be contained in= the tree=0A- */=0A-=0A-extern void rbtree=5Fremove(rb=5Ftree *tree, dataty= pe object, destructor d);=0A-=0A-/* Get a handle to the tree minimum [takes= O(log n) operations]=0A- * - The tree=0A- * - Return the minimal object in= the tree, or a NULL if the tree is empty=0A- */=0A-=0A-extern rb=5Fnode *r= btree=5Fminimum(rb=5Ftree *tree);=0A-=0A-/* Get a handle to the tree maximu= m [takes O(log n) operations]=0A- * - The tree=0A- * - Return the maximal o= bject in the tree, or a NULL if the tree is empty=0A- */=0A-=0A-extern rb= =5Fnode *rbtree=5Fmaximum(rb=5Ftree *tree);=0A-=0A-/* Get the next node in = the tree (according to the tree order)=0A- * - [takes O(log n) operations a= t worst-case, but only O(1) amortized]=0A- * - The tree=0A- * - The current= object=0A- * - The successor node, or a NULL, if we are at the tree maximu= m=0A- */=0A-extern rb=5Fnode *rbtree=5Fsuccessor(rb=5Ftree *tree, rb=5Fnode= *node);=0A-=0A-/* Get the previous node in the tree (according to the tree= order)=0A- * - [takes O(log n) operations at worst-case, but only O(1) amo= rtized]=0A- * - The tree=0A- * - The current object=0A- * - The predecessor= node, or a NULL, if we are at the tree minimum=0A- */=0A-=0A-extern rb=5Fn= ode *rbtree=5Fpredecessor(rb=5Ftree *tree, rb=5Fnode *node);=0A-=0A-/* Find= a node that contains the given object=0A- * - The tree=0A- * - The desired= object=0A- * - Return a node that contains the given object, or NULL if no= such object=0A- * is found in the tree=0A- */=0A-=0A-extern rb=5Fnode *r= btree=5Ffind(rb=5Ftree *tree, datatype object);=0A-=0A-/* Remove the object= stored in the given tree node=0A- * - The tree=0A- * - The node storing th= e object to be removed from the tree=0A- */=0A-=0A-extern void rbtree=5Frem= ove=5Fat(rb=5Ftree *tree, rb=5Fnode *node, destructor d);=0A-=0A-/* Left-ro= tate the sub-tree spanned by the given node=0A- * - The tree=0A- * - The su= b-tree root=0A- */=0A-=0A-extern void rbtree=5Frotate=5Fleft(rb=5Ftree *tre= e, rb=5Fnode *node);=0A-=0A-/* Right-rotate the sub-tree spanned by the giv= en node=0A- * - The tree=0A- * - The sub-tree root=0A- */=0A-=0A-extern voi= d rbtree=5Frotate=5Fright(rb=5Ftree *tree, rb=5Fnode *node);=0A-=0A-/*=0A- = * Fix the red-black tree properties after an insertion operation=0A- * - Th= e tree=0A- * - The node that has just been inserted to the tree=0A- * - The= color of node must be red=0A- */=0A-=0A-extern void rbtree=5Finsert=5Ffixu= p(rb=5Ftree *tree, rb=5Fnode *node);=0A-=0A-/* Fix the red-black tree prope= rties after a removal operation=0A- * - The tree=0A- * - The child of the n= ode that has just been removed from the tree=0A- */=0A-=0A-extern void rbtr= ee=5Fremove=5Ffixup(rb=5Ftree *tree, rb=5Fnode *node);=0A-=0A-/* Traverse a= red-black tree=0A- * - The tree=0A- * - The operation to perform on every = object of the tree (according to=0A- * the tree order)=0A- */=0A-=0A-exte= rn void rbtree=5Ftraverse(rb=5Ftree *tree, opr *op);=0A-=0A-#endif=0Adiff -= -git a/testcases/kernel/fs/ext4-new-features/ffsb-6.0-rc2/registration-desc= ription b/testcases/kernel/fs/ext4-new-features/ffsb-6.0-rc2/registration-d= escription=0Adeleted file mode 100644=0Aindex 9faaea2..0000000=0A--- a/test= cases/kernel/fs/ext4-new-features/ffsb-6.0-rc2/registration-description=0A+= ++ /dev/null=0A@@ -1,7 +0,0 @@=0A-The Flexible Filesystem Benchmark (FFSB) = is a filesystem performance measurement tool. It is a multi-threaded appli= cation (using pthreads), written entirely in C with cross-platform portabil= ity in mind. It differs from other filesystem benchmarks in that the user = may supply a profile to create custom workloads, while most other filesyste= m benchmarks use a fixed set of workloads.=0A-=0A-It is currently known to = support Linux, AIX, and Solaris, although almost all development and testin= g has occurred on Linux. We intend to add support for HP-UX, IRIX, and pos= sibly others in the near future.=0A-=0A-FFSB is currently at version 5.0, a= nd has been an internal tool at IBM for about four years. I has already be= en used to conduct a study of Linux Kernel 2.6 IO-schedulers, and a great d= eal of future filesystem performance work is planned with FFSB as the prima= ry tool.=0A-=0A-In version 5.0, it supports six different basic operations,= support for multiple groups of threads with different operation mixtures, = support for operation across multiple filesystems, and support for filesyst= em aging prior to benchmarking.=0Adiff --git a/testcases/kernel/fs/ext4-new= -features/ffsb-6.0-rc2/rwlock.c b/testcases/kernel/fs/ext4-new-features/ffs= b-6.0-rc2/rwlock.c=0Adeleted file mode 100644=0Aindex 01806e5..0000000=0A--= - a/testcases/kernel/fs/ext4-new-features/ffsb-6.0-rc2/rwlock.c=0A+++ /dev/= null=0A@@ -1,108 +0,0 @@=0A-/*=0A- * Copyright (c) International Business= Machines Corp., 2001-2004=0A- *=0A- * This program is free software; yo= u can redistribute it and/or modify=0A- * it under the terms of the GNU G= eneral Public License as published by=0A- * the Free Software Foundation;= either version 2 of the License, or=0A- * (at your option) any later ver= sion.=0A- *=0A- * This program is distributed in the hope that it will be= useful,=0A- * but WITHOUT ANY WARRANTY; without even the implied warran= ty of=0A- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See=0A-= * the GNU General Public License for more details.=0A- *=0A- * You sho= uld have received a copy of the GNU General Public License=0A- * along wi= th this program; if not, write to the Free Software=0A- * Foundation, In= c., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA=0A- */=0A-#i= nclude =0A-#include =0A-#include =0A-=0A-/* #= define RWDEBUG 1 */=0A-#include "config.h"=0A-#include "rwlock.h"=0A-=0A-vo= id init=5Frwlock(struct rwlock *rw)=0A-{=0A- rw->n=5Freaders =3D 0;=0A- pth= read=5Fmutex=5Finit(&rw->plock, NULL);=0A- pthread=5Fcond=5Finit(&rw->pcond= , NULL);=0A-#ifdef RWDEBUG=0A- rw->n=5Fwrite=5Fwaiting =3D 0;=0A- rw->n=5Fr= ead=5Fwaiting =3D 0;=0A- rw->writer=5Ftid =3D -1;=0A-#endif=0A-}=0A-=0A-voi= d rw=5Flock=5Fread(struct rwlock *rw)=0A-{=0A- pthread=5Fmutex=5Flock(&rw->= plock);=0A-#ifdef RWDEBUG=0A- rw->n=5Fread=5Fwaiting++;=0A-#endif=0A- while= (rw->n=5Freaders < 0)=0A- pthread=5Fcond=5Fwait(&rw->pcond, &rw->plock);= =0A- rw->n=5Freaders++;=0A-#ifdef RWDEBUG=0A- rw->n=5Fread=5Fwaiting--;=0A-= #endif=0A- pthread=5Fmutex=5Funlock(&rw->plock);=0A-}=0A-=0A-void rw=5Flock= =5Fwrite(struct rwlock *rw)=0A-{=0A- pthread=5Fmutex=5Flock(&rw->plock);=0A= -#ifdef RWDEBUG=0A- rw->n=5Fwrite=5Fwaiting++;=0A-#endif=0A- while (rw->n= =5Freaders !=3D 0)=0A- pthread=5Fcond=5Fwait(&rw->pcond, &rw->plock);=0A- = rw->n=5Freaders =3D -1;=0A-#ifdef RWDEBUG=0A- rw->n=5Fwrite=5Fwaiting--;=0A= - rw->writer=5Ftid =3D (int)pthread=5Fself();=0A-#endif=0A- pthread=5Fmutex= =5Funlock(&rw->plock);=0A-=0A-}=0A-=0A-void rw=5Funlock=5Fread(struct rwloc= k *rw)=0A-{=0A- pthread=5Fmutex=5Flock(&rw->plock);=0A- rw->n=5Freaders -= =3D 1;=0A- pthread=5Fcond=5Fsignal(&rw->pcond);=0A- pthread=5Fmutex=5Funloc= k(&rw->plock);=0A-}=0A-=0A-void rw=5Funlock=5Fwrite(struct rwlock *rw)=0A-{= =0A- pthread=5Fmutex=5Flock(&rw->plock);=0A- rw->n=5Freaders =3D 0;=0A- pth= read=5Fcond=5Fbroadcast(&rw->pcond);=0A- pthread=5Fmutex=5Funlock(&rw->ploc= k);=0A-}=0A-=0A-int rw=5Ftrylock=5Fread(struct rwlock *rw)=0A-{=0A- int ret= =3D 1;=0A- pthread=5Fmutex=5Flock(&rw->plock);=0A- if (rw->n=5Freaders >= =3D 0) {=0A- rw->n=5Freaders++;=0A- ret =3D 0;=0A- }=0A- pthread=5Fmutex= =5Funlock(&rw->plock);=0A- return ret;=0A-}=0A-=0A-int rw=5Ftrylock=5Fwrite= (struct rwlock *rw)=0A-{=0A- int ret =3D 1;=0A- pthread=5Fmutex=5Flock(&rw-= >plock);=0A- if (rw->n=5Freaders =3D=3D 0) {=0A- ret =3D 0;=0A- rw->n=5Fr= eaders =3D -1;=0A- }=0A- pthread=5Fmutex=5Funlock(&rw->plock);=0A- return r= et;=0A-}=0Adiff --git a/testcases/kernel/fs/ext4-new-features/ffsb-6.0-rc2/= rwlock.h b/testcases/kernel/fs/ext4-new-features/ffsb-6.0-rc2/rwlock.h=0Ade= leted file mode 100644=0Aindex aa33d84..0000000=0A--- a/testcases/kernel/fs= /ext4-new-features/ffsb-6.0-rc2/rwlock.h=0A+++ /dev/null=0A@@ -1,51 +0,0 @@= =0A-/*=0A- * Copyright (c) International Business Machines Corp., 2001-20= 04=0A- *=0A- * This program is free software; you can redistribute it an= d/or modify=0A- * it under the terms of the GNU General Public License as= published by=0A- * the Free Software Foundation; either version 2 of the= License, or=0A- * (at your option) any later version.=0A- *=0A- * This= program is distributed in the hope that it will be useful,=0A- * but WIT= HOUT ANY WARRANTY; without even the implied warranty of=0A- * MERCHANTAB= ILITY or FITNESS FOR A PARTICULAR PURPOSE. See=0A- * the GNU General Pub= lic License for more details.=0A- *=0A- * You should have received a copy= of the GNU General Public License=0A- * along with this program; if not= , write to the Free Software=0A- * Foundation, Inc., 51 Franklin Street, = Fifth Floor, Boston, MA 02110-1301 USA=0A- */=0A-#ifndef =5FRWLOCK=5FH=0A-#= define =5FRWLOCK=5FH=0A-=0A-#include =0A-=0A-/* #define RWDEBUG = 1 */=0A-=0A-/* n=5Freaders >=3D 0 means 0 or more readers */=0A-/* n=5Fread= ers < 0 means a writer */=0A-struct rwlock {=0A- pthread=5Fmutex=5Ft plock;= =0A- int n=5Freaders;=0A- pthread=5Fcond=5Ft pcond;=0A-#ifdef RWDEBUG=0A- = int writer=5Ftid;=0A- int n=5Fread=5Fwaiting;=0A- int n=5Fwrite=5Fwaiting= ;=0A-#endif=0A-};=0A-=0A-void init=5Frwlock(struct rwlock *rw);=0A-=0A-void= rw=5Flock=5Fread(struct rwlock *rw);=0A-void rw=5Flock=5Fwrite(struct rwlo= ck *rw);=0A-=0A-void rw=5Funlock=5Fread(struct rwlock *rw);=0A-void rw=5Fun= lock=5Fwrite(struct rwlock *rw);=0A-=0A-int rw=5Ftrylock=5Fread(struct rwlo= ck *rw);=0A-int rw=5Ftrylock=5Fwrite(struct rwlock *rw);=0A-=0A-=0A-=0A-#en= dif=0Adiff --git a/testcases/kernel/fs/ext4-new-features/ffsb-6.0-rc2/stamp= -h.in b/testcases/kernel/fs/ext4-new-features/ffsb-6.0-rc2/stamp-h.in=0Adel= eted file mode 100644=0Aindex 9788f70..0000000=0A--- a/testcases/kernel/fs/= ext4-new-features/ffsb-6.0-rc2/stamp-h.in=0A+++ /dev/null=0A@@ -1 +0,0 @@= =0A-timestamp=0Adiff --git a/testcases/kernel/fs/ext4-new-features/ffsb-6.0= -rc2/util.c b/testcases/kernel/fs/ext4-new-features/ffsb-6.0-rc2/util.c=0Ad= eleted file mode 100644=0Aindex 77e1b3b..0000000=0A--- a/testcases/kernel/f= s/ext4-new-features/ffsb-6.0-rc2/util.c=0A+++ /dev/null=0A@@ -1,345 +0,0 @@= =0A-/*=0A- * Copyright (c) International Business Machines Corp., 2001-20= 04=0A- *=0A- * This program is free software; you can redistribute it an= d/or modify=0A- * it under the terms of the GNU General Public License as= published by=0A- * the Free Software Foundation; either version 2 of the= License, or=0A- * (at your option) any later version.=0A- *=0A- * This= program is distributed in the hope that it will be useful,=0A- * but WIT= HOUT ANY WARRANTY; without even the implied warranty of=0A- * MERCHANTAB= ILITY or FITNESS FOR A PARTICULAR PURPOSE. See=0A- * the GNU General Pub= lic License for more details.=0A- *=0A- * You should have received a copy= of the GNU General Public License=0A- * along with this program; if not= , write to the Free Software=0A- * Foundation, Inc., 51 Franklin Street, = Fifth Floor, Boston, MA 02110-1301 USA=0A- */=0A-#include =0A-= #include =0A-#include =0A-#include = =0A-#include =0A-#include =0A-#include = =0A-#include =0A-#include =0A-#include =0A-#i= nclude =0A-#include =0A-#include =0A-#include = =0A-=0A-#include "config.h"=0A-#include "fh.h"=0A-#include "util= .h"=0A-=0A-uint64=5Ft ffsb=5Fget=5Ffilesize(char *name)=0A-{=0A-#ifndef HAV= E=5FSTAT64=0A-#define STAT(a, b) do { stat((a), (b)); } while (0)=0A- struc= t stat filestat;=0A-#else=0A-#define STAT(a, b) do { stat64((a), (b)); } wh= ile (0)=0A- struct stat64 filestat;=0A-#endif=0A-=0A- STAT(name, &filestat)= ;=0A- return (uint64=5Ft) filestat.st=5Fsize;=0A-#undef STAT=0A-}=0A-=0A-vo= id *ffsb=5Fmalloc(size=5Ft size)=0A-{=0A- void *ptr =3D malloc((size));=0A-= assert(ptr !=3D NULL);=0A- memset(ptr, 0, size);=0A- return ptr;=0A-}=0A-= =0A-void *ffsb=5Frealloc(void *ptr, size=5Ft size)=0A-{=0A- void *tmp;=0A- = /* printf("ffsb=5Frealloc: ptr =3D %p size =3D %ld\n",ptr,size); */=0A-=0A= - if (ptr =3D=3D NULL)=0A- return ffsb=5Fmalloc(size);=0A-=0A- tmp =3D rea= lloc(ptr, size);=0A- assert(ptr !=3D NULL);=0A- ptr =3D tmp;=0A- return ptr= ;=0A-}=0A-=0A-void *ffsb=5Falign=5F4k(void *ptr)=0A-{=0A- unsigned long mas= k =3D ~(0xfff); /* 12 zeros at the end */=0A- void *ret =3D (void *)((unsig= ned long)ptr & mask);=0A- /* printf("align=5F4k got %p returning %p\n",ptr,= ret); */=0A- return ret;=0A-}=0A-=0A-char *ffsb=5Fstrdup(const char *str)= =0A-{=0A- int len =3D strlen(str);=0A- char *dup =3D ffsb=5Fmalloc(len + 1)= ;=0A- /* !!! am I off by one here ?? */=0A- strncpy(dup, str, len + 1);=0A-= return dup;=0A-}=0A-=0A-size=5Ft ffsb=5Fstrnlen(const char *str, size=5Ft = maxlen)=0A-{=0A- size=5Ft index =3D 0;=0A-=0A- while (index < maxlen) {=0A-= if (str[index] =3D=3D '\0')=0A- break;=0A- index++;=0A- }=0A- return i= ndex;=0A-}=0A-=0A-/* not perfect, in case we are somehow interrupted it's b= orked */=0A-void ffsb=5Fsleep(unsigned secs)=0A-{=0A- struct timeval tv =3D= { 0, 0 };=0A- tv.tv=5Fsec =3D secs;=0A- select(0, NULL, NULL, NULL, &tv);= =0A-}=0A-=0A-char *ffsb=5Fprintsize(char *buf, double size, int bufsize)=0A= -{=0A- if (size >=3D 1024 * 1024 * 1024)=0A- snprintf(buf, bufsize, "%.3gG= B", size / (1024 * 1024 * 1024));=0A- else if (size >=3D 1024 * 1024)=0A- = snprintf(buf, bufsize, "%.3gMB", size / (1024 * 1024));=0A- else if (size >= =3D 1024)=0A- snprintf(buf, bufsize, "%.3gKB", size / 1024);=0A- else=0A- = snprintf(buf, bufsize, "%.3gB", size);=0A-=0A- return buf;=0A-}=0A-=0A-voi= d ffsb=5Fmkdir(char *dirname)=0A-{=0A- if (mkdir(dirname, S=5FIRWXU) < 0) {= =0A- fprintf(stderr, "Error creating %s\n", dirname);=0A- perror("mkdir")= ;=0A- exit(1);=0A- }=0A-}=0A-=0A-struct timeval tvsub(struct timeval t1, s= truct timeval t0)=0A-{=0A- struct timeval tdiff;=0A- tdiff.tv=5Fsec =3D t1.= tv=5Fsec - t0.tv=5Fsec;=0A- tdiff.tv=5Fusec =3D t1.tv=5Fusec - t0.tv=5Fusec= ;=0A- if (tdiff.tv=5Fusec < 0)=0A- tdiff.tv=5Fsec--, tdiff.tv=5Fusec +=3D = 1000000;=0A- return tdiff;=0A-}=0A-=0A-struct timeval tvadd(struct timeval = t1, struct timeval t0)=0A-{=0A- struct timeval tdiff;=0A- tdiff.tv=5Fsec = =3D t1.tv=5Fsec + t0.tv=5Fsec;=0A- tdiff.tv=5Fusec =3D t1.tv=5Fusec + t0.tv= =5Fusec;=0A- if (tdiff.tv=5Fusec > 1000000)=0A- tdiff.tv=5Fsec++, tdiff.tv= =5Fusec -=3D 1000000;=0A- return tdiff;=0A-}=0A-=0A-double tvtodouble(struc= t timeval *t)=0A-{=0A- return ((double)t->tv=5Fsec * (1000000.0f) + (double= )t->tv=5Fusec) /=0A- 1000000.0f;=0A-}=0A-=0A-double cpu=5Fso=5Ffar(void= )=0A-{=0A- struct rusage rusage;=0A-=0A- getrusage(RUSAGE=5FSELF, &rusage);= =0A-=0A- return=0A- ((double)rusage.ru=5Futime.tv=5Fsec) +=0A- (((d= ouble)rusage.ru=5Futime.tv=5Fusec) / 1000000.0) +=0A- ((double)rusage.r= u=5Fstime.tv=5Fsec) +=0A- (((double)rusage.ru=5Fstime.tv=5Fusec) / 1000= 000.0);=0A-}=0A-=0A-double cpu=5Fso=5Ffar=5Fchildren(void)=0A-{=0A- struct = rusage rusage;=0A-=0A- getrusage(RUSAGE=5FCHILDREN, &rusage);=0A-=0A- retur= n=0A- ((double)rusage.ru=5Futime.tv=5Fsec) +=0A- (((double)rusage.r= u=5Futime.tv=5Fusec) / 1000000.0) +=0A- ((double)rusage.ru=5Fstime.tv= =5Fsec) +=0A- (((double)rusage.ru=5Fstime.tv=5Fusec) / 1000000.0);=0A-}= =0A-=0A-/* !!!! check portability */=0A-float getfsutil(char *dirname)=0A-{= =0A- struct statvfs64 fsdata;=0A-=0A- statvfs64(dirname, &fsdata);=0A-=0A-/= * return (float)(fsdata.f=5Fblocks-fsdata.f=5Fbfree)/ */=0A-/* (float)(f= sdata.f=5Fblocks-fsdata.f=5Fbfree+fsdata.f=5Fbavail); */=0A- return (float)= (((float)(fsdata.f=5Fblocks - fsdata.f=5Fbfree)) /=0A- ((float)fsda= ta.f=5Fblocks));=0A-}=0A-=0A-uint64=5Ft getfsutil=5Fsize(char *dirname)=0A-= {=0A- struct statvfs64 fsdata;=0A- statvfs64(dirname, &fsdata);=0A-=0A- ret= urn (fsdata.f=5Fblocks - fsdata.f=5Fbfree) * fsdata.f=5Fbsize;=0A-}=0A-=0A-= int ffsb=5Fsystem(char *command)=0A-{=0A- int pid =3D 0, status;=0A- extern= char **environ;=0A-=0A- if (command =3D=3D NULL)=0A- return 1;=0A- pid = =3D fork();=0A- if (pid =3D=3D -1)=0A- return -1;=0A- if (pid =3D=3D 0) {= =0A- char *argv[4];=0A- argv[0] =3D "sh";=0A- argv[1] =3D "-c";=0A- arg= v[2] =3D command;=0A- argv[3] =3D 0;=0A- execve("/bin/sh", argv, environ)= ;=0A- exit(127);=0A- }=0A- do {=0A- if (waitpid(pid, &status, 0) =3D=3D -= 1) {=0A- if (errno !=3D EINTR)=0A- return -1;=0A- } else=0A- return= status;=0A- } while (1);=0A-}=0A-=0A-void ffsb=5Fsync()=0A-{=0A- struct ti= meval starttime, endtime, difftime;=0A- printf("Syncing()...");=0A- fflush(= stdout);=0A- gettimeofday(&starttime, NULL);=0A- sync();=0A- gettimeofday(&= endtime, NULL);=0A- timersub(&endtime, &starttime, &difftime);=0A- printf("= %ld sec\n", difftime.tv=5Fsec);=0A-}=0A-=0A-void ffsb=5Fgetrusage(struct ru= sage *ru=5Fself, struct rusage *ru=5Fchildren)=0A-{=0A- int ret =3D 0;=0A-/= * printf("cpu=5Fso=5Ffar is %lf\n",cpu=5Fso=5Ffar()); */=0A-/* printf("cp= u=5Fso=5Ffar=5Fchildren is %lf\n",cpu=5Fso=5Ffar=5Fchildren()); */=0A- ret = =3D getrusage(RUSAGE=5FSELF, ru=5Fself);=0A- if (ret < 0)=0A- perror("getr= usage self");=0A-=0A-/* printf("self returned %d\n",ret); */=0A- ret =3D g= etrusage(RUSAGE=5FCHILDREN, ru=5Fchildren);=0A- if (ret < 0)=0A- perror("g= etrusage children");=0A-/* printf("children returned %d\n",ret); */=0A-}= =0A-=0A-void ffsb=5Fmilli=5Fsleep(unsigned time)=0A-{=0A- struct timeval tv= =3D { 0, 0 };=0A- if (!time)=0A- return;=0A- tv.tv=5Fusec =3D time * 1000= ;=0A- select(0, NULL, NULL, NULL, &tv);=0A-}=0A-=0A-void ffsb=5Fmicro=5Fsle= ep(unsigned time)=0A-{=0A- struct timeval tv =3D { 0, 0 };=0A- if (!time)= =0A- return;=0A- tv.tv=5Fusec =3D time;=0A- select(0, NULL, NULL, NULL, &t= v);=0A-}=0A-=0A-void ffsb=5Fbarrier=5Finit(ffsb=5Fbarrier=5Ft * fb, unsigne= d count)=0A-{=0A- memset(fb, 0, sizeof(*fb));=0A- pthread=5Fmutex=5Finit(&f= b->plock, NULL);=0A- pthread=5Fcond=5Finit(&fb->pcond, NULL);=0A- fb->requi= red=5Fcount =3D count;=0A-}=0A-=0A-void ffsb=5Fbarrier=5Fwait(ffsb=5Fbarrie= r=5Ft * fb)=0A-{=0A- pthread=5Fmutex=5Flock(&fb->plock);=0A-=0A- fb->curren= t=5Fcount++;=0A-=0A- if (fb->current=5Fcount =3D=3D fb->required=5Fcount)= =0A- pthread=5Fcond=5Fbroadcast(&fb->pcond);=0A- else=0A- while (fb->curr= ent=5Fcount !=3D fb->required=5Fcount)=0A- pthread=5Fcond=5Fwait(&fb->pco= nd, &fb->plock);=0A-=0A- pthread=5Fmutex=5Funlock(&fb->plock);=0A-}=0A-=0A-= void ffsb=5Funbuffer=5Fstdout(void)=0A-{=0A-#ifndef SETVBUF=5FREVERSED=0A- = setvbuf(stdout, NULL, =5FIONBF, 0);=0A-#else=0A- setvbuf(stdout, =5FIONBF, = NULL, 0);=0A-#endif=0A-}=0A-=0A-void ffsb=5Fbench=5Fgettimeofday(void)=0A-{= =0A- unsigned long i =3D 0;=0A- uint64=5Ft total=5Fusec;=0A- uint64=5Ft ave= rage =3D 0;=0A- struct timeval starttime, endtime, junk, difftime;=0A- gett= imeofday(&starttime, NULL);=0A- for (i =3D 0; i < 1000000; i++)=0A- gettim= eofday(&junk, NULL);=0A- gettimeofday(&endtime, NULL);=0A- timersub(&endtim= e, &starttime, &difftime);=0A- total=5Fusec =3D difftime.tv=5Fsec * 1000000= ;=0A- total=5Fusec +=3D difftime.tv=5Fusec;=0A- average =3D total=5Fusec / = 1000ull;=0A- printf("average time for gettimeofday(): %llu nsec\n", average= );=0A-}=0A-=0A-void ffsb=5Fbench=5Fgetpid(void)=0A-{=0A- unsigned long i = =3D 0;=0A- uint64=5Ft total=5Fusec;=0A- uint64=5Ft average =3D 0;=0A- struc= t timeval starttime, endtime, difftime;=0A- gettimeofday(&starttime, NULL);= =0A- for (i =3D 0; i < 1000000; i++)=0A- getpid();=0A- gettimeofday(&endti= me, NULL);=0A- timersub(&endtime, &starttime, &difftime);=0A- total=5Fusec = =3D difftime.tv=5Fsec * 1000000;=0A- total=5Fusec +=3D difftime.tv=5Fusec;= =0A- average =3D total=5Fusec / 1000ull;=0A- printf("average time for getpi= d(): %llu nsec\n", average);=0A-}=0Adiff --git a/testcases/kernel/fs/ext4-n= ew-features/ffsb-6.0-rc2/util.h b/testcases/kernel/fs/ext4-new-features/ffs= b-6.0-rc2/util.h=0Adeleted file mode 100644=0Aindex 0de0364..0000000=0A--- = a/testcases/kernel/fs/ext4-new-features/ffsb-6.0-rc2/util.h=0A+++ /dev/null= =0A@@ -1,94 +0,0 @@=0A-/*=0A- * Copyright (c) International Business Mach= ines Corp., 2001-2006=0A- *=0A- * This program is free software; you can= redistribute it and/or modify=0A- * it under the terms of the GNU Genera= l Public License as published by=0A- * the Free Software Foundation; eith= er version 2 of the License, or=0A- * (at your option) any later version.= =0A- *=0A- * This program is distributed in the hope that it will be usef= ul,=0A- * but WITHOUT ANY WARRANTY; without even the implied warranty of= =0A- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See=0A- * = the GNU General Public License for more details.=0A- *=0A- * You should h= ave received a copy of the GNU General Public License=0A- * along with th= is program; if not, write to the Free Software=0A- * Foundation, Inc., 5= 1 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA=0A- */=0A-#ifndef= =5FUTIL=5FH=5F=0A-#define =5FUTIL=5FH=5F=0A-=0A-#include "config.h"=0A-=0A= -#include =0A-#include =0A-=0A-#ifdef HAVE=5FSY= S=5FVFS=5FH=0A-#include =0A-#endif=0A-#include = =0A-#include =0A-#include =0A-#include =0A-#i= nclude =0A-#include =0A-=0A-=0A-void ffsb=5Fsleep(unsi= gned secs);=0A-void *ffsb=5Fmalloc(size=5Ft size);=0A-void *ffsb=5Frealloc(= void *ptr, size=5Ft size);=0A-char *ffsb=5Fstrdup(const char *str);=0A-size= =5Ft ffsb=5Fstrnlen(const char *str, size=5Ft maxlen);=0A-=0A-void ffsb=5Fm= kdir(char *dirname);=0A-void ffsb=5Fgetrusage(struct rusage *ru=5Fself, str= uct rusage *ru=5Fchildren);=0A-void ffsb=5Fsync(void);=0A-void *ffsb=5Falig= n=5F4k(void *ptr);=0A-char *ffsb=5Fprintsize(char *buf, double size, int bu= fsize);=0A-=0A-int ffsb=5Fsystem(char *command);=0A-void ffsb=5Fmilli=5Fsle= ep(unsigned time);=0A-void ffsb=5Fmicro=5Fsleep(unsigned time);=0A-void ffs= b=5Funbuffer=5Fstdout(void);=0A-void ffsb=5Fbench=5Fgettimeofday(void);=0A-= void ffsb=5Fbench=5Fgetpid(void);=0A-=0A-uint64=5Ft ffsb=5Fget=5Ffilesize(c= har *name);=0A-=0A-typedef struct {=0A- unsigned required=5Fcount;=0A- unsi= gned current=5Fcount;=0A- pthread=5Fmutex=5Ft plock;=0A- pthread=5Fcond=5Ft= pcond;=0A-} ffsb=5Fbarrier=5Ft ;=0A-=0A-void ffsb=5Fbarrier=5Finit(ffsb=5F= barrier=5Ft *fb, unsigned count);=0A-void ffsb=5Fbarrier=5Fwait(ffsb=5Fbarr= ier=5Ft *fb);=0A-=0A-double cpu=5Fso=5Ffar(void);=0A-double time=5Fso=5Ffar= (void);=0A-double cpu=5Fso=5Ffar=5Fchildren(void);=0A-float getfsutil(char = *dirname);=0A-uint64=5Ft getfsutil=5Fsize(char *dirname);=0A-=0A-struct tim= eval tvsub(struct timeval t1, struct timeval t0);=0A-struct timeval tvadd(s= truct timeval t1, struct timeval t0);=0A-double tvtodouble(struct timeval *= t);=0A-=0A-=0A-#define max(a, b) (((a) > (b)) ? (a) : (b))=0A-=0A-#ifndef t= imersub=0A-#define timersub(a, b, result) = \=0A- do { = \=0A- (result)->tv=5Fsec =3D (a)->tv=5Fsec - (b)->tv=5Fsec; \=0A- (re= sult)->tv=5Fusec =3D (a)->tv=5Fusec - (b)->tv=5Fusec; \=0A- \=0A- = if ((result)->tv=5Fusec < 0) { \=0A- (result)->tv=5Fsec--; \=0A- = (result)->tv=5Fusec +=3D 1000000; \=0A- } \=0A- } while (0)=0A-#en= dif /* timersub */=0A-=0A-#endif /* =5FUTIL=5FH=5F */=0Adiff --git a/utils/= Makefile b/utils/Makefile=0Aindex 9f79f5b..58cec7c 100644=0A--- a/utils/Mak= efile=0A+++ b/utils/Makefile=0A@@ -21,4 +21,25 @@=0A top=5Fsrcdir ?=3D ..= =0A =0A include $(top=5Fsrcdir)/include/mk/env=5Fpre.mk=0A+=0A+INSTALL=5FTA= RGETS +=3D ffsb=0A+=0A+FFSBDIR :=3D ffsb-6.0-rc2=0A+FILTER=5FOUT= =5FDIRS :=3D $(FFSBDIR)=0A+FFSB :=3D $(FFSBDIR)/ffsb=0A+=0A+$(FFSB): $(F= FSBDIR)=0A+ cd $^; ./configure=0A+ $(MAKE) -C $^ -f "$(abs=5Fsrcdir)/$^/Mak= efile" all=0A+ cp $(FFSBDIR)/ffsb ffsb=0A+=0A+trunk-all: $(FFSB)=0A+=0A+tru= nk-clean:: | ffsb-clean=0A+=0A+ffsb-clean:: $(FFSBDIR)=0A+ $(MAKE) -C $^ -f= "$(abs=5Fsrcdir)/$^/Makefile" clean=0A+ rm -rf ffsb=0A+=0A+=0A include $(t= op=5Fsrcdir)/include/mk/generic=5Ftrunk=5Ftarget.mk=0Adiff --git a/utils/ff= sb-6.0-rc2/AUTHORS b/utils/ffsb-6.0-rc2/AUTHORS=0Anew file mode 100644=0Ain= dex 0000000..85d037d=0A--- /dev/null=0A+++ b/utils/ffsb-6.0-rc2/AUTHORS=0A@= @ -0,0 +1,7 @@=0A+Dominique Heger (dheger@us.ibm.com)=0A+Josh Jacobs (josh@= mit.edu)=0A+=0A+-> up to Version 3.0 of FFSB=0A+=0A+Sonny Rao (raosanth@us.= ibm.com)=0A+versions 3.1 and beyond=0Adiff --git a/utils/ffsb-6.0-rc2/COPYI= NG b/utils/ffsb-6.0-rc2/COPYING=0Anew file mode 100644=0Aindex 0000000..e90= dfed=0A--- /dev/null=0A+++ b/utils/ffsb-6.0-rc2/COPYING=0A@@ -0,0 +1,340 @@= =0A+ GNU GENERAL PUBLIC LICENSE=0A+ Version 2, June 1991=0A+= =0A+ Copyright (C) 1989, 1991 Free Software Foundation, Inc.=0A+ 59 Tem= ple Place, Suite 330, Boston, MA 02111-1307 USA=0A+ Everyone is permitted= to copy and distribute verbatim copies=0A+ of this license document, but c= hanging it is not allowed.=0A+=0A+ Preamble=0A+=0A+ The licenses for= most software are designed to take away your=0A+freedom to share and chang= e it. By contrast, the GNU General Public=0A+License is intended to guaran= tee your freedom to share and change free=0A+software--to make sure the sof= tware is free for all its users. This=0A+General Public License applies to= most of the Free Software=0A+Foundation's software and to any other progra= m whose authors commit to=0A+using it. (Some other Free Software Foundatio= n software is covered by=0A+the GNU Library General Public License instead.= ) You can apply it to=0A+your programs, too.=0A+=0A+ When we speak of fre= e software, we are referring to freedom, not=0A+price. Our General Public = Licenses are designed to make sure that you=0A+have the freedom to distribu= te copies of free software (and charge for=0A+this service if you wish), th= at you receive source code or can get it=0A+if you want it, that you can ch= ange the software or use pieces of it=0A+in new free programs; and that you= know you can do these things.=0A+=0A+ To protect your rights, we need to = make restrictions that forbid=0A+anyone to deny you these rights or to ask = you to surrender the rights.=0A+These restrictions translate to certain res= ponsibilities for you if you=0A+distribute copies of the software, or if yo= u modify it.=0A+=0A+ For example, if you distribute copies of such a progr= am, whether=0A+gratis or for a fee, you must give the recipients all the ri= ghts that=0A+you have. You must make sure that they, too, receive or can g= et the=0A+source code. And you must show them these terms so they know the= ir=0A+rights.=0A+=0A+ We protect your rights with two steps: (1) copyright= the software, and=0A+(2) offer you this license which gives you legal perm= ission to copy,=0A+distribute and/or modify the software.=0A+=0A+ Also, fo= r each author's protection and ours, we want to make certain=0A+that everyo= ne understands that there is no warranty for this free=0A+software. If the= software is modified by someone else and passed on, we=0A+want its recipie= nts to know that what they have is not the original, so=0A+that any problem= s introduced by others will not reflect on the original=0A+authors' reputat= ions.=0A+=0A+ Finally, any free program is threatened constantly by softwa= re=0A+patents. We wish to avoid the danger that redistributors of a free= =0A+program will individually obtain patent licenses, in effect making the= =0A+program proprietary. To prevent this, we have made it clear that any= =0A+patent must be licensed for everyone's free use or not licensed at all.= =0A+=0A+ The precise terms and conditions for copying, distribution and=0A= +modification follow.=0A+=0A+ GNU GENERAL PUBLIC LICENSE=0A+ TERMS A= ND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION=0A+=0A+ 0. This L= icense applies to any program or other work which contains=0A+a notice plac= ed by the copyright holder saying it may be distributed=0A+under the terms = of this General Public License. The "Program", below,=0A+refers to any suc= h program or work, and a "work based on the Program"=0A+means either the Pr= ogram or any derivative work under copyright law:=0A+that is to say, a work= containing the Program or a portion of it,=0A+either verbatim or with modi= fications and/or translated into another=0A+language. (Hereinafter, transl= ation is included without limitation in=0A+the term "modification".) Each = licensee is addressed as "you".=0A+=0A+Activities other than copying, distr= ibution and modification are not=0A+covered by this License; they are outsi= de its scope. The act of=0A+running the Program is not restricted, and the= output from the Program=0A+is covered only if its contents constitute a wo= rk based on the=0A+Program (independent of having been made by running the = Program).=0A+Whether that is true depends on what the Program does.=0A+=0A+= 1. You may copy and distribute verbatim copies of the Program's=0A+source= code as you receive it, in any medium, provided that you=0A+conspicuously = and appropriately publish on each copy an appropriate=0A+copyright notice a= nd disclaimer of warranty; keep intact all the=0A+notices that refer to thi= s License and to the absence of any warranty;=0A+and give any other recipie= nts of the Program a copy of this License=0A+along with the Program.=0A+=0A= +You may charge a fee for the physical act of transferring a copy, and=0A+y= ou may at your option offer warranty protection in exchange for a fee.=0A+= =0A+ 2. You may modify your copy or copies of the Program or any portion= =0A+of it, thus forming a work based on the Program, and copy and=0A+distri= bute such modifications or work under the terms of Section 1=0A+above, prov= ided that you also meet all of these conditions:=0A+=0A+ a) You must cau= se the modified files to carry prominent notices=0A+ stating that you ch= anged the files and the date of any change.=0A+=0A+ b) You must cause an= y work that you distribute or publish, that in=0A+ whole or in part cont= ains or is derived from the Program or any=0A+ part thereof, to be licen= sed as a whole at no charge to all third=0A+ parties under the terms of = this License.=0A+=0A+ c) If the modified program normally reads commands= interactively=0A+ when run, you must cause it, when started running for= such=0A+ interactive use in the most ordinary way, to print or display = an=0A+ announcement including an appropriate copyright notice and a=0A+ = notice that there is no warranty (or else, saying that you provide=0A+ = a warranty) and that users may redistribute the program under=0A+ thes= e conditions, and telling the user how to view a copy of this=0A+ Licens= e. (Exception: if the Program itself is interactive but=0A+ does not no= rmally print such an announcement, your work based on=0A+ the Program is= not required to print an announcement.)=0A+=0A+These requirements apply to= the modified work as a whole. If=0A+identifiable sections of that work ar= e not derived from the Program,=0A+and can be reasonably considered indepen= dent and separate works in=0A+themselves, then this License, and its terms,= do not apply to those=0A+sections when you distribute them as separate wor= ks. But when you=0A+distribute the same sections as part of a whole which = is a work based=0A+on the Program, the distribution of the whole must be on= the terms of=0A+this License, whose permissions for other licensees extend= to the=0A+entire whole, and thus to each and every part regardless of who = wrote it.=0A+=0A+Thus, it is not the intent of this section to claim rights= or contest=0A+your rights to work written entirely by you; rather, the int= ent is to=0A+exercise the right to control the distribution of derivative o= r=0A+collective works based on the Program.=0A+=0A+In addition, mere aggreg= ation of another work not based on the Program=0A+with the Program (or with= a work based on the Program) on a volume of=0A+a storage or distribution m= edium does not bring the other work under=0A+the scope of this License.=0A+= =0A+ 3. You may copy and distribute the Program (or a work based on it,=0A= +under Section 2) in object code or executable form under the terms of=0A+S= ections 1 and 2 above provided that you also do one of the following:=0A+= =0A+ a) Accompany it with the complete corresponding machine-readable=0A= + source code, which must be distributed under the terms of Sections=0A+= 1 and 2 above on a medium customarily used for software interchange; or= ,=0A+=0A+ b) Accompany it with a written offer, valid for at least three= =0A+ years, to give any third party, for a charge no more than your=0A+ = cost of physically performing source distribution, a complete=0A+ mac= hine-readable copy of the corresponding source code, to be=0A+ distribut= ed under the terms of Sections 1 and 2 above on a medium=0A+ customarily= used for software interchange; or,=0A+=0A+ c) Accompany it with the inf= ormation you received as to the offer=0A+ to distribute corresponding so= urce code. (This alternative is=0A+ allowed only for noncommercial dist= ribution and only if you=0A+ received the program in object code or exec= utable form with such=0A+ an offer, in accord with Subsection b above.)= =0A+=0A+The source code for a work means the preferred form of the work for= =0A+making modifications to it. For an executable work, complete source=0A= +code means all the source code for all modules it contains, plus any=0A+as= sociated interface definition files, plus the scripts used to=0A+control co= mpilation and installation of the executable. However, as a=0A+special exc= eption, the source code distributed need not include=0A+anything that is no= rmally distributed (in either source or binary=0A+form) with the major comp= onents (compiler, kernel, and so on) of the=0A+operating system on which th= e executable runs, unless that component=0A+itself accompanies the executab= le.=0A+=0A+If distribution of executable or object code is made by offering= =0A+access to copy from a designated place, then offering equivalent=0A+acc= ess to copy the source code from the same place counts as=0A+distribution o= f the source code, even though third parties are not=0A+compelled to copy t= he source along with the object code.=0A+=0A+ 4. You may not copy, modify,= sublicense, or distribute the Program=0A+except as expressly provided unde= r this License. Any attempt=0A+otherwise to copy, modify, sublicense or di= stribute the Program is=0A+void, and will automatically terminate your righ= ts under this License.=0A+However, parties who have received copies, or rig= hts, from you under=0A+this License will not have their licenses terminated= so long as such=0A+parties remain in full compliance.=0A+=0A+ 5. You are = not required to accept this License, since you have not=0A+signed it. Howe= ver, nothing else grants you permission to modify or=0A+distribute the Prog= ram or its derivative works. These actions are=0A+prohibited by law if you= do not accept this License. Therefore, by=0A+modifying or distributing th= e Program (or any work based on the=0A+Program), you indicate your acceptan= ce of this License to do so, and=0A+all its terms and conditions for copyin= g, distributing or modifying=0A+the Program or works based on it.=0A+=0A+ = 6. Each time you redistribute the Program (or any work based on the=0A+Prog= ram), the recipient automatically receives a license from the=0A+original l= icensor to copy, distribute or modify the Program subject to=0A+these terms= and conditions. You may not impose any further=0A+restrictions on the rec= ipients' exercise of the rights granted herein.=0A+You are not responsible = for enforcing compliance by third parties to=0A+this License.=0A+=0A+ 7. I= f, as a consequence of a court judgment or allegation of patent=0A+infringe= ment or for any other reason (not limited to patent issues),=0A+conditions = are imposed on you (whether by court order, agreement or=0A+otherwise) that= contradict the conditions of this License, they do not=0A+excuse you from = the conditions of this License. If you cannot=0A+distribute so as to satis= fy simultaneously your obligations under this=0A+License and any other pert= inent obligations, then as a consequence you=0A+may not distribute the Prog= ram at all. For example, if a patent=0A+license would not permit royalty-f= ree redistribution of the Program by=0A+all those who receive copies direct= ly or indirectly through you, then=0A+the only way you could satisfy both i= t and this License would be to=0A+refrain entirely from distribution of the= Program.=0A+=0A+If any portion of this section is held invalid or unenforc= eable under=0A+any particular circumstance, the balance of the section is i= ntended to=0A+apply and the section as a whole is intended to apply in othe= r=0A+circumstances.=0A+=0A+It is not the purpose of this section to induce = you to infringe any=0A+patents or other property right claims or to contest= validity of any=0A+such claims; this section has the sole purpose of prote= cting the=0A+integrity of the free software distribution system, which is= =0A+implemented by public license practices. Many people have made=0A+gene= rous contributions to the wide range of software distributed=0A+through tha= t system in reliance on consistent application of that=0A+system; it is up = to the author/donor to decide if he or she is willing=0A+to distribute soft= ware through any other system and a licensee cannot=0A+impose that choice.= =0A+=0A+This section is intended to make thoroughly clear what is believed = to=0A+be a consequence of the rest of this License.=0A+=0A+ 8. If the dist= ribution and/or use of the Program is restricted in=0A+certain countries ei= ther by patents or by copyrighted interfaces, the=0A+original copyright hol= der who places the Program under this License=0A+may add an explicit geogra= phical distribution limitation excluding=0A+those countries, so that distri= bution is permitted only in or among=0A+countries not thus excluded. In su= ch case, this License incorporates=0A+the limitation as if written in the b= ody of this License.=0A+=0A+ 9. The Free Software Foundation may publish r= evised and/or new versions=0A+of the General Public License from time to ti= me. Such new versions will=0A+be similar in spirit to the present version,= but may differ in detail to=0A+address new problems or concerns.=0A+=0A+Ea= ch version is given a distinguishing version number. If the Program=0A+spe= cifies a version number of this License which applies to it and "any=0A+lat= er version", you have the option of following the terms and conditions=0A+e= ither of that version or of any later version published by the Free=0A+Soft= ware Foundation. If the Program does not specify a version number of=0A+th= is License, you may choose any version ever published by the Free Software= =0A+Foundation.=0A+=0A+ 10. If you wish to incorporate parts of the Progra= m into other free=0A+programs whose distribution conditions are different, = write to the author=0A+to ask for permission. For software which is copyri= ghted by the Free=0A+Software Foundation, write to the Free Software Founda= tion; we sometimes=0A+make exceptions for this. Our decision will be guide= d by the two goals=0A+of preserving the free status of all derivatives of o= ur free software and=0A+of promoting the sharing and reuse of software gene= rally.=0A+=0A+ NO WARRANTY=0A+=0A+ 11. BECAUSE THE PROGRAM IS LICENS= ED FREE OF CHARGE, THERE IS NO WARRANTY=0A+FOR THE PROGRAM, TO THE EXTENT P= ERMITTED BY APPLICABLE LAW. EXCEPT WHEN=0A+OTHERWISE STATED IN WRITING THE= COPYRIGHT HOLDERS AND/OR OTHER PARTIES=0A+PROVIDE THE PROGRAM "AS IS" WITH= OUT WARRANTY OF ANY KIND, EITHER EXPRESSED=0A+OR IMPLIED, INCLUDING, BUT NO= T LIMITED TO, THE IMPLIED WARRANTIES OF=0A+MERCHANTABILITY AND FITNESS FOR = A PARTICULAR PURPOSE. THE ENTIRE RISK AS=0A+TO THE QUALITY AND PERFORMANCE= OF THE PROGRAM IS WITH YOU. SHOULD THE=0A+PROGRAM PROVE DEFECTIVE, YOU AS= SUME THE COST OF ALL NECESSARY SERVICING,=0A+REPAIR OR CORRECTION.=0A+=0A+ = 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING= =0A+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR=0A+= REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,= =0A+INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARI= SING=0A+OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT L= IMITED=0A+TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTA= INED BY=0A+YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH= ANY OTHER=0A+PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISE= D OF THE=0A+POSSIBILITY OF SUCH DAMAGES.=0A+=0A+ END OF TERMS AND CON= DITIONS=0A+=0A+ How to Apply These Terms to Your New Programs=0A+=0A+ = If you develop a new program, and you want it to be of the greatest=0A+poss= ible use to the public, the best way to achieve this is to make it=0A+free = software which everyone can redistribute and change under these terms.=0A+= =0A+ To do so, attach the following notices to the program. It is safest= =0A+to attach them to the start of each source file to most effectively=0A+= convey the exclusion of warranty; and each file should have at least=0A+the= "copyright" line and a pointer to where the full notice is found.=0A+=0A+ = = =0A+ Copyright (C) =0A+=0A+ This program is f= ree software; you can redistribute it and/or modify=0A+ it under the ter= ms of the GNU General Public License as published by=0A+ the Free Softwa= re Foundation; either version 2 of the License, or=0A+ (at your option) = any later version.=0A+=0A+ This program is distributed in the hope that = it will be useful,=0A+ but WITHOUT ANY WARRANTY; without even the implie= d warranty of=0A+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. = See the=0A+ GNU General Public License for more details.=0A+=0A+ You = should have received a copy of the GNU General Public License=0A+ along = with this program; if not, write to the Free Software=0A+ Foundation, In= c., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA=0A+=0A+=0A+Also= add information on how to contact you by electronic and paper mail.=0A+=0A= +If the program is interactive, make it output a short notice like this=0A+= when it starts in an interactive mode:=0A+=0A+ Gnomovision version 69, C= opyright (C) year name of author=0A+ Gnomovision comes with ABSOLUTELY = NO WARRANTY; for details type `show w'.=0A+ This is free software, and y= ou are welcome to redistribute it=0A+ under certain conditions; type `sh= ow c' for details.=0A+=0A+The hypothetical commands `show w' and `show c' s= hould show the appropriate=0A+parts of the General Public License. Of cour= se, the commands you use may=0A+be called something other than `show w' and= `show c'; they could even be=0A+mouse-clicks or menu items--whatever suits= your program.=0A+=0A+You should also get your employer (if you work as a p= rogrammer) or your=0A+school, if any, to sign a "copyright disclaimer" for = the program, if=0A+necessary. Here is a sample; alter the names:=0A+=0A+ = Yoyodyne, Inc., hereby disclaims all copyright interest in the program=0A+ = `Gnomovision' (which makes passes at compilers) written by James Hacker.= =0A+=0A+ , 1 April 1989=0A+ Ty Coon, President of V= ice=0A+=0A+This General Public License does not permit incorporating your p= rogram into=0A+proprietary programs. If your program is a subroutine libra= ry, you may=0A+consider it more useful to permit linking proprietary applic= ations with the=0A+library. If this is what you want to do, use the GNU Li= brary General=0A+Public License instead of this License.=0Adiff --git a/uti= ls/ffsb-6.0-rc2/INSTALL b/utils/ffsb-6.0-rc2/INSTALL=0Anew file mode 100644= =0Aindex 0000000..b42a17a=0A--- /dev/null=0A+++ b/utils/ffsb-6.0-rc2/INSTAL= L=0A@@ -0,0 +1,182 @@=0A+Basic Installation=0A+=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=0A+=0A+ These are generic installation instru= ctions.=0A+=0A+ The `configure' shell script attempts to guess correct va= lues for=0A+various system-dependent variables used during compilation. It= uses=0A+those values to create a `Makefile' in each directory of the packa= ge.=0A+It may also create one or more `.h' files containing system-dependen= t=0A+definitions. Finally, it creates a shell script `config.status' that= =0A+you can run in the future to recreate the current configuration, a file= =0A+`config.cache' that saves the results of its tests to speed up=0A+recon= figuring, and a file `config.log' containing compiler output=0A+(useful mai= nly for debugging `configure').=0A+=0A+ If you need to do unusual things = to compile the package, please try=0A+to figure out how `configure' could c= heck whether to do them, and mail=0A+diffs or instructions to the address g= iven in the `README' so they can=0A+be considered for the next release. If= at some point `config.cache'=0A+contains results you don't want to keep, y= ou may remove or edit it.=0A+=0A+ The file `configure.in' is used to crea= te `configure' by a program=0A+called `autoconf'. You only need `configure= .in' if you want to change=0A+it or regenerate `configure' using a newer ve= rsion of `autoconf'.=0A+=0A+The simplest way to compile this package is:=0A= +=0A+ 1. `cd' to the directory containing the package's source code and ty= pe=0A+ `./configure' to configure the package for your system. If you'= re=0A+ using `csh' on an old version of System V, you might need to typ= e=0A+ `sh ./configure' instead to prevent `csh' from trying to execute= =0A+ `configure' itself.=0A+=0A+ Running `configure' takes awhile. = While running, it prints some=0A+ messages telling which features it i= s checking for.=0A+=0A+ 2. Type `make' to compile the package.=0A+=0A+ 3.= Optionally, type `make check' to run any self-tests that come with=0A+ = the package.=0A+=0A+ 4. Type `make install' to install the programs and a= ny data files and=0A+ documentation.=0A+=0A+ 5. You can remove the pro= gram binaries and object files from the=0A+ source code directory by ty= ping `make clean'. To also remove the=0A+ files that `configure' creat= ed (so you can compile the package for=0A+ a different kind of computer= ), type `make distclean'. There is=0A+ also a `make maintainer-clean' = target, but that is intended mainly=0A+ for the package's developers. = If you use it, you may have to get=0A+ all sorts of other programs in o= rder to regenerate files that came=0A+ with the distribution.=0A+=0A+Co= mpilers and Options=0A+=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=0A+=0A+ Some systems require unusual options for compilation= or linking that=0A+the `configure' script does not know about. You can gi= ve `configure'=0A+initial values for variables by setting them in the envir= onment. Using=0A+a Bourne-compatible shell, you can do that on the command= line like=0A+this:=0A+ CC=3Dc89 CFLAGS=3D-O2 LIBS=3D-lposix ./configur= e=0A+=0A+Or on systems that have the `env' program, you can do it like this= :=0A+ env CPPFLAGS=3D-I/usr/local/include LDFLAGS=3D-s ./configure=0A+= =0A+Compiling For Multiple Architectures=0A+=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=0A+=0A+ You can compile the package for more than one kind of compute= r at the=0A+same time, by placing the object files for each architecture in= their=0A+own directory. To do this, you must use a version of `make' that= =0A+supports the `VPATH' variable, such as GNU `make'. `cd' to the=0A+dire= ctory where you want the object files and executables to go and run=0A+the = `configure' script. `configure' automatically checks for the=0A+source cod= e in the directory that `configure' is in and in `..'.=0A+=0A+ If you hav= e to use a `make' that does not supports the `VPATH'=0A+variable, you have = to compile the package for one architecture at a time=0A+in the source code= directory. After you have installed the package for=0A+one architecture, = use `make distclean' before reconfiguring for another=0A+architecture.=0A+= =0A+Installation Names=0A+=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=0A+=0A+ By default, `make install' will install the package's file= s in=0A+`/usr/local/bin', `/usr/local/man', etc. You can specify an=0A+ins= tallation prefix other than `/usr/local' by giving `configure' the=0A+optio= n `--prefix=3DPATH'.=0A+=0A+ You can specify separate installation prefix= es for=0A+architecture-specific files and architecture-independent files. = If you=0A+give `configure' the option `--exec-prefix=3DPATH', the package w= ill use=0A+PATH as the prefix for installing programs and libraries.=0A+Doc= umentation and other data files will still use the regular prefix.=0A+=0A+ = In addition, if you use an unusual directory layout you can give=0A+optio= ns like `--bindir=3DPATH' to specify different values for particular=0A+kin= ds of files. Run `configure --help' for a list of the directories=0A+you c= an set and what kinds of files go in them.=0A+=0A+ If the package support= s it, you can cause programs to be installed=0A+with an extra prefix or suf= fix on their names by giving `configure' the=0A+option `--program-prefix=3D= PREFIX' or `--program-suffix=3DSUFFIX'.=0A+=0A+Optional Features=0A+=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=0A+=0A+ Some packages pay a= ttention to `--enable-FEATURE' options to=0A+`configure', where FEATURE ind= icates an optional part of the package.=0A+They may also pay attention to `= --with-PACKAGE' options, where PACKAGE=0A+is something like `gnu-as' or `x'= (for the X Window System). The=0A+`README' should mention any `--enable-'= and `--with-' options that the=0A+package recognizes.=0A+=0A+ For packag= es that use the X Window System, `configure' can usually=0A+find the X incl= ude and library files automatically, but if it doesn't,=0A+you can use the = `configure' options `--x-includes=3DDIR' and=0A+`--x-libraries=3DDIR' to sp= ecify their locations.=0A+=0A+Specifying the System Type=0A+=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=0A+=0A+ T= here may be some features `configure' can not figure out=0A+automatically, = but needs to determine by the type of host the package=0A+will run on. Usu= ally `configure' can figure that out, but if it prints=0A+a message saying = it can not guess the host type, give it the=0A+`--host=3DTYPE' option. TYP= E can either be a short name for the system=0A+type, such as `sun4', or a c= anonical name with three fields:=0A+ CPU-COMPANY-SYSTEM=0A+=0A+See the = file `config.sub' for the possible values of each field. If=0A+`config.sub= ' isn't included in this package, then this package doesn't=0A+need to know= the host type.=0A+=0A+ If you are building compiler tools for cross-comp= iling, you can also=0A+use the `--target=3DTYPE' option to select the type = of system they will=0A+produce code for and the `--build=3DTYPE' option to = select the type of=0A+system on which you are compiling the package.=0A+=0A= +Sharing Defaults=0A+=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=0A+= =0A+ If you want to set default values for `configure' scripts to share,= =0A+you can create a site shell script called `config.site' that gives=0A+d= efault values for variables like `CC', `cache=5Ffile', and `prefix'.=0A+`co= nfigure' looks for `PREFIX/share/config.site' if it exists, then=0A+`PREFIX= /etc/config.site' if it exists. Or, you can set the=0A+`CONFIG=5FSITE' env= ironment variable to the location of the site script.=0A+A warning: not all= `configure' scripts look for a site script.=0A+=0A+Operation Controls=0A+= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=0A+=0A+ `configure= ' recognizes the following options to control how it=0A+operates.=0A+=0A+`-= -cache-file=3DFILE'=0A+ Use and save the results of the tests in FILE i= nstead of=0A+ `./config.cache'. Set FILE to `/dev/null' to disable cac= hing, for=0A+ debugging `configure'.=0A+=0A+`--help'=0A+ Print a su= mmary of the options to `configure', and exit.=0A+=0A+`--quiet'=0A+`--silen= t'=0A+`-q'=0A+ Do not print messages saying which checks are being made= . To=0A+ suppress all normal output, redirect it to `/dev/null' (any e= rror=0A+ messages will still be shown).=0A+=0A+`--srcdir=3DDIR'=0A+ = Look for the package's source code in directory DIR. Usually=0A+ `con= figure' can determine that directory automatically.=0A+=0A+`--version'=0A+ = Print the version of Autoconf used to generate the `configure'=0A+ = script, and exit.=0A+=0A+`configure' also accepts some other, not widely us= eful, options.=0Adiff --git a/utils/ffsb-6.0-rc2/LICENSE b/utils/ffsb-6.0-r= c2/LICENSE=0Anew file mode 100644=0Aindex 0000000..76d9f61=0A--- /dev/null= =0A+++ b/utils/ffsb-6.0-rc2/LICENSE=0A@@ -0,0 +1,347 @@=0A+ GNU GENERA= L PUBLIC LICENSE=0A+ Version 2, June 1991=0A+=0A+ Copyright (C) 198= 9, 1991 Free Software Foundation, Inc.=0A+ 59 Temple Place, Suite 330, = Boston, MA 02111-1307, USA=0A+ Everyone is permitted to copy and distribute= verbatim copies=0A+ of this license document, but changing it is not allow= ed.=0A+=0A+The Free Software Foundation has exempted Bash from the requirem= ent of=0A+Paragraph 2c of the General Public License. This is to say, ther= e is=0A+no requirement for Bash to print a notice when it is started=0A+int= eractively in the usual way. We made this exception because users=0A+and s= tandards expect shells not to print such messages. This=0A+exception appli= es to any program that serves as a shell and that is=0A+based primarily on = Bash as opposed to other GNU software.=0A+=0A+ Preamble=0A+=0A+ The = licenses for most software are designed to take away your=0A+freedom to sha= re and change it. By contrast, the GNU General Public=0A+License is intend= ed to guarantee your freedom to share and change free=0A+software--to make = sure the software is free for all its users. This=0A+General Public Licens= e applies to most of the Free Software=0A+Foundation's software and to any = other program whose authors commit to=0A+using it. (Some other Free Softwa= re Foundation software is covered by=0A+the GNU Library General Public Lice= nse instead.) You can apply it to=0A+your programs, too.=0A+=0A+ When we = speak of free software, we are referring to freedom, not=0A+price. Our Gen= eral Public Licenses are designed to make sure that you=0A+have the freedom= to distribute copies of free software (and charge for=0A+this service if y= ou wish), that you receive source code or can get it=0A+if you want it, tha= t you can change the software or use pieces of it=0A+in new free programs; = and that you know you can do these things.=0A+=0A+ To protect your rights,= we need to make restrictions that forbid=0A+anyone to deny you these right= s or to ask you to surrender the rights.=0A+These restrictions translate to= certain responsibilities for you if you=0A+distribute copies of the softwa= re, or if you modify it.=0A+=0A+ For example, if you distribute copies of = such a program, whether=0A+gratis or for a fee, you must give the recipient= s all the rights that=0A+you have. You must make sure that they, too, rece= ive or can get the=0A+source code. And you must show them these terms so t= hey know their=0A+rights.=0A+=0A+ We protect your rights with two steps: (= 1) copyright the software, and=0A+(2) offer you this license which gives yo= u legal permission to copy,=0A+distribute and/or modify the software.=0A+= =0A+ Also, for each author's protection and ours, we want to make certain= =0A+that everyone understands that there is no warranty for this free=0A+so= ftware. If the software is modified by someone else and passed on, we=0A+w= ant its recipients to know that what they have is not the original, so=0A+t= hat any problems introduced by others will not reflect on the original=0A+a= uthors' reputations.=0A+=0A+ Finally, any free program is threatened const= antly by software=0A+patents. We wish to avoid the danger that redistribut= ors of a free=0A+program will individually obtain patent licenses, in effec= t making the=0A+program proprietary. To prevent this, we have made it clea= r that any=0A+patent must be licensed for everyone's free use or not licens= ed at all.=0A+=0A+ The precise terms and conditions for copying, distribut= ion and=0A+modification follow.=0A+=0A+ GNU GENERAL PUBLIC LICENSE=0A+= TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION=0A+=0A+ = 0. This License applies to any program or other work which contains=0A+a n= otice placed by the copyright holder saying it may be distributed=0A+under = the terms of this General Public License. The "Program", below,=0A+refers = to any such program or work, and a "work based on the Program"=0A+means eit= her the Program or any derivative work under copyright law:=0A+that is to s= ay, a work containing the Program or a portion of it,=0A+either verbatim or= with modifications and/or translated into another=0A+language. (Hereinaft= er, translation is included without limitation in=0A+the term "modification= ".) Each licensee is addressed as "you".=0A+=0A+Activities other than copy= ing, distribution and modification are not=0A+covered by this License; they= are outside its scope. The act of=0A+running the Program is not restricte= d, and the output from the Program=0A+is covered only if its contents const= itute a work based on the=0A+Program (independent of having been made by ru= nning the Program).=0A+Whether that is true depends on what the Program doe= s.=0A+=0A+ 1. You may copy and distribute verbatim copies of the Program's= =0A+source code as you receive it, in any medium, provided that you=0A+cons= picuously and appropriately publish on each copy an appropriate=0A+copyrigh= t notice and disclaimer of warranty; keep intact all the=0A+notices that re= fer to this License and to the absence of any warranty;=0A+and give any oth= er recipients of the Program a copy of this License=0A+along with the Progr= am.=0A+=0A+You may charge a fee for the physical act of transferring a copy= , and=0A+you may at your option offer warranty protection in exchange for a= fee.=0A+=0A+ 2. You may modify your copy or copies of the Program or any = portion=0A+of it, thus forming a work based on the Program, and copy and=0A= +distribute such modifications or work under the terms of Section 1=0A+abov= e, provided that you also meet all of these conditions:=0A+=0A+ a) You m= ust cause the modified files to carry prominent notices=0A+ stating that= you changed the files and the date of any change.=0A+=0A+ b) You must c= ause any work that you distribute or publish, that in=0A+ whole or in pa= rt contains or is derived from the Program or any=0A+ part thereof, to b= e licensed as a whole at no charge to all third=0A+ parties under the te= rms of this License.=0A+=0A+ c) If the modified program normally reads c= ommands interactively=0A+ when run, you must cause it, when started runn= ing for such=0A+ interactive use in the most ordinary way, to print or d= isplay an=0A+ announcement including an appropriate copyright notice and= a=0A+ notice that there is no warranty (or else, saying that you provid= e=0A+ a warranty) and that users may redistribute the program under=0A+ = these conditions, and telling the user how to view a copy of this=0A+ = License. (Exception: if the Program itself is interactive but=0A+ does= not normally print such an announcement, your work based on=0A+ the Pro= gram is not required to print an announcement.)=0A+=0A+These requirements a= pply to the modified work as a whole. If=0A+identifiable sections of that = work are not derived from the Program,=0A+and can be reasonably considered = independent and separate works in=0A+themselves, then this License, and its= terms, do not apply to those=0A+sections when you distribute them as separ= ate works. But when you=0A+distribute the same sections as part of a whole= which is a work based=0A+on the Program, the distribution of the whole mus= t be on the terms of=0A+this License, whose permissions for other licensees= extend to the=0A+entire whole, and thus to each and every part regardless = of who wrote it.=0A+=0A+Thus, it is not the intent of this section to claim= rights or contest=0A+your rights to work written entirely by you; rather, = the intent is to=0A+exercise the right to control the distribution of deriv= ative or=0A+collective works based on the Program.=0A+=0A+In addition, mere= aggregation of another work not based on the Program=0A+with the Program (= or with a work based on the Program) on a volume of=0A+a storage or distrib= ution medium does not bring the other work under=0A+the scope of this Licen= se.=0A+=0A+ 3. You may copy and distribute the Program (or a work based on= it,=0A+under Section 2) in object code or executable form under the terms = of=0A+Sections 1 and 2 above provided that you also do one of the following= :=0A+=0A+ a) Accompany it with the complete corresponding machine-readab= le=0A+ source code, which must be distributed under the terms of Section= s=0A+ 1 and 2 above on a medium customarily used for software interchang= e; or,=0A+=0A+ b) Accompany it with a written offer, valid for at least = three=0A+ years, to give any third party, for a charge no more than your= =0A+ cost of physically performing source distribution, a complete=0A+ = machine-readable copy of the corresponding source code, to be=0A+ dist= ributed under the terms of Sections 1 and 2 above on a medium=0A+ custom= arily used for software interchange; or,=0A+=0A+ c) Accompany it with th= e information you received as to the offer=0A+ to distribute correspondi= ng source code. (This alternative is=0A+ allowed only for noncommercial= distribution and only if you=0A+ received the program in object code or= executable form with such=0A+ an offer, in accord with Subsection b abo= ve.)=0A+=0A+The source code for a work means the preferred form of the work= for=0A+making modifications to it. For an executable work, complete sourc= e=0A+code means all the source code for all modules it contains, plus any= =0A+associated interface definition files, plus the scripts used to=0A+cont= rol compilation and installation of the executable. However, as a=0A+speci= al exception, the source code distributed need not include=0A+anything that= is normally distributed (in either source or binary=0A+form) with the majo= r components (compiler, kernel, and so on) of the=0A+operating system on wh= ich the executable runs, unless that component=0A+itself accompanies the ex= ecutable.=0A+=0A+If distribution of executable or object code is made by of= fering=0A+access to copy from a designated place, then offering equivalent= =0A+access to copy the source code from the same place counts as=0A+distrib= ution of the source code, even though third parties are not=0A+compelled to= copy the source along with the object code.=0A+=0A+ 4. You may not copy, = modify, sublicense, or distribute the Program=0A+except as expressly provid= ed under this License. Any attempt=0A+otherwise to copy, modify, sublicens= e or distribute the Program is=0A+void, and will automatically terminate yo= ur rights under this License.=0A+However, parties who have received copies,= or rights, from you under=0A+this License will not have their licenses ter= minated so long as such=0A+parties remain in full compliance.=0A+=0A+ 5. Y= ou are not required to accept this License, since you have not=0A+signed it= . However, nothing else grants you permission to modify or=0A+distribute t= he Program or its derivative works. These actions are=0A+prohibited by law= if you do not accept this License. Therefore, by=0A+modifying or distribu= ting the Program (or any work based on the=0A+Program), you indicate your a= cceptance of this License to do so, and=0A+all its terms and conditions for= copying, distributing or modifying=0A+the Program or works based on it.=0A= +=0A+ 6. Each time you redistribute the Program (or any work based on the= =0A+Program), the recipient automatically receives a license from the=0A+or= iginal licensor to copy, distribute or modify the Program subject to=0A+the= se terms and conditions. You may not impose any further=0A+restrictions on= the recipients' exercise of the rights granted herein.=0A+You are not resp= onsible for enforcing compliance by third parties to=0A+this License.=0A+= =0A+ 7. If, as a consequence of a court judgment or allegation of patent= =0A+infringement or for any other reason (not limited to patent issues),=0A= +conditions are imposed on you (whether by court order, agreement or=0A+oth= erwise) that contradict the conditions of this License, they do not=0A+excu= se you from the conditions of this License. If you cannot=0A+distribute so= as to satisfy simultaneously your obligations under this=0A+License and an= y other pertinent obligations, then as a consequence you=0A+may not distrib= ute the Program at all. For example, if a patent=0A+license would not perm= it royalty-free redistribution of the Program by=0A+all those who receive c= opies directly or indirectly through you, then=0A+the only way you could sa= tisfy both it and this License would be to=0A+refrain entirely from distrib= ution of the Program.=0A+=0A+If any portion of this section is held invalid= or unenforceable under=0A+any particular circumstance, the balance of the = section is intended to=0A+apply and the section as a whole is intended to a= pply in other=0A+circumstances.=0A+=0A+It is not the purpose of this sectio= n to induce you to infringe any=0A+patents or other property right claims o= r to contest validity of any=0A+such claims; this section has the sole purp= ose of protecting the=0A+integrity of the free software distribution system= , which is=0A+implemented by public license practices. Many people have ma= de=0A+generous contributions to the wide range of software distributed=0A+t= hrough that system in reliance on consistent application of that=0A+system;= it is up to the author/donor to decide if he or she is willing=0A+to distr= ibute software through any other system and a licensee cannot=0A+impose tha= t choice.=0A+=0A+This section is intended to make thoroughly clear what is = believed to=0A+be a consequence of the rest of this License.=0A+=0A+ 8. If= the distribution and/or use of the Program is restricted in=0A+certain cou= ntries either by patents or by copyrighted interfaces, the=0A+original copy= right holder who places the Program under this License=0A+may add an explic= it geographical distribution limitation excluding=0A+those countries, so th= at distribution is permitted only in or among=0A+countries not thus exclude= d. In such case, this License incorporates=0A+the limitation as if written= in the body of this License.=0A+=0A+ 9. The Free Software Foundation may = publish revised and/or new versions=0A+of the General Public License from t= ime to time. Such new versions will=0A+be similar in spirit to the present= version, but may differ in detail to=0A+address new problems or concerns.= =0A+=0A+Each version is given a distinguishing version number. If the Prog= ram=0A+specifies a version number of this License which applies to it and "= any=0A+later version", you have the option of following the terms and condi= tions=0A+either of that version or of any later version published by the Fr= ee=0A+Software Foundation. If the Program does not specify a version numbe= r of=0A+this License, you may choose any version ever published by the Free= Software=0A+Foundation.=0A+=0A+ 10. If you wish to incorporate parts of t= he Program into other free=0A+programs whose distribution conditions are di= fferent, write to the author=0A+to ask for permission. For software which = is copyrighted by the Free=0A+Software Foundation, write to the Free Softwa= re Foundation; we sometimes=0A+make exceptions for this. Our decision will= be guided by the two goals=0A+of preserving the free status of all derivat= ives of our free software and=0A+of promoting the sharing and reuse of soft= ware generally.=0A+=0A+ NO WARRANTY=0A+=0A+ 11. BECAUSE THE PROGRAM = IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY=0A+FOR THE PROGRAM, TO THE= EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN=0A+OTHERWISE STATED IN WR= ITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES=0A+PROVIDE THE PROGRAM "AS= IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED=0A+OR IMPLIED, INCLUDIN= G, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF=0A+MERCHANTABILITY AND FIT= NESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS=0A+TO THE QUALITY AND PE= RFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE=0A+PROGRAM PROVE DEFECTIV= E, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,=0A+REPAIR OR CORRECTION.= =0A+=0A+ 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN= WRITING=0A+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AN= D/OR=0A+REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR D= AMAGES,=0A+INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMA= GES ARISING=0A+OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BU= T NOT LIMITED=0A+TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSE= S SUSTAINED BY=0A+YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERA= TE WITH ANY OTHER=0A+PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN= ADVISED OF THE=0A+POSSIBILITY OF SUCH DAMAGES.=0A+=0A+ END OF TERMS = AND CONDITIONS=0A+=0A+ Appendix: How to Apply These Terms to Your New Progr= ams=0A+=0A+ If you develop a new program, and you want it to be of the gre= atest=0A+possible use to the public, the best way to achieve this is to mak= e it=0A+free software which everyone can redistribute and change under thes= e terms.=0A+=0A+ To do so, attach the following notices to the program. I= t is safest=0A+to attach them to the start of each source file to most effe= ctively=0A+convey the exclusion of warranty; and each file should have at l= east=0A+the "copyright" line and a pointer to where the full notice is foun= d.=0A+=0A+ =0A+ Copyright (C) 19yy =0A+=0A+ This prog= ram is free software; you can redistribute it and/or modify=0A+ it under= the terms of the GNU General Public License as published by=0A+ the Fre= e Software Foundation; either version 2 of the License, or=0A+ (at your = option) any later version.=0A+=0A+ This program is distributed in the ho= pe that it will be useful,=0A+ but WITHOUT ANY WARRANTY; without even th= e implied warranty of=0A+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PU= RPOSE. See the=0A+ GNU General Public License for more details.=0A+=0A+= You should have received a copy of the GNU General Public License=0A+ = along with this program; if not, write to the Free Software=0A+ Founda= tion, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA=0A+=0A+= Also add information on how to contact you by electronic and paper mail.=0A= +=0A+If the program is interactive, make it output a short notice like this= =0A+when it starts in an interactive mode:=0A+=0A+ Gnomovision version 6= 9, Copyright (C) 19yy name of author=0A+ Gnomovision comes with ABSOLUTE= LY NO WARRANTY; for details type `show w'.=0A+ This is free software, an= d you are welcome to redistribute it=0A+ under certain conditions; type = `show c' for details.=0A+=0A+The hypothetical commands `show w' and `show c= ' should show the appropriate=0A+parts of the General Public License. Of c= ourse, the commands you use may=0A+be called something other than `show w' = and `show c'; they could even be=0A+mouse-clicks or menu items--whatever su= its your program.=0A+=0A+You should also get your employer (if you work as = a programmer) or your=0A+school, if any, to sign a "copyright disclaimer" f= or the program, if=0A+necessary. Here is a sample; alter the names:=0A+=0A= + Yoyodyne, Inc., hereby disclaims all copyright interest in the program= =0A+ `Gnomovision' (which makes passes at compilers) written by James Hack= er.=0A+=0A+ , 1 April 1989=0A+ Ty Coon, President o= f Vice=0A+=0A+This General Public License does not permit incorporating you= r program into=0A+proprietary programs. If your program is a subroutine li= brary, you may=0A+consider it more useful to permit linking proprietary app= lications with the=0A+library. If this is what you want to do, use the GNU= Library General=0A+Public License instead of this License.=0Adiff --git a/= utils/ffsb-6.0-rc2/Makefile.am b/utils/ffsb-6.0-rc2/Makefile.am=0Anew file = mode 100644=0Aindex 0000000..9ed678b=0A--- /dev/null=0A+++ b/utils/ffsb-6.0= -rc2/Makefile.am=0A@@ -0,0 +1,46 @@=0A+bin=5FPROGRAMS =3D ffsb #ffsb=5Ftest= =0A+ffsb=5FSOURCES =3D \=0A+ fileops.c \=0A+ rand.c \=0A+ config.h \=0A+ fi= leops.h \=0A+ ffsb.h \=0A+ rand.h \=0A+ main.c \=0A+ fh.h \=0A+ fh.c \=0A+ = filelist.c \=0A+ filelist.h \=0A+ metaops.c \=0A+ metaops.h \=0A+ rwlock.h = \=0A+ rwlock.c \=0A+ cirlist.c \=0A+ cirlist.h \=0A+ rbt.c \=0A+ rbt.h \=0A= + ffsb=5Ftg.h \=0A+ ffsb=5Ftg.c \=0A+ ffsb=5Ffs.h \=0A+ ffsb=5Ffs.c \=0A+ f= fsb=5Fthread.c \=0A+ ffsb=5Fthread.h \=0A+ ffsb=5Fop.h \=0A+ ffsb=5Fop.c \= =0A+ util.h \=0A+ util.c \=0A+ parser.c \=0A+ parser.h \=0A+ ffsb=5Ffc.c \= =0A+ ffsb=5Fstats.c \=0A+ list.c=0A+=0A+#ffsb=5Ftest=5FSOURCES =3D config.h= fileops.h ffsb.h rand.h fh.h filelist.h metaops.h rwlock.h cirlist.h rbt.h= ffsb=5Ftg.h ffsb=5Ffs.h ffsb=5Fthread.h ffsb=5Fop.h util.h parser.c parser= .h ffsb=5Ftest.c=0A+=0A+EXTRA=5FDIST =3D *.txt *.tex=0A+=0A+AM=5FCFLAGS =3D= -D=5FGNU=5FSOURCE=0A+=0A+#CFLAGS +=3D -Wall -Werror -g -Wconversion -ansi= =0A+#LDFLAGS +=3D -lefence=0A+=0Adiff --git a/utils/ffsb-6.0-rc2/Makefile.i= n b/utils/ffsb-6.0-rc2/Makefile.in=0Anew file mode 100644=0Aindex 0000000..= 131dd5f=0A--- /dev/null=0A+++ b/utils/ffsb-6.0-rc2/Makefile.in=0A@@ -0,0 +1= ,628 @@=0A+# Makefile.in generated by automake 1.10.1 from Makefile.am.=0A+= # @configure=5Finput@=0A+=0A+# Copyright (C) 1994, 1995, 1996, 1997, 1998, = 1999, 2000, 2001, 2002,=0A+# 2003, 2004, 2005, 2006, 2007, 2008 Free Softw= are Foundation, Inc.=0A+# This Makefile.in is free software; the Free Softw= are Foundation=0A+# gives unlimited permission to copy and/or distribute it= ,=0A+# with or without modifications, as long as this notice is preserved.= =0A+=0A+# This program is distributed in the hope that it will be useful,= =0A+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without=0A+= # even the implied warranty of MERCHANTABILITY or FITNESS FOR A=0A+# PARTIC= ULAR PURPOSE.=0A+=0A+@SET=5FMAKE@=0A+=0A+VPATH =3D @srcdir@=0A+pkgdatadir = =3D $(datadir)/@PACKAGE@=0A+pkglibdir =3D $(libdir)/@PACKAGE@=0A+pkginclude= dir =3D $(includedir)/@PACKAGE@=0A+am=5F=5Fcd =3D CDPATH=3D"$${ZSH=5FVERSIO= N+.}$(PATH=5FSEPARATOR)" && cd=0A+install=5Fsh=5FDATA =3D $(install=5Fsh) -= c -m 644=0A+install=5Fsh=5FPROGRAM =3D $(install=5Fsh) -c=0A+install=5Fsh= =5FSCRIPT =3D $(install=5Fsh) -c=0A+INSTALL=5FHEADER =3D $(INSTALL=5FDATA)= =0A+transform =3D $(program=5Ftransform=5Fname)=0A+NORMAL=5FINSTALL =3D := =0A+PRE=5FINSTALL =3D :=0A+POST=5FINSTALL =3D :=0A+NORMAL=5FUNINSTALL =3D := =0A+PRE=5FUNINSTALL =3D :=0A+POST=5FUNINSTALL =3D :=0A+build=5Ftriplet =3D = @build@=0A+host=5Ftriplet =3D @host@=0A+bin=5FPROGRAMS =3D ffsb$(EXEEXT)=0A= +subdir =3D .=0A+DIST=5FCOMMON =3D README $(am=5F=5Fconfigure=5Fdeps) $(src= dir)/Makefile.am \=0A+ $(srcdir)/Makefile.in $(srcdir)/config.h.in \=0A+ $(= top=5Fsrcdir)/configure AUTHORS COPYING ChangeLog INSTALL NEWS \=0A+ config= .guess config.sub depcomp install-sh missing \=0A+ mkinstalldirs=0A+ACLOCAL= =5FM4 =3D $(top=5Fsrcdir)/aclocal.m4=0A+am=5F=5Faclocal=5Fm4=5Fdeps =3D $(t= op=5Fsrcdir)/configure.in=0A+am=5F=5Fconfigure=5Fdeps =3D $(am=5F=5Faclocal= =5Fm4=5Fdeps) $(CONFIGURE=5FDEPENDENCIES) \=0A+ $(ACLOCAL=5FM4)=0A+am=5F=5F= CONFIG=5FDISTCLEAN=5FFILES =3D config.status config.cache config.log \=0A+ = configure.lineno config.status.lineno=0A+mkinstalldirs =3D $(SHELL) $(top= =5Fsrcdir)/mkinstalldirs=0A+CONFIG=5FHEADER =3D config.h=0A+CONFIG=5FCLEAN= =5FFILES =3D=0A+am=5F=5Finstalldirs =3D "$(DESTDIR)$(bindir)"=0A+binPROGRAM= S=5FINSTALL =3D $(INSTALL=5FPROGRAM)=0A+PROGRAMS =3D $(bin=5FPROGRAMS)=0A+a= m=5Fffsb=5FOBJECTS =3D fileops.$(OBJEXT) rand.$(OBJEXT) main.$(OBJEXT) \=0A= + fh.$(OBJEXT) filelist.$(OBJEXT) metaops.$(OBJEXT) \=0A+ rwlock.$(OBJEXT) = cirlist.$(OBJEXT) rbt.$(OBJEXT) \=0A+ ffsb=5Ftg.$(OBJEXT) ffsb=5Ffs.$(OBJEX= T) ffsb=5Fthread.$(OBJEXT) \=0A+ ffsb=5Fop.$(OBJEXT) util.$(OBJEXT) parser.= $(OBJEXT) \=0A+ ffsb=5Ffc.$(OBJEXT) ffsb=5Fstats.$(OBJEXT) list.$(OBJEXT)= =0A+ffsb=5FOBJECTS =3D $(am=5Fffsb=5FOBJECTS)=0A+ffsb=5FLDADD =3D $(LDADD)= =0A+DEFAULT=5FINCLUDES =3D -I.@am=5F=5Fisrc@=0A+depcomp =3D $(SHELL) $(top= =5Fsrcdir)/depcomp=0A+am=5F=5Fdepfiles=5Fmaybe =3D depfiles=0A+COMPILE =3D = $(CC) $(DEFS) $(DEFAULT=5FINCLUDES) $(INCLUDES) $(AM=5FCPPFLAGS) \=0A+ $(CP= PFLAGS) $(AM=5FCFLAGS) $(CFLAGS)=0A+CCLD =3D $(CC)=0A+LINK =3D $(CCLD) $(AM= =5FCFLAGS) $(CFLAGS) $(AM=5FLDFLAGS) $(LDFLAGS) -o $@=0A+SOURCES =3D $(ffsb= =5FSOURCES)=0A+DIST=5FSOURCES =3D $(ffsb=5FSOURCES)=0A+ETAGS =3D etags=0A+C= TAGS =3D ctags=0A+DISTFILES =3D $(DIST=5FCOMMON) $(DIST=5FSOURCES) $(TEXINF= OS) $(EXTRA=5FDIST)=0A+distdir =3D $(PACKAGE)-$(VERSION)=0A+top=5Fdistdir = =3D $(distdir)=0A+am=5F=5Fremove=5Fdistdir =3D \=0A+ { test ! -d $(distdir= ) \=0A+ || { find $(distdir) -type d ! -perm -200 -exec chmod u+w {} ';'= \=0A+ && rm -fr $(distdir); }; }=0A+DIST=5FARCHIVES =3D $(distdir)= .tar.gz=0A+GZIP=5FENV =3D --best=0A+distuninstallcheck=5Flistfiles =3D find= . -type f -print=0A+distcleancheck=5Flistfiles =3D find . -type f -print= =0A+ACLOCAL =3D @ACLOCAL@=0A+AMTAR =3D @AMTAR@=0A+AUTOCONF =3D @AUTOCONF@= =0A+AUTOHEADER =3D @AUTOHEADER@=0A+AUTOMAKE =3D @AUTOMAKE@=0A+AWK =3D @AWK@= =0A+CC =3D @CC@=0A+CCDEPMODE =3D @CCDEPMODE@=0A+CFLAGS =3D @CFLAGS@=0A+CPP = =3D @CPP@=0A+CPPFLAGS =3D @CPPFLAGS@=0A+CYGPATH=5FW =3D @CYGPATH=5FW@=0A+DE= FS =3D @DEFS@=0A+DEPDIR =3D @DEPDIR@=0A+ECHO=5FC =3D @ECHO=5FC@=0A+ECHO=5FN= =3D @ECHO=5FN@=0A+ECHO=5FT =3D @ECHO=5FT@=0A+EGREP =3D @EGREP@=0A+EXEEXT = =3D @EXEEXT@=0A+GREP =3D @GREP@=0A+INSTALL =3D @INSTALL@=0A+INSTALL=5FDATA = =3D @INSTALL=5FDATA@=0A+INSTALL=5FPROGRAM =3D @INSTALL=5FPROGRAM@=0A+INSTAL= L=5FSCRIPT =3D @INSTALL=5FSCRIPT@=0A+INSTALL=5FSTRIP=5FPROGRAM =3D @INSTALL= =5FSTRIP=5FPROGRAM@=0A+LDFLAGS =3D @LDFLAGS@=0A+LIBOBJS =3D @LIBOBJS@=0A+LI= BS =3D @LIBS@=0A+LTLIBOBJS =3D @LTLIBOBJS@=0A+MAKEINFO =3D @MAKEINFO@=0A+MK= DIR=5FP =3D @MKDIR=5FP@=0A+OBJEXT =3D @OBJEXT@=0A+PACKAGE =3D @PACKAGE@=0A+= PACKAGE=5FBUGREPORT =3D @PACKAGE=5FBUGREPORT@=0A+PACKAGE=5FNAME =3D @PACKAG= E=5FNAME@=0A+PACKAGE=5FSTRING =3D @PACKAGE=5FSTRING@=0A+PACKAGE=5FTARNAME = =3D @PACKAGE=5FTARNAME@=0A+PACKAGE=5FVERSION =3D @PACKAGE=5FVERSION@=0A+PAT= H=5FSEPARATOR =3D @PATH=5FSEPARATOR@=0A+SET=5FMAKE =3D @SET=5FMAKE@=0A+SHEL= L =3D @SHELL@=0A+STRIP =3D @STRIP@=0A+VERSION =3D @VERSION@=0A+abs=5Fbuildd= ir =3D @abs=5Fbuilddir@=0A+abs=5Fsrcdir =3D @abs=5Fsrcdir@=0A+abs=5Ftop=5Fb= uilddir =3D @abs=5Ftop=5Fbuilddir@=0A+abs=5Ftop=5Fsrcdir =3D @abs=5Ftop=5Fs= rcdir@=0A+ac=5Fct=5FCC =3D @ac=5Fct=5FCC@=0A+am=5F=5Finclude =3D @am=5F=5Fi= nclude@=0A+am=5F=5Fleading=5Fdot =3D @am=5F=5Fleading=5Fdot@=0A+am=5F=5Fquo= te =3D @am=5F=5Fquote@=0A+am=5F=5Ftar =3D @am=5F=5Ftar@=0A+am=5F=5Funtar = =3D @am=5F=5Funtar@=0A+bindir =3D @bindir@=0A+build =3D @build@=0A+build=5F= alias =3D @build=5Falias@=0A+build=5Fcpu =3D @build=5Fcpu@=0A+build=5Fos = =3D @build=5Fos@=0A+build=5Fvendor =3D @build=5Fvendor@=0A+builddir =3D @bu= ilddir@=0A+datadir =3D @datadir@=0A+datarootdir =3D @datarootdir@=0A+docdir= =3D @docdir@=0A+dvidir =3D @dvidir@=0A+exec=5Fprefix =3D @exec=5Fprefix@= =0A+host =3D @host@=0A+host=5Falias =3D @host=5Falias@=0A+host=5Fcpu =3D @h= ost=5Fcpu@=0A+host=5Fos =3D @host=5Fos@=0A+host=5Fvendor =3D @host=5Fvendor= @=0A+htmldir =3D @htmldir@=0A+includedir =3D @includedir@=0A+infodir =3D @i= nfodir@=0A+install=5Fsh =3D @install=5Fsh@=0A+libdir =3D @libdir@=0A+libexe= cdir =3D @libexecdir@=0A+localedir =3D @localedir@=0A+localstatedir =3D @lo= calstatedir@=0A+mandir =3D @mandir@=0A+mkdir=5Fp =3D @mkdir=5Fp@=0A+oldincl= udedir =3D @oldincludedir@=0A+pdfdir =3D @pdfdir@=0A+prefix =3D @prefix@=0A= +program=5Ftransform=5Fname =3D @program=5Ftransform=5Fname@=0A+psdir =3D @= psdir@=0A+sbindir =3D @sbindir@=0A+sharedstatedir =3D @sharedstatedir@=0A+s= rcdir =3D @srcdir@=0A+sysconfdir =3D @sysconfdir@=0A+target=5Falias =3D @ta= rget=5Falias@=0A+top=5Fbuilddir =3D @top=5Fbuilddir@=0A+top=5Fsrcdir =3D @t= op=5Fsrcdir@=0A+ffsb=5FSOURCES =3D \=0A+ fileops.c \=0A+ rand.c \=0A+ confi= g.h \=0A+ fileops.h \=0A+ ffsb.h \=0A+ rand.h \=0A+ main.c \=0A+ fh.h \=0A+= fh.c \=0A+ filelist.c \=0A+ filelist.h \=0A+ metaops.c \=0A+ metaops.h \= =0A+ rwlock.h \=0A+ rwlock.c \=0A+ cirlist.c \=0A+ cirlist.h \=0A+ rbt.c \= =0A+ rbt.h \=0A+ ffsb=5Ftg.h \=0A+ ffsb=5Ftg.c \=0A+ ffsb=5Ffs.h \=0A+ ffsb= =5Ffs.c \=0A+ ffsb=5Fthread.c \=0A+ ffsb=5Fthread.h \=0A+ ffsb=5Fop.h \=0A+= ffsb=5Fop.c \=0A+ util.h \=0A+ util.c \=0A+ parser.c \=0A+ parser.h \=0A+ = ffsb=5Ffc.c \=0A+ ffsb=5Fstats.c \=0A+ list.c=0A+=0A+=0A+#ffsb=5Ftest=5FSOU= RCES =3D config.h fileops.h ffsb.h rand.h fh.h filelist.h metaops.h rwlock.= h cirlist.h rbt.h ffsb=5Ftg.h ffsb=5Ffs.h ffsb=5Fthread.h ffsb=5Fop.h util.= h parser.c parser.h ffsb=5Ftest.c=0A+EXTRA=5FDIST =3D *.txt *.tex=0A+AM=5FC= FLAGS =3D -D=5FGNU=5FSOURCE=0A+all: config.h=0A+ $(MAKE) $(AM=5FMAKEFLAGS) = all-am=0A+=0A+.SUFFIXES:=0A+.SUFFIXES: .c .o .obj=0A+am--refresh:=0A+ @:=0A= +$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am=5F=5Fconfigure=5Fdeps)= =0A+ @for dep in $?; do \=0A+ case '$(am=5F=5Fconfigure=5Fdeps)' in \=0A+= *$$dep*) \=0A+ echo ' cd $(srcdir) && $(AUTOMAKE) --gnu '; \=0A+= cd $(srcdir) && $(AUTOMAKE) --gnu \=0A+ && exit 0; \=0A+ exi= t 1;; \=0A+ esac; \=0A+ done; \=0A+ echo ' cd $(top=5Fsrcdir) && $(AUTOMA= KE) --gnu Makefile'; \=0A+ cd $(top=5Fsrcdir) && \=0A+ $(AUTOMAKE) --gnu= Makefile=0A+.PRECIOUS: Makefile=0A+Makefile: $(srcdir)/Makefile.in $(top= =5Fbuilddir)/config.status=0A+ @case '$?' in \=0A+ *config.status*) \=0A+= echo ' $(SHELL) ./config.status'; \=0A+ $(SHELL) ./config.status;;= \=0A+ *) \=0A+ echo ' cd $(top=5Fbuilddir) && $(SHELL) ./config.stat= us $@ $(am=5F=5Fdepfiles=5Fmaybe)'; \=0A+ cd $(top=5Fbuilddir) && $(SHE= LL) ./config.status $@ $(am=5F=5Fdepfiles=5Fmaybe);; \=0A+ esac;=0A+=0A+$(t= op=5Fbuilddir)/config.status: $(top=5Fsrcdir)/configure $(CONFIG=5FSTATUS= =5FDEPENDENCIES)=0A+ $(SHELL) ./config.status --recheck=0A+=0A+$(top=5Fsrcd= ir)/configure: $(am=5F=5Fconfigure=5Fdeps)=0A+ cd $(srcdir) && $(AUTOCONF)= =0A+$(ACLOCAL=5FM4): $(am=5F=5Faclocal=5Fm4=5Fdeps)=0A+ cd $(srcdir) && $(= ACLOCAL) $(ACLOCAL=5FAMFLAGS)=0A+=0A+config.h: stamp-h1=0A+ @if test ! -f $= @; then \=0A+ rm -f stamp-h1; \=0A+ $(MAKE) $(AM=5FMAKEFLAGS) stamp-h1;= \=0A+ else :; fi=0A+=0A+stamp-h1: $(srcdir)/config.h.in $(top=5Fbuilddir)/= config.status=0A+ @rm -f stamp-h1=0A+ cd $(top=5Fbuilddir) && $(SHELL) ./co= nfig.status config.h=0A+$(srcdir)/config.h.in: $(am=5F=5Fconfigure=5Fdeps)= =0A+ cd $(top=5Fsrcdir) && $(AUTOHEADER)=0A+ rm -f stamp-h1=0A+ touch $@=0A= +=0A+distclean-hdr:=0A+ -rm -f config.h stamp-h1=0A+install-binPROGRAMS: $(= bin=5FPROGRAMS)=0A+ @$(NORMAL=5FINSTALL)=0A+ test -z "$(bindir)" || $(MKDIR= =5FP) "$(DESTDIR)$(bindir)"=0A+ @list=3D'$(bin=5FPROGRAMS)'; for p in $$lis= t; do \=0A+ p1=3D`echo $$p|sed 's/$(EXEEXT)$$//'`; \=0A+ if test -f $$p= \=0A+ ; then \=0A+ f=3D`echo "$$p1" | sed 's,^.*/,,;$(transform);s/$= $/$(EXEEXT)/'`; \=0A+ echo " $(INSTALL=5FPROGRAM=5FENV) $(binPROGRAMS=5F= INSTALL) '$$p' '$(DESTDIR)$(bindir)/$$f'"; \=0A+ $(INSTALL=5FPROGRAM=5FE= NV) $(binPROGRAMS=5FINSTALL) "$$p" "$(DESTDIR)$(bindir)/$$f" || exit 1; \= =0A+ else :; fi; \=0A+ done=0A+=0A+uninstall-binPROGRAMS:=0A+ @$(NORMAL= =5FUNINSTALL)=0A+ @list=3D'$(bin=5FPROGRAMS)'; for p in $$list; do \=0A+ = f=3D`echo "$$p" | sed 's,^.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)= /'`; \=0A+ echo " rm -f '$(DESTDIR)$(bindir)/$$f'"; \=0A+ rm -f "$(DEST= DIR)$(bindir)/$$f"; \=0A+ done=0A+=0A+clean-binPROGRAMS:=0A+ -test -z "$(bi= n=5FPROGRAMS)" || rm -f $(bin=5FPROGRAMS)=0A+ffsb$(EXEEXT): $(ffsb=5FOBJECT= S) $(ffsb=5FDEPENDENCIES)=0A+ @rm -f ffsb$(EXEEXT)=0A+ $(LINK) $(ffsb=5FOBJ= ECTS) $(ffsb=5FLDADD) $(LIBS)=0A+=0A+mostlyclean-compile:=0A+ -rm -f *.$(OB= JEXT)=0A+=0A+distclean-compile:=0A+ -rm -f *.tab.c=0A+=0A+@AMDEP=5FTRUE@@am= =5F=5Finclude@ @am=5F=5Fquote@./$(DEPDIR)/cirlist.Po@am=5F=5Fquote@=0A+@AMD= EP=5FTRUE@@am=5F=5Finclude@ @am=5F=5Fquote@./$(DEPDIR)/ffsb=5Ffc.Po@am=5F= =5Fquote@=0A+@AMDEP=5FTRUE@@am=5F=5Finclude@ @am=5F=5Fquote@./$(DEPDIR)/ffs= b=5Ffs.Po@am=5F=5Fquote@=0A+@AMDEP=5FTRUE@@am=5F=5Finclude@ @am=5F=5Fquote@= ./$(DEPDIR)/ffsb=5Fop.Po@am=5F=5Fquote@=0A+@AMDEP=5FTRUE@@am=5F=5Finclude@ = @am=5F=5Fquote@./$(DEPDIR)/ffsb=5Fstats.Po@am=5F=5Fquote@=0A+@AMDEP=5FTRUE@= @am=5F=5Finclude@ @am=5F=5Fquote@./$(DEPDIR)/ffsb=5Ftg.Po@am=5F=5Fquote@=0A= +@AMDEP=5FTRUE@@am=5F=5Finclude@ @am=5F=5Fquote@./$(DEPDIR)/ffsb=5Fthread.P= o@am=5F=5Fquote@=0A+@AMDEP=5FTRUE@@am=5F=5Finclude@ @am=5F=5Fquote@./$(DEPD= IR)/fh.Po@am=5F=5Fquote@=0A+@AMDEP=5FTRUE@@am=5F=5Finclude@ @am=5F=5Fquote@= ./$(DEPDIR)/filelist.Po@am=5F=5Fquote@=0A+@AMDEP=5FTRUE@@am=5F=5Finclude@ @= am=5F=5Fquote@./$(DEPDIR)/fileops.Po@am=5F=5Fquote@=0A+@AMDEP=5FTRUE@@am=5F= =5Finclude@ @am=5F=5Fquote@./$(DEPDIR)/list.Po@am=5F=5Fquote@=0A+@AMDEP=5FT= RUE@@am=5F=5Finclude@ @am=5F=5Fquote@./$(DEPDIR)/main.Po@am=5F=5Fquote@=0A+= @AMDEP=5FTRUE@@am=5F=5Finclude@ @am=5F=5Fquote@./$(DEPDIR)/metaops.Po@am=5F= =5Fquote@=0A+@AMDEP=5FTRUE@@am=5F=5Finclude@ @am=5F=5Fquote@./$(DEPDIR)/par= ser.Po@am=5F=5Fquote@=0A+@AMDEP=5FTRUE@@am=5F=5Finclude@ @am=5F=5Fquote@./$= (DEPDIR)/rand.Po@am=5F=5Fquote@=0A+@AMDEP=5FTRUE@@am=5F=5Finclude@ @am=5F= =5Fquote@./$(DEPDIR)/rbt.Po@am=5F=5Fquote@=0A+@AMDEP=5FTRUE@@am=5F=5Finclud= e@ @am=5F=5Fquote@./$(DEPDIR)/rwlock.Po@am=5F=5Fquote@=0A+@AMDEP=5FTRUE@@am= =5F=5Finclude@ @am=5F=5Fquote@./$(DEPDIR)/util.Po@am=5F=5Fquote@=0A+=0A+.c.= o:=0A+@am=5F=5FfastdepCC=5FTRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*= .Tpo -c -o $@ $<=0A+@am=5F=5FfastdepCC=5FTRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEP= DIR)/$*.Po=0A+@AMDEP=5FTRUE@@am=5F=5FfastdepCC=5FFALSE@ source=3D'$<' objec= t=3D'$@' libtool=3Dno @AMDEPBACKSLASH@=0A+@AMDEP=5FTRUE@@am=5F=5FfastdepCC= =5FFALSE@ DEPDIR=3D$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@=0A+@a= m=5F=5FfastdepCC=5FFALSE@ $(COMPILE) -c $<=0A+=0A+.c.obj:=0A+@am=5F=5Ffastd= epCC=5FTRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYG= PATH=5FW) '$<'`=0A+@am=5F=5FfastdepCC=5FTRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPD= IR)/$*.Po=0A+@AMDEP=5FTRUE@@am=5F=5FfastdepCC=5FFALSE@ source=3D'$<' object= =3D'$@' libtool=3Dno @AMDEPBACKSLASH@=0A+@AMDEP=5FTRUE@@am=5F=5FfastdepCC= =5FFALSE@ DEPDIR=3D$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@=0A+@a= m=5F=5FfastdepCC=5FFALSE@ $(COMPILE) -c `$(CYGPATH=5FW) '$<'`=0A+=0A+ID: $(= HEADERS) $(SOURCES) $(LISP) $(TAGS=5FFILES)=0A+ list=3D'$(SOURCES) $(HEADER= S) $(LISP) $(TAGS=5FFILES)'; \=0A+ unique=3D`for i in $$list; do \=0A+ = if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \=0A+ done = | \=0A+ $(AWK) '{ files[$$0] =3D 1; nonemtpy =3D 1; } \=0A+ END { i= f (nonempty) { for (i in files) print i; }; }'`; \=0A+ mkid -fID $$unique= =0A+tags: TAGS=0A+=0A+TAGS: $(HEADERS) $(SOURCES) config.h.in $(TAGS=5FDEP= ENDENCIES) \=0A+ $(TAGS=5FFILES) $(LISP)=0A+ tags=3D; \=0A+ here=3D`pwd`; = \=0A+ list=3D'$(SOURCES) $(HEADERS) config.h.in $(LISP) $(TAGS=5FFILES)'; \= =0A+ unique=3D`for i in $$list; do \=0A+ if test -f "$$i"; then echo $$= i; else echo $(srcdir)/$$i; fi; \=0A+ done | \=0A+ $(AWK) '{ files[$$0]= =3D 1; nonempty =3D 1; } \=0A+ END { if (nonempty) { for (i in files= ) print i; }; }'`; \=0A+ if test -z "$(ETAGS=5FARGS)$$tags$$unique"; then := ; else \=0A+ test -n "$$unique" || unique=3D$$empty=5Ffix; \=0A+ $(ETAG= S) $(ETAGSFLAGS) $(AM=5FETAGSFLAGS) $(ETAGS=5FARGS) \=0A+ $$tags $$uniq= ue; \=0A+ fi=0A+ctags: CTAGS=0A+CTAGS: $(HEADERS) $(SOURCES) config.h.in $= (TAGS=5FDEPENDENCIES) \=0A+ $(TAGS=5FFILES) $(LISP)=0A+ tags=3D; \=0A+ lis= t=3D'$(SOURCES) $(HEADERS) config.h.in $(LISP) $(TAGS=5FFILES)'; \=0A+ uniq= ue=3D`for i in $$list; do \=0A+ if test -f "$$i"; then echo $$i; else e= cho $(srcdir)/$$i; fi; \=0A+ done | \=0A+ $(AWK) '{ files[$$0] =3D 1; n= onempty =3D 1; } \=0A+ END { if (nonempty) { for (i in files) print i= ; }; }'`; \=0A+ test -z "$(CTAGS=5FARGS)$$tags$$unique" \=0A+ || $(CTAGS)= $(CTAGSFLAGS) $(AM=5FCTAGSFLAGS) $(CTAGS=5FARGS) \=0A+ $$tags $$uniqu= e=0A+=0A+GTAGS:=0A+ here=3D`$(am=5F=5Fcd) $(top=5Fbuilddir) && pwd` \=0A+ = && cd $(top=5Fsrcdir) \=0A+ && gtags -i $(GTAGS=5FARGS) $$here=0A+=0A+di= stclean-tags:=0A+ -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags=0A+=0A+distd= ir: $(DISTFILES)=0A+ $(am=5F=5Fremove=5Fdistdir)=0A+ test -d $(distdir) || = mkdir $(distdir)=0A+ @srcdirstrip=3D`echo "$(srcdir)" | sed 's/[].[^$$\\*]/= \\\\&/g'`; \=0A+ topsrcdirstrip=3D`echo "$(top=5Fsrcdir)" | sed 's/[].[^$$\= \*]/\\\\&/g'`; \=0A+ list=3D'$(DISTFILES)'; \=0A+ dist=5Ffiles=3D`for fil= e in $$list; do echo $$file; done | \=0A+ sed -e "s|^$$srcdirstrip/||;t" = \=0A+ -e "s|^$$topsrcdirstrip/|$(top=5Fbuilddir)/|;t"`; \=0A+ case $$= dist=5Ffiles in \=0A+ */*) $(MKDIR=5FP) `echo "$$dist=5Ffiles" | \=0A+ = sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \=0A+ sort -u` ;; \=0A= + esac; \=0A+ for file in $$dist=5Ffiles; do \=0A+ if test -f $$file || t= est -d $$file; then d=3D.; else d=3D$(srcdir); fi; \=0A+ if test -d $$d/$= $file; then \=0A+ dir=3D`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \=0A+= if test -d $(srcdir)/$$file && test $$d !=3D $(srcdir); then \=0A+ = cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \=0A+ fi; \=0A+ = cp -pR $$d/$$file $(distdir)$$dir || exit 1; \=0A+ else \=0A+ test= -f $(distdir)/$$file \=0A+ || cp -p $$d/$$file $(distdir)/$$file \=0A+= || exit 1; \=0A+ fi; \=0A+ done=0A+ -find $(distdir) -type d ! -perm= -777 -exec chmod a+rwx {} \; -o \=0A+ ! -type d ! -perm -444 -links 1 -e= xec chmod a+r {} \; -o \=0A+ ! -type d ! -perm -400 -exec chmod a+r {} \;= -o \=0A+ ! -type d ! -perm -444 -exec $(install=5Fsh) -c -m a+r {} {} \;= \=0A+ || chmod -R a+r $(distdir)=0A+dist-gzip: distdir=0A+ tardir=3D$(dist= dir) && $(am=5F=5Ftar) | GZIP=3D$(GZIP=5FENV) gzip -c >$(distdir).tar.gz=0A= + $(am=5F=5Fremove=5Fdistdir)=0A+=0A+dist-bzip2: distdir=0A+ tardir=3D$(dis= tdir) && $(am=5F=5Ftar) | bzip2 -9 -c >$(distdir).tar.bz2=0A+ $(am=5F=5Frem= ove=5Fdistdir)=0A+=0A+dist-lzma: distdir=0A+ tardir=3D$(distdir) && $(am=5F= =5Ftar) | lzma -9 -c >$(distdir).tar.lzma=0A+ $(am=5F=5Fremove=5Fdistdir)= =0A+=0A+dist-tarZ: distdir=0A+ tardir=3D$(distdir) && $(am=5F=5Ftar) | comp= ress -c >$(distdir).tar.Z=0A+ $(am=5F=5Fremove=5Fdistdir)=0A+=0A+dist-shar:= distdir=0A+ shar $(distdir) | GZIP=3D$(GZIP=5FENV) gzip -c >$(distdir).sha= r.gz=0A+ $(am=5F=5Fremove=5Fdistdir)=0A+=0A+dist-zip: distdir=0A+ -rm -f $(= distdir).zip=0A+ zip -rq $(distdir).zip $(distdir)=0A+ $(am=5F=5Fremove=5Fd= istdir)=0A+=0A+dist dist-all: distdir=0A+ tardir=3D$(distdir) && $(am=5F=5F= tar) | GZIP=3D$(GZIP=5FENV) gzip -c >$(distdir).tar.gz=0A+ $(am=5F=5Fremove= =5Fdistdir)=0A+=0A+# This target untars the dist file and tries a VPATH con= figuration. Then=0A+# it guarantees that the distribution is self-containe= d by making another=0A+# tarfile.=0A+distcheck: dist=0A+ case '$(DIST=5FARC= HIVES)' in \=0A+ *.tar.gz*) \=0A+ GZIP=3D$(GZIP=5FENV) gunzip -c $(distdi= r).tar.gz | $(am=5F=5Funtar) ;;\=0A+ *.tar.bz2*) \=0A+ bunzip2 -c $(distd= ir).tar.bz2 | $(am=5F=5Funtar) ;;\=0A+ *.tar.lzma*) \=0A+ unlzma -c $(dis= tdir).tar.lzma | $(am=5F=5Funtar) ;;\=0A+ *.tar.Z*) \=0A+ uncompress -c $= (distdir).tar.Z | $(am=5F=5Funtar) ;;\=0A+ *.shar.gz*) \=0A+ GZIP=3D$(GZI= P=5FENV) gunzip -c $(distdir).shar.gz | unshar ;;\=0A+ *.zip*) \=0A+ unzi= p $(distdir).zip ;;\=0A+ esac=0A+ chmod -R a-w $(distdir); chmod a+w $(dist= dir)=0A+ mkdir $(distdir)/=5Fbuild=0A+ mkdir $(distdir)/=5Finst=0A+ chmod a= -w $(distdir)=0A+ dc=5Finstall=5Fbase=3D`$(am=5F=5Fcd) $(distdir)/=5Finst &= & pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \=0A+ && dc=5Fdestdir=3D"$${TMPDIR-= /tmp}/am-dc-$$$$/" \=0A+ && cd $(distdir)/=5Fbuild \=0A+ && ../configur= e --srcdir=3D.. --prefix=3D"$$dc=5Finstall=5Fbase" \=0A+ $(DISTCHECK=5F= CONFIGURE=5FFLAGS) \=0A+ && $(MAKE) $(AM=5FMAKEFLAGS) \=0A+ && $(MAKE) = $(AM=5FMAKEFLAGS) dvi \=0A+ && $(MAKE) $(AM=5FMAKEFLAGS) check \=0A+ &&= $(MAKE) $(AM=5FMAKEFLAGS) install \=0A+ && $(MAKE) $(AM=5FMAKEFLAGS) ins= tallcheck \=0A+ && $(MAKE) $(AM=5FMAKEFLAGS) uninstall \=0A+ && $(MAKE)= $(AM=5FMAKEFLAGS) distuninstallcheck=5Fdir=3D"$$dc=5Finstall=5Fbase" \=0A+= distuninstallcheck \=0A+ && chmod -R a-w "$$dc=5Finstall=5Fbase"= \=0A+ && ({ \=0A+ (cd ../.. && umask 077 && mkdir "$$dc=5Fdestdir= ") \=0A+ && $(MAKE) $(AM=5FMAKEFLAGS) DESTDIR=3D"$$dc=5Fdestdir" ins= tall \=0A+ && $(MAKE) $(AM=5FMAKEFLAGS) DESTDIR=3D"$$dc=5Fdestdir" u= ninstall \=0A+ && $(MAKE) $(AM=5FMAKEFLAGS) DESTDIR=3D"$$dc=5Fdestdi= r" \=0A+ distuninstallcheck=5Fdir=3D"$$dc=5Fdestdir" distuninst= allcheck; \=0A+ } || { rm -rf "$$dc=5Fdestdir"; exit 1; }) \=0A+ &&= rm -rf "$$dc=5Fdestdir" \=0A+ && $(MAKE) $(AM=5FMAKEFLAGS) dist \=0A+ = && rm -rf $(DIST=5FARCHIVES) \=0A+ && $(MAKE) $(AM=5FMAKEFLAGS) distclean= check=0A+ $(am=5F=5Fremove=5Fdistdir)=0A+ @(echo "$(distdir) archives ready= for distribution: "; \=0A+ list=3D'$(DIST=5FARCHIVES)'; for i in $$list;= do echo $$i; done) | \=0A+ sed -e 1h -e 1s/./=3D/g -e 1p -e 1x -e '$$p' = -e '$$x'=0A+distuninstallcheck:=0A+ @cd $(distuninstallcheck=5Fdir) \=0A+ &= & test `$(distuninstallcheck=5Flistfiles) | wc -l` -le 1 \=0A+ || { echo= "ERROR: files left after uninstall:" ; \=0A+ if test -n "$(DESTDIR= )"; then \=0A+ echo " (check DESTDIR support)"; \=0A+ fi= ; \=0A+ $(distuninstallcheck=5Flistfiles) ; \=0A+ exit 1; = } >&2=0A+distcleancheck: distclean=0A+ @if test '$(srcdir)' =3D . ; then \= =0A+ echo "ERROR: distcleancheck can only run from a VPATH build" ; \=0A+= exit 1 ; \=0A+ fi=0A+ @test `$(distcleancheck=5Flistfiles) | wc -l` -eq = 0 \=0A+ || { echo "ERROR: files left in build directory after distclean:"= ; \=0A+ $(distcleancheck=5Flistfiles) ; \=0A+ exit 1; } >&2= =0A+check-am: all-am=0A+check: check-am=0A+all-am: Makefile $(PROGRAMS) con= fig.h=0A+installdirs:=0A+ for dir in "$(DESTDIR)$(bindir)"; do \=0A+ test= -z "$$dir" || $(MKDIR=5FP) "$$dir"; \=0A+ done=0A+install: install-am=0A+i= nstall-exec: install-exec-am=0A+install-data: install-data-am=0A+uninstall:= uninstall-am=0A+=0A+install-am: all-am=0A+ @$(MAKE) $(AM=5FMAKEFLAGS) inst= all-exec-am install-data-am=0A+=0A+installcheck: installcheck-am=0A+install= -strip:=0A+ $(MAKE) $(AM=5FMAKEFLAGS) INSTALL=5FPROGRAM=3D"$(INSTALL=5FSTRI= P=5FPROGRAM)" \=0A+ install=5Fsh=5FPROGRAM=3D"$(INSTALL=5FSTRIP=5FPROGRAM= )" INSTALL=5FSTRIP=5FFLAG=3D-s \=0A+ `test -z '$(STRIP)' || \=0A+ ech= o "INSTALL=5FPROGRAM=5FENV=3DSTRIPPROG=3D'$(STRIP)'"` install=0A+mostlyclea= n-generic:=0A+=0A+clean-generic:=0A+=0A+distclean-generic:=0A+ -test -z "$(= CONFIG=5FCLEAN=5FFILES)" || rm -f $(CONFIG=5FCLEAN=5FFILES)=0A+=0A+maintain= er-clean-generic:=0A+ @echo "This command is intended for maintainers to us= e"=0A+ @echo "it deletes files that may require special tools to rebuild."= =0A+clean: clean-am=0A+=0A+clean-am: clean-binPROGRAMS clean-generic mostly= clean-am=0A+=0A+distclean: distclean-am=0A+ -rm -f $(am=5F=5FCONFIG=5FDISTC= LEAN=5FFILES)=0A+ -rm -rf ./$(DEPDIR)=0A+ -rm -f Makefile=0A+distclean-am: = clean-am distclean-compile distclean-generic \=0A+ distclean-hdr distclean-= tags=0A+=0A+dvi: dvi-am=0A+=0A+dvi-am:=0A+=0A+html: html-am=0A+=0A+info: in= fo-am=0A+=0A+info-am:=0A+=0A+install-data-am:=0A+=0A+install-dvi: install-d= vi-am=0A+=0A+install-exec-am: install-binPROGRAMS=0A+=0A+install-html: inst= all-html-am=0A+=0A+install-info: install-info-am=0A+=0A+install-man:=0A+=0A= +install-pdf: install-pdf-am=0A+=0A+install-ps: install-ps-am=0A+=0A+instal= lcheck-am:=0A+=0A+maintainer-clean: maintainer-clean-am=0A+ -rm -f $(am=5F= =5FCONFIG=5FDISTCLEAN=5FFILES)=0A+ -rm -rf $(top=5Fsrcdir)/autom4te.cache= =0A+ -rm -rf ./$(DEPDIR)=0A+ -rm -f Makefile=0A+maintainer-clean-am: distcl= ean-am maintainer-clean-generic=0A+=0A+mostlyclean: mostlyclean-am=0A+=0A+m= ostlyclean-am: mostlyclean-compile mostlyclean-generic=0A+=0A+pdf: pdf-am= =0A+=0A+pdf-am:=0A+=0A+ps: ps-am=0A+=0A+ps-am:=0A+=0A+uninstall-am: uninsta= ll-binPROGRAMS=0A+=0A+.MAKE: install-am install-strip=0A+=0A+.PHONY: CTAGS = GTAGS all all-am am--refresh check check-am clean \=0A+ clean-binPROGRAMS c= lean-generic ctags dist dist-all dist-bzip2 \=0A+ dist-gzip dist-lzma dist-= shar dist-tarZ dist-zip distcheck \=0A+ distclean distclean-compile distcle= an-generic distclean-hdr \=0A+ distclean-tags distcleancheck distdir distun= installcheck dvi \=0A+ dvi-am html html-am info info-am install install-am = \=0A+ install-binPROGRAMS install-data install-data-am install-dvi \=0A+ in= stall-dvi-am install-exec install-exec-am install-html \=0A+ install-html-a= m install-info install-info-am install-man \=0A+ install-pdf install-pdf-am= install-ps install-ps-am \=0A+ install-strip installcheck installcheck-am = installdirs \=0A+ maintainer-clean maintainer-clean-generic mostlyclean \= =0A+ mostlyclean-compile mostlyclean-generic pdf pdf-am ps ps-am \=0A+ tags= uninstall uninstall-am uninstall-binPROGRAMS=0A+=0A+=0A+#CFLAGS +=3D -Wall= -Werror -g -Wconversion -ansi=0A+#LDFLAGS +=3D -lefence=0A+# Tell versions= [3.59,3.63) of GNU make to not export all variables.=0A+# Otherwise a syst= em limit (for SysV at least) may be exceeded.=0A+.NOEXPORT:=0Adiff --git a/= utils/ffsb-6.0-rc2/README b/utils/ffsb-6.0-rc2/README=0Anew file mode 10064= 4=0Aindex 0000000..746f0f5=0A--- /dev/null=0A+++ b/utils/ffsb-6.0-rc2/READM= E=0A@@ -0,0 +1,413 @@=0A+Introduction:=0A+=0A+The Flexible Filesystem Bench= mark (FFSB) is a filesystem performance=0A+measurement tool. It is a multi= -threaded application (using=0A+pthreads), written entirely in C with cross= -platform portability in=0A+mind. It differs from other filesystem benchma= rks in that the user=0A+may supply a profile to create custom workloads, wh= ile most other=0A+filesystem benchmarks use a fixed set of workloads.=0A+= =0A+As of version 5.1, it supports seven different basic operations, suppor= t=0A+for multiple groups of threads with different operation mixtures,=0A+s= upport for operation across multiple filesystems, and support for=0A+filesy= stem aging prior to benchmarking.=0A+=0A+=0A+Differences from version 4.0 a= nd older:=0A+=0A+Version 5.0 and above represent almost a total re-write an= d many=0A+things have changed. In version 5.0 and above FFSB moved to a=0A= +time-regulated run versus doing a set number of different operations=0A+an= d timing the whole thing. This is primarily to better deal with the=0A+use= of multiple threadgroups which would otherwise not be synchronized=0A+at t= ermination time.=0A+=0A+Additionally, the FFSB configuration file format ha= s changed in=0A+version 5.0, although we do support old-style configuration= files=0A+along with a run-time passed on the command line. In this mode,= =0A+version 5.0 and above ignores the iterations parameter, and simply=0A+u= ses the time specified on the command line.=0A+=0A+Behaviorally, most of th= e old operations are the same -- sequential=0A+reads and sequential writes = work as they did before. One change in=0A+version 5.0 is the skip-read beh= avior of reading then seeking forward=0A+a fixed amount then reading again = is removed, we now support fully=0A+randomized reads and writes from random= offsets within the file.=0A+=0A+Version 4.0 didn't support overwrites (onl= y appends) so we interpret=0A+writes in old config files to be append opera= tions.=0A+=0A+On Linux, CPU utilization information will only be accurate f= or=0A+systems using NPTL, older Linuxthreads systems will probably only see= =0A+zeros for CPU utilization because Linuxthreads is non-compliant to=0A+P= OSIX. Version 4.0 and older could be recompiled to work on=0A+Linuxthreads,= but in 5.0 and later we no longer support this.=0A+=0A+We no longer suppor= t the "outputfile" on the command line.=0A+=0A+One should simply use tee or= similar to capture the output. FFSB=0A+unbuffers standard out for this pu= rpose, and errors are sent on=0A+standard error.=0A+=0A+Global options:=0A+= =0A+There are eight valid global options placed at the beginning of the=0A+= profile. Three of them are required: num=5Ffilesystems (number of=0A+files= ystems), num=5Fthreadgroups (number of threadgroups), and time=0A+(running = time of the benchmark). The other five options are:=0A+=0A+directio - ea= ch call to open will be made using O=5FDIRECT=0A+alignio - aligns all bl= ock operations for random reads and writes=0A+ on 4k boundaries= .=0A+bufferedio - currently ignorred: it is intended to use libc=0A+ = fread,rwrite, instead of just unix read and write calls=0A+verbose = - currently ignored=0A+=0A+callout - calls and external command and wai= ts for its termination=0A+ before FFSB begins the benchmark phase.=0A+= This is useful for synchronizing distributed clients,=0A+ starti= ng profilers, etc.=0A+=0A+They must be specified in the above order (num=5F= filesystems,=0A+num=5Fthreadgroups, time, directio, alignio, bufferedio, ve= rbose,=0A+callout).=0A+=0A+=0A+=0A+Filesystems:=0A+=0A+Filesystems are spec= ified to FFSB in the form of a directory. FFSB=0A+assumes that the filesys= tem is mounted at this directory and will not=0A+do any verification of thi= s fact beyond ensuring it can read/write to=0A+the location. So be careful= to ensure something with enough space to=0A+handle the dataset is in fact = mounted at the specified location.=0A+=0A+In the filesystem clause of the p= rofile, one may set the starting=0A+number of files and directories as well= as a minimum and maximum=0A+filesize for the filesystem. One may also spe= cify the blocksize=0A+used for creating the files separately in the filesys= tem clause.=0A+=0A+Also, if a filesystem is to be aged, a special threadgro= up clause may=0A+be embedded in a filesystem clause to specify the operatio= n mixture=0A+and number of threads used to age the filesystem. This thread= group is=0A+run until filesystem utilization reaches the specified amount.= =0A+=0A+Inheritance -- if you are using multiple filesystems, all attribut= es=0A+except the location should be inherited from the previous filesystem.= =0A+This is done to make it easier to add groups of similar filesystems.=0A= +In this case, only the location is required in the filesystem clause.=0A+= =0A+As of version 5.1, filesystem re-use is supported if a given=0A+filesys= tem hasn't been modified beyond it's orginal specifications=0A+(number of f= iles and directories is correct, and file sizes are within=0A+specification= s). This can be a huge time saver if one wishes to do=0A+multiple runs on = the same data-set without altering it during a run,=0A+because the fileset = doesn't need to be recreated before each run.=0A+=0A+To do this, specify "r= euse=3D1" in the filesystem clause, and FFSB will=0A+verify the fileset fir= st, and if it checks out it will use it.=0A+Otherwise, it will remove every= thing and re-create the filesets for=0A+that filesystem.=0A+=0A+Threadgroup= s:=0A+=0A+An arbitrary number of threadgroups with differing numbers of thr= eads=0A+and operation mixes can be specified. The operations are specified= =0A+using a weighting for each operation, if an operation isn't specified= =0A+it's weighting is assumed to be zero (not used).=0A+=0A+"Think-time" fo= r a threadgroup may also be specified in millisecond=0A+amounts using the "= op=5Fdelay" parameter, where every thread will wait=0A+for the specified am= ount between each operation.=0A+=0A+Operations:=0A+=0A+All operations begin= by randomly selecting a filesystem from the list=0A+of filesystems specifi= ed in the profile. The distribution aims to be=0A+uniform across all files= ystems.=0A+=0A+=0A+The seven operations are:=0A+=0A+reads - read() calls w= ith an overall amount and a blocksize=0A+ operates on existing file= s. Care must be taken to ensure=0A+ that the read amount is smalle= r than the size of any possible=0A+ file.=0A+=0A+ If random=5Fread= is specified, then the each individual blocks=0A+ will be read sta= rting from a random point with the file, and=0A+ this will continun= e until the entire amount specifed has been=0A+ read. This offset = of each random block will be totally=0A+ random to the byte level, = unless the "alignio" global parameter=0A+ is on, and then the reads= will be 4096 byte aligned. This is=0A+ generally recommended.=0A+= =0A+=0A+readall - Very similar to read above, except it doesn't take an=0A+= amount; it simply reads the entire file sequentially using the=0A= + read=5Fblocksize. This is useful for situations where=0A+ di= fferent filesystems have differently sized files, and sequential=0A+ read= patterns across all filesystems are desired.=0A+=0A+writes - write() calls= with an overall amount and blocksize=0A+ this is an overwrite oper= ation and will not enlarge an existing=0A+ file, again one must be = careful not to specify a write amount=0A+ that is larger than any p= ossible file in the data set.=0A+=0A+ If random=5Fwrite is specified, then= the each individual blocks=0A+ will be written starting from a ran= dom point with the file, and=0A+ this will continune until the enti= re amount specifed has been=0A+ written out. This offset of each r= andom block will be totally=0A+ random to the byte level, unless th= e "alignio" global parameter=0A+ is on, and then the writes will be= 4096 byte aligned. This=0A+ is generally recommended.=0A+=0A+ If= the fsync=5Fflag parameter for the threadgroup is non-zero,=0A+ then afte= r all of the write calls are finished, fsync() will=0A+ be called on the f= ile descriptor before the file is closed.=0A+=0A+=0A+creates - creates a fi= le using open() call and determines the size=0A+ randomly between = on the constraints (min=5Ffilesize and=0A+ max=5Ffilesize) for the= selected filesystem. Write operations will=0A+ be done using the = same blocksize as is specified for the=0A+ write operation.=0A+del= etes - calls unlink() on a filename and removes it from the=0A+ in= ternal data-structures. One must be careful to ensure=0A+ there a= re enough files to delete at all times or else the benchmark=0A+ w= ill terminate.=0A+appends - calls write() using the append flag with an ove= rall amount=0A+ and a blocksize to be appended onto a randomly cho= sen file.=0A+metas - this is actually a mix of several different director= y=0A+ operations. Each "meta" operation consists of two directory= =0A+ creates, one directory remove, and a directory rename.=0A+ = These operations are all carried out separately from the=0A+ = other 5 operations.=0A+=0A+Operation accounting:=0A+=0A+Each operation wh= ich uses a blocksize counts each read/write of a=0A+blocksize as an operati= on (reads,writes,creates, and appends) whereas=0A+deletes and metas are con= sidered single operations.=0A+=0A+Running the benchmark:=0A+=0A+There are t= hree phases to running the benchmark, aging, fileset=0A+creates, and the be= nchmark phase.=0A+=0A+The create phase is carried out across all filesystem= s simultanously=0A+with one dedicated thread per filesystem.=0A+=0A+After t= he create phase, sync() is called to ensure all dirty data gets=0A+written = out before the benchmark phase begins, and sync() is again=0A+called at the= end of the benchmark phase. The time in sync() at the=0A+end of the bench= mark phase is counted as part of the benchmark phase.=0A+=0A+Caveats/Holes/= Bugs:=0A+=0A+Aging and aging across multiple filesystems simultaneously has= n't been tested=0A+very much.=0A+=0A+If *any* i/o operation or system call/= libc call fails, the benchmark=0A+will terminate immediately.=0A+=0A+The pa= rser doesn't handle mal-formed or incorrect profiles very well=0A+(or at al= l).=0A+=0A+The parser doesn't check to make sure all of the appropriate opt= ions=0A+have been specified. For example, if writes are specified in a=0A+= threadgroup but write=5Fblocksize isn't specified, the parse won't catch=0A= +it, but the benchmark run will fail later on.=0A+=0A+=0A+Configuration Fil= es (new style):=0A+=0A+New Style Configuration allows for arbitrary newline= s between lines,=0A+and comments using '#' at the start of a line. Also it= allows tabs,=0A+whitespace before and after configuration parameters.=0A+= =0A+The new style configuration file is broken up into three main parts:=0A= +=0A+global parameters, filesystems, and threadgroups=0A+=0A+The sections m= ust be in the above order.=0A+=0A+Global parameters:=0A+=0A+Global Paramter= s are described above, the first three are always=0A+required. Example:=0A+= =0A+----------=0A+=0A+num=5Ffilesystems=3D1=0A+num=5Fthreadgroups=3D1=0A+ti= me=3D30 # time is in seconds=0A+=0A+directio=3D0 # don't use direct io= =0A+alignio=3D1 # align random IOs to 4k=0A+bufferedio=3D0 # this does = nothing right now=0A+verbose=3D0 # this does nothing right now=0A+=0A+ #= calls and external command and waits=0A+ # everything until the newline = is taken=0A+ # so you can have abritrary parmeters=0A+callout=3Dsynchroni= ze.sh myhostname=0A+=0A+---------=0A+=0A+All of these must appear in this o= rder, though you can leave out the=0A+optional ones.=0A+=0A+Filesystems:=0A= +=0A+Filesystems describe differnt logical sets of files residing in=0A+dif= ferent directorys. There is no strict requirement that they=0A+actually be= on different filesystems, only that the directory=0A+specified already exi= sts.=0A+=0A+Filesystems are specified by a clause with a filesystem number = like=0A+this:=0A+=0A+[filesystem0]=0A+ location=3D/mnt/testing/=0A+ num=5Ff= iles=3D10=0A+ num=5Fdirs=3D1=0A+ max=5Ffilesize=3D4096=0A+ min=5Ffilesize= =3D4096=0A+[end0]=0A+=0A+=0A+The clause must always begin with [filesystemX= ] and end with [endX]=0A+where X is the number of that filesystem.=0A+=0A+Y= ou should start wiht X =3D 0, and increment by one for each following=0A+fi= lesystem. If they are out of order, things will likely break.=0A+=0A+The r= equired information for each filesystem is: location, num=5Ffiles,=0A+num= =5Fdirs, max=5Ffilesize, and min=5Ffilesize. Beyond those the following=0A= +four options are supported:=0A+=0A+=0A+=0A+reuse=3D1 # check the filesyste= m to see if it is reusable=0A+=0A+ # filesystem aging, three components req= uired=0A+ # takes agefs=3D1 to turn it on=0A+ # then a valid threadgroup sp= ecification=0A+ # then a desired utilization percentage=0A+=0A+agefs=3D1 # = age the filesystem according to the following threadgroup=0A+ [threadgroup0= ]=0A+ num=5Fthreads=3D10=0A+ write=5Fsize=3D40960=0A+ write=5Fblocksize= =3D4096=0A+ create=5Fweight=3D10=0A+ append=5Fweight=3D10=0A+ delete=5Fw= eight=3D1=0A+ [end0]=0A+desired=5Futil=3D0.20 # In this case, age until the= fs is 20% full=0A+=0A+create=5Fblocksize=3D4096 # specify the blocksize = to write()=0A+ # for creating the fileset, defaults to 4096=0A+=0A= +age=5Fblocksize=3D4096 # specify the blocksize to write() for aging= =0A+=0A+=0A+Also, to allow lazy people to use lots of filesystems, we suppo= rt=0A+filesystem inheritance, which simply copies all options but the=0A+lo= cation from the previous filesystem clause if nothing is specified.=0A+Obvi= ously, this doesn't work for filesystem0. (May not work for aging=0A+either= ?)=0A+=0A+Full blown filesystem clause example:=0A+=0A+----=0A+=0A+[filesys= tem0]=0A+=0A+ # required parts=0A+=0A+ location=3D/home/sonny/tmp=0A+ num= =5Ffiles=3D100=0A+ num=5Fdirs=3D100=0A+ max=5Ffilesize=3D65536=0A+ min=5Ffi= lesize=3D4096=0A+=0A+ # aging part=0A+ agefs=3D0=0A+ [threadgroup0]=0A+ nu= m=5Fthreads=3D10=0A+ write=5Fsize=3D40960=0A+ write=5Fblocksize=3D4096=0A= + create=5Fweight=3D10=0A+ append=5Fweight=3D10=0A+ delete=5Fweight=3D1= =0A+ [end0]=0A+ desired=5Futil=3D0.02 # age until 2% full=0A+=0A+ # other = optional commands=0A+=0A+ create=5Fblocksize=3D1024 # use a small create b= locksize=0A+ age=5Fblocksize=3D1024 # and smaller age create blocksize=0A+= reuse=3D0 # don't reuse it=0A+[end0]=0A+=0A+=0A+= =0A+--=0A+=0A+Threadgroups:=0A+=0A+Threadgropus are very similar to filesys= tems in that any number of=0A+them can be specified in clauses, and they mu= st be in order starting=0A+with threadgroup0.=0A+=0A+Example:=0A+=0A+---=0A= +=0A+[threadgroup0]=0A+ num=5Fthreads=3D32=0A+ read=5Fweight=3D4=0A+ append= =5Fweight=3D1=0A+=0A+ write=5Fsize=3D4096=0A+ write=5Fblocksize=3D4096=0A+= =0A+ read=5Fsize=3D4096=0A+ read=5Fblocksize=3D4096=0A+[end0]=0A+=0A+---=0A= +=0A+In a threadgroup clause, num=5Fthreads is required and must be at leas= t=0A+1. Then, at least one operation must be given a weight greater than 0= =0A+to be a valid threadgroup. Operations can be given a weighting of 0,= =0A+and in this case they are ignored.=0A+=0A+Certain operations will also = require other commands, for example, if=0A+read=5Fweight is greater than ze= ro, then one must also include a=0A+read=5Fsize and a read=5Fblocksize. He= re's the table of requirements and=0A+options:=0A+=0A+=0A+Operation Requir= ements Options=0A+-- -- --=0A+read=5Fweight read=5Fsize, read=5Fblo= cksize read=5Frandom=0A+readall=5Fweight read=5Fblocksize none=0A+write= =5Fweight write=5Fsize, write=5Fblocksize write=5Frandom,fsync=5Ffile=0A+c= reate=5Fweight write=5Fblocksize or create=5Fblocksize none=0A+append=5Fwe= ight write=5Fblocksize, write=5Fsize none=0A+delete=5Fweight none none= =0A+meta=5Fweight none none=0A+=0A+=0A+=0A+Other threadgroup options:= =0A+=0A+op=5Fdelay=3D10 # specify a wait between operations in milli-secon= ds=0A+=0A+bindfs=3D3 # This allows you to restrict a threadgroup's oper= ation=0A+ # to a specific filesystem number. Currently only=0A= + # binding to one specific filesystem is supported=0A+=0Adiff --git a= /utils/ffsb-6.0-rc2/aclocal.m4 b/utils/ffsb-6.0-rc2/aclocal.m4=0Anew file m= ode 100644=0Aindex 0000000..19b0c2d=0A--- /dev/null=0A+++ b/utils/ffsb-6.0-= rc2/aclocal.m4=0A@@ -0,0 +1,880 @@=0A+# generated automatically by aclocal = 1.10.1 -*- Autoconf -*-=0A+=0A+# Copyright (C) 1996, 1997, 1998, 1999, 2000= , 2001, 2002, 2003, 2004,=0A+# 2005, 2006, 2007, 2008 Free Software Founda= tion, Inc.=0A+# This file is free software; the Free Software Foundation=0A= +# gives unlimited permission to copy and/or distribute it,=0A+# with or wi= thout modifications, as long as this notice is preserved.=0A+=0A+# This pro= gram is distributed in the hope that it will be useful,=0A+# but WITHOUT AN= Y WARRANTY, to the extent permitted by law; without=0A+# even the implied w= arranty of MERCHANTABILITY or FITNESS FOR A=0A+# PARTICULAR PURPOSE.=0A+=0A= +m4=5Fifndef([AC=5FAUTOCONF=5FVERSION],=0A+ [m4=5Fcopy([m4=5FPACKAGE=5FVER= SION], [AC=5FAUTOCONF=5FVERSION])])dnl=0A+m4=5Fif(AC=5FAUTOCONF=5FVERSION, = [2.61],,=0A+[m4=5Fwarning([this file was generated for autoconf 2.61.=0A+Yo= u have another version of autoconf. It may work, but is not guaranteed to.= =0A+If you have problems, you may need to regenerate the build system entir= ely.=0A+To do so, use the procedure documented by the package, typically `a= utoreconf'.])])=0A+=0A+# Copyright (C) 2002, 2003, 2005, 2006, 2007 Free S= oftware Foundation, Inc.=0A+#=0A+# This file is free software; the Free Sof= tware Foundation=0A+# gives unlimited permission to copy and/or distribute = it,=0A+# with or without modifications, as long as this notice is preserved= .=0A+=0A+# AM=5FAUTOMAKE=5FVERSION(VERSION)=0A+# --------------------------= --=0A+# Automake X.Y traces this macro to ensure aclocal.m4 has been=0A+# g= enerated from the m4 files accompanying Automake X.Y.=0A+# (This private ma= cro should not be called outside this file.)=0A+AC=5FDEFUN([AM=5FAUTOMAKE= =5FVERSION],=0A+[am=5F=5Fapi=5Fversion=3D'1.10'=0A+dnl Some users find AM= =5FAUTOMAKE=5FVERSION and mistake it for a way to=0A+dnl require some minim= um version. Point them to the right macro.=0A+m4=5Fif([$1], [1.10.1], [],= =0A+ [AC=5FFATAL([Do not call $0, use AM=5FINIT=5FAUTOMAKE([$1]).])])d= nl=0A+])=0A+=0A+# =5FAM=5FAUTOCONF=5FVERSION(VERSION)=0A+# ----------------= -------------=0A+# aclocal traces this macro to find the Autoconf version.= =0A+# This is a private macro too. Using m4=5Fdefine simplifies=0A+# the l= ogic in aclocal, which can simply ignore this definition.=0A+m4=5Fdefine([= =5FAM=5FAUTOCONF=5FVERSION], [])=0A+=0A+# AM=5FSET=5FCURRENT=5FAUTOMAKE=5FV= ERSION=0A+# -------------------------------=0A+# Call AM=5FAUTOMAKE=5FVERSI= ON and AM=5FAUTOMAKE=5FVERSION so they can be traced.=0A+# This function is= AC=5FREQUIREd by AC=5FINIT=5FAUTOMAKE.=0A+AC=5FDEFUN([AM=5FSET=5FCURRENT= =5FAUTOMAKE=5FVERSION],=0A+[AM=5FAUTOMAKE=5FVERSION([1.10.1])dnl=0A+m4=5Fif= ndef([AC=5FAUTOCONF=5FVERSION],=0A+ [m4=5Fcopy([m4=5FPACKAGE=5FVERSION], [= AC=5FAUTOCONF=5FVERSION])])dnl=0A+=5FAM=5FAUTOCONF=5FVERSION(AC=5FAUTOCONF= =5FVERSION)])=0A+=0A+# AM=5FAUX=5FDIR=5FEXPAND = -*- Autoconf -*-=0A+=0A+# Copyright (C) 2001, 2003, 2005 Free = Software Foundation, Inc.=0A+#=0A+# This file is free software; the Free So= ftware Foundation=0A+# gives unlimited permission to copy and/or distribute= it,=0A+# with or without modifications, as long as this notice is preserve= d.=0A+=0A+# For projects using AC=5FCONFIG=5FAUX=5FDIR([foo]), Autoconf set= s=0A+# $ac=5Faux=5Fdir to `$srcdir/foo'. In other projects, it is set to= =0A+# `$srcdir', `$srcdir/..', or `$srcdir/../..'.=0A+#=0A+# Of course, Aut= omake must honor this variable whenever it calls a=0A+# tool from the auxil= iary directory. The problem is that $srcdir (and=0A+# therefore $ac=5Faux= =5Fdir as well) can be either absolute or relative,=0A+# depending on how c= onfigure is run. This is pretty annoying, since=0A+# it makes $ac=5Faux=5F= dir quite unusable in subdirectories: in the top=0A+# source directory, any= form will work fine, but in subdirectories a=0A+# relative path needs to b= e adjusted first.=0A+#=0A+# $ac=5Faux=5Fdir/missing=0A+# fails when call= ed from a subdirectory if $ac=5Faux=5Fdir is relative=0A+# $top=5Fsrcdir/$a= c=5Faux=5Fdir/missing=0A+# fails if $ac=5Faux=5Fdir is absolute,=0A+# = fails when called from a subdirectory in a VPATH build with=0A+# = a relative $ac=5Faux=5Fdir=0A+#=0A+# The reason of the latter failure is th= at $top=5Fsrcdir and $ac=5Faux=5Fdir=0A+# are both prefixed by $srcdir. In= an in-source build this is usually=0A+# harmless because $srcdir is `.', b= ut things will broke when you=0A+# start a VPATH build or use an absolute $= srcdir.=0A+#=0A+# So we could use something similar to $top=5Fsrcdir/$ac=5F= aux=5Fdir/missing,=0A+# iff we strip the leading $srcdir from $ac=5Faux=5Fd= ir. That would be:=0A+# am=5Faux=5Fdir=3D'\$(top=5Fsrcdir)/'`expr "$ac= =5Faux=5Fdir" : "$srcdir//*\(.*\)"`=0A+# and then we would define $MISSING = as=0A+# MISSING=3D"\${SHELL} $am=5Faux=5Fdir/missing"=0A+# This will work= as long as MISSING is not called from configure, because=0A+# unfortunatel= y $(top=5Fsrcdir) has no meaning in configure.=0A+# However there are other= variables, like CC, which are often used in=0A+# configure, and could ther= efore not use this "fixed" $ac=5Faux=5Fdir.=0A+#=0A+# Another solution, use= d here, is to always expand $ac=5Faux=5Fdir to an=0A+# absolute PATH. The = drawback is that using absolute paths prevent a=0A+# configured tree to be = moved without reconfiguration.=0A+=0A+AC=5FDEFUN([AM=5FAUX=5FDIR=5FEXPAND],= =0A+[dnl Rely on autoconf to set up CDPATH properly.=0A+AC=5FPREREQ([2.50])= dnl=0A+# expand $ac=5Faux=5Fdir to an absolute path=0A+am=5Faux=5Fdir=3D`cd= $ac=5Faux=5Fdir && pwd`=0A+])=0A+=0A+# AM=5FCONDITIONAL = -*- Autoconf -*-=0A+=0A+# Copyright (C) 1997, 2000= , 2001, 2003, 2004, 2005, 2006=0A+# Free Software Foundation, Inc.=0A+#=0A+= # This file is free software; the Free Software Foundation=0A+# gives unlim= ited permission to copy and/or distribute it,=0A+# with or without modifica= tions, as long as this notice is preserved.=0A+=0A+# serial 8=0A+=0A+# AM= =5FCONDITIONAL(NAME, SHELL-CONDITION)=0A+# --------------------------------= -----=0A+# Define a conditional.=0A+AC=5FDEFUN([AM=5FCONDITIONAL],=0A+[AC= =5FPREREQ(2.52)dnl=0A+ ifelse([$1], [TRUE], [AC=5FFATAL([$0: invalid condi= tion: $1])],=0A+ [$1], [FALSE], [AC=5FFATAL([$0: invalid condition: $1])])d= nl=0A+AC=5FSUBST([$1=5FTRUE])dnl=0A+AC=5FSUBST([$1=5FFALSE])dnl=0A+=5FAM=5F= SUBST=5FNOTMAKE([$1=5FTRUE])dnl=0A+=5FAM=5FSUBST=5FNOTMAKE([$1=5FFALSE])dnl= =0A+if $2; then=0A+ $1=5FTRUE=3D=0A+ $1=5FFALSE=3D'#'=0A+else=0A+ $1=5FT= RUE=3D'#'=0A+ $1=5FFALSE=3D=0A+fi=0A+AC=5FCONFIG=5FCOMMANDS=5FPRE(=0A+[if = test -z "${$1=5FTRUE}" && test -z "${$1=5FFALSE}"; then=0A+ AC=5FMSG=5FERR= OR([[conditional "$1" was never defined.=0A+Usually this means the macro wa= s only invoked conditionally.]])=0A+fi])])=0A+=0A+# Copyright (C) 1999, 200= 0, 2001, 2002, 2003, 2004, 2005, 2006=0A+# Free Software Foundation, Inc.= =0A+#=0A+# This file is free software; the Free Software Foundation=0A+# gi= ves unlimited permission to copy and/or distribute it,=0A+# with or without= modifications, as long as this notice is preserved.=0A+=0A+# serial 9=0A+= =0A+# There are a few dirty hacks below to avoid letting `AC=5FPROG=5FCC' b= e=0A+# written in clear, in which case automake, when reading aclocal.m4,= =0A+# will think it sees a *use*, and therefore will trigger all it's=0A+# = C support machinery. Also note that it means that autoscan, seeing=0A+# CC= etc. in the Makefile, will ask for an AC=5FPROG=5FCC use...=0A+=0A+=0A+# = =5FAM=5FDEPENDENCIES(NAME)=0A+# ----------------------=0A+# See how the com= piler implements dependency checking.=0A+# NAME is "CC", "CXX", "GCJ", or "= OBJC".=0A+# We try a few techniques and use that to set a single cache vari= able.=0A+#=0A+# We don't AC=5FREQUIRE the corresponding AC=5FPROG=5FCC sinc= e the latter was=0A+# modified to invoke =5FAM=5FDEPENDENCIES(CC); we would= have a circular=0A+# dependency, and given that the user is not expected t= o run this macro,=0A+# just rely on AC=5FPROG=5FCC.=0A+AC=5FDEFUN([=5FAM=5F= DEPENDENCIES],=0A+[AC=5FREQUIRE([AM=5FSET=5FDEPDIR])dnl=0A+AC=5FREQUIRE([AM= =5FOUTPUT=5FDEPENDENCY=5FCOMMANDS])dnl=0A+AC=5FREQUIRE([AM=5FMAKE=5FINCLUDE= ])dnl=0A+AC=5FREQUIRE([AM=5FDEP=5FTRACK])dnl=0A+=0A+ifelse([$1], CC, [dep= cc=3D"$CC" am=5Fcompiler=5Flist=3D],=0A+ [$1], CXX, [depcc=3D"$CXX= " am=5Fcompiler=5Flist=3D],=0A+ [$1], OBJC, [depcc=3D"$OBJC" am=5Fco= mpiler=5Flist=3D'gcc3 gcc'],=0A+ [$1], UPC, [depcc=3D"$UPC" am=5Fco= mpiler=5Flist=3D],=0A+ [$1], GCJ, [depcc=3D"$GCJ" am=5Fcompiler=5Fl= ist=3D'gcc3 gcc'],=0A+ [depcc=3D"$$1" am=5Fcompiler=5Fl= ist=3D])=0A+=0A+AC=5FCACHE=5FCHECK([dependency style of $depcc],=0A+ = [am=5Fcv=5F$1=5Fdependencies=5Fcompiler=5Ftype],=0A+[if test -z "$A= MDEP=5FTRUE" && test -f "$am=5Fdepcomp"; then=0A+ # We make a subdir and d= o the tests there. Otherwise we can end up=0A+ # making bogus files that = we don't know about and never remove. For=0A+ # instance it was reported = that on HP-UX the gcc test will end up=0A+ # making a dummy file named `D'= -- because `-MD' means `put the output=0A+ # in D'.=0A+ mkdir conftest.d= ir=0A+ # Copy depcomp to subdir because otherwise we won't find it if we'r= e=0A+ # using a relative directory.=0A+ cp "$am=5Fdepcomp" conftest.dir= =0A+ cd conftest.dir=0A+ # We will build objects and dependencies in a su= bdirectory because=0A+ # it helps to detect inapplicable dependency modes.= For instance=0A+ # both Tru64's cc and ICC support -MD to output depende= ncies as a=0A+ # side effect of compilation, but ICC will put the dependen= cies in=0A+ # the current directory while Tru64 will put them in the objec= t=0A+ # directory.=0A+ mkdir sub=0A+=0A+ am=5Fcv=5F$1=5Fdependencies=5Fc= ompiler=5Ftype=3Dnone=0A+ if test "$am=5Fcompiler=5Flist" =3D ""; then=0A+= am=5Fcompiler=5Flist=3D`sed -n ['s/^#*\([a-zA-Z0-9]*\))$/\1/p'] < ./de= pcomp`=0A+ fi=0A+ for depmode in $am=5Fcompiler=5Flist; do=0A+ # Setup= a source with many dependencies, because some compilers=0A+ # like to w= rap large dependency lists on column 80 (with \), and=0A+ # we should no= t choose a depcomp mode which is confused by this.=0A+ #=0A+ # We nee= d to recreate these files for each test, as the compiler may=0A+ # overw= rite some of them when testing with obscure command lines.=0A+ # This ha= ppens at least with the AIX C compiler.=0A+ : > sub/conftest.c=0A+ fo= r i in 1 2 3 4 5 6; do=0A+ echo '#include "conftst'$i'.h"' >> sub/conf= test.c=0A+ # Using `: > sub/conftst$i.h' creates only sub/conftst1.h w= ith=0A+ # Solaris 8's {/usr,}/bin/sh.=0A+ touch sub/conftst$i.h= =0A+ done=0A+ echo "${am=5F=5Finclude} ${am=5F=5Fquote}sub/conftest.P= o${am=5F=5Fquote}" > confmf=0A+=0A+ case $depmode in=0A+ nosideeffect= )=0A+ # after this tag, mechanisms are not by side-effect, so they'll= =0A+ # only be used when explicitly requested=0A+ if test "x$enab= le=5Fdependency=5Ftracking" =3D xyes; then=0A+ continue=0A+ else=0A+ b= reak=0A+ fi=0A+ ;;=0A+ none) break ;;=0A+ esac=0A+ # We = check with `-c' and `-o' for the sake of the "dashmstdout"=0A+ # mode. = It turns out that the SunPro C++ compiler does not properly=0A+ # handle= `-M -o', and we need to detect this.=0A+ if depmode=3D$depmode \=0A+ = source=3Dsub/conftest.c object=3Dsub/conftest.${OBJEXT-o} \=0A+ d= epfile=3Dsub/conftest.Po tmpdepfile=3Dsub/conftest.TPo \=0A+ $SHELL .= /depcomp $depcc -c -o sub/conftest.${OBJEXT-o} sub/conftest.c \=0A+ = >/dev/null 2>conftest.err &&=0A+ grep sub/conftst1.h sub/conftest.Po= > /dev/null 2>&1 &&=0A+ grep sub/conftst6.h sub/conftest.Po > /dev/n= ull 2>&1 &&=0A+ grep sub/conftest.${OBJEXT-o} sub/conftest.Po > /dev/= null 2>&1 &&=0A+ ${MAKE-make} -s -f confmf > /dev/null 2>&1; then=0A+= # icc doesn't choke on unknown options, it will just issue warnings= =0A+ # or remarks (even with -Werror). So we grep stderr for any mess= age=0A+ # that says an option was ignored or not supported.=0A+ #= When given -MP, icc 7.0 and 7.1 complain thusly:=0A+ # icc: Command= line warning: ignoring option '-M'; no argument required=0A+ # The di= agnosis changed in icc 8.0:=0A+ # icc: Command line remark: option '= -MP' not supported=0A+ if (grep 'ignoring option' conftest.err ||=0A+ = grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else= =0A+ am=5Fcv=5F$1=5Fdependencies=5Fcompiler=5Ftype=3D$depmode=0A+ = break=0A+ fi=0A+ fi=0A+ done=0A+=0A+ cd ..=0A+ rm -rf conft= est.dir=0A+else=0A+ am=5Fcv=5F$1=5Fdependencies=5Fcompiler=5Ftype=3Dnone= =0A+fi=0A+])=0A+AC=5FSUBST([$1DEPMODE], [depmode=3D$am=5Fcv=5F$1=5Fdependen= cies=5Fcompiler=5Ftype])=0A+AM=5FCONDITIONAL([am=5F=5Ffastdep$1], [=0A+ te= st "x$enable=5Fdependency=5Ftracking" !=3D xno \=0A+ && test "$am=5Fcv=5F$= 1=5Fdependencies=5Fcompiler=5Ftype" =3D gcc3])=0A+])=0A+=0A+=0A+# AM=5FSET= =5FDEPDIR=0A+# -------------=0A+# Choose a directory name for dependency fi= les.=0A+# This macro is AC=5FREQUIREd in =5FAM=5FDEPENDENCIES=0A+AC=5FDEFUN= ([AM=5FSET=5FDEPDIR],=0A+[AC=5FREQUIRE([AM=5FSET=5FLEADING=5FDOT])dnl=0A+AC= =5FSUBST([DEPDIR], ["${am=5F=5Fleading=5Fdot}deps"])dnl=0A+])=0A+=0A+=0A+# = AM=5FDEP=5FTRACK=0A+# ------------=0A+AC=5FDEFUN([AM=5FDEP=5FTRACK],=0A+[AC= =5FARG=5FENABLE(dependency-tracking,=0A+[ --disable-dependency-tracking s= peeds up one-time build=0A+ --enable-dependency-tracking do not reject s= low dependency extractors])=0A+if test "x$enable=5Fdependency=5Ftracking" != =3D xno; then=0A+ am=5Fdepcomp=3D"$ac=5Faux=5Fdir/depcomp"=0A+ AMDEPBACKS= LASH=3D'\'=0A+fi=0A+AM=5FCONDITIONAL([AMDEP], [test "x$enable=5Fdependency= =5Ftracking" !=3D xno])=0A+AC=5FSUBST([AMDEPBACKSLASH])dnl=0A+=5FAM=5FSUBST= =5FNOTMAKE([AMDEPBACKSLASH])dnl=0A+])=0A+=0A+# Generate code to set up depe= ndency tracking. -*- Autoconf -*-=0A+=0A+# Copyright (C) 1999,= 2000, 2001, 2002, 2003, 2004, 2005=0A+# Free Software Foundation, Inc.=0A+= #=0A+# This file is free software; the Free Software Foundation=0A+# gives = unlimited permission to copy and/or distribute it,=0A+# with or without mod= ifications, as long as this notice is preserved.=0A+=0A+#serial 3=0A+=0A+# = =5FAM=5FOUTPUT=5FDEPENDENCY=5FCOMMANDS=0A+# ------------------------------= =0A+AC=5FDEFUN([=5FAM=5FOUTPUT=5FDEPENDENCY=5FCOMMANDS],=0A+[for mf in $CON= FIG=5FFILES; do=0A+ # Strip MF so we end up with the name of the file.=0A+= mf=3D`echo "$mf" | sed -e 's/:.*$//'`=0A+ # Check whether this is an Aut= omake generated Makefile or not.=0A+ # We used to match only the files nam= ed `Makefile.in', but=0A+ # some people rename them; so instead we look at= the file content.=0A+ # Grep'ing the first line is not enough: some peopl= e post-process=0A+ # each Makefile.in and add a new line on top of each fi= le to say so.=0A+ # Grep'ing the whole file is not good either: AIX grep h= as a line=0A+ # limit of 2048, but all sed's we know have understand at le= ast 4000.=0A+ if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X= >/dev/null 2>&1; then=0A+ dirpart=3D`AS=5FDIRNAME("$mf")`=0A+ else=0A+= continue=0A+ fi=0A+ # Extract the definition of DEPDIR, am=5F=5Finclu= de, and am=5F=5Fquote=0A+ # from the Makefile without running `make'.=0A+ = DEPDIR=3D`sed -n 's/^DEPDIR =3D //p' < "$mf"`=0A+ test -z "$DEPDIR" && co= ntinue=0A+ am=5F=5Finclude=3D`sed -n 's/^am=5F=5Finclude =3D //p' < "$mf"`= =0A+ test -z "am=5F=5Finclude" && continue=0A+ am=5F=5Fquote=3D`sed -n 's= /^am=5F=5Fquote =3D //p' < "$mf"`=0A+ # When using ansi2knr, U may be empt= y or an underscore; expand it=0A+ U=3D`sed -n 's/^U =3D //p' < "$mf"`=0A+ = # Find all dependency output files, they are included files with=0A+ # $(= DEPDIR) in their names. We invoke sed twice because it is the=0A+ # simpl= est approach to changing $(DEPDIR) to its actual value in the=0A+ # expans= ion.=0A+ for file in `sed -n "=0A+ s/^$am=5F=5Finclude $am=5F=5Fquote\(= .*(DEPDIR).*\)$am=5F=5Fquote"'$/\1/p' <"$mf" | \=0A+ sed -e 's/\$(DEP= DIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do=0A+ # Make sure the directo= ry exists.=0A+ test -f "$dirpart/$file" && continue=0A+ fdir=3D`AS=5F= DIRNAME(["$file"])`=0A+ AS=5FMKDIR=5FP([$dirpart/$fdir])=0A+ # echo "= creating $dirpart/$file"=0A+ echo '# dummy' > "$dirpart/$file"=0A+ done= =0A+done=0A+])# =5FAM=5FOUTPUT=5FDEPENDENCY=5FCOMMANDS=0A+=0A+=0A+# AM=5FOU= TPUT=5FDEPENDENCY=5FCOMMANDS=0A+# -----------------------------=0A+# This m= acro should only be invoked once -- use via AC=5FREQUIRE.=0A+#=0A+# This co= de is only required when automatic dependency tracking=0A+# is enabled. FI= XME. This creates each `.P' file that we will=0A+# need in order to bootst= rap the dependency handling code.=0A+AC=5FDEFUN([AM=5FOUTPUT=5FDEPENDENCY= =5FCOMMANDS],=0A+[AC=5FCONFIG=5FCOMMANDS([depfiles],=0A+ [test x"$AMDEP= =5FTRUE" !=3D x"" || =5FAM=5FOUTPUT=5FDEPENDENCY=5FCOMMANDS],=0A+ [AMDE= P=5FTRUE=3D"$AMDEP=5FTRUE" ac=5Faux=5Fdir=3D"$ac=5Faux=5Fdir"])=0A+])=0A+= =0A+# Copyright (C) 1996, 1997, 2000, 2001, 2003, 2005=0A+# Free Software F= oundation, Inc.=0A+#=0A+# This file is free software; the Free Software Fou= ndation=0A+# gives unlimited permission to copy and/or distribute it,=0A+# = with or without modifications, as long as this notice is preserved.=0A+=0A+= # serial 8=0A+=0A+# AM=5FCONFIG=5FHEADER is obsolete. It has been replaced= by AC=5FCONFIG=5FHEADERS.=0A+AU=5FDEFUN([AM=5FCONFIG=5FHEADER], [AC=5FCONF= IG=5FHEADERS($@)])=0A+=0A+# Do all the work for Automake. = -*- Autoconf -*-=0A+=0A+# Copyright (C) 1996, 1997, 1998, 1999, = 2000, 2001, 2002, 2003, 2004,=0A+# 2005, 2006, 2008 Free Software Foundatio= n, Inc.=0A+#=0A+# This file is free software; the Free Software Foundation= =0A+# gives unlimited permission to copy and/or distribute it,=0A+# with or= without modifications, as long as this notice is preserved.=0A+=0A+# seria= l 13=0A+=0A+# This macro actually does too much. Some checks are only need= ed if=0A+# your package does certain things. But this isn't really a big d= eal.=0A+=0A+# AM=5FINIT=5FAUTOMAKE(PACKAGE, VERSION, [NO-DEFINE])=0A+# AM= =5FINIT=5FAUTOMAKE([OPTIONS])=0A+# ----------------------------------------= -------=0A+# The call with PACKAGE and VERSION arguments is the old style= =0A+# call (pre autoconf-2.50), which is being phased out. PACKAGE=0A+# an= d VERSION should now be passed to AC=5FINIT and removed from=0A+# the call = to AM=5FINIT=5FAUTOMAKE.=0A+# We support both call styles for the transitio= n. After=0A+# the next Automake release, Autoconf can make the AC=5FINIT= =0A+# arguments mandatory, and then we can depend on a new Autoconf=0A+# re= lease and drop the old call support.=0A+AC=5FDEFUN([AM=5FINIT=5FAUTOMAKE],= =0A+[AC=5FPREREQ([2.60])dnl=0A+dnl Autoconf wants to disallow AM=5F names. = We explicitly allow=0A+dnl the ones we care about.=0A+m4=5Fpattern=5Fallow= ([^AM=5F[A-Z]+FLAGS$])dnl=0A+AC=5FREQUIRE([AM=5FSET=5FCURRENT=5FAUTOMAKE=5F= VERSION])dnl=0A+AC=5FREQUIRE([AC=5FPROG=5FINSTALL])dnl=0A+if test "`cd $src= dir && pwd`" !=3D "`pwd`"; then=0A+ # Use -I$(srcdir) only when $(srcdir) = !=3D ., so that make's output=0A+ # is not polluted with repeated "-I."=0A= + AC=5FSUBST([am=5F=5Fisrc], [' -I$(srcdir)'])=5FAM=5FSUBST=5FNOTMAKE([am= =5F=5Fisrc])dnl=0A+ # test to see if srcdir already configured=0A+ if tes= t -f $srcdir/config.status; then=0A+ AC=5FMSG=5FERROR([source directory = already configured; run "make distclean" there first])=0A+ fi=0A+fi=0A+=0A= +# test whether we have cygpath=0A+if test -z "$CYGPATH=5FW"; then=0A+ if = (cygpath --version) >/dev/null 2>/dev/null; then=0A+ CYGPATH=5FW=3D'cygp= ath -w'=0A+ else=0A+ CYGPATH=5FW=3Decho=0A+ fi=0A+fi=0A+AC=5FSUBST([CY= GPATH=5FW])=0A+=0A+# Define the identity of the package.=0A+dnl Distinguish= between old-style and new-style calls.=0A+m4=5Fifval([$2],=0A+[m4=5Fifval(= [$3], [=5FAM=5FSET=5FOPTION([no-define])])dnl=0A+ AC=5FSUBST([PACKAGE], [$1= ])dnl=0A+ AC=5FSUBST([VERSION], [$2])],=0A+[=5FAM=5FSET=5FOPTIONS([$1])dnl= =0A+dnl Diagnose old-style AC=5FINIT with new-style AM=5FAUTOMAKE=5FINIT.= =0A+m4=5Fif(m4=5Fifdef([AC=5FPACKAGE=5FNAME], 1)m4=5Fifdef([AC=5FPACKAGE=5F= VERSION], 1), 11,,=0A+ [m4=5Ffatal([AC=5FINIT should be called with packag= e and version arguments])])dnl=0A+ AC=5FSUBST([PACKAGE], ['AC=5FPACKAGE=5FT= ARNAME'])dnl=0A+ AC=5FSUBST([VERSION], ['AC=5FPACKAGE=5FVERSION'])])dnl=0A+= =0A+=5FAM=5FIF=5FOPTION([no-define],,=0A+[AC=5FDEFINE=5FUNQUOTED(PACKAGE, "= $PACKAGE", [Name of package])=0A+ AC=5FDEFINE=5FUNQUOTED(VERSION, "$VERSION= ", [Version number of package])])dnl=0A+=0A+# Some tools Automake needs.=0A= +AC=5FREQUIRE([AM=5FSANITY=5FCHECK])dnl=0A+AC=5FREQUIRE([AC=5FARG=5FPROGRAM= ])dnl=0A+AM=5FMISSING=5FPROG(ACLOCAL, aclocal-${am=5F=5Fapi=5Fversion})=0A+= AM=5FMISSING=5FPROG(AUTOCONF, autoconf)=0A+AM=5FMISSING=5FPROG(AUTOMAKE, au= tomake-${am=5F=5Fapi=5Fversion})=0A+AM=5FMISSING=5FPROG(AUTOHEADER, autohea= der)=0A+AM=5FMISSING=5FPROG(MAKEINFO, makeinfo)=0A+AM=5FPROG=5FINSTALL=5FSH= =0A+AM=5FPROG=5FINSTALL=5FSTRIP=0A+AC=5FREQUIRE([AM=5FPROG=5FMKDIR=5FP])dnl= =0A+# We need awk for the "check" target. The system "awk" is bad on=0A+# = some platforms.=0A+AC=5FREQUIRE([AC=5FPROG=5FAWK])dnl=0A+AC=5FREQUIRE([AC= =5FPROG=5FMAKE=5FSET])dnl=0A+AC=5FREQUIRE([AM=5FSET=5FLEADING=5FDOT])dnl=0A= +=5FAM=5FIF=5FOPTION([tar-ustar], [=5FAM=5FPROG=5FTAR([ustar])],=0A+ = [=5FAM=5FIF=5FOPTION([tar-pax], [=5FAM=5FPROG=5FTAR([pax])],=0A+ = [=5FAM=5FPROG=5FTAR([v7])])])=0A+=5FAM=5FIF=5FOPTION([no-dependencies],,=0A= +[AC=5FPROVIDE=5FIFELSE([AC=5FPROG=5FCC],=0A+ [=5FAM=5FDEP= ENDENCIES(CC)],=0A+ [define([AC=5FPROG=5FCC],=0A+ = defn([AC=5FPROG=5FCC])[=5FAM=5FDEPENDENCIES(CC)])])dnl=0A+= AC=5FPROVIDE=5FIFELSE([AC=5FPROG=5FCXX],=0A+ [=5FAM=5FDEPE= NDENCIES(CXX)],=0A+ [define([AC=5FPROG=5FCXX],=0A+ = defn([AC=5FPROG=5FCXX])[=5FAM=5FDEPENDENCIES(CXX)])])dnl= =0A+AC=5FPROVIDE=5FIFELSE([AC=5FPROG=5FOBJC],=0A+ [=5FAM= =5FDEPENDENCIES(OBJC)],=0A+ [define([AC=5FPROG=5FOBJC],=0A= + defn([AC=5FPROG=5FOBJC])[=5FAM=5FDEPENDENCIES(OB= JC)])])dnl=0A+])=0A+])=0A+=0A+=0A+# When config.status generates a header, = we must update the stamp-h file.=0A+# This file resides in the same directo= ry as the config header=0A+# that is generated. The stamp files are number= ed to have different names.=0A+=0A+# Autoconf calls =5FAC=5FAM=5FCONFIG=5FH= EADER=5FHOOK (when defined) in the=0A+# loop where config.status creates th= e headers, so we can generate=0A+# our stamp files there.=0A+AC=5FDEFUN([= =5FAC=5FAM=5FCONFIG=5FHEADER=5FHOOK],=0A+[# Compute $1's index in $config= =5Fheaders.=0A+=5Fam=5Farg=3D$1=0A+=5Fam=5Fstamp=5Fcount=3D1=0A+for =5Fam= =5Fheader in $config=5Fheaders :; do=0A+ case $=5Fam=5Fheader in=0A+ $= =5Fam=5Farg | $=5Fam=5Farg:* )=0A+ break ;;=0A+ * )=0A+ =5Fam= =5Fstamp=5Fcount=3D`expr $=5Fam=5Fstamp=5Fcount + 1` ;;=0A+ esac=0A+done= =0A+echo "timestamp for $=5Fam=5Farg" >`AS=5FDIRNAME(["$=5Fam=5Farg"])`/sta= mp-h[]$=5Fam=5Fstamp=5Fcount])=0A+=0A+# Copyright (C) 2001, 2003, 2005 Fre= e Software Foundation, Inc.=0A+#=0A+# This file is free software; the Free = Software Foundation=0A+# gives unlimited permission to copy and/or distribu= te it,=0A+# with or without modifications, as long as this notice is preser= ved.=0A+=0A+# AM=5FPROG=5FINSTALL=5FSH=0A+# ------------------=0A+# Define = $install=5Fsh.=0A+AC=5FDEFUN([AM=5FPROG=5FINSTALL=5FSH],=0A+[AC=5FREQUIRE([= AM=5FAUX=5FDIR=5FEXPAND])dnl=0A+install=5Fsh=3D${install=5Fsh-"\$(SHELL) $a= m=5Faux=5Fdir/install-sh"}=0A+AC=5FSUBST(install=5Fsh)])=0A+=0A+# Copyright= (C) 2003, 2005 Free Software Foundation, Inc.=0A+#=0A+# This file is free= software; the Free Software Foundation=0A+# gives unlimited permission to = copy and/or distribute it,=0A+# with or without modifications, as long as t= his notice is preserved.=0A+=0A+# serial 2=0A+=0A+# Check whether the under= lying file-system supports filenames=0A+# with a leading dot. For instance= MS-DOS doesn't.=0A+AC=5FDEFUN([AM=5FSET=5FLEADING=5FDOT],=0A+[rm -rf .tst = 2>/dev/null=0A+mkdir .tst 2>/dev/null=0A+if test -d .tst; then=0A+ am=5F= =5Fleading=5Fdot=3D.=0A+else=0A+ am=5F=5Fleading=5Fdot=3D=5F=0A+fi=0A+rmdi= r .tst 2>/dev/null=0A+AC=5FSUBST([am=5F=5Fleading=5Fdot])])=0A+=0A+# Check = to see how 'make' treats includes. -*- Autoconf -*-=0A+=0A+# Co= pyright (C) 2001, 2002, 2003, 2005 Free Software Foundation, Inc.=0A+#=0A+= # This file is free software; the Free Software Foundation=0A+# gives unlim= ited permission to copy and/or distribute it,=0A+# with or without modifica= tions, as long as this notice is preserved.=0A+=0A+# serial 3=0A+=0A+# AM= =5FMAKE=5FINCLUDE()=0A+# -----------------=0A+# Check to see how make treat= s includes.=0A+AC=5FDEFUN([AM=5FMAKE=5FINCLUDE],=0A+[am=5Fmake=3D${MAKE-mak= e}=0A+cat > confinc << 'END'=0A+am=5F=5Fdoit:=0A+ @echo done=0A+.PHONY: am= =5F=5Fdoit=0A+END=0A+# If we don't find an include directive, just comment = out the code.=0A+AC=5FMSG=5FCHECKING([for style of include used by $am=5Fma= ke])=0A+am=5F=5Finclude=3D"#"=0A+am=5F=5Fquote=3D=0A+=5Fam=5Fresult=3Dnone= =0A+# First try GNU make style include.=0A+echo "include confinc" > confmf= =0A+# We grep out `Entering directory' and `Leaving directory'=0A+# message= s which can occur if `w' ends up in MAKEFLAGS.=0A+# In particular we don't = look at `^make:' because GNU make might=0A+# be invoked under some other na= me (usually "gmake"), in which=0A+# case it prints its new name instead of = `make'.=0A+if test "`$am=5Fmake -s -f confmf 2> /dev/null | grep -v 'ing di= rectory'`" =3D "done"; then=0A+ am=5F=5Finclude=3Dinclude=0A+ am=5F=5Fq= uote=3D=0A+ =5Fam=5Fresult=3DGNU=0A+fi=0A+# Now try BSD make style includ= e.=0A+if test "$am=5F=5Finclude" =3D "#"; then=0A+ echo '.include "confin= c"' > confmf=0A+ if test "`$am=5Fmake -s -f confmf 2> /dev/null`" =3D "do= ne"; then=0A+ am=5F=5Finclude=3D.include=0A+ am=5F=5Fquote=3D"\""= =0A+ =5Fam=5Fresult=3DBSD=0A+ fi=0A+fi=0A+AC=5FSUBST([am=5F=5Finclud= e])=0A+AC=5FSUBST([am=5F=5Fquote])=0A+AC=5FMSG=5FRESULT([$=5Fam=5Fresult])= =0A+rm -f confinc confmf=0A+])=0A+=0A+# Fake the existence of programs that= GNU maintainers use. -*- Autoconf -*-=0A+=0A+# Copyright (C) 1997, 1999, = 2000, 2001, 2003, 2004, 2005=0A+# Free Software Foundation, Inc.=0A+#=0A+# = This file is free software; the Free Software Foundation=0A+# gives unlimit= ed permission to copy and/or distribute it,=0A+# with or without modificati= ons, as long as this notice is preserved.=0A+=0A+# serial 5=0A+=0A+# AM=5FM= ISSING=5FPROG(NAME, PROGRAM)=0A+# ------------------------------=0A+AC=5FDE= FUN([AM=5FMISSING=5FPROG],=0A+[AC=5FREQUIRE([AM=5FMISSING=5FHAS=5FRUN])=0A+= $1=3D${$1-"${am=5Fmissing=5Frun}$2"}=0A+AC=5FSUBST($1)])=0A+=0A+=0A+# AM=5F= MISSING=5FHAS=5FRUN=0A+# ------------------=0A+# Define MISSING if not defi= ned so far and test if it supports --run.=0A+# If it does, set am=5Fmissing= =5Frun to use it, otherwise, to nothing.=0A+AC=5FDEFUN([AM=5FMISSING=5FHAS= =5FRUN],=0A+[AC=5FREQUIRE([AM=5FAUX=5FDIR=5FEXPAND])dnl=0A+AC=5FREQUIRE=5FA= UX=5FFILE([missing])dnl=0A+test x"${MISSING+set}" =3D xset || MISSING=3D"\$= {SHELL} $am=5Faux=5Fdir/missing"=0A+# Use eval to expand $SHELL=0A+if eval = "$MISSING --run true"; then=0A+ am=5Fmissing=5Frun=3D"$MISSING --run "=0A+= else=0A+ am=5Fmissing=5Frun=3D=0A+ AC=5FMSG=5FWARN([`missing' script is t= oo old or missing])=0A+fi=0A+])=0A+=0A+# Copyright (C) 2003, 2004, 2005, 20= 06 Free Software Foundation, Inc.=0A+#=0A+# This file is free software; th= e Free Software Foundation=0A+# gives unlimited permission to copy and/or d= istribute it,=0A+# with or without modifications, as long as this notice is= preserved.=0A+=0A+# AM=5FPROG=5FMKDIR=5FP=0A+# ---------------=0A+# Check = for `mkdir -p'.=0A+AC=5FDEFUN([AM=5FPROG=5FMKDIR=5FP],=0A+[AC=5FPREREQ([2.6= 0])dnl=0A+AC=5FREQUIRE([AC=5FPROG=5FMKDIR=5FP])dnl=0A+dnl Automake 1.8 to 1= .9.6 used to define mkdir=5Fp. We now use MKDIR=5FP,=0A+dnl while keeping = a definition of mkdir=5Fp for backward compatibility.=0A+dnl @MKDIR=5FP@ is= magic: AC=5FOUTPUT adjusts its value for each Makefile.=0A+dnl However we = cannot define mkdir=5Fp as $(MKDIR=5FP) for the sake of=0A+dnl Makefile.ins= that do not define MKDIR=5FP, so we do our own=0A+dnl adjustment using top= =5Fbuilddir (which is defined more often than=0A+dnl MKDIR=5FP).=0A+AC=5FSU= BST([mkdir=5Fp], ["$MKDIR=5FP"])dnl=0A+case $mkdir=5Fp in=0A+ [[\\/$]]* | = ?:[[\\/]]*) ;;=0A+ */*) mkdir=5Fp=3D"\$(top=5Fbuilddir)/$mkdir=5Fp" ;;=0A+= esac=0A+])=0A+=0A+# Helper functions for option handling. = -*- Autoconf -*-=0A+=0A+# Copyright (C) 2001, 2002, 2003, 2005 Free Sof= tware Foundation, Inc.=0A+#=0A+# This file is free software; the Free Softw= are Foundation=0A+# gives unlimited permission to copy and/or distribute it= ,=0A+# with or without modifications, as long as this notice is preserved.= =0A+=0A+# serial 3=0A+=0A+# =5FAM=5FMANGLE=5FOPTION(NAME)=0A+# ------------= -----------=0A+AC=5FDEFUN([=5FAM=5FMANGLE=5FOPTION],=0A+[[=5FAM=5FOPTION=5F= ]m4=5Fbpatsubst($1, [[^a-zA-Z0-9=5F]], [=5F])])=0A+=0A+# =5FAM=5FSET=5FOPTI= ON(NAME)=0A+# ------------------------------=0A+# Set option NAME. Present= ly that only means defining a flag for this option.=0A+AC=5FDEFUN([=5FAM=5F= SET=5FOPTION],=0A+[m4=5Fdefine(=5FAM=5FMANGLE=5FOPTION([$1]), 1)])=0A+=0A+#= =5FAM=5FSET=5FOPTIONS(OPTIONS)=0A+# ----------------------------------=0A+= # OPTIONS is a space-separated list of Automake options.=0A+AC=5FDEFUN([=5F= AM=5FSET=5FOPTIONS],=0A+[AC=5FFOREACH([=5FAM=5FOption], [$1], [=5FAM=5FSET= =5FOPTION(=5FAM=5FOption)])])=0A+=0A+# =5FAM=5FIF=5FOPTION(OPTION, IF-SET, = [IF-NOT-SET])=0A+# -------------------------------------------=0A+# Execute= IF-SET if OPTION is set, IF-NOT-SET otherwise.=0A+AC=5FDEFUN([=5FAM=5FIF= =5FOPTION],=0A+[m4=5Fifset(=5FAM=5FMANGLE=5FOPTION([$1]), [$2], [$3])])=0A+= =0A+# Check to make sure that the build environment is sane. -*- Autocon= f -*-=0A+=0A+# Copyright (C) 1996, 1997, 2000, 2001, 2003, 2005=0A+# Free S= oftware Foundation, Inc.=0A+#=0A+# This file is free software; the Free Sof= tware Foundation=0A+# gives unlimited permission to copy and/or distribute = it,=0A+# with or without modifications, as long as this notice is preserved= .=0A+=0A+# serial 4=0A+=0A+# AM=5FSANITY=5FCHECK=0A+# ---------------=0A+AC= =5FDEFUN([AM=5FSANITY=5FCHECK],=0A+[AC=5FMSG=5FCHECKING([whether build envi= ronment is sane])=0A+# Just in case=0A+sleep 1=0A+echo timestamp > conftest= .file=0A+# Do `set' in a subshell so we don't clobber the current shell's= =0A+# arguments. Must try -L first in case configure is actually a=0A+# sy= mlink; some systems play weird games with the mod time of symlinks=0A+# (eg= FreeBSD returns the mod time of the symlink's containing=0A+# directory).= =0A+if (=0A+ set X `ls -Lt $srcdir/configure conftest.file 2> /dev/null`= =0A+ if test "$[*]" =3D "X"; then=0A+ # -L didn't work.=0A+ set= X `ls -t $srcdir/configure conftest.file`=0A+ fi=0A+ rm -f conftest.fi= le=0A+ if test "$[*]" !=3D "X $srcdir/configure conftest.file" \=0A+ = && test "$[*]" !=3D "X conftest.file $srcdir/configure"; then=0A+=0A+ = # If neither matched, then we have a broken ls. This can happen=0A+ = # if, for instance, CONFIG=5FSHELL is bash and it inherits a=0A+ # bro= ken ls alias from the environment. This has actually=0A+ # happened. = Such a system could not be considered "sane".=0A+ AC=5FMSG=5FERROR([l= s -t appears to fail. Make sure there is not a broken=0A+alias in your env= ironment])=0A+ fi=0A+=0A+ test "$[2]" =3D conftest.file=0A+ )=0A+then= =0A+ # Ok.=0A+ :=0A+else=0A+ AC=5FMSG=5FERROR([newly created file is = older than distributed files!=0A+Check your system clock])=0A+fi=0A+AC=5FMS= G=5FRESULT(yes)])=0A+=0A+# Copyright (C) 2001, 2003, 2005 Free Software Fo= undation, Inc.=0A+#=0A+# This file is free software; the Free Software Foun= dation=0A+# gives unlimited permission to copy and/or distribute it,=0A+# w= ith or without modifications, as long as this notice is preserved.=0A+=0A+#= AM=5FPROG=5FINSTALL=5FSTRIP=0A+# ---------------------=0A+# One issue with= vendor `install' (even GNU) is that you can't=0A+# specify the program use= d to strip binaries. This is especially=0A+# annoying in cross-compiling e= nvironments, where the build's strip=0A+# is unlikely to handle the host's = binaries.=0A+# Fortunately install-sh will honor a STRIPPROG variable, so w= e=0A+# always use install-sh in `make install-strip', and initialize=0A+# S= TRIPPROG with the value of the STRIP variable (set by the user).=0A+AC=5FDE= FUN([AM=5FPROG=5FINSTALL=5FSTRIP],=0A+[AC=5FREQUIRE([AM=5FPROG=5FINSTALL=5F= SH])dnl=0A+# Installed binaries are usually stripped using `strip' when the= user=0A+# run `make install-strip'. However `strip' might not be the righ= t=0A+# tool to use in cross-compilation environments, therefore Automake=0A= +# will honor the `STRIP' environment variable to overrule this program.=0A= +dnl Don't test for $cross=5Fcompiling =3D yes, because it might be `maybe'= .=0A+if test "$cross=5Fcompiling" !=3D no; then=0A+ AC=5FCHECK=5FTOOL([STR= IP], [strip], :)=0A+fi=0A+INSTALL=5FSTRIP=5FPROGRAM=3D"\$(install=5Fsh) -c = -s"=0A+AC=5FSUBST([INSTALL=5FSTRIP=5FPROGRAM])])=0A+=0A+# Copyright (C) 200= 6 Free Software Foundation, Inc.=0A+#=0A+# This file is free software; the= Free Software Foundation=0A+# gives unlimited permission to copy and/or di= stribute it,=0A+# with or without modifications, as long as this notice is = preserved.=0A+=0A+# =5FAM=5FSUBST=5FNOTMAKE(VARIABLE)=0A+# ----------------= -----------=0A+# Prevent Automake from outputting VARIABLE =3D @VARIABLE@ i= n Makefile.in.=0A+# This macro is traced by Automake.=0A+AC=5FDEFUN([=5FAM= =5FSUBST=5FNOTMAKE])=0A+=0A+# Check how to create a tarball. = -*- Autoconf -*-=0A+=0A+# Copyright (C) 2004, 2005 Free Softw= are Foundation, Inc.=0A+#=0A+# This file is free software; the Free Softwar= e Foundation=0A+# gives unlimited permission to copy and/or distribute it,= =0A+# with or without modifications, as long as this notice is preserved.= =0A+=0A+# serial 2=0A+=0A+# =5FAM=5FPROG=5FTAR(FORMAT)=0A+# ---------------= -----=0A+# Check how to create a tarball in format FORMAT.=0A+# FORMAT shou= ld be one of `v7', `ustar', or `pax'.=0A+#=0A+# Substitute a variable $(am= =5F=5Ftar) that is a command=0A+# writing to stdout a FORMAT-tarball contai= ning the directory=0A+# $tardir.=0A+# tardir=3Ddirectory && $(am=5F=5Ft= ar) > result.tar=0A+#=0A+# Substitute a variable $(am=5F=5Funtar) that extr= act such=0A+# a tarball read from stdin.=0A+# $(am=5F=5Funtar) < result= .tar=0A+AC=5FDEFUN([=5FAM=5FPROG=5FTAR],=0A+[# Always define AMTAR for back= ward compatibility.=0A+AM=5FMISSING=5FPROG([AMTAR], [tar])=0A+m4=5Fif([$1],= [v7],=0A+ [am=5F=5Ftar=3D'${AMTAR} chof - "$$tardir"'; am=5F=5Funtar= =3D'${AMTAR} xf -'],=0A+ [m4=5Fcase([$1], [ustar],, [pax],,=0A+ = [m4=5Ffatal([Unknown tar format])])=0A+AC=5FMSG=5FCHECKING([how to cr= eate a $1 tar archive])=0A+# Loop over all known methods to create a tar ar= chive until one works.=0A+=5Fam=5Ftools=3D'gnutar m4=5Fif([$1], [ustar], [p= laintar]) pax cpio none'=0A+=5Fam=5Ftools=3D${am=5Fcv=5Fprog=5Ftar=5F$1-$= =5Fam=5Ftools}=0A+# Do not fold the above two line into one, because Tru64 = sh and=0A+# Solaris sh will not grok spaces in the rhs of `-'.=0A+for =5Fam= =5Ftool in $=5Fam=5Ftools=0A+do=0A+ case $=5Fam=5Ftool in=0A+ gnutar)=0A+= for =5Fam=5Ftar in tar gnutar gtar;=0A+ do=0A+ AM=5FRUN=5FLOG([= $=5Fam=5Ftar --version]) && break=0A+ done=0A+ am=5F=5Ftar=3D"$=5Fam= =5Ftar --format=3Dm4=5Fif([$1], [pax], [posix], [$1]) -chf - "'"$$tardir"'= =0A+ am=5F=5Ftar=5F=3D"$=5Fam=5Ftar --format=3Dm4=5Fif([$1], [pax], [pos= ix], [$1]) -chf - "'"$tardir"'=0A+ am=5F=5Funtar=3D"$=5Fam=5Ftar -xf -"= =0A+ ;;=0A+ plaintar)=0A+ # Must skip GNU tar: if it does not suppor= t --format=3D it doesn't create=0A+ # ustar tarball either.=0A+ (tar = --version) >/dev/null 2>&1 && continue=0A+ am=5F=5Ftar=3D'tar chf - "$$t= ardir"'=0A+ am=5F=5Ftar=5F=3D'tar chf - "$tardir"'=0A+ am=5F=5Funtar= =3D'tar xf -'=0A+ ;;=0A+ pax)=0A+ am=5F=5Ftar=3D'pax -L -x $1 -w "$$= tardir"'=0A+ am=5F=5Ftar=5F=3D'pax -L -x $1 -w "$tardir"'=0A+ am=5F= =5Funtar=3D'pax -r'=0A+ ;;=0A+ cpio)=0A+ am=5F=5Ftar=3D'find "$$tard= ir" -print | cpio -o -H $1 -L'=0A+ am=5F=5Ftar=5F=3D'find "$tardir" -pri= nt | cpio -o -H $1 -L'=0A+ am=5F=5Funtar=3D'cpio -i -H $1 -d'=0A+ ;;= =0A+ none)=0A+ am=5F=5Ftar=3Dfalse=0A+ am=5F=5Ftar=5F=3Dfalse=0A+ = am=5F=5Funtar=3Dfalse=0A+ ;;=0A+ esac=0A+=0A+ # If the value was cach= ed, stop now. We just wanted to have am=5F=5Ftar=0A+ # and am=5F=5Funtar = set.=0A+ test -n "${am=5Fcv=5Fprog=5Ftar=5F$1}" && break=0A+=0A+ # tar/un= tar a dummy directory, and stop if the command works=0A+ rm -rf conftest.d= ir=0A+ mkdir conftest.dir=0A+ echo GrepMe > conftest.dir/file=0A+ AM=5FR= UN=5FLOG([tardir=3Dconftest.dir && eval $am=5F=5Ftar=5F >conftest.tar])=0A+= rm -rf conftest.dir=0A+ if test -s conftest.tar; then=0A+ AM=5FRUN=5F= LOG([$am=5F=5Funtar /= dev/null 2>&1 && break=0A+ fi=0A+done=0A+rm -rf conftest.dir=0A+=0A+AC=5FC= ACHE=5FVAL([am=5Fcv=5Fprog=5Ftar=5F$1], [am=5Fcv=5Fprog=5Ftar=5F$1=3D$=5Fam= =5Ftool])=0A+AC=5FMSG=5FRESULT([$am=5Fcv=5Fprog=5Ftar=5F$1])])=0A+AC=5FSUBS= T([am=5F=5Ftar])=0A+AC=5FSUBST([am=5F=5Funtar])=0A+]) # =5FAM=5FPROG=5FTAR= =0A+=0Adiff --git a/utils/ffsb-6.0-rc2/cirlist.c b/utils/ffsb-6.0-rc2/cirli= st.c=0Anew file mode 100644=0Aindex 0000000..1a96dc4=0A--- /dev/null=0A+++ = b/utils/ffsb-6.0-rc2/cirlist.c=0A@@ -0,0 +1,106 @@=0A+/*=0A+ * Copyright = (c) International Business Machines Corp., 2001-2004=0A+ *=0A+ * This pro= gram is free software; you can redistribute it and/or modify=0A+ * it un= der the terms of the GNU General Public License as published by=0A+ * the= Free Software Foundation; either version 2 of the License, or=0A+ * (at = your option) any later version.=0A+ *=0A+ * This program is distributed i= n the hope that it will be useful,=0A+ * but WITHOUT ANY WARRANTY; witho= ut even the implied warranty of=0A+ * MERCHANTABILITY or FITNESS FOR A PA= RTICULAR PURPOSE. See=0A+ * the GNU General Public License for more deta= ils.=0A+ *=0A+ * You should have received a copy of the GNU General Publi= c License=0A+ * along with this program; if not, write to the Free Softw= are=0A+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 0= 2110-1301 USA=0A+ */=0A+#include =0A+#include =0A+=0A+#= include "cirlist.h"=0A+#include "util.h"=0A+=0A+void init=5Fcirlist(struct = cirlist *cl)=0A+{=0A+ cl->count =3D 0;=0A+ cl->head =3D NULL;=0A+}=0A+=0A+i= nt cl=5Fempty(struct cirlist *cl)=0A+{=0A+ return !(cl->count);=0A+}=0A+=0A= +void cl=5Finsert=5Ftail(struct cirlist *cl, cldatatype object)=0A+{=0A+ st= ruct cnode *new =3D ffsb=5Fmalloc(sizeof(struct cnode));=0A+ new->obj =3D o= bject;=0A+ if (cl->count =3D=3D 0) {=0A+ assert(cl->head =3D=3D NULL);=0A+= cl->head =3D new;=0A+ cl->head->next =3D cl->head;=0A+ cl->head->prev = =3D cl->head;=0A+ cl->count =3D 1;=0A+ } else {=0A+ if (cl->count =3D=3D = 1) {=0A+ assert(cl->head->next =3D=3D cl->head);=0A+ assert(cl->head->p= rev =3D=3D cl->head);=0A+ cl->head->next =3D new;=0A+ cl->head->prev = =3D new;=0A+ new->next =3D cl->head;=0A+ new->prev =3D cl->head;=0A+ }= else {=0A+ assert(cl->head->next !=3D cl->head);=0A+ assert(cl->head->= prev !=3D cl->head);=0A+=0A+ new->next =3D cl->head;=0A+ new->prev =3D = (cl->head)->prev;=0A+ cl->head->prev->next =3D new;=0A+ cl->head->prev = =3D new;=0A+ }=0A+ cl->count++;=0A+ }=0A+}=0A+=0A+cldatatype cl=5Fremove= =5Fhead(struct cirlist *cl)=0A+{=0A+ struct cnode *oldhead =3D NULL;=0A+ st= ruct cnode *newhead =3D NULL;=0A+ cldatatype ret =3D NULL;=0A+=0A+ if (cl->= count =3D=3D 0) {=0A+ assert(cl->head =3D=3D NULL);=0A+ return NULL;=0A+ = }=0A+ if (cl->count =3D=3D 1) {=0A+ assert(cl->head->next =3D=3D cl->head)= ;=0A+ assert(cl->head->prev =3D=3D cl->head);=0A+ oldhead =3D cl->head;= =0A+ cl->head =3D NULL;=0A+ cl->count =3D 0;=0A+ } else if (cl->count =3D= =3D 2) {=0A+ oldhead =3D cl->head;=0A+ newhead =3D oldhead->next;=0A+ ne= whead->next =3D newhead;=0A+ newhead->prev =3D newhead;=0A+ cl->head =3D = newhead;=0A+ cl->count =3D 1;=0A+ } else {=0A+ assert(cl->head->next !=3D= cl->head);=0A+ assert(cl->head->prev !=3D cl->head);=0A+ oldhead =3D cl-= >head;=0A+ newhead =3D oldhead->next;=0A+ newhead->prev =3D oldhead->prev= ;=0A+ newhead->prev->next =3D newhead;=0A+ cl->head =3D newhead;=0A+ cl-= >count--;=0A+ }=0A+ ret =3D oldhead->obj;=0A+ oldhead->obj =3D (void *)(-1)= ;=0A+ oldhead->next =3D (void *)(-1);=0A+ oldhead->prev =3D (void *)(-1);= =0A+ free(oldhead);=0A+=0A+ return ret;=0A+}=0Adiff --git a/utils/ffsb-6.0-= rc2/cirlist.h b/utils/ffsb-6.0-rc2/cirlist.h=0Anew file mode 100644=0Aindex= 0000000..e8356a9=0A--- /dev/null=0A+++ b/utils/ffsb-6.0-rc2/cirlist.h=0A@@= -0,0 +1,41 @@=0A+/*=0A+ * Copyright (c) International Business Machines = Corp., 2001-2004=0A+ *=0A+ * This program is free software; you can redi= stribute it and/or modify=0A+ * it under the terms of the GNU General Pub= lic License as published by=0A+ * the Free Software Foundation; either ve= rsion 2 of the License, or=0A+ * (at your option) any later version.=0A+ = *=0A+ * This program is distributed in the hope that it will be useful,= =0A+ * but WITHOUT ANY WARRANTY; without even the implied warranty of=0A= + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See=0A+ * the= GNU General Public License for more details.=0A+ *=0A+ * You should have= received a copy of the GNU General Public License=0A+ * along with this = program; if not, write to the Free Software=0A+ * Foundation, Inc., 51 F= ranklin Street, Fifth Floor, Boston, MA 02110-1301 USA=0A+ */=0A+#ifndef = =5FCIRLIST=5FH=0A+#define =5FCIRLIST=5FH=0A+=0A+#include "filelist.h"=0A+= =0A+typedef struct ffsb=5Ffile *cldatatype;=0A+=0A+struct cnode {=0A+ cldat= atype obj;=0A+ struct cnode *next;=0A+ struct cnode *prev;=0A+};=0A+=0A+str= uct cirlist {=0A+ int count;=0A+ struct cnode *head;=0A+};=0A+=0A+void init= =5Fcirlist(struct cirlist *cl);=0A+int cl=5Fempty(struct cirlist *cl);=0A+v= oid cl=5Finsert=5Ftail(struct cirlist *cl , cldatatype object);=0A+cldataty= pe cl=5Fremove=5Fhead(struct cirlist *cl);=0A+=0A+#endif /* =5FCIRLIST=5FH = */=0Adiff --git a/utils/ffsb-6.0-rc2/config.guess b/utils/ffsb-6.0-rc2/conf= ig.guess=0Anew file mode 100755=0Aindex 0000000..12734a7=0A--- /dev/null=0A= +++ b/utils/ffsb-6.0-rc2/config.guess=0A@@ -0,0 +1,1554 @@=0A+#! /bin/sh=0A= +# Attempt to guess a canonical system name.=0A+# Copyright (C) 1992, 199= 3, 1994, 1995, 1996, 1997, 1998, 1999,=0A+# 2000, 2001, 2002, 2003, 2004,= 2005, 2006, 2007, 2008, 2009=0A+# Free Software Foundation, Inc.=0A+=0A+= timestamp=3D'2009-08-19'=0A+=0A+# This file is free software; you can redis= tribute it and/or modify it=0A+# under the terms of the GNU General Public = License as published by=0A+# the Free Software Foundation; either version 2= of the License, or=0A+# (at your option) any later version.=0A+#=0A+# This= program is distributed in the hope that it will be useful, but=0A+# WITHOU= T ANY WARRANTY; without even the implied warranty of=0A+# MERCHANTABILITY o= r FITNESS FOR A PARTICULAR PURPOSE. See the GNU=0A+# General Public Licens= e for more details.=0A+#=0A+# You should have received a copy of the GNU Ge= neral Public License=0A+# along with this program; if not, write to the Fre= e Software=0A+# Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston,= MA=0A+# 02110-1301, USA.=0A+#=0A+# As a special exception to the GNU Gener= al Public License, if you=0A+# distribute this file as part of a program th= at contains a=0A+# configuration script generated by Autoconf, you may incl= ude it under=0A+# the same distribution terms that you use for the rest of = that program.=0A+=0A+=0A+# Originally written by Per Bothner. Please send = patches (context=0A+# diff format) to and include = a ChangeLog=0A+# entry.=0A+#=0A+# This script attempts to guess a canonical= system name similar to=0A+# config.sub. If it succeeds, it prints the sys= tem name on stdout, and=0A+# exits with 0. Otherwise, it exits with 1.=0A+= #=0A+# You can get the latest version of this script from:=0A+# http://git.= savannah.gnu.org/gitweb/?p=3Dconfig.git;a=3Dblob=5Fplain;f=3Dconfig.guess;h= b=3DHEAD=0A+=0A+me=3D`echo "$0" | sed -e 's,.*/,,'`=0A+=0A+usage=3D"\=0A+Us= age: $0 [OPTION]=0A+=0A+Output the configuration name of the system \`$me' = is run on.=0A+=0A+Operation modes:=0A+ -h, --help print this help,= then exit=0A+ -t, --time-stamp print date of last modification, then ex= it=0A+ -v, --version print version number, then exit=0A+=0A+Report bu= gs and patches to ."=0A+=0A+version=3D"\=0A+GNU con= fig.guess ($timestamp)=0A+=0A+Originally written by Per Bothner.=0A+Copyrig= ht (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001,=0A+2002,= 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc.=0A+=0A+T= his is free software; see the source for copying conditions. There is NO= =0A+warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURP= OSE."=0A+=0A+help=3D"=0A+Try \`$me --help' for more information."=0A+=0A+# = Parse command line=0A+while test $# -gt 0 ; do=0A+ case $1 in=0A+ --tim= e-stamp | --time* | -t )=0A+ echo "$timestamp" ; exit ;;=0A+ --ver= sion | -v )=0A+ echo "$version" ; exit ;;=0A+ --help | --h* | -h )= =0A+ echo "$usage"; exit ;;=0A+ -- ) # Stop option processing= =0A+ shift; break ;;=0A+ - ) # Use stdin as input.=0A+ break= ;;=0A+ -* )=0A+ echo "$me: invalid option $1$help" >&2=0A+ = exit 1 ;;=0A+ * )=0A+ break ;;=0A+ esac=0A+done=0A+=0A+if test $#= !=3D 0; then=0A+ echo "$me: too many arguments$help" >&2=0A+ exit 1=0A+f= i=0A+=0A+trap 'exit 1' 1 2 15=0A+=0A+# CC=5FFOR=5FBUILD -- compiler used by= this script. Note that the use of a=0A+# compiler to aid in system detecti= on is discouraged as it requires=0A+# temporary files to be created and, as= you can see below, it is a=0A+# headache to deal with in a portable fashio= n.=0A+=0A+# Historically, `CC=5FFOR=5FBUILD' used to be named `HOST=5FCC'. = We still=0A+# use `HOST=5FCC' if defined, but it is deprecated.=0A+=0A+# Po= rtable tmp directory creation inspired by the Autoconf team.=0A+=0A+set=5Fc= c=5Ffor=5Fbuild=3D'=0A+trap "exitcode=3D\$?; (rm -f \$tmpfiles 2>/dev/null;= rmdir \$tmp 2>/dev/null) && exit \$exitcode" 0 ;=0A+trap "rm -f \$tmpfiles= 2>/dev/null; rmdir \$tmp 2>/dev/null; exit 1" 1 2 13 15 ;=0A+: ${TMPDIR=3D= /tmp} ;=0A+ { tmp=3D`(umask 077 && mktemp -d "$TMPDIR/cgXXXXXX") 2>/dev/nul= l` && test -n "$tmp" && test -d "$tmp" ; } ||=0A+ { test -n "$RANDOM" && tm= p=3D$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir $tmp) ; } ||=0A+ { tmp=3D$T= MPDIR/cg-$$ && (umask 077 && mkdir $tmp) && echo "Warning: creating insecur= e temp directory" >&2 ; } ||=0A+ { echo "$me: cannot create a temporary dir= ectory in $TMPDIR" >&2 ; exit 1 ; } ;=0A+dummy=3D$tmp/dummy ;=0A+tmpfiles= =3D"$dummy.c $dummy.o $dummy.rel $dummy" ;=0A+case $CC=5FFOR=5FBUILD,$HOST= =5FCC,$CC in=0A+ ,,) echo "int x;" > $dummy.c ;=0A+ for c in cc gcc c89 = c99 ; do=0A+ if ($c -c -o $dummy.o $dummy.c) >/dev/null 2>&1 ; then=0A+ = CC=5FFOR=5FBUILD=3D"$c"; break ;=0A+ fi ;=0A+ done ;=0A+ if test x"$C= C=5FFOR=5FBUILD" =3D x ; then=0A+ CC=5FFOR=5FBUILD=3Dno=5Fcompiler=5Ffoun= d ;=0A+ fi=0A+ ;;=0A+ ,,*) CC=5FFOR=5FBUILD=3D$CC ;;=0A+ ,*,*) CC=5FFOR= =5FBUILD=3D$HOST=5FCC ;;=0A+esac ; set=5Fcc=5Ffor=5Fbuild=3D ;'=0A+=0A+# Th= is is needed to find uname on a Pyramid OSx when run in the BSD universe.= =0A+# (ghazi@noc.rutgers.edu 1994-08-24)=0A+if (test -f /.attbin/uname) >/d= ev/null 2>&1 ; then=0A+ PATH=3D$PATH:/.attbin ; export PATH=0A+fi=0A+=0A+UN= AME=5FMACHINE=3D`(uname -m) 2>/dev/null` || UNAME=5FMACHINE=3Dunknown=0A+UN= AME=5FRELEASE=3D`(uname -r) 2>/dev/null` || UNAME=5FRELEASE=3Dunknown=0A+UN= AME=5FSYSTEM=3D`(uname -s) 2>/dev/null` || UNAME=5FSYSTEM=3Dunknown=0A+UNA= ME=5FVERSION=3D`(uname -v) 2>/dev/null` || UNAME=5FVERSION=3Dunknown=0A+=0A= +case "${UNAME=5FSYSTEM}" in=0A+Linux|GNU/*)=0A+ eval $set=5Fcc=5Ffor=5Fbui= ld=0A+ cat << EOF > $dummy.c=0A+ #include =0A+ #ifdef =5F=5FUCL= IBC=5F=5F=0A+ # ifdef =5F=5FUCLIBC=5FCONFIG=5FVERSION=5F=5F=0A+ LIBC=3Ducli= bc =5F=5FUCLIBC=5FCONFIG=5FVERSION=5F=5F=0A+ # else=0A+ LIBC=3Duclibc=0A+ #= endif=0A+ #else=0A+ LIBC=3Dgnu=0A+ #endif=0A+EOF=0A+ eval `$CC=5FFOR=5FBUI= LD -E $dummy.c 2>/dev/null | grep LIBC=3D | sed -e 's: ::g'`=0A+ ;;=0A+esac= =0A+=0A+# Note: order is significant - the case branches are not exclusive.= =0A+=0A+case "${UNAME=5FMACHINE}:${UNAME=5FSYSTEM}:${UNAME=5FRELEASE}:${UNA= ME=5FVERSION}" in=0A+ *:NetBSD:*:*)=0A+ # NetBSD (nbsd) targets should (= where applicable) match one or=0A+ # more of the tupples: *-*-netbsdelf*, *= -*-netbsdaout*,=0A+ # *-*-netbsdecoff* and *-*-netbsd*. For targets that r= ecently=0A+ # switched to ELF, *-*-netbsd* would select the old=0A+ # objec= t file format. This provides both forward=0A+ # compatibility and a consis= tent mechanism for selecting the=0A+ # object file format.=0A+ #=0A+ # Note= : NetBSD doesn't particularly care about the vendor=0A+ # portion of the na= me. We always set it to "unknown".=0A+ sysctl=3D"sysctl -n hw.machine=5Far= ch"=0A+ UNAME=5FMACHINE=5FARCH=3D`(/sbin/$sysctl 2>/dev/null || \=0A+ /= usr/sbin/$sysctl 2>/dev/null || echo unknown)`=0A+ case "${UNAME=5FMACHINE= =5FARCH}" in=0A+ armeb) machine=3Darmeb-unknown ;;=0A+ arm*) machin= e=3Darm-unknown ;;=0A+ sh3el) machine=3Dshl-unknown ;;=0A+ sh3eb) m= achine=3Dsh-unknown ;;=0A+ sh5el) machine=3Dsh5le-unknown ;;=0A+ *)= machine=3D${UNAME=5FMACHINE=5FARCH}-unknown ;;=0A+ esac=0A+ # The Operatin= g System including object format, if it has switched=0A+ # to ELF recently,= or will in the future.=0A+ case "${UNAME=5FMACHINE=5FARCH}" in=0A+ arm= *|i386|m68k|ns32k|sh3*|sparc|vax)=0A+ eval $set=5Fcc=5Ffor=5Fbuild=0A+ if= echo =5F=5FELF=5F=5F | $CC=5FFOR=5FBUILD -E - 2>/dev/null \=0A+ | grep -= q =5F=5FELF=5F=5F=0A+ then=0A+ # Once all utilities can be ECOFF (net= bsdecoff) or a.out (netbsdaout).=0A+ # Return netbsd for either. FIX?= =0A+ os=3Dnetbsd=0A+ else=0A+ os=3Dnetbsdelf=0A+ fi=0A+ ;;=0A+= *)=0A+ os=3Dnetbsd=0A+ ;;=0A+ esac=0A+ # The OS release=0A+ #= Debian GNU/NetBSD machines have a different userland, and=0A+ # thus, need= a distinct triplet. However, they do not need=0A+ # kernel version informa= tion, so it can be replaced with a=0A+ # suitable tag, in the style of linu= x-gnu.=0A+ case "${UNAME=5FVERSION}" in=0A+ Debian*)=0A+ release=3D'-g= nu'=0A+ ;;=0A+ *)=0A+ release=3D`echo ${UNAME=5FRELEASE}|sed -e 's/[-= =5F].*/\./'`=0A+ ;;=0A+ esac=0A+ # Since CPU=5FTYPE-MANUFACTURER-KERNEL-OP= ERATING=5FSYSTEM:=0A+ # contains redundant information, the shorter form:= =0A+ # CPU=5FTYPE-MANUFACTURER-OPERATING=5FSYSTEM is used.=0A+ echo "${mach= ine}-${os}${release}"=0A+ exit ;;=0A+ *:OpenBSD:*:*)=0A+ UNAME=5FMACHINE= =5FARCH=3D`arch | sed 's/OpenBSD.//'`=0A+ echo ${UNAME=5FMACHINE=5FARCH}-un= known-openbsd${UNAME=5FRELEASE}=0A+ exit ;;=0A+ *:ekkoBSD:*:*)=0A+ echo = ${UNAME=5FMACHINE}-unknown-ekkobsd${UNAME=5FRELEASE}=0A+ exit ;;=0A+ *:S= olidBSD:*:*)=0A+ echo ${UNAME=5FMACHINE}-unknown-solidbsd${UNAME=5FRELEASE}= =0A+ exit ;;=0A+ macppc:MirBSD:*:*)=0A+ echo powerpc-unknown-mirbsd${UNA= ME=5FRELEASE}=0A+ exit ;;=0A+ *:MirBSD:*:*)=0A+ echo ${UNAME=5FMACHINE}-= unknown-mirbsd${UNAME=5FRELEASE}=0A+ exit ;;=0A+ alpha:OSF1:*:*)=0A+ cas= e $UNAME=5FRELEASE in=0A+ *4.0)=0A+ UNAME=5FRELEASE=3D`/usr/sbin/sizer -v = | awk '{print $3}'`=0A+ ;;=0A+ *5.*)=0A+ UNAME=5FRELEASE=3D`/usr/s= bin/sizer -v | awk '{print $4}'`=0A+ ;;=0A+ esac=0A+ # According to Compaq= , /usr/sbin/psrinfo has been available on=0A+ # OSF/1 and Tru64 systems pro= duced since 1995. I hope that=0A+ # covers most systems running today. Th= is code pipes the CPU=0A+ # types through head -n 1, so we only detect the = type of CPU 0.=0A+ ALPHA=5FCPU=5FTYPE=3D`/usr/sbin/psrinfo -v | sed -n -e '= s/^ The alpha \(.*\) processor.*$/\1/p' | head -n 1`=0A+ case "$ALPHA=5FCP= U=5FTYPE" in=0A+ "EV4 (21064)")=0A+ UNAME=5FMACHINE=3D"alpha" ;;=0A+ = "EV4.5 (21064)")=0A+ UNAME=5FMACHINE=3D"alpha" ;;=0A+ "LCA4 (21066/= 21068)")=0A+ UNAME=5FMACHINE=3D"alpha" ;;=0A+ "EV5 (21164)")=0A+ UNAM= E=5FMACHINE=3D"alphaev5" ;;=0A+ "EV5.6 (21164A)")=0A+ UNAME=5FMACHINE= =3D"alphaev56" ;;=0A+ "EV5.6 (21164PC)")=0A+ UNAME=5FMACHINE=3D"alphap= ca56" ;;=0A+ "EV5.7 (21164PC)")=0A+ UNAME=5FMACHINE=3D"alphapca57" ;;= =0A+ "EV6 (21264)")=0A+ UNAME=5FMACHINE=3D"alphaev6" ;;=0A+ "EV6.7= (21264A)")=0A+ UNAME=5FMACHINE=3D"alphaev67" ;;=0A+ "EV6.8CB (21264C)= ")=0A+ UNAME=5FMACHINE=3D"alphaev68" ;;=0A+ "EV6.8AL (21264B)")=0A+ U= NAME=5FMACHINE=3D"alphaev68" ;;=0A+ "EV6.8CX (21264D)")=0A+ UNAME=5FMA= CHINE=3D"alphaev68" ;;=0A+ "EV6.9A (21264/EV69A)")=0A+ UNAME=5FMACHINE= =3D"alphaev69" ;;=0A+ "EV7 (21364)")=0A+ UNAME=5FMACHINE=3D"alphaev7" = ;;=0A+ "EV7.9 (21364A)")=0A+ UNAME=5FMACHINE=3D"alphaev79" ;;=0A+ esac= =0A+ # A Pn.n version is a patched version.=0A+ # A Vn.n version is a relea= sed version.=0A+ # A Tn.n version is a released field test version.=0A+ # A= Xn.n version is an unreleased experimental baselevel.=0A+ # 1.2 uses "1.2"= for uname -r.=0A+ echo ${UNAME=5FMACHINE}-dec-osf`echo ${UNAME=5FRELEASE} = | sed -e 's/^[PVTX]//' | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopq= rstuvwxyz'`=0A+ exit ;;=0A+ Alpha\ *:Windows=5FNT*:*)=0A+ # How do we kn= ow it's Interix rather than the generic POSIX subsystem?=0A+ # Should we ch= ange UNAME=5FMACHINE based on the output of uname instead=0A+ # of the spec= ific Alpha model?=0A+ echo alpha-pc-interix=0A+ exit ;;=0A+ 21064:Window= s=5FNT:50:3)=0A+ echo alpha-dec-winnt3.5=0A+ exit ;;=0A+ Amiga*:UNIX=5FS= ystem=5FV:4.0:*)=0A+ echo m68k-unknown-sysv4=0A+ exit ;;=0A+ *:[Aa]miga[= Oo][Ss]:*:*)=0A+ echo ${UNAME=5FMACHINE}-unknown-amigaos=0A+ exit ;;=0A+ = *:[Mm]orph[Oo][Ss]:*:*)=0A+ echo ${UNAME=5FMACHINE}-unknown-morphos=0A+ ex= it ;;=0A+ *:OS/390:*:*)=0A+ echo i370-ibm-openedition=0A+ exit ;;=0A+ = *:z/VM:*:*)=0A+ echo s390-ibm-zvmoe=0A+ exit ;;=0A+ *:OS400:*:*)=0A+ = echo powerpc-ibm-os400=0A+ exit ;;=0A+ arm:RISC*:1.[012]*:*|arm:ris= cix:1.[012]*:*)=0A+ echo arm-acorn-riscix${UNAME=5FRELEASE}=0A+ exit ;;=0A+= arm:riscos:*:*|arm:RISCOS:*:*)=0A+ echo arm-unknown-riscos=0A+ exit ;;= =0A+ SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*)=0A+ echo hppa1.1-hitac= hi-hiuxmpp=0A+ exit ;;=0A+ Pyramid*:OSx*:*:* | MIS*:OSx*:*:* | MIS*:SMP= =5FDC-OSx*:*:*)=0A+ # akee@wpdis03.wpafb.af.mil (Earle F. Ake) contributed = MIS and NILE.=0A+ if test "`(/bin/universe) 2>/dev/null`" =3D att ; then=0A= + echo pyramid-pyramid-sysv3=0A+ else=0A+ echo pyramid-pyramid-bsd=0A+ fi= =0A+ exit ;;=0A+ NILE*:*:*:dcosx)=0A+ echo pyramid-pyramid-svr4=0A+ exit= ;;=0A+ DRS?6000:unix:4.0:6*)=0A+ echo sparc-icl-nx6=0A+ exit ;;=0A+ = DRS?6000:UNIX=5FSV:4.2*:7* | DRS?6000:isis:4.2*:7*)=0A+ case `/usr/bin/unam= e -p` in=0A+ sparc) echo sparc-icl-nx7; exit ;;=0A+ esac ;;=0A+ s390= x:SunOS:*:*)=0A+ echo ${UNAME=5FMACHINE}-ibm-solaris2`echo ${UNAME=5FRELEAS= E}|sed -e 's/[^.]*//'`=0A+ exit ;;=0A+ sun4H:SunOS:5.*:*)=0A+ echo sparc= -hal-solaris2`echo ${UNAME=5FRELEASE}|sed -e 's/[^.]*//'`=0A+ exit ;;=0A+ = sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*)=0A+ echo sparc-sun-solaris2`ech= o ${UNAME=5FRELEASE}|sed -e 's/[^.]*//'`=0A+ exit ;;=0A+ i86pc:SunOS:5.*= :* | i86xen:SunOS:5.*:*)=0A+ eval $set=5Fcc=5Ffor=5Fbuild=0A+ SUN=5FARCH=3D= "i386"=0A+ # If there is a compiler, see if it is configured for 64-bit obj= ects.=0A+ # Note that the Sun cc does not turn =5F=5FLP64=5F=5F into 1 like= gcc does.=0A+ # This test works for both compilers.=0A+ if [ "$CC=5FFOR=5F= BUILD" !=3D 'no=5Fcompiler=5Ffound' ]; then=0A+ if (echo '#ifdef =5F=5F= amd64'; echo IS=5F64BIT=5FARCH; echo '#endif') | \=0A+ (CCOPTS=3D $CC=5FFO= R=5FBUILD -E - 2>/dev/null) | \=0A+ grep IS=5F64BIT=5FARCH >/dev/null=0A+ = then=0A+ SUN=5FARCH=3D"x86=5F64"=0A+ fi=0A+ fi=0A+ echo ${SUN=5FAR= CH}-pc-solaris2`echo ${UNAME=5FRELEASE}|sed -e 's/[^.]*//'`=0A+ exit ;;=0A+= sun4*:SunOS:6*:*)=0A+ # According to config.sub, this is the proper way= to canonicalize=0A+ # SunOS6. Hard to guess exactly what SunOS6 will be l= ike, but=0A+ # it's likely to be more like Solaris than SunOS4.=0A+ echo sp= arc-sun-solaris3`echo ${UNAME=5FRELEASE}|sed -e 's/[^.]*//'`=0A+ exit ;;=0A= + sun4*:SunOS:*:*)=0A+ case "`/usr/bin/arch -k`" in=0A+ Series*|S4*)= =0A+ UNAME=5FRELEASE=3D`uname -v`=0A+ ;;=0A+ esac=0A+ # Japanese Language= versions have a version number like `4.1.3-JL'.=0A+ echo sparc-sun-sunos`e= cho ${UNAME=5FRELEASE}|sed -e 's/-/=5F/'`=0A+ exit ;;=0A+ sun3*:SunOS:*:= *)=0A+ echo m68k-sun-sunos${UNAME=5FRELEASE}=0A+ exit ;;=0A+ sun*:*:4.2B= SD:*)=0A+ UNAME=5FRELEASE=3D`(sed 1q /etc/motd | awk '{print substr($5,1,3)= }') 2>/dev/null`=0A+ test "x${UNAME=5FRELEASE}" =3D "x" && UNAME=5FRELEASE= =3D3=0A+ case "`/bin/arch`" in=0A+ sun3)=0A+ echo m68k-sun-sunos${UNAM= E=5FRELEASE}=0A+ ;;=0A+ sun4)=0A+ echo sparc-sun-sunos${UNAME=5FRELEA= SE}=0A+ ;;=0A+ esac=0A+ exit ;;=0A+ aushp:SunOS:*:*)=0A+ echo sparc-aus= pex-sunos${UNAME=5FRELEASE}=0A+ exit ;;=0A+ # The situation for MiNT is = a little confusing. The machine name=0A+ # can be virtually everything = (everything which is not=0A+ # "atarist" or "atariste" at least should h= ave a processor=0A+ # > m68000). The system name ranges from "MiNT" ove= r "FreeMiNT"=0A+ # to the lowercase version "mint" (or "freemint"). Fin= ally=0A+ # the system name "TOS" denotes a system which is actually not= =0A+ # MiNT. But MiNT is downward compatible to TOS, so this should=0A+= # be no problem.=0A+ atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | a= tarist[e]:*TOS:*:*)=0A+ echo m68k-atari-mint${UNAME=5FRELEASE}=0A+ e= xit ;;=0A+ atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*)=0A= + echo m68k-atari-mint${UNAME=5FRELEASE}=0A+ exit ;;=0A+ *falcon*= :*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*)=0A+ echo m68k-a= tari-mint${UNAME=5FRELEASE}=0A+ exit ;;=0A+ milan*:*MiNT:*:* | milan*:*m= int:*:* | *milan*:*TOS:*:*)=0A+ echo m68k-milan-mint${UNAME=5FRELEAS= E}=0A+ exit ;;=0A+ hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:= *TOS:*:*)=0A+ echo m68k-hades-mint${UNAME=5FRELEASE}=0A+ exit= ;;=0A+ *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*)=0A+ echo m68k-unk= nown-mint${UNAME=5FRELEASE}=0A+ exit ;;=0A+ m68k:machten:*:*)=0A+= echo m68k-apple-machten${UNAME=5FRELEASE}=0A+ exit ;;=0A+ powerpc:macht= en:*:*)=0A+ echo powerpc-apple-machten${UNAME=5FRELEASE}=0A+ exit ;;=0A+ = RISC*:Mach:*:*)=0A+ echo mips-dec-mach=5Fbsd4.3=0A+ exit ;;=0A+ RISC*:U= LTRIX:*:*)=0A+ echo mips-dec-ultrix${UNAME=5FRELEASE}=0A+ exit ;;=0A+ VA= X*:ULTRIX*:*:*)=0A+ echo vax-dec-ultrix${UNAME=5FRELEASE}=0A+ exit ;;=0A+ = 2020:CLIX:*:* | 2430:CLIX:*:*)=0A+ echo clipper-intergraph-clix${UNAME=5F= RELEASE}=0A+ exit ;;=0A+ mips:*:*:UMIPS | mips:*:*:RISCos)=0A+ eval $set= =5Fcc=5Ffor=5Fbuild=0A+ sed 's/^ //' << EOF >$dummy.c=0A+#ifdef =5F=5Fcplus= plus=0A+#include /* for printf() prototype */=0A+ int main (int = argc, char *argv[]) {=0A+#else=0A+ int main (argc, argv) int argc; char *ar= gv[]; {=0A+#endif=0A+ #if defined (host=5Fmips) && defined (MIPSEB)=0A+ #if= defined (SYSTYPE=5FSYSV)=0A+ printf ("mips-mips-riscos%ssysv\n", argv[1]= ); exit (0);=0A+ #endif=0A+ #if defined (SYSTYPE=5FSVR4)=0A+ printf ("mip= s-mips-riscos%ssvr4\n", argv[1]); exit (0);=0A+ #endif=0A+ #if defined (SYS= TYPE=5FBSD43) || defined(SYSTYPE=5FBSD)=0A+ printf ("mips-mips-riscos%sbs= d\n", argv[1]); exit (0);=0A+ #endif=0A+ #endif=0A+ exit (-1);=0A+ }=0A+E= OF=0A+ $CC=5FFOR=5FBUILD -o $dummy $dummy.c &&=0A+ dummyarg=3D`echo "${UN= AME=5FRELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` &&=0A+ SYSTEM=5FNAME=3D`$= dummy $dummyarg` &&=0A+ { echo "$SYSTEM=5FNAME"; exit; }=0A+ echo mips-= mips-riscos${UNAME=5FRELEASE}=0A+ exit ;;=0A+ Motorola:PowerMAX=5FOS:*:*= )=0A+ echo powerpc-motorola-powermax=0A+ exit ;;=0A+ Motorola:*:4.3:PL8-= *)=0A+ echo powerpc-harris-powermax=0A+ exit ;;=0A+ Night=5FHawk:*:*:Pow= erMAX=5FOS | Synergy:PowerMAX=5FOS:*:*)=0A+ echo powerpc-harris-powermax=0A= + exit ;;=0A+ Night=5FHawk:Power=5FUNIX:*:*)=0A+ echo powerpc-harris-pow= erunix=0A+ exit ;;=0A+ m88k:CX/UX:7*:*)=0A+ echo m88k-harris-cxux7=0A+ e= xit ;;=0A+ m88k:*:4*:R4*)=0A+ echo m88k-motorola-sysv4=0A+ exit ;;=0A+ = m88k:*:3*:R3*)=0A+ echo m88k-motorola-sysv3=0A+ exit ;;=0A+ AViiON:dgu= x:*:*)=0A+ # DG/UX returns AViiON for all architectures=0A+ U= NAME=5FPROCESSOR=3D`/usr/bin/uname -p`=0A+ if [ $UNAME=5FPROCESSOR =3D mc88= 100 ] || [ $UNAME=5FPROCESSOR =3D mc88110 ]=0A+ then=0A+ if [ ${TARGET= =5FBINARY=5FINTERFACE}x =3D m88kdguxelfx ] || \=0A+ [ ${TARGET=5FBIN= ARY=5FINTERFACE}x =3D x ]=0A+ then=0A+ echo m88k-dg-dgux${UNAME=5FRELE= ASE}=0A+ else=0A+ echo m88k-dg-dguxbcs${UNAME=5FRELEASE}=0A+ fi=0A= + else=0A+ echo i586-dg-dgux${UNAME=5FRELEASE}=0A+ fi=0A+ exit ;;=0A+ = M88*:DolphinOS:*:*) # DolphinOS (SVR3)=0A+ echo m88k-dolphin-sysv3=0A+ e= xit ;;=0A+ M88*:*:R3*:*)=0A+ # Delta 88k system running SVR3=0A+ echo m8= 8k-motorola-sysv3=0A+ exit ;;=0A+ XD88*:*:*:*) # Tektronix XD88 system r= unning UTekV (SVR3)=0A+ echo m88k-tektronix-sysv3=0A+ exit ;;=0A+ Tek43[= 0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD)=0A+ echo m68= k-tektronix-bsd=0A+ exit ;;=0A+ *:IRIX*:*:*)=0A+ echo mips-sgi-irix`echo= ${UNAME=5FRELEASE}|sed -e 's/-/=5F/g'`=0A+ exit ;;=0A+ ????????:AIX?:[1= 2].1:2) # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX.=0A+ echo romp-ibm-aix = # uname -m gives an 8 hex-code CPU id=0A+ exit ;; # Note that= : echo "'`uname -s`'" gives 'AIX '=0A+ i*86:AIX:*:*)=0A+ echo i386-ibm-a= ix=0A+ exit ;;=0A+ ia64:AIX:*:*)=0A+ if [ -x /usr/bin/oslevel ] ; then= =0A+ IBM=5FREV=3D`/usr/bin/oslevel`=0A+ else=0A+ IBM=5FREV=3D${UNAME=5FVE= RSION}.${UNAME=5FRELEASE}=0A+ fi=0A+ echo ${UNAME=5FMACHINE}-ibm-aix${IBM= =5FREV}=0A+ exit ;;=0A+ *:AIX:2:3)=0A+ if grep bos325 /usr/include/stdio= .h >/dev/null 2>&1; then=0A+ eval $set=5Fcc=5Ffor=5Fbuild=0A+ sed 's/^ /= /' << EOF >$dummy.c=0A+ #include =0A+=0A+ main()=0A+ {= =0A+ if (!=5F=5Fpower=5Fpc())=0A+ exit(1);=0A+ puts("powerpc-ibm-aix= 3.2.5");=0A+ exit(0);=0A+ }=0A+EOF=0A+ if $CC=5FFOR=5FBUILD -o $dummy = $dummy.c && SYSTEM=5FNAME=3D`$dummy`=0A+ then=0A+ echo "$SYSTEM=5FNAME"= =0A+ else=0A+ echo rs6000-ibm-aix3.2.5=0A+ fi=0A+ elif grep bos324 /usr= /include/stdio.h >/dev/null 2>&1; then=0A+ echo rs6000-ibm-aix3.2.4=0A+ el= se=0A+ echo rs6000-ibm-aix3.2=0A+ fi=0A+ exit ;;=0A+ *:AIX:*:[456])=0A+= IBM=5FCPU=5FID=3D`/usr/sbin/lsdev -C -c processor -S available | sed 1q | = awk '{ print $1 }'`=0A+ if /usr/sbin/lsattr -El ${IBM=5FCPU=5FID} | grep ' = POWER' >/dev/null 2>&1; then=0A+ IBM=5FARCH=3Drs6000=0A+ else=0A+ IBM=5FA= RCH=3Dpowerpc=0A+ fi=0A+ if [ -x /usr/bin/oslevel ] ; then=0A+ IBM=5FREV= =3D`/usr/bin/oslevel`=0A+ else=0A+ IBM=5FREV=3D${UNAME=5FVERSION}.${UNAME= =5FRELEASE}=0A+ fi=0A+ echo ${IBM=5FARCH}-ibm-aix${IBM=5FREV}=0A+ exit ;;= =0A+ *:AIX:*:*)=0A+ echo rs6000-ibm-aix=0A+ exit ;;=0A+ ibmrt:4.4BSD:= *|romp-ibm:BSD:*)=0A+ echo romp-ibm-bsd4.4=0A+ exit ;;=0A+ ibmrt:*BSD:*|= romp-ibm:BSD:*) # covers RT/PC BSD and=0A+ echo romp-ibm-bsd${UN= AME=5FRELEASE} # 4.3 with uname added to=0A+ exit ;; = # report: romp-ibm BSD 4.3=0A+ *:BOSX:*:*)=0A+ echo rs6000-bull-= bosx=0A+ exit ;;=0A+ DPX/2?00:B.O.S.:*:*)=0A+ echo m68k-bull-sysv3=0A+ e= xit ;;=0A+ 9000/[34]??:4.3bsd:1.*:*)=0A+ echo m68k-hp-bsd=0A+ exit ;;=0A= + hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*)=0A+ echo m68k-hp-bsd4.4= =0A+ exit ;;=0A+ 9000/[34678]??:HP-UX:*:*)=0A+ HPUX=5FREV=3D`echo ${UNAM= E=5FRELEASE}|sed -e 's/[^.]*.[0B]*//'`=0A+ case "${UNAME=5FMACHINE}" in=0A+= 9000/31? ) HP=5FARCH=3Dm68000 ;;=0A+ 9000/[34]?? ) = HP=5FARCH=3Dm68k ;;=0A+ 9000/[678][0-9][0-9])=0A+ if [ -x /usr/bin= /getconf ]; then=0A+ sc=5Fcpu=5Fversion=3D`/usr/bin/getconf SC=5FCPU= =5FVERSION 2>/dev/null`=0A+ sc=5Fkernel=5Fbits=3D`/usr/b= in/getconf SC=5FKERNEL=5FBITS 2>/dev/null`=0A+ case "${s= c=5Fcpu=5Fversion}" in=0A+ 523) HP=5FARCH=3D"hppa1.0" = ;; # CPU=5FPA=5FRISC1=5F0=0A+ 528) HP=5FARCH=3D"hppa1.= 1" ;; # CPU=5FPA=5FRISC1=5F1=0A+ 532) = # CPU=5FPA=5FRISC2=5F0=0A+ case "${sc=5Fkernel= =5Fbits}" in=0A+ 32) HP=5FARCH=3D"hppa2.0n" ;;=0A+= 64) HP=5FARCH=3D"hppa2.0w" ;;=0A+ '') HP=5FAR= CH=3D"hppa2.0" ;; # HP-UX 10.20=0A+ esac ;;=0A+ = esac=0A+ fi=0A+ if [ "${HP=5FARCH}" =3D "" ]; then=0A+ = eval $set=5Fcc=5Ffor=5Fbuild=0A+ sed 's/^ //' << EOF = >$dummy.c=0A+=0A+ #define =5FHPUX=5FSOURCE=0A+ #i= nclude =0A+ #include =0A+=0A+ = int main ()=0A+ {=0A+ #if defined(=5FSC=5FKERNEL= =5FBITS)=0A+ long bits =3D sysconf(=5FSC=5FKERNEL=5FBITS);= =0A+ #endif=0A+ long cpu =3D sysconf (=5FSC= =5FCPU=5FVERSION);=0A+=0A+ switch (cpu)=0A+ = {=0A+ case CPU=5FPA=5FRISC1=5F0: puts ("hppa1.0"); break;=0A+= case CPU=5FPA=5FRISC1=5F1: puts ("hppa1.1"); break;=0A+ = case CPU=5FPA=5FRISC2=5F0:=0A+ #if defined(=5FSC=5FK= ERNEL=5FBITS)=0A+ switch (bits)=0A+ {=0A+ = case 64: puts ("hppa2.0w"); break;=0A+ case 3= 2: puts ("hppa2.0n"); break;=0A+ default: puts ("hppa2.0"); = break;=0A+ } break;=0A+ #else /* !defined(=5FS= C=5FKERNEL=5FBITS) */=0A+ puts ("hppa2.0"); break;=0A+ = #endif=0A+ default: puts ("hppa1.0"); break;=0A+ = }=0A+ exit (0);=0A+ }=0A+EOF=0A+= (CCOPTS=3D $CC=5FFOR=5FBUILD -o $dummy $dummy.c 2>/dev/null) && HP=5F= ARCH=3D`$dummy`=0A+ test -z "$HP=5FARCH" && HP=5FARCH=3Dhppa=0A+ fi ;= ;=0A+ esac=0A+ if [ ${HP=5FARCH} =3D "hppa2.0w" ]=0A+ then=0A+ eval $se= t=5Fcc=5Ffor=5Fbuild=0A+=0A+ # hppa2.0w-hp-hpux* has a 64-bit kernel an= d a compiler generating=0A+ # 32-bit code. hppa64-hp-hpux* has the sam= e kernel and a compiler=0A+ # generating 64-bit code. GNU and HP use d= ifferent nomenclature:=0A+ #=0A+ # $ CC=5FFOR=5FBUILD=3Dcc ./config= .guess=0A+ # =3D> hppa2.0w-hp-hpux11.23=0A+ # $ CC=5FFOR=5FBUILD=3D= "cc +DA2.0w" ./config.guess=0A+ # =3D> hppa64-hp-hpux11.23=0A+=0A+ = if echo =5F=5FLP64=5F=5F | (CCOPTS=3D $CC=5FFOR=5FBUILD -E - 2>/dev/null) |= =0A+ grep -q =5F=5FLP64=5F=5F=0A+ then=0A+ HP=5FARCH=3D"hppa2.0w"=0A+= else=0A+ HP=5FARCH=3D"hppa64"=0A+ fi=0A+ fi=0A+ echo ${HP=5FARCH}= -hp-hpux${HPUX=5FREV}=0A+ exit ;;=0A+ ia64:HP-UX:*:*)=0A+ HPUX=5FREV=3D`= echo ${UNAME=5FRELEASE}|sed -e 's/[^.]*.[0B]*//'`=0A+ echo ia64-hp-hpux${HP= UX=5FREV}=0A+ exit ;;=0A+ 3050*:HI-UX:*:*)=0A+ eval $set=5Fcc=5Ffor=5Fbu= ild=0A+ sed 's/^ //' << EOF >$dummy.c=0A+ #include =0A+ int=0A+ m= ain ()=0A+ {=0A+ long cpu =3D sysconf (=5FSC=5FCPU=5FVERSION);=0A+ /* T= he order matters, because CPU=5FIS=5FHP=5FMC68K erroneously returns=0A+ = true for CPU=5FPA=5FRISC1=5F0. CPU=5FIS=5FPA=5FRISC returns correct=0A+ = results, however. */=0A+ if (CPU=5FIS=5FPA=5FRISC (cpu))=0A+ {= =0A+ switch (cpu)=0A+ {=0A+ case CPU=5FPA=5FRISC1=5F0: puts ("hpp= a1.0-hitachi-hiuxwe2"); break;=0A+ case CPU=5FPA=5FRISC1=5F1: puts ("hpp= a1.1-hitachi-hiuxwe2"); break;=0A+ case CPU=5FPA=5FRISC2=5F0: puts ("hpp= a2.0-hitachi-hiuxwe2"); break;=0A+ default: puts ("hppa-hitachi-hiuxwe2"= ); break;=0A+ }=0A+ }=0A+ else if (CPU=5FIS=5FHP=5FMC68K (cpu))=0A+ = puts ("m68k-hitachi-hiuxwe2");=0A+ else puts ("unknown-hitachi-hiuxwe= 2");=0A+ exit (0);=0A+ }=0A+EOF=0A+ $CC=5FFOR=5FBUILD -o $dummy $dummy.c = && SYSTEM=5FNAME=3D`$dummy` &&=0A+ { echo "$SYSTEM=5FNAME"; exit; }=0A+ ec= ho unknown-hitachi-hiuxwe2=0A+ exit ;;=0A+ 9000/7??:4.3bsd:*:* | 9000/8?= [79]:4.3bsd:*:* )=0A+ echo hppa1.1-hp-bsd=0A+ exit ;;=0A+ 9000/8??:4.3bs= d:*:*)=0A+ echo hppa1.0-hp-bsd=0A+ exit ;;=0A+ *9??*:MPE/iX:*:* | *3000*= :MPE/iX:*:*)=0A+ echo hppa1.0-hp-mpeix=0A+ exit ;;=0A+ hp7??:OSF1:*:* | = hp8?[79]:OSF1:*:* )=0A+ echo hppa1.1-hp-osf=0A+ exit ;;=0A+ hp8??:OSF1:*= :*)=0A+ echo hppa1.0-hp-osf=0A+ exit ;;=0A+ i*86:OSF1:*:*)=0A+ if [ -x /= usr/sbin/sysversion ] ; then=0A+ echo ${UNAME=5FMACHINE}-unknown-osf1mk= =0A+ else=0A+ echo ${UNAME=5FMACHINE}-unknown-osf1=0A+ fi=0A+ exit ;;= =0A+ parisc*:Lites*:*:*)=0A+ echo hppa1.1-hp-lites=0A+ exit ;;=0A+ C1= *:ConvexOS:*:* | convex:ConvexOS:C1*:*)=0A+ echo c1-convex-bsd=0A+ e= xit ;;=0A+ C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*)=0A+ if getsysinfo -= f scalar=5Facc=0A+ then echo c32-convex-bsd=0A+ else echo c2-convex-bsd=0A+= fi=0A+ exit ;;=0A+ C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*)= =0A+ echo c34-convex-bsd=0A+ exit ;;=0A+ C38*:ConvexOS:*:* | conv= ex:ConvexOS:C38*:*)=0A+ echo c38-convex-bsd=0A+ exit ;;=0A+ C4*:C= onvexOS:*:* | convex:ConvexOS:C4*:*)=0A+ echo c4-convex-bsd=0A+ exit= ;;=0A+ CRAY*Y-MP:*:*:*)=0A+ echo ymp-cray-unicos${UNAME=5FRELEASE} | se= d -e 's/\.[^.]*$/.X/'=0A+ exit ;;=0A+ CRAY*[A-Z]90:*:*:*)=0A+ echo ${UNA= ME=5FMACHINE}-cray-unicos${UNAME=5FRELEASE} \=0A+ | sed -e 's/CRAY.*\([A-Z]= 90\)/\1/' \=0A+ -e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstu= vwxyz/ \=0A+ -e 's/\.[^.]*$/.X/'=0A+ exit ;;=0A+ CRAY*TS:*:*:*)=0A= + echo t90-cray-unicos${UNAME=5FRELEASE} | sed -e 's/\.[^.]*$/.X/'=0A+ exit= ;;=0A+ CRAY*T3E:*:*:*)=0A+ echo alphaev5-cray-unicosmk${UNAME=5FRELEASE= } | sed -e 's/\.[^.]*$/.X/'=0A+ exit ;;=0A+ CRAY*SV1:*:*:*)=0A+ echo sv1= -cray-unicos${UNAME=5FRELEASE} | sed -e 's/\.[^.]*$/.X/'=0A+ exit ;;=0A+ = *:UNICOS/mp:*:*)=0A+ echo craynv-cray-unicosmp${UNAME=5FRELEASE} | sed -e = 's/\.[^.]*$/.X/'=0A+ exit ;;=0A+ F30[01]:UNIX=5FSystem=5FV:*:* | F700:UN= IX=5FSystem=5FV:*:*)=0A+ FUJITSU=5FPROC=3D`uname -m | tr 'ABCDEFGHIJKLMNOPQ= RSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`=0A+ FUJITSU=5FSYS=3D`uname = -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e = 's/\///'`=0A+ FUJITSU=5FREL=3D`echo ${UNAME=5FRELEASE} | sed -e 's/ = /=5F/'`=0A+ echo "${FUJITSU=5FPROC}-fujitsu-${FUJITSU=5FSYS}${FUJITS= U=5FREL}"=0A+ exit ;;=0A+ 5000:UNIX=5FSystem=5FV:4.*:*)=0A+ = FUJITSU=5FSYS=3D`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijkl= mnopqrstuvwxyz' | sed -e 's/\///'`=0A+ FUJITSU=5FREL=3D`echo ${UNAME= =5FRELEASE} | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' = | sed -e 's/ /=5F/'`=0A+ echo "sparc-fujitsu-${FUJITSU=5FSYS}${FUJIT= SU=5FREL}"=0A+ exit ;;=0A+ i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend= \ Embedded/OS:*:*)=0A+ echo ${UNAME=5FMACHINE}-pc-bsdi${UNAME=5FRELEASE}=0A= + exit ;;=0A+ sparc*:BSD/OS:*:*)=0A+ echo sparc-unknown-bsdi${UNAME=5FRE= LEASE}=0A+ exit ;;=0A+ *:BSD/OS:*:*)=0A+ echo ${UNAME=5FMACHINE}-unknown= -bsdi${UNAME=5FRELEASE}=0A+ exit ;;=0A+ *:FreeBSD:*:*)=0A+ case ${UNAME= =5FMACHINE} in=0A+ pc98)=0A+ echo i386-unknown-freebsd`echo ${UNAME=5F= RELEASE}|sed -e 's/[-(].*//'` ;;=0A+ amd64)=0A+ echo x86=5F64-unknown-= freebsd`echo ${UNAME=5FRELEASE}|sed -e 's/[-(].*//'` ;;=0A+ *)=0A+ ech= o ${UNAME=5FMACHINE}-unknown-freebsd`echo ${UNAME=5FRELEASE}|sed -e 's/[-(]= .*//'` ;;=0A+ esac=0A+ exit ;;=0A+ i*:CYGWIN*:*)=0A+ echo ${UNAME=5FMACH= INE}-pc-cygwin=0A+ exit ;;=0A+ *:MINGW*:*)=0A+ echo ${UNAME=5FMACHINE}-p= c-mingw32=0A+ exit ;;=0A+ i*:windows32*:*)=0A+ # uname -m includes "= -pc" on this system.=0A+ echo ${UNAME=5FMACHINE}-mingw32=0A+ exit ;;=0A= + i*:PW*:*)=0A+ echo ${UNAME=5FMACHINE}-pc-pw32=0A+ exit ;;=0A+ *:Int= erix*:[3456]*)=0A+ case ${UNAME=5FMACHINE} in=0A+ x86)=0A+ echo i5= 86-pc-interix${UNAME=5FRELEASE}=0A+ exit ;;=0A+ EM64T | authenticamd |= genuineintel)=0A+ echo x86=5F64-unknown-interix${UNAME=5FRELEASE}=0A+ ex= it ;;=0A+ IA64)=0A+ echo ia64-unknown-interix${UNAME=5FRELEASE}=0A+ e= xit ;;=0A+ esac ;;=0A+ [345]86:Windows=5F95:* | [345]86:Windows=5F98:* |= [345]86:Windows=5FNT:*)=0A+ echo i${UNAME=5FMACHINE}-pc-mks=0A+ exit ;;=0A= + 8664:Windows=5FNT:*)=0A+ echo x86=5F64-pc-mks=0A+ exit ;;=0A+ i*:Wi= ndows=5FNT*:* | Pentium*:Windows=5FNT*:*)=0A+ # How do we know it's Interix= rather than the generic POSIX subsystem?=0A+ # It also conflicts with pre-= 2.0 versions of AT&T UWIN. Should we=0A+ # UNAME=5FMACHINE based on the out= put of uname instead of i386?=0A+ echo i586-pc-interix=0A+ exit ;;=0A+ i= *:UWIN*:*)=0A+ echo ${UNAME=5FMACHINE}-pc-uwin=0A+ exit ;;=0A+ amd64:CYG= WIN*:*:* | x86=5F64:CYGWIN*:*:*)=0A+ echo x86=5F64-unknown-cygwin=0A+ exit = ;;=0A+ p*:CYGWIN*:*)=0A+ echo powerpcle-unknown-cygwin=0A+ exit ;;=0A+ = prep*:SunOS:5.*:*)=0A+ echo powerpcle-unknown-solaris2`echo ${UNAME=5FREL= EASE}|sed -e 's/[^.]*//'`=0A+ exit ;;=0A+ *:GNU:*:*)=0A+ # the GNU syste= m=0A+ echo `echo ${UNAME=5FMACHINE}|sed -e 's,[-/].*$,,'`-unknown-gnu`echo = ${UNAME=5FRELEASE}|sed -e 's,/.*$,,'`=0A+ exit ;;=0A+ *:GNU/*:*:*)=0A+ #= other systems with GNU libc and userland=0A+ echo ${UNAME=5FMACHINE}-unkno= wn-`echo ${UNAME=5FSYSTEM} | sed 's,^[^/]*/,,' | tr '[A-Z]' '[a-z]'``echo $= {UNAME=5FRELEASE}|sed -e 's/[-(].*//'`-${LIBC}=0A+ exit ;;=0A+ i*86:Mini= x:*:*)=0A+ echo ${UNAME=5FMACHINE}-pc-minix=0A+ exit ;;=0A+ arm*:Linux:*= :*)=0A+ eval $set=5Fcc=5Ffor=5Fbuild=0A+ if echo =5F=5FARM=5FEABI=5F=5F | $= CC=5FFOR=5FBUILD -E - 2>/dev/null \=0A+ | grep -q =5F=5FARM=5FEABI=5F= =5F=0A+ then=0A+ echo ${UNAME=5FMACHINE}-unknown-linux-${LIBC}=0A+ else= =0A+ echo ${UNAME=5FMACHINE}-unknown-linux-${LIBC}eabi=0A+ fi=0A+ exit = ;;=0A+ avr32*:Linux:*:*)=0A+ echo ${UNAME=5FMACHINE}-unknown-linux-${LIB= C}=0A+ exit ;;=0A+ cris:Linux:*:*)=0A+ echo cris-axis-linux-${LIBC}=0A+ = exit ;;=0A+ crisv32:Linux:*:*)=0A+ echo crisv32-axis-linux-${LIBC}=0A+ e= xit ;;=0A+ frv:Linux:*:*)=0A+ echo frv-unknown-linux-${LIBC}=0A+ exi= t ;;=0A+ ia64:Linux:*:*)=0A+ echo ${UNAME=5FMACHINE}-unknown-linux-${LIB= C}=0A+ exit ;;=0A+ m32r*:Linux:*:*)=0A+ echo ${UNAME=5FMACHINE}-unknown-= linux-${LIBC}=0A+ exit ;;=0A+ m68*:Linux:*:*)=0A+ echo ${UNAME=5FMACHINE= }-unknown-linux-${LIBC}=0A+ exit ;;=0A+ mips:Linux:*:* | mips64:Linux:*:= *)=0A+ eval $set=5Fcc=5Ffor=5Fbuild=0A+ sed 's/^ //' << EOF >$dummy.c=0A+ #= undef CPU=0A+ #undef ${UNAME=5FMACHINE}=0A+ #undef ${UNAME=5FMACHINE}el=0A+= #if defined(=5F=5FMIPSEL=5F=5F) || defined(=5F=5FMIPSEL) || defined(=5FMIP= SEL) || defined(MIPSEL)=0A+ CPU=3D${UNAME=5FMACHINE}el=0A+ #else=0A+ #if de= fined(=5F=5FMIPSEB=5F=5F) || defined(=5F=5FMIPSEB) || defined(=5FMIPSEB) ||= defined(MIPSEB)=0A+ CPU=3D${UNAME=5FMACHINE}=0A+ #else=0A+ CPU=3D=0A+ #end= if=0A+ #endif=0A+EOF=0A+ eval "`$CC=5FFOR=5FBUILD -E $dummy.c 2>/dev/null |= sed -n '=0A+ /^CPU/{=0A+ s: ::g=0A+ p=0A+ }'`"=0A+ test x"${CPU}= " !=3D x && { echo "${CPU}-unknown-linux-${LIBC}"; exit; }=0A+ ;;=0A+ or= 32:Linux:*:*)=0A+ echo or32-unknown-linux-${LIBC}=0A+ exit ;;=0A+ ppc:Li= nux:*:*)=0A+ echo powerpc-unknown-linux-${LIBC}=0A+ exit ;;=0A+ ppc64:Li= nux:*:*)=0A+ echo powerpc64-unknown-linux-${LIBC}=0A+ exit ;;=0A+ alpha:= Linux:*:*)=0A+ case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinf= o` in=0A+ EV5) UNAME=5FMACHINE=3Dalphaev5 ;;=0A+ EV56) UNAME=5FMACHI= NE=3Dalphaev56 ;;=0A+ PCA56) UNAME=5FMACHINE=3Dalphapca56 ;;=0A+ PCA57)= UNAME=5FMACHINE=3Dalphapca56 ;;=0A+ EV6) UNAME=5FMACHINE=3Dalphaev6 ;;= =0A+ EV67) UNAME=5FMACHINE=3Dalphaev67 ;;=0A+ EV68*) UNAME=5FMACHINE= =3Dalphaev68 ;;=0A+ esac=0A+ objdump --private-headers /bin/sh | gre= p -q ld.so.1=0A+ if test "$?" =3D 0 ; then LIBC=3D"gnulibc1" ; fi=0A+ echo = ${UNAME=5FMACHINE}-unknown-linux-${LIBC}=0A+ exit ;;=0A+ padre:Linux:*:*= )=0A+ echo sparc-unknown-linux-${LIBC}=0A+ exit ;;=0A+ parisc:Linux:*:* = | hppa:Linux:*:*)=0A+ # Look for CPU level=0A+ case `grep '^cpu[^a-z]*:' /p= roc/cpuinfo 2>/dev/null | cut -d' ' -f2` in=0A+ PA7*) echo hppa1.1-unknow= n-linux-${LIBC} ;;=0A+ PA8*) echo hppa2.0-unknown-linux-${LIBC} ;;=0A+ = *) echo hppa-unknown-linux-${LIBC} ;;=0A+ esac=0A+ exit ;;=0A+ parisc= 64:Linux:*:* | hppa64:Linux:*:*)=0A+ echo hppa64-unknown-linux-${LIBC}=0A+ = exit ;;=0A+ s390:Linux:*:* | s390x:Linux:*:*)=0A+ echo ${UNAME=5FMACHINE= }-ibm-linux=0A+ exit ;;=0A+ sh64*:Linux:*:*)=0A+ echo ${UNAME=5FMACH= INE}-unknown-linux-${LIBC}=0A+ exit ;;=0A+ sh*:Linux:*:*)=0A+ echo ${UNA= ME=5FMACHINE}-unknown-linux-${LIBC}=0A+ exit ;;=0A+ sparc:Linux:*:* | sp= arc64:Linux:*:*)=0A+ echo ${UNAME=5FMACHINE}-unknown-linux-${LIBC}=0A+ exit= ;;=0A+ vax:Linux:*:*)=0A+ echo ${UNAME=5FMACHINE}-dec-linux-${LIBC}=0A+= exit ;;=0A+ x86=5F64:Linux:*:*)=0A+ echo x86=5F64-unknown-linux-${LIBC}= =0A+ exit ;;=0A+ xtensa*:Linux:*:*)=0A+ echo ${UNAME=5FMACHINE}-unkn= own-linux-${LIBC}=0A+ exit ;;=0A+ i*86:Linux:*:*)=0A+ # The BFD linker k= nows what the default object file format is, so=0A+ # first see if it will = tell us. cd to the root directory to prevent=0A+ # problems with other prog= rams or directories called `ld' in the path.=0A+ # Set LC=5FALL=3DC to ensu= re ld outputs messages in English.=0A+ ld=5Fsupported=5Ftargets=3D`cd /; LC= =5FALL=3DC ld --help 2>&1 \=0A+ | sed -ne '/supported targets:/!d=0A+ = s/[ ][ ]*/ /g=0A+ s/.*supported targets: *//=0A+ s/ .*= //=0A+ p'`=0A+ case "$ld=5Fsupported=5Ftargets" in=0A+ elf3= 2-i386)=0A+ TENTATIVE=3D"${UNAME=5FMACHINE}-pc-linux-${LIBC}"=0A+ ;;=0A+ = esac=0A+ # This should get integrated into the C code below, but now we hac= k=0A+ if [ "$LIBC" !=3D "gnu" ] ; then echo "$TENTATIVE" && exit 0 ; fi=0A+= # Determine whether the default compiler is a.out or elf=0A+ eval $set=5Fc= c=5Ffor=5Fbuild=0A+ sed 's/^ //' << EOF >$dummy.c=0A+ #include = =0A+ #ifdef =5F=5FELF=5F=5F=0A+ # ifdef =5F=5FGLIBC=5F=5F=0A+ # if =5F=5FG= LIBC=5F=5F >=3D 2=0A+ LIBC=3Dgnu=0A+ # else=0A+ LIBC=3Dgnulibc1=0A+ # end= if=0A+ # else=0A+ LIBC=3Dgnulibc1=0A+ # endif=0A+ #else=0A+ #if defined(=5F= =5FINTEL=5FCOMPILER) || defined(=5F=5FPGI) || defined(=5F=5FSUNPRO=5FC) || = defined(=5F=5FSUNPRO=5FCC)=0A+ LIBC=3Dgnu=0A+ #else=0A+ LIBC=3Dgnuaout=0A+ = #endif=0A+ #endif=0A+ #ifdef =5F=5Fdietlibc=5F=5F=0A+ LIBC=3Ddietlibc=0A+ #= endif=0A+EOF=0A+ eval "`$CC=5FFOR=5FBUILD -E $dummy.c 2>/dev/null | sed -n = '=0A+ /^LIBC/{=0A+ s: ::g=0A+ p=0A+ }'`"=0A+ test x"${LIBC}" !=3D= x && {=0A+ echo "${UNAME=5FMACHINE}-pc-linux-${LIBC}"=0A+ exit=0A+ }=0A+= test x"${TENTATIVE}" !=3D x && { echo "${TENTATIVE}"; exit; }=0A+ ;;=0A+ = i*86:DYNIX/ptx:4*:*)=0A+ # ptx 4.0 does uname -s correctly, with DYNIX/pt= x in there.=0A+ # earlier versions are messed up and put the nodename in bo= th=0A+ # sysname and nodename.=0A+ echo i386-sequent-sysv4=0A+ exit ;;=0A+ = i*86:UNIX=5FSV:4.2MP:2.*)=0A+ # Unixware is an offshoot of SVR4, = but it has its own version=0A+ # number series starting with 2...=0A= + # I am not positive that other SVR4 systems won't match this,=0A+ = # I just have to hope. -- rms.=0A+ # Use sysv4.2uw... so that sysv4= * matches it.=0A+ echo ${UNAME=5FMACHINE}-pc-sysv4.2uw${UNAME=5FVERSION}=0A= + exit ;;=0A+ i*86:OS/2:*:*)=0A+ # If we were able to find `uname', then= EMX Unix compatibility=0A+ # is probably installed.=0A+ echo ${UNAME=5FMAC= HINE}-pc-os2-emx=0A+ exit ;;=0A+ i*86:XTS-300:*:STOP)=0A+ echo ${UNAME= =5FMACHINE}-unknown-stop=0A+ exit ;;=0A+ i*86:atheos:*:*)=0A+ echo ${UNA= ME=5FMACHINE}-unknown-atheos=0A+ exit ;;=0A+ i*86:syllable:*:*)=0A+ echo= ${UNAME=5FMACHINE}-pc-syllable=0A+ exit ;;=0A+ i*86:LynxOS:2.*:* | i*86= :LynxOS:3.[01]*:* | i*86:LynxOS:4.[02]*:*)=0A+ echo i386-unknown-lynxos${UN= AME=5FRELEASE}=0A+ exit ;;=0A+ i*86:*DOS:*:*)=0A+ echo ${UNAME=5FMACHINE= }-pc-msdosdjgpp=0A+ exit ;;=0A+ i*86:*:4.*:* | i*86:SYSTEM=5FV:4.*:*)=0A= + UNAME=5FREL=3D`echo ${UNAME=5FRELEASE} | sed 's/\/MP$//'`=0A+ if grep Nov= ell /usr/include/link.h >/dev/null 2>/dev/null; then=0A+ echo ${UNAME=5FMA= CHINE}-univel-sysv${UNAME=5FREL}=0A+ else=0A+ echo ${UNAME=5FMACHINE}-pc-s= ysv${UNAME=5FREL}=0A+ fi=0A+ exit ;;=0A+ i*86:*:5:[678]*)=0A+ # Unix= Ware 7.x, OpenUNIX and OpenServer 6.=0A+ case `/bin/uname -X | grep "^Machi= ne"` in=0A+ *486*) UNAME=5FMACHINE=3Di486 ;;=0A+ *Pentium) = UNAME=5FMACHINE=3Di586 ;;=0A+ *Pent*|*Celeron) UNAME=5FMACHINE=3Di686= ;;=0A+ esac=0A+ echo ${UNAME=5FMACHINE}-unknown-sysv${UNAME=5FRELEASE}${UN= AME=5FSYSTEM}${UNAME=5FVERSION}=0A+ exit ;;=0A+ i*86:*:3.2:*)=0A+ if tes= t -f /usr/options/cb.name; then=0A+ UNAME=5FREL=3D`sed -n 's/.*Version //p= ' /dev/null >/dev/null ; then=0A+ UNAME=5FREL=3D`(/bi= n/uname -X|grep Release|sed -e 's/.*=3D //')`=0A+ (/bin/uname -X|grep i804= 86 >/dev/null) && UNAME=5FMACHINE=3Di486=0A+ (/bin/uname -X|grep '^Machine= .*Pentium' >/dev/null) \=0A+ && UNAME=5FMACHINE=3Di586=0A+ (/bin/uname -= X|grep '^Machine.*Pent *II' >/dev/null) \=0A+ && UNAME=5FMACHINE=3Di686= =0A+ (/bin/uname -X|grep '^Machine.*Pentium Pro' >/dev/null) \=0A+ && UN= AME=5FMACHINE=3Di686=0A+ echo ${UNAME=5FMACHINE}-pc-sco$UNAME=5FREL=0A+ el= se=0A+ echo ${UNAME=5FMACHINE}-pc-sysv32=0A+ fi=0A+ exit ;;=0A+ pc:*:*:= *)=0A+ # Left here for compatibility:=0A+ # uname -m prints for DJGP= P always 'pc', but it prints nothing about=0A+ # the processor, so w= e play safe by assuming i586.=0A+ # Note: whatever this is, it MUST be the = same as what config.sub=0A+ # prints for the "djgpp" host, or else GDB conf= igury will decide that=0A+ # this is a cross-build.=0A+ echo i586-pc-msdosd= jgpp=0A+ exit ;;=0A+ Intel:Mach:3*:*)=0A+ echo i386-pc-mach3=0A+ = exit ;;=0A+ paragon:*:*:*)=0A+ echo i860-intel-osf1=0A+ exit ;;=0A+ i= 860:*:4.*:*) # i860-SVR4=0A+ if grep Stardent /usr/include/sys/uadmin.h >/d= ev/null 2>&1 ; then=0A+ echo i860-stardent-sysv${UNAME=5FRELEASE} # Stard= ent Vistra i860-SVR4=0A+ else # Add other i860-SVR4 vendors below as they a= re discovered.=0A+ echo i860-unknown-sysv${UNAME=5FRELEASE} # Unknown i8= 60-SVR4=0A+ fi=0A+ exit ;;=0A+ mini*:CTIX:SYS*5:*)=0A+ # "miniframe"=0A+= echo m68010-convergent-sysv=0A+ exit ;;=0A+ mc68k:UNIX:SYSTEM5:3.51m)= =0A+ echo m68k-convergent-sysv=0A+ exit ;;=0A+ M680?0:D-NIX:5.3:*)=0A+ e= cho m68k-diab-dnix=0A+ exit ;;=0A+ M68*:*:R3V[5678]*:*)=0A+ test -r /sys= V68 && { echo 'm68k-motorola-sysv'; exit; } ;;=0A+ 3[345]??:*:4.0:3.0 | = 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:*:4.0:3.0 | 4400:*:4.0= :3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0 | SDS2:*:4.0:3.0 | SHG2:*:4.0:3.0 |= S7501*:*:4.0:3.0)=0A+ OS=5FREL=3D''=0A+ test -r /etc/.relid \=0A+ && OS=5F= REL=3D.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid`=0A+ /bi= n/uname -p 2>/dev/null | grep 86 >/dev/null \=0A+ && { echo i486-ncr-sysv= 4.3${OS=5FREL}; exit; }=0A+ /bin/uname -p 2>/dev/null | /bin/grep entium >/= dev/null \=0A+ && { echo i586-ncr-sysv4.3${OS=5FREL}; exit; } ;;=0A+ 3= [34]??:*:4.0:* | 3[34]??,*:*:4.0:*)=0A+ /bin/uname -p 2>/dev/null | = grep 86 >/dev/null \=0A+ && { echo i486-ncr-sysv4; exit; } ;;=0A+ = NCR*:*:4.2:* | MPRAS*:*:4.2:*)=0A+ OS=5FREL=3D'.3'=0A+ test -r /etc/.rel= id \=0A+ && OS=5FREL=3D.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' <= /etc/.relid`=0A+ /bin/uname -p 2>/dev/null | grep 86 >/dev/null \=0A+ = && { echo i486-ncr-sysv4.3${OS=5FREL}; exit; }=0A+ /bin/uname -p 2>/dev/nul= l | /bin/grep entium >/dev/null \=0A+ && { echo i586-ncr-sysv4.3${OS=5F= REL}; exit; }=0A+ /bin/uname -p 2>/dev/null | /bin/grep pteron >/dev/null \= =0A+ && { echo i586-ncr-sysv4.3${OS=5FREL}; exit; } ;;=0A+ m68*:Lynx= OS:2.*:* | m68*:LynxOS:3.0*:*)=0A+ echo m68k-unknown-lynxos${UNAME=5FRELEAS= E}=0A+ exit ;;=0A+ mc68030:UNIX=5FSystem=5FV:4.*:*)=0A+ echo m68k-atari-= sysv4=0A+ exit ;;=0A+ TSUNAMI:LynxOS:2.*:*)=0A+ echo sparc-unknown-lynxo= s${UNAME=5FRELEASE}=0A+ exit ;;=0A+ rs6000:LynxOS:2.*:*)=0A+ echo rs6000= -unknown-lynxos${UNAME=5FRELEASE}=0A+ exit ;;=0A+ PowerPC:LynxOS:2.*:* |= PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.[02]*:*)=0A+ echo powerpc-unkn= own-lynxos${UNAME=5FRELEASE}=0A+ exit ;;=0A+ SM[BE]S:UNIX=5FSV:*:*)=0A+ = echo mips-dde-sysv${UNAME=5FRELEASE}=0A+ exit ;;=0A+ RM*:ReliantUNIX-*:*= :*)=0A+ echo mips-sni-sysv4=0A+ exit ;;=0A+ RM*:SINIX-*:*:*)=0A+ echo mi= ps-sni-sysv4=0A+ exit ;;=0A+ *:SINIX-*:*:*)=0A+ if uname -p 2>/dev/null = >/dev/null ; then=0A+ UNAME=5FMACHINE=3D`(uname -p) 2>/dev/null`=0A+ echo= ${UNAME=5FMACHINE}-sni-sysv4=0A+ else=0A+ echo ns32k-sni-sysv=0A+ fi=0A+ = exit ;;=0A+ PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP e= ffort=0A+ # says = =0A+ echo i586-unisys-sysv4=0A+ exit ;;=0A+ *:UNIX=5FSyste= m=5FV:4*:FTX*)=0A+ # From Gerald Hewes .=0A+ # How ab= out differentiating between stratus architectures? -djm=0A+ echo hppa1.1-st= ratus-sysv4=0A+ exit ;;=0A+ *:*:*:FTX*)=0A+ # From seanf@swdc.stratus.co= m.=0A+ echo i860-stratus-sysv4=0A+ exit ;;=0A+ i*86:VOS:*:*)=0A+ # From = Paul.Green@stratus.com.=0A+ echo ${UNAME=5FMACHINE}-stratus-vos=0A+ exit ;;= =0A+ *:VOS:*:*)=0A+ # From Paul.Green@stratus.com.=0A+ echo hppa1.1-stra= tus-vos=0A+ exit ;;=0A+ mc68*:A/UX:*:*)=0A+ echo m68k-apple-aux${UNAME= =5FRELEASE}=0A+ exit ;;=0A+ news*:NEWS-OS:6*:*)=0A+ echo mips-sony-newso= s6=0A+ exit ;;=0A+ R[34]000:*System=5FV*:*:* | R4000:UNIX=5FSYSV:*:* | R= *000:UNIX=5FSV:*:*)=0A+ if [ -d /usr/nec ]; then=0A+ echo mips-nec-= sysv${UNAME=5FRELEASE}=0A+ else=0A+ echo mips-unknown-sysv${UNAME= =5FRELEASE}=0A+ fi=0A+ exit ;;=0A+ BeBox:BeOS:*:*) # BeOS running= on hardware made by Be, PPC only.=0A+ echo powerpc-be-beos=0A+ exit ;;=0A+= BeMac:BeOS:*:*) # BeOS running on Mac or Mac clone, PPC only.=0A+ echo = powerpc-apple-beos=0A+ exit ;;=0A+ BePC:BeOS:*:*) # BeOS running on Inte= l PC compatible.=0A+ echo i586-pc-beos=0A+ exit ;;=0A+ BePC:Haiku:*:*) #= Haiku running on Intel PC compatible.=0A+ echo i586-pc-haiku=0A+ exit ;;= =0A+ SX-4:SUPER-UX:*:*)=0A+ echo sx4-nec-superux${UNAME=5FRELEASE}=0A+ e= xit ;;=0A+ SX-5:SUPER-UX:*:*)=0A+ echo sx5-nec-superux${UNAME=5FRELEASE}= =0A+ exit ;;=0A+ SX-6:SUPER-UX:*:*)=0A+ echo sx6-nec-superux${UNAME=5FRE= LEASE}=0A+ exit ;;=0A+ SX-7:SUPER-UX:*:*)=0A+ echo sx7-nec-superux${UNAM= E=5FRELEASE}=0A+ exit ;;=0A+ SX-8:SUPER-UX:*:*)=0A+ echo sx8-nec-superux= ${UNAME=5FRELEASE}=0A+ exit ;;=0A+ SX-8R:SUPER-UX:*:*)=0A+ echo sx8r-nec= -superux${UNAME=5FRELEASE}=0A+ exit ;;=0A+ Power*:Rhapsody:*:*)=0A+ echo= powerpc-apple-rhapsody${UNAME=5FRELEASE}=0A+ exit ;;=0A+ *:Rhapsody:*:*= )=0A+ echo ${UNAME=5FMACHINE}-apple-rhapsody${UNAME=5FRELEASE}=0A+ exit ;;= =0A+ *:Darwin:*:*)=0A+ UNAME=5FPROCESSOR=3D`uname -p` || UNAME=5FPROCESS= OR=3Dunknown=0A+ case $UNAME=5FPROCESSOR in=0A+ unknown) UNAME=5FPROCES= SOR=3Dpowerpc ;;=0A+ esac=0A+ echo ${UNAME=5FPROCESSOR}-apple-darwin${UNAME= =5FRELEASE}=0A+ exit ;;=0A+ *:procnto*:*:* | *:QNX:[0123456789]*:*)=0A+ = UNAME=5FPROCESSOR=3D`uname -p`=0A+ if test "$UNAME=5FPROCESSOR" =3D "x86"; = then=0A+ UNAME=5FPROCESSOR=3Di386=0A+ UNAME=5FMACHINE=3Dpc=0A+ fi=0A+ ech= o ${UNAME=5FPROCESSOR}-${UNAME=5FMACHINE}-nto-qnx${UNAME=5FRELEASE}=0A+ exi= t ;;=0A+ *:QNX:*:4*)=0A+ echo i386-pc-qnx=0A+ exit ;;=0A+ NSE-?:NONST= OP=5FKERNEL:*:*)=0A+ echo nse-tandem-nsk${UNAME=5FRELEASE}=0A+ exit ;;=0A+ = NSR-?:NONSTOP=5FKERNEL:*:*)=0A+ echo nsr-tandem-nsk${UNAME=5FRELEASE}=0A= + exit ;;=0A+ *:NonStop-UX:*:*)=0A+ echo mips-compaq-nonstopux=0A+ exit = ;;=0A+ BS2000:POSIX*:*:*)=0A+ echo bs2000-siemens-sysv=0A+ exit ;;=0A+ = DS/*:UNIX=5FSystem=5FV:*:*)=0A+ echo ${UNAME=5FMACHINE}-${UNAME=5FSYSTEM}= -${UNAME=5FRELEASE}=0A+ exit ;;=0A+ *:Plan9:*:*)=0A+ # "uname -m" is not= consistent, so use $cputype instead. 386=0A+ # is converted to i386 for co= nsistency with other x86=0A+ # operating systems.=0A+ if test "$cputype" = =3D "386"; then=0A+ UNAME=5FMACHINE=3Di386=0A+ else=0A+ UNAME=5FMAC= HINE=3D"$cputype"=0A+ fi=0A+ echo ${UNAME=5FMACHINE}-unknown-plan9=0A+ exit= ;;=0A+ *:TOPS-10:*:*)=0A+ echo pdp10-unknown-tops10=0A+ exit ;;=0A+ = *:TENEX:*:*)=0A+ echo pdp10-unknown-tenex=0A+ exit ;;=0A+ KS10:TOPS-20:*= :* | KL10:TOPS-20:*:* | TYPE4:TOPS-20:*:*)=0A+ echo pdp10-dec-tops20=0A+ ex= it ;;=0A+ XKL-1:TOPS-20:*:* | TYPE5:TOPS-20:*:*)=0A+ echo pdp10-xkl-tops= 20=0A+ exit ;;=0A+ *:TOPS-20:*:*)=0A+ echo pdp10-unknown-tops20=0A+ exit= ;;=0A+ *:ITS:*:*)=0A+ echo pdp10-unknown-its=0A+ exit ;;=0A+ SEI:*:*= :SEIUX)=0A+ echo mips-sei-seiux${UNAME=5FRELEASE}=0A+ exit ;;=0A+ = *:DragonFly:*:*)=0A+ echo ${UNAME=5FMACHINE}-unknown-dragonfly`echo ${UNAM= E=5FRELEASE}|sed -e 's/[-(].*//'`=0A+ exit ;;=0A+ *:*VMS:*:*)=0A+ UN= AME=5FMACHINE=3D`(uname -p) 2>/dev/null`=0A+ case "${UNAME=5FMACHINE}" in= =0A+ A*) echo alpha-dec-vms ; exit ;;=0A+ I*) echo ia64-dec-vms ; e= xit ;;=0A+ V*) echo vax-dec-vms ; exit ;;=0A+ esac ;;=0A+ *:XENIX:*:= SysV)=0A+ echo i386-pc-xenix=0A+ exit ;;=0A+ i*86:skyos:*:*)=0A+ echo ${= UNAME=5FMACHINE}-pc-skyos`echo ${UNAME=5FRELEASE}` | sed -e 's/ .*$//'=0A+ = exit ;;=0A+ i*86:rdos:*:*)=0A+ echo ${UNAME=5FMACHINE}-pc-rdos=0A+ exit = ;;=0A+ i*86:AROS:*:*)=0A+ echo ${UNAME=5FMACHINE}-pc-aros=0A+ exit ;;=0A= +esac=0A+=0A+#echo '(No uname command or uname output not recognized.)' 1>&= 2=0A+#echo "${UNAME=5FMACHINE}:${UNAME=5FSYSTEM}:${UNAME=5FRELEASE}:${UNAME= =5FVERSION}" 1>&2=0A+=0A+eval $set=5Fcc=5Ffor=5Fbuild=0A+cat >$dummy.c <=0A+# include =0A+#endif=0A+main ()=0A+{=0A+#if defined (sony)=0A+#if defined (MIPS= EB)=0A+ /* BFD wants "bsd" instead of "newsos". Perhaps BFD should be cha= nged,=0A+ I don't know.... */=0A+ printf ("mips-sony-bsd\n"); exit (0= );=0A+#else=0A+#include =0A+ printf ("m68k-sony-newsos%s\n",= =0A+#ifdef NEWSOS4=0A+ "4"=0A+#else=0A+ ""=0A+#endif=0A+ = ); exit (0);=0A+#endif=0A+#endif=0A+=0A+#if defined (=5F=5Farm) && defined= (=5F=5Facorn) && defined (=5F=5Funix)=0A+ printf ("arm-acorn-riscix\n"); = exit (0);=0A+#endif=0A+=0A+#if defined (hp300) && !defined (hpux)=0A+ prin= tf ("m68k-hp-bsd\n"); exit (0);=0A+#endif=0A+=0A+#if defined (NeXT)=0A+#if = !defined (=5F=5FARCHITECTURE=5F=5F)=0A+#define =5F=5FARCHITECTURE=5F=5F "m6= 8k"=0A+#endif=0A+ int version;=0A+ version=3D`(hostinfo | sed -n 's/.*NeX= T Mach \([0-9]*\).*/\1/p') 2>/dev/null`;=0A+ if (version < 4)=0A+ print= f ("%s-next-nextstep%d\n", =5F=5FARCHITECTURE=5F=5F, version);=0A+ else=0A= + printf ("%s-next-openstep%d\n", =5F=5FARCHITECTURE=5F=5F, version);=0A= + exit (0);=0A+#endif=0A+=0A+#if defined (MULTIMAX) || defined (n16)=0A+#i= f defined (UMAXV)=0A+ printf ("ns32k-encore-sysv\n"); exit (0);=0A+#else= =0A+#if defined (CMU)=0A+ printf ("ns32k-encore-mach\n"); exit (0);=0A+#el= se=0A+ printf ("ns32k-encore-bsd\n"); exit (0);=0A+#endif=0A+#endif=0A+#en= dif=0A+=0A+#if defined (=5F=5F386BSD=5F=5F)=0A+ printf ("i386-pc-bsd\n"); = exit (0);=0A+#endif=0A+=0A+#if defined (sequent)=0A+#if defined (i386)=0A+ = printf ("i386-sequent-dynix\n"); exit (0);=0A+#endif=0A+#if defined (ns320= 00)=0A+ printf ("ns32k-sequent-dynix\n"); exit (0);=0A+#endif=0A+#endif=0A= +=0A+#if defined (=5FSEQUENT=5F)=0A+ struct utsname un;=0A+=0A+ uname= (&un);=0A+=0A+ if (strncmp(un.version, "V2", 2) =3D=3D 0) {=0A+ printf (= "i386-sequent-ptx2\n"); exit (0);=0A+ }=0A+ if (strncmp(un.version, "= V1", 2) =3D=3D 0) { /* XXX is V1 correct? */=0A+ printf ("i386-sequent-ptx1= \n"); exit (0);=0A+ }=0A+ printf ("i386-sequent-ptx\n"); exit (0);=0A= +=0A+#endif=0A+=0A+#if defined (vax)=0A+# if !defined (ultrix)=0A+# includ= e =0A+# if defined (BSD)=0A+# if BSD =3D=3D 43=0A+ pri= ntf ("vax-dec-bsd4.3\n"); exit (0);=0A+# else=0A+# if BSD =3D=3D 19900= 6=0A+ printf ("vax-dec-bsd4.3reno\n"); exit (0);=0A+# else=0A+ = printf ("vax-dec-bsd\n"); exit (0);=0A+# endif=0A+# endif=0A+# else= =0A+ printf ("vax-dec-bsd\n"); exit (0);=0A+# endif=0A+# else=0A+ pr= intf ("vax-dec-ultrix\n"); exit (0);=0A+# endif=0A+#endif=0A+=0A+#if define= d (alliant) && defined (i860)=0A+ printf ("i860-alliant-bsd\n"); exit (0);= =0A+#endif=0A+=0A+ exit (1);=0A+}=0A+EOF=0A+=0A+$CC=5FFOR=5FBUILD -o $dumm= y $dummy.c 2>/dev/null && SYSTEM=5FNAME=3D`$dummy` &&=0A+ { echo "$SYSTEM= =5FNAME"; exit; }=0A+=0A+# Apollos put the system type in the environment.= =0A+=0A+test -d /usr/apollo && { echo ${ISP}-apollo-${SYSTYPE}; exit; }=0A+= =0A+# Convex versions that predate uname can use getsysinfo(1)=0A+=0A+if [ = -x /usr/convex/getsysinfo ]=0A+then=0A+ case `getsysinfo -f cpu=5Ftype` = in=0A+ c1*)=0A+ echo c1-convex-bsd=0A+ exit ;;=0A+ c2*)=0A+ if getsys= info -f scalar=5Facc=0A+ then echo c32-convex-bsd=0A+ else echo c2-convex-b= sd=0A+ fi=0A+ exit ;;=0A+ c34*)=0A+ echo c34-convex-bsd=0A+ exit ;;=0A+ = c38*)=0A+ echo c38-convex-bsd=0A+ exit ;;=0A+ c4*)=0A+ echo c4-convex= -bsd=0A+ exit ;;=0A+ esac=0A+fi=0A+=0A+cat >&2 < in o= rder to provide the needed=0A+information to handle your system.=0A+=0A+con= fig.guess timestamp =3D $timestamp=0A+=0A+uname -m =3D `(uname -m) 2>/dev/n= ull || echo unknown`=0A+uname -r =3D `(uname -r) 2>/dev/null || echo unknow= n`=0A+uname -s =3D `(uname -s) 2>/dev/null || echo unknown`=0A+uname -v =3D= `(uname -v) 2>/dev/null || echo unknown`=0A+=0A+/usr/bin/uname -p =3D `(/u= sr/bin/uname -p) 2>/dev/null`=0A+/bin/uname -X =3D `(/bin/uname -X) 2>/= dev/null`=0A+=0A+hostinfo =3D `(hostinfo) 2>/dev/null`=0A+/bi= n/universe =3D `(/bin/universe) 2>/dev/null`=0A+/usr/bin/arch -k = =3D `(/usr/bin/arch -k) 2>/dev/null`=0A+/bin/arch =3D `(/= bin/arch) 2>/dev/null`=0A+/usr/bin/oslevel =3D `(/usr/bin/oslevel) 2>= /dev/null`=0A+/usr/convex/getsysinfo =3D `(/usr/convex/getsysinfo) 2>/dev/n= ull`=0A+=0A+UNAME=5FMACHINE =3D ${UNAME=5FMACHINE}=0A+UNAME=5FRELEASE =3D $= {UNAME=5FRELEASE}=0A+UNAME=5FSYSTEM =3D ${UNAME=5FSYSTEM}=0A+UNAME=5FVERSI= ON =3D ${UNAME=5FVERSION}=0A+EOF=0A+=0A+exit 1=0A+=0A+# Local variables:=0A= +# eval: (add-hook 'write-file-hooks 'time-stamp)=0A+# time-stamp-start: "t= imestamp=3D'"=0A+# time-stamp-format: "%:y-%02m-%02d"=0A+# time-stamp-end: = "'"=0A+# End:=0Adiff --git a/utils/ffsb-6.0-rc2/config.h.in b/utils/ffsb-6.= 0-rc2/config.h.in=0Anew file mode 100644=0Aindex 0000000..8e1aa84=0A--- /de= v/null=0A+++ b/utils/ffsb-6.0-rc2/config.h.in=0A@@ -0,0 +1,130 @@=0A+/* con= fig.h.in. Generated from configure.in by autoheader. */=0A+=0A+/* Define = to 1 if you have the header file. */=0A+#undef HAVE=5FFCNTL=5FH= =0A+=0A+/* Define to 1 if you have the `fseeko64' function. */=0A+#undef HA= VE=5FFSEEKO64=0A+=0A+/* Define to 1 if you have the `gettimeofday' function= . */=0A+#undef HAVE=5FGETTIMEOFDAY=0A+=0A+/* Define to 1 if you have the header file. */=0A+#undef HAVE=5FINTTYPES=5FH=0A+=0A+/* Define t= o 1 if you have the `m' library (-lm). */=0A+#undef HAVE=5FLIBM=0A+=0A+/* D= efine to 1 if you have the `pthread' library (-lpthread). */=0A+#undef HAVE= =5FLIBPTHREAD=0A+=0A+/* Define to 1 if you have the header file.= */=0A+#undef HAVE=5FLIMITS=5FH=0A+=0A+/* Define to 1 if you have the `lran= d48=5Fr' function. */=0A+#undef HAVE=5FLRAND48=5FR=0A+=0A+/* Define to 1 if= you have the header file. */=0A+#undef HAVE=5FMEMORY=5FH=0A+=0A= +/* Define to 1 if you have the `mkdir' function. */=0A+#undef HAVE=5FMKDIR= =0A+=0A+/* Define to 1 if you have the `open64' function. */=0A+#undef HAVE= =5FOPEN64=0A+=0A+/* Define to 1 if you have the header file. */= =0A+#undef HAVE=5FPTHREAD=5FH=0A+=0A+/* Define to 1 if you have the `srand4= 8=5Fr' function. */=0A+#undef HAVE=5FSRAND48=5FR=0A+=0A+/* Define to 1 if y= ou have the `stat64' function. */=0A+#undef HAVE=5FSTAT64=0A+=0A+/* Define = to 1 if you have the header file. */=0A+#undef HAVE=5FSTDINT=5FH= =0A+=0A+/* Define to 1 if you have the header file. */=0A+#undef= HAVE=5FSTDLIB=5FH=0A+=0A+/* Define to 1 if you have the `strerror' functio= n. */=0A+#undef HAVE=5FSTRERROR=0A+=0A+/* Define to 1 if you have the header file. */=0A+#undef HAVE=5FSTRINGS=5FH=0A+=0A+/* Define to 1 i= f you have the header file. */=0A+#undef HAVE=5FSTRING=5FH=0A+= =0A+/* Define to 1 if you have the `system' function. */=0A+#undef HAVE=5FS= YSTEM=0A+=0A+/* Define to 1 if you have the header file. */= =0A+#undef HAVE=5FSYS=5FLIMITS=5FH=0A+=0A+/* Define to 1 if you have the header file. */=0A+#undef HAVE=5FSYS=5FSTAT=5FH=0A+=0A+/* Define= to 1 if you have the header file. */=0A+#undef HAVE=5FSYS=5FT= IME=5FH=0A+=0A+/* Define to 1 if you have the header file. */= =0A+#undef HAVE=5FSYS=5FTYPES=5FH=0A+=0A+/* Define to 1 if you have the header file. */=0A+#undef HAVE=5FSYS=5FVFS=5FH=0A+=0A+/* Define to= 1 if you have that is POSIX.1 compatible. */=0A+#undef HAVE= =5FSYS=5FWAIT=5FH=0A+=0A+/* Define to 1 if you have the header f= ile. */=0A+#undef HAVE=5FUNISTD=5FH=0A+=0A+/* Name of package */=0A+#undef = PACKAGE=0A+=0A+/* Define to the address where bug reports for this package = should be sent. */=0A+#undef PACKAGE=5FBUGREPORT=0A+=0A+/* Define to the fu= ll name of this package. */=0A+#undef PACKAGE=5FNAME=0A+=0A+/* Define to th= e full name and version of this package. */=0A+#undef PACKAGE=5FSTRING=0A+= =0A+/* Define to the one symbol short name of this package. */=0A+#undef PA= CKAGE=5FTARNAME=0A+=0A+/* Define to the version of this package. */=0A+#und= ef PACKAGE=5FVERSION=0A+=0A+/* Define to 1 if the C compiler supports funct= ion prototypes. */=0A+#undef PROTOTYPES=0A+=0A+/* Define to 1 if the `setvb= uf' function takes the buffering type as its=0A+ second argument and the = buffer pointer as the third, as on System V before=0A+ release 3. */=0A+#= undef SETVBUF=5FREVERSED=0A+=0A+/* Define to 1 if you have the ANSI C heade= r files. */=0A+#undef STDC=5FHEADERS=0A+=0A+/* Define to 1 if you can safel= y include both and . */=0A+#undef TIME=5FWITH=5FSYS=5F= TIME=0A+=0A+/* Version number of package */=0A+#undef VERSION=0A+=0A+/* Def= ine to 1 if on AIX 3.=0A+ System headers sometimes define this.=0A+ We = just want to avoid a redefinition error message. */=0A+#ifndef =5FALL=5FSO= URCE=0A+# undef =5FALL=5FSOURCE=0A+#endif=0A+=0A+/* Define like PROTOTYPES;= this can be used by system headers. */=0A+#undef =5F=5FPROTOTYPES=0A+=0A+/= * Define to empty if `const' does not conform to ANSI C. */=0A+#undef const= =0Adiff --git a/utils/ffsb-6.0-rc2/config.sub b/utils/ffsb-6.0-rc2/config.s= ub=0Anew file mode 100755=0Aindex 0000000..3243784=0A--- /dev/null=0A+++ b/= utils/ffsb-6.0-rc2/config.sub=0A@@ -0,0 +1,1717 @@=0A+#! /bin/sh=0A+# Confi= guration validation subroutine script.=0A+# Copyright (C) 1992, 1993, 199= 4, 1995, 1996, 1997, 1998, 1999,=0A+# 2000, 2001, 2002, 2003, 2004, 2005,= 2006, 2007, 2008, 2009=0A+# Free Software Foundation, Inc.=0A+=0A+timest= amp=3D'2009-08-19'=0A+=0A+# This file is (in principle) common to ALL GNU s= oftware.=0A+# The presence of a machine in this file suggests that SOME GNU= software=0A+# can handle that machine. It does not imply ALL GNU software= can.=0A+#=0A+# This file is free software; you can redistribute it and/or = modify=0A+# it under the terms of the GNU General Public License as publish= ed by=0A+# the Free Software Foundation; either version 2 of the License, o= r=0A+# (at your option) any later version.=0A+#=0A+# This program is distri= buted in the hope that it will be useful,=0A+# but WITHOUT ANY WARRANTY; wi= thout even the implied warranty of=0A+# MERCHANTABILITY or FITNESS FOR A PA= RTICULAR PURPOSE. See the=0A+# GNU General Public License for more details= .=0A+#=0A+# You should have received a copy of the GNU General Public Licen= se=0A+# along with this program; if not, write to the Free Software=0A+# Fo= undation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA=0A+# 02110-130= 1, USA.=0A+#=0A+# As a special exception to the GNU General Public License,= if you=0A+# distribute this file as part of a program that contains a=0A+#= configuration script generated by Autoconf, you may include it under=0A+# = the same distribution terms that you use for the rest of that program.=0A+= =0A+=0A+# Please send patches to . Submit a contex= t=0A+# diff and a properly formatted GNU ChangeLog entry.=0A+#=0A+# Configu= ration subroutine to validate and canonicalize a configuration type.=0A+# S= upply the specified configuration type as an argument.=0A+# If it is invali= d, we print an error message on stderr and exit with code 1.=0A+# Otherwise= , we print the canonical config type on stdout and succeed.=0A+=0A+# You ca= n get the latest version of this script from:=0A+# http://git.savannah.gnu.= org/gitweb/?p=3Dconfig.git;a=3Dblob=5Fplain;f=3Dconfig.sub;hb=3DHEAD=0A+=0A= +# This file is supposed to be the same for all GNU packages=0A+# and recog= nize all the CPU types, system types and aliases=0A+# that are meaningful w= ith *any* GNU software.=0A+# Each package is responsible for reporting whic= h valid configurations=0A+# it does not support. The user should be able t= o distinguish=0A+# a failure to support a valid configuration from a meanin= gless=0A+# configuration.=0A+=0A+# The goal of this file is to map all the = various variations of a given=0A+# machine specification into a single spec= ification in the form:=0A+# CPU=5FTYPE-MANUFACTURER-OPERATING=5FSYSTEM=0A+#= or in some cases, the newer four-part form:=0A+# CPU=5FTYPE-MANUFACTURER-K= ERNEL-OPERATING=5FSYSTEM=0A+# It is wrong to echo any other type of specifi= cation.=0A+=0A+me=3D`echo "$0" | sed -e 's,.*/,,'`=0A+=0A+usage=3D"\=0A+Usa= ge: $0 [OPTION] CPU-MFR-OPSYS=0A+ $0 [OPTION] ALIAS=0A+=0A+Canonicali= ze a configuration name.=0A+=0A+Operation modes:=0A+ -h, --help pr= int this help, then exit=0A+ -t, --time-stamp print date of last modific= ation, then exit=0A+ -v, --version print version number, then exit=0A= +=0A+Report bugs and patches to ."=0A+=0A+version= =3D"\=0A+GNU config.sub ($timestamp)=0A+=0A+Copyright (C) 1992, 1993, 1994,= 1995, 1996, 1997, 1998, 1999, 2000, 2001,=0A+2002, 2003, 2004, 2005, 2006,= 2007, 2008 Free Software Foundation, Inc.=0A+=0A+This is free software; se= e the source for copying conditions. There is NO=0A+warranty; not even for= MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."=0A+=0A+help=3D"=0A+T= ry \`$me --help' for more information."=0A+=0A+# Parse command line=0A+whil= e test $# -gt 0 ; do=0A+ case $1 in=0A+ --time-stamp | --time* | -t )= =0A+ echo "$timestamp" ; exit ;;=0A+ --version | -v )=0A+ ec= ho "$version" ; exit ;;=0A+ --help | --h* | -h )=0A+ echo "$usage"= ; exit ;;=0A+ -- ) # Stop option processing=0A+ shift; break ;= ;=0A+ - ) # Use stdin as input.=0A+ break ;;=0A+ -* )=0A+ = echo "$me: invalid option $1$help"=0A+ exit 1 ;;=0A+=0A+ *local*)= =0A+ # First pass through any local machine types.=0A+ echo $1= =0A+ exit ;;=0A+=0A+ * )=0A+ break ;;=0A+ esac=0A+done=0A+= =0A+case $# in=0A+ 0) echo "$me: missing argument$help" >&2=0A+ exit 1;;= =0A+ 1) ;;=0A+ *) echo "$me: too many arguments$help" >&2=0A+ exit 1;;= =0A+esac=0A+=0A+# Separate what the user gave into CPU-COMPANY and OS or KE= RNEL-OS (if any).=0A+# Here we must recognize all the valid KERNEL-OS combi= nations.=0A+maybe=5Fos=3D`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'`= =0A+case $maybe=5Fos in=0A+ nto-qnx* | linux-gnu* | linux-dietlibc | linux= -newlib* | linux-uclibc* | \=0A+ uclinux-uclibc* | uclinux-gnu* | kfreebsd= *-gnu* | knetbsd*-gnu* | netbsd*-gnu* | \=0A+ kopensolaris*-gnu* | \=0A+ = storm-chaos* | os2-emx* | rtmk-nova*)=0A+ os=3D-$maybe=5Fos=0A+ basic= =5Fmachine=3D`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`=0A+ ;;=0A+= *)=0A+ basic=5Fmachine=3D`echo $1 | sed 's/-[^-]*$//'`=0A+ if [ $ba= sic=5Fmachine !=3D $1 ]=0A+ then os=3D`echo $1 | sed 's/.*-/-/'`=0A+ = else os=3D; fi=0A+ ;;=0A+esac=0A+=0A+### Let's recognize common machines= as not being operating systems so=0A+### that things like config.sub decst= ation-3100 work. We also=0A+### recognize some manufacturers as not being = operating systems, so we=0A+### can provide default operating systems below= .=0A+case $os in=0A+ -sun*os*)=0A+ # Prevent following clause from handlin= g this invalid input.=0A+ ;;=0A+ -dec* | -mips* | -sequent* | -encore* | -= pc532* | -sgi* | -sony* | \=0A+ -att* | -7300* | -3300* | -delta* | -motoro= la* | -sun[234]* | \=0A+ -unicom* | -ibm* | -next | -hp | -isi* | -apollo |= -altos* | \=0A+ -convergent* | -ncr* | -news | -32* | -3600* | -3100* | -h= itachi* |\=0A+ -c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra = | -tti* | \=0A+ -harris | -dolphin | -highlevel | -gould | -cbm | -ns | -ma= sscomp | \=0A+ -apple | -axis | -knuth | -cray | -microblaze)=0A+ os=3D=0A= + basic=5Fmachine=3D$1=0A+ ;;=0A+ -bluegene*)=0A+ os=3D-cn= k=0A+ ;;=0A+ -sim | -cisco | -oki | -wec | -winbond)=0A+ os=3D=0A+ basic= =5Fmachine=3D$1=0A+ ;;=0A+ -scout)=0A+ ;;=0A+ -wrs)=0A+ os=3D-vxworks=0A= + basic=5Fmachine=3D$1=0A+ ;;=0A+ -chorusos*)=0A+ os=3D-chorusos=0A+ ba= sic=5Fmachine=3D$1=0A+ ;;=0A+ -chorusrdb)=0A+ os=3D-chorusrdb=0A+ basi= c=5Fmachine=3D$1=0A+ ;;=0A+ -hiux*)=0A+ os=3D-hiuxwe2=0A+ ;;=0A+ -sco6)= =0A+ os=3D-sco5v6=0A+ basic=5Fmachine=3D`echo $1 | sed -e 's/86-.*/86-pc/= '`=0A+ ;;=0A+ -sco5)=0A+ os=3D-sco3.2v5=0A+ basic=5Fmachine=3D`echo $1 |= sed -e 's/86-.*/86-pc/'`=0A+ ;;=0A+ -sco4)=0A+ os=3D-sco3.2v4=0A+ basic= =5Fmachine=3D`echo $1 | sed -e 's/86-.*/86-pc/'`=0A+ ;;=0A+ -sco3.2.[4-9]*= )=0A+ os=3D`echo $os | sed -e 's/sco3.2./sco3.2v/'`=0A+ basic=5Fmachine= =3D`echo $1 | sed -e 's/86-.*/86-pc/'`=0A+ ;;=0A+ -sco3.2v[4-9]*)=0A+ # D= on't forget version if it is 3.2v4 or newer.=0A+ basic=5Fmachine=3D`echo $= 1 | sed -e 's/86-.*/86-pc/'`=0A+ ;;=0A+ -sco5v6*)=0A+ # Don't forget vers= ion if it is 3.2v4 or newer.=0A+ basic=5Fmachine=3D`echo $1 | sed -e 's/86= -.*/86-pc/'`=0A+ ;;=0A+ -sco*)=0A+ os=3D-sco3.2v2=0A+ basic=5Fmachine=3D= `echo $1 | sed -e 's/86-.*/86-pc/'`=0A+ ;;=0A+ -udk*)=0A+ basic=5Fmachine= =3D`echo $1 | sed -e 's/86-.*/86-pc/'`=0A+ ;;=0A+ -isc)=0A+ os=3D-isc2.2= =0A+ basic=5Fmachine=3D`echo $1 | sed -e 's/86-.*/86-pc/'`=0A+ ;;=0A+ -cl= ix*)=0A+ basic=5Fmachine=3Dclipper-intergraph=0A+ ;;=0A+ -isc*)=0A+ basi= c=5Fmachine=3D`echo $1 | sed -e 's/86-.*/86-pc/'`=0A+ ;;=0A+ -lynx*)=0A+ = os=3D-lynxos=0A+ ;;=0A+ -ptx*)=0A+ basic=5Fmachine=3D`echo $1 | sed -e 's= /86-.*/86-sequent/'`=0A+ ;;=0A+ -windowsnt*)=0A+ os=3D`echo $os | sed -e = 's/windowsnt/winnt/'`=0A+ ;;=0A+ -psos*)=0A+ os=3D-psos=0A+ ;;=0A+ -mint= | -mint[0-9]*)=0A+ basic=5Fmachine=3Dm68k-atari=0A+ os=3D-mint=0A+ ;;= =0A+esac=0A+=0A+# Decode aliases for certain CPU-COMPANY combinations.=0A+c= ase $basic=5Fmachine in=0A+ # Recognize the basic CPU types without company= name.=0A+ # Some are omitted here because they have special meanings below= .=0A+ 1750a | 580 \=0A+ | a29k \=0A+ | alpha | alphaev[4-8] | alphaev56 | a= lphaev6[78] | alphapca5[67] \=0A+ | alpha64 | alpha64ev[4-8] | alpha64ev56 = | alpha64ev6[78] | alpha64pca5[67] \=0A+ | am33=5F2.0 \=0A+ | arc | arm | a= rm[bl]e | arme[lb] | armv[2345] | armv[345][lb] | avr | avr32 \=0A+ | bfin = \=0A+ | c4x | clipper \=0A+ | d10v | d30v | dlx | dsp16xx | dvp \=0A+ | fid= o | fr30 | frv \=0A+ | h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.= 0[nw] | hppa64 \=0A+ | i370 | i860 | i960 | ia64 \=0A+ | ip2k | iq2000 \=0A= + | lm32 \=0A+ | m32c | m32r | m32rle | m68000 | m68k | m88k \=0A+ | maxq |= mb | microblaze | mcore | mep | metag \=0A+ | mips | mipsbe | mipseb | mip= sel | mipsle \=0A+ | mips16 \=0A+ | mips64 | mips64el \=0A+ | mips64octeon = | mips64octeonel \=0A+ | mips64orion | mips64orionel \=0A+ | mips64r5900 | = mips64r5900el \=0A+ | mips64vr | mips64vrel \=0A+ | mips64vr4100 | mips64vr= 4100el \=0A+ | mips64vr4300 | mips64vr4300el \=0A+ | mips64vr5000 | mips64v= r5000el \=0A+ | mips64vr5900 | mips64vr5900el \=0A+ | mipsisa32 | mipsisa32= el \=0A+ | mipsisa32r2 | mipsisa32r2el \=0A+ | mipsisa64 | mipsisa64el \=0A= + | mipsisa64r2 | mipsisa64r2el \=0A+ | mipsisa64sb1 | mipsisa64sb1el \=0A+= | mipsisa64sr71k | mipsisa64sr71kel \=0A+ | mipstx39 | mipstx39el \=0A+ | = mn10200 | mn10300 \=0A+ | moxie \=0A+ | mt \=0A+ | msp430 \=0A+ | nios | ni= os2 \=0A+ | ns16k | ns32k \=0A+ | or32 \=0A+ | pdp10 | pdp11 | pj | pjl \= =0A+ | powerpc | powerpc64 | powerpc64le | powerpcle | ppcbe \=0A+ | pyrami= d \=0A+ | score \=0A+ | sh | sh[1234] | sh[24]a | sh[24]aeb | sh[23]e | sh[= 34]eb | sheb | shbe | shle | sh[1234]le | sh3ele \=0A+ | sh64 | sh64le \=0A= + | sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet | sparclite= \=0A+ | sparcv8 | sparcv9 | sparcv9b | sparcv9v \=0A+ | spu | strongarm \= =0A+ | tahoe | thumb | tic4x | tic80 | tron \=0A+ | v850 | v850e \=0A+ | we= 32k \=0A+ | x86 | xc16x | xscale | xscalee[bl] | xstormy16 | xtensa \=0A+ |= z8k | z80)=0A+ basic=5Fmachine=3D$basic=5Fmachine-unknown=0A+ ;;=0A+ m68= 11 | m68hc11 | m6812 | m68hc12)=0A+ # Motorola 68HC11/12.=0A+ basic=5Fmac= hine=3D$basic=5Fmachine-unknown=0A+ os=3D-none=0A+ ;;=0A+ m88110 | m680[1= 2346]0 | m683?2 | m68360 | m5200 | v70 | w65 | z8k)=0A+ ;;=0A+ ms1)=0A+ b= asic=5Fmachine=3Dmt-unknown=0A+ ;;=0A+=0A+ # We use `pc' rather than `unkn= own'=0A+ # because (1) that's what they normally are, and=0A+ # (2) the wor= d "unknown" tends to confuse beginning users.=0A+ i*86 | x86=5F64)=0A+ ba= sic=5Fmachine=3D$basic=5Fmachine-pc=0A+ ;;=0A+ # Object if more than one = company name word.=0A+ *-*-*)=0A+ echo Invalid configuration \`$1\': machi= ne \`$basic=5Fmachine\' not recognized 1>&2=0A+ exit 1=0A+ ;;=0A+ # Recog= nize the basic CPU types with company name.=0A+ 580-* \=0A+ | a29k-* \=0A+ = | alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \=0A+ | alpha64-*= | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \=0A+ | alphapca5[67= ]-* | alpha64pca5[67]-* | arc-* \=0A+ | arm-* | armbe-* | armle-* | armeb-= * | armv*-* \=0A+ | avr-* | avr32-* \=0A+ | bfin-* | bs2000-* \=0A+ | c[123= ]* | c30-* | [cjt]90-* | c4x-* | c54x-* | c55x-* | c6x-* \=0A+ | clipper-* = | craynv-* | cydra-* \=0A+ | d10v-* | d30v-* | dlx-* \=0A+ | elxsi-* \=0A+ = | f30[01]-* | f700-* | fido-* | fr30-* | frv-* | fx80-* \=0A+ | h8300-* | h= 8500-* \=0A+ | hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-*= \=0A+ | i*86-* | i860-* | i960-* | ia64-* \=0A+ | ip2k-* | iq2000-* \=0A+ = | lm32-* \=0A+ | m32c-* | m32r-* | m32rle-* \=0A+ | m68000-* | m680[012346]= 0-* | m68360-* | m683?2-* | m68k-* \=0A+ | m88110-* | m88k-* | maxq-* | mco= re-* | metag-* | microblaze-* \=0A+ | mips-* | mipsbe-* | mipseb-* | mipsel= -* | mipsle-* \=0A+ | mips16-* \=0A+ | mips64-* | mips64el-* \=0A+ | mips64= octeon-* | mips64octeonel-* \=0A+ | mips64orion-* | mips64orionel-* \=0A+ |= mips64r5900-* | mips64r5900el-* \=0A+ | mips64vr-* | mips64vrel-* \=0A+ | = mips64vr4100-* | mips64vr4100el-* \=0A+ | mips64vr4300-* | mips64vr4300el-*= \=0A+ | mips64vr5000-* | mips64vr5000el-* \=0A+ | mips64vr5900-* | mips64v= r5900el-* \=0A+ | mipsisa32-* | mipsisa32el-* \=0A+ | mipsisa32r2-* | mipsi= sa32r2el-* \=0A+ | mipsisa64-* | mipsisa64el-* \=0A+ | mipsisa64r2-* | mips= isa64r2el-* \=0A+ | mipsisa64sb1-* | mipsisa64sb1el-* \=0A+ | mipsisa64sr71= k-* | mipsisa64sr71kel-* \=0A+ | mipstx39-* | mipstx39el-* \=0A+ | mmix-* \= =0A+ | mt-* \=0A+ | msp430-* \=0A+ | nios-* | nios2-* \=0A+ | none-* | np1-= * | ns16k-* | ns32k-* \=0A+ | orion-* \=0A+ | pdp10-* | pdp11-* | pj-* | pj= l-* | pn-* | power-* \=0A+ | powerpc-* | powerpc64-* | powerpc64le-* | powe= rpcle-* | ppcbe-* \=0A+ | pyramid-* \=0A+ | romp-* | rs6000-* \=0A+ | sh-* = | sh[1234]-* | sh[24]a-* | sh[24]aeb-* | sh[23]e-* | sh[34]eb-* | sheb-* | = shbe-* \=0A+ | shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \=0A+ |= sparc-* | sparc64-* | sparc64b-* | sparc64v-* | sparc86x-* | sparclet-* \= =0A+ | sparclite-* \=0A+ | sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* = | strongarm-* | sv1-* | sx?-* \=0A+ | tahoe-* | thumb-* \=0A+ | tic30-* | t= ic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* | tile-* \=0A+ | tron-* \= =0A+ | v850-* | v850e-* | vax-* \=0A+ | we32k-* \=0A+ | x86-* | x86=5F64-* = | xc16x-* | xps100-* | xscale-* | xscalee[bl]-* \=0A+ | xstormy16-* | xtens= a*-* \=0A+ | ymp-* \=0A+ | z8k-* | z80-*)=0A+ ;;=0A+ # Recognize the basic= CPU types without company name, with glob match.=0A+ xtensa*)=0A+ basic= =5Fmachine=3D$basic=5Fmachine-unknown=0A+ ;;=0A+ # Recognize the various m= achine names and aliases which stand=0A+ # for a CPU type and a company and= sometimes even an OS.=0A+ 386bsd)=0A+ basic=5Fmachine=3Di386-unknown=0A+ = os=3D-bsd=0A+ ;;=0A+ 3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari |= unixpc)=0A+ basic=5Fmachine=3Dm68000-att=0A+ ;;=0A+ 3b*)=0A+ basic=5Fma= chine=3Dwe32k-att=0A+ ;;=0A+ a29khif)=0A+ basic=5Fmachine=3Da29k-amd=0A+ = os=3D-udi=0A+ ;;=0A+ abacus)=0A+ basic=5Fmachine=3Dabacus-unknown=0A= + ;;=0A+ adobe68k)=0A+ basic=5Fmachine=3Dm68010-adobe=0A+ os=3D-scout=0A= + ;;=0A+ alliant | fx80)=0A+ basic=5Fmachine=3Dfx80-alliant=0A+ ;;=0A+ a= ltos | altos3068)=0A+ basic=5Fmachine=3Dm68k-altos=0A+ ;;=0A+ am29k)=0A+ = basic=5Fmachine=3Da29k-none=0A+ os=3D-bsd=0A+ ;;=0A+ amd64)=0A+ basic= =5Fmachine=3Dx86=5F64-pc=0A+ ;;=0A+ amd64-*)=0A+ basic=5Fmachine=3Dx86=5F= 64-`echo $basic=5Fmachine | sed 's/^[^-]*-//'`=0A+ ;;=0A+ amdahl)=0A+ bas= ic=5Fmachine=3D580-amdahl=0A+ os=3D-sysv=0A+ ;;=0A+ amiga | amiga-*)=0A+ = basic=5Fmachine=3Dm68k-unknown=0A+ ;;=0A+ amigaos | amigados)=0A+ basic= =5Fmachine=3Dm68k-unknown=0A+ os=3D-amigaos=0A+ ;;=0A+ amigaunix | amix)= =0A+ basic=5Fmachine=3Dm68k-unknown=0A+ os=3D-sysv4=0A+ ;;=0A+ apollo68)= =0A+ basic=5Fmachine=3Dm68k-apollo=0A+ os=3D-sysv=0A+ ;;=0A+ apollo68bsd= )=0A+ basic=5Fmachine=3Dm68k-apollo=0A+ os=3D-bsd=0A+ ;;=0A+ aros)=0A+ = basic=5Fmachine=3Di386-pc=0A+ os=3D-aros=0A+ ;;=0A+ aux)=0A+ basic=5Fmac= hine=3Dm68k-apple=0A+ os=3D-aux=0A+ ;;=0A+ balance)=0A+ basic=5Fmachine= =3Dns32k-sequent=0A+ os=3D-dynix=0A+ ;;=0A+ blackfin)=0A+ basic=5Fmachin= e=3Dbfin-unknown=0A+ os=3D-linux=0A+ ;;=0A+ blackfin-*)=0A+ basic=5Fmach= ine=3Dbfin-`echo $basic=5Fmachine | sed 's/^[^-]*-//'`=0A+ os=3D-linux=0A+= ;;=0A+ bluegene*)=0A+ basic=5Fmachine=3Dpowerpc-ibm=0A+ os=3D-cnk=0A+ = ;;=0A+ c90)=0A+ basic=5Fmachine=3Dc90-cray=0A+ os=3D-unicos=0A+ ;;=0A+ = cegcc)=0A+ basic=5Fmachine=3Darm-unknown=0A+ os=3D-cegcc=0A+ ;;=0A= + convex-c1)=0A+ basic=5Fmachine=3Dc1-convex=0A+ os=3D-bsd=0A+ ;;=0A+ co= nvex-c2)=0A+ basic=5Fmachine=3Dc2-convex=0A+ os=3D-bsd=0A+ ;;=0A+ convex= -c32)=0A+ basic=5Fmachine=3Dc32-convex=0A+ os=3D-bsd=0A+ ;;=0A+ convex-c= 34)=0A+ basic=5Fmachine=3Dc34-convex=0A+ os=3D-bsd=0A+ ;;=0A+ convex-c38= )=0A+ basic=5Fmachine=3Dc38-convex=0A+ os=3D-bsd=0A+ ;;=0A+ cray | j90)= =0A+ basic=5Fmachine=3Dj90-cray=0A+ os=3D-unicos=0A+ ;;=0A+ craynv)=0A+ = basic=5Fmachine=3Dcraynv-cray=0A+ os=3D-unicosmp=0A+ ;;=0A+ cr16)=0A+ b= asic=5Fmachine=3Dcr16-unknown=0A+ os=3D-elf=0A+ ;;=0A+ crds | unos)=0A+ = basic=5Fmachine=3Dm68k-crds=0A+ ;;=0A+ crisv32 | crisv32-* | etraxfs*)=0A+= basic=5Fmachine=3Dcrisv32-axis=0A+ ;;=0A+ cris | cris-* | etrax*)=0A+ b= asic=5Fmachine=3Dcris-axis=0A+ ;;=0A+ crx)=0A+ basic=5Fmachine=3Dcrx-unkn= own=0A+ os=3D-elf=0A+ ;;=0A+ da30 | da30-*)=0A+ basic=5Fmachine=3Dm68k-d= a30=0A+ ;;=0A+ decstation | decstation-3100 | pmax | pmax-* | pmin | dec31= 00 | decstatn)=0A+ basic=5Fmachine=3Dmips-dec=0A+ ;;=0A+ decsystem10* | d= ec10*)=0A+ basic=5Fmachine=3Dpdp10-dec=0A+ os=3D-tops10=0A+ ;;=0A+ decsy= stem20* | dec20*)=0A+ basic=5Fmachine=3Dpdp10-dec=0A+ os=3D-tops20=0A+ ;= ;=0A+ delta | 3300 | motorola-3300 | motorola-delta \=0A+ | 3300-moto= rola | delta-motorola)=0A+ basic=5Fmachine=3Dm68k-motorola=0A+ ;;=0A+ del= ta88)=0A+ basic=5Fmachine=3Dm88k-motorola=0A+ os=3D-sysv3=0A+ ;;=0A+ dic= os)=0A+ basic=5Fmachine=3Di686-pc=0A+ os=3D-dicos=0A+ ;;=0A+ djgpp)=0A+ = basic=5Fmachine=3Di586-pc=0A+ os=3D-msdosdjgpp=0A+ ;;=0A+ dpx20 | dpx20-= *)=0A+ basic=5Fmachine=3Drs6000-bull=0A+ os=3D-bosx=0A+ ;;=0A+ dpx2* | d= px2*-bull)=0A+ basic=5Fmachine=3Dm68k-bull=0A+ os=3D-sysv3=0A+ ;;=0A+ eb= mon29k)=0A+ basic=5Fmachine=3Da29k-amd=0A+ os=3D-ebmon=0A+ ;;=0A+ elxsi)= =0A+ basic=5Fmachine=3Delxsi-elxsi=0A+ os=3D-bsd=0A+ ;;=0A+ encore | uma= x | mmax)=0A+ basic=5Fmachine=3Dns32k-encore=0A+ ;;=0A+ es1800 | OSE68k |= ose68k | ose | OSE)=0A+ basic=5Fmachine=3Dm68k-ericsson=0A+ os=3D-ose=0A= + ;;=0A+ fx2800)=0A+ basic=5Fmachine=3Di860-alliant=0A+ ;;=0A+ genix)=0A= + basic=5Fmachine=3Dns32k-ns=0A+ ;;=0A+ gmicro)=0A+ basic=5Fmachine=3Dtr= on-gmicro=0A+ os=3D-sysv=0A+ ;;=0A+ go32)=0A+ basic=5Fmachine=3Di386-pc= =0A+ os=3D-go32=0A+ ;;=0A+ h3050r* | hiux*)=0A+ basic=5Fmachine=3Dhppa1.= 1-hitachi=0A+ os=3D-hiuxwe2=0A+ ;;=0A+ h8300hms)=0A+ basic=5Fmachine=3Dh= 8300-hitachi=0A+ os=3D-hms=0A+ ;;=0A+ h8300xray)=0A+ basic=5Fmachine=3Dh= 8300-hitachi=0A+ os=3D-xray=0A+ ;;=0A+ h8500hms)=0A+ basic=5Fmachine=3Dh= 8500-hitachi=0A+ os=3D-hms=0A+ ;;=0A+ harris)=0A+ basic=5Fmachine=3Dm88k= -harris=0A+ os=3D-sysv3=0A+ ;;=0A+ hp300-*)=0A+ basic=5Fmachine=3Dm68k-h= p=0A+ ;;=0A+ hp300bsd)=0A+ basic=5Fmachine=3Dm68k-hp=0A+ os=3D-bsd=0A+ = ;;=0A+ hp300hpux)=0A+ basic=5Fmachine=3Dm68k-hp=0A+ os=3D-hpux=0A+ ;;=0A= + hp3k9[0-9][0-9] | hp9[0-9][0-9])=0A+ basic=5Fmachine=3Dhppa1.0-hp=0A+ ;= ;=0A+ hp9k2[0-9][0-9] | hp9k31[0-9])=0A+ basic=5Fmachine=3Dm68000-hp=0A+ = ;;=0A+ hp9k3[2-9][0-9])=0A+ basic=5Fmachine=3Dm68k-hp=0A+ ;;=0A+ hp9k6[0-= 9][0-9] | hp6[0-9][0-9])=0A+ basic=5Fmachine=3Dhppa1.0-hp=0A+ ;;=0A+ hp9k= 7[0-79][0-9] | hp7[0-79][0-9])=0A+ basic=5Fmachine=3Dhppa1.1-hp=0A+ ;;=0A= + hp9k78[0-9] | hp78[0-9])=0A+ # FIXME: really hppa2.0-hp=0A+ basic=5Fmac= hine=3Dhppa1.1-hp=0A+ ;;=0A+ hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24]= | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893)=0A+ # FIXME: really hppa2.0-hp= =0A+ basic=5Fmachine=3Dhppa1.1-hp=0A+ ;;=0A+ hp9k8[0-9][13679] | hp8[0-9]= [13679])=0A+ basic=5Fmachine=3Dhppa1.1-hp=0A+ ;;=0A+ hp9k8[0-9][0-9] | hp= 8[0-9][0-9])=0A+ basic=5Fmachine=3Dhppa1.0-hp=0A+ ;;=0A+ hppa-next)=0A+ = os=3D-nextstep3=0A+ ;;=0A+ hppaosf)=0A+ basic=5Fmachine=3Dhppa1.1-hp=0A+ = os=3D-osf=0A+ ;;=0A+ hppro)=0A+ basic=5Fmachine=3Dhppa1.1-hp=0A+ os=3D-= proelf=0A+ ;;=0A+ i370-ibm* | ibm*)=0A+ basic=5Fmachine=3Di370-ibm=0A+ ;= ;=0A+# I'm not sure what "Sysv32" means. Should this be sysv3.2?=0A+ i*86v= 32)=0A+ basic=5Fmachine=3D`echo $1 | sed -e 's/86.*/86-pc/'`=0A+ os=3D-sy= sv32=0A+ ;;=0A+ i*86v4*)=0A+ basic=5Fmachine=3D`echo $1 | sed -e 's/86.*/= 86-pc/'`=0A+ os=3D-sysv4=0A+ ;;=0A+ i*86v)=0A+ basic=5Fmachine=3D`echo $= 1 | sed -e 's/86.*/86-pc/'`=0A+ os=3D-sysv=0A+ ;;=0A+ i*86sol2)=0A+ basi= c=5Fmachine=3D`echo $1 | sed -e 's/86.*/86-pc/'`=0A+ os=3D-solaris2=0A+ ;= ;=0A+ i386mach)=0A+ basic=5Fmachine=3Di386-mach=0A+ os=3D-mach=0A+ ;;=0A= + i386-vsta | vsta)=0A+ basic=5Fmachine=3Di386-unknown=0A+ os=3D-vsta=0A+= ;;=0A+ iris | iris4d)=0A+ basic=5Fmachine=3Dmips-sgi=0A+ case $os in=0A= + -irix*)=0A+ ;;=0A+ *)=0A+ os=3D-irix4=0A+ ;;=0A+ esac=0A= + ;;=0A+ isi68 | isi)=0A+ basic=5Fmachine=3Dm68k-isi=0A+ os=3D-sysv=0A+ = ;;=0A+ m68knommu)=0A+ basic=5Fmachine=3Dm68k-unknown=0A+ os=3D-linux=0A+= ;;=0A+ m68knommu-*)=0A+ basic=5Fmachine=3Dm68k-`echo $basic=5Fmachine | = sed 's/^[^-]*-//'`=0A+ os=3D-linux=0A+ ;;=0A+ m88k-omron*)=0A+ basic=5Fm= achine=3Dm88k-omron=0A+ ;;=0A+ magnum | m3230)=0A+ basic=5Fmachine=3Dmips= -mips=0A+ os=3D-sysv=0A+ ;;=0A+ merlin)=0A+ basic=5Fmachine=3Dns32k-utek= =0A+ os=3D-sysv=0A+ ;;=0A+ microblaze)=0A+ basic=5Fmachine=3Dmicr= oblaze-xilinx=0A+ ;;=0A+ mingw32)=0A+ basic=5Fmachine=3Di386-pc=0A+ os= =3D-mingw32=0A+ ;;=0A+ mingw32ce)=0A+ basic=5Fmachine=3Darm-unknown=0A+ = os=3D-mingw32ce=0A+ ;;=0A+ miniframe)=0A+ basic=5Fmachine=3Dm68000-conver= gent=0A+ ;;=0A+ *mint | -mint[0-9]* | *MiNT | *MiNT[0-9]*)=0A+ basic=5Fma= chine=3Dm68k-atari=0A+ os=3D-mint=0A+ ;;=0A+ mipsEE* | ee | ps2)=0A+ bas= ic=5Fmachine=3Dmips64r5900el-scei=0A+ case $os in=0A+ -linux*)=0A+ = ;;=0A+ *)=0A+ os=3D-elf=0A+ ;;=0A+ esac=0A+ ;;=0A+ iop)=0A+ bas= ic=5Fmachine=3Dmipsel-scei=0A+ os=3D-irx=0A+ ;;=0A+ dvp)=0A+ basic=5Fmac= hine=3Ddvp-scei=0A+ os=3D-elf=0A+ ;;=0A+ mips3*-*)=0A+ basic=5Fmachine= =3D`echo $basic=5Fmachine | sed -e 's/mips3/mips64/'`=0A+ ;;=0A+ mips3*)= =0A+ basic=5Fmachine=3D`echo $basic=5Fmachine | sed -e 's/mips3/mips64/'`-= unknown=0A+ ;;=0A+ monitor)=0A+ basic=5Fmachine=3Dm68k-rom68k=0A+ os=3D-= coff=0A+ ;;=0A+ morphos)=0A+ basic=5Fmachine=3Dpowerpc-unknown=0A+ os=3D= -morphos=0A+ ;;=0A+ msdos)=0A+ basic=5Fmachine=3Di386-pc=0A+ os=3D-msdos= =0A+ ;;=0A+ ms1-*)=0A+ basic=5Fmachine=3D`echo $basic=5Fmachine | sed -e = 's/ms1-/mt-/'`=0A+ ;;=0A+ mvs)=0A+ basic=5Fmachine=3Di370-ibm=0A+ os=3D-= mvs=0A+ ;;=0A+ ncr3000)=0A+ basic=5Fmachine=3Di486-ncr=0A+ os=3D-sysv4= =0A+ ;;=0A+ netbsd386)=0A+ basic=5Fmachine=3Di386-unknown=0A+ os=3D-netb= sd=0A+ ;;=0A+ netwinder)=0A+ basic=5Fmachine=3Darmv4l-rebel=0A+ os=3D-li= nux=0A+ ;;=0A+ news | news700 | news800 | news900)=0A+ basic=5Fmachine=3D= m68k-sony=0A+ os=3D-newsos=0A+ ;;=0A+ news1000)=0A+ basic=5Fmachine=3Dm6= 8030-sony=0A+ os=3D-newsos=0A+ ;;=0A+ news-3600 | risc-news)=0A+ basic= =5Fmachine=3Dmips-sony=0A+ os=3D-newsos=0A+ ;;=0A+ necv70)=0A+ basic=5Fm= achine=3Dv70-nec=0A+ os=3D-sysv=0A+ ;;=0A+ next | m*-next )=0A+ basic=5F= machine=3Dm68k-next=0A+ case $os in=0A+ -nextstep* )=0A+ ;;=0A+ = -ns2*)=0A+ os=3D-nextstep2=0A+ ;;=0A+ *)=0A+ os=3D-n= extstep3=0A+ ;;=0A+ esac=0A+ ;;=0A+ nh3000)=0A+ basic=5Fmachine=3Dm68k= -harris=0A+ os=3D-cxux=0A+ ;;=0A+ nh[45]000)=0A+ basic=5Fmachine=3Dm88k-= harris=0A+ os=3D-cxux=0A+ ;;=0A+ nindy960)=0A+ basic=5Fmachine=3Di960-in= tel=0A+ os=3D-nindy=0A+ ;;=0A+ mon960)=0A+ basic=5Fmachine=3Di960-intel= =0A+ os=3D-mon960=0A+ ;;=0A+ nonstopux)=0A+ basic=5Fmachine=3Dmips-compa= q=0A+ os=3D-nonstopux=0A+ ;;=0A+ np1)=0A+ basic=5Fmachine=3Dnp1-gould=0A= + ;;=0A+ nsr-tandem)=0A+ basic=5Fmachine=3Dnsr-tandem=0A+ ;;=0A+ op50n-*= | op60c-*)=0A+ basic=5Fmachine=3Dhppa1.1-oki=0A+ os=3D-proelf=0A+ ;;=0A= + openrisc | openrisc-*)=0A+ basic=5Fmachine=3Dor32-unknown=0A+ ;;=0A+ os= 400)=0A+ basic=5Fmachine=3Dpowerpc-ibm=0A+ os=3D-os400=0A+ ;;=0A+ OSE680= 00 | ose68000)=0A+ basic=5Fmachine=3Dm68000-ericsson=0A+ os=3D-ose=0A+ ;= ;=0A+ os68k)=0A+ basic=5Fmachine=3Dm68k-none=0A+ os=3D-os68k=0A+ ;;=0A+ = pa-hitachi)=0A+ basic=5Fmachine=3Dhppa1.1-hitachi=0A+ os=3D-hiuxwe2=0A+ = ;;=0A+ paragon)=0A+ basic=5Fmachine=3Di860-intel=0A+ os=3D-osf=0A+ ;;=0A= + parisc)=0A+ basic=5Fmachine=3Dhppa-unknown=0A+ os=3D-linux=0A+ ;;=0A+ = parisc-*)=0A+ basic=5Fmachine=3Dhppa-`echo $basic=5Fmachine | sed 's/^[^-]= *-//'`=0A+ os=3D-linux=0A+ ;;=0A+ pbd)=0A+ basic=5Fmachine=3Dsparc-tti= =0A+ ;;=0A+ pbb)=0A+ basic=5Fmachine=3Dm68k-tti=0A+ ;;=0A+ pc532 | pc532= -*)=0A+ basic=5Fmachine=3Dns32k-pc532=0A+ ;;=0A+ pc98)=0A+ basic=5Fmachi= ne=3Di386-pc=0A+ ;;=0A+ pc98-*)=0A+ basic=5Fmachine=3Di386-`echo $basic= =5Fmachine | sed 's/^[^-]*-//'`=0A+ ;;=0A+ pentium | p5 | k5 | k6 | nexgen= | viac3)=0A+ basic=5Fmachine=3Di586-pc=0A+ ;;=0A+ pentiumpro | p6 | 6x86= | athlon | athlon=5F*)=0A+ basic=5Fmachine=3Di686-pc=0A+ ;;=0A+ pentiumi= i | pentium2 | pentiumiii | pentium3)=0A+ basic=5Fmachine=3Di686-pc=0A+ ;= ;=0A+ pentium4)=0A+ basic=5Fmachine=3Di786-pc=0A+ ;;=0A+ pentium-* | p5-*= | k5-* | k6-* | nexgen-* | viac3-*)=0A+ basic=5Fmachine=3Di586-`echo $bas= ic=5Fmachine | sed 's/^[^-]*-//'`=0A+ ;;=0A+ pentiumpro-* | p6-* | 6x86-* = | athlon-*)=0A+ basic=5Fmachine=3Di686-`echo $basic=5Fmachine | sed 's/^[^= -]*-//'`=0A+ ;;=0A+ pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*)= =0A+ basic=5Fmachine=3Di686-`echo $basic=5Fmachine | sed 's/^[^-]*-//'`=0A= + ;;=0A+ pentium4-*)=0A+ basic=5Fmachine=3Di786-`echo $basic=5Fmachine | = sed 's/^[^-]*-//'`=0A+ ;;=0A+ pn)=0A+ basic=5Fmachine=3Dpn-gould=0A+ ;;= =0A+ power) basic=5Fmachine=3Dpower-ibm=0A+ ;;=0A+ ppc) basic=5Fmachine=3D= powerpc-unknown=0A+ ;;=0A+ ppc-*) basic=5Fmachine=3Dpowerpc-`echo $basic= =5Fmachine | sed 's/^[^-]*-//'`=0A+ ;;=0A+ ppcle | powerpclittle | ppc-le = | powerpc-little)=0A+ basic=5Fmachine=3Dpowerpcle-unknown=0A+ ;;=0A+ ppcl= e-* | powerpclittle-*)=0A+ basic=5Fmachine=3Dpowerpcle-`echo $basic=5Fmach= ine | sed 's/^[^-]*-//'`=0A+ ;;=0A+ ppc64) basic=5Fmachine=3Dpowerpc64-unk= nown=0A+ ;;=0A+ ppc64-*) basic=5Fmachine=3Dpowerpc64-`echo $basic=5Fmachin= e | sed 's/^[^-]*-//'`=0A+ ;;=0A+ ppc64le | powerpc64little | ppc64-le | p= owerpc64-little)=0A+ basic=5Fmachine=3Dpowerpc64le-unknown=0A+ ;;=0A+ ppc= 64le-* | powerpc64little-*)=0A+ basic=5Fmachine=3Dpowerpc64le-`echo $basic= =5Fmachine | sed 's/^[^-]*-//'`=0A+ ;;=0A+ ps2)=0A+ basic=5Fmachine=3Di38= 6-ibm=0A+ ;;=0A+ pw32)=0A+ basic=5Fmachine=3Di586-unknown=0A+ os=3D-pw32= =0A+ ;;=0A+ rdos)=0A+ basic=5Fmachine=3Di386-pc=0A+ os=3D-rdos=0A+ ;;= =0A+ rom68k)=0A+ basic=5Fmachine=3Dm68k-rom68k=0A+ os=3D-coff=0A+ ;;=0A+= rm[46]00)=0A+ basic=5Fmachine=3Dmips-siemens=0A+ ;;=0A+ rtpc | rtpc-*)= =0A+ basic=5Fmachine=3Dromp-ibm=0A+ ;;=0A+ s390 | s390-*)=0A+ basic=5Fma= chine=3Ds390-ibm=0A+ ;;=0A+ s390x | s390x-*)=0A+ basic=5Fmachine=3Ds390x-= ibm=0A+ ;;=0A+ sa29200)=0A+ basic=5Fmachine=3Da29k-amd=0A+ os=3D-udi=0A+= ;;=0A+ sb1)=0A+ basic=5Fmachine=3Dmipsisa64sb1-unknown=0A+ ;;=0A+ sb1el= )=0A+ basic=5Fmachine=3Dmipsisa64sb1el-unknown=0A+ ;;=0A+ sde)=0A+ basic= =5Fmachine=3Dmipsisa32-sde=0A+ os=3D-elf=0A+ ;;=0A+ sei)=0A+ basic=5Fmac= hine=3Dmips-sei=0A+ os=3D-seiux=0A+ ;;=0A+ sequent)=0A+ basic=5Fmachine= =3Di386-sequent=0A+ ;;=0A+ sh)=0A+ basic=5Fmachine=3Dsh-hitachi=0A+ os= =3D-hms=0A+ ;;=0A+ sh5el)=0A+ basic=5Fmachine=3Dsh5le-unknown=0A+ ;;=0A+= sh64)=0A+ basic=5Fmachine=3Dsh64-unknown=0A+ ;;=0A+ sparclite-wrs | sims= o-wrs)=0A+ basic=5Fmachine=3Dsparclite-wrs=0A+ os=3D-vxworks=0A+ ;;=0A+ = sps7)=0A+ basic=5Fmachine=3Dm68k-bull=0A+ os=3D-sysv2=0A+ ;;=0A+ spur)= =0A+ basic=5Fmachine=3Dspur-unknown=0A+ ;;=0A+ st2000)=0A+ basic=5Fmachi= ne=3Dm68k-tandem=0A+ ;;=0A+ stratus)=0A+ basic=5Fmachine=3Di860-stratus= =0A+ os=3D-sysv4=0A+ ;;=0A+ sun2)=0A+ basic=5Fmachine=3Dm68000-sun=0A+ = ;;=0A+ sun2os3)=0A+ basic=5Fmachine=3Dm68000-sun=0A+ os=3D-sunos3=0A+ ;;= =0A+ sun2os4)=0A+ basic=5Fmachine=3Dm68000-sun=0A+ os=3D-sunos4=0A+ ;;= =0A+ sun3os3)=0A+ basic=5Fmachine=3Dm68k-sun=0A+ os=3D-sunos3=0A+ ;;=0A+= sun3os4)=0A+ basic=5Fmachine=3Dm68k-sun=0A+ os=3D-sunos4=0A+ ;;=0A+ sun= 4os3)=0A+ basic=5Fmachine=3Dsparc-sun=0A+ os=3D-sunos3=0A+ ;;=0A+ sun4os= 4)=0A+ basic=5Fmachine=3Dsparc-sun=0A+ os=3D-sunos4=0A+ ;;=0A+ sun4sol2)= =0A+ basic=5Fmachine=3Dsparc-sun=0A+ os=3D-solaris2=0A+ ;;=0A+ sun3 | su= n3-*)=0A+ basic=5Fmachine=3Dm68k-sun=0A+ ;;=0A+ sun4)=0A+ basic=5Fmachin= e=3Dsparc-sun=0A+ ;;=0A+ sun386 | sun386i | roadrunner)=0A+ basic=5Fmachi= ne=3Di386-sun=0A+ ;;=0A+ sv1)=0A+ basic=5Fmachine=3Dsv1-cray=0A+ os=3D-u= nicos=0A+ ;;=0A+ symmetry)=0A+ basic=5Fmachine=3Di386-sequent=0A+ os=3D-= dynix=0A+ ;;=0A+ t3e)=0A+ basic=5Fmachine=3Dalphaev5-cray=0A+ os=3D-unic= os=0A+ ;;=0A+ t90)=0A+ basic=5Fmachine=3Dt90-cray=0A+ os=3D-unicos=0A+ = ;;=0A+ tic54x | c54x*)=0A+ basic=5Fmachine=3Dtic54x-unknown=0A+ os=3D-cof= f=0A+ ;;=0A+ tic55x | c55x*)=0A+ basic=5Fmachine=3Dtic55x-unknown=0A+ os= =3D-coff=0A+ ;;=0A+ tic6x | c6x*)=0A+ basic=5Fmachine=3Dtic6x-unknown=0A+= os=3D-coff=0A+ ;;=0A+ tile*)=0A+ basic=5Fmachine=3Dtile-unknown=0A+ os= =3D-linux-gnu=0A+ ;;=0A+ tx39)=0A+ basic=5Fmachine=3Dmipstx39-unknown=0A+= ;;=0A+ tx39el)=0A+ basic=5Fmachine=3Dmipstx39el-unknown=0A+ ;;=0A+ toad= 1)=0A+ basic=5Fmachine=3Dpdp10-xkl=0A+ os=3D-tops20=0A+ ;;=0A+ tower | t= ower-32)=0A+ basic=5Fmachine=3Dm68k-ncr=0A+ ;;=0A+ tpf)=0A+ basic=5Fmach= ine=3Ds390x-ibm=0A+ os=3D-tpf=0A+ ;;=0A+ udi29k)=0A+ basic=5Fmachine=3Da= 29k-amd=0A+ os=3D-udi=0A+ ;;=0A+ ultra3)=0A+ basic=5Fmachine=3Da29k-nyu= =0A+ os=3D-sym1=0A+ ;;=0A+ v810 | necv810)=0A+ basic=5Fmachine=3Dv810-ne= c=0A+ os=3D-none=0A+ ;;=0A+ vaxv)=0A+ basic=5Fmachine=3Dvax-dec=0A+ os= =3D-sysv=0A+ ;;=0A+ vms)=0A+ basic=5Fmachine=3Dvax-dec=0A+ os=3D-vms=0A+= ;;=0A+ vpp*|vx|vx-*)=0A+ basic=5Fmachine=3Df301-fujitsu=0A+ ;;=0A+ vxwo= rks960)=0A+ basic=5Fmachine=3Di960-wrs=0A+ os=3D-vxworks=0A+ ;;=0A+ vxwo= rks68)=0A+ basic=5Fmachine=3Dm68k-wrs=0A+ os=3D-vxworks=0A+ ;;=0A+ vxwor= ks29k)=0A+ basic=5Fmachine=3Da29k-wrs=0A+ os=3D-vxworks=0A+ ;;=0A+ w65*)= =0A+ basic=5Fmachine=3Dw65-wdc=0A+ os=3D-none=0A+ ;;=0A+ w89k-*)=0A+ ba= sic=5Fmachine=3Dhppa1.1-winbond=0A+ os=3D-proelf=0A+ ;;=0A+ xbox)=0A+ ba= sic=5Fmachine=3Di686-pc=0A+ os=3D-mingw32=0A+ ;;=0A+ xps | xps100)=0A+ b= asic=5Fmachine=3Dxps100-honeywell=0A+ ;;=0A+ ymp)=0A+ basic=5Fmachine=3Dy= mp-cray=0A+ os=3D-unicos=0A+ ;;=0A+ z8k-*-coff)=0A+ basic=5Fmachine=3Dz8= k-unknown=0A+ os=3D-sim=0A+ ;;=0A+ z80-*-coff)=0A+ basic=5Fmachine=3Dz80= -unknown=0A+ os=3D-sim=0A+ ;;=0A+ none)=0A+ basic=5Fmachine=3Dnone-none= =0A+ os=3D-none=0A+ ;;=0A+=0A+# Here we handle the default manufacturer o= f certain CPU types. It is in=0A+# some cases the only manufacturer, in ot= hers, it is the most popular.=0A+ w89k)=0A+ basic=5Fmachine=3Dhppa1.1-winb= ond=0A+ ;;=0A+ op50n)=0A+ basic=5Fmachine=3Dhppa1.1-oki=0A+ ;;=0A+ op60c= )=0A+ basic=5Fmachine=3Dhppa1.1-oki=0A+ ;;=0A+ romp)=0A+ basic=5Fmachine= =3Dromp-ibm=0A+ ;;=0A+ mmix)=0A+ basic=5Fmachine=3Dmmix-knuth=0A+ ;;=0A+= rs6000)=0A+ basic=5Fmachine=3Drs6000-ibm=0A+ ;;=0A+ vax)=0A+ basic=5Fma= chine=3Dvax-dec=0A+ ;;=0A+ pdp10)=0A+ # there are many clones, so DEC is = not a safe bet=0A+ basic=5Fmachine=3Dpdp10-unknown=0A+ ;;=0A+ pdp11)=0A+ = basic=5Fmachine=3Dpdp11-dec=0A+ ;;=0A+ we32k)=0A+ basic=5Fmachine=3Dwe32= k-att=0A+ ;;=0A+ sh[1234] | sh[24]a | sh[24]aeb | sh[34]eb | sh[1234]le | = sh[23]ele)=0A+ basic=5Fmachine=3Dsh-unknown=0A+ ;;=0A+ sparc | sparcv8 | = sparcv9 | sparcv9b | sparcv9v)=0A+ basic=5Fmachine=3Dsparc-sun=0A+ ;;=0A+= cydra)=0A+ basic=5Fmachine=3Dcydra-cydrome=0A+ ;;=0A+ orion)=0A+ basic= =5Fmachine=3Dorion-highlevel=0A+ ;;=0A+ orion105)=0A+ basic=5Fmachine=3Dc= lipper-highlevel=0A+ ;;=0A+ mac | mpw | mac-mpw)=0A+ basic=5Fmachine=3Dm6= 8k-apple=0A+ ;;=0A+ pmac | pmac-mpw)=0A+ basic=5Fmachine=3Dpowerpc-apple= =0A+ ;;=0A+ *-unknown)=0A+ # Make sure to match an already-canonicalized = machine name.=0A+ ;;=0A+ *)=0A+ echo Invalid configuration \`$1\': machin= e \`$basic=5Fmachine\' not recognized 1>&2=0A+ exit 1=0A+ ;;=0A+esac=0A+= =0A+# Here we canonicalize certain aliases for manufacturers.=0A+case $basi= c=5Fmachine in=0A+ *-digital*)=0A+ basic=5Fmachine=3D`echo $basic=5Fmachin= e | sed 's/digital.*/dec/'`=0A+ ;;=0A+ *-commodore*)=0A+ basic=5Fmachine= =3D`echo $basic=5Fmachine | sed 's/commodore.*/cbm/'`=0A+ ;;=0A+ *)=0A+ ;= ;=0A+esac=0A+=0A+# Decode manufacturer-specific aliases for certain operati= ng systems.=0A+=0A+if [ x"$os" !=3D x"" ]=0A+then=0A+case $os in=0A+ = # First match some system type aliases=0A+ # that might get confuse= d with valid system types.=0A+ # -solaris* is a basic system type, with thi= s one exception.=0A+ -solaris1 | -solaris1.*)=0A+ os=3D`echo $os | sed -e = 's|solaris1|sunos4|'`=0A+ ;;=0A+ -solaris)=0A+ os=3D-solaris2=0A+ ;;=0A+= -svr4*)=0A+ os=3D-sysv4=0A+ ;;=0A+ -unixware*)=0A+ os=3D-sysv4.2uw=0A+ = ;;=0A+ -gnu/linux*)=0A+ os=3D`echo $os | sed -e 's|gnu/linux|linux-gnu|'`= =0A+ ;;=0A+ # First accept the basic system types.=0A+ # The portable syst= ems comes first.=0A+ # Each alternative MUST END IN A *, to match a version= number.=0A+ # -sysv* is not here because it comes later, after sysvr4.=0A+= -gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \=0A+ = | -*vms* | -sco* | -esix* | -isc* | -aix* | -cnk* | -sunos | -sunos[34]*\= =0A+ | -hpux* | -unos* | -osf* | -luna* | -dgux* | -solaris* | -sym* = \=0A+ | -kopensolaris* \=0A+ | -amigaos* | -amigados* | -msdos*= | -newsos* | -unicos* | -aof* \=0A+ | -aos* | -aros* \=0A+ | -= nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \=0A+ | -clix*= | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \=0A+ | -hiux* | -= 386bsd* | -knetbsd* | -mirbsd* | -netbsd* \=0A+ | -openbsd* | -solidb= sd* \=0A+ | -ekkobsd* | -kfreebsd* | -freebsd* | -riscix* | -lynxos* = \=0A+ | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \=0A+ = | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \=0A+ = | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \=0A+ | -choruso= s* | -chorusrdb* | -cegcc* \=0A+ | -cygwin* | -pe* | -psos* | -moss* = | -proelf* | -rtems* \=0A+ | -mingw32* | -linux-gnu* | -linux-newlib*= | -linux-uclibc* \=0A+ | -uxpv* | -beos* | -mpeix* | -udk* \=0A+ = | -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \=0A+ = | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \=0A+ | -= storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \=0A+ | -os2* | = -vos* | -palmos* | -uclinux* | -nucleus* \=0A+ | -morphos* | -superux= * | -rtmk* | -rtmk-nova* | -windiss* \=0A+ | -powermax* | -dnix* | -n= x6 | -nx7 | -sei* | -dragonfly* \=0A+ | -skyos* | -haiku* | -rdos* | = -toppers* | -drops* | -irx*)=0A+ # Remember, each alternative MUST END IN *= , to match a version number.=0A+ ;;=0A+ -qnx*)=0A+ case $basic=5Fmachine = in=0A+ x86-* | i*86-*)=0A+ ;;=0A+ *)=0A+ os=3D-nto$os=0A+ ;= ;=0A+ esac=0A+ ;;=0A+ -nto-qnx*)=0A+ ;;=0A+ -nto*)=0A+ os=3D`echo $os |= sed -e 's|nto|nto-qnx|'`=0A+ ;;=0A+ -sim | -es1800* | -hms* | -xray | -os= 68k* | -none* | -v88r* \=0A+ | -windows* | -osx | -abug | -netware* |= -os9* | -beos* | -haiku* \=0A+ | -macos* | -mpw* | -magic* | -mmixwa= re* | -mon960* | -lnews*)=0A+ ;;=0A+ -mac*)=0A+ os=3D`echo $os | sed -e '= s|mac|macos|'`=0A+ ;;=0A+ -linux-dietlibc)=0A+ os=3D-linux-dietlibc=0A+ = ;;=0A+ -linux*)=0A+ os=3D`echo $os | sed -e 's|linux|linux-gnu|'`=0A+ ;;= =0A+ -sunos5*)=0A+ os=3D`echo $os | sed -e 's|sunos5|solaris2|'`=0A+ ;;= =0A+ -sunos6*)=0A+ os=3D`echo $os | sed -e 's|sunos6|solaris3|'`=0A+ ;;= =0A+ -opened*)=0A+ os=3D-openedition=0A+ ;;=0A+ -os400*)=0A+ os= =3D-os400=0A+ ;;=0A+ -wince*)=0A+ os=3D-wince=0A+ ;;=0A+ -osfrose*)=0A+ = os=3D-osfrose=0A+ ;;=0A+ -osf*)=0A+ os=3D-osf=0A+ ;;=0A+ -utek*)=0A+ o= s=3D-bsd=0A+ ;;=0A+ -dynix*)=0A+ os=3D-bsd=0A+ ;;=0A+ -acis*)=0A+ os=3D= -aos=0A+ ;;=0A+ -atheos*)=0A+ os=3D-atheos=0A+ ;;=0A+ -syllable*)=0A+ o= s=3D-syllable=0A+ ;;=0A+ -386bsd)=0A+ os=3D-bsd=0A+ ;;=0A+ -ctix* | -uts= *)=0A+ os=3D-sysv=0A+ ;;=0A+ -nova*)=0A+ os=3D-rtmk-nova=0A+ ;;=0A+ -ns= 2 )=0A+ os=3D-nextstep2=0A+ ;;=0A+ -nsk*)=0A+ os=3D-nsk=0A+ ;;=0A+ # Pr= eserve the version number of sinix5.=0A+ -sinix5.*)=0A+ os=3D`echo $os | s= ed -e 's|sinix|sysv|'`=0A+ ;;=0A+ -sinix*)=0A+ os=3D-sysv4=0A+ ;;=0A+ = -tpf*)=0A+ os=3D-tpf=0A+ ;;=0A+ -triton*)=0A+ os=3D-sysv3=0A+ ;;= =0A+ -oss*)=0A+ os=3D-sysv3=0A+ ;;=0A+ -svr4)=0A+ os=3D-sysv4=0A+ ;;=0A= + -svr3)=0A+ os=3D-sysv3=0A+ ;;=0A+ -sysvr4)=0A+ os=3D-sysv4=0A+ ;;=0A+= # This must come after -sysvr4.=0A+ -sysv*)=0A+ ;;=0A+ -ose*)=0A+ os=3D-= ose=0A+ ;;=0A+ -es1800*)=0A+ os=3D-ose=0A+ ;;=0A+ -xenix)=0A+ os=3D-xen= ix=0A+ ;;=0A+ -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*)=0A+ os=3D-mint= =0A+ ;;=0A+ -aros*)=0A+ os=3D-aros=0A+ ;;=0A+ -kaos*)=0A+ os=3D-kaos=0A= + ;;=0A+ -zvmoe)=0A+ os=3D-zvmoe=0A+ ;;=0A+ -dicos*)=0A+ os=3D-dicos=0A= + ;;=0A+ -none)=0A+ ;;=0A+ *)=0A+ # Get rid of the `-' at the beginning = of $os.=0A+ os=3D`echo $os | sed 's/[^-]*-//'`=0A+ echo Invalid configura= tion \`$1\': system \`$os\' not recognized 1>&2=0A+ exit 1=0A+ ;;=0A+esac= =0A+else=0A+=0A+# Here we handle the default operating systems that come wi= th various machines.=0A+# The value should be what the vendor currently shi= ps out the door with their=0A+# machine or put another way, the most popula= r os provided with the machine.=0A+=0A+# Note that if you're going to try t= o match "-MANUFACTURER" here (say,=0A+# "-sun"), then you have to tell the = case statement up towards the top=0A+# that MANUFACTURER isn't an operating= system. Otherwise, code above=0A+# will signal an error saying that MANUF= ACTURER isn't an operating=0A+# system, and we'll never get to this point.= =0A+=0A+case $basic=5Fmachine in=0A+ score-*)=0A+ os=3D-elf=0A+ ;;= =0A+ spu-*)=0A+ os=3D-elf=0A+ ;;=0A+ *-acorn)=0A+ os=3D-riscix1.2= =0A+ ;;=0A+ arm*-rebel)=0A+ os=3D-linux=0A+ ;;=0A+ arm*-semi)=0A+ os=3D= -aout=0A+ ;;=0A+ c4x-* | tic4x-*)=0A+ os=3D-coff=0A+ ;;=0A= + # This must come before the *-dec entry.=0A+ pdp10-*)=0A+ os=3D-tops20= =0A+ ;;=0A+ pdp11-*)=0A+ os=3D-none=0A+ ;;=0A+ *-dec | vax-*)=0A+ os=3D= -ultrix4.2=0A+ ;;=0A+ m68*-apollo)=0A+ os=3D-domain=0A+ ;;=0A+ i386-sun)= =0A+ os=3D-sunos4.0.2=0A+ ;;=0A+ m68000-sun)=0A+ os=3D-sunos3=0A+ # Thi= s also exists in the configure program, but was not the=0A+ # default.=0A+= # os=3D-sunos4=0A+ ;;=0A+ m68*-cisco)=0A+ os=3D-aout=0A+ ;;=0A+ = mep-*)=0A+ os=3D-elf=0A+ ;;=0A+ mips*-cisco)=0A+ os=3D-elf=0A+ ;;=0A+ = mips*-*)=0A+ os=3D-elf=0A+ ;;=0A+ or32-*)=0A+ os=3D-coff=0A+ ;;=0A+ *-t= ti) # must be before sparc entry or we get the wrong os.=0A+ os=3D-sysv3= =0A+ ;;=0A+ sparc-* | *-sun)=0A+ os=3D-sunos4.1.1=0A+ ;;=0A+ *-be)=0A+ = os=3D-beos=0A+ ;;=0A+ *-haiku)=0A+ os=3D-haiku=0A+ ;;=0A+ *-ibm)=0A+ os= =3D-aix=0A+ ;;=0A+ *-knuth)=0A+ os=3D-mmixware=0A+ ;;=0A+ *-wec)=0A+= os=3D-proelf=0A+ ;;=0A+ *-winbond)=0A+ os=3D-proelf=0A+ ;;=0A+ *-oki)= =0A+ os=3D-proelf=0A+ ;;=0A+ *-hp)=0A+ os=3D-hpux=0A+ ;;=0A+ *-hitachi)= =0A+ os=3D-hiux=0A+ ;;=0A+ i860-* | *-att | *-ncr | *-altos | *-motorola = | *-convergent)=0A+ os=3D-sysv=0A+ ;;=0A+ *-cbm)=0A+ os=3D-amigaos=0A+ = ;;=0A+ *-dg)=0A+ os=3D-dgux=0A+ ;;=0A+ *-dolphin)=0A+ os=3D-sysv3=0A+ ;= ;=0A+ m68k-ccur)=0A+ os=3D-rtu=0A+ ;;=0A+ m88k-omron*)=0A+ os=3D-luna=0A= + ;;=0A+ *-next )=0A+ os=3D-nextstep=0A+ ;;=0A+ *-sequent)=0A+ os=3D-pt= x=0A+ ;;=0A+ *-crds)=0A+ os=3D-unos=0A+ ;;=0A+ *-ns)=0A+ os=3D-genix=0A= + ;;=0A+ i370-*)=0A+ os=3D-mvs=0A+ ;;=0A+ *-next)=0A+ os=3D-nextstep3= =0A+ ;;=0A+ *-gould)=0A+ os=3D-sysv=0A+ ;;=0A+ *-highlevel)=0A+ os=3D-b= sd=0A+ ;;=0A+ *-encore)=0A+ os=3D-bsd=0A+ ;;=0A+ *-sgi)=0A+ os=3D-irix= =0A+ ;;=0A+ *-siemens)=0A+ os=3D-sysv4=0A+ ;;=0A+ *-masscomp)=0A+ os=3D= -rtu=0A+ ;;=0A+ f30[01]-fujitsu | f700-fujitsu)=0A+ os=3D-uxpv=0A+ ;;=0A= + *-rom68k)=0A+ os=3D-coff=0A+ ;;=0A+ *-*bug)=0A+ os=3D-coff=0A+ ;;=0A+= *-apple)=0A+ os=3D-macos=0A+ ;;=0A+ *-atari*)=0A+ os=3D-mint=0A+ ;;=0A= + *)=0A+ os=3D-none=0A+ ;;=0A+esac=0A+fi=0A+=0A+# Here we handle the case= where we know the os, and the CPU type, but not the=0A+# manufacturer. We= pick the logical manufacturer.=0A+vendor=3Dunknown=0A+case $basic=5Fmachin= e in=0A+ *-unknown)=0A+ case $os in=0A+ -riscix*)=0A+ vendor=3Dacorn= =0A+ ;;=0A+ -sunos*)=0A+ vendor=3Dsun=0A+ ;;=0A+ -cnk*|-aix*)= =0A+ vendor=3Dibm=0A+ ;;=0A+ -beos*)=0A+ vendor=3Dbe=0A+ ;;= =0A+ -hpux*)=0A+ vendor=3Dhp=0A+ ;;=0A+ -mpeix*)=0A+ vendor=3D= hp=0A+ ;;=0A+ -hiux*)=0A+ vendor=3Dhitachi=0A+ ;;=0A+ -unos*)= =0A+ vendor=3Dcrds=0A+ ;;=0A+ -dgux*)=0A+ vendor=3Ddg=0A+ ;;= =0A+ -luna*)=0A+ vendor=3Domron=0A+ ;;=0A+ -genix*)=0A+ vendor= =3Dns=0A+ ;;=0A+ -mvs* | -opened*)=0A+ vendor=3Dibm=0A+ ;;=0A+ = -os400*)=0A+ vendor=3Dibm=0A+ ;;=0A+ -ptx*)=0A+ vendor=3Dsequen= t=0A+ ;;=0A+ -tpf*)=0A+ vendor=3Dibm=0A+ ;;=0A+ -vxsim* | -vxw= orks* | -windiss*)=0A+ vendor=3Dwrs=0A+ ;;=0A+ -aux*)=0A+ vendor= =3Dapple=0A+ ;;=0A+ -hms*)=0A+ vendor=3Dhitachi=0A+ ;;=0A+ -mp= w* | -macos*)=0A+ vendor=3Dapple=0A+ ;;=0A+ -*mint | -mint[0-9]* | = -*MiNT | -MiNT[0-9]*)=0A+ vendor=3Datari=0A+ ;;=0A+ -vos*)=0A+ v= endor=3Dstratus=0A+ ;;=0A+ esac=0A+ basic=5Fmachine=3D`echo $basic=5Fm= achine | sed "s/unknown/$vendor/"`=0A+ ;;=0A+esac=0A+=0A+echo $basic=5Fmac= hine$os=0A+exit=0A+=0A+# Local variables:=0A+# eval: (add-hook 'write-file-= hooks 'time-stamp)=0A+# time-stamp-start: "timestamp=3D'"=0A+# time-stamp-f= ormat: "%:y-%02m-%02d"=0A+# time-stamp-end: "'"=0A+# End:=0Adiff --git a/ut= ils/ffsb-6.0-rc2/configure b/utils/ffsb-6.0-rc2/configure=0Anew file mode 1= 00755=0Aindex 0000000..12d5202=0A--- /dev/null=0A+++ b/utils/ffsb-6.0-rc2/c= onfigure=0A@@ -0,0 +1,7000 @@=0A+#! /bin/sh=0A+# Guess values for system-de= pendent variables and create Makefiles.=0A+# Generated by GNU Autoconf 2.61= .=0A+#=0A+# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2= 001,=0A+# 2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc.=0A+# = This configure script is free software; the Free Software Foundation=0A+# g= ives unlimited permission to copy, distribute and modify it.=0A+## --------= ------------- ##=0A+## M4sh Initialization. ##=0A+## ---------------------= ##=0A+=0A+# Be more Bourne compatible=0A+DUALCASE=3D1; export DUALCASE # f= or MKS sh=0A+if test -n "${ZSH=5FVERSION+set}" && (emulate sh) >/dev/null 2= >&1; then=0A+ emulate sh=0A+ NULLCMD=3D:=0A+ # Zsh 3.x and 4.x performs = word splitting on ${1+"$@"}, which=0A+ # is contrary to our usage. Disabl= e this feature.=0A+ alias -g '${1+"$@"}'=3D'"$@"'=0A+ setopt NO=5FGLOB=5F= SUBST=0A+else=0A+ case `(set -o) 2>/dev/null` in=0A+ *posix*) set -o posi= x ;;=0A+esac=0A+=0A+fi=0A+=0A+=0A+=0A+=0A+# PATH needs CR=0A+# Avoid depend= ing upon Character Ranges.=0A+as=5Fcr=5Fletters=3D'abcdefghijklmnopqrstuvwx= yz'=0A+as=5Fcr=5FLETTERS=3D'ABCDEFGHIJKLMNOPQRSTUVWXYZ'=0A+as=5Fcr=5FLetter= s=3D$as=5Fcr=5Fletters$as=5Fcr=5FLETTERS=0A+as=5Fcr=5Fdigits=3D'0123456789'= =0A+as=5Fcr=5Falnum=3D$as=5Fcr=5FLetters$as=5Fcr=5Fdigits=0A+=0A+# The user= is always right.=0A+if test "${PATH=5FSEPARATOR+set}" !=3D set; then=0A+ = echo "#! /bin/sh" >conf$$.sh=0A+ echo "exit 0" >>conf$$.sh=0A+ chmod += x conf$$.sh=0A+ if (PATH=3D"/nonexistent;."; conf$$.sh) >/dev/null 2>&1; t= hen=0A+ PATH=5FSEPARATOR=3D';'=0A+ else=0A+ PATH=5FSEPARATOR=3D:=0A+= fi=0A+ rm -f conf$$.sh=0A+fi=0A+=0A+# Support unset when possible.=0A+if= ( (MAIL=3D60; unset MAIL) || exit) >/dev/null 2>&1; then=0A+ as=5Funset= =3Dunset=0A+else=0A+ as=5Funset=3Dfalse=0A+fi=0A+=0A+=0A+# IFS=0A+# We nee= d space, tab and new line, in precisely that order. Quoting is=0A+# there = to prevent editors from complaining about space-tab.=0A+# (If =5FAS=5FPATH= =5FWALK were called with IFS unset, it would disable word=0A+# splitting by= setting IFS to empty value.)=0A+as=5Fnl=3D'=0A+'=0A+IFS=3D" "" $as=5Fnl"= =0A+=0A+# Find who we are. Look in the path if we contain no directory sep= arator.=0A+case $0 in=0A+ *[\\/]* ) as=5Fmyself=3D$0 ;;=0A+ *) as=5Fsave= =5FIFS=3D$IFS; IFS=3D$PATH=5FSEPARATOR=0A+for as=5Fdir in $PATH=0A+do=0A+ = IFS=3D$as=5Fsave=5FIFS=0A+ test -z "$as=5Fdir" && as=5Fdir=3D.=0A+ test -= r "$as=5Fdir/$0" && as=5Fmyself=3D$as=5Fdir/$0 && break=0A+done=0A+IFS=3D$a= s=5Fsave=5FIFS=0A+=0A+ ;;=0A+esac=0A+# We did not find ourselves, most = probably we were run as `sh COMMAND'=0A+# in which case we are not to be fo= und in the path.=0A+if test "x$as=5Fmyself" =3D x; then=0A+ as=5Fmyself=3D= $0=0A+fi=0A+if test ! -f "$as=5Fmyself"; then=0A+ echo "$as=5Fmyself: erro= r: cannot find myself; rerun with an absolute file name" >&2=0A+ { (exit 1= ); exit 1; }=0A+fi=0A+=0A+# Work around bugs in pre-3.0 UWIN ksh.=0A+for as= =5Fvar in ENV MAIL MAILPATH=0A+do ($as=5Funset $as=5Fvar) >/dev/null 2>&1 &= & $as=5Funset $as=5Fvar=0A+done=0A+PS1=3D'$ '=0A+PS2=3D'> '=0A+PS4=3D'+ '= =0A+=0A+# NLS nuisances.=0A+for as=5Fvar in \=0A+ LANG LANGUAGE LC=5FADDRE= SS LC=5FALL LC=5FCOLLATE LC=5FCTYPE LC=5FIDENTIFICATION \=0A+ LC=5FMEASURE= MENT LC=5FMESSAGES LC=5FMONETARY LC=5FNAME LC=5FNUMERIC LC=5FPAPER \=0A+ L= C=5FTELEPHONE LC=5FTIME=0A+do=0A+ if (set +x; test -z "`(eval $as=5Fvar=3D= C; export $as=5Fvar) 2>&1`"); then=0A+ eval $as=5Fvar=3DC; export $as=5F= var=0A+ else=0A+ ($as=5Funset $as=5Fvar) >/dev/null 2>&1 && $as=5Funset= $as=5Fvar=0A+ fi=0A+done=0A+=0A+# Required to use basename.=0A+if expr a = : '\(a\)' >/dev/null 2>&1 &&=0A+ test "X`expr 00001 : '.*\(...\)'`" =3D X= 001; then=0A+ as=5Fexpr=3Dexpr=0A+else=0A+ as=5Fexpr=3Dfalse=0A+fi=0A+=0A= +if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" =3D "X/= "; then=0A+ as=5Fbasename=3Dbasename=0A+else=0A+ as=5Fbasename=3Dfalse=0A= +fi=0A+=0A+=0A+# Name of the executable.=0A+as=5Fme=3D`$as=5Fbasename -- "$= 0" ||=0A+$as=5Fexpr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \=0A+ X"$0" : 'X\(//= \)$' \| \=0A+ X"$0" : 'X\(/\)' \| . 2>/dev/null ||=0A+echo X/"$0" |=0A+ = sed '/^.*\/\([^/][^/]*\)\/*$/{=0A+ s//\1/=0A+ q=0A+ }=0A+ /^X\= /\(\/\/\)$/{=0A+ s//\1/=0A+ q=0A+ }=0A+ /^X\/\(\/\).*/{=0A+ = s//\1/=0A+ q=0A+ }=0A+ s/.*/./; q'`=0A+=0A+# CDPATH.=0A+$as=5Funse= t CDPATH=0A+=0A+=0A+if test "x$CONFIG=5FSHELL" =3D x; then=0A+ if (eval ":= ") 2>/dev/null; then=0A+ as=5Fhave=5Frequired=3Dyes=0A+else=0A+ as=5Fhave= =5Frequired=3Dno=0A+fi=0A+=0A+ if test $as=5Fhave=5Frequired =3D yes && = (eval ":=0A+(as=5Ffunc=5Freturn () {=0A+ (exit \$1)=0A+}=0A+as=5Ffunc=5Fsu= ccess () {=0A+ as=5Ffunc=5Freturn 0=0A+}=0A+as=5Ffunc=5Ffailure () {=0A+ = as=5Ffunc=5Freturn 1=0A+}=0A+as=5Ffunc=5Fret=5Fsuccess () {=0A+ return 0= =0A+}=0A+as=5Ffunc=5Fret=5Ffailure () {=0A+ return 1=0A+}=0A+=0A+exitcode= =3D0=0A+if as=5Ffunc=5Fsuccess; then=0A+ :=0A+else=0A+ exitcode=3D1=0A+ = echo as=5Ffunc=5Fsuccess failed.=0A+fi=0A+=0A+if as=5Ffunc=5Ffailure; then= =0A+ exitcode=3D1=0A+ echo as=5Ffunc=5Ffailure succeeded.=0A+fi=0A+=0A+if= as=5Ffunc=5Fret=5Fsuccess; then=0A+ :=0A+else=0A+ exitcode=3D1=0A+ echo= as=5Ffunc=5Fret=5Fsuccess failed.=0A+fi=0A+=0A+if as=5Ffunc=5Fret=5Ffailur= e; then=0A+ exitcode=3D1=0A+ echo as=5Ffunc=5Fret=5Ffailure succeeded.=0A= +fi=0A+=0A+if ( set x; as=5Ffunc=5Fret=5Fsuccess y && test x =3D \"\$1\" );= then=0A+ :=0A+else=0A+ exitcode=3D1=0A+ echo positional parameters were= not saved.=0A+fi=0A+=0A+test \$exitcode =3D 0) || { (exit 1); exit 1; }=0A= +=0A+(=0A+ as=5Flineno=5F1=3D\$LINENO=0A+ as=5Flineno=5F2=3D\$LINENO=0A+ = test \"x\$as=5Flineno=5F1\" !=3D \"x\$as=5Flineno=5F2\" &&=0A+ test \"x\`= expr \$as=5Flineno=5F1 + 1\`\" =3D \"x\$as=5Flineno=5F2\") || { (exit 1); e= xit 1; }=0A+") 2> /dev/null; then=0A+ :=0A+else=0A+ as=5Fcandidate=5Fshel= ls=3D=0A+ as=5Fsave=5FIFS=3D$IFS; IFS=3D$PATH=5FSEPARATOR=0A+for as=5Fdi= r in /bin$PATH=5FSEPARATOR/usr/bin$PATH=5FSEPARATOR$PATH=0A+do=0A+ IFS=3D$= as=5Fsave=5FIFS=0A+ test -z "$as=5Fdir" && as=5Fdir=3D.=0A+ case $as=5Fdi= r in=0A+ /*)=0A+ for as=5Fbase in sh bash ksh sh5; do=0A+ as=5Fcan= didate=5Fshells=3D"$as=5Fcandidate=5Fshells $as=5Fdir/$as=5Fbase"=0A+ do= ne;;=0A+ esac=0A+done=0A+IFS=3D$as=5Fsave=5FIFS=0A+=0A+=0A+ for = as=5Fshell in $as=5Fcandidate=5Fshells $SHELL; do=0A+ # Try only shells th= at exist, to save several forks.=0A+ if { test -f "$as=5Fshell" || test -f= "$as=5Fshell.exe"; } &&=0A+ { ("$as=5Fshell") 2> /dev/null <<\=5FASEOF=0A= +if test -n "${ZSH=5FVERSION+set}" && (emulate sh) >/dev/null 2>&1; then=0A= + emulate sh=0A+ NULLCMD=3D:=0A+ # Zsh 3.x and 4.x performs word splitti= ng on ${1+"$@"}, which=0A+ # is contrary to our usage. Disable this featu= re.=0A+ alias -g '${1+"$@"}'=3D'"$@"'=0A+ setopt NO=5FGLOB=5FSUBST=0A+els= e=0A+ case `(set -o) 2>/dev/null` in=0A+ *posix*) set -o posix ;;=0A+esac= =0A+=0A+fi=0A+=0A+=0A+:=0A+=5FASEOF=0A+}; then=0A+ CONFIG=5FSHELL=3D$as=5F= shell=0A+ as=5Fhave=5Frequired=3Dyes=0A+ if { "$as=5Fshell" 2= > /dev/null <<\=5FASEOF=0A+if test -n "${ZSH=5FVERSION+set}" && (emulate sh= ) >/dev/null 2>&1; then=0A+ emulate sh=0A+ NULLCMD=3D:=0A+ # Zsh 3.x and= 4.x performs word splitting on ${1+"$@"}, which=0A+ # is contrary to our = usage. Disable this feature.=0A+ alias -g '${1+"$@"}'=3D'"$@"'=0A+ setop= t NO=5FGLOB=5FSUBST=0A+else=0A+ case `(set -o) 2>/dev/null` in=0A+ *posix= *) set -o posix ;;=0A+esac=0A+=0A+fi=0A+=0A+=0A+:=0A+(as=5Ffunc=5Freturn ()= {=0A+ (exit $1)=0A+}=0A+as=5Ffunc=5Fsuccess () {=0A+ as=5Ffunc=5Freturn = 0=0A+}=0A+as=5Ffunc=5Ffailure () {=0A+ as=5Ffunc=5Freturn 1=0A+}=0A+as=5Ff= unc=5Fret=5Fsuccess () {=0A+ return 0=0A+}=0A+as=5Ffunc=5Fret=5Ffailure ()= {=0A+ return 1=0A+}=0A+=0A+exitcode=3D0=0A+if as=5Ffunc=5Fsuccess; then= =0A+ :=0A+else=0A+ exitcode=3D1=0A+ echo as=5Ffunc=5Fsuccess failed.=0A+= fi=0A+=0A+if as=5Ffunc=5Ffailure; then=0A+ exitcode=3D1=0A+ echo as=5Ffun= c=5Ffailure succeeded.=0A+fi=0A+=0A+if as=5Ffunc=5Fret=5Fsuccess; then=0A+ = :=0A+else=0A+ exitcode=3D1=0A+ echo as=5Ffunc=5Fret=5Fsuccess failed.=0A= +fi=0A+=0A+if as=5Ffunc=5Fret=5Ffailure; then=0A+ exitcode=3D1=0A+ echo a= s=5Ffunc=5Fret=5Ffailure succeeded.=0A+fi=0A+=0A+if ( set x; as=5Ffunc=5Fre= t=5Fsuccess y && test x =3D "$1" ); then=0A+ :=0A+else=0A+ exitcode=3D1= =0A+ echo positional parameters were not saved.=0A+fi=0A+=0A+test $exitcod= e =3D 0) || { (exit 1); exit 1; }=0A+=0A+(=0A+ as=5Flineno=5F1=3D$LINENO= =0A+ as=5Flineno=5F2=3D$LINENO=0A+ test "x$as=5Flineno=5F1" !=3D "x$as=5F= lineno=5F2" &&=0A+ test "x`expr $as=5Flineno=5F1 + 1`" =3D "x$as=5Flineno= =5F2") || { (exit 1); exit 1; }=0A+=0A+=5FASEOF=0A+}; then=0A+ break=0A+fi= =0A+=0A+fi=0A+=0A+ done=0A+=0A+ if test "x$CONFIG=5FSHELL" !=3D x= ; then=0A+ for as=5Fvar in BASH=5FENV ENV=0A+ do ($as=5Funset $as= =5Fvar) >/dev/null 2>&1 && $as=5Funset $as=5Fvar=0A+ done=0A+ = export CONFIG=5FSHELL=0A+ exec "$CONFIG=5FSHELL" "$as=5Fmyself" ${1= +"$@"}=0A+fi=0A+=0A+=0A+ if test $as=5Fhave=5Frequired =3D no; then=0A+ = echo This script requires a shell more modern than all the=0A+ echo s= hells that I found on your system. Please install a=0A+ echo modern s= hell, or manually run the script under such a=0A+ echo shell if you do= have one.=0A+ { (exit 1); exit 1; }=0A+fi=0A+=0A+=0A+fi=0A+=0A+fi=0A+= =0A+=0A+=0A+(eval "as=5Ffunc=5Freturn () {=0A+ (exit \$1)=0A+}=0A+as=5Ffun= c=5Fsuccess () {=0A+ as=5Ffunc=5Freturn 0=0A+}=0A+as=5Ffunc=5Ffailure () {= =0A+ as=5Ffunc=5Freturn 1=0A+}=0A+as=5Ffunc=5Fret=5Fsuccess () {=0A+ retu= rn 0=0A+}=0A+as=5Ffunc=5Fret=5Ffailure () {=0A+ return 1=0A+}=0A+=0A+exitc= ode=3D0=0A+if as=5Ffunc=5Fsuccess; then=0A+ :=0A+else=0A+ exitcode=3D1=0A= + echo as=5Ffunc=5Fsuccess failed.=0A+fi=0A+=0A+if as=5Ffunc=5Ffailure; th= en=0A+ exitcode=3D1=0A+ echo as=5Ffunc=5Ffailure succeeded.=0A+fi=0A+=0A+= if as=5Ffunc=5Fret=5Fsuccess; then=0A+ :=0A+else=0A+ exitcode=3D1=0A+ ec= ho as=5Ffunc=5Fret=5Fsuccess failed.=0A+fi=0A+=0A+if as=5Ffunc=5Fret=5Ffail= ure; then=0A+ exitcode=3D1=0A+ echo as=5Ffunc=5Fret=5Ffailure succeeded.= =0A+fi=0A+=0A+if ( set x; as=5Ffunc=5Fret=5Fsuccess y && test x =3D \"\$1\"= ); then=0A+ :=0A+else=0A+ exitcode=3D1=0A+ echo positional parameters w= ere not saved.=0A+fi=0A+=0A+test \$exitcode =3D 0") || {=0A+ echo No shell= found that supports shell functions.=0A+ echo Please tell autoconf@gnu.or= g about your system,=0A+ echo including any error possibly output before t= his=0A+ echo message=0A+}=0A+=0A+=0A+=0A+ as=5Flineno=5F1=3D$LINENO=0A+ = as=5Flineno=5F2=3D$LINENO=0A+ test "x$as=5Flineno=5F1" !=3D "x$as=5Flineno= =5F2" &&=0A+ test "x`expr $as=5Flineno=5F1 + 1`" =3D "x$as=5Flineno=5F2" |= | {=0A+=0A+ # Create $as=5Fme.lineno as a copy of $as=5Fmyself, but with $= LINENO=0A+ # uniformly replaced by the line number. The first 'sed' inser= ts a=0A+ # line-number line after each line using $LINENO; the second 'sed= '=0A+ # does the real work. The second script uses 'N' to pair each=0A+ = # line-number line with the line containing $LINENO, and appends=0A+ # tra= iling '-' during substitution so that $LINENO is not a special=0A+ # case = at line end.=0A+ # (Raja R Harinath suggested sed '=3D', and Paul Eggert w= rote the=0A+ # scripts with optimization help from Paolo Bonzini. Blame L= ee=0A+ # E. McMahon (1931-1989) for sed's syntax. :-)=0A+ sed -n '=0A+ = p=0A+ /[$]LINENO/=3D=0A+ ' <$as=5Fmyself |=0A+ sed '=0A+ s/[$= ]LINENO.*/&-/=0A+ t lineno=0A+ b=0A+ :lineno=0A+ N=0A+ = :loop=0A+ s/[$]LINENO\([^'$as=5Fcr=5Falnum'=5F].*\n\)\(.*\)/\2\1\= 2/=0A+ t loop=0A+ s/-\n.*//=0A+ ' >$as=5Fme.lineno &&=0A+ chm= od +x "$as=5Fme.lineno" ||=0A+ { echo "$as=5Fme: error: cannot create $a= s=5Fme.lineno; rerun with a POSIX shell" >&2=0A+ { (exit 1); exit 1; }; }= =0A+=0A+ # Don't try to exec as it changes $[0], causing all sort of probl= ems=0A+ # (the dirname of $[0] is not the place where we might find the=0A= + # original and so on. Autoconf is especially sensitive to this).=0A+ .= "./$as=5Fme.lineno"=0A+ # Exit status is that of the last command.=0A+ e= xit=0A+}=0A+=0A+=0A+if (as=5Fdir=3D`dirname -- /` && test "X$as=5Fdir" =3D = X/) >/dev/null 2>&1; then=0A+ as=5Fdirname=3Ddirname=0A+else=0A+ as=5Fdir= name=3Dfalse=0A+fi=0A+=0A+ECHO=5FC=3D ECHO=5FN=3D ECHO=5FT=3D=0A+case `echo= -n x` in=0A+-n*)=0A+ case `echo 'x\c'` in=0A+ *c*) ECHO=5FT=3D' ';; # EC= HO=5FT is single tab character.=0A+ *) ECHO=5FC=3D'\c';;=0A+ esac;;=0A+= *)=0A+ ECHO=5FN=3D'-n';;=0A+esac=0A+=0A+if expr a : '\(a\)' >/dev/null 2>&= 1 &&=0A+ test "X`expr 00001 : '.*\(...\)'`" =3D X001; then=0A+ as=5Fexpr= =3Dexpr=0A+else=0A+ as=5Fexpr=3Dfalse=0A+fi=0A+=0A+rm -f conf$$ conf$$.exe= conf$$.file=0A+if test -d conf$$.dir; then=0A+ rm -f conf$$.dir/conf$$.fi= le=0A+else=0A+ rm -f conf$$.dir=0A+ mkdir conf$$.dir=0A+fi=0A+echo >conf$= $.file=0A+if ln -s conf$$.file conf$$ 2>/dev/null; then=0A+ as=5Fln=5Fs=3D= 'ln -s'=0A+ # ... but there are two gotchas:=0A+ # 1) On MSYS, both `ln -= s file dir' and `ln file dir' fail.=0A+ # 2) DJGPP < 2.04 has no symlinks;= `ln -s' creates a wrapper executable.=0A+ # In both cases, we have to def= ault to `cp -p'.=0A+ ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f= conf$$.exe ||=0A+ as=5Fln=5Fs=3D'cp -p'=0A+elif ln conf$$.file conf$$ 2= >/dev/null; then=0A+ as=5Fln=5Fs=3Dln=0A+else=0A+ as=5Fln=5Fs=3D'cp -p'= =0A+fi=0A+rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file=0A+rmd= ir conf$$.dir 2>/dev/null=0A+=0A+if mkdir -p . 2>/dev/null; then=0A+ as=5F= mkdir=5Fp=3D:=0A+else=0A+ test -d ./-p && rmdir ./-p=0A+ as=5Fmkdir=5Fp= =3Dfalse=0A+fi=0A+=0A+if test -x / >/dev/null 2>&1; then=0A+ as=5Ftest=5Fx= =3D'test -x'=0A+else=0A+ if ls -dL / >/dev/null 2>&1; then=0A+ as=5Fls= =5FL=5Foption=3DL=0A+ else=0A+ as=5Fls=5FL=5Foption=3D=0A+ fi=0A+ as= =5Ftest=5Fx=3D'=0A+ eval sh -c '\''=0A+ if test -d "$1"; then=0A+ = test -d "$1/.";=0A+ else=0A+ case $1 in=0A+ -*)set "./$1"= ;;=0A+ esac;=0A+ case `ls -ld'$as=5Fls=5FL=5Foption' "$1" 2>/dev/null` in= =0A+ ???[sx]*):;;*)false;;esac;fi=0A+ '\'' sh=0A+ '=0A+fi=0A+as=5Fexecu= table=5Fp=3D$as=5Ftest=5Fx=0A+=0A+# Sed expression to map a string onto a v= alid CPP name.=0A+as=5Ftr=5Fcpp=3D"eval sed 'y%*$as=5Fcr=5Fletters%P$as=5Fc= r=5FLETTERS%;s%[^=5F$as=5Fcr=5Falnum]%=5F%g'"=0A+=0A+# Sed expression to ma= p a string onto a valid variable name.=0A+as=5Ftr=5Fsh=3D"eval sed 'y%*+%pp= %;s%[^=5F$as=5Fcr=5Falnum]%=5F%g'"=0A+=0A+=0A+=0A+exec 7<&0 &1= =0A+=0A+# Name of the host.=0A+# hostname on some systems (SVR3.2, Linux) r= eturns a bogus exit status,=0A+# so uname gets run too.=0A+ac=5Fhostname=3D= `(hostname || uname -n) 2>/dev/null | sed 1q`=0A+=0A+#=0A+# Initializations= .=0A+#=0A+ac=5Fdefault=5Fprefix=3D/usr/local=0A+ac=5Fclean=5Ffiles=3D=0A+ac= =5Fconfig=5Flibobj=5Fdir=3D.=0A+LIBOBJS=3D=0A+cross=5Fcompiling=3Dno=0A+sub= dirs=3D=0A+MFLAGS=3D=0A+MAKEFLAGS=3D=0A+SHELL=3D${CONFIG=5FSHELL-/bin/sh}= =0A+=0A+# Identity of this package.=0A+PACKAGE=5FNAME=3D=0A+PACKAGE=5FTARNA= ME=3D=0A+PACKAGE=5FVERSION=3D=0A+PACKAGE=5FSTRING=3D=0A+PACKAGE=5FBUGREPORT= =3D=0A+=0A+ac=5Funique=5Ffile=3D"main.c"=0A+# Factoring default headers for= most tests.=0A+ac=5Fincludes=5Fdefault=3D"\=0A+#include =0A+#ifde= f HAVE=5FSYS=5FTYPES=5FH=0A+# include =0A+#endif=0A+#ifdef HAV= E=5FSYS=5FSTAT=5FH=0A+# include =0A+#endif=0A+#ifdef STDC=5FHEA= DERS=0A+# include =0A+# include =0A+#else=0A+# ifdef HA= VE=5FSTDLIB=5FH=0A+# include =0A+# endif=0A+#endif=0A+#ifdef HAV= E=5FSTRING=5FH=0A+# if !defined STDC=5FHEADERS && defined HAVE=5FMEMORY=5FH= =0A+# include =0A+# endif=0A+# include =0A+#endif=0A+#= ifdef HAVE=5FSTRINGS=5FH=0A+# include =0A+#endif=0A+#ifdef HAVE= =5FINTTYPES=5FH=0A+# include =0A+#endif=0A+#ifdef HAVE=5FSTDINT= =5FH=0A+# include =0A+#endif=0A+#ifdef HAVE=5FUNISTD=5FH=0A+# inc= lude =0A+#endif"=0A+=0A+ac=5Fsubst=5Fvars=3D'SHELL=0A+PATH=5FSEPA= RATOR=0A+PACKAGE=5FNAME=0A+PACKAGE=5FTARNAME=0A+PACKAGE=5FVERSION=0A+PACKAG= E=5FSTRING=0A+PACKAGE=5FBUGREPORT=0A+exec=5Fprefix=0A+prefix=0A+program=5Ft= ransform=5Fname=0A+bindir=0A+sbindir=0A+libexecdir=0A+datarootdir=0A+datadi= r=0A+sysconfdir=0A+sharedstatedir=0A+localstatedir=0A+includedir=0A+oldincl= udedir=0A+docdir=0A+infodir=0A+htmldir=0A+dvidir=0A+pdfdir=0A+psdir=0A+libd= ir=0A+localedir=0A+mandir=0A+DEFS=0A+ECHO=5FC=0A+ECHO=5FN=0A+ECHO=5FT=0A+LI= BS=0A+build=5Falias=0A+host=5Falias=0A+target=5Falias=0A+INSTALL=5FPROGRAM= =0A+INSTALL=5FSCRIPT=0A+INSTALL=5FDATA=0A+am=5F=5Fisrc=0A+CYGPATH=5FW=0A+PA= CKAGE=0A+VERSION=0A+ACLOCAL=0A+AUTOCONF=0A+AUTOMAKE=0A+AUTOHEADER=0A+MAKEIN= FO=0A+install=5Fsh=0A+STRIP=0A+INSTALL=5FSTRIP=5FPROGRAM=0A+mkdir=5Fp=0A+AW= K=0A+SET=5FMAKE=0A+am=5F=5Fleading=5Fdot=0A+AMTAR=0A+am=5F=5Ftar=0A+am=5F= =5Funtar=0A+build=0A+build=5Fcpu=0A+build=5Fvendor=0A+build=5Fos=0A+host=0A= +host=5Fcpu=0A+host=5Fvendor=0A+host=5Fos=0A+CC=0A+CFLAGS=0A+LDFLAGS=0A+CPP= FLAGS=0A+ac=5Fct=5FCC=0A+EXEEXT=0A+OBJEXT=0A+DEPDIR=0A+am=5F=5Finclude=0A+a= m=5F=5Fquote=0A+AMDEP=5FTRUE=0A+AMDEP=5FFALSE=0A+AMDEPBACKSLASH=0A+CCDEPMOD= E=0A+am=5F=5FfastdepCC=5FTRUE=0A+am=5F=5FfastdepCC=5FFALSE=0A+CPP=0A+GREP= =0A+EGREP=0A+LIBOBJS=0A+LTLIBOBJS'=0A+ac=5Fsubst=5Ffiles=3D''=0A+ ac= =5Fprecious=5Fvars=3D'build=5Falias=0A+host=5Falias=0A+target=5Falias=0A+CC= =0A+CFLAGS=0A+LDFLAGS=0A+LIBS=0A+CPPFLAGS=0A+CPP'=0A+=0A+=0A+# Initialize s= ome variables set by options.=0A+ac=5Finit=5Fhelp=3D=0A+ac=5Finit=5Fversion= =3Dfalse=0A+# The variables have the same names as the options, with=0A+# d= ashes changed to underlines.=0A+cache=5Ffile=3D/dev/null=0A+exec=5Fprefix= =3DNONE=0A+no=5Fcreate=3D=0A+no=5Frecursion=3D=0A+prefix=3DNONE=0A+program= =5Fprefix=3DNONE=0A+program=5Fsuffix=3DNONE=0A+program=5Ftransform=5Fname= =3Ds,x,x,=0A+silent=3D=0A+site=3D=0A+srcdir=3D=0A+verbose=3D=0A+x=5Finclude= s=3DNONE=0A+x=5Flibraries=3DNONE=0A+=0A+# Installation directory options.= =0A+# These are left unexpanded so users can "make install exec=5Fprefix=3D= /foo"=0A+# and all the variables that are supposed to be based on exec=5Fpr= efix=0A+# by default will actually change.=0A+# Use braces instead of paren= s because sh, perl, etc. also accept them.=0A+# (The list follows the same = order as the GNU Coding Standards.)=0A+bindir=3D'${exec=5Fprefix}/bin'=0A+s= bindir=3D'${exec=5Fprefix}/sbin'=0A+libexecdir=3D'${exec=5Fprefix}/libexec'= =0A+datarootdir=3D'${prefix}/share'=0A+datadir=3D'${datarootdir}'=0A+syscon= fdir=3D'${prefix}/etc'=0A+sharedstatedir=3D'${prefix}/com'=0A+localstatedir= =3D'${prefix}/var'=0A+includedir=3D'${prefix}/include'=0A+oldincludedir=3D'= /usr/include'=0A+docdir=3D'${datarootdir}/doc/${PACKAGE}'=0A+infodir=3D'${d= atarootdir}/info'=0A+htmldir=3D'${docdir}'=0A+dvidir=3D'${docdir}'=0A+pdfdi= r=3D'${docdir}'=0A+psdir=3D'${docdir}'=0A+libdir=3D'${exec=5Fprefix}/lib'= =0A+localedir=3D'${datarootdir}/locale'=0A+mandir=3D'${datarootdir}/man'=0A= +=0A+ac=5Fprev=3D=0A+ac=5Fdashdash=3D=0A+for ac=5Foption=0A+do=0A+ # If th= e previous option needs an argument, assign it.=0A+ if test -n "$ac=5Fprev= "; then=0A+ eval $ac=5Fprev=3D\$ac=5Foption=0A+ ac=5Fprev=3D=0A+ c= ontinue=0A+ fi=0A+=0A+ case $ac=5Foption in=0A+ *=3D*) ac=5Foptarg=3D`ex= pr "X$ac=5Foption" : '[^=3D]*=3D\(.*\)'` ;;=0A+ *) ac=5Foptarg=3Dyes ;;=0A= + esac=0A+=0A+ # Accept the important Cygnus configure options, so we can= diagnose typos.=0A+=0A+ case $ac=5Fdashdash$ac=5Foption in=0A+ --)=0A+ = ac=5Fdashdash=3Dyes ;;=0A+=0A+ -bindir | --bindir | --bindi | --bind | -= -bin | --bi)=0A+ ac=5Fprev=3Dbindir ;;=0A+ -bindir=3D* | --bindir=3D* |= --bindi=3D* | --bind=3D* | --bin=3D* | --bi=3D*)=0A+ bindir=3D$ac=5Fopt= arg ;;=0A+=0A+ -build | --build | --buil | --bui | --bu)=0A+ ac=5Fprev= =3Dbuild=5Falias ;;=0A+ -build=3D* | --build=3D* | --buil=3D* | --bui=3D* = | --bu=3D*)=0A+ build=5Falias=3D$ac=5Foptarg ;;=0A+=0A+ -cache-file | -= -cache-file | --cache-fil | --cache-fi \=0A+ | --cache-f | --cache- | --ca= che | --cach | --cac | --ca | --c)=0A+ ac=5Fprev=3Dcache=5Ffile ;;=0A+ = -cache-file=3D* | --cache-file=3D* | --cache-fil=3D* | --cache-fi=3D* \=0A+= | --cache-f=3D* | --cache-=3D* | --cache=3D* | --cach=3D* | --cac=3D* | -= -ca=3D* | --c=3D*)=0A+ cache=5Ffile=3D$ac=5Foptarg ;;=0A+=0A+ --config-= cache | -C)=0A+ cache=5Ffile=3Dconfig.cache ;;=0A+=0A+ -datadir | --dat= adir | --datadi | --datad)=0A+ ac=5Fprev=3Ddatadir ;;=0A+ -datadir=3D* = | --datadir=3D* | --datadi=3D* | --datad=3D*)=0A+ datadir=3D$ac=5Foptarg= ;;=0A+=0A+ -datarootdir | --datarootdir | --datarootdi | --datarootd | --= dataroot \=0A+ | --dataroo | --dataro | --datar)=0A+ ac=5Fprev=3Ddataro= otdir ;;=0A+ -datarootdir=3D* | --datarootdir=3D* | --datarootdi=3D* | --d= atarootd=3D* \=0A+ | --dataroot=3D* | --dataroo=3D* | --dataro=3D* | --dat= ar=3D*)=0A+ datarootdir=3D$ac=5Foptarg ;;=0A+=0A+ -disable-* | --disabl= e-*)=0A+ ac=5Ffeature=3D`expr "x$ac=5Foption" : 'x-*disable-\(.*\)'`=0A+= # Reject names that are not valid shell variable names.=0A+ expr "x$= ac=5Ffeature" : ".*[^-.=5F$as=5Fcr=5Falnum]" >/dev/null &&=0A+ { echo = "$as=5Fme: error: invalid feature name: $ac=5Ffeature" >&2=0A+ { (exit 1)= ; exit 1; }; }=0A+ ac=5Ffeature=3D`echo $ac=5Ffeature | sed 's/[-.]/=5F/= g'`=0A+ eval enable=5F$ac=5Ffeature=3Dno ;;=0A+=0A+ -docdir | --docdir = | --docdi | --doc | --do)=0A+ ac=5Fprev=3Ddocdir ;;=0A+ -docdir=3D* | -= -docdir=3D* | --docdi=3D* | --doc=3D* | --do=3D*)=0A+ docdir=3D$ac=5Fopt= arg ;;=0A+=0A+ -dvidir | --dvidir | --dvidi | --dvid | --dvi | --dv)=0A+ = ac=5Fprev=3Ddvidir ;;=0A+ -dvidir=3D* | --dvidir=3D* | --dvidi=3D* | --d= vid=3D* | --dvi=3D* | --dv=3D*)=0A+ dvidir=3D$ac=5Foptarg ;;=0A+=0A+ -e= nable-* | --enable-*)=0A+ ac=5Ffeature=3D`expr "x$ac=5Foption" : 'x-*ena= ble-\([^=3D]*\)'`=0A+ # Reject names that are not valid shell variable n= ames.=0A+ expr "x$ac=5Ffeature" : ".*[^-.=5F$as=5Fcr=5Falnum]" >/dev/nul= l &&=0A+ { echo "$as=5Fme: error: invalid feature name: $ac=5Ffeature"= >&2=0A+ { (exit 1); exit 1; }; }=0A+ ac=5Ffeature=3D`echo $ac=5Ffeatu= re | sed 's/[-.]/=5F/g'`=0A+ eval enable=5F$ac=5Ffeature=3D\$ac=5Foptarg= ;;=0A+=0A+ -exec-prefix | --exec=5Fprefix | --exec-prefix | --exec-prefi = \=0A+ | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \=0A+ |= --exec | --exe | --ex)=0A+ ac=5Fprev=3Dexec=5Fprefix ;;=0A+ -exec-pref= ix=3D* | --exec=5Fprefix=3D* | --exec-prefix=3D* | --exec-prefi=3D* \=0A+ = | --exec-pref=3D* | --exec-pre=3D* | --exec-pr=3D* | --exec-p=3D* | --exec-= =3D* \=0A+ | --exec=3D* | --exe=3D* | --ex=3D*)=0A+ exec=5Fprefix=3D$ac= =5Foptarg ;;=0A+=0A+ -gas | --gas | --ga | --g)=0A+ # Obsolete; use --w= ith-gas.=0A+ with=5Fgas=3Dyes ;;=0A+=0A+ -help | --help | --hel | --he = | -h)=0A+ ac=5Finit=5Fhelp=3Dlong ;;=0A+ -help=3Dr* | --help=3Dr* | --h= el=3Dr* | --he=3Dr* | -hr*)=0A+ ac=5Finit=5Fhelp=3Drecursive ;;=0A+ -he= lp=3Ds* | --help=3Ds* | --hel=3Ds* | --he=3Ds* | -hs*)=0A+ ac=5Finit=5Fh= elp=3Dshort ;;=0A+=0A+ -host | --host | --hos | --ho)=0A+ ac=5Fprev=3Dh= ost=5Falias ;;=0A+ -host=3D* | --host=3D* | --hos=3D* | --ho=3D*)=0A+ h= ost=5Falias=3D$ac=5Foptarg ;;=0A+=0A+ -htmldir | --htmldir | --htmldi | --= htmld | --html | --htm | --ht)=0A+ ac=5Fprev=3Dhtmldir ;;=0A+ -htmldir= =3D* | --htmldir=3D* | --htmldi=3D* | --htmld=3D* | --html=3D* | --htm=3D* = \=0A+ | --ht=3D*)=0A+ htmldir=3D$ac=5Foptarg ;;=0A+=0A+ -includedir | = --includedir | --includedi | --included | --include \=0A+ | --includ | --i= nclu | --incl | --inc)=0A+ ac=5Fprev=3Dincludedir ;;=0A+ -includedir=3D= * | --includedir=3D* | --includedi=3D* | --included=3D* | --include=3D* \= =0A+ | --includ=3D* | --inclu=3D* | --incl=3D* | --inc=3D*)=0A+ include= dir=3D$ac=5Foptarg ;;=0A+=0A+ -infodir | --infodir | --infodi | --infod | = --info | --inf)=0A+ ac=5Fprev=3Dinfodir ;;=0A+ -infodir=3D* | --infodir= =3D* | --infodi=3D* | --infod=3D* | --info=3D* | --inf=3D*)=0A+ infodir= =3D$ac=5Foptarg ;;=0A+=0A+ -libdir | --libdir | --libdi | --libd)=0A+ a= c=5Fprev=3Dlibdir ;;=0A+ -libdir=3D* | --libdir=3D* | --libdi=3D* | --libd= =3D*)=0A+ libdir=3D$ac=5Foptarg ;;=0A+=0A+ -libexecdir | --libexecdir |= --libexecdi | --libexecd | --libexec \=0A+ | --libexe | --libex | --libe)= =0A+ ac=5Fprev=3Dlibexecdir ;;=0A+ -libexecdir=3D* | --libexecdir=3D* |= --libexecdi=3D* | --libexecd=3D* | --libexec=3D* \=0A+ | --libexe=3D* | -= -libex=3D* | --libe=3D*)=0A+ libexecdir=3D$ac=5Foptarg ;;=0A+=0A+ -loca= ledir | --localedir | --localedi | --localed | --locale)=0A+ ac=5Fprev= =3Dlocaledir ;;=0A+ -localedir=3D* | --localedir=3D* | --localedi=3D* | --= localed=3D* | --locale=3D*)=0A+ localedir=3D$ac=5Foptarg ;;=0A+=0A+ -lo= calstatedir | --localstatedir | --localstatedi | --localstated \=0A+ | --l= ocalstate | --localstat | --localsta | --localst | --locals)=0A+ ac=5Fpr= ev=3Dlocalstatedir ;;=0A+ -localstatedir=3D* | --localstatedir=3D* | --loc= alstatedi=3D* | --localstated=3D* \=0A+ | --localstate=3D* | --localstat= =3D* | --localsta=3D* | --localst=3D* | --locals=3D*)=0A+ localstatedir= =3D$ac=5Foptarg ;;=0A+=0A+ -mandir | --mandir | --mandi | --mand | --man |= --ma | --m)=0A+ ac=5Fprev=3Dmandir ;;=0A+ -mandir=3D* | --mandir=3D* |= --mandi=3D* | --mand=3D* | --man=3D* | --ma=3D* | --m=3D*)=0A+ mandir= =3D$ac=5Foptarg ;;=0A+=0A+ -nfp | --nfp | --nf)=0A+ # Obsolete; use --w= ithout-fp.=0A+ with=5Ffp=3Dno ;;=0A+=0A+ -no-create | --no-create | --n= o-creat | --no-crea | --no-cre \=0A+ | --no-cr | --no-c | -n)=0A+ no=5F= create=3Dyes ;;=0A+=0A+ -no-recursion | --no-recursion | --no-recursio | -= -no-recursi \=0A+ | --no-recurs | --no-recur | --no-recu | --no-rec | --no= -re | --no-r)=0A+ no=5Frecursion=3Dyes ;;=0A+=0A+ -oldincludedir | --ol= dincludedir | --oldincludedi | --oldincluded \=0A+ | --oldinclude | --oldi= nclud | --oldinclu | --oldincl | --oldinc \=0A+ | --oldin | --oldi | --old= | --ol | --o)=0A+ ac=5Fprev=3Doldincludedir ;;=0A+ -oldincludedir=3D* = | --oldincludedir=3D* | --oldincludedi=3D* | --oldincluded=3D* \=0A+ | --o= ldinclude=3D* | --oldinclud=3D* | --oldinclu=3D* | --oldincl=3D* | --oldinc= =3D* \=0A+ | --oldin=3D* | --oldi=3D* | --old=3D* | --ol=3D* | --o=3D*)=0A= + oldincludedir=3D$ac=5Foptarg ;;=0A+=0A+ -prefix | --prefix | --prefi = | --pref | --pre | --pr | --p)=0A+ ac=5Fprev=3Dprefix ;;=0A+ -prefix=3D= * | --prefix=3D* | --prefi=3D* | --pref=3D* | --pre=3D* | --pr=3D* | --p=3D= *)=0A+ prefix=3D$ac=5Foptarg ;;=0A+=0A+ -program-prefix | --program-pre= fix | --program-prefi | --program-pref \=0A+ | --program-pre | --program-p= r | --program-p)=0A+ ac=5Fprev=3Dprogram=5Fprefix ;;=0A+ -program-prefi= x=3D* | --program-prefix=3D* | --program-prefi=3D* \=0A+ | --program-pref= =3D* | --program-pre=3D* | --program-pr=3D* | --program-p=3D*)=0A+ progr= am=5Fprefix=3D$ac=5Foptarg ;;=0A+=0A+ -program-suffix | --program-suffix |= --program-suffi | --program-suff \=0A+ | --program-suf | --program-su | -= -program-s)=0A+ ac=5Fprev=3Dprogram=5Fsuffix ;;=0A+ -program-suffix=3D*= | --program-suffix=3D* | --program-suffi=3D* \=0A+ | --program-suff=3D* |= --program-suf=3D* | --program-su=3D* | --program-s=3D*)=0A+ program=5Fs= uffix=3D$ac=5Foptarg ;;=0A+=0A+ -program-transform-name | --program-transf= orm-name \=0A+ | --program-transform-nam | --program-transform-na \=0A+ |= --program-transform-n | --program-transform- \=0A+ | --program-transform = | --program-transfor \=0A+ | --program-transfo | --program-transf \=0A+ |= --program-trans | --program-tran \=0A+ | --progr-tra | --program-tr | --p= rogram-t)=0A+ ac=5Fprev=3Dprogram=5Ftransform=5Fname ;;=0A+ -program-tr= ansform-name=3D* | --program-transform-name=3D* \=0A+ | --program-transfor= m-nam=3D* | --program-transform-na=3D* \=0A+ | --program-transform-n=3D* |= --program-transform-=3D* \=0A+ | --program-transform=3D* | --program-tran= sfor=3D* \=0A+ | --program-transfo=3D* | --program-transf=3D* \=0A+ | --p= rogram-trans=3D* | --program-tran=3D* \=0A+ | --progr-tra=3D* | --program-= tr=3D* | --program-t=3D*)=0A+ program=5Ftransform=5Fname=3D$ac=5Foptarg = ;;=0A+=0A+ -pdfdir | --pdfdir | --pdfdi | --pdfd | --pdf | --pd)=0A+ ac= =5Fprev=3Dpdfdir ;;=0A+ -pdfdir=3D* | --pdfdir=3D* | --pdfdi=3D* | --pdfd= =3D* | --pdf=3D* | --pd=3D*)=0A+ pdfdir=3D$ac=5Foptarg ;;=0A+=0A+ -psdi= r | --psdir | --psdi | --psd | --ps)=0A+ ac=5Fprev=3Dpsdir ;;=0A+ -psdi= r=3D* | --psdir=3D* | --psdi=3D* | --psd=3D* | --ps=3D*)=0A+ psdir=3D$ac= =5Foptarg ;;=0A+=0A+ -q | -quiet | --quiet | --quie | --qui | --qu | --q \= =0A+ | -silent | --silent | --silen | --sile | --sil)=0A+ silent=3Dyes = ;;=0A+=0A+ -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --= sb)=0A+ ac=5Fprev=3Dsbindir ;;=0A+ -sbindir=3D* | --sbindir=3D* | --sbi= ndi=3D* | --sbind=3D* | --sbin=3D* \=0A+ | --sbi=3D* | --sb=3D*)=0A+ sb= indir=3D$ac=5Foptarg ;;=0A+=0A+ -sharedstatedir | --sharedstatedir | --sha= redstatedi \=0A+ | --sharedstated | --sharedstate | --sharedstat | --share= dsta \=0A+ | --sharedst | --shareds | --shared | --share | --shar \=0A+ |= --sha | --sh)=0A+ ac=5Fprev=3Dsharedstatedir ;;=0A+ -sharedstatedir=3D= * | --sharedstatedir=3D* | --sharedstatedi=3D* \=0A+ | --sharedstated=3D* = | --sharedstate=3D* | --sharedstat=3D* | --sharedsta=3D* \=0A+ | --shareds= t=3D* | --shareds=3D* | --shared=3D* | --share=3D* | --shar=3D* \=0A+ | --= sha=3D* | --sh=3D*)=0A+ sharedstatedir=3D$ac=5Foptarg ;;=0A+=0A+ -site = | --site | --sit)=0A+ ac=5Fprev=3Dsite ;;=0A+ -site=3D* | --site=3D* | = --sit=3D*)=0A+ site=3D$ac=5Foptarg ;;=0A+=0A+ -srcdir | --srcdir | --sr= cdi | --srcd | --src | --sr)=0A+ ac=5Fprev=3Dsrcdir ;;=0A+ -srcdir=3D* = | --srcdir=3D* | --srcdi=3D* | --srcd=3D* | --src=3D* | --sr=3D*)=0A+ sr= cdir=3D$ac=5Foptarg ;;=0A+=0A+ -sysconfdir | --sysconfdir | --sysconfdi | = --sysconfd | --sysconf \=0A+ | --syscon | --sysco | --sysc | --sys | --sy)= =0A+ ac=5Fprev=3Dsysconfdir ;;=0A+ -sysconfdir=3D* | --sysconfdir=3D* |= --sysconfdi=3D* | --sysconfd=3D* | --sysconf=3D* \=0A+ | --syscon=3D* | -= -sysco=3D* | --sysc=3D* | --sys=3D* | --sy=3D*)=0A+ sysconfdir=3D$ac=5Fo= ptarg ;;=0A+=0A+ -target | --target | --targe | --targ | --tar | --ta | --= t)=0A+ ac=5Fprev=3Dtarget=5Falias ;;=0A+ -target=3D* | --target=3D* | -= -targe=3D* | --targ=3D* | --tar=3D* | --ta=3D* | --t=3D*)=0A+ target=5Fa= lias=3D$ac=5Foptarg ;;=0A+=0A+ -v | -verbose | --verbose | --verbos | --ve= rbo | --verb)=0A+ verbose=3Dyes ;;=0A+=0A+ -version | --version | --ver= sio | --versi | --vers | -V)=0A+ ac=5Finit=5Fversion=3D: ;;=0A+=0A+ -wi= th-* | --with-*)=0A+ ac=5Fpackage=3D`expr "x$ac=5Foption" : 'x-*with-\([= ^=3D]*\)'`=0A+ # Reject names that are not valid shell variable names.= =0A+ expr "x$ac=5Fpackage" : ".*[^-.=5F$as=5Fcr=5Falnum]" >/dev/null &&= =0A+ { echo "$as=5Fme: error: invalid package name: $ac=5Fpackage" >&2= =0A+ { (exit 1); exit 1; }; }=0A+ ac=5Fpackage=3D`echo $ac=5Fpackage |= sed 's/[-.]/=5F/g'`=0A+ eval with=5F$ac=5Fpackage=3D\$ac=5Foptarg ;;=0A= +=0A+ -without-* | --without-*)=0A+ ac=5Fpackage=3D`expr "x$ac=5Foption= " : 'x-*without-\(.*\)'`=0A+ # Reject names that are not valid shell var= iable names.=0A+ expr "x$ac=5Fpackage" : ".*[^-.=5F$as=5Fcr=5Falnum]" >/= dev/null &&=0A+ { echo "$as=5Fme: error: invalid package name: $ac=5Fp= ackage" >&2=0A+ { (exit 1); exit 1; }; }=0A+ ac=5Fpackage=3D`echo $ac= =5Fpackage | sed 's/[-.]/=5F/g'`=0A+ eval with=5F$ac=5Fpackage=3Dno ;;= =0A+=0A+ --x)=0A+ # Obsolete; use --with-x.=0A+ with=5Fx=3Dyes ;;=0A= +=0A+ -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \= =0A+ | --x-incl | --x-inc | --x-in | --x-i)=0A+ ac=5Fprev=3Dx=5Finclude= s ;;=0A+ -x-includes=3D* | --x-includes=3D* | --x-include=3D* | --x-includ= =3D* | --x-inclu=3D* \=0A+ | --x-incl=3D* | --x-inc=3D* | --x-in=3D* | --x= -i=3D*)=0A+ x=5Fincludes=3D$ac=5Foptarg ;;=0A+=0A+ -x-libraries | --x-l= ibraries | --x-librarie | --x-librari \=0A+ | --x-librar | --x-libra | --x= -libr | --x-lib | --x-li | --x-l)=0A+ ac=5Fprev=3Dx=5Flibraries ;;=0A+ = -x-libraries=3D* | --x-libraries=3D* | --x-librarie=3D* | --x-librari=3D* \= =0A+ | --x-librar=3D* | --x-libra=3D* | --x-libr=3D* | --x-lib=3D* | --x-l= i=3D* | --x-l=3D*)=0A+ x=5Flibraries=3D$ac=5Foptarg ;;=0A+=0A+ -*) { ec= ho "$as=5Fme: error: unrecognized option: $ac=5Foption=0A+Try \`$0 --help' = for more information." >&2=0A+ { (exit 1); exit 1; }; }=0A+ ;;=0A+=0A+= *=3D*)=0A+ ac=5Fenvvar=3D`expr "x$ac=5Foption" : 'x\([^=3D]*\)=3D'`=0A= + # Reject names that are not valid shell variable names.=0A+ expr "x= $ac=5Fenvvar" : ".*[^=5F$as=5Fcr=5Falnum]" >/dev/null &&=0A+ { echo "$= as=5Fme: error: invalid variable name: $ac=5Fenvvar" >&2=0A+ { (exit 1); = exit 1; }; }=0A+ eval $ac=5Fenvvar=3D\$ac=5Foptarg=0A+ export $ac=5Fe= nvvar ;;=0A+=0A+ *)=0A+ # FIXME: should be removed in autoconf 3.0.=0A+= echo "$as=5Fme: WARNING: you should use --build, --host, --target" >&2= =0A+ expr "x$ac=5Foption" : ".*[^-.=5F$as=5Fcr=5Falnum]" >/dev/null &&= =0A+ echo "$as=5Fme: WARNING: invalid host type: $ac=5Foption" >&2=0A+= : ${build=5Falias=3D$ac=5Foption} ${host=5Falias=3D$ac=5Foption} ${targ= et=5Falias=3D$ac=5Foption}=0A+ ;;=0A+=0A+ esac=0A+done=0A+=0A+if test -= n "$ac=5Fprev"; then=0A+ ac=5Foption=3D--`echo $ac=5Fprev | sed 's/=5F/-/g= '`=0A+ { echo "$as=5Fme: error: missing argument to $ac=5Foption" >&2=0A+ = { (exit 1); exit 1; }; }=0A+fi=0A+=0A+# Be sure to have absolute director= y names.=0A+for ac=5Fvar in exec=5Fprefix prefix bindir sbindir libexecdir = datarootdir \=0A+ datadir sysconfdir sharedstatedir localstatedir included= ir \=0A+ oldincludedir docdir infodir htmldir dvidir pdfdir psdir \=0A+ l= ibdir localedir mandir=0A+do=0A+ eval ac=5Fval=3D\$$ac=5Fvar=0A+ case $ac= =5Fval in=0A+ [\\/$]* | ?:[\\/]* ) continue;;=0A+ NONE | '' ) case $= ac=5Fvar in *prefix ) continue;; esac;;=0A+ esac=0A+ { echo "$as=5Fme: er= ror: expected an absolute directory name for --$ac=5Fvar: $ac=5Fval" >&2=0A= + { (exit 1); exit 1; }; }=0A+done=0A+=0A+# There might be people who dep= end on the old broken behavior: `$host'=0A+# used to hold the argument of -= -host etc.=0A+# FIXME: To remove some day.=0A+build=3D$build=5Falias=0A+hos= t=3D$host=5Falias=0A+target=3D$target=5Falias=0A+=0A+# FIXME: To remove som= e day.=0A+if test "x$host=5Falias" !=3D x; then=0A+ if test "x$build=5Fali= as" =3D x; then=0A+ cross=5Fcompiling=3Dmaybe=0A+ echo "$as=5Fme: WAR= NING: If you wanted to set the --build type, don't use --host.=0A+ If a = cross compiler is detected then cross compile mode will be used." >&2=0A+ = elif test "x$build=5Falias" !=3D "x$host=5Falias"; then=0A+ cross=5Fcomp= iling=3Dyes=0A+ fi=0A+fi=0A+=0A+ac=5Ftool=5Fprefix=3D=0A+test -n "$host=5F= alias" && ac=5Ftool=5Fprefix=3D$host=5Falias-=0A+=0A+test "$silent" =3D yes= && exec 6>/dev/null=0A+=0A+=0A+ac=5Fpwd=3D`pwd` && test -n "$ac=5Fpwd" &&= =0A+ac=5Fls=5Fdi=3D`ls -di .` &&=0A+ac=5Fpwd=5Fls=5Fdi=3D`cd "$ac=5Fpwd" &&= ls -di .` ||=0A+ { echo "$as=5Fme: error: Working directory cannot be det= ermined" >&2=0A+ { (exit 1); exit 1; }; }=0A+test "X$ac=5Fls=5Fdi" =3D "X= $ac=5Fpwd=5Fls=5Fdi" ||=0A+ { echo "$as=5Fme: error: pwd does not report n= ame of working directory" >&2=0A+ { (exit 1); exit 1; }; }=0A+=0A+=0A+# F= ind the source files, if location was not specified.=0A+if test -z "$srcdir= "; then=0A+ ac=5Fsrcdir=5Fdefaulted=3Dyes=0A+ # Try the directory contain= ing this script, then the parent directory.=0A+ ac=5Fconfdir=3D`$as=5Fdirn= ame -- "$0" ||=0A+$as=5Fexpr X"$0" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \=0A+ = X"$0" : 'X\(//\)[^/]' \| \=0A+ X"$0" : 'X\(//\)$' \| \=0A+ X"$0" : 'X\(/= \)' \| . 2>/dev/null ||=0A+echo X"$0" |=0A+ sed '/^X\(.*[^/]\)\/\/*[^/][= ^/]*\/*$/{=0A+ s//\1/=0A+ q=0A+ }=0A+ /^X\(\/\/\)[^/].*/{=0A+ = s//\1/=0A+ q=0A+ }=0A+ /^X\(\/\/\)$/{=0A+ s//\1/=0A+ q= =0A+ }=0A+ /^X\(\/\).*/{=0A+ s//\1/=0A+ q=0A+ }=0A+ s/.*/./= ; q'`=0A+ srcdir=3D$ac=5Fconfdir=0A+ if test ! -r "$srcdir/$ac=5Funique= =5Ffile"; then=0A+ srcdir=3D..=0A+ fi=0A+else=0A+ ac=5Fsrcdir=5Fdefaul= ted=3Dno=0A+fi=0A+if test ! -r "$srcdir/$ac=5Funique=5Ffile"; then=0A+ tes= t "$ac=5Fsrcdir=5Fdefaulted" =3D yes && srcdir=3D"$ac=5Fconfdir or .."=0A+ = { echo "$as=5Fme: error: cannot find sources ($ac=5Funique=5Ffile) in $src= dir" >&2=0A+ { (exit 1); exit 1; }; }=0A+fi=0A+ac=5Fmsg=3D"sources are in= $srcdir, but \`cd $srcdir' does not work"=0A+ac=5Fabs=5Fconfdir=3D`(=0A+ c= d "$srcdir" && test -r "./$ac=5Funique=5Ffile" || { echo "$as=5Fme: error: = $ac=5Fmsg" >&2=0A+ { (exit 1); exit 1; }; }=0A+ pwd)`=0A+# When building = in place, set srcdir=3D.=0A+if test "$ac=5Fabs=5Fconfdir" =3D "$ac=5Fpwd"; = then=0A+ srcdir=3D.=0A+fi=0A+# Remove unnecessary trailing slashes from sr= cdir.=0A+# Double slashes in file names in object file debugging info=0A+# = mess up M-x gdb in Emacs.=0A+case $srcdir in=0A+*/) srcdir=3D`expr "X$srcdi= r" : 'X\(.*[^/]\)' \| "X$srcdir" : 'X\(.*\)'`;;=0A+esac=0A+for ac=5Fvar in = $ac=5Fprecious=5Fvars; do=0A+ eval ac=5Fenv=5F${ac=5Fvar}=5Fset=3D\${${ac= =5Fvar}+set}=0A+ eval ac=5Fenv=5F${ac=5Fvar}=5Fvalue=3D\$${ac=5Fvar}=0A+ = eval ac=5Fcv=5Fenv=5F${ac=5Fvar}=5Fset=3D\${${ac=5Fvar}+set}=0A+ eval ac= =5Fcv=5Fenv=5F${ac=5Fvar}=5Fvalue=3D\$${ac=5Fvar}=0A+done=0A+=0A+#=0A+# Rep= ort the --help message.=0A+#=0A+if test "$ac=5Finit=5Fhelp" =3D "long"; the= n=0A+ # Omit some internal or obsolete options to make the list less impos= ing.=0A+ # This message is too long to be a string in the A/UX 3.1 sh.=0A+= cat <<=5FACEOF=0A+\`configure' configures this package to adapt to many k= inds of systems.=0A+=0A+Usage: $0 [OPTION]... [VAR=3DVALUE]...=0A+=0A+To as= sign environment variables (e.g., CC, CFLAGS...), specify them as=0A+VAR=3D= VALUE. See below for descriptions of some of the useful variables.=0A+=0A+= Defaults for the options are specified in brackets.=0A+=0A+Configuration:= =0A+ -h, --help display this help and exit=0A+ --help=3D= short display options specific to this package=0A+ --help=3Drec= ursive display the short help of all the included packages=0A+ -V, --ve= rsion display version information and exit=0A+ -q, --quiet, --si= lent do not print \`checking...' messages=0A+ --cache-file=3DFILE = cache test results in FILE [disabled]=0A+ -C, --config-cache alias fo= r \`--cache-file=3Dconfig.cache'=0A+ -n, --no-create do not create= output files=0A+ --srcdir=3DDIR find the sources in DIR [confi= gure dir or \`..']=0A+=0A+Installation directories:=0A+ --prefix=3DPREFIX = install architecture-independent files in PREFIX=0A+ [$ac=5Fdef= ault=5Fprefix]=0A+ --exec-prefix=3DEPREFIX install architecture-dependen= t files in EPREFIX=0A+ [PREFIX]=0A+=0A+By default, \`make install' will= install all the files in=0A+\`$ac=5Fdefault=5Fprefix/bin', \`$ac=5Fdefault= =5Fprefix/lib' etc. You can specify=0A+an installation prefix other than \= `$ac=5Fdefault=5Fprefix' using \`--prefix',=0A+for instance \`--prefix=3D\$= HOME'.=0A+=0A+For better control, use the options below.=0A+=0A+Fine tuning= of the installation directories:=0A+ --bindir=3DDIR user execut= ables [EPREFIX/bin]=0A+ --sbindir=3DDIR system admin executables = [EPREFIX/sbin]=0A+ --libexecdir=3DDIR program executables [EPREFIX/l= ibexec]=0A+ --sysconfdir=3DDIR read-only single-machine data [PREFIX= /etc]=0A+ --sharedstatedir=3DDIR modifiable architecture-independent dat= a [PREFIX/com]=0A+ --localstatedir=3DDIR modifiable single-machine data= [PREFIX/var]=0A+ --libdir=3DDIR object code libraries [EPREFIX/= lib]=0A+ --includedir=3DDIR C header files [PREFIX/include]=0A+ --o= ldincludedir=3DDIR C header files for non-gcc [/usr/include]=0A+ --data= rootdir=3DDIR read-only arch.-independent data root [PREFIX/share]=0A+= --datadir=3DDIR read-only architecture-independent data [DATAROO= TDIR]=0A+ --infodir=3DDIR info documentation [DATAROOTDIR/info]= =0A+ --localedir=3DDIR locale-dependent data [DATAROOTDIR/locale]= =0A+ --mandir=3DDIR man documentation [DATAROOTDIR/man]=0A+ --d= ocdir=3DDIR documentation root [DATAROOTDIR/doc/PACKAGE]=0A+ --h= tmldir=3DDIR html documentation [DOCDIR]=0A+ --dvidir=3DDIR = dvi documentation [DOCDIR]=0A+ --pdfdir=3DDIR pdf documenta= tion [DOCDIR]=0A+ --psdir=3DDIR ps documentation [DOCDIR]=0A+= =5FACEOF=0A+=0A+ cat <<\=5FACEOF=0A+=0A+Program names:=0A+ --program-pref= ix=3DPREFIX prepend PREFIX to installed program names=0A+ --pro= gram-suffix=3DSUFFIX append SUFFIX to installed program names=0A= + --program-transform-name=3DPROGRAM run sed PROGRAM on installed progra= m names=0A+=0A+System types:=0A+ --build=3DBUILD configure for buildin= g on BUILD [guessed]=0A+ --host=3DHOST cross-compile to build progra= ms to run on HOST [BUILD]=0A+=5FACEOF=0A+fi=0A+=0A+if test -n "$ac=5Finit= =5Fhelp"; then=0A+=0A+ cat <<\=5FACEOF=0A+=0A+Optional Features:=0A+ --di= sable-FEATURE do not include FEATURE (same as --enable-FEATURE=3Dno)= =0A+ --enable-FEATURE[=3DARG] include FEATURE [ARG=3Dyes]=0A+ --disable-= dependency-tracking speeds up one-time build=0A+ --enable-dependency-trac= king do not reject slow dependency extractors=0A+=0A+Some influential env= ironment variables:=0A+ CC C compiler command=0A+ CFLAGS C = compiler flags=0A+ LDFLAGS linker flags, e.g. -L if you have = libraries in a=0A+ nonstandard directory =0A+ LIBS = libraries to pass to the linker, e.g. -l=0A+ CPPFLAGS C/= C++/Objective C preprocessor flags, e.g. -I if=0A+ = you have headers in a nonstandard directory =0A+ CPP = C preprocessor=0A+=0A+Use these variables to override the choices made by= `configure' or to help=0A+it to find libraries and programs with nonstanda= rd names/locations.=0A+=0A+=5FACEOF=0A+ac=5Fstatus=3D$?=0A+fi=0A+=0A+if tes= t "$ac=5Finit=5Fhelp" =3D "recursive"; then=0A+ # If there are subdirs, re= port their specific --help.=0A+ for ac=5Fdir in : $ac=5Fsubdirs=5Fall; do = test "x$ac=5Fdir" =3D x: && continue=0A+ test -d "$ac=5Fdir" || continue= =0A+ ac=5Fbuilddir=3D.=0A+=0A+case "$ac=5Fdir" in=0A+.) ac=5Fdir=5Fsuffi= x=3D ac=5Ftop=5Fbuilddir=5Fsub=3D. ac=5Ftop=5Fbuild=5Fprefix=3D ;;=0A+*)=0A= + ac=5Fdir=5Fsuffix=3D/`echo "$ac=5Fdir" | sed 's,^\.[\\/],,'`=0A+ # A ".= ." for each directory in $ac=5Fdir=5Fsuffix.=0A+ ac=5Ftop=5Fbuilddir=5Fsub= =3D`echo "$ac=5Fdir=5Fsuffix" | sed 's,/[^\\/]*,/..,g;s,/,,'`=0A+ case $ac= =5Ftop=5Fbuilddir=5Fsub in=0A+ "") ac=5Ftop=5Fbuilddir=5Fsub=3D. ac=5Ftop= =5Fbuild=5Fprefix=3D ;;=0A+ *) ac=5Ftop=5Fbuild=5Fprefix=3D$ac=5Ftop=5Fbu= ilddir=5Fsub/ ;;=0A+ esac ;;=0A+esac=0A+ac=5Fabs=5Ftop=5Fbuilddir=3D$ac=5F= pwd=0A+ac=5Fabs=5Fbuilddir=3D$ac=5Fpwd$ac=5Fdir=5Fsuffix=0A+# for backward = compatibility:=0A+ac=5Ftop=5Fbuilddir=3D$ac=5Ftop=5Fbuild=5Fprefix=0A+=0A+c= ase $srcdir in=0A+ .) # We are building in place.=0A+ ac=5Fsrcdir=3D.= =0A+ ac=5Ftop=5Fsrcdir=3D$ac=5Ftop=5Fbuilddir=5Fsub=0A+ ac=5Fabs=5Fto= p=5Fsrcdir=3D$ac=5Fpwd ;;=0A+ [\\/]* | ?:[\\/]* ) # Absolute name.=0A+ = ac=5Fsrcdir=3D$srcdir$ac=5Fdir=5Fsuffix;=0A+ ac=5Ftop=5Fsrcdir=3D$srcdi= r=0A+ ac=5Fabs=5Ftop=5Fsrcdir=3D$srcdir ;;=0A+ *) # Relative name.=0A+ = ac=5Fsrcdir=3D$ac=5Ftop=5Fbuild=5Fprefix$srcdir$ac=5Fdir=5Fsuffix=0A+ = ac=5Ftop=5Fsrcdir=3D$ac=5Ftop=5Fbuild=5Fprefix$srcdir=0A+ ac=5Fabs=5Fto= p=5Fsrcdir=3D$ac=5Fpwd/$srcdir ;;=0A+esac=0A+ac=5Fabs=5Fsrcdir=3D$ac=5Fabs= =5Ftop=5Fsrcdir$ac=5Fdir=5Fsuffix=0A+=0A+ cd "$ac=5Fdir" || { ac=5Fstatu= s=3D$?; continue; }=0A+ # Check for guested configure.=0A+ if test -f= "$ac=5Fsrcdir/configure.gnu"; then=0A+ echo &&=0A+ $SHELL "$ac= =5Fsrcdir/configure.gnu" --help=3Drecursive=0A+ elif test -f "$ac=5Fsrcd= ir/configure"; then=0A+ echo &&=0A+ $SHELL "$ac=5Fsrcdir/configur= e" --help=3Drecursive=0A+ else=0A+ echo "$as=5Fme: WARNING: no conf= iguration information is in $ac=5Fdir" >&2=0A+ fi || ac=5Fstatus=3D$?=0A= + cd "$ac=5Fpwd" || { ac=5Fstatus=3D$?; break; }=0A+ done=0A+fi=0A+=0A+= test -n "$ac=5Finit=5Fhelp" && exit $ac=5Fstatus=0A+if $ac=5Finit=5Fversion= ; then=0A+ cat <<\=5FACEOF=0A+configure=0A+generated by GNU Autoconf 2.61= =0A+=0A+Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001,= =0A+2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc.=0A+This con= figure script is free software; the Free Software Foundation=0A+gives unlim= ited permission to copy, distribute and modify it.=0A+=5FACEOF=0A+ exit=0A= +fi=0A+cat >config.log <<=5FACEOF=0A+This file contains any messages produc= ed by compilers while=0A+running configure, to aid debugging if configure m= akes a mistake.=0A+=0A+It was created by $as=5Fme, which was=0A+generated b= y GNU Autoconf 2.61. Invocation command line was=0A+=0A+ $ $0 $@=0A+=0A+= =5FACEOF=0A+exec 5>>config.log=0A+{=0A+cat <<=5FASUNAME=0A+## --------- ##= =0A+## Platform. ##=0A+## --------- ##=0A+=0A+hostname =3D `(hostname || un= ame -n) 2>/dev/null | sed 1q`=0A+uname -m =3D `(uname -m) 2>/dev/null || ec= ho unknown`=0A+uname -r =3D `(uname -r) 2>/dev/null || echo unknown`=0A+una= me -s =3D `(uname -s) 2>/dev/null || echo unknown`=0A+uname -v =3D `(uname = -v) 2>/dev/null || echo unknown`=0A+=0A+/usr/bin/uname -p =3D `(/usr/bin/un= ame -p) 2>/dev/null || echo unknown`=0A+/bin/uname -X =3D `(/bin/uname = -X) 2>/dev/null || echo unknown`=0A+=0A+/bin/arch =3D `(/b= in/arch) 2>/dev/null || echo unknown`=0A+/usr/bin/arch -k = =3D `(/usr/bin/arch -k) 2>/dev/null || echo unknown`=0A+/usr/convex= /getsysinfo =3D `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown`=0A+/= usr/bin/hostinfo =3D `(/usr/bin/hostinfo) 2>/dev/null || echo unk= nown`=0A+/bin/machine =3D `(/bin/machine) 2>/dev/null |= | echo unknown`=0A+/usr/bin/oslevel =3D `(/usr/bin/oslevel) 2>/dev/nu= ll || echo unknown`=0A+/bin/universe =3D `(/bin/universe) 2>= /dev/null || echo unknown`=0A+=0A+=5FASUNAME=0A+=0A+as=5Fsave=5FIF= S=3D$IFS; IFS=3D$PATH=5FSEPARATOR=0A+for as=5Fdir in $PATH=0A+do=0A+ IFS= =3D$as=5Fsave=5FIFS=0A+ test -z "$as=5Fdir" && as=5Fdir=3D.=0A+ echo "PAT= H: $as=5Fdir"=0A+done=0A+IFS=3D$as=5Fsave=5FIFS=0A+=0A+} >&5=0A+=0A+cat >&5= <<=5FACEOF=0A+=0A+=0A+## ----------- ##=0A+## Core tests. ##=0A+## -------= ---- ##=0A+=0A+=5FACEOF=0A+=0A+=0A+# Keep a trace of the command line.=0A+#= Strip out --no-create and --no-recursion so they do not pile up.=0A+# Stri= p out --silent because we don't want to record it for future runs.=0A+# Als= o quote any args containing shell meta-characters.=0A+# Make two passes to = allow for proper duplicate-argument suppression.=0A+ac=5Fconfigure=5Fargs= =3D=0A+ac=5Fconfigure=5Fargs0=3D=0A+ac=5Fconfigure=5Fargs1=3D=0A+ac=5Fmust= =5Fkeep=5Fnext=3Dfalse=0A+for ac=5Fpass in 1 2=0A+do=0A+ for ac=5Farg=0A+ = do=0A+ case $ac=5Farg in=0A+ -no-create | --no-c* | -n | -no-recursi= on | --no-r*) continue ;;=0A+ -q | -quiet | --quiet | --quie | --qui | -= -qu | --q \=0A+ | -silent | --silent | --silen | --sile | --sil)=0A+ = continue ;;=0A+ *\'*)=0A+ ac=5Farg=3D`echo "$ac=5Farg" | sed "s/'= /'\\\\\\\\''/g"` ;;=0A+ esac=0A+ case $ac=5Fpass in=0A+ 1) ac=5Fco= nfigure=5Fargs0=3D"$ac=5Fconfigure=5Fargs0 '$ac=5Farg'" ;;=0A+ 2)=0A+ = ac=5Fconfigure=5Fargs1=3D"$ac=5Fconfigure=5Fargs1 '$ac=5Farg'"=0A+ = if test $ac=5Fmust=5Fkeep=5Fnext =3D true; then=0A+ ac=5Fmust=5Fkeep=5Fnext= =3Dfalse # Got value, back to normal.=0A+ else=0A+ case $ac=5Farg in= =0A+ *=3D* | --config-cache | -C | -disable-* | --disable-* \=0A+ | -en= able-* | --enable-* | -gas | --g* | -nfp | --nf* \=0A+ | -q | -quiet | --= q* | -silent | --sil* | -v | -verb* \=0A+ | -with-* | --with-* | -without= -* | --without-* | --x)=0A+ case "$ac=5Fconfigure=5Fargs0 " in=0A+ = "$ac=5Fconfigure=5Fargs1"*" '$ac=5Farg' "* ) continue ;;=0A+ esac=0A+= ;;=0A+ -* ) ac=5Fmust=5Fkeep=5Fnext=3Dtrue ;;=0A+ esac=0A+ fi= =0A+ ac=5Fconfigure=5Fargs=3D"$ac=5Fconfigure=5Fargs '$ac=5Farg'"=0A+ = ;;=0A+ esac=0A+ done=0A+done=0A+$as=5Funset ac=5Fconfigure=5Fargs0= || test "${ac=5Fconfigure=5Fargs0+set}" !=3D set || { ac=5Fconfigure=5Farg= s0=3D; export ac=5Fconfigure=5Fargs0; }=0A+$as=5Funset ac=5Fconfigure=5Farg= s1 || test "${ac=5Fconfigure=5Fargs1+set}" !=3D set || { ac=5Fconfigure=5Fa= rgs1=3D; export ac=5Fconfigure=5Fargs1; }=0A+=0A+# When interrupted or exit= 'd, cleanup temporary files, and complete=0A+# config.log. We remove comme= nts because anyway the quotes in there=0A+# would cause problems or look ug= ly.=0A+# WARNING: Use '\'' to represent an apostrophe within the trap.=0A+#= WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 b= ug.=0A+trap 'exit=5Fstatus=3D$?=0A+ # Save into config.log some informatio= n that might help in debugging.=0A+ {=0A+ echo=0A+=0A+ cat <<\=5FASB= OX=0A+## ---------------- ##=0A+## Cache variables. ##=0A+## --------------= -- ##=0A+=5FASBOX=0A+ echo=0A+ # The following way of writing the cac= he mishandles newlines in values,=0A+(=0A+ for ac=5Fvar in `(set) 2>&1 | s= ed -n '\''s/^\([a-zA-Z=5F][a-zA-Z0-9=5F]*\)=3D.*/\1/p'\''`; do=0A+ eval = ac=5Fval=3D\$$ac=5Fvar=0A+ case $ac=5Fval in #(=0A+ *${as=5Fnl}*)=0A+= case $ac=5Fvar in #(=0A+ *=5Fcv=5F*) { echo "$as=5Fme:$LINENO: W= ARNING: Cache variable $ac=5Fvar contains a newline." >&5=0A+echo "$as=5Fme= : WARNING: Cache variable $ac=5Fvar contains a newline." >&2;} ;;=0A+ = esac=0A+ case $ac=5Fvar in #(=0A+ =5F | IFS | as=5Fnl) ;; #(=0A+ = *) $as=5Funset $ac=5Fvar ;;=0A+ esac ;;=0A+ esac=0A+ done=0A+= (set) 2>&1 |=0A+ case $as=5Fnl`(ac=5Fspace=3D'\'' '\''; set) 2>&1` in = #(=0A+ *${as=5Fnl}ac=5Fspace=3D\ *)=0A+ sed -n \=0A+ "s/'\''/'\''\\= \\'\'''\''/g;=0A+ s/^\\([=5F$as=5Fcr=5Falnum]*=5Fcv=5F[=5F$as=5Fcr=5Falnu= m]*\\)=3D\\(.*\\)/\\1=3D'\''\\2'\''/p"=0A+ ;; #(=0A+ *)=0A+ se= d -n "/^[=5F$as=5Fcr=5Falnum]*=5Fcv=5F[=5F$as=5Fcr=5Falnum]*=3D/p"=0A+ = ;;=0A+ esac |=0A+ sort=0A+)=0A+ echo=0A+=0A+ cat <<\=5FASBOX= =0A+## ----------------- ##=0A+## Output variables. ##=0A+## --------------= --- ##=0A+=5FASBOX=0A+ echo=0A+ for ac=5Fvar in $ac=5Fsubst=5Fvars=0A= + do=0A+ eval ac=5Fval=3D\$$ac=5Fvar=0A+ case $ac=5Fval in=0A+= *\'\''*) ac=5Fval=3D`echo "$ac=5Fval" | sed "s/'\''/'\''\\\\\\\\'\'''= \''/g"`;;=0A+ esac=0A+ echo "$ac=5Fvar=3D'\''$ac=5Fval'\''"=0A+ = done | sort=0A+ echo=0A+=0A+ if test -n "$ac=5Fsubst=5Ffiles"; then= =0A+ cat <<\=5FASBOX=0A+## ------------------- ##=0A+## File substitut= ions. ##=0A+## ------------------- ##=0A+=5FASBOX=0A+ echo=0A+ fo= r ac=5Fvar in $ac=5Fsubst=5Ffiles=0A+ do=0A+ eval ac=5Fval=3D\$$ac=5Fv= ar=0A+ case $ac=5Fval in=0A+ *\'\''*) ac=5Fval=3D`echo "$ac=5Fval" | sed "s= /'\''/'\''\\\\\\\\'\'''\''/g"`;;=0A+ esac=0A+ echo "$ac=5Fvar=3D'\''$ac=5Fv= al'\''"=0A+ done | sort=0A+ echo=0A+ fi=0A+=0A+ if test -s = confdefs.h; then=0A+ cat <<\=5FASBOX=0A+## ----------- ##=0A+## confde= fs.h. ##=0A+## ----------- ##=0A+=5FASBOX=0A+ echo=0A+ cat confde= fs.h=0A+ echo=0A+ fi=0A+ test "$ac=5Fsignal" !=3D 0 &&=0A+ = echo "$as=5Fme: caught signal $ac=5Fsignal"=0A+ echo "$as=5Fme: exit $ex= it=5Fstatus"=0A+ } >&5=0A+ rm -f core *.core core.conftest.* &&=0A+ rm= -f -r conftest* confdefs* conf$$* $ac=5Fclean=5Ffiles &&=0A+ exit $exit= =5Fstatus=0A+' 0=0A+for ac=5Fsignal in 1 2 13 15; do=0A+ trap 'ac=5Fsignal= =3D'$ac=5Fsignal'; { (exit 1); exit 1; }' $ac=5Fsignal=0A+done=0A+ac=5Fsign= al=3D0=0A+=0A+# confdefs.h avoids OS command line length limits that DEFS c= an exceed.=0A+rm -f -r conftest* confdefs.h=0A+=0A+# Predefined preprocesso= r variables.=0A+=0A+cat >>confdefs.h <<=5FACEOF=0A+#define PACKAGE=5FNAME "= $PACKAGE=5FNAME"=0A+=5FACEOF=0A+=0A+=0A+cat >>confdefs.h <<=5FACEOF=0A+#def= ine PACKAGE=5FTARNAME "$PACKAGE=5FTARNAME"=0A+=5FACEOF=0A+=0A+=0A+cat >>con= fdefs.h <<=5FACEOF=0A+#define PACKAGE=5FVERSION "$PACKAGE=5FVERSION"=0A+=5F= ACEOF=0A+=0A+=0A+cat >>confdefs.h <<=5FACEOF=0A+#define PACKAGE=5FSTRING "$= PACKAGE=5FSTRING"=0A+=5FACEOF=0A+=0A+=0A+cat >>confdefs.h <<=5FACEOF=0A+#de= fine PACKAGE=5FBUGREPORT "$PACKAGE=5FBUGREPORT"=0A+=5FACEOF=0A+=0A+=0A+# Le= t the site file select an alternate cache file if it wants to.=0A+# Prefer = explicitly selected file to automatically selected ones.=0A+if test -n "$CO= NFIG=5FSITE"; then=0A+ set x "$CONFIG=5FSITE"=0A+elif test "x$prefix" !=3D= xNONE; then=0A+ set x "$prefix/share/config.site" "$prefix/etc/config.sit= e"=0A+else=0A+ set x "$ac=5Fdefault=5Fprefix/share/config.site" \=0A+ "$ac= =5Fdefault=5Fprefix/etc/config.site"=0A+fi=0A+shift=0A+for ac=5Fsite=5Ffile= =0A+do=0A+ if test -r "$ac=5Fsite=5Ffile"; then=0A+ { echo "$as=5Fme:$L= INENO: loading site script $ac=5Fsite=5Ffile" >&5=0A+echo "$as=5Fme: loadin= g site script $ac=5Fsite=5Ffile" >&6;}=0A+ sed 's/^/| /' "$ac=5Fsite=5Ff= ile" >&5=0A+ . "$ac=5Fsite=5Ffile"=0A+ fi=0A+done=0A+=0A+if test -r "$c= ache=5Ffile"; then=0A+ # Some versions of bash will fail to source /dev/nu= ll (special=0A+ # files actually), so we avoid doing that.=0A+ if test -f= "$cache=5Ffile"; then=0A+ { echo "$as=5Fme:$LINENO: loading cache $cach= e=5Ffile" >&5=0A+echo "$as=5Fme: loading cache $cache=5Ffile" >&6;}=0A+ = case $cache=5Ffile in=0A+ [\\/]* | ?:[\\/]* ) . "$cache=5Ffile";;=0A+ = *) . "./$cache=5Ffile";;=0A+ esac=0A+ fi=0A+e= lse=0A+ { echo "$as=5Fme:$LINENO: creating cache $cache=5Ffile" >&5=0A+ech= o "$as=5Fme: creating cache $cache=5Ffile" >&6;}=0A+ >$cache=5Ffile=0A+fi= =0A+=0A+# Check that the precious variables saved in the cache have kept th= e same=0A+# value.=0A+ac=5Fcache=5Fcorrupted=3Dfalse=0A+for ac=5Fvar in $ac= =5Fprecious=5Fvars; do=0A+ eval ac=5Fold=5Fset=3D\$ac=5Fcv=5Fenv=5F${ac=5F= var}=5Fset=0A+ eval ac=5Fnew=5Fset=3D\$ac=5Fenv=5F${ac=5Fvar}=5Fset=0A+ e= val ac=5Fold=5Fval=3D\$ac=5Fcv=5Fenv=5F${ac=5Fvar}=5Fvalue=0A+ eval ac=5Fn= ew=5Fval=3D\$ac=5Fenv=5F${ac=5Fvar}=5Fvalue=0A+ case $ac=5Fold=5Fset,$ac= =5Fnew=5Fset in=0A+ set,)=0A+ { echo "$as=5Fme:$LINENO: error: \`$a= c=5Fvar' was set to \`$ac=5Fold=5Fval' in the previous run" >&5=0A+echo "$a= s=5Fme: error: \`$ac=5Fvar' was set to \`$ac=5Fold=5Fval' in the previous r= un" >&2;}=0A+ ac=5Fcache=5Fcorrupted=3D: ;;=0A+ ,set)=0A+ { ec= ho "$as=5Fme:$LINENO: error: \`$ac=5Fvar' was not set in the previous run" = >&5=0A+echo "$as=5Fme: error: \`$ac=5Fvar' was not set in the previous run"= >&2;}=0A+ ac=5Fcache=5Fcorrupted=3D: ;;=0A+ ,);;=0A+ *)=0A+ = if test "x$ac=5Fold=5Fval" !=3D "x$ac=5Fnew=5Fval"; then=0A+ { echo "$as= =5Fme:$LINENO: error: \`$ac=5Fvar' has changed since the previous run:" >&5= =0A+echo "$as=5Fme: error: \`$ac=5Fvar' has changed since the previous run:= " >&2;}=0A+ { echo "$as=5Fme:$LINENO: former value: $ac=5Fold=5Fval" >&5= =0A+echo "$as=5Fme: former value: $ac=5Fold=5Fval" >&2;}=0A+ { echo "$as= =5Fme:$LINENO: current value: $ac=5Fnew=5Fval" >&5=0A+echo "$as=5Fme: c= urrent value: $ac=5Fnew=5Fval" >&2;}=0A+ ac=5Fcache=5Fcorrupted=3D:=0A+ = fi;;=0A+ esac=0A+ # Pass precious variables to config.status.=0A+ if t= est "$ac=5Fnew=5Fset" =3D set; then=0A+ case $ac=5Fnew=5Fval in=0A+ *= \'*) ac=5Farg=3D$ac=5Fvar=3D`echo "$ac=5Fnew=5Fval" | sed "s/'/'\\\\\\\\''/= g"` ;;=0A+ *) ac=5Farg=3D$ac=5Fvar=3D$ac=5Fnew=5Fval ;;=0A+ esac=0A+ = case " $ac=5Fconfigure=5Fargs " in=0A+ *" '$ac=5Farg' "*) ;; # Avoi= d dups. Use of quotes ensures accuracy.=0A+ *) ac=5Fconfigure=5Fargs= =3D"$ac=5Fconfigure=5Fargs '$ac=5Farg'" ;;=0A+ esac=0A+ fi=0A+done=0A+i= f $ac=5Fcache=5Fcorrupted; then=0A+ { echo "$as=5Fme:$LINENO: error: chang= es in the environment can compromise the build" >&5=0A+echo "$as=5Fme: erro= r: changes in the environment can compromise the build" >&2;}=0A+ { { echo= "$as=5Fme:$LINENO: error: run \`make distclean' and/or \`rm $cache=5Ffile'= and start over" >&5=0A+echo "$as=5Fme: error: run \`make distclean' and/or= \`rm $cache=5Ffile' and start over" >&2;}=0A+ { (exit 1); exit 1; }; }= =0A+fi=0A+=0A+=0A+=0A+=0A+=0A+=0A+=0A+=0A+=0A+=0A+=0A+=0A+=0A+=0A+=0A+=0A+= =0A+ac=5Fext=3Dc=0A+ac=5Fcpp=3D'$CPP $CPPFLAGS'=0A+ac=5Fcompile=3D'$CC -c $= CFLAGS $CPPFLAGS conftest.$ac=5Fext >&5'=0A+ac=5Flink=3D'$CC -o conftest$ac= =5Fexeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac=5Fext $LIBS >&5'=0A+ac=5F= compiler=5Fgnu=3D$ac=5Fcv=5Fc=5Fcompiler=5Fgnu=0A+=0A+=0A+am=5F=5Fapi=5Fver= sion=3D'1.10'=0A+=0A+ac=5Faux=5Fdir=3D=0A+for ac=5Fdir in "$srcdir" "$srcdi= r/.." "$srcdir/../.."; do=0A+ if test -f "$ac=5Fdir/install-sh"; then=0A+ = ac=5Faux=5Fdir=3D$ac=5Fdir=0A+ ac=5Finstall=5Fsh=3D"$ac=5Faux=5Fdir/i= nstall-sh -c"=0A+ break=0A+ elif test -f "$ac=5Fdir/install.sh"; then= =0A+ ac=5Faux=5Fdir=3D$ac=5Fdir=0A+ ac=5Finstall=5Fsh=3D"$ac=5Faux=5F= dir/install.sh -c"=0A+ break=0A+ elif test -f "$ac=5Fdir/shtool"; then= =0A+ ac=5Faux=5Fdir=3D$ac=5Fdir=0A+ ac=5Finstall=5Fsh=3D"$ac=5Faux=5F= dir/shtool install -c"=0A+ break=0A+ fi=0A+done=0A+if test -z "$ac=5Fau= x=5Fdir"; then=0A+ { { echo "$as=5Fme:$LINENO: error: cannot find install-= sh or install.sh in \"$srcdir\" \"$srcdir/..\" \"$srcdir/../..\"" >&5=0A+ec= ho "$as=5Fme: error: cannot find install-sh or install.sh in \"$srcdir\" \"= $srcdir/..\" \"$srcdir/../..\"" >&2;}=0A+ { (exit 1); exit 1; }; }=0A+fi= =0A+=0A+# These three variables are undocumented and unsupported,=0A+# and = are intended to be withdrawn in a future Autoconf release.=0A+# They can ca= use serious problems if a builder's source tree is in a directory=0A+# whos= e full name contains unusual characters.=0A+ac=5Fconfig=5Fguess=3D"$SHELL $= ac=5Faux=5Fdir/config.guess" # Please don't use this var.=0A+ac=5Fconfig= =5Fsub=3D"$SHELL $ac=5Faux=5Fdir/config.sub" # Please don't use this var.= =0A+ac=5Fconfigure=3D"$SHELL $ac=5Faux=5Fdir/configure" # Please don't use= this var.=0A+=0A+=0A+# Find a good install program. We prefer a C program= (faster),=0A+# so one script is as good as another. But avoid the broken = or=0A+# incompatible versions:=0A+# SysV /etc/install, /usr/sbin/install=0A= +# SunOS /usr/etc/install=0A+# IRIX /sbin/install=0A+# AIX /bin/install=0A+= # AmigaOS /C/install, which installs bootblocks on floppy discs=0A+# AIX 4 = /usr/bin/installbsd, which doesn't work without a -g flag=0A+# AFS /usr/afs= ws/bin/install, which mishandles nonexistent args=0A+# SVR4 /usr/ucb/instal= l, which tries to use the nonexistent group "staff"=0A+# OS/2's system inst= all, which has a completely different semantic=0A+# ./install, which can be= erroneously created by make from ./install.sh.=0A+{ echo "$as=5Fme:$LINENO= : checking for a BSD-compatible install" >&5=0A+echo $ECHO=5FN "checking fo= r a BSD-compatible install... $ECHO=5FC" >&6; }=0A+if test -z "$INSTALL"; t= hen=0A+if test "${ac=5Fcv=5Fpath=5Finstall+set}" =3D set; then=0A+ echo $E= CHO=5FN "(cached) $ECHO=5FC" >&6=0A+else=0A+ as=5Fsave=5FIFS=3D$IFS; IFS= =3D$PATH=5FSEPARATOR=0A+for as=5Fdir in $PATH=0A+do=0A+ IFS=3D$as=5Fsave= =5FIFS=0A+ test -z "$as=5Fdir" && as=5Fdir=3D.=0A+ # Account for people w= ho put trailing slashes in PATH elements.=0A+case $as=5Fdir/ in=0A+ ./ | .= // | /cC/* | \=0A+ /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsw= s/bin/* | \=0A+ ?:\\/os2\\/install\\/* | ?:\\/OS2\\/INSTALL\\/* | \=0A+ /= usr/ucb/* ) ;;=0A+ *)=0A+ # OSF1 and SCO ODT 3.0 have their own names f= or install.=0A+ # Don't use installbsd from OSF since it installs stuff = as root=0A+ # by default.=0A+ for ac=5Fprog in ginstall scoinst insta= ll; do=0A+ for ac=5Fexec=5Fext in '' $ac=5Fexecutable=5Fextensions; do= =0A+ if { test -f "$as=5Fdir/$ac=5Fprog$ac=5Fexec=5Fext" && $as=5Ftest=5Fx = "$as=5Fdir/$ac=5Fprog$ac=5Fexec=5Fext"; }; then=0A+ if test $ac=5Fprog = =3D install &&=0A+ grep dspmsg "$as=5Fdir/$ac=5Fprog$ac=5Fexec=5Fext" >= /dev/null 2>&1; then=0A+ # AIX install. It has an incompatible calling= convention.=0A+ :=0A+ elif test $ac=5Fprog =3D install &&=0A+ gr= ep pwplus "$as=5Fdir/$ac=5Fprog$ac=5Fexec=5Fext" >/dev/null 2>&1; then=0A+ = # program-specific install script used by HP pwplus--don't use.=0A+ = :=0A+ else=0A+ ac=5Fcv=5Fpath=5Finstall=3D"$as=5Fdir/$ac=5Fprog$ac= =5Fexec=5Fext -c"=0A+ break 3=0A+ fi=0A+ fi=0A+ done=0A+ done= =0A+ ;;=0A+esac=0A+done=0A+IFS=3D$as=5Fsave=5FIFS=0A+=0A+=0A+fi=0A+ if = test "${ac=5Fcv=5Fpath=5Finstall+set}" =3D set; then=0A+ INSTALL=3D$ac= =5Fcv=5Fpath=5Finstall=0A+ else=0A+ # As a last resort, use the slow sh= ell script. Don't cache a=0A+ # value for INSTALL within a source direc= tory, because that will=0A+ # break other packages using the cache if th= at directory is=0A+ # removed, or if the value is a relative name.=0A+ = INSTALL=3D$ac=5Finstall=5Fsh=0A+ fi=0A+fi=0A+{ echo "$as=5Fme:$LINENO: r= esult: $INSTALL" >&5=0A+echo "${ECHO=5FT}$INSTALL" >&6; }=0A+=0A+# Use test= -z because SunOS4 sh mishandles braces in ${var-val}.=0A+# It thinks the f= irst close brace ends the variable substitution.=0A+test -z "$INSTALL=5FPRO= GRAM" && INSTALL=5FPROGRAM=3D'${INSTALL}'=0A+=0A+test -z "$INSTALL=5FSCRIPT= " && INSTALL=5FSCRIPT=3D'${INSTALL}'=0A+=0A+test -z "$INSTALL=5FDATA" && IN= STALL=5FDATA=3D'${INSTALL} -m 644'=0A+=0A+{ echo "$as=5Fme:$LINENO: checkin= g whether build environment is sane" >&5=0A+echo $ECHO=5FN "checking whethe= r build environment is sane... $ECHO=5FC" >&6; }=0A+# Just in case=0A+sleep= 1=0A+echo timestamp > conftest.file=0A+# Do `set' in a subshell so we don'= t clobber the current shell's=0A+# arguments. Must try -L first in case co= nfigure is actually a=0A+# symlink; some systems play weird games with the = mod time of symlinks=0A+# (eg FreeBSD returns the mod time of the symlink's= containing=0A+# directory).=0A+if (=0A+ set X `ls -Lt $srcdir/configure = conftest.file 2> /dev/null`=0A+ if test "$*" =3D "X"; then=0A+ # -L = didn't work.=0A+ set X `ls -t $srcdir/configure conftest.file`=0A+ f= i=0A+ rm -f conftest.file=0A+ if test "$*" !=3D "X $srcdir/configure co= nftest.file" \=0A+ && test "$*" !=3D "X conftest.file $srcdir/configur= e"; then=0A+=0A+ # If neither matched, then we have a broken ls. This= can happen=0A+ # if, for instance, CONFIG=5FSHELL is bash and it inhe= rits a=0A+ # broken ls alias from the environment. This has actually= =0A+ # happened. Such a system could not be considered "sane".=0A+ = { { echo "$as=5Fme:$LINENO: error: ls -t appears to fail. Make sure the= re is not a broken=0A+alias in your environment" >&5=0A+echo "$as=5Fme: err= or: ls -t appears to fail. Make sure there is not a broken=0A+alias in you= r environment" >&2;}=0A+ { (exit 1); exit 1; }; }=0A+ fi=0A+=0A+ test= "$2" =3D conftest.file=0A+ )=0A+then=0A+ # Ok.=0A+ :=0A+else=0A+ {= { echo "$as=5Fme:$LINENO: error: newly created file is older than distribu= ted files!=0A+Check your system clock" >&5=0A+echo "$as=5Fme: error: newly = created file is older than distributed files!=0A+Check your system clock" >= &2;}=0A+ { (exit 1); exit 1; }; }=0A+fi=0A+{ echo "$as=5Fme:$LINENO: resu= lt: yes" >&5=0A+echo "${ECHO=5FT}yes" >&6; }=0A+test "$program=5Fprefix" != =3D NONE &&=0A+ program=5Ftransform=5Fname=3D"s&^&$program=5Fprefix&;$prog= ram=5Ftransform=5Fname"=0A+# Use a double $ so make ignores it.=0A+test "$p= rogram=5Fsuffix" !=3D NONE &&=0A+ program=5Ftransform=5Fname=3D"s&\$&$prog= ram=5Fsuffix&;$program=5Ftransform=5Fname"=0A+# Double any \ or $. echo mi= ght interpret backslashes.=0A+# By default was `s,x,x', remove it if useles= s.=0A+cat <<\=5FACEOF >conftest.sed=0A+s/[\\$]/&&/g;s/;s,x,x,$//=0A+=5FACEO= F=0A+program=5Ftransform=5Fname=3D`echo $program=5Ftransform=5Fname | sed -= f conftest.sed`=0A+rm -f conftest.sed=0A+=0A+# expand $ac=5Faux=5Fdir to an= absolute path=0A+am=5Faux=5Fdir=3D`cd $ac=5Faux=5Fdir && pwd`=0A+=0A+test = x"${MISSING+set}" =3D xset || MISSING=3D"\${SHELL} $am=5Faux=5Fdir/missing"= =0A+# Use eval to expand $SHELL=0A+if eval "$MISSING --run true"; then=0A+ = am=5Fmissing=5Frun=3D"$MISSING --run "=0A+else=0A+ am=5Fmissing=5Frun=3D= =0A+ { echo "$as=5Fme:$LINENO: WARNING: \`missing' script is too old or mi= ssing" >&5=0A+echo "$as=5Fme: WARNING: \`missing' script is too old or miss= ing" >&2;}=0A+fi=0A+=0A+{ echo "$as=5Fme:$LINENO: checking for a thread-saf= e mkdir -p" >&5=0A+echo $ECHO=5FN "checking for a thread-safe mkdir -p... $= ECHO=5FC" >&6; }=0A+if test -z "$MKDIR=5FP"; then=0A+ if test "${ac=5Fcv= =5Fpath=5Fmkdir+set}" =3D set; then=0A+ echo $ECHO=5FN "(cached) $ECHO=5FC= " >&6=0A+else=0A+ as=5Fsave=5FIFS=3D$IFS; IFS=3D$PATH=5FSEPARATOR=0A+for a= s=5Fdir in $PATH$PATH=5FSEPARATOR/opt/sfw/bin=0A+do=0A+ IFS=3D$as=5Fsave= =5FIFS=0A+ test -z "$as=5Fdir" && as=5Fdir=3D.=0A+ for ac=5Fprog in mkdir= gmkdir; do=0A+ for ac=5Fexec=5Fext in '' $ac=5Fexecutable=5Fextensions; d= o=0A+ { test -f "$as=5Fdir/$ac=5Fprog$ac=5Fexec=5Fext" && $as=5Ftest=5Fx= "$as=5Fdir/$ac=5Fprog$ac=5Fexec=5Fext"; } || continue=0A+ case `"$as=5F= dir/$ac=5Fprog$ac=5Fexec=5Fext" --version 2>&1` in #(=0A+ 'mkdir (GNU = coreutils) '* | \=0A+ 'mkdir (coreutils) '* | \=0A+ 'mkdir (fileu= tils) '4.1*)=0A+ ac=5Fcv=5Fpath=5Fmkdir=3D$as=5Fdir/$ac=5Fprog$ac=5F= exec=5Fext=0A+ break 3;;=0A+ esac=0A+ done=0A+ done=0A+don= e=0A+IFS=3D$as=5Fsave=5FIFS=0A+=0A+fi=0A+=0A+ if test "${ac=5Fcv=5Fpath=5F= mkdir+set}" =3D set; then=0A+ MKDIR=5FP=3D"$ac=5Fcv=5Fpath=5Fmkdir -p"= =0A+ else=0A+ # As a last resort, use the slow shell script. Don't cac= he a=0A+ # value for MKDIR=5FP within a source directory, because that w= ill=0A+ # break other packages using the cache if that directory is=0A+ = # removed, or if the value is a relative name.=0A+ test -d ./--versio= n && rmdir ./--version=0A+ MKDIR=5FP=3D"$ac=5Finstall=5Fsh -d"=0A+ fi= =0A+fi=0A+{ echo "$as=5Fme:$LINENO: result: $MKDIR=5FP" >&5=0A+echo "${ECHO= =5FT}$MKDIR=5FP" >&6; }=0A+=0A+mkdir=5Fp=3D"$MKDIR=5FP"=0A+case $mkdir=5Fp = in=0A+ [\\/$]* | ?:[\\/]*) ;;=0A+ */*) mkdir=5Fp=3D"\$(top=5Fbuilddir)/$m= kdir=5Fp" ;;=0A+esac=0A+=0A+for ac=5Fprog in gawk mawk nawk awk=0A+do=0A+ = # Extract the first word of "$ac=5Fprog", so it can be a program name with = args.=0A+set dummy $ac=5Fprog; ac=5Fword=3D$2=0A+{ echo "$as=5Fme:$LINENO: = checking for $ac=5Fword" >&5=0A+echo $ECHO=5FN "checking for $ac=5Fword... = $ECHO=5FC" >&6; }=0A+if test "${ac=5Fcv=5Fprog=5FAWK+set}" =3D set; then=0A= + echo $ECHO=5FN "(cached) $ECHO=5FC" >&6=0A+else=0A+ if test -n "$AWK"; = then=0A+ ac=5Fcv=5Fprog=5FAWK=3D"$AWK" # Let the user override the test.= =0A+else=0A+as=5Fsave=5FIFS=3D$IFS; IFS=3D$PATH=5FSEPARATOR=0A+for as=5Fdir= in $PATH=0A+do=0A+ IFS=3D$as=5Fsave=5FIFS=0A+ test -z "$as=5Fdir" && as= =5Fdir=3D.=0A+ for ac=5Fexec=5Fext in '' $ac=5Fexecutable=5Fextensions; do= =0A+ if { test -f "$as=5Fdir/$ac=5Fword$ac=5Fexec=5Fext" && $as=5Ftest=5Fx= "$as=5Fdir/$ac=5Fword$ac=5Fexec=5Fext"; }; then=0A+ ac=5Fcv=5Fprog=5FAW= K=3D"$ac=5Fprog"=0A+ echo "$as=5Fme:$LINENO: found $as=5Fdir/$ac=5Fword$= ac=5Fexec=5Fext" >&5=0A+ break 2=0A+ fi=0A+done=0A+done=0A+IFS=3D$as=5F= save=5FIFS=0A+=0A+fi=0A+fi=0A+AWK=3D$ac=5Fcv=5Fprog=5FAWK=0A+if test -n "$A= WK"; then=0A+ { echo "$as=5Fme:$LINENO: result: $AWK" >&5=0A+echo "${ECHO= =5FT}$AWK" >&6; }=0A+else=0A+ { echo "$as=5Fme:$LINENO: result: no" >&5=0A= +echo "${ECHO=5FT}no" >&6; }=0A+fi=0A+=0A+=0A+ test -n "$AWK" && break=0A+= done=0A+=0A+{ echo "$as=5Fme:$LINENO: checking whether ${MAKE-make} sets \$= (MAKE)" >&5=0A+echo $ECHO=5FN "checking whether ${MAKE-make} sets \$(MAKE).= .. $ECHO=5FC" >&6; }=0A+set x ${MAKE-make}; ac=5Fmake=3D`echo "$2" | sed 's= /+/p/g; s/[^a-zA-Z0-9=5F]/=5F/g'`=0A+if { as=5Fvar=3Dac=5Fcv=5Fprog=5Fmake= =5F${ac=5Fmake}=5Fset; eval "test \"\${$as=5Fvar+set}\" =3D set"; }; then= =0A+ echo $ECHO=5FN "(cached) $ECHO=5FC" >&6=0A+else=0A+ cat >conftest.ma= ke <<\=5FACEOF=0A+SHELL =3D /bin/sh=0A+all:=0A+ @echo '@@@%%%=3D$(MAKE)=3D@= @@%%%'=0A+=5FACEOF=0A+# GNU make sometimes prints "make[1]: Entering...", w= hich would confuse us.=0A+case `${MAKE-make} -f conftest.make 2>/dev/null` = in=0A+ *@@@%%%=3D?*=3D@@@%%%*)=0A+ eval ac=5Fcv=5Fprog=5Fmake=5F${ac=5F= make}=5Fset=3Dyes;;=0A+ *)=0A+ eval ac=5Fcv=5Fprog=5Fmake=5F${ac=5Fmake= }=5Fset=3Dno;;=0A+esac=0A+rm -f conftest.make=0A+fi=0A+if eval test \$ac=5F= cv=5Fprog=5Fmake=5F${ac=5Fmake}=5Fset =3D yes; then=0A+ { echo "$as=5Fme:$= LINENO: result: yes" >&5=0A+echo "${ECHO=5FT}yes" >&6; }=0A+ SET=5FMAKE=3D= =0A+else=0A+ { echo "$as=5Fme:$LINENO: result: no" >&5=0A+echo "${ECHO=5FT= }no" >&6; }=0A+ SET=5FMAKE=3D"MAKE=3D${MAKE-make}"=0A+fi=0A+=0A+rm -rf .ts= t 2>/dev/null=0A+mkdir .tst 2>/dev/null=0A+if test -d .tst; then=0A+ am=5F= =5Fleading=5Fdot=3D.=0A+else=0A+ am=5F=5Fleading=5Fdot=3D=5F=0A+fi=0A+rmdi= r .tst 2>/dev/null=0A+=0A+if test "`cd $srcdir && pwd`" !=3D "`pwd`"; then= =0A+ # Use -I$(srcdir) only when $(srcdir) !=3D ., so that make's output= =0A+ # is not polluted with repeated "-I."=0A+ am=5F=5Fisrc=3D' -I$(srcdi= r)'=0A+ # test to see if srcdir already configured=0A+ if test -f $srcdir= /config.status; then=0A+ { { echo "$as=5Fme:$LINENO: error: source direc= tory already configured; run \"make distclean\" there first" >&5=0A+echo "$= as=5Fme: error: source directory already configured; run \"make distclean\"= there first" >&2;}=0A+ { (exit 1); exit 1; }; }=0A+ fi=0A+fi=0A+=0A+# t= est whether we have cygpath=0A+if test -z "$CYGPATH=5FW"; then=0A+ if (cyg= path --version) >/dev/null 2>/dev/null; then=0A+ CYGPATH=5FW=3D'cygpath = -w'=0A+ else=0A+ CYGPATH=5FW=3Decho=0A+ fi=0A+fi=0A+=0A+=0A+# Define t= he identity of the package.=0A+ PACKAGE=3Dffsb=0A+ VERSION=3D6.0-RC2=0A+=0A= +=0A+cat >>confdefs.h <<=5FACEOF=0A+#define PACKAGE "$PACKAGE"=0A+=5FACEOF= =0A+=0A+=0A+cat >>confdefs.h <<=5FACEOF=0A+#define VERSION "$VERSION"=0A+= =5FACEOF=0A+=0A+# Some tools Automake needs.=0A+=0A+ACLOCAL=3D${ACLOCAL-"${= am=5Fmissing=5Frun}aclocal-${am=5F=5Fapi=5Fversion}"}=0A+=0A+=0A+AUTOCONF= =3D${AUTOCONF-"${am=5Fmissing=5Frun}autoconf"}=0A+=0A+=0A+AUTOMAKE=3D${AUTO= MAKE-"${am=5Fmissing=5Frun}automake-${am=5F=5Fapi=5Fversion}"}=0A+=0A+=0A+A= UTOHEADER=3D${AUTOHEADER-"${am=5Fmissing=5Frun}autoheader"}=0A+=0A+=0A+MAKE= INFO=3D${MAKEINFO-"${am=5Fmissing=5Frun}makeinfo"}=0A+=0A+install=5Fsh=3D${= install=5Fsh-"\$(SHELL) $am=5Faux=5Fdir/install-sh"}=0A+=0A+# Installed bin= aries are usually stripped using `strip' when the user=0A+# run `make insta= ll-strip'. However `strip' might not be the right=0A+# tool to use in cros= s-compilation environments, therefore Automake=0A+# will honor the `STRIP' = environment variable to overrule this program.=0A+if test "$cross=5Fcompili= ng" !=3D no; then=0A+ if test -n "$ac=5Ftool=5Fprefix"; then=0A+ # Extrac= t the first word of "${ac=5Ftool=5Fprefix}strip", so it can be a program na= me with args.=0A+set dummy ${ac=5Ftool=5Fprefix}strip; ac=5Fword=3D$2=0A+{ = echo "$as=5Fme:$LINENO: checking for $ac=5Fword" >&5=0A+echo $ECHO=5FN "che= cking for $ac=5Fword... $ECHO=5FC" >&6; }=0A+if test "${ac=5Fcv=5Fprog=5FST= RIP+set}" =3D set; then=0A+ echo $ECHO=5FN "(cached) $ECHO=5FC" >&6=0A+els= e=0A+ if test -n "$STRIP"; then=0A+ ac=5Fcv=5Fprog=5FSTRIP=3D"$STRIP" # L= et the user override the test.=0A+else=0A+as=5Fsave=5FIFS=3D$IFS; IFS=3D$PA= TH=5FSEPARATOR=0A+for as=5Fdir in $PATH=0A+do=0A+ IFS=3D$as=5Fsave=5FIFS= =0A+ test -z "$as=5Fdir" && as=5Fdir=3D.=0A+ for ac=5Fexec=5Fext in '' $a= c=5Fexecutable=5Fextensions; do=0A+ if { test -f "$as=5Fdir/$ac=5Fword$ac= =5Fexec=5Fext" && $as=5Ftest=5Fx "$as=5Fdir/$ac=5Fword$ac=5Fexec=5Fext"; };= then=0A+ ac=5Fcv=5Fprog=5FSTRIP=3D"${ac=5Ftool=5Fprefix}strip"=0A+ e= cho "$as=5Fme:$LINENO: found $as=5Fdir/$ac=5Fword$ac=5Fexec=5Fext" >&5=0A+ = break 2=0A+ fi=0A+done=0A+done=0A+IFS=3D$as=5Fsave=5FIFS=0A+=0A+fi=0A+f= i=0A+STRIP=3D$ac=5Fcv=5Fprog=5FSTRIP=0A+if test -n "$STRIP"; then=0A+ { ec= ho "$as=5Fme:$LINENO: result: $STRIP" >&5=0A+echo "${ECHO=5FT}$STRIP" >&6; = }=0A+else=0A+ { echo "$as=5Fme:$LINENO: result: no" >&5=0A+echo "${ECHO=5F= T}no" >&6; }=0A+fi=0A+=0A+=0A+fi=0A+if test -z "$ac=5Fcv=5Fprog=5FSTRIP"; t= hen=0A+ ac=5Fct=5FSTRIP=3D$STRIP=0A+ # Extract the first word of "strip",= so it can be a program name with args.=0A+set dummy strip; ac=5Fword=3D$2= =0A+{ echo "$as=5Fme:$LINENO: checking for $ac=5Fword" >&5=0A+echo $ECHO=5F= N "checking for $ac=5Fword... $ECHO=5FC" >&6; }=0A+if test "${ac=5Fcv=5Fpro= g=5Fac=5Fct=5FSTRIP+set}" =3D set; then=0A+ echo $ECHO=5FN "(cached) $ECHO= =5FC" >&6=0A+else=0A+ if test -n "$ac=5Fct=5FSTRIP"; then=0A+ ac=5Fcv=5Fp= rog=5Fac=5Fct=5FSTRIP=3D"$ac=5Fct=5FSTRIP" # Let the user override the test= .=0A+else=0A+as=5Fsave=5FIFS=3D$IFS; IFS=3D$PATH=5FSEPARATOR=0A+for as=5Fdi= r in $PATH=0A+do=0A+ IFS=3D$as=5Fsave=5FIFS=0A+ test -z "$as=5Fdir" && as= =5Fdir=3D.=0A+ for ac=5Fexec=5Fext in '' $ac=5Fexecutable=5Fextensions; do= =0A+ if { test -f "$as=5Fdir/$ac=5Fword$ac=5Fexec=5Fext" && $as=5Ftest=5Fx= "$as=5Fdir/$ac=5Fword$ac=5Fexec=5Fext"; }; then=0A+ ac=5Fcv=5Fprog=5Fac= =5Fct=5FSTRIP=3D"strip"=0A+ echo "$as=5Fme:$LINENO: found $as=5Fdir/$ac= =5Fword$ac=5Fexec=5Fext" >&5=0A+ break 2=0A+ fi=0A+done=0A+done=0A+IFS= =3D$as=5Fsave=5FIFS=0A+=0A+fi=0A+fi=0A+ac=5Fct=5FSTRIP=3D$ac=5Fcv=5Fprog=5F= ac=5Fct=5FSTRIP=0A+if test -n "$ac=5Fct=5FSTRIP"; then=0A+ { echo "$as=5Fm= e:$LINENO: result: $ac=5Fct=5FSTRIP" >&5=0A+echo "${ECHO=5FT}$ac=5Fct=5FSTR= IP" >&6; }=0A+else=0A+ { echo "$as=5Fme:$LINENO: result: no" >&5=0A+echo "= ${ECHO=5FT}no" >&6; }=0A+fi=0A+=0A+ if test "x$ac=5Fct=5FSTRIP" =3D x; the= n=0A+ STRIP=3D":"=0A+ else=0A+ case $cross=5Fcompiling:$ac=5Ftool=5F= warned in=0A+yes:)=0A+{ echo "$as=5Fme:$LINENO: WARNING: In the future, Aut= oconf will not detect cross-tools=0A+whose name does not start with the hos= t triplet. If you think this=0A+configuration is useful to you, please wri= te to autoconf@gnu.org." >&5=0A+echo "$as=5Fme: WARNING: In the future, Aut= oconf will not detect cross-tools=0A+whose name does not start with the hos= t triplet. If you think this=0A+configuration is useful to you, please wri= te to autoconf@gnu.org." >&2;}=0A+ac=5Ftool=5Fwarned=3Dyes ;;=0A+esac=0A+ = STRIP=3D$ac=5Fct=5FSTRIP=0A+ fi=0A+else=0A+ STRIP=3D"$ac=5Fcv=5Fprog=5F= STRIP"=0A+fi=0A+=0A+fi=0A+INSTALL=5FSTRIP=5FPROGRAM=3D"\$(install=5Fsh) -c = -s"=0A+=0A+# We need awk for the "check" target. The system "awk" is bad o= n=0A+# some platforms.=0A+# Always define AMTAR for backward compatibility.= =0A+=0A+AMTAR=3D${AMTAR-"${am=5Fmissing=5Frun}tar"}=0A+=0A+am=5F=5Ftar=3D'$= {AMTAR} chof - "$$tardir"'; am=5F=5Funtar=3D'${AMTAR} xf -'=0A+=0A+=0A+=0A+= =0A+=0A+=0A+ac=5Fconfig=5Fheaders=3D"$ac=5Fconfig=5Fheaders config.h"=0A+= =0A+# Make sure we can run config.sub.=0A+$SHELL "$ac=5Faux=5Fdir/config.su= b" sun4 >/dev/null 2>&1 ||=0A+ { { echo "$as=5Fme:$LINENO: error: cannot r= un $SHELL $ac=5Faux=5Fdir/config.sub" >&5=0A+echo "$as=5Fme: error: cannot = run $SHELL $ac=5Faux=5Fdir/config.sub" >&2;}=0A+ { (exit 1); exit 1; }; }= =0A+=0A+{ echo "$as=5Fme:$LINENO: checking build system type" >&5=0A+echo $= ECHO=5FN "checking build system type... $ECHO=5FC" >&6; }=0A+if test "${ac= =5Fcv=5Fbuild+set}" =3D set; then=0A+ echo $ECHO=5FN "(cached) $ECHO=5FC" = >&6=0A+else=0A+ ac=5Fbuild=5Falias=3D$build=5Falias=0A+test "x$ac=5Fbuild= =5Falias" =3D x &&=0A+ ac=5Fbuild=5Falias=3D`$SHELL "$ac=5Faux=5Fdir/confi= g.guess"`=0A+test "x$ac=5Fbuild=5Falias" =3D x &&=0A+ { { echo "$as=5Fme:$= LINENO: error: cannot guess build type; you must specify one" >&5=0A+echo "= $as=5Fme: error: cannot guess build type; you must specify one" >&2;}=0A+ = { (exit 1); exit 1; }; }=0A+ac=5Fcv=5Fbuild=3D`$SHELL "$ac=5Faux=5Fdir/con= fig.sub" $ac=5Fbuild=5Falias` ||=0A+ { { echo "$as=5Fme:$LINENO: error: $S= HELL $ac=5Faux=5Fdir/config.sub $ac=5Fbuild=5Falias failed" >&5=0A+echo "$a= s=5Fme: error: $SHELL $ac=5Faux=5Fdir/config.sub $ac=5Fbuild=5Falias failed= " >&2;}=0A+ { (exit 1); exit 1; }; }=0A+=0A+fi=0A+{ echo "$as=5Fme:$LINEN= O: result: $ac=5Fcv=5Fbuild" >&5=0A+echo "${ECHO=5FT}$ac=5Fcv=5Fbuild" >&6;= }=0A+case $ac=5Fcv=5Fbuild in=0A+*-*-*) ;;=0A+*) { { echo "$as=5Fme:$LINEN= O: error: invalid value of canonical build" >&5=0A+echo "$as=5Fme: error: i= nvalid value of canonical build" >&2;}=0A+ { (exit 1); exit 1; }; };;=0A+= esac=0A+build=3D$ac=5Fcv=5Fbuild=0A+ac=5Fsave=5FIFS=3D$IFS; IFS=3D'-'=0A+se= t x $ac=5Fcv=5Fbuild=0A+shift=0A+build=5Fcpu=3D$1=0A+build=5Fvendor=3D$2=0A= +shift; shift=0A+# Remember, the first character of IFS is used to create $= *,=0A+# except with old shells:=0A+build=5Fos=3D$*=0A+IFS=3D$ac=5Fsave=5FIF= S=0A+case $build=5Fos in *\ *) build=5Fos=3D`echo "$build=5Fos" | sed 's/ /= -/g'`;; esac=0A+=0A+=0A+{ echo "$as=5Fme:$LINENO: checking host system type= " >&5=0A+echo $ECHO=5FN "checking host system type... $ECHO=5FC" >&6; }=0A+= if test "${ac=5Fcv=5Fhost+set}" =3D set; then=0A+ echo $ECHO=5FN "(cached)= $ECHO=5FC" >&6=0A+else=0A+ if test "x$host=5Falias" =3D x; then=0A+ ac= =5Fcv=5Fhost=3D$ac=5Fcv=5Fbuild=0A+else=0A+ ac=5Fcv=5Fhost=3D`$SHELL "$ac= =5Faux=5Fdir/config.sub" $host=5Falias` ||=0A+ { { echo "$as=5Fme:$LINEN= O: error: $SHELL $ac=5Faux=5Fdir/config.sub $host=5Falias failed" >&5=0A+ec= ho "$as=5Fme: error: $SHELL $ac=5Faux=5Fdir/config.sub $host=5Falias failed= " >&2;}=0A+ { (exit 1); exit 1; }; }=0A+fi=0A+=0A+fi=0A+{ echo "$as=5Fme:= $LINENO: result: $ac=5Fcv=5Fhost" >&5=0A+echo "${ECHO=5FT}$ac=5Fcv=5Fhost" = >&6; }=0A+case $ac=5Fcv=5Fhost in=0A+*-*-*) ;;=0A+*) { { echo "$as=5Fme:$LI= NENO: error: invalid value of canonical host" >&5=0A+echo "$as=5Fme: error:= invalid value of canonical host" >&2;}=0A+ { (exit 1); exit 1; }; };;=0A= +esac=0A+host=3D$ac=5Fcv=5Fhost=0A+ac=5Fsave=5FIFS=3D$IFS; IFS=3D'-'=0A+set= x $ac=5Fcv=5Fhost=0A+shift=0A+host=5Fcpu=3D$1=0A+host=5Fvendor=3D$2=0A+shi= ft; shift=0A+# Remember, the first character of IFS is used to create $*,= =0A+# except with old shells:=0A+host=5Fos=3D$*=0A+IFS=3D$ac=5Fsave=5FIFS= =0A+case $host=5Fos in *\ *) host=5Fos=3D`echo "$host=5Fos" | sed 's/ /-/g'= `;; esac=0A+=0A+=0A+=0A+DEPDIR=3D"${am=5F=5Fleading=5Fdot}deps"=0A+=0A+ac= =5Fconfig=5Fcommands=3D"$ac=5Fconfig=5Fcommands depfiles"=0A+=0A+=0A+am=5Fm= ake=3D${MAKE-make}=0A+cat > confinc << 'END'=0A+am=5F=5Fdoit:=0A+ @echo don= e=0A+.PHONY: am=5F=5Fdoit=0A+END=0A+# If we don't find an include directive= , just comment out the code.=0A+{ echo "$as=5Fme:$LINENO: checking for styl= e of include used by $am=5Fmake" >&5=0A+echo $ECHO=5FN "checking for style = of include used by $am=5Fmake... $ECHO=5FC" >&6; }=0A+am=5F=5Finclude=3D"#"= =0A+am=5F=5Fquote=3D=0A+=5Fam=5Fresult=3Dnone=0A+# First try GNU make style= include.=0A+echo "include confinc" > confmf=0A+# We grep out `Entering dir= ectory' and `Leaving directory'=0A+# messages which can occur if `w' ends u= p in MAKEFLAGS.=0A+# In particular we don't look at `^make:' because GNU ma= ke might=0A+# be invoked under some other name (usually "gmake"), in which= =0A+# case it prints its new name instead of `make'.=0A+if test "`$am=5Fmak= e -s -f confmf 2> /dev/null | grep -v 'ing directory'`" =3D "done"; then=0A= + am=5F=5Finclude=3Dinclude=0A+ am=5F=5Fquote=3D=0A+ =5Fam=5Fresult= =3DGNU=0A+fi=0A+# Now try BSD make style include.=0A+if test "$am=5F=5Fincl= ude" =3D "#"; then=0A+ echo '.include "confinc"' > confmf=0A+ if test "= `$am=5Fmake -s -f confmf 2> /dev/null`" =3D "done"; then=0A+ am=5F=5Fi= nclude=3D.include=0A+ am=5F=5Fquote=3D"\""=0A+ =5Fam=5Fresult=3DB= SD=0A+ fi=0A+fi=0A+=0A+=0A+{ echo "$as=5Fme:$LINENO: result: $=5Fam=5Fres= ult" >&5=0A+echo "${ECHO=5FT}$=5Fam=5Fresult" >&6; }=0A+rm -f confinc confm= f=0A+=0A+# Check whether --enable-dependency-tracking was given.=0A+if test= "${enable=5Fdependency=5Ftracking+set}" =3D set; then=0A+ enableval=3D$en= able=5Fdependency=5Ftracking;=0A+fi=0A+=0A+if test "x$enable=5Fdependency= =5Ftracking" !=3D xno; then=0A+ am=5Fdepcomp=3D"$ac=5Faux=5Fdir/depcomp"= =0A+ AMDEPBACKSLASH=3D'\'=0A+fi=0A+ if test "x$enable=5Fdependency=5Ftrack= ing" !=3D xno; then=0A+ AMDEP=5FTRUE=3D=0A+ AMDEP=5FFALSE=3D'#'=0A+else= =0A+ AMDEP=5FTRUE=3D'#'=0A+ AMDEP=5FFALSE=3D=0A+fi=0A+=0A+=0A+ac=5Fext=3D= c=0A+ac=5Fcpp=3D'$CPP $CPPFLAGS'=0A+ac=5Fcompile=3D'$CC -c $CFLAGS $CPPFLAG= S conftest.$ac=5Fext >&5'=0A+ac=5Flink=3D'$CC -o conftest$ac=5Fexeext $CFLA= GS $CPPFLAGS $LDFLAGS conftest.$ac=5Fext $LIBS >&5'=0A+ac=5Fcompiler=5Fgnu= =3D$ac=5Fcv=5Fc=5Fcompiler=5Fgnu=0A+if test -n "$ac=5Ftool=5Fprefix"; then= =0A+ # Extract the first word of "${ac=5Ftool=5Fprefix}gcc", so it can be = a program name with args.=0A+set dummy ${ac=5Ftool=5Fprefix}gcc; ac=5Fword= =3D$2=0A+{ echo "$as=5Fme:$LINENO: checking for $ac=5Fword" >&5=0A+echo $EC= HO=5FN "checking for $ac=5Fword... $ECHO=5FC" >&6; }=0A+if test "${ac=5Fcv= =5Fprog=5FCC+set}" =3D set; then=0A+ echo $ECHO=5FN "(cached) $ECHO=5FC" >= &6=0A+else=0A+ if test -n "$CC"; then=0A+ ac=5Fcv=5Fprog=5FCC=3D"$CC" # L= et the user override the test.=0A+else=0A+as=5Fsave=5FIFS=3D$IFS; IFS=3D$PA= TH=5FSEPARATOR=0A+for as=5Fdir in $PATH=0A+do=0A+ IFS=3D$as=5Fsave=5FIFS= =0A+ test -z "$as=5Fdir" && as=5Fdir=3D.=0A+ for ac=5Fexec=5Fext in '' $a= c=5Fexecutable=5Fextensions; do=0A+ if { test -f "$as=5Fdir/$ac=5Fword$ac= =5Fexec=5Fext" && $as=5Ftest=5Fx "$as=5Fdir/$ac=5Fword$ac=5Fexec=5Fext"; };= then=0A+ ac=5Fcv=5Fprog=5FCC=3D"${ac=5Ftool=5Fprefix}gcc"=0A+ echo "= $as=5Fme:$LINENO: found $as=5Fdir/$ac=5Fword$ac=5Fexec=5Fext" >&5=0A+ br= eak 2=0A+ fi=0A+done=0A+done=0A+IFS=3D$as=5Fsave=5FIFS=0A+=0A+fi=0A+fi=0A+= CC=3D$ac=5Fcv=5Fprog=5FCC=0A+if test -n "$CC"; then=0A+ { echo "$as=5Fme:$= LINENO: result: $CC" >&5=0A+echo "${ECHO=5FT}$CC" >&6; }=0A+else=0A+ { ech= o "$as=5Fme:$LINENO: result: no" >&5=0A+echo "${ECHO=5FT}no" >&6; }=0A+fi= =0A+=0A+=0A+fi=0A+if test -z "$ac=5Fcv=5Fprog=5FCC"; then=0A+ ac=5Fct=5FCC= =3D$CC=0A+ # Extract the first word of "gcc", so it can be a program name = with args.=0A+set dummy gcc; ac=5Fword=3D$2=0A+{ echo "$as=5Fme:$LINENO: ch= ecking for $ac=5Fword" >&5=0A+echo $ECHO=5FN "checking for $ac=5Fword... $E= CHO=5FC" >&6; }=0A+if test "${ac=5Fcv=5Fprog=5Fac=5Fct=5FCC+set}" =3D set; = then=0A+ echo $ECHO=5FN "(cached) $ECHO=5FC" >&6=0A+else=0A+ if test -n "= $ac=5Fct=5FCC"; then=0A+ ac=5Fcv=5Fprog=5Fac=5Fct=5FCC=3D"$ac=5Fct=5FCC" #= Let the user override the test.=0A+else=0A+as=5Fsave=5FIFS=3D$IFS; IFS=3D$= PATH=5FSEPARATOR=0A+for as=5Fdir in $PATH=0A+do=0A+ IFS=3D$as=5Fsave=5FIFS= =0A+ test -z "$as=5Fdir" && as=5Fdir=3D.=0A+ for ac=5Fexec=5Fext in '' $a= c=5Fexecutable=5Fextensions; do=0A+ if { test -f "$as=5Fdir/$ac=5Fword$ac= =5Fexec=5Fext" && $as=5Ftest=5Fx "$as=5Fdir/$ac=5Fword$ac=5Fexec=5Fext"; };= then=0A+ ac=5Fcv=5Fprog=5Fac=5Fct=5FCC=3D"gcc"=0A+ echo "$as=5Fme:$L= INENO: found $as=5Fdir/$ac=5Fword$ac=5Fexec=5Fext" >&5=0A+ break 2=0A+ = fi=0A+done=0A+done=0A+IFS=3D$as=5Fsave=5FIFS=0A+=0A+fi=0A+fi=0A+ac=5Fct=5FC= C=3D$ac=5Fcv=5Fprog=5Fac=5Fct=5FCC=0A+if test -n "$ac=5Fct=5FCC"; then=0A+ = { echo "$as=5Fme:$LINENO: result: $ac=5Fct=5FCC" >&5=0A+echo "${ECHO=5FT}$= ac=5Fct=5FCC" >&6; }=0A+else=0A+ { echo "$as=5Fme:$LINENO: result: no" >&5= =0A+echo "${ECHO=5FT}no" >&6; }=0A+fi=0A+=0A+ if test "x$ac=5Fct=5FCC" =3D= x; then=0A+ CC=3D""=0A+ else=0A+ case $cross=5Fcompiling:$ac=5Ftool= =5Fwarned in=0A+yes:)=0A+{ echo "$as=5Fme:$LINENO: WARNING: In the future, = Autoconf will not detect cross-tools=0A+whose name does not start with the = host triplet. If you think this=0A+configuration is useful to you, please = write to autoconf@gnu.org." >&5=0A+echo "$as=5Fme: WARNING: In the future, = Autoconf will not detect cross-tools=0A+whose name does not start with the = host triplet. If you think this=0A+configuration is useful to you, please = write to autoconf@gnu.org." >&2;}=0A+ac=5Ftool=5Fwarned=3Dyes ;;=0A+esac=0A= + CC=3D$ac=5Fct=5FCC=0A+ fi=0A+else=0A+ CC=3D"$ac=5Fcv=5Fprog=5FCC"=0A= +fi=0A+=0A+if test -z "$CC"; then=0A+ if test -n "$ac=5Ftool=5Fpre= fix"; then=0A+ # Extract the first word of "${ac=5Ftool=5Fprefix}cc", so= it can be a program name with args.=0A+set dummy ${ac=5Ftool=5Fprefix}cc; = ac=5Fword=3D$2=0A+{ echo "$as=5Fme:$LINENO: checking for $ac=5Fword" >&5=0A= +echo $ECHO=5FN "checking for $ac=5Fword... $ECHO=5FC" >&6; }=0A+if test "$= {ac=5Fcv=5Fprog=5FCC+set}" =3D set; then=0A+ echo $ECHO=5FN "(cached) $ECH= O=5FC" >&6=0A+else=0A+ if test -n "$CC"; then=0A+ ac=5Fcv=5Fprog=5FCC=3D"= $CC" # Let the user override the test.=0A+else=0A+as=5Fsave=5FIFS=3D$IFS; I= FS=3D$PATH=5FSEPARATOR=0A+for as=5Fdir in $PATH=0A+do=0A+ IFS=3D$as=5Fsave= =5FIFS=0A+ test -z "$as=5Fdir" && as=5Fdir=3D.=0A+ for ac=5Fexec=5Fext in= '' $ac=5Fexecutable=5Fextensions; do=0A+ if { test -f "$as=5Fdir/$ac=5Fwo= rd$ac=5Fexec=5Fext" && $as=5Ftest=5Fx "$as=5Fdir/$ac=5Fword$ac=5Fexec=5Fext= "; }; then=0A+ ac=5Fcv=5Fprog=5FCC=3D"${ac=5Ftool=5Fprefix}cc"=0A+ ec= ho "$as=5Fme:$LINENO: found $as=5Fdir/$ac=5Fword$ac=5Fexec=5Fext" >&5=0A+ = break 2=0A+ fi=0A+done=0A+done=0A+IFS=3D$as=5Fsave=5FIFS=0A+=0A+fi=0A+fi= =0A+CC=3D$ac=5Fcv=5Fprog=5FCC=0A+if test -n "$CC"; then=0A+ { echo "$as=5F= me:$LINENO: result: $CC" >&5=0A+echo "${ECHO=5FT}$CC" >&6; }=0A+else=0A+ {= echo "$as=5Fme:$LINENO: result: no" >&5=0A+echo "${ECHO=5FT}no" >&6; }=0A+= fi=0A+=0A+=0A+ fi=0A+fi=0A+if test -z "$CC"; then=0A+ # Extract the first= word of "cc", so it can be a program name with args.=0A+set dummy cc; ac= =5Fword=3D$2=0A+{ echo "$as=5Fme:$LINENO: checking for $ac=5Fword" >&5=0A+e= cho $ECHO=5FN "checking for $ac=5Fword... $ECHO=5FC" >&6; }=0A+if test "${a= c=5Fcv=5Fprog=5FCC+set}" =3D set; then=0A+ echo $ECHO=5FN "(cached) $ECHO= =5FC" >&6=0A+else=0A+ if test -n "$CC"; then=0A+ ac=5Fcv=5Fprog=5FCC=3D"$= CC" # Let the user override the test.=0A+else=0A+ ac=5Fprog=5Frejected=3Dn= o=0A+as=5Fsave=5FIFS=3D$IFS; IFS=3D$PATH=5FSEPARATOR=0A+for as=5Fdir in $PA= TH=0A+do=0A+ IFS=3D$as=5Fsave=5FIFS=0A+ test -z "$as=5Fdir" && as=5Fdir= =3D.=0A+ for ac=5Fexec=5Fext in '' $ac=5Fexecutable=5Fextensions; do=0A+ = if { test -f "$as=5Fdir/$ac=5Fword$ac=5Fexec=5Fext" && $as=5Ftest=5Fx "$as= =5Fdir/$ac=5Fword$ac=5Fexec=5Fext"; }; then=0A+ if test "$as=5Fdir/$ac= =5Fword$ac=5Fexec=5Fext" =3D "/usr/ucb/cc"; then=0A+ ac=5Fprog=5Freje= cted=3Dyes=0A+ continue=0A+ fi=0A+ ac=5Fcv=5Fprog=5FCC=3D"cc"= =0A+ echo "$as=5Fme:$LINENO: found $as=5Fdir/$ac=5Fword$ac=5Fexec=5Fext"= >&5=0A+ break 2=0A+ fi=0A+done=0A+done=0A+IFS=3D$as=5Fsave=5FIFS=0A+= =0A+if test $ac=5Fprog=5Frejected =3D yes; then=0A+ # We found a bogon in = the path, so make sure we never use it.=0A+ set dummy $ac=5Fcv=5Fprog=5FCC= =0A+ shift=0A+ if test $# !=3D 0; then=0A+ # We chose a different comp= iler from the bogus one.=0A+ # However, it has the same basename, so the= bogon will be chosen=0A+ # first if we set CC to just the basename; use= the full file name.=0A+ shift=0A+ ac=5Fcv=5Fprog=5FCC=3D"$as=5Fdir/$= ac=5Fword${1+' '}$@"=0A+ fi=0A+fi=0A+fi=0A+fi=0A+CC=3D$ac=5Fcv=5Fprog=5FCC= =0A+if test -n "$CC"; then=0A+ { echo "$as=5Fme:$LINENO: result: $CC" >&5= =0A+echo "${ECHO=5FT}$CC" >&6; }=0A+else=0A+ { echo "$as=5Fme:$LINENO: res= ult: no" >&5=0A+echo "${ECHO=5FT}no" >&6; }=0A+fi=0A+=0A+=0A+fi=0A+if test = -z "$CC"; then=0A+ if test -n "$ac=5Ftool=5Fprefix"; then=0A+ for ac=5Fpr= og in cl.exe=0A+ do=0A+ # Extract the first word of "$ac=5Ftool=5Fprefi= x$ac=5Fprog", so it can be a program name with args.=0A+set dummy $ac=5Ftoo= l=5Fprefix$ac=5Fprog; ac=5Fword=3D$2=0A+{ echo "$as=5Fme:$LINENO: checking = for $ac=5Fword" >&5=0A+echo $ECHO=5FN "checking for $ac=5Fword... $ECHO=5FC= " >&6; }=0A+if test "${ac=5Fcv=5Fprog=5FCC+set}" =3D set; then=0A+ echo $E= CHO=5FN "(cached) $ECHO=5FC" >&6=0A+else=0A+ if test -n "$CC"; then=0A+ a= c=5Fcv=5Fprog=5FCC=3D"$CC" # Let the user override the test.=0A+else=0A+as= =5Fsave=5FIFS=3D$IFS; IFS=3D$PATH=5FSEPARATOR=0A+for as=5Fdir in $PATH=0A+d= o=0A+ IFS=3D$as=5Fsave=5FIFS=0A+ test -z "$as=5Fdir" && as=5Fdir=3D.=0A+ = for ac=5Fexec=5Fext in '' $ac=5Fexecutable=5Fextensions; do=0A+ if { test= -f "$as=5Fdir/$ac=5Fword$ac=5Fexec=5Fext" && $as=5Ftest=5Fx "$as=5Fdir/$ac= =5Fword$ac=5Fexec=5Fext"; }; then=0A+ ac=5Fcv=5Fprog=5FCC=3D"$ac=5Ftool= =5Fprefix$ac=5Fprog"=0A+ echo "$as=5Fme:$LINENO: found $as=5Fdir/$ac=5Fw= ord$ac=5Fexec=5Fext" >&5=0A+ break 2=0A+ fi=0A+done=0A+done=0A+IFS=3D$a= s=5Fsave=5FIFS=0A+=0A+fi=0A+fi=0A+CC=3D$ac=5Fcv=5Fprog=5FCC=0A+if test -n "= $CC"; then=0A+ { echo "$as=5Fme:$LINENO: result: $CC" >&5=0A+echo "${ECHO= =5FT}$CC" >&6; }=0A+else=0A+ { echo "$as=5Fme:$LINENO: result: no" >&5=0A+= echo "${ECHO=5FT}no" >&6; }=0A+fi=0A+=0A+=0A+ test -n "$CC" && break=0A+= done=0A+fi=0A+if test -z "$CC"; then=0A+ ac=5Fct=5FCC=3D$CC=0A+ for ac= =5Fprog in cl.exe=0A+do=0A+ # Extract the first word of "$ac=5Fprog", so i= t can be a program name with args.=0A+set dummy $ac=5Fprog; ac=5Fword=3D$2= =0A+{ echo "$as=5Fme:$LINENO: checking for $ac=5Fword" >&5=0A+echo $ECHO=5F= N "checking for $ac=5Fword... $ECHO=5FC" >&6; }=0A+if test "${ac=5Fcv=5Fpro= g=5Fac=5Fct=5FCC+set}" =3D set; then=0A+ echo $ECHO=5FN "(cached) $ECHO=5F= C" >&6=0A+else=0A+ if test -n "$ac=5Fct=5FCC"; then=0A+ ac=5Fcv=5Fprog=5F= ac=5Fct=5FCC=3D"$ac=5Fct=5FCC" # Let the user override the test.=0A+else=0A= +as=5Fsave=5FIFS=3D$IFS; IFS=3D$PATH=5FSEPARATOR=0A+for as=5Fdir in $PATH= =0A+do=0A+ IFS=3D$as=5Fsave=5FIFS=0A+ test -z "$as=5Fdir" && as=5Fdir=3D.= =0A+ for ac=5Fexec=5Fext in '' $ac=5Fexecutable=5Fextensions; do=0A+ if {= test -f "$as=5Fdir/$ac=5Fword$ac=5Fexec=5Fext" && $as=5Ftest=5Fx "$as=5Fdi= r/$ac=5Fword$ac=5Fexec=5Fext"; }; then=0A+ ac=5Fcv=5Fprog=5Fac=5Fct=5FCC= =3D"$ac=5Fprog"=0A+ echo "$as=5Fme:$LINENO: found $as=5Fdir/$ac=5Fword$a= c=5Fexec=5Fext" >&5=0A+ break 2=0A+ fi=0A+done=0A+done=0A+IFS=3D$as=5Fs= ave=5FIFS=0A+=0A+fi=0A+fi=0A+ac=5Fct=5FCC=3D$ac=5Fcv=5Fprog=5Fac=5Fct=5FCC= =0A+if test -n "$ac=5Fct=5FCC"; then=0A+ { echo "$as=5Fme:$LINENO: result:= $ac=5Fct=5FCC" >&5=0A+echo "${ECHO=5FT}$ac=5Fct=5FCC" >&6; }=0A+else=0A+ = { echo "$as=5Fme:$LINENO: result: no" >&5=0A+echo "${ECHO=5FT}no" >&6; }=0A= +fi=0A+=0A+=0A+ test -n "$ac=5Fct=5FCC" && break=0A+done=0A+=0A+ if test = "x$ac=5Fct=5FCC" =3D x; then=0A+ CC=3D""=0A+ else=0A+ case $cross=5F= compiling:$ac=5Ftool=5Fwarned in=0A+yes:)=0A+{ echo "$as=5Fme:$LINENO: WARN= ING: In the future, Autoconf will not detect cross-tools=0A+whose name does= not start with the host triplet. If you think this=0A+configuration is us= eful to you, please write to autoconf@gnu.org." >&5=0A+echo "$as=5Fme: WARN= ING: In the future, Autoconf will not detect cross-tools=0A+whose name does= not start with the host triplet. If you think this=0A+configuration is us= eful to you, please write to autoconf@gnu.org." >&2;}=0A+ac=5Ftool=5Fwarned= =3Dyes ;;=0A+esac=0A+ CC=3D$ac=5Fct=5FCC=0A+ fi=0A+fi=0A+=0A+fi=0A+=0A+= =0A+test -z "$CC" && { { echo "$as=5Fme:$LINENO: error: no acceptable C com= piler found in \$PATH=0A+See \`config.log' for more details." >&5=0A+echo "= $as=5Fme: error: no acceptable C compiler found in \$PATH=0A+See \`config.l= og' for more details." >&2;}=0A+ { (exit 1); exit 1; }; }=0A+=0A+# Provid= e some information about the compiler.=0A+echo "$as=5Fme:$LINENO: checking = for C compiler version" >&5=0A+ac=5Fcompiler=3D`set X $ac=5Fcompile; echo $= 2`=0A+{ (ac=5Ftry=3D"$ac=5Fcompiler --version >&5"=0A+case "(($ac=5Ftry" in= =0A+ *\"* | *\`* | *\\*) ac=5Ftry=5Fecho=3D\$ac=5Ftry;;=0A+ *) ac=5Ftry= =5Fecho=3D$ac=5Ftry;;=0A+esac=0A+eval "echo \"\$as=5Fme:$LINENO: $ac=5Ftry= =5Fecho\"") >&5=0A+ (eval "$ac=5Fcompiler --version >&5") 2>&5=0A+ ac=5Fs= tatus=3D$?=0A+ echo "$as=5Fme:$LINENO: \$? =3D $ac=5Fstatus" >&5=0A+ (exi= t $ac=5Fstatus); }=0A+{ (ac=5Ftry=3D"$ac=5Fcompiler -v >&5"=0A+case "(($ac= =5Ftry" in=0A+ *\"* | *\`* | *\\*) ac=5Ftry=5Fecho=3D\$ac=5Ftry;;=0A+ *) = ac=5Ftry=5Fecho=3D$ac=5Ftry;;=0A+esac=0A+eval "echo \"\$as=5Fme:$LINENO: $a= c=5Ftry=5Fecho\"") >&5=0A+ (eval "$ac=5Fcompiler -v >&5") 2>&5=0A+ ac=5Fs= tatus=3D$?=0A+ echo "$as=5Fme:$LINENO: \$? =3D $ac=5Fstatus" >&5=0A+ (exi= t $ac=5Fstatus); }=0A+{ (ac=5Ftry=3D"$ac=5Fcompiler -V >&5"=0A+case "(($ac= =5Ftry" in=0A+ *\"* | *\`* | *\\*) ac=5Ftry=5Fecho=3D\$ac=5Ftry;;=0A+ *) = ac=5Ftry=5Fecho=3D$ac=5Ftry;;=0A+esac=0A+eval "echo \"\$as=5Fme:$LINENO: $a= c=5Ftry=5Fecho\"") >&5=0A+ (eval "$ac=5Fcompiler -V >&5") 2>&5=0A+ ac=5Fs= tatus=3D$?=0A+ echo "$as=5Fme:$LINENO: \$? =3D $ac=5Fstatus" >&5=0A+ (exi= t $ac=5Fstatus); }=0A+=0A+cat >conftest.$ac=5Fext <<=5FACEOF=0A+/* confdefs= .h. */=0A+=5FACEOF=0A+cat confdefs.h >>conftest.$ac=5Fext=0A+cat >>conftes= t.$ac=5Fext <<=5FACEOF=0A+/* end confdefs.h. */=0A+=0A+int=0A+main ()=0A+{= =0A+=0A+ ;=0A+ return 0;=0A+}=0A+=5FACEOF=0A+ac=5Fclean=5Ffiles=5Fsave=3D= $ac=5Fclean=5Ffiles=0A+ac=5Fclean=5Ffiles=3D"$ac=5Fclean=5Ffiles a.out a.ex= e b.out"=0A+# Try to create an executable without -o first, disregard a.out= .=0A+# It will help us diagnose broken compilers, and finding out an intuit= ion=0A+# of exeext.=0A+{ echo "$as=5Fme:$LINENO: checking for C compiler de= fault output file name" >&5=0A+echo $ECHO=5FN "checking for C compiler defa= ult output file name... $ECHO=5FC" >&6; }=0A+ac=5Flink=5Fdefault=3D`echo "$= ac=5Flink" | sed 's/ -o *conftest[^ ]*//'`=0A+#=0A+# List of possible outpu= t files, starting from the most likely.=0A+# The algorithm is not robust to= junk in `.', hence go to wildcards (a.*)=0A+# only as a last resort. b.ou= t is created by i960 compilers.=0A+ac=5Ffiles=3D'a=5Fout.exe a.exe conftest= .exe a.out conftest a.* conftest.* b.out'=0A+#=0A+# The IRIX 6 linker write= s into existing files which may not be=0A+# executable, retaining their per= missions. Remove them first so a=0A+# subsequent execution test works.=0A+= ac=5Frmfiles=3D=0A+for ac=5Ffile in $ac=5Ffiles=0A+do=0A+ case $ac=5Ffile = in=0A+ *.$ac=5Fext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.b= bg | *.map | *.inf | *.o | *.obj ) ;;=0A+ * ) ac=5Frmfiles=3D"$ac=5Frmfi= les $ac=5Ffile";;=0A+ esac=0A+done=0A+rm -f $ac=5Frmfiles=0A+=0A+if { (ac= =5Ftry=3D"$ac=5Flink=5Fdefault"=0A+case "(($ac=5Ftry" in=0A+ *\"* | *\`* |= *\\*) ac=5Ftry=5Fecho=3D\$ac=5Ftry;;=0A+ *) ac=5Ftry=5Fecho=3D$ac=5Ftry;;= =0A+esac=0A+eval "echo \"\$as=5Fme:$LINENO: $ac=5Ftry=5Fecho\"") >&5=0A+ (= eval "$ac=5Flink=5Fdefault") 2>&5=0A+ ac=5Fstatus=3D$?=0A+ echo "$as=5Fme= :$LINENO: \$? =3D $ac=5Fstatus" >&5=0A+ (exit $ac=5Fstatus); }; then=0A+ = # Autoconf-2.13 could set the ac=5Fcv=5Fexeext variable to `no'.=0A+# So ig= nore a value of `no', otherwise this would lead to `EXEEXT =3D no'=0A+# in = a Makefile. We should not override ac=5Fcv=5Fexeext if it was cached,=0A+#= so that the user can short-circuit this test for compilers unknown to=0A+#= Autoconf.=0A+for ac=5Ffile in $ac=5Ffiles ''=0A+do=0A+ test -f "$ac=5Ffil= e" || continue=0A+ case $ac=5Ffile in=0A+ *.$ac=5Fext | *.xcoff | *.tds= | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.o | *.obj )=0A+ = ;;=0A+ [ab].out )=0A+ # We found the default executable, but exeext=3D''= is most=0A+ # certainly right.=0A+ break;;=0A+ *.* )=0A+ if test= "${ac=5Fcv=5Fexeext+set}" =3D set && test "$ac=5Fcv=5Fexeext" !=3D no;=0A+= then :; else=0A+ ac=5Fcv=5Fexeext=3D`expr "$ac=5Ffile" : '[^.]*\(\..*\)= '`=0A+ fi=0A+ # We set ac=5Fcv=5Fexeext here because the later test for it = is not=0A+ # safe: cross compilers may not add the suffix if given an `-o'= =0A+ # argument, so we may need to know it at that point already.=0A+ # Eve= n if this section looks crufty: it has the advantage of=0A+ # actually work= ing.=0A+ break;;=0A+ * )=0A+ break;;=0A+ esac=0A+done=0A+test "$ac=5Fcv= =5Fexeext" =3D no && ac=5Fcv=5Fexeext=3D=0A+=0A+else=0A+ ac=5Ffile=3D''=0A= +fi=0A+=0A+{ echo "$as=5Fme:$LINENO: result: $ac=5Ffile" >&5=0A+echo "${ECH= O=5FT}$ac=5Ffile" >&6; }=0A+if test -z "$ac=5Ffile"; then=0A+ echo "$as=5F= me: failed program was:" >&5=0A+sed 's/^/| /' conftest.$ac=5Fext >&5=0A+=0A= +{ { echo "$as=5Fme:$LINENO: error: C compiler cannot create executables=0A= +See \`config.log' for more details." >&5=0A+echo "$as=5Fme: error: C compi= ler cannot create executables=0A+See \`config.log' for more details." >&2;}= =0A+ { (exit 77); exit 77; }; }=0A+fi=0A+=0A+ac=5Fexeext=3D$ac=5Fcv=5Fexe= ext=0A+=0A+# Check that the compiler produces executables we can run. If n= ot, either=0A+# the compiler is broken, or we cross compile.=0A+{ echo "$as= =5Fme:$LINENO: checking whether the C compiler works" >&5=0A+echo $ECHO=5FN= "checking whether the C compiler works... $ECHO=5FC" >&6; }=0A+# FIXME: Th= ese cross compiler hacks should be removed for Autoconf 3.0=0A+# If not cro= ss compiling, check that we can run a simple program.=0A+if test "$cross=5F= compiling" !=3D yes; then=0A+ if { ac=5Ftry=3D'./$ac=5Ffile'=0A+ { (case = "(($ac=5Ftry" in=0A+ *\"* | *\`* | *\\*) ac=5Ftry=5Fecho=3D\$ac=5Ftry;;=0A= + *) ac=5Ftry=5Fecho=3D$ac=5Ftry;;=0A+esac=0A+eval "echo \"\$as=5Fme:$LINE= NO: $ac=5Ftry=5Fecho\"") >&5=0A+ (eval "$ac=5Ftry") 2>&5=0A+ ac=5Fstatus= =3D$?=0A+ echo "$as=5Fme:$LINENO: \$? =3D $ac=5Fstatus" >&5=0A+ (exit $ac= =5Fstatus); }; }; then=0A+ cross=5Fcompiling=3Dno=0A+ else=0A+ if te= st "$cross=5Fcompiling" =3D maybe; then=0A+ cross=5Fcompiling=3Dyes=0A+ = else=0A+ { { echo "$as=5Fme:$LINENO: error: cannot run C compiled programs.= =0A+If you meant to cross compile, use \`--host'.=0A+See \`config.log' for = more details." >&5=0A+echo "$as=5Fme: error: cannot run C compiled programs= .=0A+If you meant to cross compile, use \`--host'.=0A+See \`config.log' for= more details." >&2;}=0A+ { (exit 1); exit 1; }; }=0A+ fi=0A+ fi=0A+f= i=0A+{ echo "$as=5Fme:$LINENO: result: yes" >&5=0A+echo "${ECHO=5FT}yes" >&= 6; }=0A+=0A+rm -f a.out a.exe conftest$ac=5Fcv=5Fexeext b.out=0A+ac=5Fclean= =5Ffiles=3D$ac=5Fclean=5Ffiles=5Fsave=0A+# Check that the compiler produces= executables we can run. If not, either=0A+# the compiler is broken, or we= cross compile.=0A+{ echo "$as=5Fme:$LINENO: checking whether we are cross = compiling" >&5=0A+echo $ECHO=5FN "checking whether we are cross compiling..= . $ECHO=5FC" >&6; }=0A+{ echo "$as=5Fme:$LINENO: result: $cross=5Fcompiling= " >&5=0A+echo "${ECHO=5FT}$cross=5Fcompiling" >&6; }=0A+=0A+{ echo "$as=5Fm= e:$LINENO: checking for suffix of executables" >&5=0A+echo $ECHO=5FN "check= ing for suffix of executables... $ECHO=5FC" >&6; }=0A+if { (ac=5Ftry=3D"$ac= =5Flink"=0A+case "(($ac=5Ftry" in=0A+ *\"* | *\`* | *\\*) ac=5Ftry=5Fecho= =3D\$ac=5Ftry;;=0A+ *) ac=5Ftry=5Fecho=3D$ac=5Ftry;;=0A+esac=0A+eval "echo= \"\$as=5Fme:$LINENO: $ac=5Ftry=5Fecho\"") >&5=0A+ (eval "$ac=5Flink") 2>&= 5=0A+ ac=5Fstatus=3D$?=0A+ echo "$as=5Fme:$LINENO: \$? =3D $ac=5Fstatus" = >&5=0A+ (exit $ac=5Fstatus); }; then=0A+ # If both `conftest.exe' and `co= nftest' are `present' (well, observable)=0A+# catch `conftest.exe'. For in= stance with Cygwin, `ls conftest' will=0A+# work properly (i.e., refer to `= conftest.exe'), while it won't with=0A+# `rm'.=0A+for ac=5Ffile in conftest= .exe conftest conftest.*; do=0A+ test -f "$ac=5Ffile" || continue=0A+ cas= e $ac=5Ffile in=0A+ *.$ac=5Fext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM= | *.bb | *.bbg | *.map | *.inf | *.o | *.obj ) ;;=0A+ *.* ) ac=5Fcv=5Fe= xeext=3D`expr "$ac=5Ffile" : '[^.]*\(\..*\)'`=0A+ break;;=0A+ * ) brea= k;;=0A+ esac=0A+done=0A+else=0A+ { { echo "$as=5Fme:$LINENO: error: canno= t compute suffix of executables: cannot compile and link=0A+See \`config.lo= g' for more details." >&5=0A+echo "$as=5Fme: error: cannot compute suffix o= f executables: cannot compile and link=0A+See \`config.log' for more detail= s." >&2;}=0A+ { (exit 1); exit 1; }; }=0A+fi=0A+=0A+rm -f conftest$ac=5Fc= v=5Fexeext=0A+{ echo "$as=5Fme:$LINENO: result: $ac=5Fcv=5Fexeext" >&5=0A+e= cho "${ECHO=5FT}$ac=5Fcv=5Fexeext" >&6; }=0A+=0A+rm -f conftest.$ac=5Fext= =0A+EXEEXT=3D$ac=5Fcv=5Fexeext=0A+ac=5Fexeext=3D$EXEEXT=0A+{ echo "$as=5Fme= :$LINENO: checking for suffix of object files" >&5=0A+echo $ECHO=5FN "check= ing for suffix of object files... $ECHO=5FC" >&6; }=0A+if test "${ac=5Fcv= =5Fobjext+set}" =3D set; then=0A+ echo $ECHO=5FN "(cached) $ECHO=5FC" >&6= =0A+else=0A+ cat >conftest.$ac=5Fext <<=5FACEOF=0A+/* confdefs.h. */=0A+= =5FACEOF=0A+cat confdefs.h >>conftest.$ac=5Fext=0A+cat >>conftest.$ac=5Fext= <<=5FACEOF=0A+/* end confdefs.h. */=0A+=0A+int=0A+main ()=0A+{=0A+=0A+ ;= =0A+ return 0;=0A+}=0A+=5FACEOF=0A+rm -f conftest.o conftest.obj=0A+if { (= ac=5Ftry=3D"$ac=5Fcompile"=0A+case "(($ac=5Ftry" in=0A+ *\"* | *\`* | *\\*= ) ac=5Ftry=5Fecho=3D\$ac=5Ftry;;=0A+ *) ac=5Ftry=5Fecho=3D$ac=5Ftry;;=0A+e= sac=0A+eval "echo \"\$as=5Fme:$LINENO: $ac=5Ftry=5Fecho\"") >&5=0A+ (eval = "$ac=5Fcompile") 2>&5=0A+ ac=5Fstatus=3D$?=0A+ echo "$as=5Fme:$LINENO: \$= ? =3D $ac=5Fstatus" >&5=0A+ (exit $ac=5Fstatus); }; then=0A+ for ac=5Ffil= e in conftest.o conftest.obj conftest.*; do=0A+ test -f "$ac=5Ffile" || co= ntinue;=0A+ case $ac=5Ffile in=0A+ *.$ac=5Fext | *.xcoff | *.tds | *.d = | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf ) ;;=0A+ *) ac=5Fcv=5Fob= jext=3D`expr "$ac=5Ffile" : '.*\.\(.*\)'`=0A+ break;;=0A+ esac=0A+do= ne=0A+else=0A+ echo "$as=5Fme: failed program was:" >&5=0A+sed 's/^/| /' c= onftest.$ac=5Fext >&5=0A+=0A+{ { echo "$as=5Fme:$LINENO: error: cannot comp= ute suffix of object files: cannot compile=0A+See \`config.log' for more de= tails." >&5=0A+echo "$as=5Fme: error: cannot compute suffix of object files= : cannot compile=0A+See \`config.log' for more details." >&2;}=0A+ { (exi= t 1); exit 1; }; }=0A+fi=0A+=0A+rm -f conftest.$ac=5Fcv=5Fobjext conftest.$= ac=5Fext=0A+fi=0A+{ echo "$as=5Fme:$LINENO: result: $ac=5Fcv=5Fobjext" >&5= =0A+echo "${ECHO=5FT}$ac=5Fcv=5Fobjext" >&6; }=0A+OBJEXT=3D$ac=5Fcv=5Fobjex= t=0A+ac=5Fobjext=3D$OBJEXT=0A+{ echo "$as=5Fme:$LINENO: checking whether we= are using the GNU C compiler" >&5=0A+echo $ECHO=5FN "checking whether we a= re using the GNU C compiler... $ECHO=5FC" >&6; }=0A+if test "${ac=5Fcv=5Fc= =5Fcompiler=5Fgnu+set}" =3D set; then=0A+ echo $ECHO=5FN "(cached) $ECHO= =5FC" >&6=0A+else=0A+ cat >conftest.$ac=5Fext <<=5FACEOF=0A+/* confdefs.h.= */=0A+=5FACEOF=0A+cat confdefs.h >>conftest.$ac=5Fext=0A+cat >>conftest.$= ac=5Fext <<=5FACEOF=0A+/* end confdefs.h. */=0A+=0A+int=0A+main ()=0A+{=0A= +#ifndef =5F=5FGNUC=5F=5F=0A+ choke me=0A+#endif=0A+=0A+ ;=0A+ retu= rn 0;=0A+}=0A+=5FACEOF=0A+rm -f conftest.$ac=5Fobjext=0A+if { (ac=5Ftry=3D"= $ac=5Fcompile"=0A+case "(($ac=5Ftry" in=0A+ *\"* | *\`* | *\\*) ac=5Ftry= =5Fecho=3D\$ac=5Ftry;;=0A+ *) ac=5Ftry=5Fecho=3D$ac=5Ftry;;=0A+esac=0A+eva= l "echo \"\$as=5Fme:$LINENO: $ac=5Ftry=5Fecho\"") >&5=0A+ (eval "$ac=5Fcom= pile") 2>conftest.er1=0A+ ac=5Fstatus=3D$?=0A+ grep -v '^ *+' conftest.er= 1 >conftest.err=0A+ rm -f conftest.er1=0A+ cat conftest.err >&5=0A+ echo= "$as=5Fme:$LINENO: \$? =3D $ac=5Fstatus" >&5=0A+ (exit $ac=5Fstatus); } &= & {=0A+ test -z "$ac=5Fc=5Fwerror=5Fflag" ||=0A+ test ! -s conftest.err= =0A+ } && test -s conftest.$ac=5Fobjext; then=0A+ ac=5Fcompiler=5Fgn= u=3Dyes=0A+else=0A+ echo "$as=5Fme: failed program was:" >&5=0A+sed 's/^/|= /' conftest.$ac=5Fext >&5=0A+=0A+ ac=5Fcompiler=5Fgnu=3Dno=0A+fi=0A+=0A+rm= -f core conftest.err conftest.$ac=5Fobjext conftest.$ac=5Fext=0A+ac=5Fcv= =5Fc=5Fcompiler=5Fgnu=3D$ac=5Fcompiler=5Fgnu=0A+=0A+fi=0A+{ echo "$as=5Fme:= $LINENO: result: $ac=5Fcv=5Fc=5Fcompiler=5Fgnu" >&5=0A+echo "${ECHO=5FT}$ac= =5Fcv=5Fc=5Fcompiler=5Fgnu" >&6; }=0A+GCC=3D`test $ac=5Fcompiler=5Fgnu =3D = yes && echo yes`=0A+ac=5Ftest=5FCFLAGS=3D${CFLAGS+set}=0A+ac=5Fsave=5FCFLAG= S=3D$CFLAGS=0A+{ echo "$as=5Fme:$LINENO: checking whether $CC accepts -g" >= &5=0A+echo $ECHO=5FN "checking whether $CC accepts -g... $ECHO=5FC" >&6; }= =0A+if test "${ac=5Fcv=5Fprog=5Fcc=5Fg+set}" =3D set; then=0A+ echo $ECHO= =5FN "(cached) $ECHO=5FC" >&6=0A+else=0A+ ac=5Fsave=5Fc=5Fwerror=5Fflag=3D= $ac=5Fc=5Fwerror=5Fflag=0A+ ac=5Fc=5Fwerror=5Fflag=3Dyes=0A+ ac=5Fcv=5F= prog=5Fcc=5Fg=3Dno=0A+ CFLAGS=3D"-g"=0A+ cat >conftest.$ac=5Fext <<=5FA= CEOF=0A+/* confdefs.h. */=0A+=5FACEOF=0A+cat confdefs.h >>conftest.$ac=5Fe= xt=0A+cat >>conftest.$ac=5Fext <<=5FACEOF=0A+/* end confdefs.h. */=0A+=0A+= int=0A+main ()=0A+{=0A+=0A+ ;=0A+ return 0;=0A+}=0A+=5FACEOF=0A+rm -f con= ftest.$ac=5Fobjext=0A+if { (ac=5Ftry=3D"$ac=5Fcompile"=0A+case "(($ac=5Ftry= " in=0A+ *\"* | *\`* | *\\*) ac=5Ftry=5Fecho=3D\$ac=5Ftry;;=0A+ *) ac=5Ft= ry=5Fecho=3D$ac=5Ftry;;=0A+esac=0A+eval "echo \"\$as=5Fme:$LINENO: $ac=5Ftr= y=5Fecho\"") >&5=0A+ (eval "$ac=5Fcompile") 2>conftest.er1=0A+ ac=5Fstatu= s=3D$?=0A+ grep -v '^ *+' conftest.er1 >conftest.err=0A+ rm -f conftest.e= r1=0A+ cat conftest.err >&5=0A+ echo "$as=5Fme:$LINENO: \$? =3D $ac=5Fsta= tus" >&5=0A+ (exit $ac=5Fstatus); } && {=0A+ test -z "$ac=5Fc=5Fwerror=5F= flag" ||=0A+ test ! -s conftest.err=0A+ } && test -s conftest.$ac=5F= objext; then=0A+ ac=5Fcv=5Fprog=5Fcc=5Fg=3Dyes=0A+else=0A+ echo "$as=5Fme= : failed program was:" >&5=0A+sed 's/^/| /' conftest.$ac=5Fext >&5=0A+=0A+ = CFLAGS=3D""=0A+ cat >conftest.$ac=5Fext <<=5FACEOF=0A+/* confdefs.h. = */=0A+=5FACEOF=0A+cat confdefs.h >>conftest.$ac=5Fext=0A+cat >>conftest.$ac= =5Fext <<=5FACEOF=0A+/* end confdefs.h. */=0A+=0A+int=0A+main ()=0A+{=0A+= =0A+ ;=0A+ return 0;=0A+}=0A+=5FACEOF=0A+rm -f conftest.$ac=5Fobjext=0A+i= f { (ac=5Ftry=3D"$ac=5Fcompile"=0A+case "(($ac=5Ftry" in=0A+ *\"* | *\`* |= *\\*) ac=5Ftry=5Fecho=3D\$ac=5Ftry;;=0A+ *) ac=5Ftry=5Fecho=3D$ac=5Ftry;;= =0A+esac=0A+eval "echo \"\$as=5Fme:$LINENO: $ac=5Ftry=5Fecho\"") >&5=0A+ (= eval "$ac=5Fcompile") 2>conftest.er1=0A+ ac=5Fstatus=3D$?=0A+ grep -v '^ = *+' conftest.er1 >conftest.err=0A+ rm -f conftest.er1=0A+ cat conftest.er= r >&5=0A+ echo "$as=5Fme:$LINENO: \$? =3D $ac=5Fstatus" >&5=0A+ (exit $ac= =5Fstatus); } && {=0A+ test -z "$ac=5Fc=5Fwerror=5Fflag" ||=0A+ test ! -s= conftest.err=0A+ } && test -s conftest.$ac=5Fobjext; then=0A+ :=0A+= else=0A+ echo "$as=5Fme: failed program was:" >&5=0A+sed 's/^/| /' conftes= t.$ac=5Fext >&5=0A+=0A+ ac=5Fc=5Fwerror=5Fflag=3D$ac=5Fsave=5Fc=5Fwerror=5F= flag=0A+ CFLAGS=3D"-g"=0A+ cat >conftest.$ac=5Fext <<=5FACEOF=0A+/* confd= efs.h. */=0A+=5FACEOF=0A+cat confdefs.h >>conftest.$ac=5Fext=0A+cat >>conf= test.$ac=5Fext <<=5FACEOF=0A+/* end confdefs.h. */=0A+=0A+int=0A+main ()= =0A+{=0A+=0A+ ;=0A+ return 0;=0A+}=0A+=5FACEOF=0A+rm -f conftest.$ac=5Fob= jext=0A+if { (ac=5Ftry=3D"$ac=5Fcompile"=0A+case "(($ac=5Ftry" in=0A+ *\"*= | *\`* | *\\*) ac=5Ftry=5Fecho=3D\$ac=5Ftry;;=0A+ *) ac=5Ftry=5Fecho=3D$a= c=5Ftry;;=0A+esac=0A+eval "echo \"\$as=5Fme:$LINENO: $ac=5Ftry=5Fecho\"") >= &5=0A+ (eval "$ac=5Fcompile") 2>conftest.er1=0A+ ac=5Fstatus=3D$?=0A+ gr= ep -v '^ *+' conftest.er1 >conftest.err=0A+ rm -f conftest.er1=0A+ cat co= nftest.err >&5=0A+ echo "$as=5Fme:$LINENO: \$? =3D $ac=5Fstatus" >&5=0A+ = (exit $ac=5Fstatus); } && {=0A+ test -z "$ac=5Fc=5Fwerror=5Fflag" ||=0A+ = test ! -s conftest.err=0A+ } && test -s conftest.$ac=5Fobjext; then= =0A+ ac=5Fcv=5Fprog=5Fcc=5Fg=3Dyes=0A+else=0A+ echo "$as=5Fme: failed pro= gram was:" >&5=0A+sed 's/^/| /' conftest.$ac=5Fext >&5=0A+=0A+=0A+fi=0A+=0A= +rm -f core conftest.err conftest.$ac=5Fobjext conftest.$ac=5Fext=0A+fi=0A+= =0A+rm -f core conftest.err conftest.$ac=5Fobjext conftest.$ac=5Fext=0A+fi= =0A+=0A+rm -f core conftest.err conftest.$ac=5Fobjext conftest.$ac=5Fext=0A= + ac=5Fc=5Fwerror=5Fflag=3D$ac=5Fsave=5Fc=5Fwerror=5Fflag=0A+fi=0A+{ echo= "$as=5Fme:$LINENO: result: $ac=5Fcv=5Fprog=5Fcc=5Fg" >&5=0A+echo "${ECHO= =5FT}$ac=5Fcv=5Fprog=5Fcc=5Fg" >&6; }=0A+if test "$ac=5Ftest=5FCFLAGS" =3D = set; then=0A+ CFLAGS=3D$ac=5Fsave=5FCFLAGS=0A+elif test $ac=5Fcv=5Fprog=5F= cc=5Fg =3D yes; then=0A+ if test "$GCC" =3D yes; then=0A+ CFLAGS=3D"-g = -O2"=0A+ else=0A+ CFLAGS=3D"-g"=0A+ fi=0A+else=0A+ if test "$GCC" =3D= yes; then=0A+ CFLAGS=3D"-O2"=0A+ else=0A+ CFLAGS=3D=0A+ fi=0A+fi= =0A+{ echo "$as=5Fme:$LINENO: checking for $CC option to accept ISO C89" >&= 5=0A+echo $ECHO=5FN "checking for $CC option to accept ISO C89... $ECHO=5FC= " >&6; }=0A+if test "${ac=5Fcv=5Fprog=5Fcc=5Fc89+set}" =3D set; then=0A+ e= cho $ECHO=5FN "(cached) $ECHO=5FC" >&6=0A+else=0A+ ac=5Fcv=5Fprog=5Fcc=5Fc= 89=3Dno=0A+ac=5Fsave=5FCC=3D$CC=0A+cat >conftest.$ac=5Fext <<=5FACEOF=0A+/*= confdefs.h. */=0A+=5FACEOF=0A+cat confdefs.h >>conftest.$ac=5Fext=0A+cat = >>conftest.$ac=5Fext <<=5FACEOF=0A+/* end confdefs.h. */=0A+#include =0A+#include =0A+#include =0A+#include =0A+/* Most of the following tests are stolen from RCS 5.7's src/conf.sh= . */=0A+struct buf { int x; };=0A+FILE * (*rcsopen) (struct buf *, struct = stat *, int);=0A+static char *e (p, i)=0A+ char **p;=0A+ int i;=0A+= {=0A+ return p[i];=0A+}=0A+static char *f (char * (*g) (char **, int), cha= r **p, ...)=0A+{=0A+ char *s;=0A+ va=5Flist v;=0A+ va=5Fstart (v,p);=0A+= s =3D g (p, va=5Farg (v,int));=0A+ va=5Fend (v);=0A+ return s;=0A+}=0A+= =0A+/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has=0A= + function prototypes and stuff, but not '\xHH' hex character constants.= =0A+ These don't provoke an error unfortunately, instead are silently tre= ated=0A+ as 'x'. The following induces an error, until -std is added to = get=0A+ proper ANSI mode. Curiously '\x00'!=3D'x' always comes out true,= for an=0A+ array size at least. It's necessary to write '\x00'=3D=3D0 t= o get something=0A+ that's true only with -std. */=0A+int osf4=5Fcc=5Far= ray ['\x00' =3D=3D 0 ? 1 : -1];=0A+=0A+/* IBM C 6 for AIX is almost-ANSI by= default, but it replaces macro parameters=0A+ inside strings and charact= er constants. */=0A+#define FOO(x) 'x'=0A+int xlc6=5Fcc=5Farray[FOO(a) =3D= =3D 'x' ? 1 : -1];=0A+=0A+int test (int i, double x);=0A+struct s1 {int (*f= ) (int a);};=0A+struct s2 {int (*f) (double a);};=0A+int pairnames (int, ch= ar **, FILE *(*)(struct buf *, struct stat *, int), int, int);=0A+int argc;= =0A+char **argv;=0A+int=0A+main ()=0A+{=0A+return f (e, argv, 0) !=3D argv[= 0] || f (e, argv, 1) !=3D argv[1];=0A+ ;=0A+ return 0;=0A+}=0A+=5FACEOF= =0A+for ac=5Farg in '' -qlanglvl=3Dextc89 -qlanglvl=3Dansi -std \=0A+ -Ae "= -Aa -D=5FHPUX=5FSOURCE" "-Xc -D=5F=5FEXTENSIONS=5F=5F"=0A+do=0A+ CC=3D"$ac= =5Fsave=5FCC $ac=5Farg"=0A+ rm -f conftest.$ac=5Fobjext=0A+if { (ac=5Ftry= =3D"$ac=5Fcompile"=0A+case "(($ac=5Ftry" in=0A+ *\"* | *\`* | *\\*) ac=5Ft= ry=5Fecho=3D\$ac=5Ftry;;=0A+ *) ac=5Ftry=5Fecho=3D$ac=5Ftry;;=0A+esac=0A+e= val "echo \"\$as=5Fme:$LINENO: $ac=5Ftry=5Fecho\"") >&5=0A+ (eval "$ac=5Fc= ompile") 2>conftest.er1=0A+ ac=5Fstatus=3D$?=0A+ grep -v '^ *+' conftest.= er1 >conftest.err=0A+ rm -f conftest.er1=0A+ cat conftest.err >&5=0A+ ec= ho "$as=5Fme:$LINENO: \$? =3D $ac=5Fstatus" >&5=0A+ (exit $ac=5Fstatus); }= && {=0A+ test -z "$ac=5Fc=5Fwerror=5Fflag" ||=0A+ test ! -s conftest.err= =0A+ } && test -s conftest.$ac=5Fobjext; then=0A+ ac=5Fcv=5Fprog=5Fc= c=5Fc89=3D$ac=5Farg=0A+else=0A+ echo "$as=5Fme: failed program was:" >&5= =0A+sed 's/^/| /' conftest.$ac=5Fext >&5=0A+=0A+=0A+fi=0A+=0A+rm -f core co= nftest.err conftest.$ac=5Fobjext=0A+ test "x$ac=5Fcv=5Fprog=5Fcc=5Fc89" != =3D "xno" && break=0A+done=0A+rm -f conftest.$ac=5Fext=0A+CC=3D$ac=5Fsave= =5FCC=0A+=0A+fi=0A+# AC=5FCACHE=5FVAL=0A+case "x$ac=5Fcv=5Fprog=5Fcc=5Fc89"= in=0A+ x)=0A+ { echo "$as=5Fme:$LINENO: result: none needed" >&5=0A+ec= ho "${ECHO=5FT}none needed" >&6; } ;;=0A+ xno)=0A+ { echo "$as=5Fme:$LI= NENO: result: unsupported" >&5=0A+echo "${ECHO=5FT}unsupported" >&6; } ;;= =0A+ *)=0A+ CC=3D"$CC $ac=5Fcv=5Fprog=5Fcc=5Fc89"=0A+ { echo "$as=5F= me:$LINENO: result: $ac=5Fcv=5Fprog=5Fcc=5Fc89" >&5=0A+echo "${ECHO=5FT}$ac= =5Fcv=5Fprog=5Fcc=5Fc89" >&6; } ;;=0A+esac=0A+=0A+=0A+ac=5Fext=3Dc=0A+ac=5F= cpp=3D'$CPP $CPPFLAGS'=0A+ac=5Fcompile=3D'$CC -c $CFLAGS $CPPFLAGS conftest= .$ac=5Fext >&5'=0A+ac=5Flink=3D'$CC -o conftest$ac=5Fexeext $CFLAGS $CPPFLA= GS $LDFLAGS conftest.$ac=5Fext $LIBS >&5'=0A+ac=5Fcompiler=5Fgnu=3D$ac=5Fcv= =5Fc=5Fcompiler=5Fgnu=0A+=0A+depcc=3D"$CC" am=5Fcompiler=5Flist=3D=0A+=0A= +{ echo "$as=5Fme:$LINENO: checking dependency style of $depcc" >&5=0A+echo= $ECHO=5FN "checking dependency style of $depcc... $ECHO=5FC" >&6; }=0A+if = test "${am=5Fcv=5FCC=5Fdependencies=5Fcompiler=5Ftype+set}" =3D set; then= =0A+ echo $ECHO=5FN "(cached) $ECHO=5FC" >&6=0A+else=0A+ if test -z "$AMD= EP=5FTRUE" && test -f "$am=5Fdepcomp"; then=0A+ # We make a subdir and do = the tests there. Otherwise we can end up=0A+ # making bogus files that we= don't know about and never remove. For=0A+ # instance it was reported th= at on HP-UX the gcc test will end up=0A+ # making a dummy file named `D' -= - because `-MD' means `put the output=0A+ # in D'.=0A+ mkdir conftest.dir= =0A+ # Copy depcomp to subdir because otherwise we won't find it if we're= =0A+ # using a relative directory.=0A+ cp "$am=5Fdepcomp" conftest.dir=0A= + cd conftest.dir=0A+ # We will build objects and dependencies in a subdi= rectory because=0A+ # it helps to detect inapplicable dependency modes. F= or instance=0A+ # both Tru64's cc and ICC support -MD to output dependenci= es as a=0A+ # side effect of compilation, but ICC will put the dependencie= s in=0A+ # the current directory while Tru64 will put them in the object= =0A+ # directory.=0A+ mkdir sub=0A+=0A+ am=5Fcv=5FCC=5Fdependencies=5Fco= mpiler=5Ftype=3Dnone=0A+ if test "$am=5Fcompiler=5Flist" =3D ""; then=0A+ = am=5Fcompiler=5Flist=3D`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depco= mp`=0A+ fi=0A+ for depmode in $am=5Fcompiler=5Flist; do=0A+ # Setup a = source with many dependencies, because some compilers=0A+ # like to wrap= large dependency lists on column 80 (with \), and=0A+ # we should not c= hoose a depcomp mode which is confused by this.=0A+ #=0A+ # We need t= o recreate these files for each test, as the compiler may=0A+ # overwrit= e some of them when testing with obscure command lines.=0A+ # This happe= ns at least with the AIX C compiler.=0A+ : > sub/conftest.c=0A+ for i= in 1 2 3 4 5 6; do=0A+ echo '#include "conftst'$i'.h"' >> sub/conftes= t.c=0A+ # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with= =0A+ # Solaris 8's {/usr,}/bin/sh.=0A+ touch sub/conftst$i.h=0A+ = done=0A+ echo "${am=5F=5Finclude} ${am=5F=5Fquote}sub/conftest.Po${am= =5F=5Fquote}" > confmf=0A+=0A+ case $depmode in=0A+ nosideeffect)=0A+= # after this tag, mechanisms are not by side-effect, so they'll=0A+ = # only be used when explicitly requested=0A+ if test "x$enable=5Fd= ependency=5Ftracking" =3D xyes; then=0A+ continue=0A+ else=0A+ break= =0A+ fi=0A+ ;;=0A+ none) break ;;=0A+ esac=0A+ # We chec= k with `-c' and `-o' for the sake of the "dashmstdout"=0A+ # mode. It t= urns out that the SunPro C++ compiler does not properly=0A+ # handle `-M= -o', and we need to detect this.=0A+ if depmode=3D$depmode \=0A+ = source=3Dsub/conftest.c object=3Dsub/conftest.${OBJEXT-o} \=0A+ depfi= le=3Dsub/conftest.Po tmpdepfile=3Dsub/conftest.TPo \=0A+ $SHELL ./dep= comp $depcc -c -o sub/conftest.${OBJEXT-o} sub/conftest.c \=0A+ >/d= ev/null 2>conftest.err &&=0A+ grep sub/conftst1.h sub/conftest.Po > /= dev/null 2>&1 &&=0A+ grep sub/conftst6.h sub/conftest.Po > /dev/null = 2>&1 &&=0A+ grep sub/conftest.${OBJEXT-o} sub/conftest.Po > /dev/null= 2>&1 &&=0A+ ${MAKE-make} -s -f confmf > /dev/null 2>&1; then=0A+ = # icc doesn't choke on unknown options, it will just issue warnings=0A+ = # or remarks (even with -Werror). So we grep stderr for any message=0A= + # that says an option was ignored or not supported.=0A+ # When = given -MP, icc 7.0 and 7.1 complain thusly:=0A+ # icc: Command line = warning: ignoring option '-M'; no argument required=0A+ # The diagnosi= s changed in icc 8.0:=0A+ # icc: Command line remark: option '-MP' n= ot supported=0A+ if (grep 'ignoring option' conftest.err ||=0A+ = grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else=0A+ = am=5Fcv=5FCC=5Fdependencies=5Fcompiler=5Ftype=3D$depmode=0A+ bre= ak=0A+ fi=0A+ fi=0A+ done=0A+=0A+ cd ..=0A+ rm -rf conftest.dir= =0A+else=0A+ am=5Fcv=5FCC=5Fdependencies=5Fcompiler=5Ftype=3Dnone=0A+fi=0A= +=0A+fi=0A+{ echo "$as=5Fme:$LINENO: result: $am=5Fcv=5FCC=5Fdependencies= =5Fcompiler=5Ftype" >&5=0A+echo "${ECHO=5FT}$am=5Fcv=5FCC=5Fdependencies=5F= compiler=5Ftype" >&6; }=0A+CCDEPMODE=3Ddepmode=3D$am=5Fcv=5FCC=5Fdependenci= es=5Fcompiler=5Ftype=0A+=0A+ if=0A+ test "x$enable=5Fdependency=5Ftracking= " !=3D xno \=0A+ && test "$am=5Fcv=5FCC=5Fdependencies=5Fcompiler=5Ftype" = =3D gcc3; then=0A+ am=5F=5FfastdepCC=5FTRUE=3D=0A+ am=5F=5FfastdepCC=5FFA= LSE=3D'#'=0A+else=0A+ am=5F=5FfastdepCC=5FTRUE=3D'#'=0A+ am=5F=5FfastdepC= C=5FFALSE=3D=0A+fi=0A+=0A+=0A+=0A+ac=5Fext=3Dc=0A+ac=5Fcpp=3D'$CPP $CPPFLAG= S'=0A+ac=5Fcompile=3D'$CC -c $CFLAGS $CPPFLAGS conftest.$ac=5Fext >&5'=0A+a= c=5Flink=3D'$CC -o conftest$ac=5Fexeext $CFLAGS $CPPFLAGS $LDFLAGS conftest= .$ac=5Fext $LIBS >&5'=0A+ac=5Fcompiler=5Fgnu=3D$ac=5Fcv=5Fc=5Fcompiler=5Fgn= u=0A+{ echo "$as=5Fme:$LINENO: checking how to run the C preprocessor" >&5= =0A+echo $ECHO=5FN "checking how to run the C preprocessor... $ECHO=5FC" >&= 6; }=0A+# On Suns, sometimes $CPP names a directory.=0A+if test -n "$CPP" &= & test -d "$CPP"; then=0A+ CPP=3D=0A+fi=0A+if test -z "$CPP"; then=0A+ if= test "${ac=5Fcv=5Fprog=5FCPP+set}" =3D set; then=0A+ echo $ECHO=5FN "(cac= hed) $ECHO=5FC" >&6=0A+else=0A+ # Double quotes because CPP needs to b= e expanded=0A+ for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp"= =0A+ do=0A+ ac=5Fpreproc=5Fok=3Dfalse=0A+for ac=5Fc=5Fpreproc=5Fwar= n=5Fflag in '' yes=0A+do=0A+ # Use a header file that comes with gcc, so c= onfiguring glibc=0A+ # with a fresh cross-compiler works.=0A+ # Prefer to if =5F=5FSTDC=5F=5F is defined, since=0A+ # exists even on freestanding compilers.=0A+ # On the NeXT, cc -E runs t= he code through the compiler's parser,=0A+ # not just through cpp. "Syntax= error" is here to catch this case.=0A+ cat >conftest.$ac=5Fext <<=5FACEOF= =0A+/* confdefs.h. */=0A+=5FACEOF=0A+cat confdefs.h >>conftest.$ac=5Fext= =0A+cat >>conftest.$ac=5Fext <<=5FACEOF=0A+/* end confdefs.h. */=0A+#ifdef= =5F=5FSTDC=5F=5F=0A+# include =0A+#else=0A+# include = =0A+#endif=0A+ Syntax error=0A+=5FACEOF=0A+if { (ac=5Ftry=3D"$ac=5Fcp= p conftest.$ac=5Fext"=0A+case "(($ac=5Ftry" in=0A+ *\"* | *\`* | *\\*) ac= =5Ftry=5Fecho=3D\$ac=5Ftry;;=0A+ *) ac=5Ftry=5Fecho=3D$ac=5Ftry;;=0A+esac= =0A+eval "echo \"\$as=5Fme:$LINENO: $ac=5Ftry=5Fecho\"") >&5=0A+ (eval "$a= c=5Fcpp conftest.$ac=5Fext") 2>conftest.er1=0A+ ac=5Fstatus=3D$?=0A+ grep= -v '^ *+' conftest.er1 >conftest.err=0A+ rm -f conftest.er1=0A+ cat conf= test.err >&5=0A+ echo "$as=5Fme:$LINENO: \$? =3D $ac=5Fstatus" >&5=0A+ (e= xit $ac=5Fstatus); } >/dev/null && {=0A+ test -z "$ac=5Fc=5Fpreproc=5Fwarn= =5Fflag$ac=5Fc=5Fwerror=5Fflag" ||=0A+ test ! -s conftest.err=0A+ };= then=0A+ :=0A+else=0A+ echo "$as=5Fme: failed program was:" >&5=0A+sed '= s/^/| /' conftest.$ac=5Fext >&5=0A+=0A+ # Broken: fails on valid input.=0A= +continue=0A+fi=0A+=0A+rm -f conftest.err conftest.$ac=5Fext=0A+=0A+ # OK,= works on sane cases. Now check whether nonexistent headers=0A+ # can be = detected and how.=0A+ cat >conftest.$ac=5Fext <<=5FACEOF=0A+/* confdefs.h.= */=0A+=5FACEOF=0A+cat confdefs.h >>conftest.$ac=5Fext=0A+cat >>conftest.$= ac=5Fext <<=5FACEOF=0A+/* end confdefs.h. */=0A+#include =0A+=5FACEOF=0A+if { (ac=5Ftry=3D"$ac=5Fcpp conftest.$ac=5Fext"=0A+case = "(($ac=5Ftry" in=0A+ *\"* | *\`* | *\\*) ac=5Ftry=5Fecho=3D\$ac=5Ftry;;=0A= + *) ac=5Ftry=5Fecho=3D$ac=5Ftry;;=0A+esac=0A+eval "echo \"\$as=5Fme:$LINE= NO: $ac=5Ftry=5Fecho\"") >&5=0A+ (eval "$ac=5Fcpp conftest.$ac=5Fext") 2>c= onftest.er1=0A+ ac=5Fstatus=3D$?=0A+ grep -v '^ *+' conftest.er1 >conftes= t.err=0A+ rm -f conftest.er1=0A+ cat conftest.err >&5=0A+ echo "$as=5Fme= :$LINENO: \$? =3D $ac=5Fstatus" >&5=0A+ (exit $ac=5Fstatus); } >/dev/null = && {=0A+ test -z "$ac=5Fc=5Fpreproc=5Fwarn=5Fflag$ac=5Fc=5Fwerror=5Fflag" = ||=0A+ test ! -s conftest.err=0A+ }; then=0A+ # Broken: success on = invalid input.=0A+continue=0A+else=0A+ echo "$as=5Fme: failed program was:= " >&5=0A+sed 's/^/| /' conftest.$ac=5Fext >&5=0A+=0A+ # Passes both tests.= =0A+ac=5Fpreproc=5Fok=3D:=0A+break=0A+fi=0A+=0A+rm -f conftest.err conftest= .$ac=5Fext=0A+=0A+done=0A+# Because of `break', =5FAC=5FPREPROC=5FIFELSE's = cleaning code was skipped.=0A+rm -f conftest.err conftest.$ac=5Fext=0A+if $= ac=5Fpreproc=5Fok; then=0A+ break=0A+fi=0A+=0A+ done=0A+ ac=5Fcv=5Fp= rog=5FCPP=3D$CPP=0A+=0A+fi=0A+ CPP=3D$ac=5Fcv=5Fprog=5FCPP=0A+else=0A+ ac= =5Fcv=5Fprog=5FCPP=3D$CPP=0A+fi=0A+{ echo "$as=5Fme:$LINENO: result: $CPP" = >&5=0A+echo "${ECHO=5FT}$CPP" >&6; }=0A+ac=5Fpreproc=5Fok=3Dfalse=0A+for ac= =5Fc=5Fpreproc=5Fwarn=5Fflag in '' yes=0A+do=0A+ # Use a header file that = comes with gcc, so configuring glibc=0A+ # with a fresh cross-compiler wor= ks.=0A+ # Prefer to if =5F=5FSTDC=5F=5F is defined, = since=0A+ # exists even on freestanding compilers.=0A+ # On th= e NeXT, cc -E runs the code through the compiler's parser,=0A+ # not just = through cpp. "Syntax error" is here to catch this case.=0A+ cat >conftest.= $ac=5Fext <<=5FACEOF=0A+/* confdefs.h. */=0A+=5FACEOF=0A+cat confdefs.h >>= conftest.$ac=5Fext=0A+cat >>conftest.$ac=5Fext <<=5FACEOF=0A+/* end confdef= s.h. */=0A+#ifdef =5F=5FSTDC=5F=5F=0A+# include =0A+#else=0A+# i= nclude =0A+#endif=0A+ Syntax error=0A+=5FACEOF=0A+if { (ac= =5Ftry=3D"$ac=5Fcpp conftest.$ac=5Fext"=0A+case "(($ac=5Ftry" in=0A+ *\"* = | *\`* | *\\*) ac=5Ftry=5Fecho=3D\$ac=5Ftry;;=0A+ *) ac=5Ftry=5Fecho=3D$ac= =5Ftry;;=0A+esac=0A+eval "echo \"\$as=5Fme:$LINENO: $ac=5Ftry=5Fecho\"") >&= 5=0A+ (eval "$ac=5Fcpp conftest.$ac=5Fext") 2>conftest.er1=0A+ ac=5Fstatu= s=3D$?=0A+ grep -v '^ *+' conftest.er1 >conftest.err=0A+ rm -f conftest.e= r1=0A+ cat conftest.err >&5=0A+ echo "$as=5Fme:$LINENO: \$? =3D $ac=5Fsta= tus" >&5=0A+ (exit $ac=5Fstatus); } >/dev/null && {=0A+ test -z "$ac=5Fc= =5Fpreproc=5Fwarn=5Fflag$ac=5Fc=5Fwerror=5Fflag" ||=0A+ test ! -s conftest= .err=0A+ }; then=0A+ :=0A+else=0A+ echo "$as=5Fme: failed program w= as:" >&5=0A+sed 's/^/| /' conftest.$ac=5Fext >&5=0A+=0A+ # Broken: fails o= n valid input.=0A+continue=0A+fi=0A+=0A+rm -f conftest.err conftest.$ac=5Fe= xt=0A+=0A+ # OK, works on sane cases. Now check whether nonexistent heade= rs=0A+ # can be detected and how.=0A+ cat >conftest.$ac=5Fext <<=5FACEOF= =0A+/* confdefs.h. */=0A+=5FACEOF=0A+cat confdefs.h >>conftest.$ac=5Fext= =0A+cat >>conftest.$ac=5Fext <<=5FACEOF=0A+/* end confdefs.h. */=0A+#inclu= de =0A+=5FACEOF=0A+if { (ac=5Ftry=3D"$ac=5Fcpp conftest= .$ac=5Fext"=0A+case "(($ac=5Ftry" in=0A+ *\"* | *\`* | *\\*) ac=5Ftry=5Fec= ho=3D\$ac=5Ftry;;=0A+ *) ac=5Ftry=5Fecho=3D$ac=5Ftry;;=0A+esac=0A+eval "ec= ho \"\$as=5Fme:$LINENO: $ac=5Ftry=5Fecho\"") >&5=0A+ (eval "$ac=5Fcpp conf= test.$ac=5Fext") 2>conftest.er1=0A+ ac=5Fstatus=3D$?=0A+ grep -v '^ *+' c= onftest.er1 >conftest.err=0A+ rm -f conftest.er1=0A+ cat conftest.err >&5= =0A+ echo "$as=5Fme:$LINENO: \$? =3D $ac=5Fstatus" >&5=0A+ (exit $ac=5Fst= atus); } >/dev/null && {=0A+ test -z "$ac=5Fc=5Fpreproc=5Fwarn=5Fflag$ac= =5Fc=5Fwerror=5Fflag" ||=0A+ test ! -s conftest.err=0A+ }; then=0A+ = # Broken: success on invalid input.=0A+continue=0A+else=0A+ echo "$as=5Fm= e: failed program was:" >&5=0A+sed 's/^/| /' conftest.$ac=5Fext >&5=0A+=0A+= # Passes both tests.=0A+ac=5Fpreproc=5Fok=3D:=0A+break=0A+fi=0A+=0A+rm -f= conftest.err conftest.$ac=5Fext=0A+=0A+done=0A+# Because of `break', =5FAC= =5FPREPROC=5FIFELSE's cleaning code was skipped.=0A+rm -f conftest.err conf= test.$ac=5Fext=0A+if $ac=5Fpreproc=5Fok; then=0A+ :=0A+else=0A+ { { echo = "$as=5Fme:$LINENO: error: C preprocessor \"$CPP\" fails sanity check=0A+See= \`config.log' for more details." >&5=0A+echo "$as=5Fme: error: C preproces= sor \"$CPP\" fails sanity check=0A+See \`config.log' for more details." >&2= ;}=0A+ { (exit 1); exit 1; }; }=0A+fi=0A+=0A+ac=5Fext=3Dc=0A+ac=5Fcpp=3D'= $CPP $CPPFLAGS'=0A+ac=5Fcompile=3D'$CC -c $CFLAGS $CPPFLAGS conftest.$ac=5F= ext >&5'=0A+ac=5Flink=3D'$CC -o conftest$ac=5Fexeext $CFLAGS $CPPFLAGS $LDF= LAGS conftest.$ac=5Fext $LIBS >&5'=0A+ac=5Fcompiler=5Fgnu=3D$ac=5Fcv=5Fc=5F= compiler=5Fgnu=0A+=0A+=0A+{ echo "$as=5Fme:$LINENO: checking for grep that = handles long lines and -e" >&5=0A+echo $ECHO=5FN "checking for grep that ha= ndles long lines and -e... $ECHO=5FC" >&6; }=0A+if test "${ac=5Fcv=5Fpath= =5FGREP+set}" =3D set; then=0A+ echo $ECHO=5FN "(cached) $ECHO=5FC" >&6=0A= +else=0A+ # Extract the first word of "grep ggrep" to use in msg output=0A= +if test -z "$GREP"; then=0A+set dummy grep ggrep; ac=5Fprog=5Fname=3D$2=0A= +if test "${ac=5Fcv=5Fpath=5FGREP+set}" =3D set; then=0A+ echo $ECHO=5FN "= (cached) $ECHO=5FC" >&6=0A+else=0A+ ac=5Fpath=5FGREP=5Ffound=3Dfalse=0A+# = Loop through the user's path and test for each of PROGNAME-LIST=0A+as=5Fsav= e=5FIFS=3D$IFS; IFS=3D$PATH=5FSEPARATOR=0A+for as=5Fdir in $PATH$PATH=5FSEP= ARATOR/usr/xpg4/bin=0A+do=0A+ IFS=3D$as=5Fsave=5FIFS=0A+ test -z "$as=5Fd= ir" && as=5Fdir=3D.=0A+ for ac=5Fprog in grep ggrep; do=0A+ for ac=5Fexec= =5Fext in '' $ac=5Fexecutable=5Fextensions; do=0A+ ac=5Fpath=5FGREP=3D"$= as=5Fdir/$ac=5Fprog$ac=5Fexec=5Fext"=0A+ { test -f "$ac=5Fpath=5FGREP" &= & $as=5Ftest=5Fx "$ac=5Fpath=5FGREP"; } || continue=0A+ # Check for GNU = ac=5Fpath=5FGREP and select it if it is found.=0A+ # Check for GNU $ac=5Fp= ath=5FGREP=0A+case `"$ac=5Fpath=5FGREP" --version 2>&1` in=0A+*GNU*)=0A+ a= c=5Fcv=5Fpath=5FGREP=3D"$ac=5Fpath=5FGREP" ac=5Fpath=5FGREP=5Ffound=3D:;;= =0A+*)=0A+ ac=5Fcount=3D0=0A+ echo $ECHO=5FN "0123456789$ECHO=5FC" >"conf= test.in"=0A+ while :=0A+ do=0A+ cat "conftest.in" "conftest.in" >"conf= test.tmp"=0A+ mv "conftest.tmp" "conftest.in"=0A+ cp "conftest.in" "c= onftest.nl"=0A+ echo 'GREP' >> "conftest.nl"=0A+ "$ac=5Fpath=5FGREP" = -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/nul= l || break=0A+ diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || brea= k=0A+ ac=5Fcount=3D`expr $ac=5Fcount + 1`=0A+ if test $ac=5Fcount -gt= ${ac=5Fpath=5FGREP=5Fmax-0}; then=0A+ # Best one so far, save it but = keep looking for a better one=0A+ ac=5Fcv=5Fpath=5FGREP=3D"$ac=5Fpath= =5FGREP"=0A+ ac=5Fpath=5FGREP=5Fmax=3D$ac=5Fcount=0A+ fi=0A+ # 1= 0*(2^10) chars as input seems more than enough=0A+ test $ac=5Fcount -gt = 10 && break=0A+ done=0A+ rm -f conftest.in conftest.tmp conftest.nl conft= est.out;;=0A+esac=0A+=0A+=0A+ $ac=5Fpath=5FGREP=5Ffound && break 3=0A+ = done=0A+done=0A+=0A+done=0A+IFS=3D$as=5Fsave=5FIFS=0A+=0A+=0A+fi=0A+=0A+GRE= P=3D"$ac=5Fcv=5Fpath=5FGREP"=0A+if test -z "$GREP"; then=0A+ { { echo "$as= =5Fme:$LINENO: error: no acceptable $ac=5Fprog=5Fname could be found in $PA= TH$PATH=5FSEPARATOR/usr/xpg4/bin" >&5=0A+echo "$as=5Fme: error: no acceptab= le $ac=5Fprog=5Fname could be found in $PATH$PATH=5FSEPARATOR/usr/xpg4/bin"= >&2;}=0A+ { (exit 1); exit 1; }; }=0A+fi=0A+=0A+else=0A+ ac=5Fcv=5Fpath= =5FGREP=3D$GREP=0A+fi=0A+=0A+=0A+fi=0A+{ echo "$as=5Fme:$LINENO: result: $a= c=5Fcv=5Fpath=5FGREP" >&5=0A+echo "${ECHO=5FT}$ac=5Fcv=5Fpath=5FGREP" >&6; = }=0A+ GREP=3D"$ac=5Fcv=5Fpath=5FGREP"=0A+=0A+=0A+{ echo "$as=5Fme:$LINENO: = checking for egrep" >&5=0A+echo $ECHO=5FN "checking for egrep... $ECHO=5FC"= >&6; }=0A+if test "${ac=5Fcv=5Fpath=5FEGREP+set}" =3D set; then=0A+ echo = $ECHO=5FN "(cached) $ECHO=5FC" >&6=0A+else=0A+ if echo a | $GREP -E '(a|b)= ' >/dev/null 2>&1=0A+ then ac=5Fcv=5Fpath=5FEGREP=3D"$GREP -E"=0A+ else= =0A+ # Extract the first word of "egrep" to use in msg output=0A+if tes= t -z "$EGREP"; then=0A+set dummy egrep; ac=5Fprog=5Fname=3D$2=0A+if test "$= {ac=5Fcv=5Fpath=5FEGREP+set}" =3D set; then=0A+ echo $ECHO=5FN "(cached) $= ECHO=5FC" >&6=0A+else=0A+ ac=5Fpath=5FEGREP=5Ffound=3Dfalse=0A+# Loop thro= ugh the user's path and test for each of PROGNAME-LIST=0A+as=5Fsave=5FIFS= =3D$IFS; IFS=3D$PATH=5FSEPARATOR=0A+for as=5Fdir in $PATH$PATH=5FSEPARATOR/= usr/xpg4/bin=0A+do=0A+ IFS=3D$as=5Fsave=5FIFS=0A+ test -z "$as=5Fdir" && = as=5Fdir=3D.=0A+ for ac=5Fprog in egrep; do=0A+ for ac=5Fexec=5Fext in ''= $ac=5Fexecutable=5Fextensions; do=0A+ ac=5Fpath=5FEGREP=3D"$as=5Fdir/$a= c=5Fprog$ac=5Fexec=5Fext"=0A+ { test -f "$ac=5Fpath=5FEGREP" && $as=5Fte= st=5Fx "$ac=5Fpath=5FEGREP"; } || continue=0A+ # Check for GNU ac=5Fpath= =5FEGREP and select it if it is found.=0A+ # Check for GNU $ac=5Fpath=5FEG= REP=0A+case `"$ac=5Fpath=5FEGREP" --version 2>&1` in=0A+*GNU*)=0A+ ac=5Fcv= =5Fpath=5FEGREP=3D"$ac=5Fpath=5FEGREP" ac=5Fpath=5FEGREP=5Ffound=3D:;;=0A+*= )=0A+ ac=5Fcount=3D0=0A+ echo $ECHO=5FN "0123456789$ECHO=5FC" >"conftest.= in"=0A+ while :=0A+ do=0A+ cat "conftest.in" "conftest.in" >"conftest.= tmp"=0A+ mv "conftest.tmp" "conftest.in"=0A+ cp "conftest.in" "confte= st.nl"=0A+ echo 'EGREP' >> "conftest.nl"=0A+ "$ac=5Fpath=5FEGREP" 'EG= REP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break=0A+ diff "con= ftest.out" "conftest.nl" >/dev/null 2>&1 || break=0A+ ac=5Fcount=3D`expr= $ac=5Fcount + 1`=0A+ if test $ac=5Fcount -gt ${ac=5Fpath=5FEGREP=5Fmax-= 0}; then=0A+ # Best one so far, save it but keep looking for a better = one=0A+ ac=5Fcv=5Fpath=5FEGREP=3D"$ac=5Fpath=5FEGREP"=0A+ ac=5Fpa= th=5FEGREP=5Fmax=3D$ac=5Fcount=0A+ fi=0A+ # 10*(2^10) chars as input = seems more than enough=0A+ test $ac=5Fcount -gt 10 && break=0A+ done=0A= + rm -f conftest.in conftest.tmp conftest.nl conftest.out;;=0A+esac=0A+=0A= +=0A+ $ac=5Fpath=5FEGREP=5Ffound && break 3=0A+ done=0A+done=0A+=0A+don= e=0A+IFS=3D$as=5Fsave=5FIFS=0A+=0A+=0A+fi=0A+=0A+EGREP=3D"$ac=5Fcv=5Fpath= =5FEGREP"=0A+if test -z "$EGREP"; then=0A+ { { echo "$as=5Fme:$LINENO: err= or: no acceptable $ac=5Fprog=5Fname could be found in $PATH$PATH=5FSEPARATO= R/usr/xpg4/bin" >&5=0A+echo "$as=5Fme: error: no acceptable $ac=5Fprog=5Fna= me could be found in $PATH$PATH=5FSEPARATOR/usr/xpg4/bin" >&2;}=0A+ { (ex= it 1); exit 1; }; }=0A+fi=0A+=0A+else=0A+ ac=5Fcv=5Fpath=5FEGREP=3D$EGREP= =0A+fi=0A+=0A+=0A+ fi=0A+fi=0A+{ echo "$as=5Fme:$LINENO: result: $ac=5Fcv= =5Fpath=5FEGREP" >&5=0A+echo "${ECHO=5FT}$ac=5Fcv=5Fpath=5FEGREP" >&6; }=0A= + EGREP=3D"$ac=5Fcv=5Fpath=5FEGREP"=0A+=0A+=0A+=0A+{ echo "$as=5Fme:$LINENO= : checking for AIX" >&5=0A+echo $ECHO=5FN "checking for AIX... $ECHO=5FC" >= &6; }=0A+cat >conftest.$ac=5Fext <<=5FACEOF=0A+/* confdefs.h. */=0A+=5FACE= OF=0A+cat confdefs.h >>conftest.$ac=5Fext=0A+cat >>conftest.$ac=5Fext <<=5F= ACEOF=0A+/* end confdefs.h. */=0A+#ifdef =5FAIX=0A+ yes=0A+#endif=0A+=0A+= =5FACEOF=0A+if (eval "$ac=5Fcpp conftest.$ac=5Fext") 2>&5 |=0A+ $EGREP "ye= s" >/dev/null 2>&1; then=0A+ { echo "$as=5Fme:$LINENO: result: yes" >&5=0A= +echo "${ECHO=5FT}yes" >&6; }=0A+cat >>confdefs.h <<\=5FACEOF=0A+#define = =5FALL=5FSOURCE 1=0A+=5FACEOF=0A+=0A+else=0A+ { echo "$as=5Fme:$LINENO: re= sult: no" >&5=0A+echo "${ECHO=5FT}no" >&6; }=0A+fi=0A+rm -f conftest*=0A+= =0A+=0A+=0A+case "${host}" in=0A+ *aix*)=0A+ CFLAGS=3D"${CFLAGS} -D=5FT= HREAD=5FSAFE"=0A+ ;;=0A+ *linux*)=0A+ CFLAGS=3D"${CFLAGS} -D=5FREENT= RANT"=0A+ ;;=0A+ *)=0A+ echo "detected unknown platform : ${host} : = compiles may fail"=0A+ CFLAGS=3D"${CFLAGS} -D=5FREENTRANT"=0A+ ;;=0A+= esac=0A+=0A+ac=5Fext=3Dc=0A+ac=5Fcpp=3D'$CPP $CPPFLAGS'=0A+ac=5Fcompile=3D'= $CC -c $CFLAGS $CPPFLAGS conftest.$ac=5Fext >&5'=0A+ac=5Flink=3D'$CC -o con= ftest$ac=5Fexeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac=5Fext $LIBS >&5'= =0A+ac=5Fcompiler=5Fgnu=3D$ac=5Fcv=5Fc=5Fcompiler=5Fgnu=0A+if test -n "$ac= =5Ftool=5Fprefix"; then=0A+ # Extract the first word of "${ac=5Ftool=5Fpre= fix}gcc", so it can be a program name with args.=0A+set dummy ${ac=5Ftool= =5Fprefix}gcc; ac=5Fword=3D$2=0A+{ echo "$as=5Fme:$LINENO: checking for $ac= =5Fword" >&5=0A+echo $ECHO=5FN "checking for $ac=5Fword... $ECHO=5FC" >&6; = }=0A+if test "${ac=5Fcv=5Fprog=5FCC+set}" =3D set; then=0A+ echo $ECHO=5FN= "(cached) $ECHO=5FC" >&6=0A+else=0A+ if test -n "$CC"; then=0A+ ac=5Fcv= =5Fprog=5FCC=3D"$CC" # Let the user override the test.=0A+else=0A+as=5Fsave= =5FIFS=3D$IFS; IFS=3D$PATH=5FSEPARATOR=0A+for as=5Fdir in $PATH=0A+do=0A+ = IFS=3D$as=5Fsave=5FIFS=0A+ test -z "$as=5Fdir" && as=5Fdir=3D.=0A+ for ac= =5Fexec=5Fext in '' $ac=5Fexecutable=5Fextensions; do=0A+ if { test -f "$a= s=5Fdir/$ac=5Fword$ac=5Fexec=5Fext" && $as=5Ftest=5Fx "$as=5Fdir/$ac=5Fword= $ac=5Fexec=5Fext"; }; then=0A+ ac=5Fcv=5Fprog=5FCC=3D"${ac=5Ftool=5Fpref= ix}gcc"=0A+ echo "$as=5Fme:$LINENO: found $as=5Fdir/$ac=5Fword$ac=5Fexec= =5Fext" >&5=0A+ break 2=0A+ fi=0A+done=0A+done=0A+IFS=3D$as=5Fsave=5FIF= S=0A+=0A+fi=0A+fi=0A+CC=3D$ac=5Fcv=5Fprog=5FCC=0A+if test -n "$CC"; then=0A= + { echo "$as=5Fme:$LINENO: result: $CC" >&5=0A+echo "${ECHO=5FT}$CC" >&6;= }=0A+else=0A+ { echo "$as=5Fme:$LINENO: result: no" >&5=0A+echo "${ECHO= =5FT}no" >&6; }=0A+fi=0A+=0A+=0A+fi=0A+if test -z "$ac=5Fcv=5Fprog=5FCC"; t= hen=0A+ ac=5Fct=5FCC=3D$CC=0A+ # Extract the first word of "gcc", so it c= an be a program name with args.=0A+set dummy gcc; ac=5Fword=3D$2=0A+{ echo = "$as=5Fme:$LINENO: checking for $ac=5Fword" >&5=0A+echo $ECHO=5FN "checking= for $ac=5Fword... $ECHO=5FC" >&6; }=0A+if test "${ac=5Fcv=5Fprog=5Fac=5Fct= =5FCC+set}" =3D set; then=0A+ echo $ECHO=5FN "(cached) $ECHO=5FC" >&6=0A+e= lse=0A+ if test -n "$ac=5Fct=5FCC"; then=0A+ ac=5Fcv=5Fprog=5Fac=5Fct=5FC= C=3D"$ac=5Fct=5FCC" # Let the user override the test.=0A+else=0A+as=5Fsave= =5FIFS=3D$IFS; IFS=3D$PATH=5FSEPARATOR=0A+for as=5Fdir in $PATH=0A+do=0A+ = IFS=3D$as=5Fsave=5FIFS=0A+ test -z "$as=5Fdir" && as=5Fdir=3D.=0A+ for ac= =5Fexec=5Fext in '' $ac=5Fexecutable=5Fextensions; do=0A+ if { test -f "$a= s=5Fdir/$ac=5Fword$ac=5Fexec=5Fext" && $as=5Ftest=5Fx "$as=5Fdir/$ac=5Fword= $ac=5Fexec=5Fext"; }; then=0A+ ac=5Fcv=5Fprog=5Fac=5Fct=5FCC=3D"gcc"=0A+= echo "$as=5Fme:$LINENO: found $as=5Fdir/$ac=5Fword$ac=5Fexec=5Fext" >&5= =0A+ break 2=0A+ fi=0A+done=0A+done=0A+IFS=3D$as=5Fsave=5FIFS=0A+=0A+fi= =0A+fi=0A+ac=5Fct=5FCC=3D$ac=5Fcv=5Fprog=5Fac=5Fct=5FCC=0A+if test -n "$ac= =5Fct=5FCC"; then=0A+ { echo "$as=5Fme:$LINENO: result: $ac=5Fct=5FCC" >&5= =0A+echo "${ECHO=5FT}$ac=5Fct=5FCC" >&6; }=0A+else=0A+ { echo "$as=5Fme:$L= INENO: result: no" >&5=0A+echo "${ECHO=5FT}no" >&6; }=0A+fi=0A+=0A+ if tes= t "x$ac=5Fct=5FCC" =3D x; then=0A+ CC=3D""=0A+ else=0A+ case $cross= =5Fcompiling:$ac=5Ftool=5Fwarned in=0A+yes:)=0A+{ echo "$as=5Fme:$LINENO: W= ARNING: In the future, Autoconf will not detect cross-tools=0A+whose name d= oes not start with the host triplet. If you think this=0A+configuration is= useful to you, please write to autoconf@gnu.org." >&5=0A+echo "$as=5Fme: W= ARNING: In the future, Autoconf will not detect cross-tools=0A+whose name d= oes not start with the host triplet. If you think this=0A+configuration is= useful to you, please write to autoconf@gnu.org." >&2;}=0A+ac=5Ftool=5Fwar= ned=3Dyes ;;=0A+esac=0A+ CC=3D$ac=5Fct=5FCC=0A+ fi=0A+else=0A+ CC=3D"$= ac=5Fcv=5Fprog=5FCC"=0A+fi=0A+=0A+if test -z "$CC"; then=0A+ if te= st -n "$ac=5Ftool=5Fprefix"; then=0A+ # Extract the first word of "${ac= =5Ftool=5Fprefix}cc", so it can be a program name with args.=0A+set dummy $= {ac=5Ftool=5Fprefix}cc; ac=5Fword=3D$2=0A+{ echo "$as=5Fme:$LINENO: checkin= g for $ac=5Fword" >&5=0A+echo $ECHO=5FN "checking for $ac=5Fword... $ECHO= =5FC" >&6; }=0A+if test "${ac=5Fcv=5Fprog=5FCC+set}" =3D set; then=0A+ ech= o $ECHO=5FN "(cached) $ECHO=5FC" >&6=0A+else=0A+ if test -n "$CC"; then=0A= + ac=5Fcv=5Fprog=5FCC=3D"$CC" # Let the user override the test.=0A+else=0A= +as=5Fsave=5FIFS=3D$IFS; IFS=3D$PATH=5FSEPARATOR=0A+for as=5Fdir in $PATH= =0A+do=0A+ IFS=3D$as=5Fsave=5FIFS=0A+ test -z "$as=5Fdir" && as=5Fdir=3D.= =0A+ for ac=5Fexec=5Fext in '' $ac=5Fexecutable=5Fextensions; do=0A+ if {= test -f "$as=5Fdir/$ac=5Fword$ac=5Fexec=5Fext" && $as=5Ftest=5Fx "$as=5Fdi= r/$ac=5Fword$ac=5Fexec=5Fext"; }; then=0A+ ac=5Fcv=5Fprog=5FCC=3D"${ac= =5Ftool=5Fprefix}cc"=0A+ echo "$as=5Fme:$LINENO: found $as=5Fdir/$ac=5Fw= ord$ac=5Fexec=5Fext" >&5=0A+ break 2=0A+ fi=0A+done=0A+done=0A+IFS=3D$a= s=5Fsave=5FIFS=0A+=0A+fi=0A+fi=0A+CC=3D$ac=5Fcv=5Fprog=5FCC=0A+if test -n "= $CC"; then=0A+ { echo "$as=5Fme:$LINENO: result: $CC" >&5=0A+echo "${ECHO= =5FT}$CC" >&6; }=0A+else=0A+ { echo "$as=5Fme:$LINENO: result: no" >&5=0A+= echo "${ECHO=5FT}no" >&6; }=0A+fi=0A+=0A+=0A+ fi=0A+fi=0A+if test -z "$CC"= ; then=0A+ # Extract the first word of "cc", so it can be a program name w= ith args.=0A+set dummy cc; ac=5Fword=3D$2=0A+{ echo "$as=5Fme:$LINENO: chec= king for $ac=5Fword" >&5=0A+echo $ECHO=5FN "checking for $ac=5Fword... $ECH= O=5FC" >&6; }=0A+if test "${ac=5Fcv=5Fprog=5FCC+set}" =3D set; then=0A+ ec= ho $ECHO=5FN "(cached) $ECHO=5FC" >&6=0A+else=0A+ if test -n "$CC"; then= =0A+ ac=5Fcv=5Fprog=5FCC=3D"$CC" # Let the user override the test.=0A+else= =0A+ ac=5Fprog=5Frejected=3Dno=0A+as=5Fsave=5FIFS=3D$IFS; IFS=3D$PATH=5FSE= PARATOR=0A+for as=5Fdir in $PATH=0A+do=0A+ IFS=3D$as=5Fsave=5FIFS=0A+ tes= t -z "$as=5Fdir" && as=5Fdir=3D.=0A+ for ac=5Fexec=5Fext in '' $ac=5Fexecu= table=5Fextensions; do=0A+ if { test -f "$as=5Fdir/$ac=5Fword$ac=5Fexec=5F= ext" && $as=5Ftest=5Fx "$as=5Fdir/$ac=5Fword$ac=5Fexec=5Fext"; }; then=0A+ = if test "$as=5Fdir/$ac=5Fword$ac=5Fexec=5Fext" =3D "/usr/ucb/cc"; then= =0A+ ac=5Fprog=5Frejected=3Dyes=0A+ continue=0A+ fi=0A+ = ac=5Fcv=5Fprog=5FCC=3D"cc"=0A+ echo "$as=5Fme:$LINENO: found $as=5Fdir/$= ac=5Fword$ac=5Fexec=5Fext" >&5=0A+ break 2=0A+ fi=0A+done=0A+done=0A+IF= S=3D$as=5Fsave=5FIFS=0A+=0A+if test $ac=5Fprog=5Frejected =3D yes; then=0A+= # We found a bogon in the path, so make sure we never use it.=0A+ set du= mmy $ac=5Fcv=5Fprog=5FCC=0A+ shift=0A+ if test $# !=3D 0; then=0A+ # W= e chose a different compiler from the bogus one.=0A+ # However, it has t= he same basename, so the bogon will be chosen=0A+ # first if we set CC t= o just the basename; use the full file name.=0A+ shift=0A+ ac=5Fcv=5F= prog=5FCC=3D"$as=5Fdir/$ac=5Fword${1+' '}$@"=0A+ fi=0A+fi=0A+fi=0A+fi=0A+C= C=3D$ac=5Fcv=5Fprog=5FCC=0A+if test -n "$CC"; then=0A+ { echo "$as=5Fme:$L= INENO: result: $CC" >&5=0A+echo "${ECHO=5FT}$CC" >&6; }=0A+else=0A+ { echo= "$as=5Fme:$LINENO: result: no" >&5=0A+echo "${ECHO=5FT}no" >&6; }=0A+fi=0A= +=0A+=0A+fi=0A+if test -z "$CC"; then=0A+ if test -n "$ac=5Ftool=5Fprefix"= ; then=0A+ for ac=5Fprog in cl.exe=0A+ do=0A+ # Extract the first word= of "$ac=5Ftool=5Fprefix$ac=5Fprog", so it can be a program name with args.= =0A+set dummy $ac=5Ftool=5Fprefix$ac=5Fprog; ac=5Fword=3D$2=0A+{ echo "$as= =5Fme:$LINENO: checking for $ac=5Fword" >&5=0A+echo $ECHO=5FN "checking for= $ac=5Fword... $ECHO=5FC" >&6; }=0A+if test "${ac=5Fcv=5Fprog=5FCC+set}" = =3D set; then=0A+ echo $ECHO=5FN "(cached) $ECHO=5FC" >&6=0A+else=0A+ if = test -n "$CC"; then=0A+ ac=5Fcv=5Fprog=5FCC=3D"$CC" # Let the user overrid= e the test.=0A+else=0A+as=5Fsave=5FIFS=3D$IFS; IFS=3D$PATH=5FSEPARATOR=0A+f= or as=5Fdir in $PATH=0A+do=0A+ IFS=3D$as=5Fsave=5FIFS=0A+ test -z "$as=5F= dir" && as=5Fdir=3D.=0A+ for ac=5Fexec=5Fext in '' $ac=5Fexecutable=5Fexte= nsions; do=0A+ if { test -f "$as=5Fdir/$ac=5Fword$ac=5Fexec=5Fext" && $as= =5Ftest=5Fx "$as=5Fdir/$ac=5Fword$ac=5Fexec=5Fext"; }; then=0A+ ac=5Fcv= =5Fprog=5FCC=3D"$ac=5Ftool=5Fprefix$ac=5Fprog"=0A+ echo "$as=5Fme:$LINEN= O: found $as=5Fdir/$ac=5Fword$ac=5Fexec=5Fext" >&5=0A+ break 2=0A+ fi= =0A+done=0A+done=0A+IFS=3D$as=5Fsave=5FIFS=0A+=0A+fi=0A+fi=0A+CC=3D$ac=5Fcv= =5Fprog=5FCC=0A+if test -n "$CC"; then=0A+ { echo "$as=5Fme:$LINENO: resul= t: $CC" >&5=0A+echo "${ECHO=5FT}$CC" >&6; }=0A+else=0A+ { echo "$as=5Fme:$= LINENO: result: no" >&5=0A+echo "${ECHO=5FT}no" >&6; }=0A+fi=0A+=0A+=0A+ = test -n "$CC" && break=0A+ done=0A+fi=0A+if test -z "$CC"; then=0A+ ac= =5Fct=5FCC=3D$CC=0A+ for ac=5Fprog in cl.exe=0A+do=0A+ # Extract the firs= t word of "$ac=5Fprog", so it can be a program name with args.=0A+set dummy= $ac=5Fprog; ac=5Fword=3D$2=0A+{ echo "$as=5Fme:$LINENO: checking for $ac= =5Fword" >&5=0A+echo $ECHO=5FN "checking for $ac=5Fword... $ECHO=5FC" >&6; = }=0A+if test "${ac=5Fcv=5Fprog=5Fac=5Fct=5FCC+set}" =3D set; then=0A+ echo= $ECHO=5FN "(cached) $ECHO=5FC" >&6=0A+else=0A+ if test -n "$ac=5Fct=5FCC"= ; then=0A+ ac=5Fcv=5Fprog=5Fac=5Fct=5FCC=3D"$ac=5Fct=5FCC" # Let the user = override the test.=0A+else=0A+as=5Fsave=5FIFS=3D$IFS; IFS=3D$PATH=5FSEPARAT= OR=0A+for as=5Fdir in $PATH=0A+do=0A+ IFS=3D$as=5Fsave=5FIFS=0A+ test -z = "$as=5Fdir" && as=5Fdir=3D.=0A+ for ac=5Fexec=5Fext in '' $ac=5Fexecutable= =5Fextensions; do=0A+ if { test -f "$as=5Fdir/$ac=5Fword$ac=5Fexec=5Fext" = && $as=5Ftest=5Fx "$as=5Fdir/$ac=5Fword$ac=5Fexec=5Fext"; }; then=0A+ ac= =5Fcv=5Fprog=5Fac=5Fct=5FCC=3D"$ac=5Fprog"=0A+ echo "$as=5Fme:$LINENO: f= ound $as=5Fdir/$ac=5Fword$ac=5Fexec=5Fext" >&5=0A+ break 2=0A+ fi=0A+do= ne=0A+done=0A+IFS=3D$as=5Fsave=5FIFS=0A+=0A+fi=0A+fi=0A+ac=5Fct=5FCC=3D$ac= =5Fcv=5Fprog=5Fac=5Fct=5FCC=0A+if test -n "$ac=5Fct=5FCC"; then=0A+ { echo= "$as=5Fme:$LINENO: result: $ac=5Fct=5FCC" >&5=0A+echo "${ECHO=5FT}$ac=5Fct= =5FCC" >&6; }=0A+else=0A+ { echo "$as=5Fme:$LINENO: result: no" >&5=0A+ech= o "${ECHO=5FT}no" >&6; }=0A+fi=0A+=0A+=0A+ test -n "$ac=5Fct=5FCC" && brea= k=0A+done=0A+=0A+ if test "x$ac=5Fct=5FCC" =3D x; then=0A+ CC=3D""=0A+ = else=0A+ case $cross=5Fcompiling:$ac=5Ftool=5Fwarned in=0A+yes:)=0A+{ e= cho "$as=5Fme:$LINENO: WARNING: In the future, Autoconf will not detect cro= ss-tools=0A+whose name does not start with the host triplet. If you think = this=0A+configuration is useful to you, please write to autoconf@gnu.org." = >&5=0A+echo "$as=5Fme: WARNING: In the future, Autoconf will not detect cro= ss-tools=0A+whose name does not start with the host triplet. If you think = this=0A+configuration is useful to you, please write to autoconf@gnu.org." = >&2;}=0A+ac=5Ftool=5Fwarned=3Dyes ;;=0A+esac=0A+ CC=3D$ac=5Fct=5FCC=0A+ = fi=0A+fi=0A+=0A+fi=0A+=0A+=0A+test -z "$CC" && { { echo "$as=5Fme:$LINENO:= error: no acceptable C compiler found in \$PATH=0A+See \`config.log' for m= ore details." >&5=0A+echo "$as=5Fme: error: no acceptable C compiler found = in \$PATH=0A+See \`config.log' for more details." >&2;}=0A+ { (exit 1); e= xit 1; }; }=0A+=0A+# Provide some information about the compiler.=0A+echo "= $as=5Fme:$LINENO: checking for C compiler version" >&5=0A+ac=5Fcompiler=3D`= set X $ac=5Fcompile; echo $2`=0A+{ (ac=5Ftry=3D"$ac=5Fcompiler --version >&= 5"=0A+case "(($ac=5Ftry" in=0A+ *\"* | *\`* | *\\*) ac=5Ftry=5Fecho=3D\$ac= =5Ftry;;=0A+ *) ac=5Ftry=5Fecho=3D$ac=5Ftry;;=0A+esac=0A+eval "echo \"\$as= =5Fme:$LINENO: $ac=5Ftry=5Fecho\"") >&5=0A+ (eval "$ac=5Fcompiler --versio= n >&5") 2>&5=0A+ ac=5Fstatus=3D$?=0A+ echo "$as=5Fme:$LINENO: \$? =3D $ac= =5Fstatus" >&5=0A+ (exit $ac=5Fstatus); }=0A+{ (ac=5Ftry=3D"$ac=5Fcompiler= -v >&5"=0A+case "(($ac=5Ftry" in=0A+ *\"* | *\`* | *\\*) ac=5Ftry=5Fecho= =3D\$ac=5Ftry;;=0A+ *) ac=5Ftry=5Fecho=3D$ac=5Ftry;;=0A+esac=0A+eval "echo= \"\$as=5Fme:$LINENO: $ac=5Ftry=5Fecho\"") >&5=0A+ (eval "$ac=5Fcompiler -= v >&5") 2>&5=0A+ ac=5Fstatus=3D$?=0A+ echo "$as=5Fme:$LINENO: \$? =3D $ac= =5Fstatus" >&5=0A+ (exit $ac=5Fstatus); }=0A+{ (ac=5Ftry=3D"$ac=5Fcompiler= -V >&5"=0A+case "(($ac=5Ftry" in=0A+ *\"* | *\`* | *\\*) ac=5Ftry=5Fecho= =3D\$ac=5Ftry;;=0A+ *) ac=5Ftry=5Fecho=3D$ac=5Ftry;;=0A+esac=0A+eval "echo= \"\$as=5Fme:$LINENO: $ac=5Ftry=5Fecho\"") >&5=0A+ (eval "$ac=5Fcompiler -= V >&5") 2>&5=0A+ ac=5Fstatus=3D$?=0A+ echo "$as=5Fme:$LINENO: \$? =3D $ac= =5Fstatus" >&5=0A+ (exit $ac=5Fstatus); }=0A+=0A+{ echo "$as=5Fme:$LINENO:= checking whether we are using the GNU C compiler" >&5=0A+echo $ECHO=5FN "c= hecking whether we are using the GNU C compiler... $ECHO=5FC" >&6; }=0A+if = test "${ac=5Fcv=5Fc=5Fcompiler=5Fgnu+set}" =3D set; then=0A+ echo $ECHO=5F= N "(cached) $ECHO=5FC" >&6=0A+else=0A+ cat >conftest.$ac=5Fext <<=5FACEOF= =0A+/* confdefs.h. */=0A+=5FACEOF=0A+cat confdefs.h >>conftest.$ac=5Fext= =0A+cat >>conftest.$ac=5Fext <<=5FACEOF=0A+/* end confdefs.h. */=0A+=0A+in= t=0A+main ()=0A+{=0A+#ifndef =5F=5FGNUC=5F=5F=0A+ choke me=0A+#endif= =0A+=0A+ ;=0A+ return 0;=0A+}=0A+=5FACEOF=0A+rm -f conftest.$ac=5Fobjext= =0A+if { (ac=5Ftry=3D"$ac=5Fcompile"=0A+case "(($ac=5Ftry" in=0A+ *\"* | *= \`* | *\\*) ac=5Ftry=5Fecho=3D\$ac=5Ftry;;=0A+ *) ac=5Ftry=5Fecho=3D$ac=5F= try;;=0A+esac=0A+eval "echo \"\$as=5Fme:$LINENO: $ac=5Ftry=5Fecho\"") >&5= =0A+ (eval "$ac=5Fcompile") 2>conftest.er1=0A+ ac=5Fstatus=3D$?=0A+ grep= -v '^ *+' conftest.er1 >conftest.err=0A+ rm -f conftest.er1=0A+ cat conf= test.err >&5=0A+ echo "$as=5Fme:$LINENO: \$? =3D $ac=5Fstatus" >&5=0A+ (e= xit $ac=5Fstatus); } && {=0A+ test -z "$ac=5Fc=5Fwerror=5Fflag" ||=0A+ te= st ! -s conftest.err=0A+ } && test -s conftest.$ac=5Fobjext; then=0A+= ac=5Fcompiler=5Fgnu=3Dyes=0A+else=0A+ echo "$as=5Fme: failed program was= :" >&5=0A+sed 's/^/| /' conftest.$ac=5Fext >&5=0A+=0A+ ac=5Fcompiler=5Fgnu= =3Dno=0A+fi=0A+=0A+rm -f core conftest.err conftest.$ac=5Fobjext conftest.$= ac=5Fext=0A+ac=5Fcv=5Fc=5Fcompiler=5Fgnu=3D$ac=5Fcompiler=5Fgnu=0A+=0A+fi= =0A+{ echo "$as=5Fme:$LINENO: result: $ac=5Fcv=5Fc=5Fcompiler=5Fgnu" >&5=0A= +echo "${ECHO=5FT}$ac=5Fcv=5Fc=5Fcompiler=5Fgnu" >&6; }=0A+GCC=3D`test $ac= =5Fcompiler=5Fgnu =3D yes && echo yes`=0A+ac=5Ftest=5FCFLAGS=3D${CFLAGS+set= }=0A+ac=5Fsave=5FCFLAGS=3D$CFLAGS=0A+{ echo "$as=5Fme:$LINENO: checking whe= ther $CC accepts -g" >&5=0A+echo $ECHO=5FN "checking whether $CC accepts -g= ... $ECHO=5FC" >&6; }=0A+if test "${ac=5Fcv=5Fprog=5Fcc=5Fg+set}" =3D set; = then=0A+ echo $ECHO=5FN "(cached) $ECHO=5FC" >&6=0A+else=0A+ ac=5Fsave=5F= c=5Fwerror=5Fflag=3D$ac=5Fc=5Fwerror=5Fflag=0A+ ac=5Fc=5Fwerror=5Fflag=3D= yes=0A+ ac=5Fcv=5Fprog=5Fcc=5Fg=3Dno=0A+ CFLAGS=3D"-g"=0A+ cat >conft= est.$ac=5Fext <<=5FACEOF=0A+/* confdefs.h. */=0A+=5FACEOF=0A+cat confdefs.= h >>conftest.$ac=5Fext=0A+cat >>conftest.$ac=5Fext <<=5FACEOF=0A+/* end con= fdefs.h. */=0A+=0A+int=0A+main ()=0A+{=0A+=0A+ ;=0A+ return 0;=0A+}=0A+= =5FACEOF=0A+rm -f conftest.$ac=5Fobjext=0A+if { (ac=5Ftry=3D"$ac=5Fcompile"= =0A+case "(($ac=5Ftry" in=0A+ *\"* | *\`* | *\\*) ac=5Ftry=5Fecho=3D\$ac= =5Ftry;;=0A+ *) ac=5Ftry=5Fecho=3D$ac=5Ftry;;=0A+esac=0A+eval "echo \"\$as= =5Fme:$LINENO: $ac=5Ftry=5Fecho\"") >&5=0A+ (eval "$ac=5Fcompile") 2>conft= est.er1=0A+ ac=5Fstatus=3D$?=0A+ grep -v '^ *+' conftest.er1 >conftest.er= r=0A+ rm -f conftest.er1=0A+ cat conftest.err >&5=0A+ echo "$as=5Fme:$LI= NENO: \$? =3D $ac=5Fstatus" >&5=0A+ (exit $ac=5Fstatus); } && {=0A+ test = -z "$ac=5Fc=5Fwerror=5Fflag" ||=0A+ test ! -s conftest.err=0A+ } && = test -s conftest.$ac=5Fobjext; then=0A+ ac=5Fcv=5Fprog=5Fcc=5Fg=3Dyes=0A+e= lse=0A+ echo "$as=5Fme: failed program was:" >&5=0A+sed 's/^/| /' conftest= .$ac=5Fext >&5=0A+=0A+ CFLAGS=3D""=0A+ cat >conftest.$ac=5Fext <<=5FAC= EOF=0A+/* confdefs.h. */=0A+=5FACEOF=0A+cat confdefs.h >>conftest.$ac=5Fex= t=0A+cat >>conftest.$ac=5Fext <<=5FACEOF=0A+/* end confdefs.h. */=0A+=0A+i= nt=0A+main ()=0A+{=0A+=0A+ ;=0A+ return 0;=0A+}=0A+=5FACEOF=0A+rm -f conf= test.$ac=5Fobjext=0A+if { (ac=5Ftry=3D"$ac=5Fcompile"=0A+case "(($ac=5Ftry"= in=0A+ *\"* | *\`* | *\\*) ac=5Ftry=5Fecho=3D\$ac=5Ftry;;=0A+ *) ac=5Ftr= y=5Fecho=3D$ac=5Ftry;;=0A+esac=0A+eval "echo \"\$as=5Fme:$LINENO: $ac=5Ftry= =5Fecho\"") >&5=0A+ (eval "$ac=5Fcompile") 2>conftest.er1=0A+ ac=5Fstatus= =3D$?=0A+ grep -v '^ *+' conftest.er1 >conftest.err=0A+ rm -f conftest.er= 1=0A+ cat conftest.err >&5=0A+ echo "$as=5Fme:$LINENO: \$? =3D $ac=5Fstat= us" >&5=0A+ (exit $ac=5Fstatus); } && {=0A+ test -z "$ac=5Fc=5Fwerror=5Ff= lag" ||=0A+ test ! -s conftest.err=0A+ } && test -s conftest.$ac=5Fo= bjext; then=0A+ :=0A+else=0A+ echo "$as=5Fme: failed program was:" >&5=0A= +sed 's/^/| /' conftest.$ac=5Fext >&5=0A+=0A+ ac=5Fc=5Fwerror=5Fflag=3D$ac= =5Fsave=5Fc=5Fwerror=5Fflag=0A+ CFLAGS=3D"-g"=0A+ cat >conftest.$ac=5Fext= <<=5FACEOF=0A+/* confdefs.h. */=0A+=5FACEOF=0A+cat confdefs.h >>conftest.= $ac=5Fext=0A+cat >>conftest.$ac=5Fext <<=5FACEOF=0A+/* end confdefs.h. */= =0A+=0A+int=0A+main ()=0A+{=0A+=0A+ ;=0A+ return 0;=0A+}=0A+=5FACEOF=0A+r= m -f conftest.$ac=5Fobjext=0A+if { (ac=5Ftry=3D"$ac=5Fcompile"=0A+case "(($= ac=5Ftry" in=0A+ *\"* | *\`* | *\\*) ac=5Ftry=5Fecho=3D\$ac=5Ftry;;=0A+ *= ) ac=5Ftry=5Fecho=3D$ac=5Ftry;;=0A+esac=0A+eval "echo \"\$as=5Fme:$LINENO: = $ac=5Ftry=5Fecho\"") >&5=0A+ (eval "$ac=5Fcompile") 2>conftest.er1=0A+ ac= =5Fstatus=3D$?=0A+ grep -v '^ *+' conftest.er1 >conftest.err=0A+ rm -f co= nftest.er1=0A+ cat conftest.err >&5=0A+ echo "$as=5Fme:$LINENO: \$? =3D $= ac=5Fstatus" >&5=0A+ (exit $ac=5Fstatus); } && {=0A+ test -z "$ac=5Fc=5Fw= error=5Fflag" ||=0A+ test ! -s conftest.err=0A+ } && test -s conftes= t.$ac=5Fobjext; then=0A+ ac=5Fcv=5Fprog=5Fcc=5Fg=3Dyes=0A+else=0A+ echo "= $as=5Fme: failed program was:" >&5=0A+sed 's/^/| /' conftest.$ac=5Fext >&5= =0A+=0A+=0A+fi=0A+=0A+rm -f core conftest.err conftest.$ac=5Fobjext conftes= t.$ac=5Fext=0A+fi=0A+=0A+rm -f core conftest.err conftest.$ac=5Fobjext conf= test.$ac=5Fext=0A+fi=0A+=0A+rm -f core conftest.err conftest.$ac=5Fobjext c= onftest.$ac=5Fext=0A+ ac=5Fc=5Fwerror=5Fflag=3D$ac=5Fsave=5Fc=5Fwerror=5F= flag=0A+fi=0A+{ echo "$as=5Fme:$LINENO: result: $ac=5Fcv=5Fprog=5Fcc=5Fg" >= &5=0A+echo "${ECHO=5FT}$ac=5Fcv=5Fprog=5Fcc=5Fg" >&6; }=0A+if test "$ac=5Ft= est=5FCFLAGS" =3D set; then=0A+ CFLAGS=3D$ac=5Fsave=5FCFLAGS=0A+elif test = $ac=5Fcv=5Fprog=5Fcc=5Fg =3D yes; then=0A+ if test "$GCC" =3D yes; then=0A= + CFLAGS=3D"-g -O2"=0A+ else=0A+ CFLAGS=3D"-g"=0A+ fi=0A+else=0A+ = if test "$GCC" =3D yes; then=0A+ CFLAGS=3D"-O2"=0A+ else=0A+ CFLAGS= =3D=0A+ fi=0A+fi=0A+{ echo "$as=5Fme:$LINENO: checking for $CC option to a= ccept ISO C89" >&5=0A+echo $ECHO=5FN "checking for $CC option to accept ISO= C89... $ECHO=5FC" >&6; }=0A+if test "${ac=5Fcv=5Fprog=5Fcc=5Fc89+set}" =3D= set; then=0A+ echo $ECHO=5FN "(cached) $ECHO=5FC" >&6=0A+else=0A+ ac=5Fc= v=5Fprog=5Fcc=5Fc89=3Dno=0A+ac=5Fsave=5FCC=3D$CC=0A+cat >conftest.$ac=5Fext= <<=5FACEOF=0A+/* confdefs.h. */=0A+=5FACEOF=0A+cat confdefs.h >>conftest.= $ac=5Fext=0A+cat >>conftest.$ac=5Fext <<=5FACEOF=0A+/* end confdefs.h. */= =0A+#include =0A+#include =0A+#include =0A+= #include =0A+/* Most of the following tests are stolen from RCS= 5.7's src/conf.sh. */=0A+struct buf { int x; };=0A+FILE * (*rcsopen) (str= uct buf *, struct stat *, int);=0A+static char *e (p, i)=0A+ char **p;= =0A+ int i;=0A+{=0A+ return p[i];=0A+}=0A+static char *f (char * (*g) = (char **, int), char **p, ...)=0A+{=0A+ char *s;=0A+ va=5Flist v;=0A+ va= =5Fstart (v,p);=0A+ s =3D g (p, va=5Farg (v,int));=0A+ va=5Fend (v);=0A+ = return s;=0A+}=0A+=0A+/* OSF 4.0 Compaq cc is some sort of almost-ANSI by = default. It has=0A+ function prototypes and stuff, but not '\xHH' hex ch= aracter constants.=0A+ These don't provoke an error unfortunately, instea= d are silently treated=0A+ as 'x'. The following induces an error, until= -std is added to get=0A+ proper ANSI mode. Curiously '\x00'!=3D'x' alwa= ys comes out true, for an=0A+ array size at least. It's necessary to wri= te '\x00'=3D=3D0 to get something=0A+ that's true only with -std. */=0A+= int osf4=5Fcc=5Farray ['\x00' =3D=3D 0 ? 1 : -1];=0A+=0A+/* IBM C 6 for AIX= is almost-ANSI by default, but it replaces macro parameters=0A+ inside s= trings and character constants. */=0A+#define FOO(x) 'x'=0A+int xlc6=5Fcc= =5Farray[FOO(a) =3D=3D 'x' ? 1 : -1];=0A+=0A+int test (int i, double x);=0A= +struct s1 {int (*f) (int a);};=0A+struct s2 {int (*f) (double a);};=0A+int= pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int,= int);=0A+int argc;=0A+char **argv;=0A+int=0A+main ()=0A+{=0A+return f (e, = argv, 0) !=3D argv[0] || f (e, argv, 1) !=3D argv[1];=0A+ ;=0A+ return = 0;=0A+}=0A+=5FACEOF=0A+for ac=5Farg in '' -qlanglvl=3Dextc89 -qlanglvl=3Dan= si -std \=0A+ -Ae "-Aa -D=5FHPUX=5FSOURCE" "-Xc -D=5F=5FEXTENSIONS=5F=5F"= =0A+do=0A+ CC=3D"$ac=5Fsave=5FCC $ac=5Farg"=0A+ rm -f conftest.$ac=5Fobje= xt=0A+if { (ac=5Ftry=3D"$ac=5Fcompile"=0A+case "(($ac=5Ftry" in=0A+ *\"* |= *\`* | *\\*) ac=5Ftry=5Fecho=3D\$ac=5Ftry;;=0A+ *) ac=5Ftry=5Fecho=3D$ac= =5Ftry;;=0A+esac=0A+eval "echo \"\$as=5Fme:$LINENO: $ac=5Ftry=5Fecho\"") >&= 5=0A+ (eval "$ac=5Fcompile") 2>conftest.er1=0A+ ac=5Fstatus=3D$?=0A+ gre= p -v '^ *+' conftest.er1 >conftest.err=0A+ rm -f conftest.er1=0A+ cat con= ftest.err >&5=0A+ echo "$as=5Fme:$LINENO: \$? =3D $ac=5Fstatus" >&5=0A+ (= exit $ac=5Fstatus); } && {=0A+ test -z "$ac=5Fc=5Fwerror=5Fflag" ||=0A+ t= est ! -s conftest.err=0A+ } && test -s conftest.$ac=5Fobjext; then=0A= + ac=5Fcv=5Fprog=5Fcc=5Fc89=3D$ac=5Farg=0A+else=0A+ echo "$as=5Fme: faile= d program was:" >&5=0A+sed 's/^/| /' conftest.$ac=5Fext >&5=0A+=0A+=0A+fi= =0A+=0A+rm -f core conftest.err conftest.$ac=5Fobjext=0A+ test "x$ac=5Fcv= =5Fprog=5Fcc=5Fc89" !=3D "xno" && break=0A+done=0A+rm -f conftest.$ac=5Fext= =0A+CC=3D$ac=5Fsave=5FCC=0A+=0A+fi=0A+# AC=5FCACHE=5FVAL=0A+case "x$ac=5Fcv= =5Fprog=5Fcc=5Fc89" in=0A+ x)=0A+ { echo "$as=5Fme:$LINENO: result: non= e needed" >&5=0A+echo "${ECHO=5FT}none needed" >&6; } ;;=0A+ xno)=0A+ {= echo "$as=5Fme:$LINENO: result: unsupported" >&5=0A+echo "${ECHO=5FT}unsup= ported" >&6; } ;;=0A+ *)=0A+ CC=3D"$CC $ac=5Fcv=5Fprog=5Fcc=5Fc89"=0A+ = { echo "$as=5Fme:$LINENO: result: $ac=5Fcv=5Fprog=5Fcc=5Fc89" >&5=0A+ech= o "${ECHO=5FT}$ac=5Fcv=5Fprog=5Fcc=5Fc89" >&6; } ;;=0A+esac=0A+=0A+=0A+ac= =5Fext=3Dc=0A+ac=5Fcpp=3D'$CPP $CPPFLAGS'=0A+ac=5Fcompile=3D'$CC -c $CFLAGS= $CPPFLAGS conftest.$ac=5Fext >&5'=0A+ac=5Flink=3D'$CC -o conftest$ac=5Fexe= ext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac=5Fext $LIBS >&5'=0A+ac=5Fcompil= er=5Fgnu=3D$ac=5Fcv=5Fc=5Fcompiler=5Fgnu=0A+=0A+depcc=3D"$CC" am=5Fcompil= er=5Flist=3D=0A+=0A+{ echo "$as=5Fme:$LINENO: checking dependency style of = $depcc" >&5=0A+echo $ECHO=5FN "checking dependency style of $depcc... $ECHO= =5FC" >&6; }=0A+if test "${am=5Fcv=5FCC=5Fdependencies=5Fcompiler=5Ftype+se= t}" =3D set; then=0A+ echo $ECHO=5FN "(cached) $ECHO=5FC" >&6=0A+else=0A+ = if test -z "$AMDEP=5FTRUE" && test -f "$am=5Fdepcomp"; then=0A+ # We make= a subdir and do the tests there. Otherwise we can end up=0A+ # making bo= gus files that we don't know about and never remove. For=0A+ # instance i= t was reported that on HP-UX the gcc test will end up=0A+ # making a dummy= file named `D' -- because `-MD' means `put the output=0A+ # in D'.=0A+ m= kdir conftest.dir=0A+ # Copy depcomp to subdir because otherwise we won't = find it if we're=0A+ # using a relative directory.=0A+ cp "$am=5Fdepcomp"= conftest.dir=0A+ cd conftest.dir=0A+ # We will build objects and depende= ncies in a subdirectory because=0A+ # it helps to detect inapplicable depe= ndency modes. For instance=0A+ # both Tru64's cc and ICC support -MD to o= utput dependencies as a=0A+ # side effect of compilation, but ICC will put= the dependencies in=0A+ # the current directory while Tru64 will put them= in the object=0A+ # directory.=0A+ mkdir sub=0A+=0A+ am=5Fcv=5FCC=5Fdep= endencies=5Fcompiler=5Ftype=3Dnone=0A+ if test "$am=5Fcompiler=5Flist" =3D= ""; then=0A+ am=5Fcompiler=5Flist=3D`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\= 1/p' < ./depcomp`=0A+ fi=0A+ for depmode in $am=5Fcompiler=5Flist; do=0A+= # Setup a source with many dependencies, because some compilers=0A+ = # like to wrap large dependency lists on column 80 (with \), and=0A+ # w= e should not choose a depcomp mode which is confused by this.=0A+ #=0A+ = # We need to recreate these files for each test, as the compiler may=0A+= # overwrite some of them when testing with obscure command lines.=0A+ = # This happens at least with the AIX C compiler.=0A+ : > sub/conftest.= c=0A+ for i in 1 2 3 4 5 6; do=0A+ echo '#include "conftst'$i'.h"' = >> sub/conftest.c=0A+ # Using `: > sub/conftst$i.h' creates only sub/c= onftst1.h with=0A+ # Solaris 8's {/usr,}/bin/sh.=0A+ touch sub/co= nftst$i.h=0A+ done=0A+ echo "${am=5F=5Finclude} ${am=5F=5Fquote}sub/c= onftest.Po${am=5F=5Fquote}" > confmf=0A+=0A+ case $depmode in=0A+ nos= ideeffect)=0A+ # after this tag, mechanisms are not by side-effect, so= they'll=0A+ # only be used when explicitly requested=0A+ if test= "x$enable=5Fdependency=5Ftracking" =3D xyes; then=0A+ continue=0A+ el= se=0A+ break=0A+ fi=0A+ ;;=0A+ none) break ;;=0A+ esac=0A+ = # We check with `-c' and `-o' for the sake of the "dashmstdout"=0A+ #= mode. It turns out that the SunPro C++ compiler does not properly=0A+ = # handle `-M -o', and we need to detect this.=0A+ if depmode=3D$depmode = \=0A+ source=3Dsub/conftest.c object=3Dsub/conftest.${OBJEXT-o} \=0A+= depfile=3Dsub/conftest.Po tmpdepfile=3Dsub/conftest.TPo \=0A+ = $SHELL ./depcomp $depcc -c -o sub/conftest.${OBJEXT-o} sub/conftest.c \=0A+= >/dev/null 2>conftest.err &&=0A+ grep sub/conftst1.h sub/con= ftest.Po > /dev/null 2>&1 &&=0A+ grep sub/conftst6.h sub/conftest.Po = > /dev/null 2>&1 &&=0A+ grep sub/conftest.${OBJEXT-o} sub/conftest.Po= > /dev/null 2>&1 &&=0A+ ${MAKE-make} -s -f confmf > /dev/null 2>&1; = then=0A+ # icc doesn't choke on unknown options, it will just issue wa= rnings=0A+ # or remarks (even with -Werror). So we grep stderr for an= y message=0A+ # that says an option was ignored or not supported.=0A+ = # When given -MP, icc 7.0 and 7.1 complain thusly:=0A+ # icc: C= ommand line warning: ignoring option '-M'; no argument required=0A+ # = The diagnosis changed in icc 8.0:=0A+ # icc: Command line remark: op= tion '-MP' not supported=0A+ if (grep 'ignoring option' conftest.err |= |=0A+ grep 'not supported' conftest.err) >/dev/null 2>&1; then :; = else=0A+ am=5Fcv=5FCC=5Fdependencies=5Fcompiler=5Ftype=3D$depmode=0A= + break=0A+ fi=0A+ fi=0A+ done=0A+=0A+ cd ..=0A+ rm -rf c= onftest.dir=0A+else=0A+ am=5Fcv=5FCC=5Fdependencies=5Fcompiler=5Ftype=3Dno= ne=0A+fi=0A+=0A+fi=0A+{ echo "$as=5Fme:$LINENO: result: $am=5Fcv=5FCC=5Fdep= endencies=5Fcompiler=5Ftype" >&5=0A+echo "${ECHO=5FT}$am=5Fcv=5FCC=5Fdepend= encies=5Fcompiler=5Ftype" >&6; }=0A+CCDEPMODE=3Ddepmode=3D$am=5Fcv=5FCC=5Fd= ependencies=5Fcompiler=5Ftype=0A+=0A+ if=0A+ test "x$enable=5Fdependency= =5Ftracking" !=3D xno \=0A+ && test "$am=5Fcv=5FCC=5Fdependencies=5Fcompil= er=5Ftype" =3D gcc3; then=0A+ am=5F=5FfastdepCC=5FTRUE=3D=0A+ am=5F=5Ffas= tdepCC=5FFALSE=3D'#'=0A+else=0A+ am=5F=5FfastdepCC=5FTRUE=3D'#'=0A+ am=5F= =5FfastdepCC=5FFALSE=3D=0A+fi=0A+=0A+=0A+=0A+=0A+{ echo "$as=5Fme:$LINENO: = checking for main in -lm" >&5=0A+echo $ECHO=5FN "checking for main in -lm..= . $ECHO=5FC" >&6; }=0A+if test "${ac=5Fcv=5Flib=5Fm=5Fmain+set}" =3D set; t= hen=0A+ echo $ECHO=5FN "(cached) $ECHO=5FC" >&6=0A+else=0A+ ac=5Fcheck=5F= lib=5Fsave=5FLIBS=3D$LIBS=0A+LIBS=3D"-lm $LIBS"=0A+cat >conftest.$ac=5Fext= <<=5FACEOF=0A+/* confdefs.h. */=0A+=5FACEOF=0A+cat confdefs.h >>conftest.= $ac=5Fext=0A+cat >>conftest.$ac=5Fext <<=5FACEOF=0A+/* end confdefs.h. */= =0A+=0A+=0A+int=0A+main ()=0A+{=0A+return main ();=0A+ ;=0A+ return 0;=0A= +}=0A+=5FACEOF=0A+rm -f conftest.$ac=5Fobjext conftest$ac=5Fexeext=0A+if { = (ac=5Ftry=3D"$ac=5Flink"=0A+case "(($ac=5Ftry" in=0A+ *\"* | *\`* | *\\*) = ac=5Ftry=5Fecho=3D\$ac=5Ftry;;=0A+ *) ac=5Ftry=5Fecho=3D$ac=5Ftry;;=0A+esa= c=0A+eval "echo \"\$as=5Fme:$LINENO: $ac=5Ftry=5Fecho\"") >&5=0A+ (eval "$= ac=5Flink") 2>conftest.er1=0A+ ac=5Fstatus=3D$?=0A+ grep -v '^ *+' confte= st.er1 >conftest.err=0A+ rm -f conftest.er1=0A+ cat conftest.err >&5=0A+ = echo "$as=5Fme:$LINENO: \$? =3D $ac=5Fstatus" >&5=0A+ (exit $ac=5Fstatus)= ; } && {=0A+ test -z "$ac=5Fc=5Fwerror=5Fflag" ||=0A+ test ! -s conftest.= err=0A+ } && test -s conftest$ac=5Fexeext &&=0A+ $as=5Ftest=5Fx= conftest$ac=5Fexeext; then=0A+ ac=5Fcv=5Flib=5Fm=5Fmain=3Dyes=0A+else=0A+= echo "$as=5Fme: failed program was:" >&5=0A+sed 's/^/| /' conftest.$ac=5F= ext >&5=0A+=0A+ ac=5Fcv=5Flib=5Fm=5Fmain=3Dno=0A+fi=0A+=0A+rm -f core conft= est.err conftest.$ac=5Fobjext conftest=5Fipa8=5Fconftest.oo \=0A+ conf= test$ac=5Fexeext conftest.$ac=5Fext=0A+LIBS=3D$ac=5Fcheck=5Flib=5Fsave=5FLI= BS=0A+fi=0A+{ echo "$as=5Fme:$LINENO: result: $ac=5Fcv=5Flib=5Fm=5Fmain" >&= 5=0A+echo "${ECHO=5FT}$ac=5Fcv=5Flib=5Fm=5Fmain" >&6; }=0A+if test $ac=5Fcv= =5Flib=5Fm=5Fmain =3D yes; then=0A+ cat >>confdefs.h <<=5FACEOF=0A+#define= HAVE=5FLIBM 1=0A+=5FACEOF=0A+=0A+ LIBS=3D"-lm $LIBS"=0A+=0A+fi=0A+=0A+=0A= +{ echo "$as=5Fme:$LINENO: checking for main in -lpthread" >&5=0A+echo $ECH= O=5FN "checking for main in -lpthread... $ECHO=5FC" >&6; }=0A+if test "${ac= =5Fcv=5Flib=5Fpthread=5Fmain+set}" =3D set; then=0A+ echo $ECHO=5FN "(cach= ed) $ECHO=5FC" >&6=0A+else=0A+ ac=5Fcheck=5Flib=5Fsave=5FLIBS=3D$LIBS=0A+L= IBS=3D"-lpthread $LIBS"=0A+cat >conftest.$ac=5Fext <<=5FACEOF=0A+/* confde= fs.h. */=0A+=5FACEOF=0A+cat confdefs.h >>conftest.$ac=5Fext=0A+cat >>conft= est.$ac=5Fext <<=5FACEOF=0A+/* end confdefs.h. */=0A+=0A+=0A+int=0A+main (= )=0A+{=0A+return main ();=0A+ ;=0A+ return 0;=0A+}=0A+=5FACEOF=0A+rm -f c= onftest.$ac=5Fobjext conftest$ac=5Fexeext=0A+if { (ac=5Ftry=3D"$ac=5Flink"= =0A+case "(($ac=5Ftry" in=0A+ *\"* | *\`* | *\\*) ac=5Ftry=5Fecho=3D\$ac= =5Ftry;;=0A+ *) ac=5Ftry=5Fecho=3D$ac=5Ftry;;=0A+esac=0A+eval "echo \"\$as= =5Fme:$LINENO: $ac=5Ftry=5Fecho\"") >&5=0A+ (eval "$ac=5Flink") 2>conftest= .er1=0A+ ac=5Fstatus=3D$?=0A+ grep -v '^ *+' conftest.er1 >conftest.err= =0A+ rm -f conftest.er1=0A+ cat conftest.err >&5=0A+ echo "$as=5Fme:$LIN= ENO: \$? =3D $ac=5Fstatus" >&5=0A+ (exit $ac=5Fstatus); } && {=0A+ test -= z "$ac=5Fc=5Fwerror=5Fflag" ||=0A+ test ! -s conftest.err=0A+ } && t= est -s conftest$ac=5Fexeext &&=0A+ $as=5Ftest=5Fx conftest$ac=5Fexeex= t; then=0A+ ac=5Fcv=5Flib=5Fpthread=5Fmain=3Dyes=0A+else=0A+ echo "$as=5F= me: failed program was:" >&5=0A+sed 's/^/| /' conftest.$ac=5Fext >&5=0A+=0A= + ac=5Fcv=5Flib=5Fpthread=5Fmain=3Dno=0A+fi=0A+=0A+rm -f core conftest.err = conftest.$ac=5Fobjext conftest=5Fipa8=5Fconftest.oo \=0A+ conftest$ac= =5Fexeext conftest.$ac=5Fext=0A+LIBS=3D$ac=5Fcheck=5Flib=5Fsave=5FLIBS=0A+f= i=0A+{ echo "$as=5Fme:$LINENO: result: $ac=5Fcv=5Flib=5Fpthread=5Fmain" >&5= =0A+echo "${ECHO=5FT}$ac=5Fcv=5Flib=5Fpthread=5Fmain" >&6; }=0A+if test $ac= =5Fcv=5Flib=5Fpthread=5Fmain =3D yes; then=0A+ cat >>confdefs.h <<=5FACEOF= =0A+#define HAVE=5FLIBPTHREAD 1=0A+=5FACEOF=0A+=0A+ LIBS=3D"-lpthread $LIB= S"=0A+=0A+fi=0A+=0A+=0A+=0A+{ echo "$as=5Fme:$LINENO: checking for ANSI C h= eader files" >&5=0A+echo $ECHO=5FN "checking for ANSI C header files... $EC= HO=5FC" >&6; }=0A+if test "${ac=5Fcv=5Fheader=5Fstdc+set}" =3D set; then=0A= + echo $ECHO=5FN "(cached) $ECHO=5FC" >&6=0A+else=0A+ cat >conftest.$ac= =5Fext <<=5FACEOF=0A+/* confdefs.h. */=0A+=5FACEOF=0A+cat confdefs.h >>con= ftest.$ac=5Fext=0A+cat >>conftest.$ac=5Fext <<=5FACEOF=0A+/* end confdefs.h= . */=0A+#include =0A+#include =0A+#include = =0A+#include =0A+=0A+int=0A+main ()=0A+{=0A+=0A+ ;=0A+ return 0;= =0A+}=0A+=5FACEOF=0A+rm -f conftest.$ac=5Fobjext=0A+if { (ac=5Ftry=3D"$ac= =5Fcompile"=0A+case "(($ac=5Ftry" in=0A+ *\"* | *\`* | *\\*) ac=5Ftry=5Fec= ho=3D\$ac=5Ftry;;=0A+ *) ac=5Ftry=5Fecho=3D$ac=5Ftry;;=0A+esac=0A+eval "ec= ho \"\$as=5Fme:$LINENO: $ac=5Ftry=5Fecho\"") >&5=0A+ (eval "$ac=5Fcompile"= ) 2>conftest.er1=0A+ ac=5Fstatus=3D$?=0A+ grep -v '^ *+' conftest.er1 >co= nftest.err=0A+ rm -f conftest.er1=0A+ cat conftest.err >&5=0A+ echo "$as= =5Fme:$LINENO: \$? =3D $ac=5Fstatus" >&5=0A+ (exit $ac=5Fstatus); } && {= =0A+ test -z "$ac=5Fc=5Fwerror=5Fflag" ||=0A+ test ! -s conftest.err=0A+ = } && test -s conftest.$ac=5Fobjext; then=0A+ ac=5Fcv=5Fheader=5Fstdc= =3Dyes=0A+else=0A+ echo "$as=5Fme: failed program was:" >&5=0A+sed 's/^/| = /' conftest.$ac=5Fext >&5=0A+=0A+ ac=5Fcv=5Fheader=5Fstdc=3Dno=0A+fi=0A+=0A= +rm -f core conftest.err conftest.$ac=5Fobjext conftest.$ac=5Fext=0A+=0A+if= test $ac=5Fcv=5Fheader=5Fstdc =3D yes; then=0A+ # SunOS 4.x string.h does= not declare mem*, contrary to ANSI.=0A+ cat >conftest.$ac=5Fext <<=5FACEO= F=0A+/* confdefs.h. */=0A+=5FACEOF=0A+cat confdefs.h >>conftest.$ac=5Fext= =0A+cat >>conftest.$ac=5Fext <<=5FACEOF=0A+/* end confdefs.h. */=0A+#inclu= de =0A+=0A+=5FACEOF=0A+if (eval "$ac=5Fcpp conftest.$ac=5Fext") 2= >&5 |=0A+ $EGREP "memchr" >/dev/null 2>&1; then=0A+ :=0A+else=0A+ ac=5Fc= v=5Fheader=5Fstdc=3Dno=0A+fi=0A+rm -f conftest*=0A+=0A+fi=0A+=0A+if test $a= c=5Fcv=5Fheader=5Fstdc =3D yes; then=0A+ # ISC 2.0.2 stdlib.h does not dec= lare free, contrary to ANSI.=0A+ cat >conftest.$ac=5Fext <<=5FACEOF=0A+/* = confdefs.h. */=0A+=5FACEOF=0A+cat confdefs.h >>conftest.$ac=5Fext=0A+cat >= >conftest.$ac=5Fext <<=5FACEOF=0A+/* end confdefs.h. */=0A+#include =0A+=0A+=5FACEOF=0A+if (eval "$ac=5Fcpp conftest.$ac=5Fext") 2>&5 |=0A+= $EGREP "free" >/dev/null 2>&1; then=0A+ :=0A+else=0A+ ac=5Fcv=5Fheader= =5Fstdc=3Dno=0A+fi=0A+rm -f conftest*=0A+=0A+fi=0A+=0A+if test $ac=5Fcv=5Fh= eader=5Fstdc =3D yes; then=0A+ # /bin/cc in Irix-4.0.5 gets non-ANSI ctype= macros unless using -ansi.=0A+ if test "$cross=5Fcompiling" =3D yes; then= =0A+ :=0A+else=0A+ cat >conftest.$ac=5Fext <<=5FACEOF=0A+/* confdefs.h. = */=0A+=5FACEOF=0A+cat confdefs.h >>conftest.$ac=5Fext=0A+cat >>conftest.$ac= =5Fext <<=5FACEOF=0A+/* end confdefs.h. */=0A+#include =0A+#inclu= de =0A+#if ((' ' & 0x0FF) =3D=3D 0x020)=0A+# define ISLOWER(c) ('= a' <=3D (c) && (c) <=3D 'z')=0A+# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c= ) - 'a') : (c))=0A+#else=0A+# define ISLOWER(c) \=0A+ (('a' <=3D (c) &&= (c) <=3D 'i') \=0A+ || ('j' <=3D (c) && (c) <=3D 'r') \=0A+ ||= ('s' <=3D (c) && (c) <=3D 'z'))=0A+# define TOUPPER(c) (ISLOWER(c) ? ((c) = | 0x40) : (c))=0A+#endif=0A+=0A+#define XOR(e, f) (((e) && !(f)) || (!(e) &= & (f)))=0A+int=0A+main ()=0A+{=0A+ int i;=0A+ for (i =3D 0; i < 256; i++)= =0A+ if (XOR (islower (i), ISLOWER (i))=0A+ || toupper (i) !=3D TOUPPER = (i))=0A+ return 2;=0A+ return 0;=0A+}=0A+=5FACEOF=0A+rm -f conftest$a= c=5Fexeext=0A+if { (ac=5Ftry=3D"$ac=5Flink"=0A+case "(($ac=5Ftry" in=0A+ *= \"* | *\`* | *\\*) ac=5Ftry=5Fecho=3D\$ac=5Ftry;;=0A+ *) ac=5Ftry=5Fecho= =3D$ac=5Ftry;;=0A+esac=0A+eval "echo \"\$as=5Fme:$LINENO: $ac=5Ftry=5Fecho\= "") >&5=0A+ (eval "$ac=5Flink") 2>&5=0A+ ac=5Fstatus=3D$?=0A+ echo "$as= =5Fme:$LINENO: \$? =3D $ac=5Fstatus" >&5=0A+ (exit $ac=5Fstatus); } && { a= c=5Ftry=3D'./conftest$ac=5Fexeext'=0A+ { (case "(($ac=5Ftry" in=0A+ *\"* = | *\`* | *\\*) ac=5Ftry=5Fecho=3D\$ac=5Ftry;;=0A+ *) ac=5Ftry=5Fecho=3D$ac= =5Ftry;;=0A+esac=0A+eval "echo \"\$as=5Fme:$LINENO: $ac=5Ftry=5Fecho\"") >&= 5=0A+ (eval "$ac=5Ftry") 2>&5=0A+ ac=5Fstatus=3D$?=0A+ echo "$as=5Fme:$L= INENO: \$? =3D $ac=5Fstatus" >&5=0A+ (exit $ac=5Fstatus); }; }; then=0A+ = :=0A+else=0A+ echo "$as=5Fme: program exited with status $ac=5Fstatus" >&5= =0A+echo "$as=5Fme: failed program was:" >&5=0A+sed 's/^/| /' conftest.$ac= =5Fext >&5=0A+=0A+( exit $ac=5Fstatus )=0A+ac=5Fcv=5Fheader=5Fstdc=3Dno=0A+= fi=0A+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac=5Fexeex= t conftest.$ac=5Fobjext conftest.$ac=5Fext=0A+fi=0A+=0A+=0A+fi=0A+fi=0A+{ e= cho "$as=5Fme:$LINENO: result: $ac=5Fcv=5Fheader=5Fstdc" >&5=0A+echo "${ECH= O=5FT}$ac=5Fcv=5Fheader=5Fstdc" >&6; }=0A+if test $ac=5Fcv=5Fheader=5Fstdc = =3D yes; then=0A+=0A+cat >>confdefs.h <<\=5FACEOF=0A+#define STDC=5FHEADERS= 1=0A+=5FACEOF=0A+=0A+fi=0A+=0A+{ echo "$as=5Fme:$LINENO: checking for sys/= wait.h that is POSIX.1 compatible" >&5=0A+echo $ECHO=5FN "checking for sys/= wait.h that is POSIX.1 compatible... $ECHO=5FC" >&6; }=0A+if test "${ac=5Fc= v=5Fheader=5Fsys=5Fwait=5Fh+set}" =3D set; then=0A+ echo $ECHO=5FN "(cache= d) $ECHO=5FC" >&6=0A+else=0A+ cat >conftest.$ac=5Fext <<=5FACEOF=0A+/* con= fdefs.h. */=0A+=5FACEOF=0A+cat confdefs.h >>conftest.$ac=5Fext=0A+cat >>co= nftest.$ac=5Fext <<=5FACEOF=0A+/* end confdefs.h. */=0A+#include =0A+#include =0A+#ifndef WEXITSTATUS=0A+# define WEXITSTATU= S(stat=5Fval) ((unsigned int) (stat=5Fval) >> 8)=0A+#endif=0A+#ifndef WIFEX= ITED=0A+# define WIFEXITED(stat=5Fval) (((stat=5Fval) & 255) =3D=3D 0)=0A+#= endif=0A+=0A+int=0A+main ()=0A+{=0A+ int s;=0A+ wait (&s);=0A+ s =3D WIF= EXITED (s) ? WEXITSTATUS (s) : 1;=0A+ ;=0A+ return 0;=0A+}=0A+=5FACEOF=0A= +rm -f conftest.$ac=5Fobjext=0A+if { (ac=5Ftry=3D"$ac=5Fcompile"=0A+case "(= ($ac=5Ftry" in=0A+ *\"* | *\`* | *\\*) ac=5Ftry=5Fecho=3D\$ac=5Ftry;;=0A+ = *) ac=5Ftry=5Fecho=3D$ac=5Ftry;;=0A+esac=0A+eval "echo \"\$as=5Fme:$LINENO= : $ac=5Ftry=5Fecho\"") >&5=0A+ (eval "$ac=5Fcompile") 2>conftest.er1=0A+ = ac=5Fstatus=3D$?=0A+ grep -v '^ *+' conftest.er1 >conftest.err=0A+ rm -f = conftest.er1=0A+ cat conftest.err >&5=0A+ echo "$as=5Fme:$LINENO: \$? =3D= $ac=5Fstatus" >&5=0A+ (exit $ac=5Fstatus); } && {=0A+ test -z "$ac=5Fc= =5Fwerror=5Fflag" ||=0A+ test ! -s conftest.err=0A+ } && test -s con= ftest.$ac=5Fobjext; then=0A+ ac=5Fcv=5Fheader=5Fsys=5Fwait=5Fh=3Dyes=0A+el= se=0A+ echo "$as=5Fme: failed program was:" >&5=0A+sed 's/^/| /' conftest.= $ac=5Fext >&5=0A+=0A+ ac=5Fcv=5Fheader=5Fsys=5Fwait=5Fh=3Dno=0A+fi=0A+=0A+r= m -f core conftest.err conftest.$ac=5Fobjext conftest.$ac=5Fext=0A+fi=0A+{ = echo "$as=5Fme:$LINENO: result: $ac=5Fcv=5Fheader=5Fsys=5Fwait=5Fh" >&5=0A+= echo "${ECHO=5FT}$ac=5Fcv=5Fheader=5Fsys=5Fwait=5Fh" >&6; }=0A+if test $ac= =5Fcv=5Fheader=5Fsys=5Fwait=5Fh =3D yes; then=0A+=0A+cat >>confdefs.h <<\= =5FACEOF=0A+#define HAVE=5FSYS=5FWAIT=5FH 1=0A+=5FACEOF=0A+=0A+fi=0A+=0A+# = On IRIX 5.3, sys/types and inttypes.h are conflicting.=0A+=0A+=0A+=0A+=0A+= =0A+=0A+=0A+=0A+=0A+for ac=5Fheader in sys/types.h sys/stat.h stdlib.h stri= ng.h memory.h strings.h \=0A+ inttypes.h stdint.h unistd.h=0A+do=0A+as= =5Fac=5FHeader=3D`echo "ac=5Fcv=5Fheader=5F$ac=5Fheader" | $as=5Ftr=5Fsh`= =0A+{ echo "$as=5Fme:$LINENO: checking for $ac=5Fheader" >&5=0A+echo $ECHO= =5FN "checking for $ac=5Fheader... $ECHO=5FC" >&6; }=0A+if { as=5Fvar=3D$as= =5Fac=5FHeader; eval "test \"\${$as=5Fvar+set}\" =3D set"; }; then=0A+ ech= o $ECHO=5FN "(cached) $ECHO=5FC" >&6=0A+else=0A+ cat >conftest.$ac=5Fext <= <=5FACEOF=0A+/* confdefs.h. */=0A+=5FACEOF=0A+cat confdefs.h >>conftest.$a= c=5Fext=0A+cat >>conftest.$ac=5Fext <<=5FACEOF=0A+/* end confdefs.h. */=0A= +$ac=5Fincludes=5Fdefault=0A+=0A+#include <$ac=5Fheader>=0A+=5FACEOF=0A+rm = -f conftest.$ac=5Fobjext=0A+if { (ac=5Ftry=3D"$ac=5Fcompile"=0A+case "(($ac= =5Ftry" in=0A+ *\"* | *\`* | *\\*) ac=5Ftry=5Fecho=3D\$ac=5Ftry;;=0A+ *) = ac=5Ftry=5Fecho=3D$ac=5Ftry;;=0A+esac=0A+eval "echo \"\$as=5Fme:$LINENO: $a= c=5Ftry=5Fecho\"") >&5=0A+ (eval "$ac=5Fcompile") 2>conftest.er1=0A+ ac= =5Fstatus=3D$?=0A+ grep -v '^ *+' conftest.er1 >conftest.err=0A+ rm -f co= nftest.er1=0A+ cat conftest.err >&5=0A+ echo "$as=5Fme:$LINENO: \$? =3D $= ac=5Fstatus" >&5=0A+ (exit $ac=5Fstatus); } && {=0A+ test -z "$ac=5Fc=5Fw= error=5Fflag" ||=0A+ test ! -s conftest.err=0A+ } && test -s conftes= t.$ac=5Fobjext; then=0A+ eval "$as=5Fac=5FHeader=3Dyes"=0A+else=0A+ echo = "$as=5Fme: failed program was:" >&5=0A+sed 's/^/| /' conftest.$ac=5Fext >&5= =0A+=0A+ eval "$as=5Fac=5FHeader=3Dno"=0A+fi=0A+=0A+rm -f core conftest.err= conftest.$ac=5Fobjext conftest.$ac=5Fext=0A+fi=0A+ac=5Fres=3D`eval echo '$= {'$as=5Fac=5FHeader'}'`=0A+ { echo "$as=5Fme:$LINENO: result: $ac=5F= res" >&5=0A+echo "${ECHO=5FT}$ac=5Fres" >&6; }=0A+if test `eval echo '${'$a= s=5Fac=5FHeader'}'` =3D yes; then=0A+ cat >>confdefs.h <<=5FACEOF=0A+#defi= ne `echo "HAVE=5F$ac=5Fheader" | $as=5Ftr=5Fcpp` 1=0A+=5FACEOF=0A+=0A+fi=0A= +=0A+done=0A+=0A+=0A+=0A+=0A+=0A+=0A+=0A+=0A+=0A+=0A+for ac=5Fheader in pth= read.h fcntl.h limits.h stdint.h sys/time.h unistd.h sys/vfs.h sys/limits.h= =0A+do=0A+as=5Fac=5FHeader=3D`echo "ac=5Fcv=5Fheader=5F$ac=5Fheader" | $as= =5Ftr=5Fsh`=0A+if { as=5Fvar=3D$as=5Fac=5FHeader; eval "test \"\${$as=5Fvar= +set}\" =3D set"; }; then=0A+ { echo "$as=5Fme:$LINENO: checking for $ac= =5Fheader" >&5=0A+echo $ECHO=5FN "checking for $ac=5Fheader... $ECHO=5FC" >= &6; }=0A+if { as=5Fvar=3D$as=5Fac=5FHeader; eval "test \"\${$as=5Fvar+set}\= " =3D set"; }; then=0A+ echo $ECHO=5FN "(cached) $ECHO=5FC" >&6=0A+fi=0A+a= c=5Fres=3D`eval echo '${'$as=5Fac=5FHeader'}'`=0A+ { echo "$as=5Fme:= $LINENO: result: $ac=5Fres" >&5=0A+echo "${ECHO=5FT}$ac=5Fres" >&6; }=0A+el= se=0A+ # Is the header compilable?=0A+{ echo "$as=5Fme:$LINENO: checking $= ac=5Fheader usability" >&5=0A+echo $ECHO=5FN "checking $ac=5Fheader usabili= ty... $ECHO=5FC" >&6; }=0A+cat >conftest.$ac=5Fext <<=5FACEOF=0A+/* confdef= s.h. */=0A+=5FACEOF=0A+cat confdefs.h >>conftest.$ac=5Fext=0A+cat >>confte= st.$ac=5Fext <<=5FACEOF=0A+/* end confdefs.h. */=0A+$ac=5Fincludes=5Fdefau= lt=0A+#include <$ac=5Fheader>=0A+=5FACEOF=0A+rm -f conftest.$ac=5Fobjext=0A= +if { (ac=5Ftry=3D"$ac=5Fcompile"=0A+case "(($ac=5Ftry" in=0A+ *\"* | *\`*= | *\\*) ac=5Ftry=5Fecho=3D\$ac=5Ftry;;=0A+ *) ac=5Ftry=5Fecho=3D$ac=5Ftry= ;;=0A+esac=0A+eval "echo \"\$as=5Fme:$LINENO: $ac=5Ftry=5Fecho\"") >&5=0A+ = (eval "$ac=5Fcompile") 2>conftest.er1=0A+ ac=5Fstatus=3D$?=0A+ grep -v '= ^ *+' conftest.er1 >conftest.err=0A+ rm -f conftest.er1=0A+ cat conftest.= err >&5=0A+ echo "$as=5Fme:$LINENO: \$? =3D $ac=5Fstatus" >&5=0A+ (exit $= ac=5Fstatus); } && {=0A+ test -z "$ac=5Fc=5Fwerror=5Fflag" ||=0A+ test ! = -s conftest.err=0A+ } && test -s conftest.$ac=5Fobjext; then=0A+ ac= =5Fheader=5Fcompiler=3Dyes=0A+else=0A+ echo "$as=5Fme: failed program was:= " >&5=0A+sed 's/^/| /' conftest.$ac=5Fext >&5=0A+=0A+ ac=5Fheader=5Fcompile= r=3Dno=0A+fi=0A+=0A+rm -f core conftest.err conftest.$ac=5Fobjext conftest.= $ac=5Fext=0A+{ echo "$as=5Fme:$LINENO: result: $ac=5Fheader=5Fcompiler" >&5= =0A+echo "${ECHO=5FT}$ac=5Fheader=5Fcompiler" >&6; }=0A+=0A+# Is the header= present?=0A+{ echo "$as=5Fme:$LINENO: checking $ac=5Fheader presence" >&5= =0A+echo $ECHO=5FN "checking $ac=5Fheader presence... $ECHO=5FC" >&6; }=0A+= cat >conftest.$ac=5Fext <<=5FACEOF=0A+/* confdefs.h. */=0A+=5FACEOF=0A+cat= confdefs.h >>conftest.$ac=5Fext=0A+cat >>conftest.$ac=5Fext <<=5FACEOF=0A+= /* end confdefs.h. */=0A+#include <$ac=5Fheader>=0A+=5FACEOF=0A+if { (ac= =5Ftry=3D"$ac=5Fcpp conftest.$ac=5Fext"=0A+case "(($ac=5Ftry" in=0A+ *\"* = | *\`* | *\\*) ac=5Ftry=5Fecho=3D\$ac=5Ftry;;=0A+ *) ac=5Ftry=5Fecho=3D$ac= =5Ftry;;=0A+esac=0A+eval "echo \"\$as=5Fme:$LINENO: $ac=5Ftry=5Fecho\"") >&= 5=0A+ (eval "$ac=5Fcpp conftest.$ac=5Fext") 2>conftest.er1=0A+ ac=5Fstatu= s=3D$?=0A+ grep -v '^ *+' conftest.er1 >conftest.err=0A+ rm -f conftest.e= r1=0A+ cat conftest.err >&5=0A+ echo "$as=5Fme:$LINENO: \$? =3D $ac=5Fsta= tus" >&5=0A+ (exit $ac=5Fstatus); } >/dev/null && {=0A+ test -z "$ac=5Fc= =5Fpreproc=5Fwarn=5Fflag$ac=5Fc=5Fwerror=5Fflag" ||=0A+ test ! -s conftest= .err=0A+ }; then=0A+ ac=5Fheader=5Fpreproc=3Dyes=0A+else=0A+ echo "= $as=5Fme: failed program was:" >&5=0A+sed 's/^/| /' conftest.$ac=5Fext >&5= =0A+=0A+ ac=5Fheader=5Fpreproc=3Dno=0A+fi=0A+=0A+rm -f conftest.err confte= st.$ac=5Fext=0A+{ echo "$as=5Fme:$LINENO: result: $ac=5Fheader=5Fpreproc" >= &5=0A+echo "${ECHO=5FT}$ac=5Fheader=5Fpreproc" >&6; }=0A+=0A+# So? What ab= out this header?=0A+case $ac=5Fheader=5Fcompiler:$ac=5Fheader=5Fpreproc:$ac= =5Fc=5Fpreproc=5Fwarn=5Fflag in=0A+ yes:no: )=0A+ { echo "$as=5Fme:$LIN= ENO: WARNING: $ac=5Fheader: accepted by the compiler, rejected by the prepr= ocessor!" >&5=0A+echo "$as=5Fme: WARNING: $ac=5Fheader: accepted by the com= piler, rejected by the preprocessor!" >&2;}=0A+ { echo "$as=5Fme:$LINENO= : WARNING: $ac=5Fheader: proceeding with the compiler's result" >&5=0A+echo= "$as=5Fme: WARNING: $ac=5Fheader: proceeding with the compiler's result" >= &2;}=0A+ ac=5Fheader=5Fpreproc=3Dyes=0A+ ;;=0A+ no:yes:* )=0A+ { = echo "$as=5Fme:$LINENO: WARNING: $ac=5Fheader: present but cannot be compil= ed" >&5=0A+echo "$as=5Fme: WARNING: $ac=5Fheader: present but cannot be com= piled" >&2;}=0A+ { echo "$as=5Fme:$LINENO: WARNING: $ac=5Fheader: ch= eck for missing prerequisite headers?" >&5=0A+echo "$as=5Fme: WARNING: $ac= =5Fheader: check for missing prerequisite headers?" >&2;}=0A+ { echo= "$as=5Fme:$LINENO: WARNING: $ac=5Fheader: see the Autoconf documentation" = >&5=0A+echo "$as=5Fme: WARNING: $ac=5Fheader: see the Autoconf documentatio= n" >&2;}=0A+ { echo "$as=5Fme:$LINENO: WARNING: $ac=5Fheader: sectio= n \"Present But Cannot Be Compiled\"" >&5=0A+echo "$as=5Fme: WARNING: $ac= =5Fheader: section \"Present But Cannot Be Compiled\"" >&2;}=0A+ { e= cho "$as=5Fme:$LINENO: WARNING: $ac=5Fheader: proceeding with the preproces= sor's result" >&5=0A+echo "$as=5Fme: WARNING: $ac=5Fheader: proceeding with= the preprocessor's result" >&2;}=0A+ { echo "$as=5Fme:$LINENO: WARNING:= $ac=5Fheader: in the future, the compiler will take precedence" >&5=0A+ech= o "$as=5Fme: WARNING: $ac=5Fheader: in the future, the compiler will take p= recedence" >&2;}=0A+=0A+ ;;=0A+esac=0A+{ echo "$as=5Fme:$LINENO: checkin= g for $ac=5Fheader" >&5=0A+echo $ECHO=5FN "checking for $ac=5Fheader... $EC= HO=5FC" >&6; }=0A+if { as=5Fvar=3D$as=5Fac=5FHeader; eval "test \"\${$as=5F= var+set}\" =3D set"; }; then=0A+ echo $ECHO=5FN "(cached) $ECHO=5FC" >&6= =0A+else=0A+ eval "$as=5Fac=5FHeader=3D\$ac=5Fheader=5Fpreproc"=0A+fi=0A+a= c=5Fres=3D`eval echo '${'$as=5Fac=5FHeader'}'`=0A+ { echo "$as=5Fme:= $LINENO: result: $ac=5Fres" >&5=0A+echo "${ECHO=5FT}$ac=5Fres" >&6; }=0A+= =0A+fi=0A+if test `eval echo '${'$as=5Fac=5FHeader'}'` =3D yes; then=0A+ c= at >>confdefs.h <<=5FACEOF=0A+#define `echo "HAVE=5F$ac=5Fheader" | $as=5Ft= r=5Fcpp` 1=0A+=5FACEOF=0A+=0A+fi=0A+=0A+done=0A+=0A+=0A+{ echo "$as=5Fme:$L= INENO: checking for an ANSI C-conforming const" >&5=0A+echo $ECHO=5FN "chec= king for an ANSI C-conforming const... $ECHO=5FC" >&6; }=0A+if test "${ac= =5Fcv=5Fc=5Fconst+set}" =3D set; then=0A+ echo $ECHO=5FN "(cached) $ECHO= =5FC" >&6=0A+else=0A+ cat >conftest.$ac=5Fext <<=5FACEOF=0A+/* confdefs.h.= */=0A+=5FACEOF=0A+cat confdefs.h >>conftest.$ac=5Fext=0A+cat >>conftest.$= ac=5Fext <<=5FACEOF=0A+/* end confdefs.h. */=0A+=0A+int=0A+main ()=0A+{=0A= +/* FIXME: Include the comments suggested by Paul. */=0A+#ifndef =5F=5Fcplu= splus=0A+ /* Ultrix mips cc rejects this. */=0A+ typedef int charset[2];= =0A+ const charset cs;=0A+ /* SunOS 4.1.1 cc rejects this. */=0A+ char = const *const *pcpcc;=0A+ char **ppc;=0A+ /* NEC SVR4.0.2 mips cc rejects = this. */=0A+ struct point {int x, y;};=0A+ static struct point const zer= o =3D {0,0};=0A+ /* AIX XL C 1.02.0.0 rejects this.=0A+ It does not le= t you subtract one const X* pointer from another in=0A+ an arm of an if= -expression whose if-part is not a constant=0A+ expression */=0A+ cons= t char *g =3D "string";=0A+ pcpcc =3D &g + (g ? g-g : 0);=0A+ /* HPUX 7.0= cc rejects these. */=0A+ ++pcpcc;=0A+ ppc =3D (char**) pcpcc;=0A+ pcpcc= =3D (char const *const *) ppc;=0A+ { /* SCO 3.2v4 cc rejects this. */=0A= + char *t;=0A+ char const *s =3D 0 ? (char *) 0 : (char const *) 0;= =0A+=0A+ *t++ =3D 0;=0A+ if (s) return 0;=0A+ }=0A+ { /* Someone th= inks the Sun supposedly-ANSI compiler will reject this. */=0A+ int x[] = =3D {25, 17};=0A+ const int *foo =3D &x[0];=0A+ ++foo;=0A+ }=0A+ { = /* Sun SC1.0 ANSI compiler rejects this -- but not the above. */=0A+ typ= edef const int *iptr;=0A+ iptr p =3D 0;=0A+ ++p;=0A+ }=0A+ { /* AIX= XL C 1.02.0.0 rejects this saying=0A+ "k.c", line 2.27: 1506-025 (S)= Operand must be a modifiable lvalue. */=0A+ struct s { int j; const int= *ap[3]; };=0A+ struct s *b; b->j =3D 5;=0A+ }=0A+ { /* ULTRIX-32 V3.1= (Rev 9) vcc rejects this */=0A+ const int foo =3D 10;=0A+ if (!foo) = return 0;=0A+ }=0A+ return !cs[0] && !zero.x;=0A+#endif=0A+=0A+ ;=0A+ r= eturn 0;=0A+}=0A+=5FACEOF=0A+rm -f conftest.$ac=5Fobjext=0A+if { (ac=5Ftry= =3D"$ac=5Fcompile"=0A+case "(($ac=5Ftry" in=0A+ *\"* | *\`* | *\\*) ac=5Ft= ry=5Fecho=3D\$ac=5Ftry;;=0A+ *) ac=5Ftry=5Fecho=3D$ac=5Ftry;;=0A+esac=0A+e= val "echo \"\$as=5Fme:$LINENO: $ac=5Ftry=5Fecho\"") >&5=0A+ (eval "$ac=5Fc= ompile") 2>conftest.er1=0A+ ac=5Fstatus=3D$?=0A+ grep -v '^ *+' conftest.= er1 >conftest.err=0A+ rm -f conftest.er1=0A+ cat conftest.err >&5=0A+ ec= ho "$as=5Fme:$LINENO: \$? =3D $ac=5Fstatus" >&5=0A+ (exit $ac=5Fstatus); }= && {=0A+ test -z "$ac=5Fc=5Fwerror=5Fflag" ||=0A+ test ! -s conftest.err= =0A+ } && test -s conftest.$ac=5Fobjext; then=0A+ ac=5Fcv=5Fc=5Fcons= t=3Dyes=0A+else=0A+ echo "$as=5Fme: failed program was:" >&5=0A+sed 's/^/|= /' conftest.$ac=5Fext >&5=0A+=0A+ ac=5Fcv=5Fc=5Fconst=3Dno=0A+fi=0A+=0A+rm= -f core conftest.err conftest.$ac=5Fobjext conftest.$ac=5Fext=0A+fi=0A+{ e= cho "$as=5Fme:$LINENO: result: $ac=5Fcv=5Fc=5Fconst" >&5=0A+echo "${ECHO=5F= T}$ac=5Fcv=5Fc=5Fconst" >&6; }=0A+if test $ac=5Fcv=5Fc=5Fconst =3D no; then= =0A+=0A+cat >>confdefs.h <<\=5FACEOF=0A+#define const=0A+=5FACEOF=0A+=0A+fi= =0A+=0A+{ echo "$as=5Fme:$LINENO: checking whether time.h and sys/time.h ma= y both be included" >&5=0A+echo $ECHO=5FN "checking whether time.h and sys/= time.h may both be included... $ECHO=5FC" >&6; }=0A+if test "${ac=5Fcv=5Fhe= ader=5Ftime+set}" =3D set; then=0A+ echo $ECHO=5FN "(cached) $ECHO=5FC" >&= 6=0A+else=0A+ cat >conftest.$ac=5Fext <<=5FACEOF=0A+/* confdefs.h. */=0A+= =5FACEOF=0A+cat confdefs.h >>conftest.$ac=5Fext=0A+cat >>conftest.$ac=5Fext= <<=5FACEOF=0A+/* end confdefs.h. */=0A+#include =0A+#include= =0A+#include =0A+=0A+int=0A+main ()=0A+{=0A+if ((struc= t tm *) 0)=0A+return 0;=0A+ ;=0A+ return 0;=0A+}=0A+=5FACEOF=0A+rm -f con= ftest.$ac=5Fobjext=0A+if { (ac=5Ftry=3D"$ac=5Fcompile"=0A+case "(($ac=5Ftry= " in=0A+ *\"* | *\`* | *\\*) ac=5Ftry=5Fecho=3D\$ac=5Ftry;;=0A+ *) ac=5Ft= ry=5Fecho=3D$ac=5Ftry;;=0A+esac=0A+eval "echo \"\$as=5Fme:$LINENO: $ac=5Ftr= y=5Fecho\"") >&5=0A+ (eval "$ac=5Fcompile") 2>conftest.er1=0A+ ac=5Fstatu= s=3D$?=0A+ grep -v '^ *+' conftest.er1 >conftest.err=0A+ rm -f conftest.e= r1=0A+ cat conftest.err >&5=0A+ echo "$as=5Fme:$LINENO: \$? =3D $ac=5Fsta= tus" >&5=0A+ (exit $ac=5Fstatus); } && {=0A+ test -z "$ac=5Fc=5Fwerror=5F= flag" ||=0A+ test ! -s conftest.err=0A+ } && test -s conftest.$ac=5F= objext; then=0A+ ac=5Fcv=5Fheader=5Ftime=3Dyes=0A+else=0A+ echo "$as=5Fme= : failed program was:" >&5=0A+sed 's/^/| /' conftest.$ac=5Fext >&5=0A+=0A+ = ac=5Fcv=5Fheader=5Ftime=3Dno=0A+fi=0A+=0A+rm -f core conftest.err conftest.= $ac=5Fobjext conftest.$ac=5Fext=0A+fi=0A+{ echo "$as=5Fme:$LINENO: result: = $ac=5Fcv=5Fheader=5Ftime" >&5=0A+echo "${ECHO=5FT}$ac=5Fcv=5Fheader=5Ftime"= >&6; }=0A+if test $ac=5Fcv=5Fheader=5Ftime =3D yes; then=0A+=0A+cat >>conf= defs.h <<\=5FACEOF=0A+#define TIME=5FWITH=5FSYS=5FTIME 1=0A+=5FACEOF=0A+=0A= +fi=0A+=0A+=0A+{ echo "$as=5Fme:$LINENO: checking for function prototypes" = >&5=0A+echo $ECHO=5FN "checking for function prototypes... $ECHO=5FC" >&6; = }=0A+if test "$ac=5Fcv=5Fprog=5Fcc=5Fc89" !=3D no; then=0A+ { echo "$as=5F= me:$LINENO: result: yes" >&5=0A+echo "${ECHO=5FT}yes" >&6; }=0A+=0A+cat >>c= onfdefs.h <<\=5FACEOF=0A+#define PROTOTYPES 1=0A+=5FACEOF=0A+=0A+=0A+cat >>= confdefs.h <<\=5FACEOF=0A+#define =5F=5FPROTOTYPES 1=0A+=5FACEOF=0A+=0A+els= e=0A+ { echo "$as=5Fme:$LINENO: result: no" >&5=0A+echo "${ECHO=5FT}no" >&= 6; }=0A+fi=0A+=0A+{ echo "$as=5Fme:$LINENO: checking whether setvbuf argume= nts are reversed" >&5=0A+echo $ECHO=5FN "checking whether setvbuf arguments= are reversed... $ECHO=5FC" >&6; }=0A+if test "${ac=5Fcv=5Ffunc=5Fsetvbuf= =5Freversed+set}" =3D set; then=0A+ echo $ECHO=5FN "(cached) $ECHO=5FC" >&= 6=0A+else=0A+ ac=5Fcv=5Ffunc=5Fsetvbuf=5Freversed=3Dno=0A+ cat >conftest= .$ac=5Fext <<=5FACEOF=0A+/* confdefs.h. */=0A+=5FACEOF=0A+cat confdefs.h >= >conftest.$ac=5Fext=0A+cat >>conftest.$ac=5Fext <<=5FACEOF=0A+/* end confde= fs.h. */=0A+#include =0A+# ifdef PROTOTYPES=0A+ int (setvbuf= ) (FILE *, int, char *, size=5Ft);=0A+# endif=0A+int=0A+main ()=0A+{=0A+c= har buf; return setvbuf (stdout, =5FIOLBF, &buf, 1);=0A+ ;=0A+ return 0;= =0A+}=0A+=5FACEOF=0A+rm -f conftest.$ac=5Fobjext conftest$ac=5Fexeext=0A+if= { (ac=5Ftry=3D"$ac=5Flink"=0A+case "(($ac=5Ftry" in=0A+ *\"* | *\`* | *\\= *) ac=5Ftry=5Fecho=3D\$ac=5Ftry;;=0A+ *) ac=5Ftry=5Fecho=3D$ac=5Ftry;;=0A+= esac=0A+eval "echo \"\$as=5Fme:$LINENO: $ac=5Ftry=5Fecho\"") >&5=0A+ (eval= "$ac=5Flink") 2>conftest.er1=0A+ ac=5Fstatus=3D$?=0A+ grep -v '^ *+' con= ftest.er1 >conftest.err=0A+ rm -f conftest.er1=0A+ cat conftest.err >&5= =0A+ echo "$as=5Fme:$LINENO: \$? =3D $ac=5Fstatus" >&5=0A+ (exit $ac=5Fst= atus); } && {=0A+ test -z "$ac=5Fc=5Fwerror=5Fflag" ||=0A+ test ! -s conf= test.err=0A+ } && test -s conftest$ac=5Fexeext &&=0A+ $as=5Ftes= t=5Fx conftest$ac=5Fexeext; then=0A+ cat >conftest.$ac=5Fext <<=5FACEOF=0A= +/* confdefs.h. */=0A+=5FACEOF=0A+cat confdefs.h >>conftest.$ac=5Fext=0A+c= at >>conftest.$ac=5Fext <<=5FACEOF=0A+/* end confdefs.h. */=0A+#include =0A+# ifdef PROTOTYPES=0A+ int (setvbuf) (FILE *, int, ch= ar *, size=5Ft);=0A+# endif=0A+int=0A+main ()=0A+{=0A+char buf; return= setvbuf (stdout, &buf, =5FIOLBF, 1);=0A+ ;=0A+ return 0;=0A+}=0A+=5FACEO= F=0A+rm -f conftest.$ac=5Fobjext conftest$ac=5Fexeext=0A+if { (ac=5Ftry=3D"= $ac=5Flink"=0A+case "(($ac=5Ftry" in=0A+ *\"* | *\`* | *\\*) ac=5Ftry=5Fec= ho=3D\$ac=5Ftry;;=0A+ *) ac=5Ftry=5Fecho=3D$ac=5Ftry;;=0A+esac=0A+eval "ec= ho \"\$as=5Fme:$LINENO: $ac=5Ftry=5Fecho\"") >&5=0A+ (eval "$ac=5Flink") 2= >conftest.er1=0A+ ac=5Fstatus=3D$?=0A+ grep -v '^ *+' conftest.er1 >conft= est.err=0A+ rm -f conftest.er1=0A+ cat conftest.err >&5=0A+ echo "$as=5F= me:$LINENO: \$? =3D $ac=5Fstatus" >&5=0A+ (exit $ac=5Fstatus); } && {=0A+ = test -z "$ac=5Fc=5Fwerror=5Fflag" ||=0A+ test ! -s conftest.err=0A+ = } && test -s conftest$ac=5Fexeext &&=0A+ $as=5Ftest=5Fx conftest$ac= =5Fexeext; then=0A+ # It compiles and links either way, so it must not be = declared=0A+ # with a prototype and most likely this is a K&R C compiler.= =0A+ # Try running it.=0A+ if test "$cross=5Fcompiling" =3D yes; then=0A+= : # Assume setvbuf is not reversed when cross-compiling.=0A+else=0A+ cat= >conftest.$ac=5Fext <<=5FACEOF=0A+/* confdefs.h. */=0A+=5FACEOF=0A+cat co= nfdefs.h >>conftest.$ac=5Fext=0A+cat >>conftest.$ac=5Fext <<=5FACEOF=0A+/* = end confdefs.h. */=0A+$ac=5Fincludes=5Fdefault=0A+int=0A+main ()=0A+{=0A+/= * This call has the arguments reversed.=0A+ A reversed system may check= and see that the address of buf=0A+ is not =5FIOLBF, =5FIONBF, or =5FI= OFBF, and return nonzero. */=0A+ char buf;=0A+ if (setvbuf (stdout, =5FI= OLBF, &buf, 1) !=3D 0)=0A+ return 1;=0A+ putchar ('\r');=0A+ return 0;= /* Non-reversed systems SEGV here. */=0A+ ;=0A+ return 0;=0A+}=0A+=5FAC= EOF=0A+rm -f conftest$ac=5Fexeext=0A+if { (ac=5Ftry=3D"$ac=5Flink"=0A+case = "(($ac=5Ftry" in=0A+ *\"* | *\`* | *\\*) ac=5Ftry=5Fecho=3D\$ac=5Ftry;;=0A= + *) ac=5Ftry=5Fecho=3D$ac=5Ftry;;=0A+esac=0A+eval "echo \"\$as=5Fme:$LINE= NO: $ac=5Ftry=5Fecho\"") >&5=0A+ (eval "$ac=5Flink") 2>&5=0A+ ac=5Fstatus= =3D$?=0A+ echo "$as=5Fme:$LINENO: \$? =3D $ac=5Fstatus" >&5=0A+ (exit $ac= =5Fstatus); } && { ac=5Ftry=3D'./conftest$ac=5Fexeext'=0A+ { (case "(($ac= =5Ftry" in=0A+ *\"* | *\`* | *\\*) ac=5Ftry=5Fecho=3D\$ac=5Ftry;;=0A+ *) = ac=5Ftry=5Fecho=3D$ac=5Ftry;;=0A+esac=0A+eval "echo \"\$as=5Fme:$LINENO: $a= c=5Ftry=5Fecho\"") >&5=0A+ (eval "$ac=5Ftry") 2>&5=0A+ ac=5Fstatus=3D$?= =0A+ echo "$as=5Fme:$LINENO: \$? =3D $ac=5Fstatus" >&5=0A+ (exit $ac=5Fst= atus); }; }; then=0A+ ac=5Fcv=5Ffunc=5Fsetvbuf=5Freversed=3Dyes=0A+else=0A= + echo "$as=5Fme: program exited with status $ac=5Fstatus" >&5=0A+echo "$a= s=5Fme: failed program was:" >&5=0A+sed 's/^/| /' conftest.$ac=5Fext >&5=0A= +=0A+fi=0A+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac=5F= exeext conftest.$ac=5Fobjext conftest.$ac=5Fext=0A+fi=0A+=0A+=0A+ ac=5Fcv= =5Ffunc=5Fsetvbuf=5Freversed=3Dyes=0A+else=0A+ echo "$as=5Fme: failed prog= ram was:" >&5=0A+sed 's/^/| /' conftest.$ac=5Fext >&5=0A+=0A+=0A+fi=0A+=0A+= rm -f core conftest.err conftest.$ac=5Fobjext conftest=5Fipa8=5Fconftest.oo= \=0A+ conftest$ac=5Fexeext conftest.$ac=5Fext=0A+else=0A+ echo "$as= =5Fme: failed program was:" >&5=0A+sed 's/^/| /' conftest.$ac=5Fext >&5=0A+= =0A+=0A+fi=0A+=0A+rm -f core conftest.err conftest.$ac=5Fobjext conftest=5F= ipa8=5Fconftest.oo \=0A+ conftest$ac=5Fexeext conftest.$ac=5Fext=0A+fi= =0A+{ echo "$as=5Fme:$LINENO: result: $ac=5Fcv=5Ffunc=5Fsetvbuf=5Freversed"= >&5=0A+echo "${ECHO=5FT}$ac=5Fcv=5Ffunc=5Fsetvbuf=5Freversed" >&6; }=0A+if= test $ac=5Fcv=5Ffunc=5Fsetvbuf=5Freversed =3D yes; then=0A+=0A+cat >>confd= efs.h <<\=5FACEOF=0A+#define SETVBUF=5FREVERSED 1=0A+=5FACEOF=0A+=0A+fi=0A+= =0A+=0A+=0A+=0A+=0A+=0A+=0A+=0A+=0A+=0A+for ac=5Ffunc in system gettimeofda= y mkdir strerror open64 stat64 fseeko64 lrand48=5Fr srand48=5Fr=0A+do=0A+as= =5Fac=5Fvar=3D`echo "ac=5Fcv=5Ffunc=5F$ac=5Ffunc" | $as=5Ftr=5Fsh`=0A+{ ech= o "$as=5Fme:$LINENO: checking for $ac=5Ffunc" >&5=0A+echo $ECHO=5FN "checki= ng for $ac=5Ffunc... $ECHO=5FC" >&6; }=0A+if { as=5Fvar=3D$as=5Fac=5Fvar; e= val "test \"\${$as=5Fvar+set}\" =3D set"; }; then=0A+ echo $ECHO=5FN "(cac= hed) $ECHO=5FC" >&6=0A+else=0A+ cat >conftest.$ac=5Fext <<=5FACEOF=0A+/* c= onfdefs.h. */=0A+=5FACEOF=0A+cat confdefs.h >>conftest.$ac=5Fext=0A+cat >>= conftest.$ac=5Fext <<=5FACEOF=0A+/* end confdefs.h. */=0A+/* Define $ac=5F= func to an innocuous variant, in case declares $ac=5Ffunc.=0A+ = For example, HP-UX 11i declares gettimeofday. */=0A+#define $a= c=5Ffunc innocuous=5F$ac=5Ffunc=0A+=0A+/* System header to define =5F=5Fstu= b macros and hopefully few prototypes,=0A+ which can conflict with char = $ac=5Ffunc (); below.=0A+ Prefer to if =5F=5FSTDC= =5F=5F is defined, since=0A+ exists even on freestanding comp= ilers. */=0A+=0A+#ifdef =5F=5FSTDC=5F=5F=0A+# include =0A+#else= =0A+# include =0A+#endif=0A+=0A+#undef $ac=5Ffunc=0A+=0A+/* Overr= ide any GCC internal prototype to avoid an error.=0A+ Use char because in= t might match the return type of a GCC=0A+ builtin and then its argument = prototype would still apply. */=0A+#ifdef =5F=5Fcplusplus=0A+extern "C"=0A= +#endif=0A+char $ac=5Ffunc ();=0A+/* The GNU C library defines this for fun= ctions which it implements=0A+ to always fail with ENOSYS. Some functio= ns are actually named=0A+ something starting with =5F=5F and the normal = name is an alias. */=0A+#if defined =5F=5Fstub=5F$ac=5Ffunc || defined =5F= =5Fstub=5F=5F=5F$ac=5Ffunc=0A+choke me=0A+#endif=0A+=0A+int=0A+main ()=0A+{= =0A+return $ac=5Ffunc ();=0A+ ;=0A+ return 0;=0A+}=0A+=5FACEOF=0A+rm -f c= onftest.$ac=5Fobjext conftest$ac=5Fexeext=0A+if { (ac=5Ftry=3D"$ac=5Flink"= =0A+case "(($ac=5Ftry" in=0A+ *\"* | *\`* | *\\*) ac=5Ftry=5Fecho=3D\$ac= =5Ftry;;=0A+ *) ac=5Ftry=5Fecho=3D$ac=5Ftry;;=0A+esac=0A+eval "echo \"\$as= =5Fme:$LINENO: $ac=5Ftry=5Fecho\"") >&5=0A+ (eval "$ac=5Flink") 2>conftest= .er1=0A+ ac=5Fstatus=3D$?=0A+ grep -v '^ *+' conftest.er1 >conftest.err= =0A+ rm -f conftest.er1=0A+ cat conftest.err >&5=0A+ echo "$as=5Fme:$LIN= ENO: \$? =3D $ac=5Fstatus" >&5=0A+ (exit $ac=5Fstatus); } && {=0A+ test -= z "$ac=5Fc=5Fwerror=5Fflag" ||=0A+ test ! -s conftest.err=0A+ } && t= est -s conftest$ac=5Fexeext &&=0A+ $as=5Ftest=5Fx conftest$ac=5Fexeex= t; then=0A+ eval "$as=5Fac=5Fvar=3Dyes"=0A+else=0A+ echo "$as=5Fme: faile= d program was:" >&5=0A+sed 's/^/| /' conftest.$ac=5Fext >&5=0A+=0A+ eval "$= as=5Fac=5Fvar=3Dno"=0A+fi=0A+=0A+rm -f core conftest.err conftest.$ac=5Fobj= ext conftest=5Fipa8=5Fconftest.oo \=0A+ conftest$ac=5Fexeext conftest.= $ac=5Fext=0A+fi=0A+ac=5Fres=3D`eval echo '${'$as=5Fac=5Fvar'}'`=0A+ = { echo "$as=5Fme:$LINENO: result: $ac=5Fres" >&5=0A+echo "${ECHO=5FT}$ac=5F= res" >&6; }=0A+if test `eval echo '${'$as=5Fac=5Fvar'}'` =3D yes; then=0A+ = cat >>confdefs.h <<=5FACEOF=0A+#define `echo "HAVE=5F$ac=5Ffunc" | $as=5Ft= r=5Fcpp` 1=0A+=5FACEOF=0A+=0A+fi=0A+done=0A+=0A+=0A+=0A+=0A+ac=5Fconfig=5Ff= iles=3D"$ac=5Fconfig=5Ffiles Makefile"=0A+=0A+ac=5Fconfig=5Fcommands=3D"$ac= =5Fconfig=5Fcommands default"=0A+=0A+cat >confcache <<\=5FACEOF=0A+# This f= ile is a shell script that caches the results of configure=0A+# tests run o= n this system so they can be shared between configure=0A+# scripts and conf= igure runs, see configure's option --config-cache.=0A+# It is not useful on= other systems. If it contains results you don't=0A+# want to keep, you ma= y remove or edit it.=0A+#=0A+# config.status only pays attention to the cac= he file if you give it=0A+# the --recheck option to rerun configure.=0A+#= =0A+# `ac=5Fcv=5Fenv=5Ffoo' variables (set or unset) will be overridden whe= n=0A+# loading this file, other *unset* `ac=5Fcv=5Ffoo' will be assigned th= e=0A+# following values.=0A+=0A+=5FACEOF=0A+=0A+# The following way of writ= ing the cache mishandles newlines in values,=0A+# but we know of no workaro= und that is simple, portable, and efficient.=0A+# So, we kill variables con= taining newlines.=0A+# Ultrix sh set writes to stderr and can't be redirect= ed directly,=0A+# and sets the high bit in the cache file unless we assign = to the vars.=0A+(=0A+ for ac=5Fvar in `(set) 2>&1 | sed -n 's/^\([a-zA-Z= =5F][a-zA-Z0-9=5F]*\)=3D.*/\1/p'`; do=0A+ eval ac=5Fval=3D\$$ac=5Fvar=0A= + case $ac=5Fval in #(=0A+ *${as=5Fnl}*)=0A+ case $ac=5Fvar in #= (=0A+ *=5Fcv=5F*) { echo "$as=5Fme:$LINENO: WARNING: Cache variable $a= c=5Fvar contains a newline." >&5=0A+echo "$as=5Fme: WARNING: Cache variable= $ac=5Fvar contains a newline." >&2;} ;;=0A+ esac=0A+ case $ac=5F= var in #(=0A+ =5F | IFS | as=5Fnl) ;; #(=0A+ *) $as=5Funset $ac= =5Fvar ;;=0A+ esac ;;=0A+ esac=0A+ done=0A+=0A+ (set) 2>&1 |=0A+ = case $as=5Fnl`(ac=5Fspace=3D' '; set) 2>&1` in #(=0A+ *${as=5Fnl}ac= =5Fspace=3D\ *)=0A+ # `set' does not quote correctly, so add quotes (d= ouble-quote=0A+ # substitution turns \\\\ into \\, and sed turns \\ in= to \).=0A+ sed -n \=0A+ "s/'/'\\\\''/g;=0A+ s/^\\([=5F$as=5Fcr=5Faln= um]*=5Fcv=5F[=5F$as=5Fcr=5Falnum]*\\)=3D\\(.*\\)/\\1=3D'\\2'/p"=0A+ ;;= #(=0A+ *)=0A+ # `set' quotes correctly as required by POSIX, so do= not add quotes.=0A+ sed -n "/^[=5F$as=5Fcr=5Falnum]*=5Fcv=5F[=5F$as= =5Fcr=5Falnum]*=3D/p"=0A+ ;;=0A+ esac |=0A+ sort=0A+) |=0A+ sed= '=0A+ /^ac=5Fcv=5Fenv=5F/b end=0A+ t clear=0A+ :clear=0A+ = s/^\([^=3D]*\)=3D\(.*[{}].*\)$/test "${\1+set}" =3D set || &/=0A+ t end= =0A+ s/^\([^=3D]*\)=3D\(.*\)$/\1=3D${\1=3D\2}/=0A+ :end' >>confcach= e=0A+if diff "$cache=5Ffile" confcache >/dev/null 2>&1; then :; else=0A+ i= f test -w "$cache=5Ffile"; then=0A+ test "x$cache=5Ffile" !=3D "x/dev/nu= ll" &&=0A+ { echo "$as=5Fme:$LINENO: updating cache $cache=5Ffile" >&5= =0A+echo "$as=5Fme: updating cache $cache=5Ffile" >&6;}=0A+ cat confcach= e >$cache=5Ffile=0A+ else=0A+ { echo "$as=5Fme:$LINENO: not updating un= writable cache $cache=5Ffile" >&5=0A+echo "$as=5Fme: not updating unwritabl= e cache $cache=5Ffile" >&6;}=0A+ fi=0A+fi=0A+rm -f confcache=0A+=0A+test "= x$prefix" =3D xNONE && prefix=3D$ac=5Fdefault=5Fprefix=0A+# Let make expand= exec=5Fprefix.=0A+test "x$exec=5Fprefix" =3D xNONE && exec=5Fprefix=3D'${p= refix}'=0A+=0A+DEFS=3D-DHAVE=5FCONFIG=5FH=0A+=0A+ac=5Flibobjs=3D=0A+ac=5Flt= libobjs=3D=0A+for ac=5Fi in : $LIBOBJS; do test "x$ac=5Fi" =3D x: && contin= ue=0A+ # 1. Remove the extension, and $U if already installed.=0A+ ac=5Fs= cript=3D's/\$U\././;s/\.o$//;s/\.obj$//'=0A+ ac=5Fi=3D`echo "$ac=5Fi" | se= d "$ac=5Fscript"`=0A+ # 2. Prepend LIBOBJDIR. When used with automake>=3D= 1.10 LIBOBJDIR=0A+ # will be set to the directory where LIBOBJS objects= are built.=0A+ ac=5Flibobjs=3D"$ac=5Flibobjs \${LIBOBJDIR}$ac=5Fi\$U.$ac= =5Fobjext"=0A+ ac=5Fltlibobjs=3D"$ac=5Fltlibobjs \${LIBOBJDIR}$ac=5Fi"'$U.= lo'=0A+done=0A+LIBOBJS=3D$ac=5Flibobjs=0A+=0A+LTLIBOBJS=3D$ac=5Fltlibobjs= =0A+=0A+=0A+if test -z "${AMDEP=5FTRUE}" && test -z "${AMDEP=5FFALSE}"; the= n=0A+ { { echo "$as=5Fme:$LINENO: error: conditional \"AMDEP\" was never d= efined.=0A+Usually this means the macro was only invoked conditionally." >&= 5=0A+echo "$as=5Fme: error: conditional \"AMDEP\" was never defined.=0A+Usu= ally this means the macro was only invoked conditionally." >&2;}=0A+ { (e= xit 1); exit 1; }; }=0A+fi=0A+if test -z "${am=5F=5FfastdepCC=5FTRUE}" && t= est -z "${am=5F=5FfastdepCC=5FFALSE}"; then=0A+ { { echo "$as=5Fme:$LINENO= : error: conditional \"am=5F=5FfastdepCC\" was never defined.=0A+Usually th= is means the macro was only invoked conditionally." >&5=0A+echo "$as=5Fme: = error: conditional \"am=5F=5FfastdepCC\" was never defined.=0A+Usually this= means the macro was only invoked conditionally." >&2;}=0A+ { (exit 1); e= xit 1; }; }=0A+fi=0A+if test -z "${am=5F=5FfastdepCC=5FTRUE}" && test -z "$= {am=5F=5FfastdepCC=5FFALSE}"; then=0A+ { { echo "$as=5Fme:$LINENO: error: = conditional \"am=5F=5FfastdepCC\" was never defined.=0A+Usually this means = the macro was only invoked conditionally." >&5=0A+echo "$as=5Fme: error: co= nditional \"am=5F=5FfastdepCC\" was never defined.=0A+Usually this means th= e macro was only invoked conditionally." >&2;}=0A+ { (exit 1); exit 1; };= }=0A+fi=0A+=0A+: ${CONFIG=5FSTATUS=3D./config.status}=0A+ac=5Fclean=5Ffile= s=5Fsave=3D$ac=5Fclean=5Ffiles=0A+ac=5Fclean=5Ffiles=3D"$ac=5Fclean=5Ffiles= $CONFIG=5FSTATUS"=0A+{ echo "$as=5Fme:$LINENO: creating $CONFIG=5FSTATUS" = >&5=0A+echo "$as=5Fme: creating $CONFIG=5FSTATUS" >&6;}=0A+cat >$CONFIG=5FS= TATUS <<=5FACEOF=0A+#! $SHELL=0A+# Generated by $as=5Fme.=0A+# Run this fil= e to recreate the current configuration.=0A+# Compiler output produced by c= onfigure, useful for debugging=0A+# configure, is in config.log if it exist= s.=0A+=0A+debug=3Dfalse=0A+ac=5Fcs=5Frecheck=3Dfalse=0A+ac=5Fcs=5Fsilent=3D= false=0A+SHELL=3D\${CONFIG=5FSHELL-$SHELL}=0A+=5FACEOF=0A+=0A+cat >>$CONFIG= =5FSTATUS <<\=5FACEOF=0A+## --------------------- ##=0A+## M4sh Initializat= ion. ##=0A+## --------------------- ##=0A+=0A+# Be more Bourne compatible= =0A+DUALCASE=3D1; export DUALCASE # for MKS sh=0A+if test -n "${ZSH=5FVERSI= ON+set}" && (emulate sh) >/dev/null 2>&1; then=0A+ emulate sh=0A+ NULLCMD= =3D:=0A+ # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which=0A+= # is contrary to our usage. Disable this feature.=0A+ alias -g '${1+"$@= "}'=3D'"$@"'=0A+ setopt NO=5FGLOB=5FSUBST=0A+else=0A+ case `(set -o) 2>/d= ev/null` in=0A+ *posix*) set -o posix ;;=0A+esac=0A+=0A+fi=0A+=0A+=0A+=0A+= =0A+# PATH needs CR=0A+# Avoid depending upon Character Ranges.=0A+as=5Fcr= =5Fletters=3D'abcdefghijklmnopqrstuvwxyz'=0A+as=5Fcr=5FLETTERS=3D'ABCDEFGHI= JKLMNOPQRSTUVWXYZ'=0A+as=5Fcr=5FLetters=3D$as=5Fcr=5Fletters$as=5Fcr=5FLETT= ERS=0A+as=5Fcr=5Fdigits=3D'0123456789'=0A+as=5Fcr=5Falnum=3D$as=5Fcr=5FLett= ers$as=5Fcr=5Fdigits=0A+=0A+# The user is always right.=0A+if test "${PATH= =5FSEPARATOR+set}" !=3D set; then=0A+ echo "#! /bin/sh" >conf$$.sh=0A+ ec= ho "exit 0" >>conf$$.sh=0A+ chmod +x conf$$.sh=0A+ if (PATH=3D"/nonexi= stent;."; conf$$.sh) >/dev/null 2>&1; then=0A+ PATH=5FSEPARATOR=3D';'=0A= + else=0A+ PATH=5FSEPARATOR=3D:=0A+ fi=0A+ rm -f conf$$.sh=0A+fi=0A+= =0A+# Support unset when possible.=0A+if ( (MAIL=3D60; unset MAIL) || exit)= >/dev/null 2>&1; then=0A+ as=5Funset=3Dunset=0A+else=0A+ as=5Funset=3Dfa= lse=0A+fi=0A+=0A+=0A+# IFS=0A+# We need space, tab and new line, in precise= ly that order. Quoting is=0A+# there to prevent editors from complaining a= bout space-tab.=0A+# (If =5FAS=5FPATH=5FWALK were called with IFS unset, it= would disable word=0A+# splitting by setting IFS to empty value.)=0A+as=5F= nl=3D'=0A+'=0A+IFS=3D" "" $as=5Fnl"=0A+=0A+# Find who we are. Look in the = path if we contain no directory separator.=0A+case $0 in=0A+ *[\\/]* ) as= =5Fmyself=3D$0 ;;=0A+ *) as=5Fsave=5FIFS=3D$IFS; IFS=3D$PATH=5FSEPARATOR= =0A+for as=5Fdir in $PATH=0A+do=0A+ IFS=3D$as=5Fsave=5FIFS=0A+ test -z "$= as=5Fdir" && as=5Fdir=3D.=0A+ test -r "$as=5Fdir/$0" && as=5Fmyself=3D$as= =5Fdir/$0 && break=0A+done=0A+IFS=3D$as=5Fsave=5FIFS=0A+=0A+ ;;=0A+esac= =0A+# We did not find ourselves, most probably we were run as `sh COMMAND'= =0A+# in which case we are not to be found in the path.=0A+if test "x$as=5F= myself" =3D x; then=0A+ as=5Fmyself=3D$0=0A+fi=0A+if test ! -f "$as=5Fmyse= lf"; then=0A+ echo "$as=5Fmyself: error: cannot find myself; rerun with an= absolute file name" >&2=0A+ { (exit 1); exit 1; }=0A+fi=0A+=0A+# Work aro= und bugs in pre-3.0 UWIN ksh.=0A+for as=5Fvar in ENV MAIL MAILPATH=0A+do ($= as=5Funset $as=5Fvar) >/dev/null 2>&1 && $as=5Funset $as=5Fvar=0A+done=0A+P= S1=3D'$ '=0A+PS2=3D'> '=0A+PS4=3D'+ '=0A+=0A+# NLS nuisances.=0A+for as=5Fv= ar in \=0A+ LANG LANGUAGE LC=5FADDRESS LC=5FALL LC=5FCOLLATE LC=5FCTYPE LC= =5FIDENTIFICATION \=0A+ LC=5FMEASUREMENT LC=5FMESSAGES LC=5FMONETARY LC=5F= NAME LC=5FNUMERIC LC=5FPAPER \=0A+ LC=5FTELEPHONE LC=5FTIME=0A+do=0A+ if = (set +x; test -z "`(eval $as=5Fvar=3DC; export $as=5Fvar) 2>&1`"); then=0A+= eval $as=5Fvar=3DC; export $as=5Fvar=0A+ else=0A+ ($as=5Funset $as= =5Fvar) >/dev/null 2>&1 && $as=5Funset $as=5Fvar=0A+ fi=0A+done=0A+=0A+# R= equired to use basename.=0A+if expr a : '\(a\)' >/dev/null 2>&1 &&=0A+ te= st "X`expr 00001 : '.*\(...\)'`" =3D X001; then=0A+ as=5Fexpr=3Dexpr=0A+el= se=0A+ as=5Fexpr=3Dfalse=0A+fi=0A+=0A+if (basename -- /) >/dev/null 2>&1 &= & test "X`basename -- / 2>&1`" =3D "X/"; then=0A+ as=5Fbasename=3Dbasename= =0A+else=0A+ as=5Fbasename=3Dfalse=0A+fi=0A+=0A+=0A+# Name of the executab= le.=0A+as=5Fme=3D`$as=5Fbasename -- "$0" ||=0A+$as=5Fexpr X/"$0" : '.*/\([^= /][^/]*\)/*$' \| \=0A+ X"$0" : 'X\(//\)$' \| \=0A+ X"$0" : 'X\(/\)' \| . = 2>/dev/null ||=0A+echo X/"$0" |=0A+ sed '/^.*\/\([^/][^/]*\)\/*$/{=0A+ = s//\1/=0A+ q=0A+ }=0A+ /^X\/\(\/\/\)$/{=0A+ s//\1/=0A+ q= =0A+ }=0A+ /^X\/\(\/\).*/{=0A+ s//\1/=0A+ q=0A+ }=0A+ s/.*/= ./; q'`=0A+=0A+# CDPATH.=0A+$as=5Funset CDPATH=0A+=0A+=0A+=0A+ as=5Flineno= =5F1=3D$LINENO=0A+ as=5Flineno=5F2=3D$LINENO=0A+ test "x$as=5Flineno=5F1"= !=3D "x$as=5Flineno=5F2" &&=0A+ test "x`expr $as=5Flineno=5F1 + 1`" =3D "= x$as=5Flineno=5F2" || {=0A+=0A+ # Create $as=5Fme.lineno as a copy of $as= =5Fmyself, but with $LINENO=0A+ # uniformly replaced by the line number. = The first 'sed' inserts a=0A+ # line-number line after each line using $LI= NENO; the second 'sed'=0A+ # does the real work. The second script uses '= N' to pair each=0A+ # line-number line with the line containing $LINENO, a= nd appends=0A+ # trailing '-' during substitution so that $LINENO is not a= special=0A+ # case at line end.=0A+ # (Raja R Harinath suggested sed '= =3D', and Paul Eggert wrote the=0A+ # scripts with optimization help from = Paolo Bonzini. Blame Lee=0A+ # E. McMahon (1931-1989) for sed's syntax. = :-)=0A+ sed -n '=0A+ p=0A+ /[$]LINENO/=3D=0A+ ' <$as=5Fmyself |=0A+= sed '=0A+ s/[$]LINENO.*/&-/=0A+ t lineno=0A+ b=0A+ = :lineno=0A+ N=0A+ :loop=0A+ s/[$]LINENO\([^'$as=5Fcr=5Falnum= '=5F].*\n\)\(.*\)/\2\1\2/=0A+ t loop=0A+ s/-\n.*//=0A+ ' >$as= =5Fme.lineno &&=0A+ chmod +x "$as=5Fme.lineno" ||=0A+ { echo "$as=5Fme:= error: cannot create $as=5Fme.lineno; rerun with a POSIX shell" >&2=0A+ = { (exit 1); exit 1; }; }=0A+=0A+ # Don't try to exec as it changes $[0], c= ausing all sort of problems=0A+ # (the dirname of $[0] is not the place wh= ere we might find the=0A+ # original and so on. Autoconf is especially se= nsitive to this).=0A+ . "./$as=5Fme.lineno"=0A+ # Exit status is that of = the last command.=0A+ exit=0A+}=0A+=0A+=0A+if (as=5Fdir=3D`dirname -- /` &= & test "X$as=5Fdir" =3D X/) >/dev/null 2>&1; then=0A+ as=5Fdirname=3Ddirna= me=0A+else=0A+ as=5Fdirname=3Dfalse=0A+fi=0A+=0A+ECHO=5FC=3D ECHO=5FN=3D E= CHO=5FT=3D=0A+case `echo -n x` in=0A+-n*)=0A+ case `echo 'x\c'` in=0A+ *c= *) ECHO=5FT=3D' ';; # ECHO=5FT is single tab character.=0A+ *) ECHO=5FC= =3D'\c';;=0A+ esac;;=0A+*)=0A+ ECHO=5FN=3D'-n';;=0A+esac=0A+=0A+if expr a= : '\(a\)' >/dev/null 2>&1 &&=0A+ test "X`expr 00001 : '.*\(...\)'`" =3D = X001; then=0A+ as=5Fexpr=3Dexpr=0A+else=0A+ as=5Fexpr=3Dfalse=0A+fi=0A+= =0A+rm -f conf$$ conf$$.exe conf$$.file=0A+if test -d conf$$.dir; then=0A+ = rm -f conf$$.dir/conf$$.file=0A+else=0A+ rm -f conf$$.dir=0A+ mkdir conf= $$.dir=0A+fi=0A+echo >conf$$.file=0A+if ln -s conf$$.file conf$$ 2>/dev/nul= l; then=0A+ as=5Fln=5Fs=3D'ln -s'=0A+ # ... but there are two gotchas:=0A= + # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail.=0A+ # 2) DJ= GPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable.=0A+ # In= both cases, we have to default to `cp -p'.=0A+ ln -s conf$$.file conf$$.d= ir 2>/dev/null && test ! -f conf$$.exe ||=0A+ as=5Fln=5Fs=3D'cp -p'=0A+e= lif ln conf$$.file conf$$ 2>/dev/null; then=0A+ as=5Fln=5Fs=3Dln=0A+else= =0A+ as=5Fln=5Fs=3D'cp -p'=0A+fi=0A+rm -f conf$$ conf$$.exe conf$$.dir/con= f$$.file conf$$.file=0A+rmdir conf$$.dir 2>/dev/null=0A+=0A+if mkdir -p . 2= >/dev/null; then=0A+ as=5Fmkdir=5Fp=3D:=0A+else=0A+ test -d ./-p && rmdir= ./-p=0A+ as=5Fmkdir=5Fp=3Dfalse=0A+fi=0A+=0A+if test -x / >/dev/null 2>&1= ; then=0A+ as=5Ftest=5Fx=3D'test -x'=0A+else=0A+ if ls -dL / >/dev/null 2= >&1; then=0A+ as=5Fls=5FL=5Foption=3DL=0A+ else=0A+ as=5Fls=5FL=5Fop= tion=3D=0A+ fi=0A+ as=5Ftest=5Fx=3D'=0A+ eval sh -c '\''=0A+ if t= est -d "$1"; then=0A+ test -d "$1/.";=0A+ else=0A+ case $1 in= =0A+ -*)set "./$1";;=0A+ esac;=0A+ case `ls -ld'$as=5Fls=5FL=5Foptio= n' "$1" 2>/dev/null` in=0A+ ???[sx]*):;;*)false;;esac;fi=0A+ '\'' sh=0A+= '=0A+fi=0A+as=5Fexecutable=5Fp=3D$as=5Ftest=5Fx=0A+=0A+# Sed expression t= o map a string onto a valid CPP name.=0A+as=5Ftr=5Fcpp=3D"eval sed 'y%*$as= =5Fcr=5Fletters%P$as=5Fcr=5FLETTERS%;s%[^=5F$as=5Fcr=5Falnum]%=5F%g'"=0A+= =0A+# Sed expression to map a string onto a valid variable name.=0A+as=5Ftr= =5Fsh=3D"eval sed 'y%*+%pp%;s%[^=5F$as=5Fcr=5Falnum]%=5F%g'"=0A+=0A+=0A+exe= c 6>&1=0A+=0A+# Save the log message, to keep $[0] and so on meaningful, an= d to=0A+# report actual input values of CONFIG=5FFILES etc. instead of thei= r=0A+# values after options handling.=0A+ac=5Flog=3D"=0A+This file was exte= nded by $as=5Fme, which was=0A+generated by GNU Autoconf 2.61. Invocation = command line was=0A+=0A+ CONFIG=5FFILES =3D $CONFIG=5FFILES=0A+ CONFIG= =5FHEADERS =3D $CONFIG=5FHEADERS=0A+ CONFIG=5FLINKS =3D $CONFIG=5FLINK= S=0A+ CONFIG=5FCOMMANDS =3D $CONFIG=5FCOMMANDS=0A+ $ $0 $@=0A+=0A+on `(ho= stname || uname -n) 2>/dev/null | sed 1q`=0A+"=0A+=0A+=5FACEOF=0A+=0A+cat >= >$CONFIG=5FSTATUS <<=5FACEOF=0A+# Files that config.status was made for.=0A= +config=5Ffiles=3D"$ac=5Fconfig=5Ffiles"=0A+config=5Fheaders=3D"$ac=5Fconfi= g=5Fheaders"=0A+config=5Fcommands=3D"$ac=5Fconfig=5Fcommands"=0A+=0A+=5FACE= OF=0A+=0A+cat >>$CONFIG=5FSTATUS <<\=5FACEOF=0A+ac=5Fcs=5Fusage=3D"\=0A+\`$= as=5Fme' instantiates files from templates according to the=0A+current conf= iguration.=0A+=0A+Usage: $0 [OPTIONS] [FILE]...=0A+=0A+ -h, --help p= rint this help, then exit=0A+ -V, --version print version number and co= nfiguration settings, then exit=0A+ -q, --quiet do not print progress= messages=0A+ -d, --debug don't remove temporary files=0A+ --rec= heck update $as=5Fme by reconfiguring in the same conditions=0A+ --file= =3DFILE[:TEMPLATE]=0A+ instantiate the configuration file FILE=0A+ --h= eader=3DFILE[:TEMPLATE]=0A+ instantiate the configuration header FILE= =0A+=0A+Configuration files:=0A+$config=5Ffiles=0A+=0A+Configuration header= s:=0A+$config=5Fheaders=0A+=0A+Configuration commands:=0A+$config=5Fcommand= s=0A+=0A+Report bugs to ."=0A+=0A+=5FACEOF=0A+cat >>$= CONFIG=5FSTATUS <<=5FACEOF=0A+ac=5Fcs=5Fversion=3D"\\=0A+config.status=0A+c= onfigured by $0, generated by GNU Autoconf 2.61,=0A+ with options \\"`echo= "$ac=5Fconfigure=5Fargs" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`\\"=0A+=0A+C= opyright (C) 2006 Free Software Foundation, Inc.=0A+This config.status scri= pt is free software; the Free Software Foundation=0A+gives unlimited permis= sion to copy, distribute and modify it."=0A+=0A+ac=5Fpwd=3D'$ac=5Fpwd'=0A+s= rcdir=3D'$srcdir'=0A+INSTALL=3D'$INSTALL'=0A+MKDIR=5FP=3D'$MKDIR=5FP'=0A+= =5FACEOF=0A+=0A+cat >>$CONFIG=5FSTATUS <<\=5FACEOF=0A+# If no file are spec= ified by the user, then we need to provide default=0A+# value. By we need = to know if files were specified by the user.=0A+ac=5Fneed=5Fdefaults=3D:=0A= +while test $# !=3D 0=0A+do=0A+ case $1 in=0A+ --*=3D*)=0A+ ac=5Foptio= n=3D`expr "X$1" : 'X\([^=3D]*\)=3D'`=0A+ ac=5Foptarg=3D`expr "X$1" : 'X[= ^=3D]*=3D\(.*\)'`=0A+ ac=5Fshift=3D:=0A+ ;;=0A+ *)=0A+ ac=5Foptio= n=3D$1=0A+ ac=5Foptarg=3D$2=0A+ ac=5Fshift=3Dshift=0A+ ;;=0A+ esa= c=0A+=0A+ case $ac=5Foption in=0A+ # Handling of the options.=0A+ -reche= ck | --recheck | --rechec | --reche | --rech | --rec | --re | --r)=0A+ a= c=5Fcs=5Frecheck=3D: ;;=0A+ --version | --versio | --versi | --vers | --ve= r | --ve | --v | -V )=0A+ echo "$ac=5Fcs=5Fversion"; exit ;;=0A+ --debu= g | --debu | --deb | --de | --d | -d )=0A+ debug=3D: ;;=0A+ --file | --= fil | --fi | --f )=0A+ $ac=5Fshift=0A+ CONFIG=5FFILES=3D"$CONFIG=5FFI= LES $ac=5Foptarg"=0A+ ac=5Fneed=5Fdefaults=3Dfalse;;=0A+ --header | --h= eade | --head | --hea )=0A+ $ac=5Fshift=0A+ CONFIG=5FHEADERS=3D"$CONF= IG=5FHEADERS $ac=5Foptarg"=0A+ ac=5Fneed=5Fdefaults=3Dfalse;;=0A+ --he = | --h)=0A+ # Conflict between --help and --header=0A+ { echo "$as=5Fm= e: error: ambiguous option: $1=0A+Try \`$0 --help' for more information." >= &2=0A+ { (exit 1); exit 1; }; };;=0A+ --help | --hel | -h )=0A+ echo = "$ac=5Fcs=5Fusage"; exit ;;=0A+ -q | -quiet | --quiet | --quie | --qui | -= -qu | --q \=0A+ | -silent | --silent | --silen | --sile | --sil | --si | -= -s)=0A+ ac=5Fcs=5Fsilent=3D: ;;=0A+=0A+ # This is an error.=0A+ -*) { = echo "$as=5Fme: error: unrecognized option: $1=0A+Try \`$0 --help' for more= information." >&2=0A+ { (exit 1); exit 1; }; } ;;=0A+=0A+ *) ac=5Fconfi= g=5Ftargets=3D"$ac=5Fconfig=5Ftargets $1"=0A+ ac=5Fneed=5Fdefaults=3Dfa= lse ;;=0A+=0A+ esac=0A+ shift=0A+done=0A+=0A+ac=5Fconfigure=5Fextra=5Farg= s=3D=0A+=0A+if $ac=5Fcs=5Fsilent; then=0A+ exec 6>/dev/null=0A+ ac=5Fconf= igure=5Fextra=5Fargs=3D"$ac=5Fconfigure=5Fextra=5Fargs --silent"=0A+fi=0A+= =0A+=5FACEOF=0A+cat >>$CONFIG=5FSTATUS <<=5FACEOF=0A+if \$ac=5Fcs=5Frecheck= ; then=0A+ echo "running CONFIG=5FSHELL=3D$SHELL $SHELL $0 "$ac=5Fconfigur= e=5Fargs \$ac=5Fconfigure=5Fextra=5Fargs " --no-create --no-recursion" >&6= =0A+ CONFIG=5FSHELL=3D$SHELL=0A+ export CONFIG=5FSHELL=0A+ exec $SHELL "= $0"$ac=5Fconfigure=5Fargs \$ac=5Fconfigure=5Fextra=5Fargs --no-create --no-= recursion=0A+fi=0A+=0A+=5FACEOF=0A+cat >>$CONFIG=5FSTATUS <<\=5FACEOF=0A+ex= ec 5>>config.log=0A+{=0A+ echo=0A+ sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/= ;p;x;p;x' <<=5FASBOX=0A+## Running $as=5Fme. ##=0A+=5FASBOX=0A+ echo "$ac= =5Flog"=0A+} >&5=0A+=0A+=5FACEOF=0A+cat >>$CONFIG=5FSTATUS <<=5FACEOF=0A+#= =0A+# INIT-COMMANDS=0A+#=0A+AMDEP=5FTRUE=3D"$AMDEP=5FTRUE" ac=5Faux=5Fdir= =3D"$ac=5Faux=5Fdir"=0A+=0A+=5FACEOF=0A+=0A+cat >>$CONFIG=5FSTATUS <<\=5FAC= EOF=0A+=0A+# Handling of arguments.=0A+for ac=5Fconfig=5Ftarget in $ac=5Fco= nfig=5Ftargets=0A+do=0A+ case $ac=5Fconfig=5Ftarget in=0A+ "config.h") = CONFIG=5FHEADERS=3D"$CONFIG=5FHEADERS config.h" ;;=0A+ "depfiles") CONFI= G=5FCOMMANDS=3D"$CONFIG=5FCOMMANDS depfiles" ;;=0A+ "Makefile") CONFIG= =5FFILES=3D"$CONFIG=5FFILES Makefile" ;;=0A+ "default") CONFIG=5FCOMMAND= S=3D"$CONFIG=5FCOMMANDS default" ;;=0A+=0A+ *) { { echo "$as=5Fme:$LINENO:= error: invalid argument: $ac=5Fconfig=5Ftarget" >&5=0A+echo "$as=5Fme: err= or: invalid argument: $ac=5Fconfig=5Ftarget" >&2;}=0A+ { (exit 1); exit 1= ; }; };;=0A+ esac=0A+done=0A+=0A+=0A+# If the user did not use the argumen= ts to specify the items to instantiate,=0A+# then the envvar interface is u= sed. Set only those that are not.=0A+# We use the long form for the defaul= t assignment because of an extremely=0A+# bizarre bug on SunOS 4.1.3.=0A+if= $ac=5Fneed=5Fdefaults; then=0A+ test "${CONFIG=5FFILES+set}" =3D set || C= ONFIG=5FFILES=3D$config=5Ffiles=0A+ test "${CONFIG=5FHEADERS+set}" =3D set= || CONFIG=5FHEADERS=3D$config=5Fheaders=0A+ test "${CONFIG=5FCOMMANDS+set= }" =3D set || CONFIG=5FCOMMANDS=3D$config=5Fcommands=0A+fi=0A+=0A+# Have a = temporary directory for convenience. Make it in the build tree=0A+# simply= because there is no reason against having it here, and in addition,=0A+# c= reating and moving files from /tmp can sometimes cause problems.=0A+# Hook = for its removal unless debugging.=0A+# Note that there is a small window in= which the directory will not be cleaned:=0A+# after its creation but befor= e its name has been assigned to `$tmp'.=0A+$debug ||=0A+{=0A+ tmp=3D=0A+ = trap 'exit=5Fstatus=3D$?=0A+ { test -z "$tmp" || test ! -d "$tmp" || rm -f= r "$tmp"; } && exit $exit=5Fstatus=0A+' 0=0A+ trap '{ (exit 1); exit 1; }'= 1 2 13 15=0A+}=0A+# Create a (secure) tmp directory for tmp files.=0A+=0A+= {=0A+ tmp=3D`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` &&=0A+ = test -n "$tmp" && test -d "$tmp"=0A+} ||=0A+{=0A+ tmp=3D./conf$$-$RANDOM= =0A+ (umask 077 && mkdir "$tmp")=0A+} ||=0A+{=0A+ echo "$me: cannot crea= te a temporary directory in ." >&2=0A+ { (exit 1); exit 1; }=0A+}=0A+=0A+= #=0A+# Set up the sed scripts for CONFIG=5FFILES section.=0A+#=0A+=0A+# No = need to generate the scripts if there are no CONFIG=5FFILES.=0A+# This happ= ens for instance when ./config.status config.h=0A+if test -n "$CONFIG=5FFIL= ES"; then=0A+=0A+=5FACEOF=0A+=0A+=0A+=0A+ac=5Fdelim=3D'%!=5F!# '=0A+for ac= =5Flast=5Ftry in false false false false false :; do=0A+ cat >conf$$subs.s= ed <<=5FACEOF=0A+SHELL!$SHELL$ac=5Fdelim=0A+PATH=5FSEPARATOR!$PATH=5FSEPARA= TOR$ac=5Fdelim=0A+PACKAGE=5FNAME!$PACKAGE=5FNAME$ac=5Fdelim=0A+PACKAGE=5FTA= RNAME!$PACKAGE=5FTARNAME$ac=5Fdelim=0A+PACKAGE=5FVERSION!$PACKAGE=5FVERSION= $ac=5Fdelim=0A+PACKAGE=5FSTRING!$PACKAGE=5FSTRING$ac=5Fdelim=0A+PACKAGE=5FB= UGREPORT!$PACKAGE=5FBUGREPORT$ac=5Fdelim=0A+exec=5Fprefix!$exec=5Fprefix$ac= =5Fdelim=0A+prefix!$prefix$ac=5Fdelim=0A+program=5Ftransform=5Fname!$progra= m=5Ftransform=5Fname$ac=5Fdelim=0A+bindir!$bindir$ac=5Fdelim=0A+sbindir!$sb= indir$ac=5Fdelim=0A+libexecdir!$libexecdir$ac=5Fdelim=0A+datarootdir!$datar= ootdir$ac=5Fdelim=0A+datadir!$datadir$ac=5Fdelim=0A+sysconfdir!$sysconfdir$= ac=5Fdelim=0A+sharedstatedir!$sharedstatedir$ac=5Fdelim=0A+localstatedir!$l= ocalstatedir$ac=5Fdelim=0A+includedir!$includedir$ac=5Fdelim=0A+oldincluded= ir!$oldincludedir$ac=5Fdelim=0A+docdir!$docdir$ac=5Fdelim=0A+infodir!$infod= ir$ac=5Fdelim=0A+htmldir!$htmldir$ac=5Fdelim=0A+dvidir!$dvidir$ac=5Fdelim= =0A+pdfdir!$pdfdir$ac=5Fdelim=0A+psdir!$psdir$ac=5Fdelim=0A+libdir!$libdir$= ac=5Fdelim=0A+localedir!$localedir$ac=5Fdelim=0A+mandir!$mandir$ac=5Fdelim= =0A+DEFS!$DEFS$ac=5Fdelim=0A+ECHO=5FC!$ECHO=5FC$ac=5Fdelim=0A+ECHO=5FN!$ECH= O=5FN$ac=5Fdelim=0A+ECHO=5FT!$ECHO=5FT$ac=5Fdelim=0A+LIBS!$LIBS$ac=5Fdelim= =0A+build=5Falias!$build=5Falias$ac=5Fdelim=0A+host=5Falias!$host=5Falias$a= c=5Fdelim=0A+target=5Falias!$target=5Falias$ac=5Fdelim=0A+INSTALL=5FPROGRAM= !$INSTALL=5FPROGRAM$ac=5Fdelim=0A+INSTALL=5FSCRIPT!$INSTALL=5FSCRIPT$ac=5Fd= elim=0A+INSTALL=5FDATA!$INSTALL=5FDATA$ac=5Fdelim=0A+am=5F=5Fisrc!$am=5F=5F= isrc$ac=5Fdelim=0A+CYGPATH=5FW!$CYGPATH=5FW$ac=5Fdelim=0A+PACKAGE!$PACKAGE$= ac=5Fdelim=0A+VERSION!$VERSION$ac=5Fdelim=0A+ACLOCAL!$ACLOCAL$ac=5Fdelim=0A= +AUTOCONF!$AUTOCONF$ac=5Fdelim=0A+AUTOMAKE!$AUTOMAKE$ac=5Fdelim=0A+AUTOHEAD= ER!$AUTOHEADER$ac=5Fdelim=0A+MAKEINFO!$MAKEINFO$ac=5Fdelim=0A+install=5Fsh!= $install=5Fsh$ac=5Fdelim=0A+STRIP!$STRIP$ac=5Fdelim=0A+INSTALL=5FSTRIP=5FPR= OGRAM!$INSTALL=5FSTRIP=5FPROGRAM$ac=5Fdelim=0A+mkdir=5Fp!$mkdir=5Fp$ac=5Fde= lim=0A+AWK!$AWK$ac=5Fdelim=0A+SET=5FMAKE!$SET=5FMAKE$ac=5Fdelim=0A+am=5F=5F= leading=5Fdot!$am=5F=5Fleading=5Fdot$ac=5Fdelim=0A+AMTAR!$AMTAR$ac=5Fdelim= =0A+am=5F=5Ftar!$am=5F=5Ftar$ac=5Fdelim=0A+am=5F=5Funtar!$am=5F=5Funtar$ac= =5Fdelim=0A+build!$build$ac=5Fdelim=0A+build=5Fcpu!$build=5Fcpu$ac=5Fdelim= =0A+build=5Fvendor!$build=5Fvendor$ac=5Fdelim=0A+build=5Fos!$build=5Fos$ac= =5Fdelim=0A+host!$host$ac=5Fdelim=0A+host=5Fcpu!$host=5Fcpu$ac=5Fdelim=0A+h= ost=5Fvendor!$host=5Fvendor$ac=5Fdelim=0A+host=5Fos!$host=5Fos$ac=5Fdelim= =0A+CC!$CC$ac=5Fdelim=0A+CFLAGS!$CFLAGS$ac=5Fdelim=0A+LDFLAGS!$LDFLAGS$ac= =5Fdelim=0A+CPPFLAGS!$CPPFLAGS$ac=5Fdelim=0A+ac=5Fct=5FCC!$ac=5Fct=5FCC$ac= =5Fdelim=0A+EXEEXT!$EXEEXT$ac=5Fdelim=0A+OBJEXT!$OBJEXT$ac=5Fdelim=0A+DEPDI= R!$DEPDIR$ac=5Fdelim=0A+am=5F=5Finclude!$am=5F=5Finclude$ac=5Fdelim=0A+am= =5F=5Fquote!$am=5F=5Fquote$ac=5Fdelim=0A+AMDEP=5FTRUE!$AMDEP=5FTRUE$ac=5Fde= lim=0A+AMDEP=5FFALSE!$AMDEP=5FFALSE$ac=5Fdelim=0A+AMDEPBACKSLASH!$AMDEPBACK= SLASH$ac=5Fdelim=0A+CCDEPMODE!$CCDEPMODE$ac=5Fdelim=0A+am=5F=5FfastdepCC=5F= TRUE!$am=5F=5FfastdepCC=5FTRUE$ac=5Fdelim=0A+am=5F=5FfastdepCC=5FFALSE!$am= =5F=5FfastdepCC=5FFALSE$ac=5Fdelim=0A+CPP!$CPP$ac=5Fdelim=0A+GREP!$GREP$ac= =5Fdelim=0A+EGREP!$EGREP$ac=5Fdelim=0A+LIBOBJS!$LIBOBJS$ac=5Fdelim=0A+LTLIB= OBJS!$LTLIBOBJS$ac=5Fdelim=0A+=5FACEOF=0A+=0A+ if test `sed -n "s/.*$ac=5F= delim\$/X/p" conf$$subs.sed | grep -c X` =3D 88; then=0A+ break=0A+ eli= f $ac=5Flast=5Ftry; then=0A+ { { echo "$as=5Fme:$LINENO: error: could no= t make $CONFIG=5FSTATUS" >&5=0A+echo "$as=5Fme: error: could not make $CONF= IG=5FSTATUS" >&2;}=0A+ { (exit 1); exit 1; }; }=0A+ else=0A+ ac=5Fdel= im=3D"$ac=5Fdelim!$ac=5Fdelim =5F$ac=5Fdelim!! "=0A+ fi=0A+done=0A+=0A+ac= =5Feof=3D`sed -n '/^CEOF[0-9]*$/s/CEOF/0/p' conf$$subs.sed`=0A+if test -n "= $ac=5Feof"; then=0A+ ac=5Feof=3D`echo "$ac=5Feof" | sort -nru | sed 1q`=0A= + ac=5Feof=3D`expr $ac=5Feof + 1`=0A+fi=0A+=0A+cat >>$CONFIG=5FSTATUS <<= =5FACEOF=0A+cat >"\$tmp/subs-1.sed" <<\CEOF$ac=5Feof=0A+/@[a-zA-Z=5F][a-zA-= Z=5F0-9]*@/!b end=0A+=5FACEOF=0A+sed '=0A+s/[,\\&]/\\&/g; s/@/@|#=5F!!=5F#|= /g=0A+s/^/s,@/; s/!/@,|#=5F!!=5F#|/=0A+:n=0A+t n=0A+s/'"$ac=5Fdelim"'$/,g/;= t=0A+s/$/\\/; p=0A+N; s/^.*\n//; s/[,\\&]/\\&/g; s/@/@|#=5F!!=5F#|/g; b n= =0A+' >>$CONFIG=5FSTATUS >$= CONFIG=5FSTATUS <<=5FACEOF=0A+:end=0A+s/|#=5F!!=5F#|//g=0A+CEOF$ac=5Feof=0A= +=5FACEOF=0A+=0A+=0A+# VPATH may cause trouble with some makes, so we remov= e $(srcdir),=0A+# ${srcdir} and @srcdir@ from VPATH if srcdir is ".", strip= leading and=0A+# trailing colons and then remove the whole line if VPATH b= ecomes empty=0A+# (actually we leave an empty line to preserve line numbers= ).=0A+if test "x$srcdir" =3D x.; then=0A+ ac=5Fvpsub=3D'/^[ ]*VPATH[ ]*= =3D/{=0A+s/:*\$(srcdir):*/:/=0A+s/:*\${srcdir}:*/:/=0A+s/:*@srcdir@:*/:/=0A= +s/^\([^=3D]*=3D[ ]*\):*/\1/=0A+s/:*$//=0A+s/^[^=3D]*=3D[ ]*$//=0A+}'=0A+= fi=0A+=0A+cat >>$CONFIG=5FSTATUS <<\=5FACEOF=0A+fi # test -n "$CONFIG=5FFIL= ES"=0A+=0A+=0A+for ac=5Ftag in :F $CONFIG=5FFILES :H $CONFIG=5FHEADERS = :C $CONFIG=5FCOMMANDS=0A+do=0A+ case $ac=5Ftag in=0A+ :[FHLC]) ac=5Fmode= =3D$ac=5Ftag; continue;;=0A+ esac=0A+ case $ac=5Fmode$ac=5Ftag in=0A+ :[= FHL]*:*);;=0A+ :L* | :C*:*) { { echo "$as=5Fme:$LINENO: error: Invalid tag= $ac=5Ftag." >&5=0A+echo "$as=5Fme: error: Invalid tag $ac=5Ftag." >&2;}=0A= + { (exit 1); exit 1; }; };;=0A+ :[FH]-) ac=5Ftag=3D-:-;;=0A+ :[FH]*) a= c=5Ftag=3D$ac=5Ftag:$ac=5Ftag.in;;=0A+ esac=0A+ ac=5Fsave=5FIFS=3D$IFS=0A= + IFS=3D:=0A+ set x $ac=5Ftag=0A+ IFS=3D$ac=5Fsave=5FIFS=0A+ shift=0A+ = ac=5Ffile=3D$1=0A+ shift=0A+=0A+ case $ac=5Fmode in=0A+ :L) ac=5Fsource= =3D$1;;=0A+ :[FH])=0A+ ac=5Ffile=5Finputs=3D=0A+ for ac=5Ff=0A+ d= o=0A+ case $ac=5Ff in=0A+ -) ac=5Ff=3D"$tmp/stdin";;=0A+ *) = # Look for the file first in the build tree, then in the source tree=0A+ #= (if the path is not absolute). The absolute path cannot be DOS-style,=0A+= # because $ac=5Ff cannot contain `:'.=0A+ test -f "$ac=5Ff" ||=0A+ ca= se $ac=5Ff in=0A+ [\\/$]*) false;;=0A+ *) test -f "$srcdir/$ac=5Ff" &= & ac=5Ff=3D"$srcdir/$ac=5Ff";;=0A+ esac ||=0A+ { { echo "$as=5Fme:$LI= NENO: error: cannot find input file: $ac=5Ff" >&5=0A+echo "$as=5Fme: error:= cannot find input file: $ac=5Ff" >&2;}=0A+ { (exit 1); exit 1; }; };;=0A= + esac=0A+ ac=5Ffile=5Finputs=3D"$ac=5Ffile=5Finputs $ac=5Ff"=0A+= done=0A+=0A+ # Let's still pretend it is `configure' which instantia= tes (i.e., don't=0A+ # use $as=5Fme), people would be surprised to read:= =0A+ # /* config.h. Generated by config.status. */=0A+ configure= =5Finput=3D"Generated from "`IFS=3D:=0A+ echo $* | sed 's|^[^:]*/||;s|:[^= :]*/|, |g'`" by configure."=0A+ if test x"$ac=5Ffile" !=3D x-; then=0A+ = configure=5Finput=3D"$ac=5Ffile. $configure=5Finput"=0A+ { echo = "$as=5Fme:$LINENO: creating $ac=5Ffile" >&5=0A+echo "$as=5Fme: creating $ac= =5Ffile" >&6;}=0A+ fi=0A+=0A+ case $ac=5Ftag in=0A+ *:-:* | *:-) c= at >"$tmp/stdin";;=0A+ esac=0A+ ;;=0A+ esac=0A+=0A+ ac=5Fdir=3D`$as= =5Fdirname -- "$ac=5Ffile" ||=0A+$as=5Fexpr X"$ac=5Ffile" : 'X\(.*[^/]\)//*= [^/][^/]*/*$' \| \=0A+ X"$ac=5Ffile" : 'X\(//\)[^/]' \| \=0A+ X"$ac=5Ffil= e" : 'X\(//\)$' \| \=0A+ X"$ac=5Ffile" : 'X\(/\)' \| . 2>/dev/null ||=0A+e= cho X"$ac=5Ffile" |=0A+ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{=0A+ s= //\1/=0A+ q=0A+ }=0A+ /^X\(\/\/\)[^/].*/{=0A+ s//\1/=0A+ q= =0A+ }=0A+ /^X\(\/\/\)$/{=0A+ s//\1/=0A+ q=0A+ }=0A+ /^X\(\= /\).*/{=0A+ s//\1/=0A+ q=0A+ }=0A+ s/.*/./; q'`=0A+ { as=5Fdir= =3D"$ac=5Fdir"=0A+ case $as=5Fdir in #(=0A+ -*) as=5Fdir=3D./$as=5Fdir;;= =0A+ esac=0A+ test -d "$as=5Fdir" || { $as=5Fmkdir=5Fp && mkdir -p "$as= =5Fdir"; } || {=0A+ as=5Fdirs=3D=0A+ while :; do=0A+ case $as=5F= dir in #(=0A+ *\'*) as=5Fqdir=3D`echo "$as=5Fdir" | sed "s/'/'\\\\\\\\= ''/g"`;; #(=0A+ *) as=5Fqdir=3D$as=5Fdir;;=0A+ esac=0A+ as= =5Fdirs=3D"'$as=5Fqdir' $as=5Fdirs"=0A+ as=5Fdir=3D`$as=5Fdirname -- "= $as=5Fdir" ||=0A+$as=5Fexpr X"$as=5Fdir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| = \=0A+ X"$as=5Fdir" : 'X\(//\)[^/]' \| \=0A+ X"$as=5Fdir" : 'X\(//\)$' \| = \=0A+ X"$as=5Fdir" : 'X\(/\)' \| . 2>/dev/null ||=0A+echo X"$as=5Fdir" |= =0A+ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{=0A+ s//\1/=0A+ q=0A+= }=0A+ /^X\(\/\/\)[^/].*/{=0A+ s//\1/=0A+ q=0A+ }=0A+ /^X\(= \/\/\)$/{=0A+ s//\1/=0A+ q=0A+ }=0A+ /^X\(\/\).*/{=0A+ s//\= 1/=0A+ q=0A+ }=0A+ s/.*/./; q'`=0A+ test -d "$as=5Fdir" && bre= ak=0A+ done=0A+ test -z "$as=5Fdirs" || eval "mkdir $as=5Fdirs"=0A+ = } || test -d "$as=5Fdir" || { { echo "$as=5Fme:$LINENO: error: cannot creat= e directory $as=5Fdir" >&5=0A+echo "$as=5Fme: error: cannot create director= y $as=5Fdir" >&2;}=0A+ { (exit 1); exit 1; }; }; }=0A+ ac=5Fbuilddir=3D.= =0A+=0A+case "$ac=5Fdir" in=0A+.) ac=5Fdir=5Fsuffix=3D ac=5Ftop=5Fbuilddir= =5Fsub=3D. ac=5Ftop=5Fbuild=5Fprefix=3D ;;=0A+*)=0A+ ac=5Fdir=5Fsuffix=3D/= `echo "$ac=5Fdir" | sed 's,^\.[\\/],,'`=0A+ # A ".." for each directory in= $ac=5Fdir=5Fsuffix.=0A+ ac=5Ftop=5Fbuilddir=5Fsub=3D`echo "$ac=5Fdir=5Fsu= ffix" | sed 's,/[^\\/]*,/..,g;s,/,,'`=0A+ case $ac=5Ftop=5Fbuilddir=5Fsub = in=0A+ "") ac=5Ftop=5Fbuilddir=5Fsub=3D. ac=5Ftop=5Fbuild=5Fprefix=3D ;;= =0A+ *) ac=5Ftop=5Fbuild=5Fprefix=3D$ac=5Ftop=5Fbuilddir=5Fsub/ ;;=0A+ e= sac ;;=0A+esac=0A+ac=5Fabs=5Ftop=5Fbuilddir=3D$ac=5Fpwd=0A+ac=5Fabs=5Fbuild= dir=3D$ac=5Fpwd$ac=5Fdir=5Fsuffix=0A+# for backward compatibility:=0A+ac=5F= top=5Fbuilddir=3D$ac=5Ftop=5Fbuild=5Fprefix=0A+=0A+case $srcdir in=0A+ .) = # We are building in place.=0A+ ac=5Fsrcdir=3D.=0A+ ac=5Ftop=5Fsrcdi= r=3D$ac=5Ftop=5Fbuilddir=5Fsub=0A+ ac=5Fabs=5Ftop=5Fsrcdir=3D$ac=5Fpwd ;= ;=0A+ [\\/]* | ?:[\\/]* ) # Absolute name.=0A+ ac=5Fsrcdir=3D$srcdir$a= c=5Fdir=5Fsuffix;=0A+ ac=5Ftop=5Fsrcdir=3D$srcdir=0A+ ac=5Fabs=5Ftop= =5Fsrcdir=3D$srcdir ;;=0A+ *) # Relative name.=0A+ ac=5Fsrcdir=3D$ac=5F= top=5Fbuild=5Fprefix$srcdir$ac=5Fdir=5Fsuffix=0A+ ac=5Ftop=5Fsrcdir=3D$a= c=5Ftop=5Fbuild=5Fprefix$srcdir=0A+ ac=5Fabs=5Ftop=5Fsrcdir=3D$ac=5Fpwd/= $srcdir ;;=0A+esac=0A+ac=5Fabs=5Fsrcdir=3D$ac=5Fabs=5Ftop=5Fsrcdir$ac=5Fdir= =5Fsuffix=0A+=0A+=0A+ case $ac=5Fmode in=0A+ :F)=0A+ #=0A+ # CONFIG=5FF= ILE=0A+ #=0A+=0A+ case $INSTALL in=0A+ [\\/$]* | ?:[\\/]* ) ac=5FINSTALL= =3D$INSTALL ;;=0A+ *) ac=5FINSTALL=3D$ac=5Ftop=5Fbuild=5Fprefix$INSTALL ;;= =0A+ esac=0A+ ac=5FMKDIR=5FP=3D$MKDIR=5FP=0A+ case $MKDIR=5FP in=0A+ [\= \/$]* | ?:[\\/]* ) ;;=0A+ */*) ac=5FMKDIR=5FP=3D$ac=5Ftop=5Fbuild=5Fprefix= $MKDIR=5FP ;;=0A+ esac=0A+=5FACEOF=0A+=0A+cat >>$CONFIG=5FSTATUS <<\=5FACE= OF=0A+# If the template does not know about datarootdir, expand it.=0A+# FI= XME: This hack should be removed a few years after 2.60.=0A+ac=5Fdatarootdi= r=5Fhack=3D; ac=5Fdatarootdir=5Fseen=3D=0A+=0A+case `sed -n '/datarootdir/ = {=0A+ p=0A+ q=0A+}=0A+/@datadir@/p=0A+/@docdir@/p=0A+/@infodir@/p=0A+/@lo= caledir@/p=0A+/@mandir@/p=0A+' $ac=5Ffile=5Finputs` in=0A+*datarootdir*) ac= =5Fdatarootdir=5Fseen=3Dyes;;=0A+*@datadir@*|*@docdir@*|*@infodir@*|*@local= edir@*|*@mandir@*)=0A+ { echo "$as=5Fme:$LINENO: WARNING: $ac=5Ffile=5Finp= uts seems to ignore the --datarootdir setting" >&5=0A+echo "$as=5Fme: WARNI= NG: $ac=5Ffile=5Finputs seems to ignore the --datarootdir setting" >&2;}=0A= +=5FACEOF=0A+cat >>$CONFIG=5FSTATUS <<=5FACEOF=0A+ ac=5Fdatarootdir=5Fhack= =3D'=0A+ s&@datadir@&$datadir&g=0A+ s&@docdir@&$docdir&g=0A+ s&@infodir@= &$infodir&g=0A+ s&@localedir@&$localedir&g=0A+ s&@mandir@&$mandir&g=0A+ = s&\\\${datarootdir}&$datarootdir&g' ;;=0A+esac=0A+=5FACEOF=0A+=0A+# Neutr= alize VPATH when `$srcdir' =3D `.'.=0A+# Shell code in configure.ac might s= et extrasub.=0A+# FIXME: do we really want to maintain this feature?=0A+cat= >>$CONFIG=5FSTATUS <<=5FACEOF=0A+ sed "$ac=5Fvpsub=0A+$extrasub=0A+=5FACE= OF=0A+cat >>$CONFIG=5FSTATUS <<\=5FACEOF=0A+:t=0A+/@[a-zA-Z=5F][a-zA-Z=5F0-= 9]*@/!b=0A+s&@configure=5Finput@&$configure=5Finput&;t t=0A+s&@top=5Fbuildd= ir@&$ac=5Ftop=5Fbuilddir=5Fsub&;t t=0A+s&@srcdir@&$ac=5Fsrcdir&;t t=0A+s&@a= bs=5Fsrcdir@&$ac=5Fabs=5Fsrcdir&;t t=0A+s&@top=5Fsrcdir@&$ac=5Ftop=5Fsrcdir= &;t t=0A+s&@abs=5Ftop=5Fsrcdir@&$ac=5Fabs=5Ftop=5Fsrcdir&;t t=0A+s&@builddi= r@&$ac=5Fbuilddir&;t t=0A+s&@abs=5Fbuilddir@&$ac=5Fabs=5Fbuilddir&;t t=0A+s= &@abs=5Ftop=5Fbuilddir@&$ac=5Fabs=5Ftop=5Fbuilddir&;t t=0A+s&@INSTALL@&$ac= =5FINSTALL&;t t=0A+s&@MKDIR=5FP@&$ac=5FMKDIR=5FP&;t t=0A+$ac=5Fdatarootdir= =5Fhack=0A+" $ac=5Ffile=5Finputs | sed -f "$tmp/subs-1.sed" >$tmp/out=0A+= =0A+test -z "$ac=5Fdatarootdir=5Fhack$ac=5Fdatarootdir=5Fseen" &&=0A+ { ac= =5Fout=3D`sed -n '/\${datarootdir}/p' "$tmp/out"`; test -n "$ac=5Fout"; } &= &=0A+ { ac=5Fout=3D`sed -n '/^[ ]*datarootdir[ ]*:*=3D/p' "$tmp/out"`; t= est -z "$ac=5Fout"; } &&=0A+ { echo "$as=5Fme:$LINENO: WARNING: $ac=5Ffile= contains a reference to the variable \`datarootdir'=0A+which seems to be u= ndefined. Please make sure it is defined." >&5=0A+echo "$as=5Fme: WARNING:= $ac=5Ffile contains a reference to the variable \`datarootdir'=0A+which se= ems to be undefined. Please make sure it is defined." >&2;}=0A+=0A+ rm -f= "$tmp/stdin"=0A+ case $ac=5Ffile in=0A+ -) cat "$tmp/out"; rm -f "$tmp/o= ut";;=0A+ *) rm -f "$ac=5Ffile"; mv "$tmp/out" $ac=5Ffile;;=0A+ esac=0A+ = ;;=0A+ :H)=0A+ #=0A+ # CONFIG=5FHEADER=0A+ #=0A+=5FACEOF=0A+=0A+# Trans= form confdefs.h into a sed script `conftest.defines', that=0A+# substitutes= the proper values into config.h.in to produce config.h.=0A+rm -f conftest.= defines conftest.tail=0A+# First, append a space to every undef/define line= , to ease matching.=0A+echo 's/$/ /' >conftest.defines=0A+# Then, protect a= gainst being on the right side of a sed subst, or in=0A+# an unquoted here = document, in config.status. If some macros were=0A+# called several times = there might be several #defines for the same=0A+# symbol, which is useless.= But do not sort them, since the last=0A+# AC=5FDEFINE must be honored.=0A= +ac=5Fword=5Fre=3D[=5F$as=5Fcr=5FLetters][=5F$as=5Fcr=5Falnum]*=0A+# These = sed commands are passed to sed as "A NAME B PARAMS C VALUE D", where=0A+# N= AME is the cpp macro being defined, VALUE is the value it is being given.= =0A+# PARAMS is the parameter list in the macro definition--in most cases, = it's=0A+# just an empty string.=0A+ac=5FdA=3D's,^\\([ #]*\\)[^ ]*\\([ ]*= '=0A+ac=5FdB=3D'\\)[ (].*,\\1define\\2'=0A+ac=5FdC=3D' '=0A+ac=5FdD=3D' ,'= =0A+=0A+uniq confdefs.h |=0A+ sed -n '=0A+ t rset=0A+ :rset=0A+ s/^[ ]*#[= ]*define[ ][ ]*//=0A+ t ok=0A+ d=0A+ :ok=0A+ s/[\\&,]/\\&/g=0A+ s/^\('"= $ac=5Fword=5Fre"'\)\(([^()]*)\)[ ]*\(.*\)/ '"$ac=5FdA"'\1'"$ac=5FdB"'\2'"$= {ac=5FdC}"'\3'"$ac=5FdD"'/p=0A+ s/^\('"$ac=5Fword=5Fre"'\)[ ]*\(.*\)/'"$ac= =5FdA"'\1'"$ac=5FdB$ac=5FdC"'\2'"$ac=5FdD"'/p=0A+ ' >>conftest.defines=0A+= =0A+# Remove the space that was appended to ease matching.=0A+# Then replac= e #undef with comments. This is necessary, for=0A+# example, in the case o= f =5FPOSIX=5FSOURCE, which is predefined and required=0A+# on some systems = where configure will not decide to define it.=0A+# (The regexp can be short= , since the line contains either #define or #undef.)=0A+echo 's/ $//=0A+s,^= [ #]*u.*,/* & */,' >>conftest.defines=0A+=0A+# Break up conftest.defines:= =0A+ac=5Fmax=5Fsed=5Flines=3D50=0A+=0A+# First sed command is: sed -f defi= nes.sed $ac=5Ffile=5Finputs >"$tmp/out1"=0A+# Second one is: sed -f define= s.sed "$tmp/out1" >"$tmp/out2"=0A+# Third one will be: sed -f defines.sed = "$tmp/out2" >"$tmp/out1"=0A+# et cetera.=0A+ac=5Fin=3D'$ac=5Ffile=5Finputs'= =0A+ac=5Fout=3D'"$tmp/out1"'=0A+ac=5Fnxt=3D'"$tmp/out2"'=0A+=0A+while :=0A+= do=0A+ # Write a here document:=0A+ cat >>$CONFIG=5FSTATUS <<=5FACEOF= =0A+ # First, check the format of the line:=0A+ cat >"\$tmp/defines.s= ed" <<\\CEOF=0A+/^[ ]*#[ ]*undef[ ][ ]*$ac=5Fword=5Fre[ ]*\$/b def=0A+= /^[ ]*#[ ]*define[ ][ ]*$ac=5Fword=5Fre[( ]/b def=0A+b=0A+:def=0A+=5FA= CEOF=0A+ sed ${ac=5Fmax=5Fsed=5Flines}q conftest.defines >>$CONFIG=5FSTATU= S=0A+ echo 'CEOF=0A+ sed -f "$tmp/defines.sed"' "$ac=5Fin >$ac=5Fout" >= >$CONFIG=5FSTATUS=0A+ ac=5Fin=3D$ac=5Fout; ac=5Fout=3D$ac=5Fnxt; ac=5Fnxt= =3D$ac=5Fin=0A+ sed 1,${ac=5Fmax=5Fsed=5Flines}d conftest.defines >conftes= t.tail=0A+ grep . conftest.tail >/dev/null || break=0A+ rm -f conftest.de= fines=0A+ mv conftest.tail conftest.defines=0A+done=0A+rm -f conftest.defi= nes conftest.tail=0A+=0A+echo "ac=5Fresult=3D$ac=5Fin" >>$CONFIG=5FSTATUS= =0A+cat >>$CONFIG=5FSTATUS <<\=5FACEOF=0A+ if test x"$ac=5Ffile" !=3D x-; = then=0A+ echo "/* $configure=5Finput */" >"$tmp/config.h"=0A+ cat "$= ac=5Fresult" >>"$tmp/config.h"=0A+ if diff $ac=5Ffile "$tmp/config.h" >/= dev/null 2>&1; then=0A+ { echo "$as=5Fme:$LINENO: $ac=5Ffile is unchan= ged" >&5=0A+echo "$as=5Fme: $ac=5Ffile is unchanged" >&6;}=0A+ else=0A+ = rm -f $ac=5Ffile=0A+ mv "$tmp/config.h" $ac=5Ffile=0A+ fi=0A+ = else=0A+ echo "/* $configure=5Finput */"=0A+ cat "$ac=5Fresult"=0A+= fi=0A+ rm -f "$tmp/out12"=0A+# Compute $ac=5Ffile's index in $config=5Fh= eaders.=0A+=5Fam=5Farg=3D$ac=5Ffile=0A+=5Fam=5Fstamp=5Fcount=3D1=0A+for =5F= am=5Fheader in $config=5Fheaders :; do=0A+ case $=5Fam=5Fheader in=0A+ = $=5Fam=5Farg | $=5Fam=5Farg:* )=0A+ break ;;=0A+ * )=0A+ =5Fam= =5Fstamp=5Fcount=3D`expr $=5Fam=5Fstamp=5Fcount + 1` ;;=0A+ esac=0A+done= =0A+echo "timestamp for $=5Fam=5Farg" >`$as=5Fdirname -- "$=5Fam=5Farg" ||= =0A+$as=5Fexpr X"$=5Fam=5Farg" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \=0A+ X"$= =5Fam=5Farg" : 'X\(//\)[^/]' \| \=0A+ X"$=5Fam=5Farg" : 'X\(//\)$' \| \=0A= + X"$=5Fam=5Farg" : 'X\(/\)' \| . 2>/dev/null ||=0A+echo X"$=5Fam=5Farg" |= =0A+ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{=0A+ s//\1/=0A+ q=0A+= }=0A+ /^X\(\/\/\)[^/].*/{=0A+ s//\1/=0A+ q=0A+ }=0A+ /^X\(= \/\/\)$/{=0A+ s//\1/=0A+ q=0A+ }=0A+ /^X\(\/\).*/{=0A+ s//\= 1/=0A+ q=0A+ }=0A+ s/.*/./; q'`/stamp-h$=5Fam=5Fstamp=5Fcount=0A+ ;= ;=0A+=0A+ :C) { echo "$as=5Fme:$LINENO: executing $ac=5Ffile commands" >&= 5=0A+echo "$as=5Fme: executing $ac=5Ffile commands" >&6;}=0A+ ;;=0A+ esac= =0A+=0A+=0A+ case $ac=5Ffile$ac=5Fmode in=0A+ "depfiles":C) test x"$AMD= EP=5FTRUE" !=3D x"" || for mf in $CONFIG=5FFILES; do=0A+ # Strip MF so we = end up with the name of the file.=0A+ mf=3D`echo "$mf" | sed -e 's/:.*$//'= `=0A+ # Check whether this is an Automake generated Makefile or not.=0A+ = # We used to match only the files named `Makefile.in', but=0A+ # some peop= le rename them; so instead we look at the file content.=0A+ # Grep'ing the= first line is not enough: some people post-process=0A+ # each Makefile.in= and add a new line on top of each file to say so.=0A+ # Grep'ing the whol= e file is not good either: AIX grep has a line=0A+ # limit of 2048, but al= l sed's we know have understand at least 4000.=0A+ if sed -n 's,^#.*genera= ted by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then=0A+ dirpart= =3D`$as=5Fdirname -- "$mf" ||=0A+$as=5Fexpr X"$mf" : 'X\(.*[^/]\)//*[^/][^/= ]*/*$' \| \=0A+ X"$mf" : 'X\(//\)[^/]' \| \=0A+ X"$mf" : 'X\(//\)$' \| \= =0A+ X"$mf" : 'X\(/\)' \| . 2>/dev/null ||=0A+echo X"$mf" |=0A+ sed '/^= X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{=0A+ s//\1/=0A+ q=0A+ }=0A+ /^X\= (\/\/\)[^/].*/{=0A+ s//\1/=0A+ q=0A+ }=0A+ /^X\(\/\/\)$/{=0A+ = s//\1/=0A+ q=0A+ }=0A+ /^X\(\/\).*/{=0A+ s//\1/=0A+ q=0A= + }=0A+ s/.*/./; q'`=0A+ else=0A+ continue=0A+ fi=0A+ # Extract t= he definition of DEPDIR, am=5F=5Finclude, and am=5F=5Fquote=0A+ # from the= Makefile without running `make'.=0A+ DEPDIR=3D`sed -n 's/^DEPDIR =3D //p'= < "$mf"`=0A+ test -z "$DEPDIR" && continue=0A+ am=5F=5Finclude=3D`sed -n= 's/^am=5F=5Finclude =3D //p' < "$mf"`=0A+ test -z "am=5F=5Finclude" && co= ntinue=0A+ am=5F=5Fquote=3D`sed -n 's/^am=5F=5Fquote =3D //p' < "$mf"`=0A+= # When using ansi2knr, U may be empty or an underscore; expand it=0A+ U= =3D`sed -n 's/^U =3D //p' < "$mf"`=0A+ # Find all dependency output files,= they are included files with=0A+ # $(DEPDIR) in their names. We invoke s= ed twice because it is the=0A+ # simplest approach to changing $(DEPDIR) t= o its actual value in the=0A+ # expansion.=0A+ for file in `sed -n "=0A+ = s/^$am=5F=5Finclude $am=5F=5Fquote\(.*(DEPDIR).*\)$am=5F=5Fquote"'$/\1/p= ' <"$mf" | \=0A+ sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'= /g'`; do=0A+ # Make sure the directory exists.=0A+ test -f "$dirpart/= $file" && continue=0A+ fdir=3D`$as=5Fdirname -- "$file" ||=0A+$as=5Fexpr= X"$file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \=0A+ X"$file" : 'X\(//\)[^/]'= \| \=0A+ X"$file" : 'X\(//\)$' \| \=0A+ X"$file" : 'X\(/\)' \| . 2>/dev/= null ||=0A+echo X"$file" |=0A+ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{=0A= + s//\1/=0A+ q=0A+ }=0A+ /^X\(\/\/\)[^/].*/{=0A+ s//\1/=0A+= q=0A+ }=0A+ /^X\(\/\/\)$/{=0A+ s//\1/=0A+ q=0A+ }=0A+ = /^X\(\/\).*/{=0A+ s//\1/=0A+ q=0A+ }=0A+ s/.*/./; q'`=0A+ { = as=5Fdir=3D$dirpart/$fdir=0A+ case $as=5Fdir in #(=0A+ -*) as=5Fdir=3D./$= as=5Fdir;;=0A+ esac=0A+ test -d "$as=5Fdir" || { $as=5Fmkdir=5Fp && mkdir= -p "$as=5Fdir"; } || {=0A+ as=5Fdirs=3D=0A+ while :; do=0A+ cas= e $as=5Fdir in #(=0A+ *\'*) as=5Fqdir=3D`echo "$as=5Fdir" | sed "s/'/'= \\\\\\\\''/g"`;; #(=0A+ *) as=5Fqdir=3D$as=5Fdir;;=0A+ esac=0A+ = as=5Fdirs=3D"'$as=5Fqdir' $as=5Fdirs"=0A+ as=5Fdir=3D`$as=5Fdirnam= e -- "$as=5Fdir" ||=0A+$as=5Fexpr X"$as=5Fdir" : 'X\(.*[^/]\)//*[^/][^/]*/*= $' \| \=0A+ X"$as=5Fdir" : 'X\(//\)[^/]' \| \=0A+ X"$as=5Fdir" : 'X\(//\)= $' \| \=0A+ X"$as=5Fdir" : 'X\(/\)' \| . 2>/dev/null ||=0A+echo X"$as=5Fdi= r" |=0A+ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{=0A+ s//\1/=0A+ q= =0A+ }=0A+ /^X\(\/\/\)[^/].*/{=0A+ s//\1/=0A+ q=0A+ }=0A+ /= ^X\(\/\/\)$/{=0A+ s//\1/=0A+ q=0A+ }=0A+ /^X\(\/\).*/{=0A+ = s//\1/=0A+ q=0A+ }=0A+ s/.*/./; q'`=0A+ test -d "$as=5Fdir" &&= break=0A+ done=0A+ test -z "$as=5Fdirs" || eval "mkdir $as=5Fdirs"= =0A+ } || test -d "$as=5Fdir" || { { echo "$as=5Fme:$LINENO: error: cannot= create directory $as=5Fdir" >&5=0A+echo "$as=5Fme: error: cannot create di= rectory $as=5Fdir" >&2;}=0A+ { (exit 1); exit 1; }; }; }=0A+ # echo "c= reating $dirpart/$file"=0A+ echo '# dummy' > "$dirpart/$file"=0A+ done= =0A+done=0A+ ;;=0A+ "default":C) echo timestamp > stamp-h ;;=0A+=0A+ es= ac=0A+done # for ac=5Ftag=0A+=0A+=0A+{ (exit 0); exit 0; }=0A+=5FACEOF=0A+c= hmod +x $CONFIG=5FSTATUS=0A+ac=5Fclean=5Ffiles=3D$ac=5Fclean=5Ffiles=5Fsave= =0A+=0A+=0A+# configure is writing to config.log, and then calls config.sta= tus.=0A+# config.status does its own redirection, appending to config.log.= =0A+# Unfortunately, on DOS this fails, as config.log is still kept open=0A= +# by configure, so config.status won't be able to write to it; its=0A+# ou= tput is simply discarded. So we exec the FD to /dev/null,=0A+# effectively= closing config.log, so it can be properly (re)opened and=0A+# appended to = by config.status. When coming back to configure, we=0A+# need to make the = FD available again.=0A+if test "$no=5Fcreate" !=3D yes; then=0A+ ac=5Fcs= =5Fsuccess=3D:=0A+ ac=5Fconfig=5Fstatus=5Fargs=3D=0A+ test "$silent" =3D = yes &&=0A+ ac=5Fconfig=5Fstatus=5Fargs=3D"$ac=5Fconfig=5Fstatus=5Fargs -= -quiet"=0A+ exec 5>/dev/null=0A+ $SHELL $CONFIG=5FSTATUS $ac=5Fconfig=5Fs= tatus=5Fargs || ac=5Fcs=5Fsuccess=3Dfalse=0A+ exec 5>>config.log=0A+ # Us= e ||, not &&, to avoid exiting from the if with $? =3D 1, which=0A+ # woul= d make configure fail if this is the last instruction.=0A+ $ac=5Fcs=5Fsucc= ess || { (exit 1); exit 1; }=0A+fi=0A+=0Adiff --git a/utils/ffsb-6.0-rc2/co= nfigure.in b/utils/ffsb-6.0-rc2/configure.in=0Anew file mode 100644=0Aindex= 0000000..9ce49d2=0A--- /dev/null=0A+++ b/utils/ffsb-6.0-rc2/configure.in= =0A@@ -0,0 +1,49 @@=0A+dnl Process this file with autoconf to produce a con= figure script.=0A+AC=5FINIT(main.c)=0A+AM=5FINIT=5FAUTOMAKE(ffsb, 6.0-RC2)= =0A+=0A+AM=5FCONFIG=5FHEADER(config.h)=0A+AC=5FCANONICAL=5FHOST=0A+=0A+dnl = need to define =5FALL=5FSOURCE and =5FTHREAD=5FSAFE on AIX=0A+AC=5FAIX=0A+= =0A+case "${host}" in=0A+ *aix*)=0A+ CFLAGS=3D"${CFLAGS} -D=5FTHREAD=5F= SAFE"=0A+ ;;=0A+ *linux*)=0A+ CFLAGS=3D"${CFLAGS} -D=5FREENTRANT"=0A= + ;;=0A+ *)=0A+ echo "detected unknown platform : ${host} : compiles= may fail"=0A+ CFLAGS=3D"${CFLAGS} -D=5FREENTRANT"=0A+ ;;=0A+esac=0A+= =0A+dnl Checks for programs.=0A+AC=5FPROG=5FCC=0A+=0A+dnl Checks for librar= ies.=0A+dnl Replace `main' with a function in -lm:=0A+AC=5FCHECK=5FLIB(m, m= ain)=0A+dnl Replace `main' with a function in -lpthread:=0A+AC=5FCHECK=5FLI= B(pthread, main)=0A+=0A+=0A+dnl Checks for header files.=0A+AC=5FHEADER=5FS= TDC=0A+AC=5FHEADER=5FSYS=5FWAIT=0A+AC=5FCHECK=5FHEADERS(pthread.h fcntl.h l= imits.h stdint.h sys/time.h unistd.h sys/vfs.h sys/limits.h)=0A+=0A+dnl Che= cks for typedefs, structures, and compiler characteristics.=0A+AC=5FC=5FCON= ST=0A+AC=5FHEADER=5FTIME=0A+=0A+dnl Checks for library functions.=0A+AC=5FF= UNC=5FSETVBUF=5FREVERSED=0A+AC=5FCHECK=5FFUNCS(system gettimeofday mkdir st= rerror open64 stat64 fseeko64 lrand48=5Fr srand48=5Fr)=0A+=0A+AC=5FSUBST(CF= LAGS)=0A+AC=5FSUBST(CC)=0A+AC=5FOUTPUT(Makefile, echo timestamp > stamp-h)= =0Adiff --git a/utils/ffsb-6.0-rc2/depcomp b/utils/ffsb-6.0-rc2/depcomp=0An= ew file mode 100755=0Aindex 0000000..aea3d00=0A--- /dev/null=0A+++ b/utils/= ffsb-6.0-rc2/depcomp=0A@@ -0,0 +1,472 @@=0A+#! /bin/sh=0A+=0A+# depcomp - c= ompile a program generating dependencies as side-effects=0A+# Copyright 199= 9, 2000 Free Software Foundation, Inc.=0A+=0A+# This program is free softwa= re; you can redistribute it and/or modify=0A+# it under the terms of the GN= U General Public License as published by=0A+# the Free Software Foundation;= either version 2, or (at your option)=0A+# any later version.=0A+=0A+# Thi= s program is distributed in the hope that it will be useful,=0A+# but WITHO= UT ANY WARRANTY; without even the implied warranty of=0A+# MERCHANTABILITY = or FITNESS FOR A PARTICULAR PURPOSE. See the=0A+# GNU General Public Licen= se for more details.=0A+=0A+# You should have received a copy of the GNU Ge= neral Public License=0A+# along with this program; if not, write to the Fre= e Software=0A+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA= =0A+# 02111-1307, USA.=0A+=0A+# As a special exception to the GNU General P= ublic License, if you=0A+# distribute this file as part of a program that c= ontains a=0A+# configuration script generated by Autoconf, you may include = it under=0A+# the same distribution terms that you use for the rest of that= program.=0A+=0A+# Originally written by Alexandre Oliva .=0A+=0A+if test -z "$depmode" || test -z "$source" || test -z "$object= "; then=0A+ echo "depcomp: Variables source, object and depmode must be se= t" 1>&2=0A+ exit 1=0A+fi=0A+# `libtool' can also be set to `yes' or `no'.= =0A+=0A+if test -z "$depfile"; then=0A+ base=3D`echo "$object" | sed -e '= s,^.*/,,' -e 's,\.\([^.]*\)$,.P\1,'`=0A+ dir=3D`echo "$object" | sed 's,/= .*$,/,'`=0A+ if test "$dir" =3D "$object"; then=0A+ dir=3D=0A+ fi= =0A+ # FIXME: should be =5Fdeps on DOS.=0A+ depfile=3D"$dir.deps/$base"= =0A+fi=0A+=0A+tmpdepfile=3D${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*= \)$/.T\1/'`}=0A+=0A+rm -f "$tmpdepfile"=0A+=0A+# Some modes work just like = other modes, but use different flags. We=0A+# parameterize here, but still= list the modes in the big case below,=0A+# to make depend.m4 easier to wri= te. Note that we *cannot* use a case=0A+# here, because this file can only= contain one case statement.=0A+if test "$depmode" =3D hp; then=0A+ # HP c= ompiler uses -M and no extra arg.=0A+ gccflag=3D-M=0A+ depmode=3Dgcc=0A+f= i=0A+=0A+if test "$depmode" =3D dashXmstdout; then=0A+ # This is just lik= e dashmstdout with a different argument.=0A+ dashmflag=3D-xM=0A+ depmod= e=3Ddashmstdout=0A+fi=0A+=0A+case "$depmode" in=0A+gcc3)=0A+## gcc 3 implem= ents dependency tracking that does exactly what=0A+## we want. Yay! Note:= for some reason libtool 1.4 doesn't like=0A+## it if -MD -MP comes after t= he -MF stuff. Hmm.=0A+ "$@" -MT "$object" -MD -MP -MF "$tmpdepfile"=0A+ = stat=3D$?=0A+ if test $stat -eq 0; then :=0A+ else=0A+ rm -f "$tmpdepf= ile"=0A+ exit $stat=0A+ fi=0A+ mv "$tmpdepfile" "$depfile"=0A+ ;;=0A+= =0A+gcc)=0A+## There are various ways to get dependency output from gcc. H= ere's=0A+## why we pick this rather obscure method:=0A+## - Don't want to u= se -MD because we'd like the dependencies to end=0A+## up in a subdir. H= aving to rename by hand is ugly.=0A+## (We might end up doing this anyway= to support other compilers.)=0A+## - The DEPENDENCIES=5FOUTPUT environment= variable makes gcc act like=0A+## -MM, not -M (despite what the docs say= ).=0A+## - Using -M directly means running the compiler twice (even worse= =0A+## than renaming).=0A+ if test -z "$gccflag"; then=0A+ gccflag=3D= -MD,=0A+ fi=0A+ "$@" -Wp,"$gccflag$tmpdepfile"=0A+ stat=3D$?=0A+ if tes= t $stat -eq 0; then :=0A+ else=0A+ rm -f "$tmpdepfile"=0A+ exit $sta= t=0A+ fi=0A+ rm -f "$depfile"=0A+ echo "$object : \\" > "$depfile"=0A+ = alpha=3DABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz=0A+## The seco= nd -e expression handles DOS-style file names with drive letters.=0A+ sed = -e 's/^[^:]*: / /' \=0A+ -e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfil= e" >> "$depfile"=0A+## This next piece of magic avoids the `deleted header = file' problem.=0A+## The problem is that when a header file which appears i= n a .P file=0A+## is deleted, the dependency causes make to die (because th= ere is=0A+## typically no way to rebuild the header). We avoid this by add= ing=0A+## dummy dependencies for each header file. Too bad gcc doesn't do= =0A+## this for us directly.=0A+ tr ' ' '=0A+' < "$tmpdepfile" |=0A+## Som= e versions of gcc put a space before the `:'. On the theory=0A+## that the= space means something, we add a space to the output as=0A+## well.=0A+## S= ome versions of the HPUX 10.20 sed can't process this invocation=0A+## corr= ectly. Breaking it into two sed invocations is a workaround.=0A+ sed -e= 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"=0A+ rm = -f "$tmpdepfile"=0A+ ;;=0A+=0A+hp)=0A+ # This case exists only to let dep= end.m4 do its work. It works by=0A+ # looking at the text of this script.= This case will never be run,=0A+ # since it is checked for above.=0A+ e= xit 1=0A+ ;;=0A+=0A+sgi)=0A+ if test "$libtool" =3D yes; then=0A+ "$@"= "-Wp,-MDupdate,$tmpdepfile"=0A+ else=0A+ "$@" -MDupdate "$tmpdepfile"= =0A+ fi=0A+ stat=3D$?=0A+ if test $stat -eq 0; then :=0A+ else=0A+ r= m -f "$tmpdepfile"=0A+ exit $stat=0A+ fi=0A+ rm -f "$depfile"=0A+=0A+ = if test -f "$tmpdepfile"; then # yes, the sourcefile depend on other file= s=0A+ echo "$object : \\" > "$depfile"=0A+=0A+ # Clip off the initial= element (the dependent). Don't try to be=0A+ # clever and replace this= with sed code, as IRIX sed won't handle=0A+ # lines with more than a fi= xed number of characters (4096 in=0A+ # IRIX 6.2 sed, 8192 in IRIX 6.5).= We also remove comment lines;=0A+ # the IRIX cc adds comments like `#:= fec' to the end of the=0A+ # dependency line.=0A+ tr ' ' '=0A+' < "$t= mpdepfile" \=0A+ | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' | \=0A= + tr '=0A+' ' ' >> $depfile=0A+ echo >> $depfile=0A+=0A+ # The sec= ond pass generates a dummy entry for each header file.=0A+ tr ' ' '=0A+'= < "$tmpdepfile" \=0A+ | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -= e 's/$/:/' \=0A+ >> $depfile=0A+ else=0A+ # The sourcefile does not c= ontain any dependencies, so just=0A+ # store a dummy comment line, to av= oid errors with the Makefile=0A+ # "include basename.Plo" scheme.=0A+ = echo "#dummy" > "$depfile"=0A+ fi=0A+ rm -f "$tmpdepfile"=0A+ ;;=0A+=0A= +aix)=0A+ # The C for AIX Compiler uses -M and outputs the dependencies=0A= + # in a .u file. This file always lives in the current directory.=0A+ #= Also, the AIX compiler puts `$object:' at the start of each line;=0A+ # $= object doesn't have directory information.=0A+ stripped=3D`echo "$object" = | sed -e 's,^.*/,,' -e 's/\(.*\)\..*$/\1/'`=0A+ tmpdepfile=3D"$stripped.u"= =0A+ outname=3D"$stripped.o"=0A+ if test "$libtool" =3D yes; then=0A+ = "$@" -Wc,-M=0A+ else=0A+ "$@" -M=0A+ fi=0A+=0A+ stat=3D$?=0A+ if tes= t $stat -eq 0; then :=0A+ else=0A+ rm -f "$tmpdepfile"=0A+ exit $sta= t=0A+ fi=0A+=0A+ if test -f "$tmpdepfile"; then=0A+ # Each line is of = the form `foo.o: dependent.h'.=0A+ # Do two passes, one to just change t= hese to=0A+ # `$object: dependent.h' and one to simply `dependent.h:'.= =0A+ sed -e "s,^$outname:,$object :," < "$tmpdepfile" > "$depfile"=0A+ = sed -e "s,^$outname: \(.*\)$,\1:," < "$tmpdepfile" >> "$depfile"=0A+ els= e=0A+ # The sourcefile does not contain any dependencies, so just=0A+ = # store a dummy comment line, to avoid errors with the Makefile=0A+ # "= include basename.Plo" scheme.=0A+ echo "#dummy" > "$depfile"=0A+ fi=0A+= rm -f "$tmpdepfile"=0A+ ;;=0A+=0A+icc)=0A+ # Intel's C compiler underst= ands `-MD -MF file'. However on=0A+ # icc -MD -MF foo.d -c -o sub/foo.= o sub/foo.c=0A+ # ICC 7.0 will fill foo.d with something like=0A+ # fo= o.o: sub/foo.c=0A+ # foo.o: sub/foo.h=0A+ # which is wrong. We want:= =0A+ # sub/foo.o: sub/foo.c=0A+ # sub/foo.o: sub/foo.h=0A+ # su= b/foo.c:=0A+ # sub/foo.h:=0A+ # ICC 7.1 will output=0A+ # foo.o: s= ub/foo.c sub/foo.h=0A+ # and will wrap long lines using \ :=0A+ # foo.= o: sub/foo.c ... \=0A+ # sub/foo.h ... \=0A+ # ...=0A+=0A+ "$@" = -MD -MF "$tmpdepfile"=0A+ stat=3D$?=0A+ if test $stat -eq 0; then :=0A+ = else=0A+ rm -f "$tmpdepfile"=0A+ exit $stat=0A+ fi=0A+ rm -f "$depf= ile"=0A+ # Each line is of the form `foo.o: dependent.h',=0A+ # or `foo.o= : dep1.h dep2.h \', or ` dep3.h dep4.h \'.=0A+ # Do two passes, one to jus= t change these to=0A+ # `$object: dependent.h' and one to simply `dependen= t.h:'.=0A+ sed "s,^[^:]*:,$object :," < "$tmpdepfile" > "$depfile"=0A+ # = Some versions of the HPUX 10.20 sed can't process this invocation=0A+ # co= rrectly. Breaking it into two sed invocations is a workaround.=0A+ sed 's= ,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" |=0A+ sed -e = 's/$/ :/' >> "$depfile"=0A+ rm -f "$tmpdepfile"=0A+ ;;=0A+=0A+tru64)=0A+ = # The Tru64 compiler uses -MD to generate dependencies as a side=0A+ # = effect. `cc -MD -o foo.o ...' puts the dependencies into `foo.o.d'.=0A+ = # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put=0A+ # de= pendencies in `foo.d' instead, so we check for that too.=0A+ # Subdirecto= ries are respected.=0A+ dir=3D`echo "$object" | sed -e 's|/[^/]*$|/|'`=0A= + test "x$dir" =3D "x$object" && dir=3D=0A+ base=3D`echo "$object" | se= d -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'`=0A+=0A+ if test "$libtool" = =3D yes; then=0A+ tmpdepfile1=3D"$dir.libs/$base.lo.d"=0A+ tmpdep= file2=3D"$dir.libs/$base.d"=0A+ "$@" -Wc,-MD=0A+ else=0A+ tmpde= pfile1=3D"$dir$base.o.d"=0A+ tmpdepfile2=3D"$dir$base.d"=0A+ "$@"= -MD=0A+ fi=0A+=0A+ stat=3D$?=0A+ if test $stat -eq 0; then :=0A+ e= lse=0A+ rm -f "$tmpdepfile1" "$tmpdepfile2"=0A+ exit $stat=0A+ = fi=0A+=0A+ if test -f "$tmpdepfile1"; then=0A+ tmpdepfile=3D"$tmpdep= file1"=0A+ else=0A+ tmpdepfile=3D"$tmpdepfile2"=0A+ fi=0A+ if te= st -f "$tmpdepfile"; then=0A+ sed -e "s,^.*\.[a-z]*:,$object:," < "$tm= pdepfile" > "$depfile"=0A+ # That's a space and a tab in the [].=0A+ = sed -e 's,^.*\.[a-z]*:[ ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile= "=0A+ else=0A+ echo "#dummy" > "$depfile"=0A+ fi=0A+ rm -f "$tmp= depfile"=0A+ ;;=0A+=0A+#nosideeffect)=0A+ # This comment above is used b= y automake to tell side-effect=0A+ # dependency tracking mechanisms from s= lower ones.=0A+=0A+dashmstdout)=0A+ # Important note: in order to support = this mode, a compiler *must*=0A+ # always write the proprocessed file to s= tdout, regardless of -o.=0A+ "$@" || exit $?=0A+=0A+ # Remove the call to= Libtool.=0A+ if test "$libtool" =3D yes; then=0A+ while test $1 !=3D '= --mode=3Dcompile'; do=0A+ shift=0A+ done=0A+ shift=0A+ fi=0A+= =0A+ # Remove `-o $object'.=0A+ IFS=3D" "=0A+ for arg=0A+ do=0A+ cas= e $arg in=0A+ -o)=0A+ shift=0A+ ;;=0A+ $object)=0A+ sh= ift=0A+ ;;=0A+ *)=0A+ set fnord "$@" "$arg"=0A+ shift # f= nord=0A+ shift # $arg=0A+ ;;=0A+ esac=0A+ done=0A+=0A+ test = -z "$dashmflag" && dashmflag=3D-M=0A+ # Require at least two characters be= fore searching for `:'=0A+ # in the target name. This is to cope with DOS= -style filenames:=0A+ # a dependency such as `c:/foo/bar' could be seen as= target `c' otherwise.=0A+ "$@" $dashmflag |=0A+ sed 's:^[ ]*[^: ][^:]= [^:]*\:[ ]*:'"$object"'\: :' > "$tmpdepfile"=0A+ rm -f "$depfile"=0A+ = cat < "$tmpdepfile" > "$depfile"=0A+ tr ' ' '=0A+' < "$tmpdepfile" | \=0A+= ## Some versions of the HPUX 10.20 sed can't process this invocation=0A+## = correctly. Breaking it into two sed invocations is a workaround.=0A+ se= d -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"=0A+ = rm -f "$tmpdepfile"=0A+ ;;=0A+=0A+dashXmstdout)=0A+ # This case only exi= sts to satisfy depend.m4. It is never actually=0A+ # run, as this mode is= specially recognized in the preamble.=0A+ exit 1=0A+ ;;=0A+=0A+makedepen= d)=0A+ "$@" || exit $?=0A+ # Remove any Libtool call=0A+ if test "$libto= ol" =3D yes; then=0A+ while test $1 !=3D '--mode=3Dcompile'; do=0A+ = shift=0A+ done=0A+ shift=0A+ fi=0A+ # X makedepend=0A+ shift=0A+ = cleared=3Dno=0A+ for arg in "$@"; do=0A+ case $cleared in=0A+ no)= =0A+ set ""; shift=0A+ cleared=3Dyes ;;=0A+ esac=0A+ case "= $arg" in=0A+ -D*|-I*)=0A+ set fnord "$@" "$arg"; shift ;;=0A+ # = Strip any option that makedepend may not understand. Remove=0A+ # the o= bject too, otherwise makedepend will parse it as a source file.=0A+ -*|$= object)=0A+ ;;=0A+ *)=0A+ set fnord "$@" "$arg"; shift ;;=0A+ = esac=0A+ done=0A+ obj=5Fsuffix=3D"`echo $object | sed 's/^.*\././'`"= =0A+ touch "$tmpdepfile"=0A+ ${MAKEDEPEND-makedepend} -o"$obj=5Fsuffix" -= f"$tmpdepfile" "$@"=0A+ rm -f "$depfile"=0A+ cat < "$tmpdepfile" > "$depf= ile"=0A+ sed '1,2d' "$tmpdepfile" | tr ' ' '=0A+' | \=0A+## Some versions = of the HPUX 10.20 sed can't process this invocation=0A+## correctly. Break= ing it into two sed invocations is a workaround.=0A+ sed -e 's/^\\$//' -= e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"=0A+ rm -f "$tmpdepfi= le" "$tmpdepfile".bak=0A+ ;;=0A+=0A+cpp)=0A+ # Important note: in order t= o support this mode, a compiler *must*=0A+ # always write the proprocessed= file to stdout.=0A+ "$@" || exit $?=0A+=0A+ # Remove the call to Libtool= .=0A+ if test "$libtool" =3D yes; then=0A+ while test $1 !=3D '--mode= =3Dcompile'; do=0A+ shift=0A+ done=0A+ shift=0A+ fi=0A+=0A+ # = Remove `-o $object'.=0A+ IFS=3D" "=0A+ for arg=0A+ do=0A+ case $arg i= n=0A+ -o)=0A+ shift=0A+ ;;=0A+ $object)=0A+ shift=0A+ = ;;=0A+ *)=0A+ set fnord "$@" "$arg"=0A+ shift # fnord=0A+= shift # $arg=0A+ ;;=0A+ esac=0A+ done=0A+=0A+ "$@" -E |=0A+= sed -n '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' |=0A+ sed '$ s: = \\$::' > "$tmpdepfile"=0A+ rm -f "$depfile"=0A+ echo "$object : \\" > "$d= epfile"=0A+ cat < "$tmpdepfile" >> "$depfile"=0A+ sed < "$tmpdepfile" '/^= $/d;s/^ //;s/ \\$//;s/$/ :/' >> "$depfile"=0A+ rm -f "$tmpdepfile"=0A+ ;;= =0A+=0A+msvisualcpp)=0A+ # Important note: in order to support this mode, = a compiler *must*=0A+ # always write the proprocessed file to stdout, rega= rdless of -o,=0A+ # because we must use -o when running libtool.=0A+ "$@"= || exit $?=0A+ IFS=3D" "=0A+ for arg=0A+ do=0A+ case "$arg" in=0A+ = "-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI")=0A+ set fnord "$@"=0A+ shift=0A+ shi= ft=0A+ ;;=0A+ *)=0A+ set fnord "$@" "$arg"=0A+ shift=0A+ shift=0A+ ;;=0A= + esac=0A+ done=0A+ "$@" -E |=0A+ sed -n '/^#line [0-9][0-9]* "\([^"]= *\)"/ s::echo "`cygpath -u \\"\1\\"`":p' | sort | uniq > "$tmpdepfile"=0A+ = rm -f "$depfile"=0A+ echo "$object : \\" > "$depfile"=0A+ . "$tmpdepfile= " | sed 's% %\\ %g' | sed -n '/^\(.*\)$/ s:: \1 \\:p' >> "$depfile"=0A+ ec= ho " " >> "$depfile"=0A+ . "$tmpdepfile" | sed 's% %\\ %g' | sed -n '/^\(.= *\)$/ s::\1\::p' >> "$depfile"=0A+ rm -f "$tmpdepfile"=0A+ ;;=0A+=0A+none= )=0A+ exec "$@"=0A+ ;;=0A+=0A+*)=0A+ echo "Unknown depmode $depmode" 1>&= 2=0A+ exit 1=0A+ ;;=0A+esac=0A+=0A+exit 0=0Adiff --git a/utils/ffsb-6.0-r= c2/examples/profile=5Feverything b/utils/ffsb-6.0-rc2/examples/profile=5Fev= erything=0Anew file mode 100644=0Aindex 0000000..67972e1=0A--- /dev/null=0A= +++ b/utils/ffsb-6.0-rc2/examples/profile=5Feverything=0A@@ -0,0 +1,119 @@= =0A+directio =3D 0=0A+time =3D 10=0A+=0A+[filesystem]=0A+ location =3D /mn= t/test1=0A+=0A+ num=5Fdirs =3D 100=0A+=0A+ size=5Fweight 4k 33=0A+ size=5Fw= eight 8k 21=0A+ size=5Fweight 16k 13=0A+ size=5Fweight 32k 10=0A+ size=5Fwe= ight 64k 8=0A+ size=5Fweight 128k 5=0A+ size=5Fweight 256k 4=0A+ size=5Fwei= ght 512k 3=0A+ size=5Fweight 8m 2=0A+ size=5Fweight 32m 1=0A+# size=5Fweigh= t 1g 1=0A+=0A+# min=5Ffilesize =3D 4k=0A+# max=5Ffilesize =3D 10m=0A+=0A+# = num=5Ffiles =3D 0=0A+ init=5Fsize =3D 100m=0A+# init=5Fsize =3D 6GB=0A+# in= it=5Fsize =3D 1gb=0A+# init=5Futil =3D 0.002=0A+=0A+ agefs =3D 0=0A+ [thre= adgroup]=0A+ num=5Fthreads =3D 10=0A+ write=5Fsize =3D 400=0A+ write=5Fb= locksize =3D 1024=0A+ create=5Fweight =3D 10=0A+ append=5Fweight =3D 10= =0A+ delete=5Fweight =3D 1=0A+ [end]=0A+ desired=5Futil =3D 0.005=0A+=0A+= =0A+[end]=0A+=0A+#[filesystem]=0A+# location =3D /mnt/test1=0A+# clone =3D= /mnt/test2=0A+#[end]=0A+=0A+[threadgroup]=0A+ num=5Fthreads =3D 4=0A+=0A+#= bindfs =3D /mnt/test1=0A+=0A+ append=5Fweight =3D 1=0A+ append=5Ffsync= =5Fweight =3D 1=0A+ stat=5Fweight =3D 1=0A+# write=5Fweight =3D 1=0A+# wr= ite=5Ffsync=5Fweight =3D 1=0A+# read=5Fweight =3D 1=0A+ create=5Fweight = =3D 1=0A+ create=5Ffsync=5Fweight =3D 1=0A+ delete=5Fweight =3D 1=0A+ read= all=5Fweight =3D 1=0A+ writeall=5Fweight =3D 1=0A+ writeall=5Ffsync=5Fwei= ght =3D 1=0A+ open=5Fclose=5Fweight =3D 1=0A+=0A+ read=5Frandom =3D 0=0A+ w= rite=5Frandom =3D 0=0A+=0A+ write=5Fsize =3D 40k=0A+ write=5Fblocksize =3D = 4k=0A+ read=5Fsize =3D 40k=0A+ read=5Fblocksize =3D 4k=0A+=0A+ op=5Fdelay = =3D 0=0A+=0A+ [stats]=0A+ enable=5Fstats =3D 1=0A+ enable=5Frange =3D 0= =0A+=0A+# ignore =3D close=0A+# ignore =3D open=0A+# ignore =3D lseek= =0A+# ignore =3D write=0A+# ignore =3D read=0A+=0A+ msec=5Frange 0.00 = 0.01=0A+ msec=5Frange 0.01 0.02=0A+ msec=5Frange 0.02 0.03=0A+ msec=5Fra= nge 0.03 0.04=0A+ msec=5Frange 0.04 0.05=0A+ msec=5Frange 0.05 0.1=0A+ m= sec=5Frange 0.1 0.2=0A+ msec=5Frange 0.2 0.5=0A+ msec=5Frange 0.5 1.0=0A+= msec=5Frange 1.0 2.0=0A+ msec=5Frange 2.0 3.0=0A+ msec=5Frange 3.0 4.0= =0A+ msec=5Frange 4.0 5.0=0A+ msec=5Frange 5.0 10.0=0A+ msec=5Frange 10.= 0 10000.0=0A+ [end]=0A+[end]=0A+=0A+#[threadgroup]=0A+# num=5Fthreads =3D 1= =0A+#=0A+# readall=5Fweight =3D 0=0A+# writeall=5Fweight =3D 0=0A+# create= dir=5Fweight =3D 0=0A+#=0A+# write=5Fsize =3D 4096=0A+# write=5Fblocks= ize =3D 4096=0A+# read=5Fsize =3D 4096=0A+# read=5Fblocksize =3D 409= 6=0A+#=0A+# op=5Fdelay =3D 12=0A+#[end]=0Adiff --git a/utils/ffsb-6.0-rc2/f= fsb.h b/utils/ffsb-6.0-rc2/ffsb.h=0Anew file mode 100644=0Aindex 0000000..2= 5a9a10=0A--- /dev/null=0A+++ b/utils/ffsb-6.0-rc2/ffsb.h=0A@@ -0,0 +1,105 @= @=0A+/*=0A+ * Copyright (c) International Business Machines Corp., 2001-2= 004=0A+ *=0A+ * This program is free software; you can redistribute it a= nd/or modify=0A+ * it under the terms of the GNU General Public License a= s published by=0A+ * the Free Software Foundation; either version 2 of th= e License, or=0A+ * (at your option) any later version.=0A+ *=0A+ * Thi= s program is distributed in the hope that it will be useful,=0A+ * but WI= THOUT ANY WARRANTY; without even the implied warranty of=0A+ * MERCHANTA= BILITY or FITNESS FOR A PARTICULAR PURPOSE. See=0A+ * the GNU General Pu= blic License for more details.=0A+ *=0A+ * You should have received a cop= y of the GNU General Public License=0A+ * along with this program; if no= t, write to the Free Software=0A+ * Foundation, Inc., 51 Franklin Street,= Fifth Floor, Boston, MA 02110-1301 USA=0A+ */=0A+#ifndef =5FFFSB=5FH=5F=0A= +#define =5FFFSB=5FH=5F=0A+=0A+#include =0A+#include =0A+#include =0A+#include =0A+#include = =0A+=0A+#include "config.h"=0A+=0A+#include "ffsb=5Fop.h"=0A+#include "ffsb= =5Ftg.h"=0A+#include "ffsb=5Ffs.h"=0A+=0A+/*=0A+ * The main thread wakes up= once in so many seconds to check elapsed=0A+ * time this is a tunable for = that sleep interval in seconds=0A+ */=0A+=0A+#define FFSB=5FTG=5FWAIT=5FTIM= E (1)=0A+=0A+#define MARK printf("MARK FUNC: %s() @ %s:%d\n", =5F=5FFUNCTIO= N=5F=5F, =5F=5FFILE=5F=5F, =5F=5FLINE=5F=5F);=0A+=0A+struct results {=0A+ s= truct rusage before;=0A+ struct rusage after;=0A+ double runtime;=0A+ doubl= e cputime;=0A+ double cpu=5Fbefore;=0A+ double cpu=5Fafter;=0A+ double cpu= =5Ftotal;=0A+};=0A+=0A+struct ffsb=5Ftg;=0A+struct ffsb=5Ffs;=0A+=0A+typede= f struct profile=5Fconfig {=0A+ struct config=5Foptions *global;=0A+ struct= container *fs=5Fcontainer;=0A+ struct container *tg=5Fcontainer;=0A+} prof= ile=5Fconfig=5Ft;=0A+=0A+typedef struct ffsb=5Fconfig {=0A+ unsigned time;= =0A+=0A+ unsigned num=5Ffilesys;=0A+ unsigned num=5Fthreadgroups;=0A+=0A+ i= nt num=5Ftotalthreads; /* gets calculated after init() */=0A+=0A+ struct f= fsb=5Ftg *groups;=0A+ struct ffsb=5Ffs *filesystems;=0A+=0A+ struct profile= =5Fconfig *profile=5Fconf;=0A+ char *callout; /* we will try and exec thi= s */=0A+=0A+ struct results results;=0A+} ffsb=5Fconfig=5Ft;=0A+=0A+void in= it=5Fffsb=5Fconfig(ffsb=5Fconfig=5Ft *fc, unsigned num=5Ffs, unsigned num= =5Ftg);=0A+=0A+/*=0A+ * this is kind of like a special case "constructor" w= hich is only=0A+ * used by fs-aging code to build a fake config for the agi= ng tg=0A+ */=0A+void init=5Fffsb=5Fconfig=5F1fs(ffsb=5Fconfig=5Ft *fc, stru= ct ffsb=5Ffs *fs,=0A+ struct ffsb=5Ftg *tg);=0A+=0A+void destroy=5Fffs= b=5Fconfig(ffsb=5Fconfig=5Ft *fc);=0A+=0A+/* getters/setters, parser only s= hould use setters */=0A+=0A+void fc=5Fset=5Ftime(ffsb=5Fconfig=5Ft *fc, uns= igned time);=0A+=0A+void fc=5Fset=5Fnum=5Ftotalthreads(ffsb=5Fconfig=5Ft *f= c, int num);=0A+=0A+/* num is zero-based */=0A+/* get a particular threadgr= oup object */=0A+struct ffsb=5Ftg *fc=5Fget=5Ftg(ffsb=5Fconfig=5Ft *fc, uns= igned num);=0A+=0A+/* get a particular filesystem object */=0A+struct ffsb= =5Ffs *fc=5Fget=5Ffs(ffsb=5Fconfig=5Ft *fc, unsigned num);=0A+=0A+void fc= =5Fset=5Fcallout(ffsb=5Fconfig=5Ft *fc, char *callout);=0A+char *fc=5Fget= =5Fcallout(ffsb=5Fconfig=5Ft *fc);=0A+=0A+#endif=0Adiff --git a/utils/ffsb-= 6.0-rc2/ffsb=5Ffc.c b/utils/ffsb-6.0-rc2/ffsb=5Ffc.c=0Anew file mode 100644= =0Aindex 0000000..60b6313=0A--- /dev/null=0A+++ b/utils/ffsb-6.0-rc2/ffsb= =5Ffc.c=0A@@ -0,0 +1,110 @@=0A+/*=0A+ * Copyright (c) International Busin= ess Machines Corp., 2001-2004=0A+ *=0A+ * This program is free software; = you can redistribute it and/or modify=0A+ * it under the terms of the GN= U General Public License as published by=0A+ * the Free Software Foundati= on; either version 2 of the License, or=0A+ * (at your option) any later = version.=0A+ *=0A+ * This program is distributed in the hope that it will= be useful,=0A+ * but WITHOUT ANY WARRANTY; without even the implied war= ranty of=0A+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See= =0A+ * the GNU General Public License for more details.=0A+ *=0A+ * You= should have received a copy of the GNU General Public License=0A+ * alon= g with this program; if not, write to the Free Software=0A+ * Foundation= , Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA=0A+ */= =0A+#include =0A+#include =0A+#include = =0A+#include =0A+#include =0A+#include =0A+#in= clude =0A+#include =0A+=0A+#include =0A+=0A+= #include "config.h"=0A+=0A+#include "ffsb.h"=0A+#include "util.h"=0A+#inclu= de "parser.h"=0A+=0A+void init=5Fffsb=5Fconfig(ffsb=5Fconfig=5Ft * fc, unsi= gned num=5Ffs, unsigned num=5Ftg)=0A+{=0A+ memset(fc, 0, sizeof(ffsb=5Fconf= ig=5Ft));=0A+=0A+ fc->num=5Ftotalthreads =3D -1;=0A+ fc->num=5Fthreadgroups= =3D num=5Ftg;=0A+ fc->num=5Ffilesys =3D num=5Ffs;=0A+=0A+ fc->groups =3D f= fsb=5Fmalloc(sizeof(ffsb=5Ftg=5Ft) * num=5Ftg);=0A+ fc->filesystems =3D ffs= b=5Fmalloc(sizeof(ffsb=5Ffs=5Ft) * num=5Ffs);=0A+}=0A+=0A+void init=5Fffsb= =5Fconfig=5F1fs(ffsb=5Fconfig=5Ft * fc, ffsb=5Ffs=5Ft * fs, ffsb=5Ftg=5Ft *= tg)=0A+{=0A+ memset(fc, 0, sizeof(*fc));=0A+=0A+ fc->num=5Ftotalthreads = =3D tg=5Fget=5Fnumthreads(tg);=0A+ fc->num=5Fthreadgroups =3D 1;=0A+ fc->nu= m=5Ffilesys =3D 1;=0A+=0A+ fc->groups =3D tg;=0A+ fc->filesystems =3D fs;= =0A+}=0A+=0A+void destroy=5Fffsb=5Fconfig(ffsb=5Fconfig=5Ft * fc)=0A+{=0A+ = int i;=0A+ for (i =3D 0; i < fc->num=5Ffilesys; i++)=0A+ destroy=5Fffsb=5F= fs(&fc->filesystems[i]);=0A+=0A+ for (i =3D 0; i < fc->num=5Fthreadgroups; = i++)=0A+ destroy=5Fffsb=5Ftg(&fc->groups[i]);=0A+=0A+ free(fc->groups);=0A= + free(fc->filesystems);=0A+}=0A+=0A+void fc=5Fset=5Ftime(ffsb=5Fconfig=5Ft= * fc, unsigned time)=0A+{=0A+ fc->time =3D time;=0A+}=0A+=0A+unsigned fc= =5Fget=5Fnum=5Ffilesys(ffsb=5Fconfig=5Ft * fc)=0A+{=0A+ return fc->num=5Ffi= lesys;=0A+}=0A+=0A+struct ffsb=5Ftg *fc=5Fget=5Ftg(ffsb=5Fconfig=5Ft * fc, = unsigned num)=0A+{=0A+ assert(num < fc->num=5Fthreadgroups);=0A+ return &fc= ->groups[num];=0A+}=0A+=0A+struct ffsb=5Ffs *fc=5Fget=5Ffs(ffsb=5Fconfig=5F= t * fc, unsigned num)=0A+{=0A+ assert(num < fc->num=5Ffilesys);=0A+ return = &fc->filesystems[num];=0A+}=0A+=0A+void fc=5Fset=5Fnum=5Ftotalthreads(ffsb= =5Fconfig=5Ft * fc, int num)=0A+{=0A+ assert(num > 0);=0A+ fc->num=5Ftotalt= hreads =3D num;=0A+}=0A+=0A+void fc=5Fset=5Fcallout(ffsb=5Fconfig=5Ft * fc,= char *callout)=0A+{=0A+ if (fc->callout)=0A+ free(fc->callout);=0A+ fc->c= allout =3D ffsb=5Fstrdup(callout);=0A+}=0A+=0A+char *fc=5Fget=5Fcallout(ffs= b=5Fconfig=5Ft * fc)=0A+{=0A+ return fc->callout;=0A+}=0Adiff --git a/utils= /ffsb-6.0-rc2/ffsb=5Ffs.c b/utils/ffsb-6.0-rc2/ffsb=5Ffs.c=0Anew file mode = 100644=0Aindex 0000000..eb5a759=0A--- /dev/null=0A+++ b/utils/ffsb-6.0-rc2/= ffsb=5Ffs.c=0A@@ -0,0 +1,630 @@=0A+/*=0A+ * Copyright (c) International B= usiness Machines Corp., 2001-2004=0A+ *=0A+ * This program is free softwa= re; you can redistribute it and/or modify=0A+ * it under the terms of th= e GNU General Public License as published by=0A+ * the Free Software Foun= dation; either version 2 of the License, or=0A+ * (at your option) any la= ter version.=0A+ *=0A+ * This program is distributed in the hope that it = will be useful,=0A+ * but WITHOUT ANY WARRANTY; without even the implied= warranty of=0A+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. = See=0A+ * the GNU General Public License for more details.=0A+ *=0A+ * = You should have received a copy of the GNU General Public License=0A+ * a= long with this program; if not, write to the Free Software=0A+ * Foundat= ion, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA=0A+ *= /=0A+#include =0A+#include =0A+#include =0A= +#include =0A+#include =0A+#include =0A+=0A+= #include "ffsb=5Ffs.h"=0A+#include "util.h"=0A+#include "fh.h"=0A+=0A+/* Fi= rst zero out struct, set num=5Fdirs, and strdups basedir */=0A+void init=5F= ffsb=5Ffs(ffsb=5Ffs=5Ft * fs, char *basedir, uint32=5Ft num=5Fdata=5Fdirs,= =0A+ uint32=5Ft numstartfiles, unsigned flags)=0A+{=0A+ memset(fs, 0, si= zeof(ffsb=5Ffs=5Ft));=0A+ fs->basedir =3D ffsb=5Fstrdup(basedir);=0A+ fs->n= um=5Fdirs =3D num=5Fdata=5Fdirs;=0A+ fs->num=5Fstart=5Ffiles =3D numstartfi= les;=0A+ fs->flags =3D flags;=0A+ fs->create=5Fblocksize =3D FFSB=5FFS=5FDE= FAULT=5FCREATE=5FBLOCKSIZE;=0A+ fs->age=5Fblocksize =3D FFSB=5FFS=5FDEFAULT= =5FAGE=5FBLOCKSIZE;=0A+ fs->age=5Ffs =3D 0;=0A+}=0A+=0A+/*=0A+ * Does not r= emove files/dirs on disk, only frees up data=0A+ * structures=0A+*/=0A+void= destroy=5Fffsb=5Ffs(ffsb=5Ffs=5Ft * fs)=0A+{=0A+ free(fs->basedir);=0A+ de= stroy=5Ffilelist(&fs->files);=0A+ destroy=5Ffilelist(&fs->fill);=0A+ destro= y=5Ffilelist(&fs->meta);=0A+}=0A+=0A+void clone=5Fffsb=5Ffs(ffsb=5Ffs=5Ft *= target, ffsb=5Ffs=5Ft * orig)=0A+{=0A+ target->basedir =3D orig->basedir;= =0A+ target->flags =3D orig->flags;=0A+=0A+ /* !!!! hackish, write a fileli= st=5Fclone() function later */=0A+ memcpy(&target->files, &orig->files, siz= eof(orig->files));=0A+ memcpy(&target->fill, &orig->fill, sizeof(orig->fill= ));=0A+ memcpy(&target->meta, &orig->meta, sizeof(orig->meta));=0A+=0A+ tar= get->num=5Fdirs =3D orig->num=5Fdirs;=0A+ target->num=5Fstart=5Ffiles =3D o= rig->num=5Fstart=5Ffiles;=0A+ target->minfilesize =3D orig->minfilesize;=0A= + target->maxfilesize =3D orig->maxfilesize;=0A+=0A+ target->start=5Ffsutil= =3D orig->start=5Ffsutil;=0A+ target->desired=5Ffsutil =3D orig->desired= =5Ffsutil;=0A+=0A+ target->age=5Ffs =3D orig->age=5Ffs;=0A+ target->num=5Fa= ge=5Fdirs =3D orig->num=5Fage=5Fdirs;=0A+ target->aging=5Ftg =3D orig->agin= g=5Ftg;=0A+=0A+ target->create=5Fblocksize =3D orig->create=5Fblocksize;=0A= + target->age=5Fblocksize =3D orig->age=5Fblocksize;=0A+=0A+ memcpy(target-= >op=5Fdata, orig->op=5Fdata, sizeof(void *) * FFSB=5FNUMOPS);=0A+}=0A+=0A+s= tatic void add=5Ffiles(ffsb=5Ffs=5Ft * fs, struct benchfiles *bf, int num,= =0A+ uint64=5Ft minsize, uint64=5Ft maxsize, unsigned blocksize)=0A+= {=0A+ struct ffsb=5Ffile *cur;=0A+ int i, fd, condition =3D 0, has=5Fdirect= io =3D 0;=0A+ randdata=5Ft rd;=0A+ char *buf =3D ffsb=5Fmalloc(blocksize);= =0A+ uint64=5Ft initial=5Ffree =3D getfsutil=5Fsize(fs->basedir);=0A+=0A+ i= f (fs=5Fget=5Fdirectio(fs)) {=0A+ has=5Fdirectio =3D 1;=0A+ fs=5Fset=5Fdi= rectio(fs, 0);=0A+ }=0A+=0A+ assert(blocksize);=0A+=0A+ init=5Frandom(&rd, = 0);=0A+=0A+ if (num)=0A+ condition =3D num;=0A+ else if (fs->init=5Fsize) = {=0A+ if (getfsutil(fs->basedir) !=3D initial=5Ffree ||=0A+ fs->init= =5Fsize > (getfsutil=5Fsize(fs->basedir) -=0A+ initial=5Ffree))=0A+= condition =3D 1;=0A+ else=0A+ condition =3D 0;=0A+ } else if (fs->ini= t=5Ffsutil) {=0A+ if (fs->init=5Ffsutil > getfsutil(fs->basedir))=0A+ co= ndition =3D 1;=0A+ else=0A+ condition =3D 0;=0A+ }=0A+=0A+ while (condit= ion) {=0A+ uint64=5Ft size;=0A+ if (fs->num=5Fweights) {=0A+ int num = =3D 1 + getrandom(&rd, fs->sum=5Fweights);=0A+ int curop =3D 0;=0A+=0A+ = while (fs->size=5Fweights[curop].weight < num) {=0A+ num -=3D fs->size= =5Fweights[curop].weight;=0A+ curop++;=0A+ }=0A+ size =3D fs->size= =5Fweights[curop].size;=0A+ } else=0A+ size =3D minsize + getllrandom(&r= d, maxsize - minsize);=0A+=0A+ cur =3D add=5Ffile(bf, size, &rd);=0A+ fd = =3D fhopencreate(cur->name, NULL, fs);=0A+ writefile=5Fhelper(fd, size, bl= ocksize, buf, NULL, fs);=0A+ fhclose(fd, NULL, fs);=0A+ unlock=5Ffile=5Fw= riter(cur);=0A+=0A+ if (num)=0A+ condition--;=0A+ else if (fs->init=5Fs= ize) {=0A+ if (fs->init=5Fsize > getfsutil=5Fsize(fs->basedir) -=0A+ = initial=5Ffree)=0A+ condition =3D 1;=0A+ else=0A+ condition =3D 0= ;=0A+ } else if (fs->init=5Ffsutil) {=0A+ if (fs->init=5Ffsutil > getfsu= til(fs->basedir))=0A+ condition =3D 1;=0A+ else=0A+ condition =3D 0= ;=0A+ }=0A+=0A+ }=0A+ free(buf);=0A+ if (has=5Fdirectio)=0A+ fs=5Fset=5Fd= irectio(fs, 1);=0A+}=0A+=0A+static void age=5Ffs(ffsb=5Ffs=5Ft * fs, double= utilization);=0A+static ffsb=5Ffs=5Ft *construct=5Fnew=5Ffileset(ffsb=5Ffs= =5Ft * fs);=0A+static ffsb=5Ffs=5Ft *check=5Fexisting=5Ffileset(ffsb=5Ffs= =5Ft * fs);=0A+=0A+void *construct=5Fffsb=5Ffs(void *data)=0A+{=0A+ ffsb=5F= fs=5Ft *fs =3D (ffsb=5Ffs=5Ft *) data;=0A+ ffsb=5Ffs=5Ft *ret =3D NULL;=0A+= =0A+ if (fs=5Fget=5Freuse=5Ffs(fs)) {=0A+ printf("checking existing fs: %s= \n", fs->basedir);=0A+ ret =3D check=5Fexisting=5Ffileset(fs);=0A+ if (re= t =3D=3D NULL) {=0A+ printf("recreating new fileset\n");=0A+ ret =3D co= nstruct=5Fnew=5Ffileset(fs);=0A+ }=0A+ } else {=0A+ printf("creating new = fileset %s\n", fs->basedir);=0A+ ret =3D construct=5Fnew=5Ffileset(fs);=0A= + }=0A+ if (ret =3D=3D NULL) {=0A+ printf("fs setup on %s failed\n", fs->b= asedir);=0A+ exit(1);=0A+ }=0A+ return ret;=0A+}=0A+=0A+static int verify= =5Ffile(struct benchfiles *bf, char *fname, void *fs=5Fptr)=0A+{=0A+ ffsb= =5Ffs=5Ft *fs =3D (ffsb=5Ffs=5Ft *) fs=5Fptr;=0A+ uint64=5Ft minsize =3D fs= ->minfilesize;=0A+ uint64=5Ft maxsize =3D fs->maxfilesize;=0A+ uint64=5Ft f= ilesize =3D 0;=0A+ int fd =3D 0;=0A+ DIR *dirptr =3D NULL;=0A+=0A+ /* If it= is a directory and it passed the name verification we=0A+ * don't need to= do anything here=0A+ */=0A+ dirptr =3D opendir(fname);=0A+ if (dirptr) {= =0A+ closedir(dirptr);=0A+ return 0;=0A+ }=0A+=0A+ fd =3D open(fname, O= =5FRDONLY);=0A+ /* If we can't open it for read we're done */=0A+ if (fd < = 0) {=0A+ printf("verify=5Ffile: error opening %s for readonly\n", fname);= =0A+ perror(fname);=0A+ return 1;=0A+ }=0A+ close(fd);=0A+ filesize =3D f= fsb=5Fget=5Ffilesize(fname);=0A+=0A+ if (filesize < minsize || filesize > m= axsize) {=0A+ printf("size %llu bytes for file %s is invalid\n",=0A+ = filesize, fname);=0A+ return 1;=0A+ }=0A+=0A+ return 0;=0A+}=0A+=0A+/* = Record the number of files and directorys there are supposed to be=0A+ * gr= ab (check and build the structures) the regular data fileset then=0A+ * che= ck to make sure the number of directories and files in that=0A+ * filelist = matches up. Then grab the meta filelist and verify that=0A+ * the meta fil= elist is empty. Set up the filelist for fill (aging)=0A+ * and setup the o= ps for the benchmark.=0A+*/=0A+static ffsb=5Ffs=5Ft *check=5Fexisting=5Ffil= eset(ffsb=5Ffs=5Ft * fs)=0A+{=0A+ char buf[FILENAME=5FMAX * 3];=0A+ int ret= val =3D 0;=0A+ uint32=5Ft num=5Fdirs =3D fs->num=5Fdirs;=0A+ uint32=5Ft num= =5Ffiles =3D fs->num=5Fstart=5Ffiles;=0A+=0A+ if (fs->age=5Ffs) {=0A+ prin= tf("Aging and reusing the fileset are mutually "=0A+ "exclusive\n")= ;=0A+ printf("aborting\n");=0A+ return NULL;=0A+ }=0A+=0A+ /* Set up benc= h/age dir */=0A+ if (FILENAME=5FMAX <=3D=0A+ snprintf(buf, FILENAME=5FM= AX, "%s/%s", fs->basedir, FILES=5FBASE)) {=0A+ printf("pathname \"%s\" is = too long, aborting\n", buf);=0A+ return NULL;=0A+ }=0A+=0A+ /* Make a "dum= my" filelist that has numsubdirs set to 0 and=0A+ * numstartfiles set to 0= =0A+ */=0A+ init=5Ffilelist(&fs->files, buf, FILES=5FBASE, 0, 0);=0A+=0A+ = retval =3D grab=5Fold=5Ffileset(&fs->files, buf, verify=5Ffile, fs);=0A+=0A= + if (retval)=0A+ return NULL;=0A+=0A+ if ((get=5Flistsize(&fs->files) != =3D num=5Ffiles) ||=0A+ (get=5Fnumsubdirs(&fs->files) !=3D num=5Fdirs))= {=0A+ printf("check=5Fexisting=5Ffileset: number of files (%u)"=0A+ = " or directorys (%u) don't match up\n",=0A+ get=5Flistsize(&fs->= files), get=5Fnumsubdirs(&fs->files));=0A+ destroy=5Ffilelist(&fs->files);= =0A+ return NULL;=0A+ }=0A+=0A+ if (FILENAME=5FMAX <=3D=0A+ snprintf(b= uf, FILENAME=5FMAX, "%s/%s", fs->basedir, META=5FBASE)) {=0A+ printf("path= name \"%s\" is too long, aborting\n", buf);=0A+ return NULL;=0A+ }=0A+=0A+= init=5Ffilelist(&fs->meta, buf, META=5FBASE, 0, 1);=0A+ retval =3D grab=5F= old=5Ffileset(&fs->meta, buf, verify=5Ffile, fs);=0A+=0A+ if (retval) {=0A+= destroy=5Ffilelist(&fs->files);=0A+ return NULL;=0A+ }=0A+=0A+ if ((get= =5Flistsize(&fs->meta) !=3D 0) || (get=5Fnumsubdirs(&fs->meta) !=3D 0)) {= =0A+ printf("check=5Fexisting=5Ffileset: meta directory isn't empty\n"=0A+= "aborting\n");=0A+ destroy=5Ffilelist(&fs->files);=0A+ destroy= =5Ffilelist(&fs->meta);=0A+ return NULL;=0A+ }=0A+=0A+ /* Even though we w= on't use it, we still need to be consistent=0A+ * here.=0A+ */=0A+ init= =5Ffilelist(&fs->fill, buf, AGE=5FBASE, 0, 0);=0A+=0A+ /* Have to do this o= r everything else could break. */=0A+ ops=5Fsetup=5Fbench(fs);=0A+=0A+ retu= rn fs;=0A+}=0A+=0A+/*=0A+ * clean up fs, "rm -rf data meta"=0A+ * record = utilization=0A+ * set up the dirs: files, meta=0A+ * age filesystem=0A+ *= have ffsb=5Fops setup their data=0A+ * create starting files in files=0A= + */=0A+static ffsb=5Ffs=5Ft *construct=5Fnew=5Ffileset(ffsb=5Ffs=5Ft * fs)= =0A+{=0A+ char buf[FILENAME=5FMAX * 3];=0A+=0A+ /* TODO: Convert this quick= and dirty rm -rf to a "real"=0A+ * programmatic version, that doesn't rel= y on the rm command.=0A+ */=0A+ if (FILENAME=5FMAX * 3 <=3D snprintf(buf, = FILENAME=5FMAX * 3,=0A+ "rm -rf %s/data %s/meta",=0A+ fs->basedir= , fs->basedir)) {=0A+ printf("pathname too long for command \"%s\"\n", buf= );=0A+ return NULL;=0A+ }=0A+=0A+ if (ffsb=5Fsystem(buf) < 0) {=0A+ perro= r(buf);=0A+ return NULL;=0A+ }=0A+=0A+ fs->start=5Ffsutil =3D getfsutil(fs= ->basedir);=0A+=0A+ /* Set up bench/age dir */=0A+ if (FILENAME=5FMAX <=3D= =0A+ snprintf(buf, FILENAME=5FMAX, "%s/%s", fs->basedir, FILES=5FBASE))= {=0A+ printf("pathname \"%s\" is too long, aborting\n", buf);=0A+ return= NULL;=0A+ }=0A+=0A+ ffsb=5Fmkdir(buf);=0A+=0A+ /* Regular files and aging = share this directory */=0A+ init=5Ffilelist(&fs->files, buf, FILES=5FBASE, = fs->num=5Fdirs, 1);=0A+ init=5Ffilelist(&fs->fill, buf, AGE=5FBASE, fs->num= =5Fage=5Fdirs, 1);=0A+=0A+ /* Set up meta dir */=0A+ snprintf(buf, FILENAME= =5FMAX, "%s/%s", fs->basedir, META=5FBASE);=0A+=0A+ ffsb=5Fmkdir(buf);=0A+= =0A+ init=5Ffilelist(&fs->meta, buf, META=5FBASE, 0, 1);=0A+=0A+ /* Do agin= g */=0A+ if (fs->age=5Ffs)=0A+ age=5Ffs(fs, fs->desired=5Ffsutil);=0A+=0A+= /* Call back into ops, set for benchmark */=0A+ ops=5Fsetup=5Fbench(fs);= =0A+=0A+ /* Create initial fileset */=0A+ add=5Ffiles(fs, &fs->files, fs->n= um=5Fstart=5Ffiles, fs->minfilesize,=0A+ fs->maxfilesize, fs->create=5Fb= locksize);=0A+ return fs;=0A+}=0A+=0A+struct poll=5Fdata {=0A+ ffsb=5Ffs=5F= t *fs;=0A+ double util;=0A+};=0A+=0A+static int fs=5Fget=5Futil(void *data)= =0A+{=0A+ struct poll=5Fdata *pd =3D (struct poll=5Fdata *)data;=0A+ double= fsutil =3D getfsutil(pd->fs->basedir);=0A+=0A+ if (fsutil >=3D pd->util)= =0A+ return 1;=0A+=0A+ return 0;=0A+}=0A+=0A+static void age=5Ffs(ffsb=5Ff= s=5Ft * fs, double utilization)=0A+{=0A+ ffsb=5Fbarrier=5Ft barrier;=0A+ pt= hread=5Ft thread;=0A+ struct poll=5Fdata pdata;=0A+ ffsb=5Ftg=5Ft *tg =3D f= s=5Fget=5Faging=5Ftg(fs);=0A+ tg=5Frun=5Fparams=5Ft params;=0A+ ffsb=5Fconf= ig=5Ft fc;=0A+=0A+ printf("aging fs %s from %.2lf to %.2lf\n", fs->basedir,= =0A+ fs->start=5Ffsutil, utilization);=0A+ ffsb=5Fbarrier=5Finit(&ba= rrier, tg=5Fget=5Fnumthreads(tg));=0A+=0A+ init=5Fffsb=5Fconfig=5F1fs(&fc, = fs, tg);=0A+=0A+ pdata.fs =3D fs;=0A+ pdata.util =3D utilization;=0A+=0A+ p= arams.tg =3D tg;=0A+ params.poll=5Ffn =3D fs=5Fget=5Futil;=0A+ params.poll= =5Fdata =3D &pdata;=0A+ params.wait=5Ftime =3D 1;=0A+ params.fc =3D &fc;=0A= +=0A+ params.tg=5Fbarrier =3D NULL;=0A+ params.thread=5Fbarrier =3D &barrie= r;=0A+=0A+ /* Call back into ops, setup for aging */=0A+ ops=5Fsetup=5Fage(= fs);=0A+=0A+ /* Throw in some files to start off, so there's something */= =0A+ add=5Ffiles(fs, &fs->fill, 10, 0, 0, fs->age=5Fblocksize);=0A+=0A+ pth= read=5Fcreate(&thread, NULL, tg=5Frun, ¶ms);=0A+ pthread=5Fjoin(thread,= NULL);=0A+}=0A+=0A+void fs=5Fset=5Fcreate=5Fblocksize(ffsb=5Ffs=5Ft * fs, = uint32=5Ft blocksize)=0A+{=0A+ fs->create=5Fblocksize =3D blocksize;=0A+}= =0A+=0A+void fs=5Fset=5Fage=5Fblocksize(ffsb=5Ffs=5Ft * fs, uint32=5Ft bloc= ksize)=0A+{=0A+ fs->age=5Fblocksize =3D blocksize;=0A+}=0A+=0A+uint32=5Ft f= s=5Fget=5Fcreate=5Fblocksize(ffsb=5Ffs=5Ft * fs)=0A+{=0A+ return fs->create= =5Fblocksize;=0A+}=0A+=0A+uint32=5Ft fs=5Fget=5Fage=5Fblocksize(ffsb=5Ffs= =5Ft * fs)=0A+{=0A+ return fs->age=5Fblocksize;=0A+}=0A+=0A+char *fs=5Fget= =5Fbasedir(ffsb=5Ffs=5Ft * fs)=0A+{=0A+ return fs->basedir;=0A+}=0A+=0A+uin= t32=5Ft fs=5Fget=5Fnumstartfiles(ffsb=5Ffs=5Ft * fs)=0A+{=0A+ return fs->nu= m=5Fstart=5Ffiles;=0A+}=0A+=0A+uint32=5Ft fs=5Fget=5Fnumdirs(ffsb=5Ffs=5Ft = * fs)=0A+{=0A+ return fs->num=5Fdirs;=0A+}=0A+=0A+int fs=5Fget=5Flibcio(ffs= b=5Ffs=5Ft * fs)=0A+{=0A+ return fs->flags & FFSB=5FFS=5FLIBCIO;=0A+}=0A+= =0A+void fs=5Fset=5Flibcio(ffsb=5Ffs=5Ft * fs, int lio)=0A+{=0A+ if (lio)= =0A+ fs->flags |=3D FFSB=5FFS=5FLIBCIO;=0A+ else=0A+ fs->flags &=3D ~0 & = ~FFSB=5FFS=5FLIBCIO;=0A+}=0A+=0A+int fs=5Fget=5Fdirectio(ffsb=5Ffs=5Ft * fs= )=0A+{=0A+ return fs->flags & FFSB=5FFS=5FDIRECTIO;=0A+}=0A+=0A+void fs=5Fs= et=5Fdirectio(ffsb=5Ffs=5Ft * fs, int dio)=0A+{=0A+ if (dio)=0A+ fs->flags= |=3D FFSB=5FFS=5FDIRECTIO;=0A+ else=0A+ fs->flags &=3D ~0 & ~FFSB=5FFS=5F= DIRECTIO;=0A+}=0A+=0A+int fs=5Fget=5Falignio(ffsb=5Ffs=5Ft * fs)=0A+{=0A+ r= eturn fs->flags & FFSB=5FFS=5FALIGNIO4K;=0A+}=0A+=0A+void fs=5Fset=5Faligni= o(ffsb=5Ffs=5Ft * fs, int aio)=0A+{=0A+ if (aio)=0A+ fs->flags |=3D FFSB= =5FFS=5FALIGNIO4K;=0A+ else=0A+ fs->flags &=3D ~0 & ~FFSB=5FFS=5FALIGNIO4K= ;=0A+}=0A+=0A+int fs=5Fget=5Freuse=5Ffs(ffsb=5Ffs=5Ft * fs)=0A+{=0A+ return= fs->flags & FFSB=5FFS=5FREUSE=5FFS;=0A+}=0A+=0A+void fs=5Fset=5Freuse=5Ffs= (ffsb=5Ffs=5Ft * fs, int rfs)=0A+{=0A+ if (rfs)=0A+ fs->flags |=3D FFSB=5F= FS=5FREUSE=5FFS;=0A+ else=0A+ fs->flags &=3D ~0 & ~FFSB=5FFS=5FREUSE=5FFS;= =0A+}=0A+=0A+struct benchfiles *fs=5Fget=5Fdatafiles(ffsb=5Ffs=5Ft * fs)=0A= +{=0A+ return &fs->files;=0A+}=0A+=0A+struct benchfiles *fs=5Fget=5Fmetafil= es(ffsb=5Ffs=5Ft * fs)=0A+{=0A+ return &fs->meta;=0A+}=0A+=0A+struct benchf= iles *fs=5Fget=5Fagefiles(ffsb=5Ffs=5Ft * fs)=0A+{=0A+ return &fs->fill;=0A= +}=0A+=0A+void fs=5Fset=5Faging=5Ftg(ffsb=5Ffs=5Ft * fs, struct ffsb=5Ftg *= tg, double util)=0A+{=0A+ fs->aging=5Ftg =3D tg;=0A+ fs->age=5Ffs =3D 1;=0A= + fs->desired=5Ffsutil =3D util;=0A+}=0A+=0A+struct ffsb=5Ftg *fs=5Fget=5Fa= ging=5Ftg(ffsb=5Ffs=5Ft * fs)=0A+{=0A+ return fs->aging=5Ftg;=0A+}=0A+=0A+i= nt fs=5Fget=5Fagefs(ffsb=5Ffs=5Ft * fs)=0A+{=0A+ return fs->age=5Ffs;=0A+}= =0A+=0A+/* TODO: Implement this!!!*/=0A+void fs=5Fset=5Fnum=5Fage=5Fdirs(ff= sb=5Ffs=5Ft * fs, uint32=5Ft numdirs)=0A+{=0A+ fs->num=5Fage=5Fdirs =3D num= dirs;=0A+}=0A+=0A+void fs=5Fset=5Fopdata(ffsb=5Ffs=5Ft * fs, void *data, un= signed opnum)=0A+{=0A+ fs->op=5Fdata[opnum] =3D data;=0A+}=0A+=0A+void *fs= =5Fget=5Fopdata(ffsb=5Ffs=5Ft * fs, unsigned opnum)=0A+{=0A+ return fs->op= =5Fdata[opnum];=0A+}=0A+=0A+void fs=5Fset=5Fmin=5Ffilesize(ffsb=5Ffs=5Ft * = fs, uint64=5Ft size)=0A+{=0A+ fs->minfilesize =3D size;=0A+}=0A+=0A+void fs= =5Fset=5Fmax=5Ffilesize(ffsb=5Ffs=5Ft * fs, uint64=5Ft size)=0A+{=0A+ fs->m= axfilesize =3D size;=0A+}=0A+=0A+uint64=5Ft fs=5Fget=5Fmin=5Ffilesize(ffsb= =5Ffs=5Ft * fs)=0A+{=0A+ return fs->minfilesize;=0A+}=0A+=0A+uint64=5Ft fs= =5Fget=5Fmax=5Ffilesize(ffsb=5Ffs=5Ft * fs)=0A+{=0A+ return fs->maxfilesize= ;=0A+}=0A+=0A+double fs=5Fget=5Fdesired=5Ffsutil(ffsb=5Ffs=5Ft * fs)=0A+{= =0A+ return fs->desired=5Ffsutil;=0A+}=0A+=0A+void fs=5Fprint=5Fconfig(ffsb= =5Ffs=5Ft * fs)=0A+{=0A+ char buf[256];=0A+=0A+ printf("FileSystem %s\n", f= s->basedir);=0A+ printf("=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D\n");=0A+ printf("\t= num=5Fdirs =3D %u\n", fs->num=5Fdirs);=0A+ printf("\t starting fil= es =3D %u\n", fs->num=5Fstart=5Ffiles);=0A+ printf("\t\n");=0A+ if (fs->n= um=5Fweights) {=0A+ int i;=0A+ printf("\t Fileset weight:\n");=0A+ for (= i =3D 0; i < fs->num=5Fweights; i++)=0A+ printf("\t\t %12llu (%6s) -> %u = (%.2f\%)\n",=0A+ fs->size=5Fweights[i].size,=0A+ ffsb=5Fp= rintsize(buf, fs->size=5Fweights[i].size,=0A+ 256), fs->size=5Fwe= ights[i].weight,=0A+ ((float)fs->size=5Fweights[i].weight /=0A+ = (float)fs->sum=5Fweights) * 100);=0A+ } else {=0A+ printf("\t min file si= ze =3D %llu\t(%s)\n", fs->minfilesize,=0A+ ffsb=5Fprintsize(buf,= fs->minfilesize, 256));=0A+ printf("\t max file size =3D %llu\t(%s)\n"= , fs->maxfilesize,=0A+ ffsb=5Fprintsize(buf, fs->maxfilesize, 256))= ;=0A+ }=0A+ printf("\t directio =3D %s\n", (fs->flags & FFSB=5FFS= =5FDIRECTIO) ?=0A+ "on" : "off");=0A+ printf("\t alignedio = =3D %s\n", (fs->flags & FFSB=5FFS=5FALIGNIO4K) ?=0A+ "on" : "off");= =0A+ printf("\t bufferedio =3D %s\n", (fs->flags & FFSB=5FFS=5FLIBCIO= ) ?=0A+ "on" : "off");=0A+ printf("\t\n");=0A+ printf("\t aging is %= s\n", (fs->age=5Ffs) ? "on" : "off");=0A+ printf("\t current utilization = =3D %.2f\%\n",=0A+ getfsutil(fs->basedir) * 100);=0A+ if (fs->age=5F= fs) {=0A+ printf("\t desired utilization =3D %.2lf%\n",=0A+ fs->de= sired=5Ffsutil * 100);=0A+ printf("\t \n");=0A+ tg=5Fprint=5Fconfig=5Fagi= ng(fs->aging=5Ftg, fs->basedir);=0A+ }=0A+ printf("\t\n");=0A+}=0A+=0A+int = fs=5Fneeds=5Fstats(ffsb=5Ffs=5Ft * fs, syscall=5Ft sys)=0A+{=0A+ return (fs= !=3D NULL) ? (int)fs->fsd.config : 0;=0A+}=0A+=0A+void fs=5Fadd=5Fstat(ffs= b=5Ffs=5Ft * fs, syscall=5Ft sys, uint32=5Ft val)=0A+{=0A+ if (fs)=0A+ ffs= b=5Fadd=5Fdata(&fs->fsd, sys, val);=0A+}=0Adiff --git a/utils/ffsb-6.0-rc2/= ffsb=5Ffs.h b/utils/ffsb-6.0-rc2/ffsb=5Ffs.h=0Anew file mode 100644=0Aindex= 0000000..e811fa8=0A--- /dev/null=0A+++ b/utils/ffsb-6.0-rc2/ffsb=5Ffs.h=0A= @@ -0,0 +1,184 @@=0A+/*=0A+ * Copyright (c) International Business Machin= es Corp., 2001-2004=0A+ *=0A+ * This program is free software; you can r= edistribute it and/or modify=0A+ * it under the terms of the GNU General = Public License as published by=0A+ * the Free Software Foundation; either= version 2 of the License, or=0A+ * (at your option) any later version.= =0A+ *=0A+ * This program is distributed in the hope that it will be usef= ul,=0A+ * but WITHOUT ANY WARRANTY; without even the implied warranty of= =0A+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See=0A+ * = the GNU General Public License for more details.=0A+ *=0A+ * You should h= ave received a copy of the GNU General Public License=0A+ * along with th= is program; if not, write to the Free Software=0A+ * Foundation, Inc., 5= 1 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA=0A+ */=0A+#ifndef= =5FFFSB=5FFS=5FH=5F=0A+#define =5FFFSB=5FFS=5FH=5F=0A+=0A+#include "fileli= st.h"=0A+#include "ffsb=5Fop.h"=0A+#include "ffsb=5Ftg.h"=0A+#include "ffsb= =5Fstats.h"=0A+=0A+/* These are the base names for the different file types= on a=0A+ * filesystem.=0A+*/=0A+#define FILES=5FBASE "data"=0A+#define MET= A=5FBASE "meta"=0A+#define AGE=5FBASE "fill"=0A+=0A+struct ffsb=5Ftg;=0A= +=0A+typedef struct size=5Fweight {=0A+ uint64=5Ft size;=0A+ int weight;=0A= +} size=5Fweight=5Ft;=0A+=0A+/* A filesystem object=0A+ * --=0A+ * represen= ts a filesystem on disk, and maintains access to the different=0A+ * direct= ories within it. Currently there are two directories created in=0A+ * each= filesystem: data and meta=0A+ * "data" contains the aging files and the wo= rking set files=0A+ * "meta" only contains directories for use in the metad= ata operation=0A+ *=0A+ * Aging=0A+ * This object contains methods for agin= g the filesystem if needed=0A+ * a properly set up threadgroup is supplied = by the parser which is run=0A+ * until the filesystem reaches the desired u= tilization=0A+ *=0A+ * Operations=0A+ * The semantics of a ffsb operation a= re always such that they occur on=0A+ * a filesystem, so the filesystem als= o hold operation specific data as=0A+ * an opaque type=0A+ * One example of= how this is useful is the aging process, where a different=0A+ * set of fi= les is operated upon than in the regular benchmark and the=0A+ * op=5Fdata = is pointing to the "fill" set rather than the "files" set=0A+ */=0A+=0A+typ= edef struct ffsb=5Ffs {=0A+ char *basedir;=0A+=0A+ struct benchfiles files;= =0A+ struct benchfiles meta;=0A+ struct benchfiles fill;=0A+=0A+ int flags;= =0A+#define FFSB=5FFS=5FDIRECTIO (1 << 0)=0A+#define FFSB=5FFS=5FALIGNIO4= K (1 << 1)=0A+#define FFSB=5FFS=5FLIBCIO (1 << 2)=0A+#define FFSB=5FFS= =5FREUSE=5FFS (1 << 3)=0A+=0A+ /* These pararmeters pertain to files in t= he files and fill=0A+ * dirs. Meta dir only contains directories, startin= g with 0.=0A+ */=0A+ uint32=5Ft num=5Fdirs;=0A+ uint32=5Ft num=5Fstart=5Ff= iles;=0A+ uint64=5Ft minfilesize, maxfilesize;=0A+ double init=5Ffsutil;=0A= + uint64=5Ft init=5Fsize;=0A+=0A+ /* These two parameters specify the block= size to use for=0A+ * writes when creating and aging the fs.=0A+ */=0A+ u= int32=5Ft create=5Fblocksize, age=5Fblocksize;=0A+#define FFSB=5FFS=5FDEFAU= LT=5FCREATE=5FBLOCKSIZE 4096=0A+#define FFSB=5FFS=5FDEFAULT=5FAGE=5FBLOCKSI= ZE 4096=0A+=0A+ double start=5Ffsutil;=0A+=0A+ /* Aging data/parameters = */=0A+ double desired=5Ffsutil;=0A+ int age=5Ffs;=0A+ uint32=5Ft num=5Fage= =5Fdirs;=0A+=0A+ /* Use an ffsb thread group to do the aging work */=0A+ st= ruct ffsb=5Ftg *aging=5Ftg;=0A+=0A+ /* If a particular operation wants to m= aintain fs-specific=0A+ * data, it should use this array. Naturally, the = ops must=0A+ * synchonize access to the data for now, they are all just=0A= + * putting pointers to a particular benchfiles struct here,=0A+ * which = is already sync'ed=0A+ */=0A+ void *op=5Fdata[FFSB=5FNUMOPS];=0A+=0A+ /* p= er-fs stats */=0A+ ffsb=5Fstatsc=5Ft fsc;=0A+ ffsb=5Fstatsd=5Ft fsd;=0A+=0A= + size=5Fweight=5Ft *size=5Fweights;=0A+ unsigned num=5Fweights;=0A+ unsign= ed sum=5Fweights;=0A+=0A+} ffsb=5Ffs=5Ft;=0A+=0A+/* Set up the structure, z= eros everything out and dups the basedir=0A+ * string=0A+ */=0A+void init= =5Fffsb=5Ffs(ffsb=5Ffs=5Ft *fs, char *basedir, uint32=5Ft num=5Fdata=5Fdirs= ,=0A+ uint32=5Ft num=5Fstart=5Ffiles, unsigned flags);=0A+=0A+/* Does no= t remove files/dirs on disk, only frees up data=0A+ * structures=0A+ */=0A+= void destroy=5Fffsb=5Ffs(ffsb=5Ffs=5Ft *fs);=0A+=0A+/* Set up the files and= such on the disk including aging if requested.=0A+ * Should call back into= each op, which initialize its op=5Fdata[]=0A+ * entry. Aging is done by s= tarting the aging=5Ftg thread group, and=0A+ * waiting until the desired ut= ilization is achieved. It can (and is)=0A+ * be used with pthread=5Fcreate= (). Parameter should be a ffsb=5Ffs=5Ft * ,=0A+ * and it will return the s= ame type=0A+ */=0A+void *construct=5Fffsb=5Ffs(void *ffsb=5Ffs=5Fptr);=0A+= =0A+/* Shallow clone, original should simply be discarded (not destroyed).= =0A+ * Generally should only be used by parser to write into the config=0A+= * object=0A+ */=0A+void clone=5Fffsb=5Ffs(ffsb=5Ffs=5Ft *target, ffsb=5Ffs= =5Ft *original);=0A+=0A+void fs=5Fprint=5Fconfig(ffsb=5Ffs=5Ft *fs);=0A+=0A= +char *fs=5Fget=5Fbasedir(ffsb=5Ffs=5Ft *fs);=0A+int fs=5Fget=5Fdirectio(ff= sb=5Ffs=5Ft *fs);=0A+void fs=5Fset=5Fdirectio(ffsb=5Ffs=5Ft *fs, int dio);= =0A+int fs=5Fget=5Falignio(ffsb=5Ffs=5Ft *fs);=0A+void fs=5Fset=5Falignio(f= fsb=5Ffs=5Ft *fs, int aio);=0A+int fs=5Fget=5Flibcio(ffsb=5Ffs=5Ft *fs);=0A= +void fs=5Fset=5Flibcio(ffsb=5Ffs=5Ft *fs, int lio);=0A+int fs=5Fget=5Freus= e=5Ffs(ffsb=5Ffs=5Ft *fs);=0A+void fs=5Fset=5Freuse=5Ffs(ffsb=5Ffs=5Ft *fs,= int rfs);=0A+=0A+struct benchfiles *fs=5Fget=5Fdatafiles(ffsb=5Ffs=5Ft *fs= );=0A+struct benchfiles *fs=5Fget=5Fmetafiles(ffsb=5Ffs=5Ft *fs);=0A+struct= benchfiles *fs=5Fget=5Fagefiles(ffsb=5Ffs=5Ft *fs);=0A+=0A+void fs=5Fset= =5Faging=5Ftg(ffsb=5Ffs=5Ft *fs, struct ffsb=5Ftg *, double util);=0A+struc= t ffsb=5Ftg *fs=5Fget=5Faging=5Ftg(ffsb=5Ffs=5Ft *fs);=0A+int fs=5Fget=5Fag= efs(ffsb=5Ffs=5Ft *fs);=0A+=0A+void fs=5Fset=5Fopdata(ffsb=5Ffs=5Ft *fs, vo= id *data, unsigned opnum);=0A+void *fs=5Fget=5Fopdata(ffsb=5Ffs=5Ft *fs, un= signed opnum);=0A+void fs=5Fset=5Fmin=5Ffilesize(ffsb=5Ffs=5Ft *fs, uint64= =5Ft size);=0A+void fs=5Fset=5Fmax=5Ffilesize(ffsb=5Ffs=5Ft *fs, uint64=5Ft= size);=0A+void fs=5Fset=5Fcreate=5Fblocksize(ffsb=5Ffs=5Ft *fs, uint32=5Ft= blocksize);=0A+void fs=5Fset=5Fage=5Fblocksize(ffsb=5Ffs=5Ft *fs, uint32= =5Ft blocksize);=0A+uint32=5Ft fs=5Fget=5Fcreate=5Fblocksize(ffsb=5Ffs=5Ft = *fs);=0A+uint32=5Ft fs=5Fget=5Fage=5Fblocksize(ffsb=5Ffs=5Ft *fs);=0A+uint6= 4=5Ft fs=5Fget=5Fmin=5Ffilesize(ffsb=5Ffs=5Ft *fs);=0A+uint64=5Ft fs=5Fget= =5Fmax=5Ffilesize(ffsb=5Ffs=5Ft *fs);=0A+uint32=5Ft fs=5Fget=5Fnumstartfile= s(ffsb=5Ffs=5Ft *fs);=0A+uint32=5Ft fs=5Fget=5Fnumdirs(ffsb=5Ffs=5Ft *fs);= =0A+=0A+double fs=5Fget=5Fdesired=5Ffsutil(ffsb=5Ffs=5Ft *fs);=0A+=0A+/* Fo= r these two, fs =3D=3D NULL is OK */=0A+int fs=5Fneeds=5Fstats(ffsb=5Ffs=5F= t *fs, syscall=5Ft s);=0A+void fs=5Fadd=5Fstat(ffsb=5Ffs=5Ft *fs, syscall= =5Ft sys, uint32=5Ft val);=0A+=0A+#endif /* =5FFFSB=5FFS=5FH=5F */=0Adiff -= -git a/utils/ffsb-6.0-rc2/ffsb=5Fop.c b/utils/ffsb-6.0-rc2/ffsb=5Fop.c=0Ane= w file mode 100644=0Aindex 0000000..ba05fba=0A--- /dev/null=0A+++ b/utils/f= fsb-6.0-rc2/ffsb=5Fop.c=0A@@ -0,0 +1,192 @@=0A+/*=0A+ * Copyright (c) Int= ernational Business Machines Corp., 2001-2004=0A+ *=0A+ * This program is= free software; you can redistribute it and/or modify=0A+ * it under the= terms of the GNU General Public License as published by=0A+ * the Free S= oftware Foundation; either version 2 of the License, or=0A+ * (at your op= tion) any later version.=0A+ *=0A+ * This program is distributed in the h= ope that it will be useful,=0A+ * but WITHOUT ANY WARRANTY; without even= the implied warranty of=0A+ * MERCHANTABILITY or FITNESS FOR A PARTICULA= R PURPOSE. See=0A+ * the GNU General Public License for more details.=0A= + *=0A+ * You should have received a copy of the GNU General Public Licen= se=0A+ * along with this program; if not, write to the Free Software=0A+= * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-13= 01 USA=0A+ */=0A+#include =0A+#include =0A+#include =0A+=0A+#include "ffsb=5Fop.h"=0A+#include "fileops.h"=0A+#include "m= etaops.h"=0A+=0A+ffsb=5Fop=5Ft ffsb=5Fop=5Flist[] =3D { {0, "read", ffsb=5F= readfile, READ, fop=5Fbench, NULL}=0A+,=0A+{1, "readall", ffsb=5Freadall, R= EAD, fop=5Fbench, NULL}=0A+,=0A+{2, "write", ffsb=5Fwritefile, WRITE, fop= =5Fbench, NULL}=0A+,=0A+{3, "create", ffsb=5Fcreatefile, WRITE, fop=5Fbench= , fop=5Fage}=0A+,=0A+{4, "append", ffsb=5Fappendfile, WRITE, fop=5Fbench, f= op=5Fage}=0A+,=0A+{5, "delete", ffsb=5Fdeletefile, NA, fop=5Fbench, fop=5Fa= ge}=0A+,=0A+{6, "metaop", ffsb=5Fmetaops, NA, metaops=5Fmetadir, NULL}=0A+,= =0A+{7, "createdir", ffsb=5Fcreatedir, NA, fop=5Fbench, NULL}=0A+,=0A+{8, "= stat", ffsb=5Fstat, NA, fop=5Fbench, NULL}=0A+,=0A+{9, "writeall", ffsb=5Fw= riteall, WRITE, fop=5Fbench, NULL}=0A+,=0A+{10, "writeall=5Ffsync", ffsb=5F= writeall=5Ffsync, WRITE, fop=5Fbench, NULL}=0A+,=0A+{11, "open=5Fclose", ff= sb=5Fopen=5Fclose, NA, fop=5Fbench, NULL}=0A+,=0A+{12, "write=5Ffsync", ffs= b=5Fwritefile=5Ffsync, WRITE, fop=5Fbench, NULL}=0A+,=0A+{13, "create=5Ffsy= nc", ffsb=5Fcreatefile=5Ffsync, WRITE, fop=5Fbench, fop=5Fage}=0A+,=0A+{14,= "append=5Ffsync", ffsb=5Fappendfile=5Ffsync, WRITE, fop=5Fbench, fop=5Fage= }=0A+,=0A+};=0A+=0A+void init=5Fffsb=5Fop=5Fresults(ffsb=5Fop=5Fresults=5Ft= * results)=0A+{=0A+ memset(results, 0, sizeof(ffsb=5Fop=5Fresults=5Ft));= =0A+}=0A+=0A+static int exclusive=5Fop(ffsb=5Fop=5Fresults=5Ft * results, u= nsigned int op=5Fnum)=0A+{=0A+ int i;=0A+ int ret =3D 0;=0A+ for (i =3D 0; = i < FFSB=5FNUMOPS; i++) {=0A+ if (i =3D=3D op=5Fnum)=0A+ continue;=0A+ = ret +=3D results->ops[i];=0A+ }=0A+=0A+ if (ret)=0A+ return 0;=0A+ return = 1;=0A+}=0A+=0A+static void generic=5Fop=5Fprint(char *name, unsigned num, d= ouble op=5Fpcnt,=0A+ double weigth=5Fpcnt, double runtime, char *tpu= t)=0A+{=0A+ printf("%20s : %12u\t%10.2lf\t%6.3lf%%\t\t%6.3lf%%\t %11s\n",= =0A+ name, num, num / runtime, op=5Fpcnt, weigth=5Fpcnt, tput);=0A+}= =0A+=0A+static void print=5Fop=5Fresults(unsigned int op=5Fnum, ffsb=5Fop= =5Fresults=5Ft * results,=0A+ double runtime, unsigned total=5Fops,= =0A+ unsigned total=5Fweight)=0A+{=0A+ char buf[256];=0A+=0A+ double= op=5Fpcnt =3D 100 * (double)results->ops[op=5Fnum] / (double)total=5Fops;= =0A+ double weight=5Fpcnt =3D 100 * (double)results->op=5Fweight[op=5Fnum] = /=0A+ (double)total=5Fweight;=0A+ if (ffsb=5Fop=5Flist[op=5Fnum].throug= hput) {=0A+ ffsb=5Fprintsize(buf, results->bytes[op=5Fnum] / runtime, 256)= ;=0A+ sprintf(buf, "%s/sec\0", buf);=0A+ } else=0A+ sprintf(buf, "NA\0");= =0A+ generic=5Fop=5Fprint(ffsb=5Fop=5Flist[op=5Fnum].op=5Fname, results->op= s[op=5Fnum],=0A+ op=5Fpcnt, weight=5Fpcnt, runtime, buf);=0A+}=0A+=0A+#i= f 0=0A+static void print=5Fop=5Fthroughput(unsigned int op=5Fnum,=0A+ ff= sb=5Fop=5Fresults=5Ft * results, double runtime)=0A+{=0A+ if (ffsb=5Fop=5Fl= ist[op=5Fnum].op=5Fexl=5Fprint=5Ffn !=3D NULL)=0A+ ffsb=5Fop=5Flist[op=5Fn= um].op=5Fexl=5Fprint=5Ffn(results, runtime, op=5Fnum);=0A+}=0A+#endif=0A+= =0A+void print=5Fresults(struct ffsb=5Fop=5Fresults *results, double runtim= e)=0A+{=0A+ int i;=0A+ uint64=5Ft total=5Fops =3D 0;=0A+ uint64=5Ft total= =5Fweight =3D 0;=0A+ char buf[256];=0A+=0A+ for (i =3D 0; i < FFSB=5FNUMOPS= ; i++) {=0A+ total=5Fops +=3D results->ops[i];=0A+ total=5Fweight +=3D re= sults->op=5Fweight[i];=0A+ }=0A+=0A+ printf=0A+ (" Op Name = Transactions\t Trans/sec\t% Trans\t % Op Weight\t Throughput\n");=0A= + printf=0A+ (" =3D=3D=3D=3D=3D=3D=3D =3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D\t =3D=3D=3D=3D=3D=3D=3D=3D=3D\t=3D=3D=3D=3D=3D=3D=3D\t = =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D\t =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D\n");= =0A+ for (i =3D 0; i < FFSB=5FNUMOPS; i++)=0A+ if (results->ops[i] !=3D 0)= =0A+ print=5Fop=5Fresults(i, results, runtime, total=5Fops,=0A+ tota= l=5Fweight);=0A+ printf("-\n%.2lf Transactions per Second\n\n",=0A+ = (double)total=5Fops / runtime);=0A+=0A+ if (results->write=5Fbytes || resul= ts->read=5Fbytes)=0A+ printf("Throughput Results\n=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D\n");=0A+ if (results->read=5Fbytes) {=0A+= ffsb=5Fprintsize(buf, results->read=5Fbytes / runtime, 256);=0A+ printf(= "Read Throughput: %s/sec\n", buf);=0A+ }=0A+ if (results->write=5Fbytes) {= =0A+ ffsb=5Fprintsize(buf, results->write=5Fbytes / runtime, 256);=0A+ pr= intf("Write Throughput: %s/sec\n", buf);=0A+ }=0A+}=0A+=0A+char *op=5Fget= =5Fname(int opnum)=0A+{=0A+ return ffsb=5Fop=5Flist[opnum].op=5Fname;=0A+}= =0A+=0A+void ops=5Fsetup=5Fbench(ffsb=5Ffs=5Ft * fs)=0A+{=0A+ int i;=0A+ fo= r (i =3D 0; i < FFSB=5FNUMOPS; i++)=0A+ ffsb=5Fop=5Flist[i].op=5Fbench(fs,= i);=0A+}=0A+=0A+void ops=5Fsetup=5Fage(ffsb=5Ffs=5Ft * fs)=0A+{=0A+ int i;= =0A+ for (i =3D 0; i < FFSB=5FNUMOPS; i++)=0A+ if (ffsb=5Fop=5Flist[i].op= =5Fage)=0A+ ffsb=5Fop=5Flist[i].op=5Fage(fs, i);=0A+}=0A+=0A+int ops=5Ffi= nd=5Fop(char *opname)=0A+{=0A+ int i;=0A+ for (i =3D 0; i < FFSB=5FNUMOPS; = i++)=0A+ if (!strcmp(opname, ffsb=5Fop=5Flist[i].op=5Fname))=0A+ return = i;=0A+ return -1;=0A+}=0A+=0A+void add=5Fresults(struct ffsb=5Fop=5Fresults= *target, struct ffsb=5Fop=5Fresults *src)=0A+{=0A+ int i;=0A+ target->read= =5Fbytes +=3D src->read=5Fbytes;=0A+ target->write=5Fbytes +=3D src->write= =5Fbytes;=0A+=0A+ for (i =3D 0; i < FFSB=5FNUMOPS; i++) {=0A+ target->ops[= i] +=3D src->ops[i];=0A+ target->op=5Fweight[i] +=3D src->op=5Fweight[i];= =0A+ target->bytes[i] +=3D src->bytes[i];=0A+ }=0A+}=0A+=0A+void do=5Fop(s= truct ffsb=5Fthread *ft, struct ffsb=5Ffs *fs, unsigned op=5Fnum)=0A+{=0A+ = ffsb=5Fop=5Flist[op=5Fnum].op=5Ffn(ft, fs, op=5Fnum);=0A+}=0Adiff --git a/u= tils/ffsb-6.0-rc2/ffsb=5Fop.h b/utils/ffsb-6.0-rc2/ffsb=5Fop.h=0Anew file m= ode 100644=0Aindex 0000000..a0064a5=0A--- /dev/null=0A+++ b/utils/ffsb-6.0-= rc2/ffsb=5Fop.h=0A@@ -0,0 +1,102 @@=0A+/*=0A+ * Copyright (c) Internation= al Business Machines Corp., 2001-2004=0A+ *=0A+ * This program is free so= ftware; you can redistribute it and/or modify=0A+ * it under the terms o= f the GNU General Public License as published by=0A+ * the Free Software = Foundation; either version 2 of the License, or=0A+ * (at your option) an= y later version.=0A+ *=0A+ * This program is distributed in the hope that= it will be useful,=0A+ * but WITHOUT ANY WARRANTY; without even the imp= lied warranty of=0A+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOS= E. See=0A+ * the GNU General Public License for more details.=0A+ *=0A+ = * You should have received a copy of the GNU General Public License=0A+ *= along with this program; if not, write to the Free Software=0A+ * Fou= ndation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA= =0A+ */=0A+#ifndef =5FFFSB=5FOP=5FH=5F=0A+#define =5FFFSB=5FOP=5FH=5F=0A+= =0A+#include =0A+#include =0A+#include = =0A+=0A+struct ffsb=5Fop=5Fresults;=0A+struct ffsb=5Fthread;=0A+struct ffsb= =5Ffs;=0A+=0A+#define NA 0x00=0A+#define READ 0x01=0A+#define WRITE 0x02=0A= +=0A+/* This file handles all of the operations FFSB supports. It has=0A+ = * tight interactions with the filesystem objects, but is otherwise=0A+ * pr= etty abstract.=0A+ */=0A+=0A+/* The op callback */=0A+typedef void (*ffsb= =5Fop=5Ffn)(struct ffsb=5Fthread *, struct ffsb=5Ffs *,=0A+ unsigned= op=5Fnum);=0A+=0A+/* Operation results printing function */=0A+typedef voi= d (*ffsb=5Fop=5Fprint=5Ffn)(struct ffsb=5Fop=5Fresults *, double secs,=0A+ = unsigned int op=5Fnum);=0A+=0A+/* Operation specific initialization fo= r a filesystem */=0A+typedef void (*ffsb=5Fop=5Ffs=5Ffn)(struct ffsb=5Ffs *= , unsigned opnum);=0A+=0A+typedef struct ffsb=5Fop {=0A+ unsigned int op=5F= id;=0A+ char *op=5Fname;=0A+ ffsb=5Fop=5Ffn op=5Ffn;=0A+=0A+ unsigned int t= hroughput;=0A+ /* The point of these two fields is to determine which set o= f=0A+ * files are being worked on. Currently either data, meta, or=0A+ *= aging. Data and meta are mutually exclusive, so we only=0A+ * need two f= uncs.=0A+ */=0A+ ffsb=5Fop=5Ffs=5Ffn op=5Fbench;=0A+ ffsb=5Fop=5Ffs=5Ffn o= p=5Fage;=0A+} ffsb=5Fop=5Ft;=0A+=0A+/* List of all operations, located in f= fsb=5Fop.c */=0A+extern ffsb=5Fop=5Ft ffsb=5Fop=5Flist[];=0A+=0A+/* This *m= ust* be updated when a new operation is added or one is=0A+ * removed sever= al other structures use it for statically sized arrays=0A+ */=0A+#define FF= SB=5FNUMOPS (15)=0A+=0A+/* Returns index of an op.=0A+ * Returns -1 if opna= me isn't found, and its case sensitive :)=0A+ */=0A+int ops=5Ffind=5Fop(cha= r *opname);=0A+=0A+typedef struct ffsb=5Fop=5Fresults {=0A+ /* Count of how= many times each op was run */=0A+ unsigned int ops[FFSB=5FNUMOPS];=0A+ uns= igned int op=5Fweight[FFSB=5FNUMOPS];=0A+ uint64=5Ft bytes[FFSB=5FNUMOPS];= =0A+=0A+ uint64=5Ft read=5Fbytes;=0A+ uint64=5Ft write=5Fbytes;=0A+} ffsb= =5Fop=5Fresults=5Ft;=0A+=0A+void init=5Fffsb=5Fop=5Fresults(struct ffsb=5Fo= p=5Fresults *);=0A+void print=5Fresults(struct ffsb=5Fop=5Fresults *results= , double runtime);=0A+char *op=5Fget=5Fname(int opnum);=0A+=0A+/* Setup the= ops for the benchmark */=0A+void ops=5Fsetup=5Fbench(struct ffsb=5Ffs *fs)= ;=0A+=0A+/* setup the ops for aging the filesystem */=0A+void ops=5Fsetup= =5Fage(struct ffsb=5Ffs *fs);=0A+=0A+void add=5Fresults(struct ffsb=5Fop=5F= results *target, struct ffsb=5Fop=5Fresults *src);=0A+=0A+/* Run this op, u= sing this thread state, on this filesystem */=0A+void do=5Fop(struct ffsb= =5Fthread *ft, struct ffsb=5Ffs *fs, unsigned op=5Fnum);=0A+=0A+#endif /* = =5FFFSB=5FOP=5FH=5F */=0Adiff --git a/utils/ffsb-6.0-rc2/ffsb=5Fstats.c b/u= tils/ffsb-6.0-rc2/ffsb=5Fstats.c=0Anew file mode 100644=0Aindex 0000000..2b= 3a3be=0A--- /dev/null=0A+++ b/utils/ffsb-6.0-rc2/ffsb=5Fstats.c=0A@@ -0,0 += 1,240 @@=0A+#include =0A+#include =0A+#include =0A+#include "ffsb=5Fstats.h"=0A+#include "util.h"=0A+=0A+char *syscall=5F= names[] =3D {=0A+ "open",=0A+ "read",=0A+ "write",=0A+ "create",=0A+ "lseek= ",=0A+ "unlink",=0A+ "close",=0A+ "stat",=0A+};=0A+=0A+/* yuck, just for th= e parser anyway.. */=0A+int ffsb=5Fstats=5Fstr2syscall(char *str, syscall= =5Ft * sys)=0A+{=0A+ int i;=0A+ int ret;=0A+ for (i =3D 0; i < FFSB=5FNUM= =5FSYSCALLS; i++) {=0A+ ret =3D strncasecmp(syscall=5Fnames[i], str,=0A+ = strlen(syscall=5Fnames[i]));=0A+ /* printf("%s =3D syscall=5Fnames[%d]= vs %str ret =3D %d\n",=0A+ * syscall=5Fnames[i],i,str,ret);=0A+ */=0A+= if (0 =3D=3D ret) {=0A+ *sys =3D (syscall=5Ft) i; /* ewww */=0A+ /* p= rintf("matched syscall %s\n",syscall=5Fnames[i]); */=0A+ return 1;=0A+ }= =0A+ }=0A+ printf("warning: failed to get match for syscall %s\n", str);=0A= + return 0;=0A+}=0A+=0A+void ffsb=5Fstatsc=5Finit(ffsb=5Fstatsc=5Ft * fsc)= =0A+{=0A+ fsc->num=5Fbuckets =3D 0;=0A+ fsc->buckets =3D NULL;=0A+ fsc->ign= ore=5Fstats =3D 0;=0A+}=0A+=0A+void ffsb=5Fstatsc=5Faddbucket(ffsb=5Fstatsc= =5Ft * fsc, uint32=5Ft min, uint32=5Ft max)=0A+{=0A+ struct stat=5Fbucket *= temp;=0A+ fsc->num=5Fbuckets++;=0A+=0A+ /* printf("ffsb=5Frealloc(): fsc=5F= buckets =3D %d\n",fsc->num=5Fbuckets); */=0A+ temp =3D ffsb=5Frealloc(fsc->= buckets, sizeof(struct stat=5Fbucket) *=0A+ fsc->num=5Fbuckets);=0A+= =0A+ fsc->buckets =3D temp;=0A+=0A+ /* Convert to micro-secs from milli-sec= s */=0A+ fsc->buckets[fsc->num=5Fbuckets - 1].min =3D min;=0A+ fsc->buckets= [fsc->num=5Fbuckets - 1].max =3D max;=0A+}=0A+=0A+void ffsb=5Fstatsc=5Fdest= roy(ffsb=5Fstatsc=5Ft * fsc)=0A+{=0A+ free(fsc->buckets);=0A+}=0A+=0A+void = ffsb=5Fstatsc=5Fignore=5Fsys(ffsb=5Fstatsc=5Ft * fsc, syscall=5Ft s)=0A+{= =0A+ /* printf("fsis: oring 0x%x with 0x%x\n",=0A+ * fsc->ignore=5Fst= ats,=0A+ * (1 << s ) );=0A+ */=0A+ fsc->ignore=5Fstats |=3D (1 << s)= ;=0A+}=0A+=0A+int fsc=5Fignore=5Fsys(ffsb=5Fstatsc=5Ft * fsc, syscall=5Ft s= )=0A+{=0A+ return fsc->ignore=5Fstats & (1 << s);=0A+}=0A+=0A+void ffsb=5Fs= tatsd=5Finit(ffsb=5Fstatsd=5Ft * fsd, ffsb=5Fstatsc=5Ft * fsc)=0A+{=0A+ int= i;=0A+ memset(fsd, 0, sizeof(*fsd));=0A+=0A+ for (i =3D 0; i < FFSB=5FNUM= =5FSYSCALLS; i++) {=0A+ fsd->totals[i] =3D 0;=0A+ fsd->mins[i] =3D UINT= =5FMAX;=0A+ fsd->maxs[i] =3D 0;=0A+ fsd->buckets[i] =3D ffsb=5Fmalloc(siz= eof(uint32=5Ft) *=0A+ fsc->num=5Fbuckets);=0A+ assert(fsd->bucke= ts[i] !=3D NULL);=0A+=0A+ memset(fsd->buckets[i], 0, sizeof(uint32=5Ft) * = fsc->num=5Fbuckets);=0A+ }=0A+ fsd->config =3D fsc;=0A+}=0A+=0A+void ffsb= =5Fstatsd=5Fdestroy(ffsb=5Fstatsd=5Ft * fsd)=0A+{=0A+ int i;=0A+ for (i =3D= 0; i < FFSB=5FNUM=5FSYSCALLS; i++)=0A+ free(fsd->buckets[i]);=0A+}=0A+=0A= +void ffsb=5Fadd=5Fdata(ffsb=5Fstatsd=5Ft * fsd, syscall=5Ft s, uint32=5Ft = value)=0A+{=0A+ unsigned num=5Fbuckets, i;=0A+ struct stat=5Fbucket *bucket= =5Fdefs;=0A+=0A+ if (!fsd || fsc=5Fignore=5Fsys(fsd->config, s))=0A+ retur= n;=0A+=0A+ if (value < fsd->mins[s])=0A+ fsd->mins[s] =3D value;=0A+ if (v= alue > fsd->maxs[s])=0A+ fsd->maxs[s] =3D value;=0A+=0A+ fsd->counts[s]++;= =0A+ fsd->totals[s] +=3D value;=0A+=0A+ if (fsd->config->num=5Fbuckets =3D= =3D 0)=0A+ return;=0A+=0A+ num=5Fbuckets =3D fsd->config->num=5Fbuckets;= =0A+ bucket=5Fdefs =3D fsd->config->buckets;=0A+=0A+ for (i =3D 0; i < num= =5Fbuckets; i++) {=0A+ struct stat=5Fbucket *b =3D &bucket=5Fdefs[i];=0A+= =0A+ if (value <=3D b->max && value >=3D b->min) {=0A+ fsd->buckets[s][i= ]++;=0A+ break;=0A+ }=0A+ }=0A+}=0A+=0A+void ffsb=5Fstatsc=5Fcopy(ffsb= =5Fstatsc=5Ft * dest, ffsb=5Fstatsc=5Ft * src)=0A+{=0A+ memcpy(dest, src, s= izeof(*src));=0A+}=0A+=0A+void ffsb=5Fstatsd=5Fadd(ffsb=5Fstatsd=5Ft * dest= , ffsb=5Fstatsd=5Ft * src)=0A+{=0A+ int i, j;=0A+ unsigned num=5Fbuckets;= =0A+ if (dest->config !=3D src->config)=0A+ printf("ffsb=5Fstatsd=5Fadd: w= arning configs do not"=0A+ "match for data being collected\n");=0A+= =0A+ num=5Fbuckets =3D dest->config->num=5Fbuckets;=0A+=0A+ for (i =3D 0; i= < FFSB=5FNUM=5FSYSCALLS; i++) {=0A+ dest->counts[i] +=3D src->counts[i];= =0A+ dest->totals[i] +=3D src->totals[i];=0A+=0A+ if (src->mins[i] < dest= ->mins[i])=0A+ dest->mins[i] =3D src->mins[i];=0A+ if (src->maxs[i] > de= st->maxs[i])=0A+ dest->maxs[i] =3D src->maxs[i];=0A+=0A+ for (j =3D 0; j= < num=5Fbuckets; j++)=0A+ dest->buckets[i][j] +=3D src->buckets[i][j];= =0A+ }=0A+}=0A+=0A+static void print=5Fbuckets=5Fhelper(ffsb=5Fstatsc=5Ft *= fsc, uint32=5Ft * buckets)=0A+{=0A+ int i;=0A+ if (fsc->num=5Fbuckets =3D= =3D 0) {=0A+ printf(" -\n");=0A+ return;=0A+ }=0A+ for (i =3D 0; i < fs= c->num=5Fbuckets; i++) {=0A+ struct stat=5Fbucket *sb =3D &fsc->buckets[i]= ;=0A+ printf("\t\t msec=5Frange[%d]\t%f - %f : %8u\n",=0A+ i, (dou= ble)sb->min / 1000.0f, (double)sb->max / 1000.0f,=0A+ buckets[i]);= =0A+ }=0A+ printf("\n");=0A+}=0A+=0A+void ffsb=5Fstatsd=5Fprint(ffsb=5Fstat= sd=5Ft * fsd)=0A+{=0A+ int i;=0A+ printf("\nSystem Call Latency statistics = in millisecs\n" "=3D=3D=3D=3D=3D\n");=0A+ printf("\t\tMin\t\tAvg\t\tMax\t\t= Total Calls\n");=0A+ printf("\t\t=3D=3D=3D=3D=3D=3D=3D=3D\t=3D=3D=3D=3D=3D= =3D=3D=3D\t=3D=3D=3D=3D=3D=3D=3D=3D\t=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D\n= ");=0A+ for (i =3D 0; i < FFSB=5FNUM=5FSYSCALLS; i++)=0A+ if (fsd->counts[= i]) {=0A+ printf("[%7s]\t%05f\t%05lf\t%05f\t%12u\n",=0A+ syscall= =5Fnames[i], (float)fsd->mins[i] / 1000.0f,=0A+ (fsd->totals[i] / = (1000.0f *=0A+ (double)fsd->counts[i])),=0A+ (float)fsd->ma= xs[i] / 1000.0f, fsd->counts[i]);=0A+ print=5Fbuckets=5Fhelper(fsd->confi= g, fsd->buckets[i]);=0A+ }=0A+}=0A+=0A+#if 0 /* Testing */=0A+=0A+void = *ffsb=5Fmalloc(size=5Ft s)=0A+{=0A+ void *p =3D malloc(s);=0A+ assert(p != =3D NULL);=0A+ return p;=0A+}=0A+=0A+int main(int arc, char *argv[])=0A+{= =0A+ ffsb=5Fstatsc=5Ft fsc;=0A+ ffsb=5Fstatsd=5Ft fsd;=0A+ int i;=0A+=0A+ p= rintf("init\n");=0A+=0A+ ffsb=5Fstatsc=5Finit(&fsc, 10);=0A+ ffsb=5Fstatsc= =5Fsetbucket(&fsc, 0, 0.0f, 50.0f);=0A+ ffsb=5Fstatsc=5Fsetbucket(&fsc, 1, = 50.0f, 10000.0f);=0A+ ffsb=5Fstatsc=5Fsetbucket(&fsc, 2, 0.1f, 0.2f);=0A+ f= fsb=5Fstatsc=5Fsetbucket(&fsc, 3, 0.0f, 50.0f);=0A+ ffsb=5Fstatsc=5Fsetbuck= et(&fsc, 4, 50.0f, 10000.0f);=0A+ ffsb=5Fstatsc=5Fsetbucket(&fsc, 5, 0.1f, = 0.2f);=0A+ ffsb=5Fstatsc=5Fsetbucket(&fsc, 6, 0.0f, 50.0f);=0A+ ffsb=5Fstat= sc=5Fsetbucket(&fsc, 7, 50.0f, 10000.0f);=0A+ ffsb=5Fstatsc=5Fsetbucket(&fs= c, 8, 0.1f, 0.2f);=0A+ ffsb=5Fstatsc=5Fsetbucket(&fsc, 9, 50.0f, 10000.0f);= =0A+ ffsb=5Fstatsd=5Finit(&fsd, &fsc);=0A+=0A+ printf("test\n");=0A+ for (i= =3D 0; i < 50000000; i++)=0A+ ffsb=5Fadd=5Fdata(&fsd, SYS=5FREAD, (float)= i);=0A+=0A+ printf("cleanup\n");=0A+ ffsb=5Fstatsd=5Fdestroy(&fsd);=0A+ ffs= b=5Fstatsc=5Fdestroy(&fsc);=0A+ return 0;=0A+}=0A+=0A+#endif /* Testing */= =0Adiff --git a/utils/ffsb-6.0-rc2/ffsb=5Fstats.h b/utils/ffsb-6.0-rc2/ffsb= =5Fstats.h=0Anew file mode 100644=0Aindex 0000000..616e12e=0A--- /dev/null= =0A+++ b/utils/ffsb-6.0-rc2/ffsb=5Fstats.h=0A@@ -0,0 +1,109 @@=0A+/*=0A+ * = Copyright (c) International Business Machines Corp., 2001-2007=0A+ *=0A+ = * This program is free software; you can redistribute it and/or modify= =0A+ * it under the terms of the GNU General Public License as published = by=0A+ * the Free Software Foundation; either version 2 of the License, o= r=0A+ * (at your option) any later version.=0A+ *=0A+ * This program is= distributed in the hope that it will be useful,=0A+ * but WITHOUT ANY WA= RRANTY; without even the implied warranty of=0A+ * MERCHANTABILITY or FI= TNESS FOR A PARTICULAR PURPOSE. See=0A+ * the GNU General Public License= for more details.=0A+ *=0A+ * You should have received a copy of the GNU= General Public License=0A+ * along with this program; if not, write to = the Free Software=0A+ * Foundation, Inc., 51 Franklin Street, Fifth Floor= , Boston, MA 02110-1301 USA=0A+ */=0A+#ifndef =5FFFSB=5FSTATS=5FH=5F=0A+#de= fine =5FFFSB=5FSTATS=5FH=5F=0A+=0A+#include =0A+=0A+/* Latency = statistics collection extension.=0A+ *=0A+ * For now, we are going to colle= ct latency info on each (most)=0A+ * syscalls using gettimeofday. Unfortuna= tely, it is the=0A+ * responsibility of each operation to collect this timi= ng info. We=0A+ * try to make this easier by providing a function that doe= s the=0A+ * timing for supported syscalls.=0A+ *=0A+ * We want the ability = to collect the average latency for a particular=0A+ * call, and also to col= lect latency info for user specified intervals=0A+ * -- called "buckets"=0A= + */=0A+=0A+struct stat=5Fbucket {=0A+ uint32=5Ft min;=0A+ uint32=5Ft max;= =0A+ /* max =3D 0 indicates uninitialized bucket */=0A+};=0A+=0A+/* These a= re all the syscalls we currently support */=0A+typedef enum { SYS=5FOPEN = =3D 0,=0A+ SYS=5FREAD,=0A+ SYS=5FWRITE,=0A+ SYS=5FCREA= TE,=0A+ SYS=5FLSEEK,=0A+ SYS=5FUNLINK,=0A+ SYS=5FCLOSE= ,=0A+ SYS=5FSTAT=0A+} syscall=5Ft;=0A+=0A+/* ASCII versions of the s= yscall names */=0A+extern char *syscall=5Fnames[];=0A+=0A+/* Return 1 on su= ccess, 0 on error */=0A+int ffsb=5Fstats=5Fstr2syscall(char *, syscall=5Ft = *);=0A+=0A+/* Keep it in sync with syscall=5Ft */=0A+#define FFSB=5FNUM=5FS= YSCALLS (8UL)=0A+=0A+/* What stats to collect, shared among all threads */= =0A+typedef struct ffsb=5Fstats=5Fconfig {=0A+ unsigned num=5Fbuckets;=0A+ = struct stat=5Fbucket *buckets;=0A+=0A+ /* Ignore stats collection for some = syscalls.=0A+ * Each bit corresponds to one syscall.=0A+ */=0A+ uint32=5F= t ignore=5Fstats;=0A+} ffsb=5Fstatsc=5Ft;=0A+=0A+void ffsb=5Fstatsc=5Finit(= ffsb=5Fstatsc=5Ft *);=0A+void ffsb=5Fstatsc=5Faddbucket(ffsb=5Fstatsc=5Ft *= , uint32=5Ft min, uint32=5Ft max);=0A+void ffsb=5Fstatsc=5Fignore=5Fsys(ffs= b=5Fstatsc=5Ft *, syscall=5Ft s);=0A+void ffsb=5Fstatsc=5Fdestroy(ffsb=5Fst= atsc=5Ft *);=0A+=0A+/* If we are collecting stats, then the config field is= non-NULL */=0A+typedef struct ffsb=5Fstats=5Fdata {=0A+ ffsb=5Fstatsc=5Ft = *config;=0A+ uint32=5Ft counts[FFSB=5FNUM=5FSYSCALLS];=0A+ uint64=5Ft total= s[FFSB=5FNUM=5FSYSCALLS]; /* cumulative sums */=0A+ uint64=5Ft mins[FFSB=5F= NUM=5FSYSCALLS];=0A+ uint64=5Ft maxs[FFSB=5FNUM=5FSYSCALLS];=0A+ uint32=5Ft= *buckets[FFSB=5FNUM=5FSYSCALLS]; /* bucket counters */=0A+} ffsb=5Fstatsd= =5Ft ;=0A+=0A+/* constructor/destructor */=0A+void ffsb=5Fstatsd=5Finit(ffs= b=5Fstatsd=5Ft *, ffsb=5Fstatsc=5Ft *);=0A+void ffsb=5Fstatsd=5Fdestroy(ffs= b=5Fstatsd=5Ft *);=0A+=0A+/* Add data to a stats data struct. Value should= be in microsecs=0A+ * =5FNOT=5F milli-secs=0A+ */=0A+void ffsb=5Fadd=5Fdat= a(ffsb=5Fstatsd=5Ft *, syscall=5Ft, uint32=5Ft);=0A+=0A+/* Make a copy of a= stats config */=0A+void ffsb=5Fstatsc=5Fcopy(ffsb=5Fstatsc=5Ft *, ffsb=5Fs= tatsc=5Ft *);=0A+=0A+/* Add two statsd structs together */=0A+void ffsb=5Fs= tatsd=5Fadd(ffsb=5Fstatsd=5Ft *, ffsb=5Fstatsd=5Ft *);=0A+=0A+/* Print out = statsd structure */=0A+void ffsb=5Fstatsd=5Fprint(ffsb=5Fstatsd=5Ft *fsd);= =0A+=0A+/* Do we want stats for the specified syscall */=0A+int fsc=5Fignor= e=5Fsys(ffsb=5Fstatsc=5Ft *fsc, syscall=5Ft s);=0A+=0A+#endif /* =5FFFSB=5F= STATS=5FH=5F */=0Adiff --git a/utils/ffsb-6.0-rc2/ffsb=5Ftg.c b/utils/ffsb-= 6.0-rc2/ffsb=5Ftg.c=0Anew file mode 100644=0Aindex 0000000..881f32d=0A--- /= dev/null=0A+++ b/utils/ffsb-6.0-rc2/ffsb=5Ftg.c=0A@@ -0,0 +1,369 @@=0A+/*= =0A+ * Copyright (c) International Business Machines Corp., 2001-2004=0A+= *=0A+ * This program is free software; you can redistribute it and/or m= odify=0A+ * it under the terms of the GNU General Public License as publi= shed by=0A+ * the Free Software Foundation; either version 2 of the Licen= se, or=0A+ * (at your option) any later version.=0A+ *=0A+ * This progr= am is distributed in the hope that it will be useful,=0A+ * but WITHOUT A= NY WARRANTY; without even the implied warranty of=0A+ * MERCHANTABILITY = or FITNESS FOR A PARTICULAR PURPOSE. See=0A+ * the GNU General Public Li= cense for more details.=0A+ *=0A+ * You should have received a copy of th= e GNU General Public License=0A+ * along with this program; if not, writ= e to the Free Software=0A+ * Foundation, Inc., 51 Franklin Street, Fifth = Floor, Boston, MA 02110-1301 USA=0A+ */=0A+#include =0A+#include = =0A+#include =0A+#include =0A+=0A+#include "f= fsb=5Ftg.h"=0A+#include "util.h"=0A+=0A+void init=5Fffsb=5Ftg(ffsb=5Ftg=5Ft= * tg, unsigned num=5Fthreads, unsigned tg=5Fnum)=0A+{=0A+ int i;=0A+ memse= t(tg, 0, sizeof(ffsb=5Ftg=5Ft));=0A+=0A+ tg->threads =3D ffsb=5Fmalloc(size= of(ffsb=5Fthread=5Ft) * num=5Fthreads);=0A+ tg->tg=5Fnum =3D tg=5Fnum;=0A+ = tg->num=5Fthreads =3D num=5Fthreads;=0A+=0A+ tg->bindfs =3D -1; /* default = is not bound */=0A+=0A+ tg->thread=5Fbufsize =3D 0;=0A+ for (i =3D 0; i < n= um=5Fthreads; i++)=0A+ init=5Fffsb=5Fthread(tg->threads + i, tg, 0, tg=5Fn= um, i);=0A+}=0A+=0A+void destroy=5Fffsb=5Ftg(ffsb=5Ftg=5Ft * tg)=0A+{=0A+ i= nt i;=0A+ for (i =3D 0; i < tg->num=5Fthreads; i++)=0A+ destroy=5Fffsb=5Ft= hread(tg->threads + i);=0A+ free(tg->threads);=0A+ if (tg=5Fneeds=5Fstats(t= g))=0A+ ffsb=5Fstatsc=5Fdestroy(&tg->fsc);=0A+}=0A+=0A+void *tg=5Frun(void= *data)=0A+{=0A+ tg=5Frun=5Fparams=5Ft *params =3D (tg=5Frun=5Fparams=5Ft *= ) data;=0A+ ffsb=5Ftg=5Ft *tg =3D params->tg;=0A+ int i;=0A+ pthread=5Fattr= =5Ft attr;=0A+=0A+ pthread=5Fattr=5Finit(&attr);=0A+ pthread=5Fattr=5Fsetsc= ope(&attr, PTHREAD=5FSCOPE=5FSYSTEM);=0A+=0A+ tg->start=5Fbarrier =3D param= s->thread=5Fbarrier;=0A+=0A+ /* Sum up the weights for use later by tg=5Fge= t=5Fop() */=0A+ tg->sum=5Fweights =3D 0;=0A+ for (i =3D 0; i < FFSB=5FNUMOP= S; i++)=0A+ tg->sum=5Fweights +=3D tg->op=5Fweights[i];=0A+=0A+ tg->fc =3D= params->fc;=0A+ tg->flagval =3D -1;=0A+ tg->stopval =3D 1;=0A+=0A+ /* spaw= n threads */=0A+ for (i =3D 0; i < tg->num=5Fthreads; i++) {=0A+ ffsb=5Fth= read=5Ft *ft =3D &tg->threads[i];=0A+ pthread=5Fcreate(&ft->ptid, &attr, f= t=5Frun, ft);=0A+ }=0A+=0A+ if (params->tg=5Fbarrier)=0A+ ffsb=5Fbarrier= =5Fwait(params->tg=5Fbarrier);=0A+=0A+ /* wait for termination condition to= be true */=0A+ do {=0A+ ffsb=5Fsleep(params->wait=5Ftime);=0A+ } while (p= arams->poll=5Ffn(params->poll=5Fdata) =3D=3D 0);=0A+=0A+ /* set flag value = */=0A+ tg->flagval =3D tg->stopval;=0A+=0A+ /* wait on theads to finish */= =0A+ for (i =3D 0; i < tg->num=5Fthreads; i++)=0A+ pthread=5Fjoin(tg->thre= ads[i].ptid, NULL);=0A+=0A+ return NULL;=0A+}=0A+=0A+/* Needs to set params= ->opnum and params->fs */=0A+void tg=5Fget=5Fop(ffsb=5Ftg=5Ft * tg, randdat= a=5Ft * rd, tg=5Fop=5Fparams=5Ft * params)=0A+{=0A+ unsigned curop;=0A+ int= num;=0A+ int fsnum;=0A+=0A+ num =3D 1 + getrandom(rd, tg->sum=5Fweights);= =0A+ curop =3D 0;=0A+=0A+ while (tg->op=5Fweights[curop] < num) {=0A+ num = -=3D tg->op=5Fweights[curop];=0A+ curop++;=0A+ }=0A+=0A+ params->opnum =3D= curop;=0A+=0A+ /* If we're bound to a particular filesystem, use that,=0A+= * otherwise, pick one at random.=0A+ */=0A+ fsnum =3D tg->bindfs;=0A+ if= (fsnum < 0)=0A+ fsnum =3D getrandom(rd, tg->fc->num=5Ffilesys);=0A+=0A+ p= arams->fs =3D fc=5Fget=5Ffs(tg->fc, fsnum);=0A+}=0A+=0A+void tg=5Fset=5Fop= =5Fweight(ffsb=5Ftg=5Ft * tg, char *opname, unsigned weight)=0A+{=0A+ int o= pnum =3D ops=5Ffind=5Fop(opname);=0A+ assert(opnum >=3D 0);=0A+ tg->op=5Fwe= ights[opnum] =3D weight;=0A+}=0A+=0A+unsigned tg=5Fget=5Fop=5Fweight(ffsb= =5Ftg=5Ft * tg, char *opname)=0A+{=0A+ int opnum =3D ops=5Ffind=5Fop(opname= );=0A+ assert(opnum >=3D 0);=0A+ return tg->op=5Fweights[opnum];=0A+}=0A+= =0A+void tg=5Fset=5Fbindfs(ffsb=5Ftg=5Ft * tg, int fsnum)=0A+{=0A+ tg->bind= fs =3D fsnum;=0A+}=0A+=0A+int tg=5Fget=5Fbindfs(ffsb=5Ftg=5Ft * tg)=0A+{=0A= + return tg->bindfs;=0A+}=0A+=0A+unsigned tg=5Fget=5Fnumthreads(ffsb=5Ftg= =5Ft * tg)=0A+{=0A+ return tg->num=5Fthreads;=0A+}=0A+=0A+static void updat= e=5Fbufsize(ffsb=5Ftg=5Ft * tg)=0A+{=0A+ int i;=0A+ uint32=5Ft newmax =3D m= ax(tg->read=5Fblocksize, tg->write=5Fblocksize);=0A+=0A+ if (newmax =3D=3D = max(newmax, tg->thread=5Fbufsize))=0A+ for (i =3D 0; i < tg->num=5Fthreads= ; i++)=0A+ ft=5Falter=5Fbufsize(tg->threads + i, newmax);=0A+}=0A+=0A+voi= d tg=5Fset=5Fread=5Frandom(ffsb=5Ftg=5Ft * tg, int rr)=0A+{=0A+ tg->read=5F= random =3D rr;=0A+}=0A+=0A+void tg=5Fset=5Fwrite=5Frandom(ffsb=5Ftg=5Ft * t= g, int wr)=0A+{=0A+ tg->write=5Frandom =3D wr;=0A+}=0A+=0A+void tg=5Fset=5F= fsync=5Ffile(ffsb=5Ftg=5Ft * tg, int fsync)=0A+{=0A+ tg->fsync=5Ffile =3D f= sync;=0A+}=0A+=0A+void tg=5Fset=5Fread=5Fsize(ffsb=5Ftg=5Ft * tg, uint64=5F= t rs)=0A+{=0A+ tg->read=5Fsize =3D rs;=0A+}=0A+=0A+void tg=5Fset=5Fread=5Fb= locksize(ffsb=5Ftg=5Ft * tg, uint32=5Ft rs)=0A+{=0A+ tg->read=5Fblocksize = =3D rs;=0A+ update=5Fbufsize(tg);=0A+}=0A+=0A+void tg=5Fset=5Fread=5Fskip(f= fsb=5Ftg=5Ft * tg, int rs)=0A+{=0A+ tg->read=5Fskip =3D rs;=0A+}=0A+=0A+voi= d tg=5Fset=5Fread=5Fskipsize(ffsb=5Ftg=5Ft * tg, uint32=5Ft rs)=0A+{=0A+ tg= ->read=5Fskipsize =3D rs;=0A+}=0A+=0A+void tg=5Fset=5Fwrite=5Fsize(ffsb=5Ft= g=5Ft * tg, uint64=5Ft ws)=0A+{=0A+ tg->write=5Fsize =3D ws;=0A+}=0A+=0A+vo= id tg=5Fset=5Fwrite=5Fblocksize(ffsb=5Ftg=5Ft * tg, uint32=5Ft ws)=0A+{=0A+= tg->write=5Fblocksize =3D ws;=0A+ update=5Fbufsize(tg);=0A+}=0A+=0A+int tg= =5Fget=5Fread=5Frandom(ffsb=5Ftg=5Ft * tg)=0A+{=0A+ return tg->read=5Frando= m;=0A+}=0A+=0A+int tg=5Fget=5Fwrite=5Frandom(ffsb=5Ftg=5Ft * tg)=0A+{=0A+ r= eturn tg->write=5Frandom;=0A+}=0A+=0A+int tg=5Fget=5Ffsync=5Ffile(ffsb=5Ftg= =5Ft * tg)=0A+{=0A+ return tg->fsync=5Ffile;=0A+}=0A+=0A+uint64=5Ft tg=5Fge= t=5Fread=5Fsize(ffsb=5Ftg=5Ft * tg)=0A+{=0A+ return tg->read=5Fsize;=0A+}= =0A+=0A+uint32=5Ft tg=5Fget=5Fread=5Fblocksize(ffsb=5Ftg=5Ft * tg)=0A+{=0A+= return tg->read=5Fblocksize;=0A+}=0A+=0A+int tg=5Fget=5Fread=5Fskip(ffsb= =5Ftg=5Ft * tg)=0A+{=0A+ return tg->read=5Fskip;=0A+}=0A+=0A+uint32=5Ft tg= =5Fget=5Fread=5Fskipsize(ffsb=5Ftg=5Ft * tg)=0A+{=0A+ return tg->read=5Fski= psize;=0A+}=0A+=0A+uint64=5Ft tg=5Fget=5Fwrite=5Fsize(ffsb=5Ftg=5Ft * tg)= =0A+{=0A+ return tg->write=5Fsize;=0A+}=0A+=0A+uint32=5Ft tg=5Fget=5Fwrite= =5Fblocksize(ffsb=5Ftg=5Ft * tg)=0A+{=0A+ return tg->write=5Fblocksize;=0A+= }=0A+=0A+int tg=5Fget=5Fstopval(ffsb=5Ftg=5Ft * tg)=0A+{=0A+ return tg->sto= pval;=0A+}=0A+=0A+ffsb=5Fbarrier=5Ft *tg=5Fget=5Fstart=5Fbarrier(ffsb=5Ftg= =5Ft * tg)=0A+{=0A+ return tg->start=5Fbarrier;=0A+}=0A+=0A+static void tg= =5Fprint=5Fconfig=5Fhelper(ffsb=5Ftg=5Ft * tg)=0A+{=0A+ int i;=0A+ int sumw= eights =3D 0;=0A+ char buf[256];=0A+=0A+ printf("\t num=5Fthreads =3D = %d\n", tg->num=5Fthreads);=0A+ printf("\t\n");=0A+ printf("\t read=5Frandom= =3D %s\n", (tg->read=5Frandom) ? "on" : "off");=0A+ printf("\t read= =5Fsize =3D %llu\t(%s)\n", tg->read=5Fsize,=0A+ ffsb=5Fprints= ize(buf, tg->read=5Fsize, 256));=0A+ printf("\t read=5Fblocksize =3D %u\t= (%s)\n", tg->read=5Fblocksize,=0A+ ffsb=5Fprintsize(buf, tg->read=5F= blocksize, 256));=0A+ printf("\t read=5Fskip =3D %s\n", (tg->read=5F= skip) ? "on" : "off");=0A+ printf("\t read=5Fskipsize =3D %u\t(%s)\n", t= g->read=5Fskipsize,=0A+ ffsb=5Fprintsize(buf, tg->read=5Fskipsize, 2= 56));=0A+ printf("\t\n");=0A+ printf("\t write=5Frandom =3D %s\n", (tg-= >write=5Frandom) ? "on" : "off");=0A+ printf("\t write=5Fsize =3D %ll= u\t(%s)\n", tg->write=5Fsize,=0A+ ffsb=5Fprintsize(buf, tg->write=5F= size, 256));=0A+ printf("\t fsync=5Ffile =3D %d\n", tg->fsync=5Ffile)= ;=0A+ printf("\t write=5Fblocksize =3D %u\t(%s)\n", tg->write=5Fblocksize,= =0A+ ffsb=5Fprintsize(buf, tg->write=5Fblocksize, 256));=0A+ printf(= "\t wait time =3D %u\n", tg->wait=5Ftime);=0A+ if (tg->bindfs >=3D 0= ) {=0A+ printf("\t\n");=0A+ printf("\t bound to fs %d\n", tg->bindfs);=0A= + }=0A+ printf("\t\n");=0A+ printf("\t op weights\n");=0A+=0A+ for (i =3D 0= ; i < FFSB=5FNUMOPS; i++)=0A+ sumweights +=3D tg->op=5Fweights[i];=0A+=0A+= for (i =3D 0; i < FFSB=5FNUMOPS; i++)=0A+ printf("\t %20s =3D %d (%.2f%%)= \n", op=5Fget=5Fname(i),=0A+ tg->op=5Fweights[i], 100 * (float)tg->= op=5Fweights[i] /=0A+ (float)sumweights);=0A+ printf("\t\n");=0A+}= =0A+=0A+void tg=5Fprint=5Fconfig(ffsb=5Ftg=5Ft * tg)=0A+{=0A+ printf("Threa= dGroup %d\n", tg->tg=5Fnum);=0A+ printf("=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D\n");=0A+ tg=5Fprint=5Fconfig=5Fhelper(tg);=0A+}=0A+=0A+void= tg=5Fprint=5Fconfig=5Faging(ffsb=5Ftg=5Ft * tg, char *fsname)=0A+{=0A+ pri= ntf("\t Aging ThreadGroup for fs %s\n", fsname);=0A+ printf("\t =3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D\n");=0A+ tg=5Fprint=5Fconfig=5Fhelp= er(tg);=0A+}=0A+=0A+void tg=5Fcollect=5Fresults(ffsb=5Ftg=5Ft * tg, ffsb=5F= op=5Fresults=5Ft * r)=0A+{=0A+ int i;=0A+ for (i =3D 0; i < tg=5Fget=5Fnumt= hreads(tg); i++)=0A+ add=5Fresults(r, ft=5Fget=5Fresults(tg->threads + i))= ;=0A+}=0A+=0A+void tg=5Fset=5Fwaittime(ffsb=5Ftg=5Ft * tg, unsigned time)= =0A+{=0A+ tg->wait=5Ftime =3D time;=0A+}=0A+=0A+unsigned tg=5Fget=5Fwaittim= e(ffsb=5Ftg=5Ft * tg)=0A+{=0A+ return tg->wait=5Ftime;=0A+}=0A+=0A+int tg= =5Fget=5Fflagval(ffsb=5Ftg=5Ft * tg)=0A+{=0A+ return tg->flagval;=0A+}=0A+= =0A+void tg=5Fset=5Fstatsc(ffsb=5Ftg=5Ft * tg, ffsb=5Fstatsc=5Ft * fsc)=0A+= {=0A+ if (fsc) {=0A+ int i;=0A+=0A+ tg->need=5Fstats =3D 1;=0A+ ffsb=5Fs= tatsc=5Fcopy(&tg->fsc, fsc);=0A+=0A+ for (i =3D 0; i < tg->num=5Fthreads; = i++)=0A+ ft=5Fset=5Fstatsc(tg->threads + i, &tg->fsc);=0A+ }=0A+}=0A+=0A+= void tg=5Fcollect=5Fstats(ffsb=5Ftg=5Ft * tg, ffsb=5Fstatsd=5Ft * fsd)=0A+{= =0A+ int i;=0A+=0A+ assert(tg->need=5Fstats);=0A+ ffsb=5Fstatsd=5Finit(fsd,= &tg->fsc);=0A+=0A+ for (i =3D 0; i < tg=5Fget=5Fnumthreads(tg); i++)=0A+ = ffsb=5Fstatsd=5Fadd(fsd, ft=5Fget=5Fstats=5Fdata(tg->threads + i));=0A+}=0A= +=0A+int tg=5Fneeds=5Fstats(ffsb=5Ftg=5Ft * tg)=0A+{=0A+ return tg->need=5F= stats;=0A+}=0Adiff --git a/utils/ffsb-6.0-rc2/ffsb=5Ftg.h b/utils/ffsb-6.0-= rc2/ffsb=5Ftg.h=0Anew file mode 100644=0Aindex 0000000..0f915b0=0A--- /dev/= null=0A+++ b/utils/ffsb-6.0-rc2/ffsb=5Ftg.h=0A@@ -0,0 +1,206 @@=0A+/*=0A+ *= Copyright (c) International Business Machines Corp., 2001-2004=0A+ *=0A+= * This program is free software; you can redistribute it and/or modify= =0A+ * it under the terms of the GNU General Public License as published = by=0A+ * the Free Software Foundation; either version 2 of the License, o= r=0A+ * (at your option) any later version.=0A+ *=0A+ * This program is= distributed in the hope that it will be useful,=0A+ * but WITHOUT ANY WA= RRANTY; without even the implied warranty of=0A+ * MERCHANTABILITY or FI= TNESS FOR A PARTICULAR PURPOSE. See=0A+ * the GNU General Public License= for more details.=0A+ *=0A+ * You should have received a copy of the GNU= General Public License=0A+ * along with this program; if not, write to = the Free Software=0A+ * Foundation, Inc., 51 Franklin Street, Fifth Floor= , Boston, MA 02110-1301 USA=0A+ */=0A+#ifndef =5FFFSB=5FTG=5FH=5F=0A+#defin= e =5FFFSB=5FTG=5FH=5F=0A+#include =0A+#include =0A+#i= nclude =0A+=0A+#include =0A+=0A+#include "ffsb.h"= =0A+#include "ffsb=5Fop.h"=0A+#include "ffsb=5Fthread.h"=0A+#include "ffsb= =5Ffs.h"=0A+#include "ffsb=5Fstats.h"=0A+=0A+#include "util.h" /* for barri= er obj */=0A+=0A+/* "Thread Group" object defs.=0A+ *=0A+ * A thread group= contains configuration information and can run its=0A+ * "gang" of thread= s performing a particular mix of operations.=0A+ *=0A+ * The thread group i= s responsible for creating the ffsb=5Fthread=0A+ * objects which must ask t= he thread group object to select an=0A+ * operation and a filesystem to run= that operation on. The thread=0A+ * objects don't contain any of the conf= iguration information.=0A+ *=0A+ * Thread groups are also abstracted so the= y can be "run" arbitrarily=0A+ * which is useful because we can reuse them = for aging. The running=0A+ * is a bit complex, the thread group has to hav= e a callback function=0A+ * which is runs at a specified interval to determ= ine when to=0A+ * terminate.=0A+ *=0A+ * To synchronize starting across man= y thread groups there are two=0A+ * barriers used, the first one "tg=5Fbarr= ier" in the run=5Fparams is to=0A+ * synchronize multiple thread-groups bei= ng ready to start, meaning=0A+ * that all their threads have been spawned T= he second one=0A+ * "thread=5Fbarrier" synchronizes all threads across mult= iple thread=0A+ * groups, so that they all start at once.=0A+*/=0A+=0A+stru= ct ffsb=5Fthread;=0A+struct ffsb=5Fconfig;=0A+=0A+typedef struct ffsb=5Ftg = {=0A+ unsigned tg=5Fnum;=0A+ unsigned num=5Fthreads;=0A+ unsigned op=5Fweig= hts[FFSB=5FNUMOPS];=0A+ struct ffsb=5Fthread *threads;=0A+=0A+ /* A threadg= roup can be bound to just one filesystem.=0A+ * A value * < 0 , means we a= ren't bound to any.=0A+ */=0A+ int bindfs;=0A+=0A+ int read=5Frandom; /* bo= olean */=0A+ uint64=5Ft read=5Fsize;=0A+ uint32=5Ft read=5Fblocksize;=0A+= =0A+ int read=5Fskip; /* boolean */=0A+ uint32=5Ft read=5Fskipsize;=0A+=0A= + int write=5Frandom; /* boolean */=0A+ uint64=5Ft write=5Fsize;=0A+ uint32= =5Ft write=5Fblocksize;=0A+=0A+ int fsync=5Ffile; /* boolean */=0A+=0A+ /*= Should be max(write=5Fblocksize, read=5Fblocksize) */=0A+ uint32=5Ft threa= d=5Fbufsize;=0A+=0A+ /* these fields are calculated/set by tg=5Frun() */=0A= + unsigned sum=5Fweights;=0A+ struct ffsb=5Fconfig *fc;=0A+ ffsb=5Fbarrier= =5Ft *start=5Fbarrier;=0A+=0A+ /* Used for stopping the threads */=0A+ int = flagval;=0A+ int stopval;=0A+=0A+ /* Delay between every operation, in mill= iseconds*/=0A+ unsigned wait=5Ftime;=0A+=0A+ /* stats configuration */=0A+ = int need=5Fstats;=0A+ ffsb=5Fstatsc=5Ft fsc;=0A+} ffsb=5Ftg=5Ft;=0A+=0A+/* = Init should be the very first thing called on the tg. After that,=0A+ * th= e user can call the set methods and finally run.=0A+ */=0A+void init=5Fffsb= =5Ftg(ffsb=5Ftg=5Ft *tg, unsigned num=5Fthreads, unsigned tg=5Fnum);=0A+voi= d destroy=5Fffsb=5Ftg(ffsb=5Ftg=5Ft *tg);=0A+=0A+/* Parameters needed to fi= re off a thread group. The main thread will=0A+ * evaluate poll=5Ffn(poll= =5Fdata) until it gets a nonzero return value.=0A+ * It will sleep for wait= =5Ftime secs between calls The ffsb=5Fconfig=0A+ * struct is needed for fs = selection. Barriers are to synchronize=0A+ * multiple tgs and all threads = pt is for pthread=5Fcreate()=0A+ */=0A+typedef struct tg=5Frun=5Fparams {= =0A+ ffsb=5Ftg=5Ft *tg;=0A+ int (*poll=5Ffn)(void *);=0A+ void *poll=5Fdata= ;=0A+ unsigned wait=5Ftime; /* in sec */=0A+ struct ffsb=5Fconfig *fc;=0A+ = ffsb=5Fbarrier=5Ft *tg=5Fbarrier;=0A+=0A+ /* Should be initialized by calle= r to tg=5Frun() */=0A+ ffsb=5Fbarrier=5Ft *thread=5Fbarrier;=0A+ pthread=5F= t pt;=0A+} tg=5Frun=5Fparams=5Ft;=0A+=0A+/* This function is meant to be c= alled as a parameter to=0A+ * pthread=5Fcreate()=0A+ */=0A+void *tg=5Frun(v= oid *);=0A+=0A+void tg=5Fprint=5Fconfig(ffsb=5Ftg=5Ft *tg);=0A+void tg=5Fpr= int=5Fconfig=5Faging(ffsb=5Ftg=5Ft *tg, char *fsname);=0A+=0A+/* Adds all o= f this tg's results to res */=0A+void tg=5Fcollect=5Fresults(ffsb=5Ftg=5Ft = *tg, ffsb=5Fop=5Fresults=5Ft *res);=0A+=0A+/* Adds up all this tg's stats t= o totals */=0A+void tg=5Fcollect=5Fstats(ffsb=5Ftg=5Ft *tg, ffsb=5Fstatsd= =5Ft *totals);=0A+=0A+/* getters/setters, setters should not be called afte= r a run has begun */=0A+=0A+void tg=5Fset=5Fstatsc(ffsb=5Ftg=5Ft *tg, ffsb= =5Fstatsc=5Ft *fsc);=0A+=0A+void tg=5Fset=5Fbindfs(ffsb=5Ftg=5Ft *tg, int f= snum);=0A+int tg=5Fget=5Fbindfs(ffsb=5Ftg=5Ft *tg);=0A+=0A+unsigned tg=5Fg= et=5Fnumthreads(ffsb=5Ftg=5Ft *tg);=0A+=0A+void tg=5Fset=5Fop=5Fweight(ffsb= =5Ftg=5Ft *tg, char *opname, unsigned weight);=0A+unsigned tg=5Fget=5Fop=5F= weight(ffsb=5Ftg=5Ft *tg, char *opname);=0A+=0A+void tg=5Fset=5Fread=5Frand= om(ffsb=5Ftg=5Ft *tg, int rr);=0A+void tg=5Fset=5Fwrite=5Frandom(ffsb=5Ftg= =5Ft *tg, int wr);=0A+void tg=5Fset=5Ffsync=5Ffile(ffsb=5Ftg=5Ft *tg, int f= sync);=0A+=0A+int tg=5Fget=5Fread=5Frandom(ffsb=5Ftg=5Ft *tg);=0A+int tg=5F= get=5Fwrite=5Frandom(ffsb=5Ftg=5Ft *tg);=0A+int tg=5Fget=5Ffsync=5Ffile(ffs= b=5Ftg=5Ft *tg);=0A+=0A+void tg=5Fset=5Fread=5Fsize(ffsb=5Ftg=5Ft *tg, uint= 64=5Ft rs);=0A+void tg=5Fset=5Fread=5Fblocksize(ffsb=5Ftg=5Ft *tg, uint32= =5Ft rs);=0A+=0A+void tg=5Fset=5Fread=5Fskipsize(ffsb=5Ftg=5Ft *tg, uint32= =5Ft rs);=0A+void tg=5Fset=5Fread=5Fskip(ffsb=5Ftg=5Ft *tg, int rs);=0A+=0A= +void tg=5Fset=5Fwrite=5Fsize(ffsb=5Ftg=5Ft *tg, uint64=5Ft ws);=0A+void tg= =5Fset=5Fwrite=5Fblocksize(ffsb=5Ftg=5Ft *tg, uint32=5Ft ws);=0A+=0A+uint64= =5Ft tg=5Fget=5Fread=5Fsize(ffsb=5Ftg=5Ft *tg);=0A+uint32=5Ft tg=5Fget=5Fre= ad=5Fblocksize(ffsb=5Ftg=5Ft *tg);=0A+=0A+int tg=5Fget=5Fread=5Fskip(ffsb= =5Ftg=5Ft *tg);=0A+uint32=5Ft tg=5Fget=5Fread=5Fskipsize(ffsb=5Ftg=5Ft *tg)= ;=0A+=0A+uint64=5Ft tg=5Fget=5Fwrite=5Fsize(ffsb=5Ftg=5Ft *tg);=0A+uint32= =5Ft tg=5Fget=5Fwrite=5Fblocksize(ffsb=5Ftg=5Ft *tg);=0A+=0A+void tg=5Fset= =5Fwaittime(ffsb=5Ftg=5Ft *tg, unsigned time);=0A+unsigned tg=5Fget=5Fwaitt= ime(ffsb=5Ftg=5Ft *tg);=0A+=0A+/* The threads in the tg should be the only = ones using these (below)=0A+ * funcs.=0A+ */=0A+ffsb=5Fbarrier=5Ft *tg=5Fge= t=5Fstart=5Fbarrier(ffsb=5Ftg=5Ft *tg);=0A+int tg=5Fget=5Fstopval(ffsb=5Ftg= =5Ft *tg);=0A+int tg=5Fget=5Fflagval(ffsb=5Ftg=5Ft *tg);=0A+=0A+/* The thre= ads in this tg will use this function to get an op to run,=0A+ * so all con= figuration specific information is kept in this object.=0A+ */=0A+typedef s= truct tg=5Fop=5Fparams {=0A+ struct ffsb=5Ffs *fs; /* out parameter */= =0A+ unsigned opnum; /* out parameter */=0A+} tg=5Fop=5Fparams=5Ft;= =0A+=0A+/* tg and rd and in parameters, everything in params is out */=0A+v= oid tg=5Fget=5Fop(ffsb=5Ftg=5Ft *tg, randdata=5Ft *rd, tg=5Fop=5Fparams=5F= t *params);=0A+=0A+/* want stats for this tg ? */=0A+int tg=5Fneeds=5Fstats= (ffsb=5Ftg=5Ft *tg);=0A+=0A+#endif /* =5FFFSB=5FTG=5FH=5F */=0Adiff --git a= /utils/ffsb-6.0-rc2/ffsb=5Fthread.c b/utils/ffsb-6.0-rc2/ffsb=5Fthread.c=0A= new file mode 100644=0Aindex 0000000..95cebcb=0A--- /dev/null=0A+++ b/utils= /ffsb-6.0-rc2/ffsb=5Fthread.c=0A@@ -0,0 +1,171 @@=0A+/*=0A+ * Copyright (= c) International Business Machines Corp., 2001-2004=0A+ *=0A+ * This prog= ram is free software; you can redistribute it and/or modify=0A+ * it und= er the terms of the GNU General Public License as published by=0A+ * the = Free Software Foundation; either version 2 of the License, or=0A+ * (at y= our option) any later version.=0A+ *=0A+ * This program is distributed in= the hope that it will be useful,=0A+ * but WITHOUT ANY WARRANTY; withou= t even the implied warranty of=0A+ * MERCHANTABILITY or FITNESS FOR A PAR= TICULAR PURPOSE. See=0A+ * the GNU General Public License for more detai= ls.=0A+ *=0A+ * You should have received a copy of the GNU General Public= License=0A+ * along with this program; if not, write to the Free Softwa= re=0A+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02= 110-1301 USA=0A+ */=0A+#include "ffsb=5Ftg.h"=0A+#include "ffsb=5Fthread.h"= =0A+#include "ffsb=5Fop.h"=0A+#include "util.h"=0A+=0A+void init=5Fffsb=5Ft= hread(ffsb=5Fthread=5Ft * ft, struct ffsb=5Ftg *tg, unsigned bufsize,=0A+ = unsigned tg=5Fnum, unsigned thread=5Fnum)=0A+{=0A+ memset(ft, 0, size= of(ffsb=5Fthread=5Ft));=0A+=0A+ ft->tg =3D tg;=0A+ ft->tg=5Fnum =3D tg=5Fnu= m;=0A+ ft->thread=5Fnum =3D thread=5Fnum;=0A+=0A+ if (bufsize)=0A+ ft=5Fal= ter=5Fbufsize(ft, bufsize);=0A+=0A+ init=5Frandom(&ft->rd, MAX=5FRANDBUF=5F= SIZE);=0A+}=0A+=0A+void destroy=5Fffsb=5Fthread(ffsb=5Fthread=5Ft * ft)=0A+= {=0A+ free(ft->mallocbuf);=0A+ destroy=5Frandom(&ft->rd);=0A+ if (ft->fsd.c= onfig)=0A+ ffsb=5Fstatsd=5Fdestroy(&ft->fsd);=0A+}=0A+=0A+void ft=5Fset=5F= statsc(ffsb=5Fthread=5Ft * ft, ffsb=5Fstatsc=5Ft * fsc)=0A+{=0A+ ffsb=5Fsta= tsd=5Finit(&ft->fsd, fsc);=0A+}=0A+=0A+void *ft=5Frun(void *data)=0A+{=0A+ = ffsb=5Fthread=5Ft *ft =3D (ffsb=5Fthread=5Ft *) data;=0A+ tg=5Fop=5Fparams= =5Ft params;=0A+ unsigned wait=5Ftime =3D tg=5Fget=5Fwaittime(ft->tg);=0A+ = int stopval =3D tg=5Fget=5Fstopval(ft->tg);=0A+=0A+ ffsb=5Fbarrier=5Fwait(t= g=5Fget=5Fstart=5Fbarrier(ft->tg));=0A+=0A+ while (tg=5Fget=5Fflagval(ft->t= g) !=3D stopval) {=0A+ tg=5Fget=5Fop(ft->tg, &ft->rd, ¶ms);=0A+ do=5F= op(ft, params.fs, params.opnum);=0A+ ffsb=5Fmilli=5Fsleep(wait=5Ftime);=0A= + }=0A+ return NULL;=0A+}=0A+=0A+void ft=5Falter=5Fbufsize(ffsb=5Fthread=5F= t * ft, unsigned bufsize)=0A+{=0A+ if (ft->mallocbuf !=3D NULL)=0A+ free(f= t->mallocbuf);=0A+ ft->mallocbuf =3D ffsb=5Fmalloc(bufsize + 4096);=0A+ ft-= >alignedbuf =3D ffsb=5Falign=5F4k(ft->mallocbuf + (4096 - 1));=0A+}=0A+=0A+= char *ft=5Fgetbuf(ffsb=5Fthread=5Ft * ft)=0A+{=0A+ return ft->alignedbuf;= =0A+}=0A+=0A+int ft=5Fget=5Fread=5Frandom(ffsb=5Fthread=5Ft * ft)=0A+{=0A+ = return tg=5Fget=5Fread=5Frandom(ft->tg);=0A+}=0A+=0A+uint32=5Ft ft=5Fget=5F= read=5Fsize(ffsb=5Fthread=5Ft * ft)=0A+{=0A+ return tg=5Fget=5Fread=5Fsize(= ft->tg);=0A+}=0A+=0A+uint32=5Ft ft=5Fget=5Fread=5Fblocksize(ffsb=5Fthread= =5Ft * ft)=0A+{=0A+ return tg=5Fget=5Fread=5Fblocksize(ft->tg);=0A+}=0A+=0A= +int ft=5Fget=5Fwrite=5Frandom(ffsb=5Fthread=5Ft * ft)=0A+{=0A+ return tg= =5Fget=5Fwrite=5Frandom(ft->tg);=0A+}=0A+=0A+uint32=5Ft ft=5Fget=5Fwrite=5F= size(ffsb=5Fthread=5Ft * ft)=0A+{=0A+ return tg=5Fget=5Fwrite=5Fsize(ft->tg= );=0A+}=0A+=0A+uint32=5Ft ft=5Fget=5Fwrite=5Fblocksize(ffsb=5Fthread=5Ft * = ft)=0A+{=0A+ return tg=5Fget=5Fwrite=5Fblocksize(ft->tg);=0A+}=0A+=0A+int f= t=5Fget=5Ffsync=5Ffile(ffsb=5Fthread=5Ft * ft)=0A+{=0A+ return tg=5Fget=5Ff= sync=5Ffile(ft->tg);=0A+}=0A+=0A+randdata=5Ft *ft=5Fget=5Franddata(ffsb=5Ft= hread=5Ft * ft)=0A+{=0A+ return &ft->rd;=0A+}=0A+=0A+void ft=5Fincr=5Fop(ff= sb=5Fthread=5Ft * ft, unsigned opnum, unsigned increment,=0A+ uint64=5Ft b= ytes)=0A+{=0A+ ft->results.ops[opnum] +=3D increment;=0A+ ft->results.op=5F= weight[opnum]++;=0A+ ft->results.bytes[opnum] +=3D bytes;=0A+}=0A+=0A+void = ft=5Fadd=5Freadbytes(ffsb=5Fthread=5Ft * ft, uint32=5Ft bytes)=0A+{=0A+ ft-= >results.read=5Fbytes +=3D bytes;=0A+}=0A+=0A+void ft=5Fadd=5Fwritebytes(ff= sb=5Fthread=5Ft * ft, uint32=5Ft bytes)=0A+{=0A+ ft->results.write=5Fbytes = +=3D bytes;=0A+}=0A+=0A+ffsb=5Fop=5Fresults=5Ft *ft=5Fget=5Fresults(ffsb=5F= thread=5Ft * ft)=0A+{=0A+ return &ft->results;=0A+}=0A+=0A+int ft=5Fget=5Fr= ead=5Fskip(ffsb=5Fthread=5Ft * ft)=0A+{=0A+ return tg=5Fget=5Fread=5Fskip(f= t->tg);=0A+}=0A+=0A+uint32=5Ft ft=5Fget=5Fread=5Fskipsize(ffsb=5Fthread=5Ft= * ft)=0A+{=0A+ return tg=5Fget=5Fread=5Fskipsize(ft->tg);=0A+}=0A+=0A+int = ft=5Fneeds=5Fstats(ffsb=5Fthread=5Ft * ft, syscall=5Ft sys)=0A+{=0A+ int re= t =3D 0;=0A+ if (ft && ft->fsd.config && !fsc=5Fignore=5Fsys(ft->fsd.config= , sys))=0A+ ret =3D 1;=0A+ return ret;=0A+}=0A+=0A+void ft=5Fadd=5Fstat(ff= sb=5Fthread=5Ft * ft, syscall=5Ft sys, uint32=5Ft val)=0A+{=0A+ if (ft)=0A+= ffsb=5Fadd=5Fdata(&ft->fsd, sys, val);=0A+}=0A+=0A+ffsb=5Fstatsd=5Ft *ft= =5Fget=5Fstats=5Fdata(ffsb=5Fthread=5Ft * ft)=0A+{=0A+ return &ft->fsd;=0A+= }=0Adiff --git a/utils/ffsb-6.0-rc2/ffsb=5Fthread.h b/utils/ffsb-6.0-rc2/ff= sb=5Fthread.h=0Anew file mode 100644=0Aindex 0000000..9543e2f=0A--- /dev/nu= ll=0A+++ b/utils/ffsb-6.0-rc2/ffsb=5Fthread.h=0A@@ -0,0 +1,108 @@=0A+/*=0A+= * Copyright (c) International Business Machines Corp., 2001-2004=0A+ *= =0A+ * This program is free software; you can redistribute it and/or mod= ify=0A+ * it under the terms of the GNU General Public License as publish= ed by=0A+ * the Free Software Foundation; either version 2 of the License= , or=0A+ * (at your option) any later version.=0A+ *=0A+ * This program= is distributed in the hope that it will be useful,=0A+ * but WITHOUT ANY= WARRANTY; without even the implied warranty of=0A+ * MERCHANTABILITY or= FITNESS FOR A PARTICULAR PURPOSE. See=0A+ * the GNU General Public Lice= nse for more details.=0A+ *=0A+ * You should have received a copy of the = GNU General Public License=0A+ * along with this program; if not, write = to the Free Software=0A+ * Foundation, Inc., 51 Franklin Street, Fifth Fl= oor, Boston, MA 02110-1301 USA=0A+ */=0A+#ifndef =5FFFSB=5FTHREAD=5FH=5F=0A= +#define =5FFFSB=5FTHREAD=5FH=5F=0A+=0A+#include =0A+#include =0A+=0A+#include "rand.h"=0A+#include "ffsb=5Fop.h"=0A+#include "= ffsb=5Ftg.h"=0A+#include "ffsb=5Fstats.h"=0A+=0A+#include "util.h" /* for b= arrier stuff */=0A+=0A+struct ffsb=5Ftg;=0A+struct ffsb=5Fop=5Fresults;=0A+= =0A+/* FFSB thread object=0A+ *=0A+ * The thread object doesn't store any c= onfiguration information, it=0A+ * mostly just holds per-thread state infor= mation such as the random=0A+ * data store and the per-thread buffer to cop= y data to/from disk=0A+ */=0A+=0A+typedef struct ffsb=5Fthread {=0A+ unsign= ed thread=5Fnum;=0A+ unsigned tg=5Fnum;=0A+ pthread=5Ft ptid;=0A+ struct ra= nddata rd;=0A+ struct ffsb=5Ftg *tg; /* owning thread group */=0A+=0A+ /* I= f we are using Direct IO, then we must only use a 4k=0A+ * aligned buffer = so, alignedbuf=5F4k is a pointer into=0A+ * "mallocbuf" which is what mall= oc gave us.=0A+ */=0A+ char *alignedbuf;=0A+ char *mallocbuf;=0A+=0A+ stru= ct ffsb=5Fop=5Fresults results;=0A+=0A+ /* stats */=0A+ ffsb=5Fstatsd=5Ft f= sd;=0A+} ffsb=5Fthread=5Ft ;=0A+=0A+void init=5Fffsb=5Fthread(ffsb=5Fthread= =5Ft *, struct ffsb=5Ftg *, unsigned,=0A+ unsigned, unsigned);=0A+v= oid destroy=5Fffsb=5Fthread(ffsb=5Fthread=5Ft *);=0A+=0A+/* Owning thread g= roup will start thread with this, thread runs until=0A+ * *ft->checkval =3D= =3D ft->stopval. Yes this is not strictly=0A+ * synchronized, but that is = okay for our purposes, and it limits (IMO=0A+ * expensive) bus-locking.=0A+= *=0A+ * pthread=5Fcreate() is called by tg with this function as a paramet= er=0A+ * data is a (ffsb=5Fthread=5Ft*)=0A+ */=0A+void *ft=5Frun(void *);= =0A+=0A+void ft=5Falter=5Fbufsize(ffsb=5Fthread=5Ft *, unsigned);=0A+char *= ft=5Fgetbuf(ffsb=5Fthread=5Ft *);=0A+=0A+int ft=5Fget=5Fread=5Frandom(ffsb= =5Fthread=5Ft *);=0A+uint32=5Ft ft=5Fget=5Fread=5Fsize(ffsb=5Fthread=5Ft *)= ;=0A+uint32=5Ft ft=5Fget=5Fread=5Fblocksize(ffsb=5Fthread=5Ft *);=0A+=0A+in= t ft=5Fget=5Fwrite=5Frandom(ffsb=5Fthread=5Ft *);=0A+uint32=5Ft ft=5Fget=5F= write=5Fsize(ffsb=5Fthread=5Ft *);=0A+uint32=5Ft ft=5Fget=5Fwrite=5Fblocksi= ze(ffsb=5Fthread=5Ft *);=0A+=0A+int ft=5Fget=5Ffsync=5Ffile(ffsb=5Fthread= =5Ft *);=0A+=0A+randdata=5Ft *ft=5Fget=5Franddata(ffsb=5Fthread=5Ft *);=0A+= =0A+void ft=5Fincr=5Fop(ffsb=5Fthread=5Ft *ft, unsigned opnum, unsigned inc= rement, uint64=5Ft bytes);=0A+=0A+void ft=5Fadd=5Freadbytes(ffsb=5Fthread= =5Ft *, uint32=5Ft);=0A+void ft=5Fadd=5Fwritebytes(ffsb=5Fthread=5Ft *, uin= t32=5Ft);=0A+=0A+int ft=5Fget=5Fread=5Fskip(ffsb=5Fthread=5Ft *);=0A+uint32= =5Ft ft=5Fget=5Fread=5Fskipsize(ffsb=5Fthread=5Ft *);=0A+=0A+ffsb=5Fop=5Fre= sults=5Ft *ft=5Fget=5Fresults(ffsb=5Fthread=5Ft *);=0A+=0A+void ft=5Fset=5F= statsc(ffsb=5Fthread=5Ft *, ffsb=5Fstatsc=5Ft *);=0A+=0A+/* for these two, = ft =3D=3D NULL is OK */=0A+int ft=5Fneeds=5Fstats(ffsb=5Fthread=5Ft *, sysc= all=5Ft);=0A+void ft=5Fadd=5Fstat(ffsb=5Fthread=5Ft *, syscall=5Ft, uint32= =5Ft);=0A+=0A+ffsb=5Fstatsd=5Ft *ft=5Fget=5Fstats=5Fdata(ffsb=5Fthread=5Ft = *);=0A+=0A+#endif /* =5FFFSB=5FTHREAD=5FH=5F */=0Adiff --git a/utils/ffsb-6= .0-rc2/fh.c b/utils/ffsb-6.0-rc2/fh.c=0Anew file mode 100644=0Aindex 000000= 0..196e5be=0A--- /dev/null=0A+++ b/utils/ffsb-6.0-rc2/fh.c=0A@@ -0,0 +1,280= @@=0A+/*=0A+ * Copyright (c) International Business Machines Corp., 2001= -2004=0A+ *=0A+ * This program is free software; you can redistribute it= and/or modify=0A+ * it under the terms of the GNU General Public License= as published by=0A+ * the Free Software Foundation; either version 2 of = the License, or=0A+ * (at your option) any later version.=0A+ *=0A+ * T= his program is distributed in the hope that it will be useful,=0A+ * but = WITHOUT ANY WARRANTY; without even the implied warranty of=0A+ * MERCHAN= TABILITY or FITNESS FOR A PARTICULAR PURPOSE. See=0A+ * the GNU General = Public License for more details.=0A+ *=0A+ * You should have received a c= opy of the GNU General Public License=0A+ * along with this program; if = not, write to the Free Software=0A+ * Foundation, Inc., 51 Franklin Stree= t, Fifth Floor, Boston, MA 02110-1301 USA=0A+ */=0A+=0A+#define FILE=5FOFFS= ET=5FBITS 64=0A+=0A+#include =0A+#include =0A+#inc= lude =0A+#include =0A+#include =0A+#include =0A+#include =0A+#include =0A+=0A+#include "ff= sb.h"=0A+#include "fh.h"=0A+=0A+#include "config.h"=0A+=0A+/* !!! ugly */= =0A+#ifndef HAVE=5FOPEN64=0A+#define open64 open=0A+#endif=0A+=0A+#ifndef H= AVE=5FFSEEKO64=0A+#define lseek64 lseek=0A+#endif=0A+=0A+/* All these funct= ions read the global mainconfig->bufferedio variable=0A+ * to determine if = they are to do buffered i/o or normal.=0A+ *=0A+ * ha, well, they're suppos= ed to anyway...!!! TODO -SR 2006/05/14=0A+ */=0A+=0A+static void do=5Fstats= (struct timeval *start, struct timeval *end,=0A+ ffsb=5Fthread=5Ft * = ft, ffsb=5Ffs=5Ft * fs, syscall=5Ft sys)=0A+{=0A+ struct timeval diff;=0A+ = uint32=5Ft value =3D 0;=0A+=0A+ if (!ft && !fs)=0A+ return;=0A+=0A+ timers= ub(end, start, &diff);=0A+=0A+ value =3D 1000000 * diff.tv=5Fsec + diff.tv= =5Fusec;=0A+=0A+ if (ft && ft=5Fneeds=5Fstats(ft, sys))=0A+ ft=5Fadd=5Fsta= t(ft, sys, value);=0A+ if (fs && fs=5Fneeds=5Fstats(fs, sys))=0A+ fs=5Fadd= =5Fstat(fs, sys, value);=0A+}=0A+=0A+static int fhopenhelper(char *filename= , char *bufflags, int flags,=0A+ ffsb=5Fthread=5Ft * ft, ffsb=5Ffs=5Ft * = fs)=0A+{=0A+ int fd =3D 0;=0A+ struct timeval start, end;=0A+ int need=5Fst= ats =3D ft=5Fneeds=5Fstats(ft, SYS=5FOPEN) ||=0A+ fs=5Fneeds=5Fstats(fs= , SYS=5FOPEN);=0A+=0A+ flags |=3D O=5FLARGEFILE;=0A+=0A+ if (need=5Fstats)= =0A+ gettimeofday(&start, NULL);=0A+=0A+ fd =3D open64(filename, flags, S= =5FIRWXU);=0A+ if (fd < 0) {=0A+ perror(filename);=0A+ exit(0);=0A+ }=0A+= =0A+ if (need=5Fstats) {=0A+ gettimeofday(&end, NULL);=0A+ do=5Fstats(&st= art, &end, ft, fs, SYS=5FOPEN);=0A+ }=0A+=0A+ return fd;=0A+}=0A+=0A+int fh= openread(char *filename, ffsb=5Fthread=5Ft * ft, ffsb=5Ffs=5Ft * fs)=0A+{= =0A+ int flags =3D O=5FRDONLY;=0A+ int directio =3D fs=5Fget=5Fdirectio(fs)= ;=0A+=0A+ if (directio)=0A+ flags |=3D O=5FDIRECT;=0A+ return fhopenhelper= (filename, "r", flags, ft, fs);=0A+}=0A+=0A+int fhopenappend(char *filename= , ffsb=5Fthread=5Ft * ft, ffsb=5Ffs=5Ft * fs)=0A+{=0A+ int flags =3D O=5FAP= PEND | O=5FWRONLY;=0A+ int directio =3D fs=5Fget=5Fdirectio(fs);=0A+=0A+ if= (directio)=0A+ flags |=3D O=5FDIRECT;=0A+ return fhopenhelper(filename, "= a", flags, ft, fs);=0A+}=0A+=0A+int fhopenwrite(char *filename, ffsb=5Fthre= ad=5Ft * ft, ffsb=5Ffs=5Ft * fs)=0A+{=0A+ int flags =3D O=5FWRONLY;=0A+ int= directio =3D fs=5Fget=5Fdirectio(fs);=0A+=0A+ if (directio)=0A+ flags |= =3D O=5FDIRECT;=0A+ return fhopenhelper(filename, "w", flags, ft, fs);=0A+}= =0A+=0A+int fhopencreate(char *filename, ffsb=5Fthread=5Ft * ft, ffsb=5Ffs= =5Ft * fs)=0A+{=0A+ int flags =3D O=5FCREAT | O=5FRDWR | O=5FTRUNC;=0A+ int= directio =3D fs=5Fget=5Fdirectio(fs);=0A+=0A+ if (directio)=0A+ flags |= =3D O=5FDIRECT;=0A+ return fhopenhelper(filename, "rw", flags, ft, fs);=0A+= }=0A+=0A+void fhread(int fd, void *buf, uint64=5Ft size, ffsb=5Fthread=5Ft = * ft,=0A+ ffsb=5Ffs=5Ft * fs)=0A+{=0A+ ssize=5Ft realsize;=0A+ struct t= imeval start, end;=0A+ int need=5Fstats =3D ft=5Fneeds=5Fstats(ft, SYS=5FRE= AD) ||=0A+ fs=5Fneeds=5Fstats(fs, SYS=5FREAD);=0A+=0A+ assert(size <=3D= SIZE=5FMAX);=0A+ if (need=5Fstats)=0A+ gettimeofday(&start, NULL);=0A+ re= alsize =3D read(fd, buf, size);=0A+=0A+ if (need=5Fstats) {=0A+ gettimeofd= ay(&end, NULL);=0A+ do=5Fstats(&start, &end, ft, fs, SYS=5FREAD);=0A+ }=0A= +=0A+ if (realsize !=3D size) {=0A+ printf("Read %lld instead of %llu byte= s.\n",=0A+ (unsigned long long)realsize, (unsigned long long)size);= =0A+ perror("read");=0A+ exit(1);=0A+ }=0A+}=0A+=0A+void fhwrite(int fd, = void *buf, uint32=5Ft size, ffsb=5Fthread=5Ft * ft,=0A+ ffsb=5Ffs=5Ft = * fs)=0A+{=0A+ ssize=5Ft realsize;=0A+ struct timeval start, end;=0A+ int n= eed=5Fstats =3D ft=5Fneeds=5Fstats(ft, SYS=5FWRITE) ||=0A+ fs=5Fneeds= =5Fstats(fs, SYS=5FWRITE);=0A+=0A+ assert(size <=3D SIZE=5FMAX);=0A+ if (ne= ed=5Fstats)=0A+ gettimeofday(&start, NULL);=0A+=0A+ realsize =3D write(fd,= buf, size);=0A+=0A+ if (need=5Fstats) {=0A+ gettimeofday(&end, NULL);=0A+= do=5Fstats(&start, &end, ft, fs, SYS=5FWRITE);=0A+ }=0A+=0A+ if (realsize= !=3D size) {=0A+ printf("Wrote %d instead of %d bytes.\n"=0A+ "Pr= obably out of disk space\n", realsize, size);=0A+ perror("write");=0A+ ex= it(1);=0A+ }=0A+}=0A+=0A+void fhseek(int fd, uint64=5Ft offset, int whence,= ffsb=5Fthread=5Ft * ft,=0A+ ffsb=5Ffs=5Ft * fs)=0A+{=0A+ uint64=5Ft re= s;=0A+ struct timeval start, end;=0A+ int need=5Fstats =3D ft=5Fneeds=5Fsta= ts(ft, SYS=5FLSEEK) ||=0A+ fs=5Fneeds=5Fstats(fs, SYS=5FLSEEK);=0A+=0A+= if ((whence =3D=3D SEEK=5FCUR) && (offset =3D=3D 0))=0A+ return;=0A+=0A+ = if (need=5Fstats)=0A+ gettimeofday(&start, NULL);=0A+=0A+ res =3D lseek64(= fd, offset, whence);=0A+=0A+ if (need=5Fstats) {=0A+ gettimeofday(&end, NU= LL);=0A+ do=5Fstats(&start, &end, ft, fs, SYS=5FLSEEK);=0A+ }=0A+ if ((whe= nce =3D=3D SEEK=5FSET) && (res !=3D offset))=0A+ perror("seek");=0A+=0A+ i= f (res =3D=3D -1) {=0A+ if (whence =3D=3D SEEK=5FSET)=0A+ fprintf(stderr= , "tried to seek to %lld\n", offset);=0A+ else=0A+ fprintf(stderr, "trie= d to seek from current "=0A+ "position to %lld\n", offset);=0A+=0A+ per= ror("seek");=0A+ exit(1);=0A+ }=0A+}=0A+=0A+void fhclose(int fd, ffsb=5Fth= read=5Ft * ft, ffsb=5Ffs=5Ft * fs)=0A+{=0A+ struct timeval start, end;=0A+ = int need=5Fstats =3D ft=5Fneeds=5Fstats(ft, SYS=5FCLOSE) ||=0A+ fs=5Fne= eds=5Fstats(fs, SYS=5FCLOSE);=0A+=0A+ if (need=5Fstats)=0A+ gettimeofday(&= start, NULL);=0A+=0A+ close(fd);=0A+=0A+ if (need=5Fstats) {=0A+ gettimeof= day(&end, NULL);=0A+ do=5Fstats(&start, &end, ft, fs, SYS=5FCLOSE);=0A+ }= =0A+}=0A+=0A+void fhstat(char *name, ffsb=5Fthread=5Ft * ft, ffsb=5Ffs=5Ft = * fs)=0A+{=0A+ struct timeval start, end;=0A+ struct stat tmp=5Fstat;=0A+= =0A+ int need=5Fstats =3D ft=5Fneeds=5Fstats(ft, SYS=5FSTAT) ||=0A+ fs= =5Fneeds=5Fstats(fs, SYS=5FCLOSE);=0A+=0A+ if (need=5Fstats)=0A+ gettimeof= day(&start, NULL);=0A+=0A+ if (stat(name, &tmp=5Fstat)) {=0A+ fprintf(stde= rr, "stat call failed for file %s\n", name);=0A+ exit(1);=0A+ }=0A+=0A+ if= (need=5Fstats) {=0A+ gettimeofday(&end, NULL);=0A+ do=5Fstats(&start, &e= nd, ft, fs, SYS=5FSTAT);=0A+ }=0A+}=0A+=0A+int writefile=5Fhelper(int fd, u= int64=5Ft size, uint32=5Ft blocksize, char *buf,=0A+ struct ffsb=5Fth= read *ft, struct ffsb=5Ffs *fs)=0A+{=0A+ uint64=5Ft iterations, a;=0A+ uint= 64=5Ft last;=0A+=0A+ iterations =3D size / blocksize;=0A+ last =3D size % b= locksize;=0A+=0A+ for (a =3D 0; a < iterations; a++)=0A+ fhwrite(fd, buf, = blocksize, ft, fs);=0A+=0A+ if (last) {=0A+ a++;=0A+ fhwrite(fd, buf, las= t, ft, fs);=0A+ }=0A+ return a;=0A+}=0Adiff --git a/utils/ffsb-6.0-rc2/fh.h= b/utils/ffsb-6.0-rc2/fh.h=0Anew file mode 100644=0Aindex 0000000..23a198b= =0A--- /dev/null=0A+++ b/utils/ffsb-6.0-rc2/fh.h=0A@@ -0,0 +1,41 @@=0A+/*= =0A+ * Copyright (c) International Business Machines Corp., 2001-2004=0A+= *=0A+ * This program is free software; you can redistribute it and/or m= odify=0A+ * it under the terms of the GNU General Public License as publi= shed by=0A+ * the Free Software Foundation; either version 2 of the Licen= se, or=0A+ * (at your option) any later version.=0A+ *=0A+ * This progr= am is distributed in the hope that it will be useful,=0A+ * but WITHOUT A= NY WARRANTY; without even the implied warranty of=0A+ * MERCHANTABILITY = or FITNESS FOR A PARTICULAR PURPOSE. See=0A+ * the GNU General Public Li= cense for more details.=0A+ *=0A+ * You should have received a copy of th= e GNU General Public License=0A+ * along with this program; if not, writ= e to the Free Software=0A+ * Foundation, Inc., 51 Franklin Street, Fifth = Floor, Boston, MA 02110-1301 USA=0A+ */=0A+#ifndef =5FFH=5FH=5F=0A+#define = =5FFH=5FH=5F=0A+=0A+#include =0A+=0A+struct ffsb=5Fthread;=0A+s= truct ffsb=5Ffs;=0A+=0A+int fhopenread(char *, struct ffsb=5Fthread *, stru= ct ffsb=5Ffs *);=0A+int fhopenwrite(char *, struct ffsb=5Fthread *, struct = ffsb=5Ffs *);=0A+int fhopencreate(char *, struct ffsb=5Fthread *, struct ff= sb=5Ffs *);=0A+int fhopenappend(char *, struct ffsb=5Fthread *, struct ffsb= =5Ffs *);=0A+=0A+void fhread(int, void *, uint64=5Ft, struct ffsb=5Fthread = *, struct ffsb=5Ffs *);=0A+=0A+/* can only write up to size=5Ft bytes at a = time, so size is a uint32=5Ft */=0A+void fhwrite(int, void *, uint32=5Ft, s= truct ffsb=5Fthread *, struct ffsb=5Ffs *);=0A+void fhseek(int, uint64=5Ft,= int, struct ffsb=5Fthread *, struct ffsb=5Ffs *);=0A+void fhclose(int, str= uct ffsb=5Fthread *, struct ffsb=5Ffs *);=0A+=0A+int writefile=5Fhelper(int= , uint64=5Ft, uint32=5Ft, char *, struct ffsb=5Fthread *,=0A+ struct = ffsb=5Ffs *);=0A+=0A+#endif /* =5FFH=5FH=5F */=0Adiff --git a/utils/ffsb-6.= 0-rc2/filelist.c b/utils/ffsb-6.0-rc2/filelist.c=0Anew file mode 100644=0Ai= ndex 0000000..98fdad4=0A--- /dev/null=0A+++ b/utils/ffsb-6.0-rc2/filelist.c= =0A@@ -0,0 +1,499 @@=0A+/*=0A+ * Copyright (c) International Business Mac= hines Corp., 2001-2004=0A+ *=0A+ * This program is free software; you ca= n redistribute it and/or modify=0A+ * it under the terms of the GNU Gener= al Public License as published by=0A+ * the Free Software Foundation; eit= her version 2 of the License, or=0A+ * (at your option) any later version= .=0A+ *=0A+ * This program is distributed in the hope that it will be use= ful,=0A+ * but WITHOUT ANY WARRANTY; without even the implied warranty o= f=0A+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See=0A+ * = the GNU General Public License for more details.=0A+ *=0A+ * You should = have received a copy of the GNU General Public License=0A+ * along with t= his program; if not, write to the Free Software=0A+ * Foundation, Inc., = 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA=0A+ */=0A+#inclu= de =0A+#include =0A+#include =0A+#includ= e =0A+#include =0A+#include =0A+#include =0A+#include =0A+=0A+#include "rand.h"=0A+#include "filelist.= h"=0A+#include "util.h"=0A+#include "rwlock.h"=0A+#include "rbt.h"=0A+#incl= ude "cirlist.h"=0A+=0A+#if 0=0A+static=0A+void print=5Fcl(struct cirlist *c= l)=0A+{=0A+ struct cnode *cur =3D cl->head;=0A+ printf("curlist: ");=0A+ if= (cur =3D=3D NULL) {=0A+ printf("\n");=0A+ return;=0A+ }=0A+ do {=0A+ pr= intf("%d ", cur->obj->num);=0A+ cur =3D cur->next;=0A+ } while (cur !=3D c= l->head);=0A+ printf("\n");=0A+}=0A+#endif=0A+=0A+#if 0=0A+static=0A+int no= de=5Fcmp(struct ffsb=5Ffile *a, struct ffsb=5Ffile *b)=0A+{=0A+ return a->n= um - b->num;=0A+}=0A+#endif=0A+=0A+static=0A+void build=5Fdirs(struct bench= files *bf)=0A+{=0A+ char buf[FILENAME=5FMAX];=0A+ int i;=0A+=0A+ if (mkdir(= bf->basedir, S=5FIRWXU) < 0)=0A+ if (errno !=3D EEXIST) {=0A+ perror(bf-= >basedir);=0A+ exit(1);=0A+ }=0A+ for (i =3D 0; i < bf->numsubdirs; i++)= {=0A+ snprintf(buf, FILENAME=5FMAX, "%s/%s%s%d",=0A+ bf->basedir, bf->= basename, SUBDIRNAME=5FBASE, i);=0A+ if (mkdir(buf, S=5FIRWXU) =3D=3D -1)= =0A+ if (errno !=3D EEXIST) {=0A+ perror(buf);=0A+ exit(1);=0A+ }= =0A+ }=0A+}=0A+=0A+void init=5Ffilelist(struct benchfiles *b, char *basedir= , char *basename,=0A+ uint32=5Ft numsubdirs, int builddirs)=0A+{=0A+ me= mset(b, 0, sizeof(struct benchfiles));=0A+ b->basedir =3D ffsb=5Fstrdup(bas= edir);=0A+ b->basename =3D ffsb=5Fstrdup(basename);=0A+ b->numsubdirs =3D n= umsubdirs;=0A+ init=5Frwlock(&b->fileslock);=0A+ b->files =3D rbtree=5Fcons= truct();=0A+ b->dirs =3D rbtree=5Fconstruct();=0A+ b->holes =3D ffsb=5Fmall= oc(sizeof(struct cirlist));=0A+ b->dholes =3D ffsb=5Fmalloc(sizeof(struct c= irlist));=0A+ init=5Fcirlist(b->holes);=0A+ init=5Fcirlist(b->dholes);=0A+= =0A+ if (builddirs)=0A+ build=5Fdirs(b);=0A+}=0A+=0A+static void file=5Fde= structor(struct ffsb=5Ffile *file)=0A+{=0A+ free(file->name);=0A+ free(file= );=0A+}=0A+=0A+void destroy=5Ffilelist(struct benchfiles *bf)=0A+{=0A+ free= (bf->basedir);=0A+ free(bf->basename);=0A+=0A+ while (!cl=5Fempty(bf->holes= )) {=0A+ struct ffsb=5Ffile *cur =3D cl=5Fremove=5Fhead(bf->holes);=0A+ f= ile=5Fdestructor(cur);=0A+ }=0A+ free(bf->holes);=0A+ rbtree=5Fclean(bf->fi= les, file=5Fdestructor);=0A+ free(bf->files);=0A+}=0A+=0A+struct ffsb=5Ffil= e *add=5Ffile(struct benchfiles *b, uint64=5Ft size, randdata=5Ft * rd)=0A+= {=0A+ struct ffsb=5Ffile *newfile, *oldfile =3D NULL;=0A+ int filenum =3D 0= ;=0A+=0A+ /* We pre-allocate here, because I don't want to spend time=0A+ = * malloc'ing while the list is locked we free it later if=0A+ * necessary= =0A+ */=0A+ newfile =3D ffsb=5Fmalloc(sizeof(struct ffsb=5Ffile));=0A+=0A+= newfile->size =3D size;=0A+ init=5Frwlock(&(newfile->lock));=0A+=0A+ /* Wr= ite lock the filelist, begin critical section */=0A+ rw=5Flock=5Fwrite(&b->= fileslock);=0A+=0A+ /* First check "holes" for a file */=0A+ if (!cl=5Femp= ty(b->holes)) {=0A+ oldfile =3D cl=5Fremove=5Fhead(b->holes);=0A+ rbtree= =5Finsert(b->files, oldfile);=0A+ rw=5Flock=5Fwrite(&oldfile->lock);=0A+ }= else {=0A+ filenum =3D b->listsize;=0A+ b->listsize++;=0A+=0A+ newfile-= >num =3D filenum;=0A+ rbtree=5Finsert(b->files, newfile);=0A+=0A+ rw=5Flo= ck=5Fwrite(&newfile->lock);=0A+ }=0A+=0A+ /* unlock filelist */=0A+ rw=5Fun= lock=5Fwrite(&b->fileslock);=0A+=0A+ if (oldfile =3D=3D NULL) {=0A+ char b= uf[FILENAME=5FMAX];=0A+ int randdir =3D getrandom(rd, b->numsubdirs + 1);= =0A+ int namesize =3D 0;=0A+ if (randdir =3D=3D 0)=0A+ namesize =3D snp= rintf(buf, FILENAME=5FMAX, "%s/%s%s%d",=0A+ b->basedir, b->basename= ,=0A+ FILENAME=5FBASE, filenum);=0A+ else=0A+ namesize =3D snpri= ntf(buf, FILENAME=5FMAX,=0A+ "%s/%s%s%d/%s%s%d", b->basedir,=0A+ = b->basename, SUBDIRNAME=5FBASE,=0A+ randdir - 1, b->basename,= =0A+ FILENAME=5FBASE, filenum);=0A+ if (namesize >=3D FILENAME=5FM= AX)=0A+ /* !!! do something about this ? */=0A+ printf("warning: filena= me \"%s\" too long\n", buf);=0A+ newfile->name =3D ffsb=5Fstrdup(buf);=0A+= return newfile;=0A+ } else {=0A+ free(newfile);=0A+ return oldfile;=0A+= }=0A+}=0A+=0A+struct ffsb=5Ffile *add=5Fdir(struct benchfiles *b, uint64= =5Ft size, randdata=5Ft * rd)=0A+{=0A+ struct ffsb=5Ffile *newdir, *olddir = =3D NULL;=0A+ int dirnum =3D 0;=0A+=0A+ newdir =3D ffsb=5Fmalloc(sizeof(str= uct ffsb=5Ffile));=0A+=0A+ init=5Frwlock(&newdir->lock);=0A+=0A+ /* write l= ock the filelist, beging critical section */=0A+ rw=5Flock=5Fwrite(&b->file= slock);=0A+=0A+ /* First check "holes" for a file */=0A+ if (!cl=5Fempty(b= ->dholes)) {=0A+ olddir =3D cl=5Fremove=5Fhead(b->dholes);=0A+ rbtree=5Fi= nsert(b->files, olddir);=0A+ rw=5Flock=5Fwrite(&olddir->lock);=0A+ } else = {=0A+ dirnum =3D b->numsubdirs;=0A+ b->numsubdirs++;=0A+ printf("dirnum:= %d\n", dirnum);=0A+ newdir->num =3D dirnum;=0A+ rbtree=5Finsert(b->dirs,= newdir);=0A+=0A+ rw=5Flock=5Fwrite(&newdir->lock);=0A+ }=0A+=0A+ /* unloc= k filelist */=0A+ rw=5Funlock=5Fwrite(&b->fileslock);=0A+=0A+ if (olddir = =3D=3D NULL) {=0A+ char buf[FILENAME=5FMAX];=0A+ int namesize =3D 0;=0A+ = namesize =3D snprintf(buf, FILENAME=5FMAX, "%s/%s%s%d",=0A+ b->base= dir, b->basename,=0A+ SUBDIRNAME=5FBASE, dirnum);=0A+ if (namesize = >=3D FILENAME=5FMAX)=0A+ printf("warning: filename \"%s\" too long\n", bu= f);=0A+ /* TODO: take action here... */=0A+ newdir->name =3D ffsb=5Fstrdu= p(buf);=0A+ return newdir;=0A+ } else {=0A+ free(newdir);=0A+ return old= dir;=0A+ }=0A+}=0A+=0A+/* Private version of above function used only for r= eusing a=0A+ * fileset.=0A+ */=0A+static struct ffsb=5Ffile *add=5Ffile=5Fn= amed(struct benchfiles *b, uint64=5Ft size,=0A+ char *name)=0A+{=0A+ st= ruct ffsb=5Ffile *newfile =3D NULL;=0A+=0A+ newfile =3D ffsb=5Fmalloc(sizeo= f(struct ffsb=5Ffile));=0A+ memset(newfile, 0, sizeof(struct ffsb=5Ffile));= =0A+ newfile->name =3D ffsb=5Fstrdup(name);=0A+ newfile->size =3D size;=0A+= init=5Frwlock(&newfile->lock);=0A+=0A+ /* Write lock the filelist, begin c= ritical section */=0A+ rw=5Flock=5Fwrite(&b->fileslock);=0A+=0A+ newfile->n= um =3D b->listsize;=0A+ b->listsize++;=0A+=0A+ /* Add a new file to the rbt= ree */=0A+ rbtree=5Finsert(b->files, newfile);=0A+=0A+ rw=5Flock=5Fwrite(&n= ewfile->lock);=0A+=0A+ /* Unlock filelist */=0A+ rw=5Funlock=5Fwrite(&b->fi= leslock);=0A+=0A+ return newfile;=0A+}=0A+=0A+#if 0=0A+static void print=5F= rb=5Fhelper(rb=5Fnode * cur)=0A+{=0A+ if (cur !=3D NULL) {=0A+ print=5Frb= =5Fhelper(cur->left);=0A+ printf("%d ", cur->object->num);=0A+ print=5Frb= =5Fhelper(cur->right);=0A+ }=0A+}=0A+=0A+static void print=5Frb(rb=5Ftree *= tree)=0A+{=0A+ print=5Frb=5Fhelper(tree->root);=0A+}=0A+#endif=0A+=0A+void= remove=5Ffile(struct benchfiles *b, struct ffsb=5Ffile *entry)=0A+{=0A+ rw= =5Flock=5Fwrite(&b->fileslock);=0A+=0A+ rbtree=5Fremove(b->files, entry, NU= LL);=0A+ /* add node to the cir. list of "holes" */=0A+ cl=5Finsert=5Ftail(= b->holes, entry);=0A+=0A+ rw=5Funlock=5Fwrite(&b->fileslock);=0A+}=0A+=0A+s= tatic struct ffsb=5Ffile *choose=5Ffile(struct benchfiles *b, randdata=5Ft = * rd)=0A+{=0A+ rb=5Fnode *cur =3D NULL;=0A+ int chosen =3D 0;=0A+ struct ff= sb=5Ffile temp;=0A+ temp.num =3D chosen;=0A+=0A+ if (b->listsize =3D=3D 0) = {=0A+ fprintf(stderr, "No more files to operate on,"=0A+ " try making mo= re initial files "=0A+ "or fewer delete operations\n");=0A+ exit(0);=0A+= }=0A+=0A+ while (cur =3D=3D NULL) {=0A+ chosen =3D getrandom(rd, b->lists= ize);=0A+ temp.num =3D chosen;=0A+ cur =3D rbtree=5Ffind(b->files, &temp)= ;=0A+ }=0A+ return cur->object;=0A+}=0A+=0A+struct ffsb=5Ffile *choose=5Ffi= le=5Freader(struct benchfiles *bf, randdata=5Ft * rd)=0A+{=0A+ struct ffsb= =5Ffile *ret;=0A+=0A+ rw=5Flock=5Fread(&bf->fileslock);=0A+ /* If b->holes-= >count =3D=3D bf->listsize, all files have been=0A+ * deleted!=0A+ */=0A+= assert(bf->holes->count !=3D bf->listsize);=0A+=0A+ ret =3D choose=5Ffile(= bf, rd);=0A+ if (rw=5Ftrylock=5Fread(&ret->lock)) {=0A+ rw=5Funlock=5Fread= (&bf->fileslock);=0A+ return choose=5Ffile=5Freader(bf, rd);=0A+ }=0A+=0A+= rw=5Funlock=5Fread(&bf->fileslock);=0A+ return ret;=0A+}=0A+=0A+struct ffs= b=5Ffile *choose=5Ffile=5Fwriter(struct benchfiles *bf, randdata=5Ft * rd)= =0A+{=0A+ struct ffsb=5Ffile *ret;=0A+=0A+ rw=5Flock=5Fread(&bf->fileslock)= ;=0A+ assert(bf->holes->count !=3D bf->listsize);=0A+ ret =3D choose=5Ffile= (bf, rd);=0A+=0A+ if (rw=5Ftrylock=5Fwrite(&ret->lock)) {=0A+ rw=5Funlock= =5Fread(&bf->fileslock);=0A+ return choose=5Ffile=5Fwriter(bf, rd);=0A+ }= =0A+=0A+ rw=5Funlock=5Fread(&bf->fileslock);=0A+ return ret;=0A+}=0A+=0A+vo= id unlock=5Ffile=5Freader(struct ffsb=5Ffile *file)=0A+{=0A+ rw=5Funlock=5F= read(&file->lock);=0A+}=0A+=0A+void unlock=5Ffile=5Fwriter(struct ffsb=5Ffi= le *file)=0A+{=0A+ rw=5Funlock=5Fwrite(&file->lock);=0A+}=0A+=0A+void renam= e=5Ffile(struct ffsb=5Ffile *file)=0A+{=0A+ char *newname =3D malloc(strlen= (file->name) + 2);=0A+ sprintf(newname, "%sa", file->name);=0A+ file->name = =3D newname;=0A+}=0A+=0A+int validate=5Ffilename(struct benchfiles *bf, cha= r *name)=0A+{=0A+ int retval =3D -1;=0A+ char fmt=5Fstr[FILENAME=5FMAX];=0A= + if (FILENAME=5FMAX <=3D snprintf(fmt=5Fstr, FILENAME=5FMAX,=0A+ "= %s%s%%d", bf->basename, FILENAME=5FBASE)) {=0A+ printf("filename is too lo= ng declaring it invalid\n");=0A+ return -1;=0A+ }=0A+=0A+ sscanf(name, fmt= =5Fstr, &retval);=0A+ return retval;=0A+}=0A+=0A+int validate=5Fdirname(str= uct benchfiles *bf, char *name)=0A+{=0A+ int retval =3D -1;=0A+ char fmt=5F= str[FILENAME=5FMAX];=0A+ if (FILENAME=5FMAX <=3D snprintf(fmt=5Fstr, FILENA= ME=5FMAX, "%s%s%%d",=0A+ bf->basename, SUBDIRNAME=5FBASE)) {=0A+ p= rintf("dirname is too long declaring it invalid\n");=0A+ return -1;=0A+ }= =0A+=0A+ sscanf(name, fmt=5Fstr, &retval);=0A+ return retval;=0A+}=0A+=0A+/= * Do all the dirty work of recursing through a directory structure=0A+ * ch= eck everything for validitiy and update everything properly.=0A+ * Note it = does not check filesizes !!!, it doesn't know anything=0A+ * about them=0A+= */=0A+static int add=5Fdir=5Fto=5Ffilelist(struct benchfiles *bf, DIR * su= bdir,=0A+ char *subdir=5Fpath, fl=5Fvalidation=5Ffunc=5Ft vfunc,= =0A+ void *vf=5Fdata)=0A+{=0A+ int retval =3D 0;=0A+ struct dirent= *d=5Fent =3D NULL;=0A+=0A+ while ((d=5Fent =3D readdir(subdir)) !=3D NULL)= {=0A+ DIR *tmp =3D NULL;=0A+ char filename=5Fbuf[FILENAME=5FMAX * 2];=0A= +=0A+ if (FILENAME=5FMAX < snprintf(filename=5Fbuf, FILENAME=5FMAX, "%s/%s= ",=0A+ subdir=5Fpath, d=5Fent->d=5Fname)) {=0A+ printf("filename = \"%s\" too long aborting\n",=0A+ filename=5Fbuf);=0A+ return -1;= =0A+ }=0A+ tmp =3D opendir(filename=5Fbuf);=0A+ if (tmp =3D=3D NULL) {= =0A+ struct ffsb=5Ffile *ffsb=5Ffile =3D NULL;=0A+=0A+ if (validate=5Ff= ilename(bf, d=5Fent->d=5Fname) < 0) {=0A+ printf("filename \"%s\" is inv= alid aborting\n",=0A+ d=5Fent->d=5Fname);=0A+ return -1;=0A+ = }=0A+ /* Verify size/other attributes via callback */=0A+ if (vfunc(b= f, filename=5Fbuf, vf=5Fdata)) {=0A+ printf("filename \"%s\" didn't pass= "=0A+ "validation\n", d=5Fent->d=5Fname);=0A+ return -1;=0A+ = }=0A+ /* Add file to data structure */=0A+ ffsb=5Ffile =3D=0A+ = add=5Ffile=5Fnamed(bf, ffsb=5Fget=5Ffilesize(filename=5Fbuf),=0A+ fi= lename=5Fbuf);=0A+ unlock=5Ffile=5Fwriter(ffsb=5Ffile);=0A+ } else {=0A+= /* Check for the usual suspects and skip them */=0A+ if ((0 =3D=3D str= cmp(".", d=5Fent->d=5Fname)) ||=0A+ (0 =3D=3D strcmp("..", d=5Fent->d= =5Fname))) {=0A+ closedir(tmp);=0A+ continue;=0A+ }=0A+ if (valid= ate=5Fdirname(bf, d=5Fent->d=5Fname) < 0) {=0A+ printf("dirname \"%s\" i= s invalid aborting\n",=0A+ d=5Fent->d=5Fname);=0A+ closedir(tm= p);=0A+ return -1;=0A+ }=0A+ if (vfunc(bf, filename=5Fbuf, vf=5Fdata= )) {=0A+ printf("dir \"%s\" didn't pass validation\n",=0A+ d= =5Fent->d=5Fname);=0A+ closedir(tmp);=0A+ return -1;=0A+ }=0A+ /*= Update filelist */=0A+ bf->numsubdirs++;=0A+=0A+ /* recurse */=0A+ r= etval +=3D add=5Fdir=5Fto=5Ffilelist(bf, tmp, filename=5Fbuf,=0A+ = vfunc, vf=5Fdata);=0A+=0A+ /* clean up */=0A+ closedir(tmp);=0A+ }= =0A+ }=0A+ return retval;=0A+}=0A+=0A+int grab=5Fold=5Ffileset(struct bench= files *bf, char *basename,=0A+ fl=5Fvalidation=5Ffunc=5Ft vfunc, void= *vfunc=5Fdata)=0A+{=0A+ int retval =3D 0;=0A+ char buf[FILENAME=5FMAX * 2]= ;=0A+ DIR *lc=5Fdir =3D NULL;=0A+=0A+ if (FILENAME=5FMAX < snprintf(buf, FI= LENAME=5FMAX, "%s", bf->basedir)) {=0A+ printf("filename \"%s\" is too lon= g aborting\n", buf);=0A+ return -1;=0A+ }=0A+=0A+ lc=5Fdir =3D opendir(buf= );=0A+ if (lc=5Fdir =3D=3D NULL) {=0A+ perror("opendir");=0A+ return -1;= =0A+ }=0A+=0A+ retval =3D add=5Fdir=5Fto=5Ffilelist(bf, lc=5Fdir, buf, vfun= c, vfunc=5Fdata);=0A+=0A+ closedir(lc=5Fdir);=0A+ return retval;=0A+}=0A+= =0A+/* Get the number of files */=0A+uint32=5Ft get=5Flistsize(struct bench= files * bf)=0A+{=0A+ return bf->listsize;=0A+}=0A+=0A+/* Get the number of = subdirectories */=0A+uint32=5Ft get=5Fnumsubdirs(struct benchfiles * bf)=0A= +{=0A+ return bf->numsubdirs;=0A+}=0Adiff --git a/utils/ffsb-6.0-rc2/fileli= st.h b/utils/ffsb-6.0-rc2/filelist.h=0Anew file mode 100644=0Aindex 0000000= ..e11d066=0A--- /dev/null=0A+++ b/utils/ffsb-6.0-rc2/filelist.h=0A@@ -0,0 += 1,145 @@=0A+/*=0A+ * Copyright (c) International Business Machines Corp.,= 2001-2004=0A+ *=0A+ * This program is free software; you can redistribu= te it and/or modify=0A+ * it under the terms of the GNU General Public Li= cense as published by=0A+ * the Free Software Foundation; either version = 2 of the License, or=0A+ * (at your option) any later version.=0A+ *=0A+ = * This program is distributed in the hope that it will be useful,=0A+ * = but WITHOUT ANY WARRANTY; without even the implied warranty of=0A+ * ME= RCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See=0A+ * the GNU Gen= eral Public License for more details.=0A+ *=0A+ * You should have receive= d a copy of the GNU General Public License=0A+ * along with this program;= if not, write to the Free Software=0A+ * Foundation, Inc., 51 Franklin = Street, Fifth Floor, Boston, MA 02110-1301 USA=0A+ */=0A+#ifndef =5FFILELIS= T=5FH=5F=0A+#define =5FFILELIST=5FH=5F=0A+=0A+#include =0A+#incl= ude "rand.h"=0A+#include "rwlock.h"=0A+#include "cirlist.h"=0A+#include "rb= t.h"=0A+=0A+#define SUBDIRNAME=5FBASE "dir"=0A+#define FILENAME=5FBASE "fil= e"=0A+=0A+struct ffsb=5Ffile {=0A+ char *name;=0A+ uint64=5Ft size;=0A+ str= uct rwlock lock;=0A+ uint32=5Ft num;=0A+};=0A+=0A+struct cirlist;=0A+=0A+/*= Tree of ffsb=5Ffile structs and associated state info struct must be=0A+ *= locked during use.=0A+ */=0A+struct benchfiles {=0A+ /* The base directory= in which all subdirs and files are=0A+ * created=0A+ */=0A+ char *basedi= r;=0A+=0A+ /* The name to prepend to all directory and file names */=0A+ ch= ar *basename;=0A+ uint32=5Ft numsubdirs;=0A+=0A+ /* Files which currently e= xist on the filesystem */=0A+ struct red=5Fblack=5Ftree *files;=0A+=0A+ /* = Directories which currently exist on the filesystem */=0A+ struct red=5Fbla= ck=5Ftree *dirs;=0A+=0A+ /* Files which have been deleted, and whose number= s should be=0A+ * reused=0A+ */=0A+ struct cirlist *holes;=0A+ struct cir= list *dholes;=0A+=0A+ /* This lock must be held while manipulating the stru= cture */=0A+ struct rwlock fileslock;=0A+ uint32=5Ft listsize; /* Sum size = of nodes in files and holes */=0A+};=0A+=0A+/* Initializes the list, user m= ust call this before anything else it=0A+ * will create the basedir and sub= dirs on the filesystem automatically=0A+ * if the builddirs arg. is nonzero= =0A+ */=0A+void init=5Ffilelist(struct benchfiles *, char *, char *, uint32= =5Ft, int);=0A+void destroy=5Ffilelist(struct benchfiles *);=0A+=0A+/* Allo= cates a new file, adds to list, (write) locks it, and returns=0A+ * it. Th= is function also randomly selects a filename + path to=0A+ * assign to the = new file.=0A+ *=0A+ * It first checks the "holes" list for any available fi= lenames.=0A+ * Caller must ensure file is actually created on disk=0A+ */= =0A+struct ffsb=5Ffile *add=5Ffile(struct benchfiles *b, uint64=5Ft size, r= anddata=5Ft *rd);=0A+struct ffsb=5Ffile *add=5Fdir(struct benchfiles *, uin= t64=5Ft, randdata=5Ft *);=0A+=0A+/* Removes file from list, decrements list= size.=0A+ *=0A+ * File should be writer-locked before calling this function= .=0A+ *=0A+ * This function does not unlock file after removal from list.= =0A+ *=0A+ * Caller must ensure file is actually removed on disk.=0A+ *=0A+= * Caller must NOT free file->name and file, since oldfiles are being=0A+ *= put into holes list.=0A+ */=0A+void remove=5Ffile(struct benchfiles *, str= uct ffsb=5Ffile *);=0A+=0A+/* Picks a file at random, locks it for reading = and returns it=0A+ * locked=0A+ */=0A+struct ffsb=5Ffile *choose=5Ffile=5Fr= eader(struct benchfiles *, randdata=5Ft *);=0A+=0A+/* Picks a file at rando= m, locks it for writing and returns it=0A+ * locked=0A+ */=0A+struct ffsb= =5Ffile *choose=5Ffile=5Fwriter(struct benchfiles *, randdata=5Ft *);=0A+= =0A+/* changes the file->name of a file, file must be write locked=0A+ * it= does not free the old file->name, so caller must keep a ref to it=0A+ * an= d free after the call=0A+ */=0A+void rename=5Ffile(struct ffsb=5Ffile *);= =0A+=0A+void unlock=5Ffile=5Freader(struct ffsb=5Ffile *);=0A+void unlock= =5Ffile=5Fwriter(struct ffsb=5Ffile *);=0A+=0A+/* Uses SUBDIRNAME=5FBASE/FI= LENAME=5FBASE + bf->basename to validate a=0A+ * name returns a negative on= invalid names, and the actual file=0A+ * number if valid=0A+ */=0A+int val= idate=5Ffilename(struct benchfiles *, char *);=0A+int validate=5Fdirname(st= ruct benchfiles *, char *);=0A+=0A+/* Function type which, does some valida= tion of existing files=0A+ * currently only used by ffsb=5Ffs stuff, return= s 0 on success=0A+ */=0A+typedef int (*fl=5Fvalidation=5Ffunc=5Ft)(struct b= enchfiles *, char *, void *);=0A+=0A+/* Provided for re-use of filesets. A= lso runs the validation callback=0A+ * on each file/dir that is found, afte= r verifying the name is=0A+ * conformant. The fileset should be initialize= d with init=5Ffileset()=0A+ * beforehand.=0A+ * Returns 0 on success=0A+ */= =0A+int grab=5Fold=5Ffileset(struct benchfiles *, char *, fl=5Fvalidation= =5Ffunc=5Ft,=0A+ void *);=0A+=0A+/* Get the number of files */=0A+ui= nt32=5Ft get=5Flistsize(struct benchfiles *);=0A+=0A+/* Get the number of s= ubdirectories */=0A+uint32=5Ft get=5Fnumsubdirs(struct benchfiles *);=0A+= =0A+#endif /* =5FFILELIST=5FH=5F */=0Adiff --git a/utils/ffsb-6.0-rc2/fileo= ps.c b/utils/ffsb-6.0-rc2/fileops.c=0Anew file mode 100644=0Aindex 0000000.= .3212c18=0A--- /dev/null=0A+++ b/utils/ffsb-6.0-rc2/fileops.c=0A@@ -0,0 +1,= 542 @@=0A+/*=0A+ * Copyright (c) International Business Machines Corp., 2= 001-2004=0A+ *=0A+ * This program is free software; you can redistribute= it and/or modify=0A+ * it under the terms of the GNU General Public Lice= nse as published by=0A+ * the Free Software Foundation; either version 2 = of the License, or=0A+ * (at your option) any later version.=0A+ *=0A+ * = This program is distributed in the hope that it will be useful,=0A+ * b= ut WITHOUT ANY WARRANTY; without even the implied warranty of=0A+ * MERC= HANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See=0A+ * the GNU Gener= al Public License for more details.=0A+ *=0A+ * You should have received = a copy of the GNU General Public License=0A+ * along with this program; = if not, write to the Free Software=0A+ * Foundation, Inc., 51 Franklin St= reet, Fifth Floor, Boston, MA 02110-1301 USA=0A+ */=0A+#define =5FLARGEFILE= 64=5FSOURCE=0A+#include =0A+#include =0A+#include = =0A+#include =0A+#include =0A+#include =0A+#include =0A+#include =0A+=0A+#include "fh.h"=0A= +#include "util.h"=0A+#include "ffsb.h"=0A+#include "fileops.h"=0A+#include= "ffsb=5Fop.h"=0A+=0A+static void do=5Fstats(struct timeval *start, struct = timeval *end,=0A+ ffsb=5Fthread=5Ft * ft, ffsb=5Ffs=5Ft * fs, syscall= =5Ft sys)=0A+{=0A+ struct timeval diff;=0A+ uint32=5Ft value =3D 0;=0A+=0A+= if (!ft && !fs)=0A+ return;=0A+=0A+ timersub(end, start, &diff);=0A+=0A+ = value =3D 1000000 * diff.tv=5Fsec + diff.tv=5Fusec;=0A+=0A+ if (ft && ft=5F= needs=5Fstats(ft, sys))=0A+ ft=5Fadd=5Fstat(ft, sys, value);=0A+ if (fs &&= fs=5Fneeds=5Fstats(fs, sys))=0A+ fs=5Fadd=5Fstat(fs, sys, value);=0A+}=0A= +=0A+void fop=5Fbench(ffsb=5Ffs=5Ft * fs, unsigned opnum)=0A+{=0A+ fs=5Fset= =5Fopdata(fs, fs=5Fget=5Fdatafiles(fs), opnum);=0A+}=0A+=0A+void fop=5Fage(= ffsb=5Ffs=5Ft * fs, unsigned opnum)=0A+{=0A+ fs=5Fset=5Fopdata(fs, fs=5Fget= =5Fagefiles(fs), opnum);=0A+}=0A+=0A+static unsigned readfile=5Fhelper(int = fd, uint64=5Ft size, uint32=5Ft blocksize,=0A+ char *buf, ffsb=5Fthread= =5Ft * ft, ffsb=5Ffs=5Ft * fs)=0A+{=0A+ int iterations, a;=0A+ int last;=0A= +=0A+ iterations =3D size / blocksize;=0A+ last =3D size % blocksize;=0A+= =0A+ for (a =3D 0; a < iterations; a++)=0A+ fhread(fd, buf, blocksize, ft,= fs);=0A+ if (last)=0A+ fhread(fd, buf, last, ft, fs);=0A+ return iteratio= ns;=0A+}=0A+=0A+static uint64=5Ft get=5Frandom=5Foffset(randdata=5Ft * rd, = uint64=5Ft filesize,=0A+ int aligned)=0A+{=0A+ if (!aligned)=0A+ retu= rn getllrandom(rd, filesize);=0A+=0A+ filesize /=3D 4096;=0A+ return getllr= andom(rd, filesize) * 4096;=0A+}=0A+=0A+void ffsb=5Freadfile(ffsb=5Fthread= =5Ft * ft, ffsb=5Ffs=5Ft * fs, unsigned opnum)=0A+{=0A+ struct benchfiles *= bf =3D (struct benchfiles *)fs=5Fget=5Fopdata(fs, opnum);=0A+ struct ffsb= =5Ffile *curfile =3D NULL;=0A+=0A+ int fd;=0A+ uint64=5Ft filesize;=0A+=0A+= char *buf =3D ft=5Fgetbuf(ft);=0A+ int read=5Frandom =3D ft=5Fget=5Fread= =5Frandom(ft);=0A+ uint64=5Ft read=5Fsize =3D ft=5Fget=5Fread=5Fsize(ft);= =0A+ uint32=5Ft read=5Fblocksize =3D ft=5Fget=5Fread=5Fblocksize(ft);=0A+ u= int32=5Ft read=5Fskipsize =3D ft=5Fget=5Fread=5Fskipsize(ft);=0A+ int skip= =5Freads =3D ft=5Fget=5Fread=5Fskip(ft);=0A+ struct randdata *rd =3D ft=5Fg= et=5Franddata(ft);=0A+=0A+ uint64=5Ft iterations =3D 0;=0A+=0A+ curfile =3D= choose=5Ffile=5Freader(bf, rd);=0A+ fd =3D fhopenread(curfile->name, ft, f= s);=0A+=0A+ filesize =3D ffsb=5Fget=5Ffilesize(curfile->name);=0A+=0A+ asse= rt(filesize >=3D read=5Fsize);=0A+=0A+ /* Sequential read, starting at a ra= ndom point */=0A+ if (!read=5Frandom) {=0A+ uint64=5Ft range =3D filesize = - read=5Fsize;=0A+ uint64=5Ft offset =3D 0;=0A+ /* Skip or "stride" reads= option */=0A+ if (skip=5Freads) {=0A+ unsigned i, last;=0A+ uint64=5F= t minfilesize;=0A+ iterations =3D read=5Fsize / read=5Fblocksize;=0A+ l= ast =3D read=5Fsize % read=5Fblocksize;=0A+=0A+ /* Double check that the = user hasn't specified=0A+ * a read=5Fsize that is too large when combine= d=0A+ * with the seeks=0A+ */=0A+ if (last)=0A+ minfilesize =3D = last + iterations *=0A+ (read=5Fblocksize + read=5Fskipsize);=0A+ = else=0A+ minfilesize =3D read=5Fblocksize + iterations - 1 *=0A+ = (read=5Fblocksize + read=5Fskipsize);=0A+=0A+ if (minfilesize > filesize)= {=0A+ printf("Error: read size %llu bytes too big "=0A+ "w/ s= kipsize %u and blocksize %u,"=0A+ " for file of size %llu bytes\n= "=0A+ " aborting\n\n", read=5Fsize,=0A+ read=5Fskipsize= , read=5Fblocksize, filesize);=0A+ printf("minimum file size must be at = least "=0A+ " %llu bytes\n", minfilesize);=0A+ exit(1);=0A+ = }=0A+=0A+ for (i =3D 0; i < iterations; i++) {=0A+ fhread(fd, buf, rea= d=5Fblocksize, ft, fs);=0A+ fhseek(fd, (uint64=5Ft) read=5Fskipsize, SEE= K=5FCUR,=0A+ ft, fs);=0A+ }=0A+ if (last) {=0A+ fhread(fd,= buf, (uint64=5Ft) last, ft, fs);=0A+ iterations++;=0A+ }=0A+ } else = {=0A+ /* Regular sequential reads */=0A+ if (range) {=0A+ offset =3D= get=5Frandom=5Foffset(rd, range,=0A+ fs=5Fget=5Falignio(fs));=0A+= fhseek(fd, offset, SEEK=5FSET, ft, fs);=0A+ }=0A+ iterations =3D re= adfile=5Fhelper(fd, read=5Fsize,=0A+ read=5Fblocksize, buf,=0A+ = ft, fs);=0A+ }=0A+ } else {=0A+ /* Randomized read */=0A+ uint6= 4=5Ft range =3D filesize - read=5Fblocksize;=0A+ int i;=0A+=0A+ iteration= s =3D read=5Fsize / read=5Fblocksize;=0A+=0A+ for (i =3D 0; i < iterations= ; i++) {=0A+ uint64=5Ft offset =3D get=5Frandom=5Foffset(rd, range,=0A+ = fs=5Fget=5Falignio(fs));=0A+ fhseek(fd, offset, SEEK=5FSET, ft, = fs);=0A+ fhread(fd, buf, read=5Fblocksize, ft, fs);=0A+ }=0A+ }=0A+=0A+ = unlock=5Ffile=5Freader(curfile);=0A+ fhclose(fd, ft, fs);=0A+=0A+ ft=5Fincr= =5Fop(ft, opnum, iterations, read=5Fsize);=0A+ ft=5Fadd=5Freadbytes(ft, rea= d=5Fsize);=0A+}=0A+=0A+/* Just like ffsb=5Freadfile but we read the whole f= ile from start to=0A+ * finish regardless of file size.=0A+ */=0A+void ffsb= =5Freadall(ffsb=5Fthread=5Ft * ft, ffsb=5Ffs=5Ft * fs, unsigned opnum)=0A+{= =0A+ struct benchfiles *bf =3D (struct benchfiles *)fs=5Fget=5Fopdata(fs, o= pnum);=0A+ struct ffsb=5Ffile *curfile =3D NULL;=0A+ int fd;=0A+ uint64=5Ft= filesize;=0A+=0A+ char *buf =3D ft=5Fgetbuf(ft);=0A+ uint32=5Ft read=5Fblo= cksize =3D ft=5Fget=5Fread=5Fblocksize(ft);=0A+ struct randdata *rd =3D ft= =5Fget=5Franddata(ft);=0A+=0A+ unsigned iterations =3D 0;=0A+=0A+ curfile = =3D choose=5Ffile=5Freader(bf, rd);=0A+ fd =3D fhopenread(curfile->name, ft= , fs);=0A+=0A+ filesize =3D ffsb=5Fget=5Ffilesize(curfile->name);=0A+ itera= tions =3D readfile=5Fhelper(fd, filesize, read=5Fblocksize, buf, ft, fs);= =0A+=0A+ unlock=5Ffile=5Freader(curfile);=0A+ fhclose(fd, ft, fs);=0A+=0A+ = ft=5Fincr=5Fop(ft, opnum, iterations, filesize);=0A+ ft=5Fadd=5Freadbytes(f= t, filesize);=0A+}=0A+=0A+/* Shared core between ffsb=5Fwritefile and ffsb= =5Fwritefile=5Ffsync.*/=0A+=0A+static unsigned ffsb=5Fwritefile=5Fcore(ffsb= =5Fthread=5Ft * ft, ffsb=5Ffs=5Ft * fs,=0A+ unsigned opnum, uint64= =5Ft * filesize=5Fret,=0A+ int fsync=5Ffile)=0A+{=0A+ struct benchfi= les *bf =3D (struct benchfiles *)fs=5Fget=5Fopdata(fs, opnum);=0A+ struct f= fsb=5Ffile *curfile =3D NULL;=0A+=0A+ int fd;=0A+ uint64=5Ft filesize;=0A+= =0A+ char *buf =3D ft=5Fgetbuf(ft);=0A+ int write=5Frandom =3D ft=5Fget=5Fw= rite=5Frandom(ft);=0A+ uint32=5Ft write=5Fsize =3D ft=5Fget=5Fwrite=5Fsize(= ft);=0A+ uint32=5Ft write=5Fblocksize =3D ft=5Fget=5Fwrite=5Fblocksize(ft);= =0A+ struct randdata *rd =3D ft=5Fget=5Franddata(ft);=0A+ unsigned iteratio= ns =3D 0;=0A+=0A+ curfile =3D choose=5Ffile=5Freader(bf, rd);=0A+ fd =3D fh= openwrite(curfile->name, ft, fs);=0A+=0A+ filesize =3D ffsb=5Fget=5Ffilesiz= e(curfile->name);=0A+=0A+ assert(filesize >=3D write=5Fsize);=0A+=0A+ /* Se= quential write, starting at a random point */=0A+ if (!write=5Frandom) {= =0A+ uint64=5Ft range =3D filesize - write=5Fsize;=0A+ uint64=5Ft offset = =3D 0;=0A+ if (range) {=0A+ offset =3D get=5Frandom=5Foffset(rd, range,= =0A+ fs=5Fget=5Falignio(fs));=0A+ fhseek(fd, offset, SEEK=5FSET, = ft, fs);=0A+ }=0A+ iterations =3D writefile=5Fhelper(fd, write=5Fsize, wr= ite=5Fblocksize,=0A+ buf, ft, fs);=0A+ } else {=0A+ /* Randomize= d write */=0A+ uint64=5Ft range =3D filesize - write=5Fblocksize;=0A+ int= i;=0A+ iterations =3D write=5Fsize / write=5Fblocksize;=0A+=0A+ for (i = =3D 0; i < iterations; i++) {=0A+ uint64=5Ft offset =3D get=5Frandom=5Fof= fset(rd, range,=0A+ fs=5Fget=5Falignio(fs));=0A+ fhseek(fd, off= set, SEEK=5FSET, ft, fs);=0A+ fhwrite(fd, buf, write=5Fblocksize, ft, fs)= ;=0A+ }=0A+ }=0A+=0A+ if (fsync=5Ffile) {=0A+ if (fsync(fd)) {=0A+ perr= or("fsync");=0A+ printf("aborting\n");=0A+ exit(1);=0A+ }=0A+ }=0A+ un= lock=5Ffile=5Freader(curfile);=0A+ fhclose(fd, ft, fs);=0A+ *filesize=5Fret= =3D filesize;=0A+ return iterations;=0A+}=0A+=0A+void ffsb=5Fwritefile(ffs= b=5Fthread=5Ft * ft, ffsb=5Ffs=5Ft * fs, unsigned opnum)=0A+{=0A+ unsigned = iterations;=0A+ uint64=5Ft filesize;=0A+=0A+ iterations =3D ffsb=5Fwritefil= e=5Fcore(ft, fs, opnum, &filesize, 0);=0A+ ft=5Fincr=5Fop(ft, opnum, iterat= ions, filesize);=0A+ ft=5Fadd=5Fwritebytes(ft, filesize);=0A+}=0A+=0A+void = ffsb=5Fwritefile=5Ffsync(ffsb=5Fthread=5Ft * ft, ffsb=5Ffs=5Ft * fs, unsign= ed opnum)=0A+{=0A+ unsigned iterations;=0A+ uint64=5Ft filesize;=0A+=0A+ it= erations =3D ffsb=5Fwritefile=5Fcore(ft, fs, opnum, &filesize, 1);=0A+ ft= =5Fincr=5Fop(ft, opnum, iterations, filesize);=0A+ ft=5Fadd=5Fwritebytes(ft= , filesize);=0A+}=0A+=0A+/* Shared core between ffsb=5Fwriteall and ffsb=5F= writeall=5Ffsync.*/=0A+=0A+static unsigned ffsb=5Fwriteall=5Fcore(ffsb=5Fth= read=5Ft * ft, ffsb=5Ffs=5Ft * fs,=0A+ unsigned opnum, uint64=5Ft * f= ilesize=5Fret,=0A+ int fsync=5Ffile)=0A+{=0A+ struct benchfiles *bf = =3D (struct benchfiles *)fs=5Fget=5Fopdata(fs, opnum);=0A+ struct ffsb=5Ffi= le *curfile =3D NULL;=0A+ int fd;=0A+ uint64=5Ft filesize;=0A+=0A+ char *bu= f =3D ft=5Fgetbuf(ft);=0A+ uint32=5Ft write=5Fblocksize =3D ft=5Fget=5Fwrit= e=5Fblocksize(ft);=0A+ struct randdata *rd =3D ft=5Fget=5Franddata(ft);=0A+= =0A+ unsigned iterations =3D 0;=0A+=0A+ curfile =3D choose=5Ffile=5Freader(= bf, rd);=0A+ fd =3D fhopenwrite(curfile->name, ft, fs);=0A+=0A+ filesize = =3D ffsb=5Fget=5Ffilesize(curfile->name);=0A+ iterations =3D writefile=5Fhe= lper(fd, filesize, write=5Fblocksize, buf,=0A+ ft, fs);=0A+ if (fs= ync=5Ffile)=0A+ if (fsync(fd)) {=0A+ perror("fsync");=0A+ printf("abor= ting\n");=0A+ exit(1);=0A+ }=0A+=0A+ unlock=5Ffile=5Freader(curfile);=0A= + fhclose(fd, ft, fs);=0A+ *filesize=5Fret =3D filesize;=0A+ return iterati= ons;=0A+}=0A+=0A+/* Just like ffsb=5Fwritefile but we write the whole file = from start to=0A+ * finish regardless of file size=0A+ */=0A+void ffsb=5Fwr= iteall(ffsb=5Fthread=5Ft * ft, ffsb=5Ffs=5Ft * fs, unsigned opnum)=0A+{=0A+= unsigned iterations;=0A+ uint64=5Ft filesize;=0A+=0A+ iterations =3D ffsb= =5Fwriteall=5Fcore(ft, fs, opnum, &filesize, 0);=0A+ ft=5Fincr=5Fop(ft, opn= um, iterations, filesize);=0A+ ft=5Fadd=5Fwritebytes(ft, filesize);=0A+}=0A= +=0A+void ffsb=5Fwriteall=5Ffsync(ffsb=5Fthread=5Ft * ft, ffsb=5Ffs=5Ft * f= s, unsigned opnum)=0A+{=0A+ unsigned iterations;=0A+ uint64=5Ft filesize;= =0A+=0A+ iterations =3D ffsb=5Fwriteall=5Fcore(ft, fs, opnum, &filesize, 1)= ;=0A+ ft=5Fincr=5Fop(ft, opnum, iterations, filesize);=0A+ ft=5Fadd=5Fwrite= bytes(ft, filesize);=0A+}=0A+=0A+static unsigned ffsb=5Fappendfile=5Fcore(f= fsb=5Fthread=5Ft * ft, ffsb=5Ffs=5Ft * fs,=0A+ unsigned opnum, uint= 64=5Ft * filesize=5Fret,=0A+ int fsync=5Ffile)=0A+{=0A+ struct benc= hfiles *bf =3D (struct benchfiles *)fs=5Fget=5Fopdata(fs, opnum);=0A+ struc= t ffsb=5Ffile *curfile;=0A+=0A+ int fd;=0A+=0A+ char *buf =3D ft=5Fgetbuf(f= t);=0A+ uint32=5Ft write=5Fsize =3D ft=5Fget=5Fwrite=5Fsize(ft);=0A+ uint32= =5Ft write=5Fblocksize =3D ft=5Fget=5Fwrite=5Fblocksize(ft);=0A+ struct ran= ddata *rd =3D ft=5Fget=5Franddata(ft);=0A+ unsigned iterations =3D 0;=0A+= =0A+ curfile =3D choose=5Ffile=5Freader(bf, rd);=0A+ fd =3D fhopenappend(cu= rfile->name, ft, fs);=0A+=0A+ unlock=5Ffile=5Freader(curfile);=0A+=0A+ curf= ile->size +=3D (uint64=5Ft) write=5Fsize;=0A+=0A+ iterations =3D writefile= =5Fhelper(fd, write=5Fsize, write=5Fblocksize, buf,=0A+ ft, fs);= =0A+ if (fsync=5Ffile)=0A+ if (fsync(fd)) {=0A+ perror("fsync");=0A+ p= rintf("aborting\n");=0A+ exit(1);=0A+ }=0A+=0A+ fhclose(fd, ft, fs);=0A+= *filesize=5Fret =3D write=5Fsize;=0A+ return iterations;=0A+}=0A+=0A+void = ffsb=5Fappendfile(ffsb=5Fthread=5Ft * ft, ffsb=5Ffs=5Ft * fs, unsigned opnu= m)=0A+{=0A+ unsigned iterations;=0A+ uint64=5Ft filesize;=0A+=0A+ iteration= s =3D ffsb=5Fappendfile=5Fcore(ft, fs, opnum, &filesize, 0);=0A+ ft=5Fincr= =5Fop(ft, opnum, iterations, filesize);=0A+ ft=5Fadd=5Fwritebytes(ft, files= ize);=0A+}=0A+=0A+void ffsb=5Fappendfile=5Ffsync(ffsb=5Fthread=5Ft * ft, ff= sb=5Ffs=5Ft * fs, unsigned opnum)=0A+{=0A+ unsigned iterations;=0A+ uint64= =5Ft filesize;=0A+=0A+ iterations =3D ffsb=5Fappendfile=5Fcore(ft, fs, opnu= m, &filesize, 1);=0A+ ft=5Fincr=5Fop(ft, opnum, iterations, filesize);=0A+ = ft=5Fadd=5Fwritebytes(ft, filesize);=0A+}=0A+=0A+static unsigned ffsb=5Fcre= atefile=5Fcore(ffsb=5Fthread=5Ft * ft, ffsb=5Ffs=5Ft * fs,=0A+ unsi= gned opnum, uint64=5Ft * filesize=5Fret,=0A+ int fsync=5Ffile)=0A+{= =0A+ struct benchfiles *bf =3D (struct benchfiles *)fs=5Fget=5Fopdata(fs, o= pnum);=0A+ struct ffsb=5Ffile *newfile =3D NULL;=0A+=0A+ int fd;=0A+ uint64= =5Ft size;=0A+=0A+ char *buf =3D ft=5Fgetbuf(ft);=0A+ uint32=5Ft write=5Fbl= ocksize =3D ft=5Fget=5Fwrite=5Fblocksize(ft);=0A+ struct randdata *rd =3D f= t=5Fget=5Franddata(ft);=0A+ unsigned iterations =3D 0;=0A+=0A+ if (fs->num= =5Fweights) {=0A+ int num =3D 1 + getrandom(rd, fs->sum=5Fweights);=0A+ i= nt curop =3D 0;=0A+=0A+ while (fs->size=5Fweights[curop].weight < num) {= =0A+ num -=3D fs->size=5Fweights[curop].weight;=0A+ curop++;=0A+ }=0A+= size =3D fs->size=5Fweights[curop].size;=0A+ } else {=0A+ uint64=5Ft ran= ge =3D=0A+ fs=5Fget=5Fmax=5Ffilesize(fs) - fs=5Fget=5Fmin=5Ffilesize(f= s);=0A+ size =3D fs=5Fget=5Fmin=5Ffilesize(fs);=0A+ if (range !=3D 0)=0A+= size +=3D getllrandom(rd, range);=0A+ }=0A+=0A+ newfile =3D add=5Ffile(b= f, size, rd);=0A+ fd =3D fhopencreate(newfile->name, ft, fs);=0A+ iteration= s =3D writefile=5Fhelper(fd, size, write=5Fblocksize, buf, ft, fs);=0A+=0A+= if (fsync=5Ffile)=0A+ if (fsync(fd)) {=0A+ perror("fsync");=0A+ print= f("aborting\n");=0A+ exit(1);=0A+ }=0A+=0A+ fhclose(fd, ft, fs);=0A+ unl= ock=5Ffile=5Fwriter(newfile);=0A+ *filesize=5Fret =3D size;=0A+ return iter= ations;=0A+}=0A+=0A+void ffsb=5Fcreatefile(ffsb=5Fthread=5Ft * ft, ffsb=5Ff= s=5Ft * fs, unsigned opnum)=0A+{=0A+ unsigned iterations;=0A+ uint64=5Ft fi= lesize;=0A+=0A+ iterations =3D ffsb=5Fcreatefile=5Fcore(ft, fs, opnum, &fil= esize, 0);=0A+ ft=5Fincr=5Fop(ft, opnum, iterations, filesize);=0A+ ft=5Fad= d=5Fwritebytes(ft, filesize);=0A+}=0A+=0A+void ffsb=5Fcreatefile=5Ffsync(ff= sb=5Fthread=5Ft * ft, ffsb=5Ffs=5Ft * fs, unsigned opnum)=0A+{=0A+ unsigned= iterations;=0A+ uint64=5Ft filesize;=0A+=0A+ iterations =3D ffsb=5Fcreatef= ile=5Fcore(ft, fs, opnum, &filesize, 1);=0A+ ft=5Fincr=5Fop(ft, opnum, iter= ations, filesize);=0A+ ft=5Fadd=5Fwritebytes(ft, filesize);=0A+}=0A+=0A+voi= d ffsb=5Fdeletefile(ffsb=5Fthread=5Ft * ft, ffsb=5Ffs=5Ft * fs, unsigned op= num)=0A+{=0A+ struct benchfiles *bf =3D (struct benchfiles *)fs=5Fget=5Fopd= ata(fs, opnum);=0A+ struct ffsb=5Ffile *curfile =3D NULL;=0A+ randdata=5Ft = *rd =3D ft=5Fget=5Franddata(ft);=0A+ struct timeval start, end;=0A+ int nee= d=5Fstats =3D ft=5Fneeds=5Fstats(ft, SYS=5FUNLINK) ||=0A+ fs=5Fneeds=5F= stats(fs, SYS=5FUNLINK);=0A+=0A+ curfile =3D choose=5Ffile=5Fwriter(bf, rd)= ;=0A+ remove=5Ffile(bf, curfile);=0A+=0A+ if (need=5Fstats)=0A+ gettimeofd= ay(&start, NULL);=0A+=0A+ if (unlink(curfile->name) =3D=3D -1) {=0A+ print= f("error deleting %s in deletefile\n", curfile->name);=0A+ perror("deletef= ile");=0A+ exit(0);=0A+ }=0A+=0A+ if (need=5Fstats) {=0A+ gettimeofday(&e= nd, NULL);=0A+ do=5Fstats(&start, &end, ft, fs, SYS=5FUNLINK);=0A+ }=0A+= =0A+ rw=5Funlock=5Fwrite(&curfile->lock);=0A+=0A+ ft=5Fincr=5Fop(ft, opnum,= 1, 0);=0A+}=0A+=0A+void ffsb=5Fopen=5Fclose(ffsb=5Fthread=5Ft * ft, ffsb= =5Ffs=5Ft * fs, unsigned opnum)=0A+{=0A+ struct benchfiles *bf =3D (struct = benchfiles *)fs=5Fget=5Fopdata(fs, opnum);=0A+ struct ffsb=5Ffile *curfile = =3D NULL;=0A+ randdata=5Ft *rd =3D ft=5Fget=5Franddata(ft);=0A+ int fd;=0A+= =0A+ curfile =3D choose=5Ffile=5Freader(bf, rd);=0A+ fd =3D fhopenread(curf= ile->name, ft, fs);=0A+ fhclose(fd, ft, fs);=0A+ unlock=5Ffile=5Freader(cur= file);=0A+ ft=5Fincr=5Fop(ft, opnum, 1, 0);=0A+}=0A+=0A+void ffsb=5Fstat(ff= sb=5Fthread=5Ft * ft, ffsb=5Ffs=5Ft * fs, unsigned opnum)=0A+{=0A+ struct b= enchfiles *bf =3D (struct benchfiles *)fs=5Fget=5Fopdata(fs, opnum);=0A+ st= ruct ffsb=5Ffile *curfile =3D NULL;=0A+ randdata=5Ft *rd =3D ft=5Fget=5Fran= ddata(ft);=0A+=0A+ curfile =3D choose=5Ffile=5Freader(bf, rd);=0A+ fhstat(c= urfile->name, ft, fs);=0A+ unlock=5Ffile=5Freader(curfile);=0A+=0A+ ft=5Fin= cr=5Fop(ft, opnum, 1, 0);=0A+}=0Adiff --git a/utils/ffsb-6.0-rc2/fileops.h = b/utils/ffsb-6.0-rc2/fileops.h=0Anew file mode 100644=0Aindex 0000000..f15f= 79b=0A--- /dev/null=0A+++ b/utils/ffsb-6.0-rc2/fileops.h=0A@@ -0,0 +1,51 @@= =0A+/*=0A+ * Copyright (c) International Business Machines Corp., 2001-20= 04=0A+ *=0A+ * This program is free software; you can redistribute it an= d/or modify=0A+ * it under the terms of the GNU General Public License as= published by=0A+ * the Free Software Foundation; either version 2 of the= License, or=0A+ * (at your option) any later version.=0A+ *=0A+ * This= program is distributed in the hope that it will be useful,=0A+ * but WIT= HOUT ANY WARRANTY; without even the implied warranty of=0A+ * MERCHANTAB= ILITY or FITNESS FOR A PARTICULAR PURPOSE. See=0A+ * the GNU General Pub= lic License for more details.=0A+ *=0A+ * You should have received a copy= of the GNU General Public License=0A+ * along with this program; if not= , write to the Free Software=0A+ * Foundation, Inc., 51 Franklin Street, = Fifth Floor, Boston, MA 02110-1301 USA=0A+ */=0A+#ifndef =5FFILEOPS=5FH=5F= =0A+#define =5FFILEOPS=5FH=5F=0A+=0A+#include "ffsb=5Fthread.h"=0A+#include= "ffsb.h"=0A+#include "ffsb=5Fop.h"=0A+#include "ffsb=5Ffs.h"=0A+=0A+void f= fsb=5Freadfile(ffsb=5Fthread=5Ft *tconfig, ffsb=5Ffs=5Ft *, unsigned opnum)= ;=0A+void ffsb=5Freadall(ffsb=5Fthread=5Ft *tconfig, ffsb=5Ffs=5Ft *, unsig= ned opnum);=0A+void ffsb=5Fwritefile(ffsb=5Fthread=5Ft *tconfig, ffsb=5Ffs= =5Ft *, unsigned opnum);=0A+void ffsb=5Fwritefile=5Ffsync(ffsb=5Fthread=5Ft= *tconfig, ffsb=5Ffs=5Ft *, unsigned opnum);=0A+void ffsb=5Fwriteall(ffsb= =5Fthread=5Ft *tconfig, ffsb=5Ffs=5Ft *, unsigned opnum);=0A+void ffsb=5Fwr= iteall=5Ffsync(ffsb=5Fthread=5Ft *tconfig, ffsb=5Ffs=5Ft *, unsigned opnum)= ;=0A+void ffsb=5Fcreatefile(ffsb=5Fthread=5Ft *tconfig, ffsb=5Ffs=5Ft *, un= signed opnum);=0A+void ffsb=5Fcreatefile=5Ffsync(ffsb=5Fthread=5Ft *tconfig= , ffsb=5Ffs=5Ft *, unsigned opnum);=0A+void ffsb=5Fdeletefile(ffsb=5Fthread= =5Ft *tconfig, ffsb=5Ffs=5Ft *, unsigned opnum);=0A+void ffsb=5Fappendfile(= ffsb=5Fthread=5Ft *tconfig, ffsb=5Ffs=5Ft *, unsigned opnum);=0A+void ffsb= =5Fappendfile=5Ffsync(ffsb=5Fthread=5Ft *tconfig, ffsb=5Ffs=5Ft *, unsigned= opnum);=0A+void ffsb=5Fstat(ffsb=5Fthread=5Ft *ft, ffsb=5Ffs=5Ft *fs, unsi= gned opnum);=0A+void ffsb=5Fopen=5Fclose(ffsb=5Fthread=5Ft *ft, ffsb=5Ffs= =5Ft *fs, unsigned opnum);=0A+=0A+struct ffsb=5Fop=5Fresults;=0A+=0A+void f= fsb=5Fread=5Fprint=5Fexl(struct ffsb=5Fop=5Fresults *, double secs, unsigne= d op=5Fnum);=0A+void ffsb=5Fwrite=5Fprint=5Fexl(struct ffsb=5Fop=5Fresults = *, double secs, unsigned op=5Fnum);=0A+void ffsb=5Fcreate=5Fprint=5Fexl(str= uct ffsb=5Fop=5Fresults *, double secs, unsigned op=5Fnum);=0A+void ffsb=5F= append=5Fprint=5Fexl(struct ffsb=5Fop=5Fresults *, double secs, unsigned op= =5Fnum);=0A+=0A+/* Set up ops for either aging or benchmarking */=0A+void f= op=5Fbench(ffsb=5Ffs=5Ft *fs, unsigned opnum);=0A+void fop=5Fage(ffsb=5Ffs= =5Ft *fs, unsigned opnum);=0A+=0A+#endif /* =5FFILEOPS=5FH=5F */=0Adiff --g= it a/utils/ffsb-6.0-rc2/install-sh b/utils/ffsb-6.0-rc2/install-sh=0Anew fi= le mode 100755=0Aindex 0000000..4b1cd95=0A--- /dev/null=0A+++ b/utils/ffsb-= 6.0-rc2/install-sh=0A@@ -0,0 +1,250 @@=0A+#!/bin/sh=0A+#=0A+# install - ins= tall a program, script, or datafile=0A+# This comes from X11R5 (mit/util/sc= ripts/install.sh).=0A+#=0A+# Copyright 1991 by the Massachusetts Institute = of Technology=0A+#=0A+# Permission to use, copy, modify, distribute, and se= ll this software and its=0A+# documentation for any purpose is hereby grant= ed without fee, provided that=0A+# the above copyright notice appear in all= copies and that both that=0A+# copyright notice and this permission notice= appear in supporting=0A+# documentation, and that the name of M.I.T. not b= e used in advertising or=0A+# publicity pertaining to distribution of the s= oftware without specific,=0A+# written prior permission. M.I.T. makes no r= epresentations about the=0A+# suitability of this software for any purpose.= It is provided "as is"=0A+# without express or implied warranty.=0A+#=0A+= # Calling this script install-sh is preferred over install.sh, to prevent= =0A+# `make' implicit rules from creating a file called install from it=0A+= # when there is no Makefile.=0A+#=0A+# This script is compatible with the B= SD install script, but was written=0A+# from scratch. It can only install = one file at a time, a restriction=0A+# shared with many OS's install progra= ms.=0A+=0A+=0A+# set DOITPROG to echo to test this script=0A+=0A+# Don't us= e :- since 4.3BSD and earlier shells don't like it.=0A+doit=3D"${DOITPROG-}= "=0A+=0A+=0A+# put in absolute paths if you don't have them in your path; o= r use env. vars.=0A+=0A+mvprog=3D"${MVPROG-mv}"=0A+cpprog=3D"${CPPROG-cp}"= =0A+chmodprog=3D"${CHMODPROG-chmod}"=0A+chownprog=3D"${CHOWNPROG-chown}"=0A= +chgrpprog=3D"${CHGRPPROG-chgrp}"=0A+stripprog=3D"${STRIPPROG-strip}"=0A+rm= prog=3D"${RMPROG-rm}"=0A+mkdirprog=3D"${MKDIRPROG-mkdir}"=0A+=0A+transformb= asename=3D""=0A+transform=5Farg=3D""=0A+instcmd=3D"$mvprog"=0A+chmodcmd=3D"= $chmodprog 0755"=0A+chowncmd=3D""=0A+chgrpcmd=3D""=0A+stripcmd=3D""=0A+rmcm= d=3D"$rmprog -f"=0A+mvcmd=3D"$mvprog"=0A+src=3D""=0A+dst=3D""=0A+dir=5Farg= =3D""=0A+=0A+while [ x"$1" !=3D x ]; do=0A+ case $1 in=0A+ -c) instcmd= =3D"$cpprog"=0A+ shift=0A+ continue;;=0A+=0A+ -d) dir=5Farg=3Dtrue= =0A+ shift=0A+ continue;;=0A+=0A+ -m) chmodcmd=3D"$chmodprog $2"=0A= + shift=0A+ shift=0A+ continue;;=0A+=0A+ -o) chowncmd=3D"$chown= prog $2"=0A+ shift=0A+ shift=0A+ continue;;=0A+=0A+ -g) chgrpcm= d=3D"$chgrpprog $2"=0A+ shift=0A+ shift=0A+ continue;;=0A+=0A+ = -s) stripcmd=3D"$stripprog"=0A+ shift=0A+ continue;;=0A+=0A+ -t=3D*= ) transformarg=3D`echo $1 | sed 's/-t=3D//'`=0A+ shift=0A+ continue= ;;=0A+=0A+ -b=3D*) transformbasename=3D`echo $1 | sed 's/-b=3D//'`=0A+ = shift=0A+ continue;;=0A+=0A+ *) if [ x"$src" =3D x ]=0A+ then=0A+ = src=3D$1=0A+ else=0A+ # this colon is to work around a 386BSD /bin/sh= bug=0A+ :=0A+ dst=3D$1=0A+ fi=0A+ shift=0A+ continue;;=0A+ = esac=0A+done=0A+=0A+if [ x"$src" =3D x ]=0A+then=0A+ echo "install: no in= put file specified"=0A+ exit 1=0A+else=0A+ true=0A+fi=0A+=0A+if [ x"$dir=5F= arg" !=3D x ]; then=0A+ dst=3D$src=0A+ src=3D""=0A+=0A+ if [ -d $dst ]; the= n=0A+ instcmd=3D:=0A+ chmodcmd=3D""=0A+ else=0A+ instcmd=3Dmkdir=0A+ fi= =0A+else=0A+=0A+# Waiting for this to be detected by the "$instcmd $src $ds= ttmp" command=0A+# might cause directories to be created, which would be es= pecially bad=0A+# if $src (and thus $dsttmp) contains '*'.=0A+=0A+ if [ -f = $src -o -d $src ]=0A+ then=0A+ true=0A+ else=0A+ echo "install: $src doe= s not exist"=0A+ exit 1=0A+ fi=0A+=0A+ if [ x"$dst" =3D x ]=0A+ then=0A+ = echo "install: no destination specified"=0A+ exit 1=0A+ else=0A+ true=0A+= fi=0A+=0A+# If destination is a directory, append the input filename; if y= our system=0A+# does not like double slashes in filenames, you may need to = add some logic=0A+=0A+ if [ -d $dst ]=0A+ then=0A+ dst=3D"$dst"/`basename = $src`=0A+ else=0A+ true=0A+ fi=0A+fi=0A+=0A+## this sed command emulates t= he dirname command=0A+dstdir=3D`echo $dst | sed -e 's,[^/]*$,,;s,/$,,;s,^$,= .,'`=0A+=0A+# Make sure that the destination directory exists.=0A+# this p= art is taken from Noah Friedman's mkinstalldirs script=0A+=0A+# Skip lots o= f stat calls in the usual case.=0A+if [ ! -d "$dstdir" ]; then=0A+defaultIF= S=3D''=0A+IFS=3D"${IFS-${defaultIFS}}"=0A+=0A+oIFS=3D"${IFS}"=0A+# Some sh'= s can't handle IFS=3D/ for some reason.=0A+IFS=3D'%'=0A+set - `echo ${dstdi= r} | sed -e 's@/@%@g' -e 's@^%@/@'`=0A+IFS=3D"${oIFS}"=0A+=0A+pathcomp=3D''= =0A+=0A+while [ $# -ne 0 ] ; do=0A+ pathcomp=3D"${pathcomp}${1}"=0A+ shift= =0A+=0A+ if [ ! -d "${pathcomp}" ] ;=0A+ then=0A+ $mkdirprog "${pat= hcomp}"=0A+ else=0A+ true=0A+ fi=0A+=0A+ pathcomp=3D"${pathcomp}/"=0A+done= =0A+fi=0A+=0A+if [ x"$dir=5Farg" !=3D x ]=0A+then=0A+ $doit $instcmd $dst &= &=0A+=0A+ if [ x"$chowncmd" !=3D x ]; then $doit $chowncmd $dst; else true = ; fi &&=0A+ if [ x"$chgrpcmd" !=3D x ]; then $doit $chgrpcmd $dst; else tru= e ; fi &&=0A+ if [ x"$stripcmd" !=3D x ]; then $doit $stripcmd $dst; else t= rue ; fi &&=0A+ if [ x"$chmodcmd" !=3D x ]; then $doit $chmodcmd $dst; else= true ; fi=0A+else=0A+=0A+# If we're going to rename the final executable, = determine the name now.=0A+=0A+ if [ x"$transformarg" =3D x ]=0A+ then=0A+ = dstfile=3D`basename $dst`=0A+ else=0A+ dstfile=3D`basename $dst $transfor= mbasename |=0A+ sed $transformarg`$transformbasename=0A+ fi=0A+=0A+# don'= t allow the sed command to completely eliminate the filename=0A+=0A+ if [ x= "$dstfile" =3D x ]=0A+ then=0A+ dstfile=3D`basename $dst`=0A+ else=0A+ tr= ue=0A+ fi=0A+=0A+# Make a temp file name in the proper directory.=0A+=0A+ d= sttmp=3D$dstdir/#inst.$$#=0A+=0A+# Move or copy the file name to the temp n= ame=0A+=0A+ $doit $instcmd $src $dsttmp &&=0A+=0A+ trap "rm -f ${dsttmp}" 0= &&=0A+=0A+# and set any options; do chmod last to preserve setuid bits=0A+= =0A+# If any of these fail, we abort the whole thing. If we want to=0A+# i= gnore errors from any of these, just make sure not to ignore=0A+# errors fr= om the above "$doit $instcmd $src $dsttmp" command.=0A+=0A+ if [ x"$chowncm= d" !=3D x ]; then $doit $chowncmd $dsttmp; else true;fi &&=0A+ if [ x"$chgr= pcmd" !=3D x ]; then $doit $chgrpcmd $dsttmp; else true;fi &&=0A+ if [ x"$s= tripcmd" !=3D x ]; then $doit $stripcmd $dsttmp; else true;fi &&=0A+ if [ x= "$chmodcmd" !=3D x ]; then $doit $chmodcmd $dsttmp; else true;fi &&=0A+=0A+= # Now rename the file to the real destination.=0A+=0A+ $doit $rmcmd -f $dst= dir/$dstfile &&=0A+ $doit $mvcmd $dsttmp $dstdir/$dstfile=0A+=0A+fi &&=0A+= =0A+=0A+exit 0=0Adiff --git a/utils/ffsb-6.0-rc2/list.c b/utils/ffsb-6.0-rc= 2/list.c=0Anew file mode 100644=0Aindex 0000000..eeed81f=0A--- /dev/null=0A= +++ b/utils/ffsb-6.0-rc2/list.c=0A@@ -0,0 +1,53 @@=0A+=0A+/*=0A+ * Simple l= ist implementation mostly take from the Linux Kernel=0A+ */=0A+=0A+#include= =0A+#include "list.h"=0A+=0A+void INIT=5FLIST=5FHEAD(struct list= =5Fhead *list)=0A+{=0A+ list->next =3D list;=0A+ list->prev =3D list;=0A+}= =0A+=0A+void =5F=5Flist=5Fadd(struct list=5Fhead *new,=0A+ struct list=5Fh= ead *prev, struct list=5Fhead *next)=0A+{=0A+ next->prev =3D new;=0A+ new->= next =3D next;=0A+ new->prev =3D prev;=0A+ prev->next =3D new;=0A+}=0A+=0A+= void =5F=5Flist=5Fdel(struct list=5Fhead *prev, struct list=5Fhead *next)= =0A+{=0A+ next->prev =3D prev;=0A+ prev->next =3D next;=0A+}=0A+=0A+void li= st=5Fadd(struct list=5Fhead *new, struct list=5Fhead *head)=0A+{=0A+ =5F=5F= list=5Fadd(new, head, head->next);=0A+}=0A+=0A+void list=5Fadd=5Ftail(struc= t list=5Fhead *new, struct list=5Fhead *head)=0A+{=0A+ =5F=5Flist=5Fadd(new= , head->prev, head);=0A+}=0A+=0A+void list=5Fdel(struct list=5Fhead *entry)= =0A+{=0A+ =5F=5Flist=5Fdel(entry->prev, entry->next);=0A+ entry->next =3D N= ULL;=0A+ entry->prev =3D NULL;=0A+}=0A+=0A+void list=5Freplace(struct list= =5Fhead *old, struct list=5Fhead *new)=0A+{=0A+ new->next =3D old->next;=0A= + new->next->prev =3D new;=0A+ new->prev =3D old->prev;=0A+ new->prev->next= =3D new;=0A+}=0Adiff --git a/utils/ffsb-6.0-rc2/list.h b/utils/ffsb-6.0-rc= 2/list.h=0Anew file mode 100644=0Aindex 0000000..e14709d=0A--- /dev/null=0A= +++ b/utils/ffsb-6.0-rc2/list.h=0A@@ -0,0 +1,53 @@=0A+=0A+/*=0A+ * Simple l= ist implementation mostly take from the Linux Kernel=0A+ */=0A+=0A+#ifndef = =5FLIST=5FH=5F=0A+#define =5FLIST=5FH=5F=0A+=0A+struct list=5Fhead {=0A+ st= ruct list=5Fhead *next, *prev;=0A+};=0A+=0A+void INIT=5FLIST=5FHEAD(struct = list=5Fhead *list);=0A+void =5F=5Flist=5Fadd(struct list=5Fhead *new, struc= t list=5Fhead *prev,=0A+ struct list=5Fhead *next);=0A+void =5F=5Flist=5Fd= el(struct list=5Fhead *prev, struct list=5Fhead *next);=0A+void list=5Fadd(= struct list=5Fhead *new, struct list=5Fhead *head);=0A+void list=5Fadd=5Fta= il(struct list=5Fhead *new, struct list=5Fhead *head);=0A+void list=5Fdel(s= truct list=5Fhead *entry);=0A+void list=5Freplace(struct list=5Fhead *old, = struct list=5Fhead *new);=0A+=0A+#define LIST=5FHEAD=5FINIT(name) { &(name)= , &(name) }=0A+=0A+#define LIST=5FHEAD(name) struct list=5Fhead name =3D LI= ST=5FHEAD=5FINIT(name)=0A+=0A+#define list=5Ffor=5Feach(pos, head) \=0A+ fo= r (pos =3D (head)->next; pos->next, pos !=3D (head); pos =3D pos->next)=0A+= =0A+#define offsetof(type, member) ((int) &((type *)0)->member)=0A+=0A+#def= ine container=5Fof(ptr, type, member) ({ \=0A+ const typeof(((type *)0)->me= mber) *=5F=5Fmptr =3D (ptr); \=0A+ (type *)((char *)=5F=5Fmptr - offsetof(t= ype, member)); })=0A+=0A+#define list=5Fentry(ptr, type, member) \=0A+ cont= ainer=5Fof(ptr, type, member)=0A+=0A+#define list=5Ffor=5Feach=5Fentry(pos,= head, member) \=0A+ for (pos =3D list=5Fentry((head)->next, typeof(*pos), = member); \=0A+ pos->member.next, &pos->member !=3D (head); \=0A+ = pos =3D list=5Fentry(pos->member.next, typeof(*pos), member))=0A+=0A+#defi= ne list=5Ffor=5Feach=5Fentry=5Fsafe(pos, n, head, member) \=0A+ for (pos = =3D list=5Fentry((head)->next, typeof(*pos), member), \=0A+ n =3D list=5Fe= ntry(pos->member.next, typeof(*pos), member); \=0A+ &pos->member !=3D = (head); \=0A+ pos =3D n, n =3D list=5Fentry(n->member.next, typeo= f(*n), member))=0A+=0A+#define list=5Ffor=5Feach=5Fsafe(pos, n, head) \=0A+= for (pos =3D (head)->next, n =3D pos->next; pos !=3D (head); \=0A+ pos = =3D n, n =3D pos->next)=0A+=0A+#endif=0Adiff --git a/utils/ffsb-6.0-rc2/mai= n.c b/utils/ffsb-6.0-rc2/main.c=0Anew file mode 100644=0Aindex 0000000..b3c= 68b4=0A--- /dev/null=0A+++ b/utils/ffsb-6.0-rc2/main.c=0A@@ -0,0 +1,255 @@= =0A+/*=0A+ * Copyright (c) International Business Machines Corp., 2001-20= 04=0A+ *=0A+ * This program is free software; you can redistribute it an= d/or modify=0A+ * it under the terms of the GNU General Public License as= published by=0A+ * the Free Software Foundation; either version 2 of the= License, or=0A+ * (at your option) any later version.=0A+ *=0A+ * This= program is distributed in the hope that it will be useful,=0A+ * but WIT= HOUT ANY WARRANTY; without even the implied warranty of=0A+ * MERCHANTAB= ILITY or FITNESS FOR A PARTICULAR PURPOSE. See=0A+ * the GNU General Pub= lic License for more details.=0A+ *=0A+ * You should have received a copy= of the GNU General Public License=0A+ * along with this program; if not= , write to the Free Software=0A+ * Foundation, Inc., 51 Franklin Street, = Fifth Floor, Boston, MA 02110-1301 USA=0A+ */=0A+#include =0A+#i= nclude =0A+#include =0A+#include =0A+= #include =0A+#include =0A+#include =0A+#inc= lude =0A+#include =0A+#include =0A+=0A+#inclu= de =0A+=0A+#include "config.h"=0A+=0A+#include "ffsb.h"=0A+#inclu= de "util.h"=0A+#include "parser.h"=0A+=0A+/* State information for the poll= ing function below */=0A+struct ffsb=5Ftime=5Fpoll {=0A+ struct timeval sta= rttime;=0A+ int wait=5Ftime;=0A+};=0A+=0A+/* This is the polling function u= sed by the threadgroups to check=0A+ * elapsed time, when it returns 1 they= know it is time to stop=0A+ */=0A+static int ffsb=5Fpoll=5Ffn(void *ptr)= =0A+{=0A+ struct ffsb=5Ftime=5Fpoll *data =3D (struct ffsb=5Ftime=5Fpoll *)= ptr;=0A+ struct timeval curtime, difftime;=0A+ gettimeofday(&curtime, NULL)= ;=0A+=0A+ timersub(&curtime, &data->starttime, &difftime);=0A+ if (difftime= .tv=5Fsec >=3D data->wait=5Ftime)=0A+ return 1;=0A+ return 0;=0A+}=0A+=0A+= int main(int argc, char *argv[])=0A+{=0A+ int i;=0A+ ffsb=5Fconfig=5Ft fc;= =0A+ ffsb=5Fbarrier=5Ft thread=5Fbarrier, tg=5Fbarrier;=0A+ tg=5Frun=5Fpara= ms=5Ft *params;=0A+ struct ffsb=5Ftime=5Fpoll pdata;=0A+ struct timeval sta= rttime, endtime, difftime;=0A+ pthread=5Fattr=5Ft attr;=0A+ ffsb=5Fop=5Fres= ults=5Ft total=5Fresults;=0A+ double totaltime =3D 0.0f, usertime =3D 0.0f,= systime =3D 0.0f;=0A+ struct rusage before=5Fself, before=5Fchildren, afte= r=5Fself, after=5Fchildren;=0A+ pthread=5Ft *fs=5Fpts; /* threads to do fil= esystem creates in parallel */=0A+ char *callout =3D NULL;=0A+=0A+ char cti= me=5Fstart=5Fbuf[32];=0A+ char ctime=5Fend=5Fbuf[32];=0A+=0A+ memset(&befor= e=5Fself, 0, sizeof(before=5Fself));=0A+ memset(&before=5Fchildren, 0, size= of(before=5Fchildren));=0A+ memset(&after=5Fself, 0, sizeof(after=5Fself));= =0A+ memset(&after=5Fchildren, 0, sizeof(after=5Fchildren));=0A+=0A+ ffsb= =5Funbuffer=5Fstdout();=0A+=0A+ if (argc < 2) {=0A+ fprintf(stderr, "usage= : %s \n", argv[0]);=0A+ exit(1);=0A+ }=0A+=0A+ /* VERSION com= es from config.h (which is autogenerated by autoconf) */=0A+ printf("FFSB v= ersion %s started\n\n", VERSION);=0A+=0A+ ffsb=5Fparse=5Fnewconfig(&fc, arg= v[1]);=0A+ pdata.wait=5Ftime =3D fc.time;=0A+=0A+ if (fc.time)=0A+ printf(= "benchmark time =3D %u\n", fc.time);=0A+ else=0A+ printf("Only creating th= e fileset, not running benchmark.\n");=0A+=0A+ pthread=5Fattr=5Finit(&attr)= ;=0A+ pthread=5Fattr=5Fsetscope(&attr, PTHREAD=5FSCOPE=5FSYSTEM);=0A+=0A+ f= or (i =3D 0; i < fc.num=5Fthreadgroups; i++)=0A+ tg=5Fprint=5Fconfig(&fc.g= roups[i]);=0A+=0A+ fs=5Fpts =3D ffsb=5Fmalloc(sizeof(pthread=5Ft) * fc.num= =5Ffilesys);=0A+=0A+ gettimeofday(&starttime, NULL);=0A+ for (i =3D 0; i < = fc.num=5Ffilesys; i++) {=0A+ fs=5Fprint=5Fconfig(&fc.filesystems[i]);=0A+ = pthread=5Fcreate(fs=5Fpts + i, &attr, construct=5Fffsb=5Ffs,=0A+ = &fc.filesystems[i]);=0A+ }=0A+=0A+ fflush(stdout);=0A+ for (i =3D 0; i < fc= .num=5Ffilesys; i++)=0A+ pthread=5Fjoin(fs=5Fpts[i], NULL);=0A+=0A+ gettim= eofday(&endtime, NULL);=0A+ timersub(&endtime, &starttime, &difftime);=0A+ = printf("fs setup took %ld secs\n", difftime.tv=5Fsec);=0A+ free(fs=5Fpts);= =0A+=0A+ if (fc.time =3D=3D 0) {=0A+ printf("Setup complete, exiting\n");= =0A+ return 0;=0A+ }=0A+=0A+ params =3D ffsb=5Fmalloc(sizeof(tg=5Frun=5Fpa= rams=5Ft) * fc.num=5Fthreadgroups);=0A+=0A+ init=5Fffsb=5Fop=5Fresults(&tot= al=5Fresults);=0A+ ffsb=5Fbarrier=5Finit(&thread=5Fbarrier, fc.num=5Ftotalt= hreads);=0A+ ffsb=5Fbarrier=5Finit(&tg=5Fbarrier, fc.num=5Fthreadgroups + 1= );=0A+=0A+ ffsb=5Fsync();=0A+=0A+ /* Execute the callout if any and wait fo= r it to return */=0A+ callout =3D fc=5Fget=5Fcallout(&fc);=0A+ if (callout)= {=0A+ printf("executing callout: \n %s\n", callout);=0A+ if (ffsb=5Fsyst= em(callout) < 0) {=0A+ perror("system");=0A+ exit(1);=0A+ }=0A+ }=0A+= =0A+ /* Spawn all of the threadgroup master threads */=0A+ for (i =3D 0; i = < fc.num=5Fthreadgroups; i++) {=0A+ params[i].tg =3D &fc.groups[i];=0A+ p= arams[i].fc =3D &fc;=0A+ params[i].poll=5Ffn =3D ffsb=5Fpoll=5Ffn;=0A+ pa= rams[i].poll=5Fdata =3D &pdata;=0A+ params[i].wait=5Ftime =3D FFSB=5FTG=5F= WAIT=5FTIME;=0A+ params[i].tg=5Fbarrier =3D &tg=5Fbarrier;=0A+ params[i].= thread=5Fbarrier =3D &thread=5Fbarrier;=0A+=0A+ pthread=5Fcreate(¶ms[i= ].pt, &attr, tg=5Frun, ¶ms[i]);=0A+ }=0A+=0A+ ffsb=5Fgetrusage(&before= =5Fself, &before=5Fchildren);=0A+ gettimeofday(&pdata.starttime, NULL);=0A+= =0A+ ffsb=5Fbarrier=5Fwait(&tg=5Fbarrier); /* sync with tg's to start */=0A= + printf("Starting Actual Benchmark At: %s\n",=0A+ ctime=5Fr(&pdata.= starttime.tv=5Fsec, ctime=5Fstart=5Fbuf));=0A+ fflush(stdout);=0A+=0A+ /* W= ait for all of the threadgroup master threads to finish */=0A+ for (i =3D 0= ; i < fc.num=5Fthreadgroups; i++)=0A+ pthread=5Fjoin(params[i].pt, NULL);= =0A+=0A+ ffsb=5Fsync();=0A+ gettimeofday(&endtime, NULL);=0A+ ffsb=5Fgetrus= age(&after=5Fself, &after=5Fchildren);=0A+=0A+ printf("FFSB benchmark finis= hed at: %s\n",=0A+ ctime=5Fr(&endtime.tv=5Fsec, ctime=5Fend=5Fbuf)= );=0A+ printf("Results:\n");=0A+ fflush(stdout);=0A+=0A+ timersub(&endtime,= &pdata.starttime, &difftime);=0A+=0A+ totaltime =3D tvtodouble(&difftime);= =0A+=0A+ printf("Benchmark took %.2lf sec\n", totaltime);=0A+ printf("\n");= =0A+=0A+ for (i =3D 0; i < fc.num=5Fthreadgroups; i++) {=0A+ struct ffsb= =5Fop=5Fresults tg=5Fresults;=0A+ ffsb=5Ftg=5Ft *tg =3D fc.groups + i;=0A+= =0A+ init=5Fffsb=5Fop=5Fresults(&tg=5Fresults);=0A+=0A+ /* Grab the indiv= idual tg results */=0A+ tg=5Fcollect=5Fresults(tg, &tg=5Fresults);=0A+=0A+= if (fc.num=5Fthreadgroups =3D=3D 1)=0A+ printf("Total Results\n");=0A+ = else=0A+ printf("ThreadGroup %d\n", i);=0A+=0A+ printf("=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D\n");=0A+ print=5Fresults(&tg=5Fresults, tot= altime);=0A+=0A+ if (tg=5Fneeds=5Fstats(tg)) {=0A+ ffsb=5Fstatsd=5Ft fsd= ;=0A+ tg=5Fcollect=5Fstats(tg, &fsd);=0A+ ffsb=5Fstatsd=5Fprint(&fsd);= =0A+ }=0A+ printf("\n");=0A+=0A+ /* Add the tg results to the total */= =0A+ tg=5Fcollect=5Fresults(&fc.groups[i], &total=5Fresults);=0A+ }=0A+=0A= + if (fc.num=5Fthreadgroups > 1) {=0A+ printf("Total Results\n");=0A+ pri= ntf("=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D\n");=0A+ print=5Fresult= s(&total=5Fresults, totaltime);=0A+ }=0A+#define USEC=5FPER=5FSEC ((double)= (1000000.0f))=0A+=0A+ /* sum up self and children after */=0A+ usertime =3D= (after=5Fself.ru=5Futime.tv=5Fsec +=0A+ ((after=5Fself.ru=5Futime.tv= =5Fusec) / USEC=5FPER=5FSEC)) +=0A+ ((after=5Fchildren.ru=5Futime.tv=5F= sec +=0A+ ((after=5Fchildren.ru=5Futime.tv=5Fusec) / USEC=5FPER=5FSEC= )));=0A+=0A+ /* subtract away the before */=0A+ usertime -=3D (before=5Fsel= f.ru=5Futime.tv=5Fsec +=0A+ ((before=5Fself.ru=5Futime.tv=5Fusec) / U= SEC=5FPER=5FSEC)) +=0A+ ((before=5Fchildren.ru=5Futime.tv=5Fsec +=0A+ = ((before=5Fchildren.ru=5Futime.tv=5Fusec) / USEC=5FPER=5FSEC)));=0A+= =0A+ /* sum up self and children after */=0A+ systime =3D (after=5Fself.ru= =5Fstime.tv=5Fsec +=0A+ ((after=5Fself.ru=5Fstime.tv=5Fusec) / USEC=5FP= ER=5FSEC)) +=0A+ ((after=5Fchildren.ru=5Fstime.tv=5Fsec +=0A+ ((a= fter=5Fchildren.ru=5Fstime.tv=5Fusec) / USEC=5FPER=5FSEC)));=0A+=0A+ /* sub= tract away the before */=0A+ systime -=3D (before=5Fself.ru=5Fstime.tv=5Fse= c +=0A+ ((before=5Fself.ru=5Fstime.tv=5Fusec) / USEC=5FPER=5FSEC)) += =0A+ ((before=5Fchildren.ru=5Fstime.tv=5Fsec +=0A+ ((before=5Fchi= ldren.ru=5Fstime.tv=5Fusec) / USEC=5FPER=5FSEC)));=0A+=0A+ printf("\n\n");= =0A+ printf("%.1lf%% User Time\n", 100 * usertime / totaltime);=0A+ print= f("%.1lf%% System Time\n", 100 * systime / totaltime);=0A+ printf("%.1f%% C= PU Utilization\n", 100 * (usertime + systime) /=0A+ totaltime);=0A+ = free(params);=0A+ destroy=5Fffsb=5Fconfig(&fc);=0A+=0A+ return 0;=0A+}=0Adi= ff --git a/utils/ffsb-6.0-rc2/metaops.c b/utils/ffsb-6.0-rc2/metaops.c=0Ane= w file mode 100644=0Aindex 0000000..954cddd=0A--- /dev/null=0A+++ b/utils/f= fsb-6.0-rc2/metaops.c=0A@@ -0,0 +1,112 @@=0A+/*=0A+ * Copyright (c) Inter= national Business Machines Corp., 2001-2004=0A+ *=0A+ * This program is f= ree software; you can redistribute it and/or modify=0A+ * it under the t= erms of the GNU General Public License as published by=0A+ * the Free Sof= tware Foundation; either version 2 of the License, or=0A+ * (at your opti= on) any later version.=0A+ *=0A+ * This program is distributed in the hop= e that it will be useful,=0A+ * but WITHOUT ANY WARRANTY; without even t= he implied warranty of=0A+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR = PURPOSE. See=0A+ * the GNU General Public License for more details.=0A+ = *=0A+ * You should have received a copy of the GNU General Public License= =0A+ * along with this program; if not, write to the Free Software=0A+ *= Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301= USA=0A+ */=0A+#include =0A+#include =0A+#include =0A+#include =0A+#include =0A+#include =0A+=0A+#include "ffsb.h"=0A+#include "metaops.h"=0A+#include "rand.h"= =0A+#include "filelist.h"=0A+=0A+/* metaops:=0A+ * createdir=0A+ * remove= dir=0A+ * renamedir=0A+ * renamefile=0A+ */=0A+=0A+void metaops=5Fmetadir= (ffsb=5Ffs=5Ft * fs, unsigned opnum)=0A+{=0A+ fs=5Fset=5Fopdata(fs, fs=5Fge= t=5Fmetafiles(fs), opnum);=0A+}=0A+=0A+static void createdir(struct benchfi= les *dirs, randdata=5Ft * rd)=0A+{=0A+ struct ffsb=5Ffile *newdir;=0A+=0A+ = newdir =3D add=5Ffile(dirs, 0, rd);=0A+ if (mkdir(newdir->name, S=5FIRWXU) = < 0) {=0A+ perror("mkdir");=0A+ exit(1);=0A+ }=0A+ unlock=5Ffile=5Fwriter= (newdir);=0A+}=0A+=0A+static void removedir(struct benchfiles *dirs, randda= ta=5Ft * rd)=0A+{=0A+ struct ffsb=5Ffile *deldir;=0A+=0A+ deldir =3D choose= =5Ffile=5Fwriter(dirs, rd);=0A+ remove=5Ffile(dirs, deldir);=0A+=0A+ if (rm= dir(deldir->name) < 0) {=0A+ perror("rmdir");=0A+ exit(1);=0A+ }=0A+ unlo= ck=5Ffile=5Fwriter(deldir);=0A+}=0A+=0A+static void renamedir(struct benchf= iles *dirs, randdata=5Ft * rd)=0A+{=0A+ struct ffsb=5Ffile *dir;=0A+ char *= oldname;=0A+=0A+ dir =3D choose=5Ffile=5Fwriter(dirs, rd);=0A+ oldname =3D = dir->name;=0A+ rename=5Ffile(dir);=0A+=0A+ if (rename(oldname, dir->name) <= 0) {=0A+ perror("rename");=0A+ exit(1);=0A+ }=0A+ unlock=5Ffile=5Fwriter= (dir);=0A+ free(oldname);=0A+}=0A+=0A+void ffsb=5Fmetaops(ffsb=5Fthread=5Ft= * ft, ffsb=5Ffs=5Ft * fs, unsigned opnum)=0A+{=0A+ struct benchfiles *bf = =3D (struct benchfiles *)fs=5Fget=5Fopdata(fs, opnum);=0A+ randdata=5Ft *rd= =3D ft=5Fget=5Franddata(ft);=0A+=0A+ createdir(bf, rd);=0A+ createdir(bf, = rd);=0A+ removedir(bf, rd);=0A+ renamedir(bf, rd);=0A+=0A+ ft=5Fincr=5Fop(f= t, opnum, 1, 0);=0A+}=0A+=0A+void ffsb=5Fcreatedir(ffsb=5Fthread=5Ft * ft, = ffsb=5Ffs=5Ft * fs, unsigned opnum)=0A+{=0A+ struct benchfiles *bf =3D (str= uct benchfiles *)fs=5Fget=5Fopdata(fs, opnum);=0A+ struct ffsb=5Ffile *newd= ir;=0A+ randdata=5Ft *rd =3D ft=5Fget=5Franddata(ft);=0A+=0A+ newdir =3D ad= d=5Fdir(bf, 0, rd);=0A+ if (mkdir(newdir->name, S=5FIRWXU) < 0) {=0A+ perr= or("mkdir");=0A+ exit(1);=0A+ }=0A+ unlock=5Ffile=5Fwriter(newdir);=0A+=0A= + ft=5Fincr=5Fop(ft, opnum, 1, 0);=0A+}=0Adiff --git a/utils/ffsb-6.0-rc2/m= etaops.h b/utils/ffsb-6.0-rc2/metaops.h=0Anew file mode 100644=0Aindex 0000= 000..3f81e4f=0A--- /dev/null=0A+++ b/utils/ffsb-6.0-rc2/metaops.h=0A@@ -0,0= +1,28 @@=0A+/*=0A+ * Copyright (c) International Business Machines Corp.= , 2001-2004=0A+ *=0A+ * This program is free software; you can redistrib= ute it and/or modify=0A+ * it under the terms of the GNU General Public L= icense as published by=0A+ * the Free Software Foundation; either version= 2 of the License, or=0A+ * (at your option) any later version.=0A+ *=0A+= * This program is distributed in the hope that it will be useful,=0A+ * = but WITHOUT ANY WARRANTY; without even the implied warranty of=0A+ * M= ERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See=0A+ * the GNU Ge= neral Public License for more details.=0A+ *=0A+ * You should have receiv= ed a copy of the GNU General Public License=0A+ * along with this program= ; if not, write to the Free Software=0A+ * Foundation, Inc., 51 Franklin= Street, Fifth Floor, Boston, MA 02110-1301 USA=0A+ */=0A+#ifndef =5FMETAOP= S=5FH=5F=0A+#define =5FMETAOPS=5FH=5F=0A+=0A+#include "ffsb.h"=0A+#include = "fileops.h"=0A+=0A+void ffsb=5Fmetaops(struct ffsb=5Fthread *, ffsb=5Ffs=5F= t *, unsigned);=0A+void ffsb=5Fcreatedir(struct ffsb=5Fthread *, ffsb=5Ffs= =5Ft *, unsigned);=0A+void metaops=5Fmetadir(ffsb=5Ffs=5Ft *, unsigned);=0A= +=0A+#endif /* =5FMETAOPS=5FH=5F */=0Adiff --git a/utils/ffsb-6.0-rc2/missi= ng b/utils/ffsb-6.0-rc2/missing=0Anew file mode 100755=0Aindex 0000000..6a3= 7006=0A--- /dev/null=0A+++ b/utils/ffsb-6.0-rc2/missing=0A@@ -0,0 +1,336 @@= =0A+#! /bin/sh=0A+# Common stub for a few missing GNU programs while instal= ling.=0A+# Copyright (C) 1996, 1997, 1999, 2000, 2002 Free Software Foundat= ion, Inc.=0A+# Originally by Fran,cois Pinard , 19= 96.=0A+=0A+# This program is free software; you can redistribute it and/or = modify=0A+# it under the terms of the GNU General Public License as publish= ed by=0A+# the Free Software Foundation; either version 2, or (at your opti= on)=0A+# any later version.=0A+=0A+# This program is distributed in the hop= e that it will be useful,=0A+# but WITHOUT ANY WARRANTY; without even the i= mplied warranty of=0A+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE= . See the=0A+# GNU General Public License for more details.=0A+=0A+# You s= hould have received a copy of the GNU General Public License=0A+# along wit= h this program; if not, write to the Free Software=0A+# Foundation, Inc., 5= 9 Temple Place - Suite 330, Boston, MA=0A+# 02111-1307, USA.=0A+=0A+# As a = special exception to the GNU General Public License, if you=0A+# distribute= this file as part of a program that contains a=0A+# configuration script g= enerated by Autoconf, you may include it under=0A+# the same distribution t= erms that you use for the rest of that program.=0A+=0A+if test $# -eq 0; th= en=0A+ echo 1>&2 "Try \`$0 --help' for more information"=0A+ exit 1=0A+fi= =0A+=0A+run=3D:=0A+=0A+# In the cases where this matters, `missing' is bein= g run in the=0A+# srcdir already.=0A+if test -f configure.ac; then=0A+ con= figure=5Fac=3Dconfigure.ac=0A+else=0A+ configure=5Fac=3Dconfigure.in=0A+fi= =0A+=0A+case "$1" in=0A+--run)=0A+ # Try to run requested program, and jus= t exit if it succeeds.=0A+ run=3D=0A+ shift=0A+ "$@" && exit 0=0A+ ;;= =0A+esac=0A+=0A+# If it does not exist, or fails to run (possibly an outdat= ed version),=0A+# try to emulate it.=0A+case "$1" in=0A+=0A+ -h|--h|--he|-= -hel|--help)=0A+ echo "\=0A+$0 [OPTION]... PROGRAM [ARGUMENT]...=0A+=0A+= Handle \`PROGRAM [ARGUMENT]...' for when PROGRAM is missing, or return an= =0A+error status if there is no known handling for PROGRAM.=0A+=0A+Options:= =0A+ -h, --help display this help and exit=0A+ -v, --version outpu= t version information and exit=0A+ --run try to run the given co= mmand, and emulate it if it fails=0A+=0A+Supported PROGRAM values:=0A+ acl= ocal touch file \`aclocal.m4'=0A+ autoconf touch file \`configure= '=0A+ autoheader touch file \`config.h.in'=0A+ automake touch all \= `Makefile.in' files=0A+ bison create \`y.tab.[ch]', if possible, fr= om existing .[ch]=0A+ flex create \`lex.yy.c', if possible, from e= xisting .c=0A+ help2man touch the output file=0A+ lex create= \`lex.yy.c', if possible, from existing .c=0A+ makeinfo touch the out= put file=0A+ tar try tar, gnutar, gtar, then tar without non-port= able flags=0A+ yacc create \`y.tab.[ch]', if possible, from existi= ng .[ch]"=0A+ ;;=0A+=0A+ -v|--v|--ve|--ver|--vers|--versi|--versio|--ve= rsion)=0A+ echo "missing 0.4 - GNU automake"=0A+ ;;=0A+=0A+ -*)=0A+ = echo 1>&2 "$0: Unknown \`$1' option"=0A+ echo 1>&2 "Try \`$0 --help' = for more information"=0A+ exit 1=0A+ ;;=0A+=0A+ aclocal*)=0A+ if = test -z "$run" && ($1 --version) > /dev/null 2>&1; then=0A+ # We have= it, but it failed.=0A+ exit 1=0A+ fi=0A+=0A+ echo 1>&2 "\=0A+W= ARNING: \`$1' is missing on your system. You should only need it if=0A+ = you modified \`acinclude.m4' or \`${configure=5Fac}'. You might want= =0A+ to install the \`Automake' and \`Perl' packages. Grab them fr= om=0A+ any GNU archive site."=0A+ touch aclocal.m4=0A+ ;;=0A+= =0A+ autoconf)=0A+ if test -z "$run" && ($1 --version) > /dev/null 2>&1= ; then=0A+ # We have it, but it failed.=0A+ exit 1=0A+ fi=0A= +=0A+ echo 1>&2 "\=0A+WARNING: \`$1' is missing on your system. You sho= uld only need it if=0A+ you modified \`${configure=5Fac}'. You mig= ht want to install the=0A+ \`Autoconf' and \`GNU m4' packages. Gra= b them from any GNU=0A+ archive site."=0A+ touch configure=0A+ = ;;=0A+=0A+ autoheader)=0A+ if test -z "$run" && ($1 --version) > /dev= /null 2>&1; then=0A+ # We have it, but it failed.=0A+ exit 1=0A= + fi=0A+=0A+ echo 1>&2 "\=0A+WARNING: \`$1' is missing on your system= . You should only need it if=0A+ you modified \`acconfig.h' or \`$= {configure=5Fac}'. You might want=0A+ to install the \`Autoconf' a= nd \`GNU m4' packages. Grab them=0A+ from any GNU archive site."= =0A+ files=3D`sed -n 's/^[ ]*A[CM]=5FCONFIG=5FHEADER(\([^)]*\)).*/\1/p' = ${configure=5Fac}`=0A+ test -z "$files" && files=3D"config.h"=0A+ tou= ch=5Ffiles=3D=0A+ for f in $files; do=0A+ case "$f" in=0A+ *:*= ) touch=5Ffiles=3D"$touch=5Ffiles "`echo "$f" |=0A+ sed -e 's/^[^= :]*://' -e 's/:.*//'`;;=0A+ *) touch=5Ffiles=3D"$touch=5Ffiles $f.in";= ;=0A+ esac=0A+ done=0A+ touch $touch=5Ffiles=0A+ ;;=0A+=0A+ = automake*)=0A+ if test -z "$run" && ($1 --version) > /dev/null 2>&1; the= n=0A+ # We have it, but it failed.=0A+ exit 1=0A+ fi=0A+=0A+= echo 1>&2 "\=0A+WARNING: \`$1' is missing on your system. You should o= nly need it if=0A+ you modified \`Makefile.am', \`acinclude.m4' or = \`${configure=5Fac}'.=0A+ You might want to install the \`Automake'= and \`Perl' packages.=0A+ Grab them from any GNU archive site."=0A= + find . -type f -name Makefile.am -print |=0A+ sed 's/\.am$/.in/' |= =0A+ while read f; do touch "$f"; done=0A+ ;;=0A+=0A+ autom4te)=0A+ = if test -z "$run" && ($1 --version) > /dev/null 2>&1; then=0A+ # W= e have it, but it failed.=0A+ exit 1=0A+ fi=0A+=0A+ echo 1>&2 "= \=0A+WARNING: \`$1' is needed, and you do not seem to have it handy on your= =0A+ system. You might have modified some files without having the= =0A+ proper tools for further handling them.=0A+ You can ge= t \`$1Help2man' as part of \`Autoconf' from any GNU=0A+ archive sit= e."=0A+=0A+ file=3D`echo "$*" | sed -n 's/.*--output[ =3D]*\([^ ]*\).*/\= 1/p'`=0A+ test -z "$file" && file=3D`echo "$*" | sed -n 's/.*-o[ ]*\([^ = ]*\).*/\1/p'`=0A+ if test -f "$file"; then=0A+ touch $file=0A+ else= =0A+ test -z "$file" || exec >$file=0A+ echo "#! /bin/sh"=0A+ echo "# Creat= ed by GNU Automake missing as a replacement of"=0A+ echo "# $ $@"=0A+ echo= "exit 0"=0A+ chmod +x $file=0A+ exit 1=0A+ fi=0A+ ;;=0A+=0A+ bison|= yacc)=0A+ echo 1>&2 "\=0A+WARNING: \`$1' is missing on your system. You= should only need it if=0A+ you modified a \`.y' file. You may nee= d the \`Bison' package=0A+ in order for those modifications to take= effect. You can get=0A+ \`Bison' from any GNU archive site."=0A+ = rm -f y.tab.c y.tab.h=0A+ if [ $# -ne 1 ]; then=0A+ eval LASTA= RG=3D"\${$#}"=0A+ case "$LASTARG" in=0A+ *.y)=0A+ SRCFILE=3D`echo "$LAS= TARG" | sed 's/y$/c/'`=0A+ if [ -f "$SRCFILE" ]; then=0A+ cp "= $SRCFILE" y.tab.c=0A+ fi=0A+ SRCFILE=3D`echo "$LASTARG" | sed 's/y$= /h/'`=0A+ if [ -f "$SRCFILE" ]; then=0A+ cp "$SRCFILE" y.tab.h= =0A+ fi=0A+ ;;=0A+ esac=0A+ fi=0A+ if [ ! -f y.tab.h ]; then=0A= + echo >y.tab.h=0A+ fi=0A+ if [ ! -f y.tab.c ]; then=0A+ echo 'main()= { return 0; }' >y.tab.c=0A+ fi=0A+ ;;=0A+=0A+ lex|flex)=0A+ echo= 1>&2 "\=0A+WARNING: \`$1' is missing on your system. You should only need= it if=0A+ you modified a \`.l' file. You may need the \`Flex' pac= kage=0A+ in order for those modifications to take effect. You can = get=0A+ \`Flex' from any GNU archive site."=0A+ rm -f lex.yy.c= =0A+ if [ $# -ne 1 ]; then=0A+ eval LASTARG=3D"\${$#}"=0A+ case "= $LASTARG" in=0A+ *.l)=0A+ SRCFILE=3D`echo "$LASTARG" | sed 's/l$/c/'`= =0A+ if [ -f "$SRCFILE" ]; then=0A+ cp "$SRCFILE" lex.yy.c=0A+= fi=0A+ ;;=0A+ esac=0A+ fi=0A+ if [ ! -f lex.yy.c ]; then=0A+ e= cho 'main() { return 0; }' >lex.yy.c=0A+ fi=0A+ ;;=0A+=0A+ help2man)= =0A+ if test -z "$run" && ($1 --version) > /dev/null 2>&1; then=0A+ = # We have it, but it failed.=0A+ exit 1=0A+ fi=0A+=0A+ echo 1= >&2 "\=0A+WARNING: \`$1' is missing on your system. You should only need i= t if=0A+ you modified a dependency of a manual page. You may need the=0A+= \`Help2man' package in order for those modifications to take=0A+ effect.= You can get \`Help2man' from any GNU archive site."=0A+=0A+ file=3D`ec= ho "$*" | sed -n 's/.*-o \([^ ]*\).*/\1/p'`=0A+ if test -z "$file"; then= =0A+ file=3D`echo "$*" | sed -n 's/.*--output=3D\([^ ]*\).*/\1/p'`=0A+ f= i=0A+ if [ -f "$file" ]; then=0A+ touch $file=0A+ else=0A+ test -z "$= file" || exec >$file=0A+ echo ".ab help2man is required to generate this pa= ge"=0A+ exit 1=0A+ fi=0A+ ;;=0A+=0A+ makeinfo)=0A+ if test -z "$r= un" && (makeinfo --version) > /dev/null 2>&1; then=0A+ # We have make= info, but it failed.=0A+ exit 1=0A+ fi=0A+=0A+ echo 1>&2 "\=0A+= WARNING: \`$1' is missing on your system. You should only need it if=0A+ = you modified a \`.texi' or \`.texinfo' file, or any other file=0A+ = indirectly affecting the aspect of the manual. The spurious=0A+ = call might also be the consequence of using a buggy \`make' (AIX,=0A+ = DU, IRIX). You might want to install the \`Texinfo' package or=0A+= the \`GNU make' package. Grab either from any GNU archive site."= =0A+ file=3D`echo "$*" | sed -n 's/.*-o \([^ ]*\).*/\1/p'`=0A+ if tes= t -z "$file"; then=0A+ file=3D`echo "$*" | sed 's/.* \([^ ]*\) *$/\1/'= `=0A+ file=3D`sed -n '/^@setfilename/ { s/.* \([^ ]*\) *$/\1/; p; q; }= ' $file`=0A+ fi=0A+ touch $file=0A+ ;;=0A+=0A+ tar)=0A+ shift= =0A+ if test -n "$run"; then=0A+ echo 1>&2 "ERROR: \`tar' requires = --run"=0A+ exit 1=0A+ fi=0A+=0A+ # We have already tried tar in = the generic part.=0A+ # Look for gnutar/gtar before invocation to avoid = ugly error=0A+ # messages.=0A+ if (gnutar --version > /dev/null 2>&1)= ; then=0A+ gnutar "$@" && exit 0=0A+ fi=0A+ if (gtar --version = > /dev/null 2>&1); then=0A+ gtar "$@" && exit 0=0A+ fi=0A+ firs= targ=3D"$1"=0A+ if shift; then=0A+ case "$firstarg" in=0A+ *o*)=0A+ = firstarg=3D`echo "$firstarg" | sed s/o//`=0A+ tar "$firstarg" "$@" && e= xit 0=0A+ ;;=0A+ esac=0A+ case "$firstarg" in=0A+ *h*)=0A+ firstarg= =3D`echo "$firstarg" | sed s/h//`=0A+ tar "$firstarg" "$@" && exit 0=0A= + ;;=0A+ esac=0A+ fi=0A+=0A+ echo 1>&2 "\=0A+WARNING: I can't see= m to be able to run \`tar' with the given arguments.=0A+ You may wa= nt to install GNU tar or Free paxutils, or check the=0A+ command li= ne arguments."=0A+ exit 1=0A+ ;;=0A+=0A+ *)=0A+ echo 1>&2 "\=0A+W= ARNING: \`$1' is needed, and you do not seem to have it handy on your=0A+ = system. You might have modified some files without having the=0A+ = proper tools for further handling them. Check the \`README' file,= =0A+ it often tells you about the needed prerequirements for instal= ling=0A+ this package. You may also peek at any GNU archive site, = in case=0A+ some other package would contain this missing \`$1' pro= gram."=0A+ exit 1=0A+ ;;=0A+esac=0A+=0A+exit 0=0Adiff --git a/utils/f= fsb-6.0-rc2/mkinstalldirs b/utils/ffsb-6.0-rc2/mkinstalldirs=0Anew file mod= e 100755=0Aindex 0000000..1790da1=0A--- /dev/null=0A+++ b/utils/ffsb-6.0-rc= 2/mkinstalldirs=0A@@ -0,0 +1,40 @@=0A+#! /bin/sh=0A+# mkinstalldirs --- mak= e directory hierarchy=0A+# Author: Noah Friedman = =0A+# Created: 1993-05-16=0A+# Public domain=0A+=0A+# $Id: mkinstalldirs,v = 1.1 2009/10/26 11:25:55 subrata=5Fmodak Exp $=0A+=0A+errstatus=3D0=0A+=0A+f= or file=0A+do=0A+ set fnord `echo ":$file" | sed -ne 's/^:\//#/;s/^://;s/= \// /g;s/^#/\//;p'`=0A+ shift=0A+=0A+ pathcomp=3D=0A+ for d=0A+ do= =0A+ pathcomp=3D"$pathcomp$d"=0A+ case "$pathcomp" in=0A+ -* = ) pathcomp=3D./$pathcomp ;;=0A+ esac=0A+=0A+ if test ! -d "$pathcom= p"; then=0A+ echo "mkdir $pathcomp"=0A+=0A+ mkdir "$pathcomp"= || lasterr=3D$?=0A+=0A+ if test ! -d "$pathcomp"; then=0A+ errs= tatus=3D$lasterr=0A+ fi=0A+ fi=0A+=0A+ pathcomp=3D"$pathcomp= /"=0A+ done=0A+done=0A+=0A+exit $errstatus=0A+=0A+# mkinstalldirs ends he= re=0Adiff --git a/utils/ffsb-6.0-rc2/parser.c b/utils/ffsb-6.0-rc2/parser.c= =0Anew file mode 100644=0Aindex 0000000..64c89e1=0A--- /dev/null=0A+++ b/ut= ils/ffsb-6.0-rc2/parser.c=0A@@ -0,0 +1,1051 @@=0A+/*=0A+ * Copyright (c) = International Business Machines Corp., 2001-2004=0A+ *=0A+ * This program= is free software; you can redistribute it and/or modify=0A+ * it under = the terms of the GNU General Public License as published by=0A+ * the Fre= e Software Foundation; either version 2 of the License, or=0A+ * (at your= option) any later version.=0A+ *=0A+ * This program is distributed in th= e hope that it will be useful,=0A+ * but WITHOUT ANY WARRANTY; without e= ven the implied warranty of=0A+ * MERCHANTABILITY or FITNESS FOR A PARTIC= ULAR PURPOSE. See=0A+ * the GNU General Public License for more details.= =0A+ *=0A+ * You should have received a copy of the GNU General Public Li= cense=0A+ * along with this program; if not, write to the Free Software= =0A+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 0211= 0-1301 USA=0A+ */=0A+#include =0A+#include =0A+#include = =0A+#include =0A+#include =0A+=0A+#include "= ffsb.h"=0A+#include "parser.h"=0A+#include "ffsb=5Ftg.h"=0A+#include "ffsb= =5Fstats.h"=0A+#include "util.h"=0A+#include "list.h"=0A+=0A+#define BUFSIZ= E 1024=0A+=0A+config=5Foptions=5Ft global=5Foptions[] =3D GLOBAL=5FOPTIONS;= =0A+config=5Foptions=5Ft tg=5Foptions[] =3D THREADGROUP=5FOPTIONS;=0A+confi= g=5Foptions=5Ft fs=5Foptions[] =3D FILESYSTEM=5FOPTIONS;=0A+config=5Foption= s=5Ft stats=5Foptions[] =3D STATS=5FOPTIONS;=0A+container=5Fdesc=5Ft contai= ner=5Fdesc[] =3D CONTAINER=5FDESC;=0A+=0A+/* strips out whitespace and comm= ents, returns NULL on eof */=0A+void parseerror(char *msg)=0A+{=0A+ fprintf= (stderr, "Error parsing %s\n", msg);=0A+ exit(1);=0A+}=0A+=0A+static char *= get=5Fnext=5Fline(FILE * f)=0A+{=0A+ static char buf[BUFSIZE];=0A+ char *re= t, *tmp;=0A+ int flag =3D 1;=0A+ while (flag) {=0A+ ret =3D fgets(buf, BUF= SIZE, f);=0A+ if (ret =3D=3D NULL)=0A+ return NULL;=0A+ ret =3D buf;=0A= + while (isspace(*ret))=0A+ ret++;=0A+=0A+ if ((*ret =3D=3D COMMENT=5FC= HAR) || (*ret =3D=3D '\0'))=0A+ continue;=0A+=0A+ tmp =3D ret;=0A+ whil= e (*tmp !=3D '\0') {=0A+ if (*tmp =3D=3D COMMENT=5FCHAR) {=0A+ *tmp = =3D '\0';=0A+ break;=0A+ }=0A+ tmp++;=0A+ }=0A+ flag =3D 0;=0A+ }= =0A+ return ret;=0A+}=0A+=0A+static char *strip=5Fspace(char *buf)=0A+{=0A+= int len;=0A+ char *tmp, *tmp2;=0A+ int flag =3D 1;=0A+=0A+ len =3D strnlen= (buf, BUFSIZE);=0A+ tmp =3D malloc(sizeof(char) * len);=0A+ memset(tmp, 0, = sizeof(char) * len);=0A+ tmp2 =3D tmp;=0A+ while (flag) {=0A+ if (!isspace= (*buf)) {=0A+ *tmp =3D *buf;=0A+ tmp++;=0A+ }=0A+ buf++;=0A+ if (*bu= f !=3D '\0')=0A+ continue;=0A+ flag =3D 0;=0A+ }=0A+ return tmp2;=0A+}= =0A+=0A+static uint64=5Ft size64=5Fconvert(char *buf)=0A+{=0A+ size=5Ft buf= =5Fsize =3D strlen(buf);=0A+ char unit[3] =3D { 0 };=0A+ char search=5Fstr[= 256];=0A+ uint64=5Ft size;=0A+ uint64=5Ft multiplier =3D 1;=0A+ int i;=0A+= =0A+ if (buf=5Fsize =3D=3D 1)=0A+ goto out;=0A+=0A+ strcpy(unit, buf + (bu= f=5Fsize - 2));=0A+ for (i =3D 0; i < 2; i++) {=0A+ if (isdigit(unit[i]))= =0A+ goto try=5Fsingle;=0A+ unit[i] =3D toupper(unit[i]);=0A+ }=0A+ goto= do=5Fmultiplier;=0A+=0A+try=5Fsingle:=0A+ memcpy(unit, "\0", 3);=0A+ strcp= y(unit, buf + (buf=5Fsize - 1));=0A+ if (isdigit(unit[0])) {=0A+ unit[0] = =3D 0;=0A+ goto out;=0A+ }=0A+ unit[0] =3D toupper(unit[0]);=0A+=0A+do=5Fm= ultiplier:=0A+ if (!strcmp("KB", unit) || !strcmp("K", unit))=0A+ multipli= er =3D 1024;=0A+ if (!strcmp("MB", unit) || !strcmp("M", unit))=0A+ multip= lier =3D 1048576;=0A+ if (!strcmp("GB", unit) || !strcmp("G", unit))=0A+ m= ultiplier =3D 1073741824;=0A+ if (multiplier =3D=3D 1) {=0A+ unit[0] =3D 0= ;=0A+ multiplier =3D 0;=0A+ }=0A+out:=0A+ sprintf(search=5Fstr, "%%llu%s",= unit);=0A+ if (1 =3D=3D sscanf(buf, search=5Fstr, &size))=0A+ return size= * multiplier;=0A+ return 0;=0A+}=0A+=0A+static uint64=5Ft *get=5Fopt64(cha= r *buf, char string[])=0A+{=0A+ char search=5Fstr[256];=0A+ char *line =3D = strip=5Fspace(buf);=0A+ uint64=5Ft temp;=0A+ uint64=5Ft *ret;=0A+=0A+ sprin= tf(search=5Fstr, "%s=3D%%llu\\n", string);=0A+ if (1 =3D=3D sscanf(line, se= arch=5Fstr, &temp)) {=0A+ ret =3D malloc(sizeof(uint64=5Ft));=0A+ *ret = =3D temp;=0A+ return ret;=0A+ }=0A+ free(line);=0A+ return NULL;=0A+}=0A+= =0A+static uint32=5Ft *get=5Fopt32(char *buf, char string[])=0A+{=0A+ uint3= 2=5Ft *ret;=0A+ uint64=5Ft *res;=0A+ res =3D get=5Fopt64(buf, string);=0A+ = if (res) {=0A+ ret =3D malloc(sizeof(uint32=5Ft));=0A+ *ret =3D *res;=0A+= free(res);=0A+ return ret;=0A+ }=0A+ return NULL;=0A+}=0A+=0A+static uin= t8=5Ft *get=5Foptbool(char *buf, char string[])=0A+{=0A+ uint8=5Ft *ret;=0A= + uint64=5Ft *res;=0A+ res =3D get=5Fopt64(buf, string);=0A+ if (res) {=0A+= if ((int)*res < 0 || (int)*res > 1) {=0A+ printf("Error in: %s", buf);= =0A+ printf("%llu not boolean\n", (long long unsigned)*res);=0A+ exit(1= );=0A+ }=0A+ ret =3D malloc(sizeof(uint8=5Ft));=0A+ *ret =3D *res;=0A+ = free(res);=0A+ return ret;=0A+ }=0A+ return NULL;=0A+}=0A+=0A+static char = *get=5Foptstr(char *buf, char string[])=0A+{=0A+ char search=5Fstr[256];=0A= + char *line =3D strip=5Fspace(buf);=0A+ char *ret=5Fbuf;=0A+ char temp[BUF= SIZE];=0A+ int len;=0A+=0A+ len =3D strnlen(string, BUFSIZE);=0A+ sprintf(s= earch=5Fstr, "%s=3D%%%ds\\n", string, BUFSIZE - len - 1);=0A+ if (1 =3D=3D = sscanf(line, search=5Fstr, &temp)) {=0A+ len =3D strnlen(temp, 4096);=0A+ = ret=5Fbuf =3D malloc(len);=0A+ strncpy(ret=5Fbuf, temp, len);=0A+ return= ret=5Fbuf;=0A+ }=0A+ free(line);=0A+ return NULL;=0A+}=0A+=0A+static doubl= e *get=5Foptdouble(char *buf, char string[])=0A+{=0A+ char search=5Fstr[256= ];=0A+ char *line =3D strip=5Fspace(buf);=0A+ double temp;=0A+ double *ret;= =0A+=0A+ sprintf(search=5Fstr, "%s=3D%%lf\\n", string);=0A+ if (1 =3D=3D ss= canf(line, search=5Fstr, &temp)) {=0A+ ret =3D malloc(sizeof(double));=0A+= *ret =3D temp;=0A+ return ret;=0A+ }=0A+ free(line);=0A+ return NULL;=0A= +}=0A+=0A+static range=5Ft *get=5Foptrange(char *buf, char string[])=0A+{= =0A+ char search=5Fstr[256];=0A+ double a, b;=0A+ range=5Ft *ret;=0A+=0A+ s= printf(search=5Fstr, "%s %%lf %%lf\\n", string);=0A+ if (2 =3D=3D sscanf(bu= f, search=5Fstr, &a, &b)) {=0A+ ret =3D malloc(sizeof(struct range));=0A+ = ret->a =3D a;=0A+ ret->b =3D b;=0A+ return ret;=0A+ }=0A+ return NULL;= =0A+}=0A+=0A+static size=5Fweight=5Ft *get=5Foptsizeweight(char *buf, char = string[])=0A+{=0A+ char search=5Fstr[256];=0A+ char size[256];=0A+ int weig= ht;=0A+ size=5Fweight=5Ft *ret;=0A+=0A+ sprintf(search=5Fstr, "%s %%s %%d\\= n", string);=0A+ if (2 =3D=3D sscanf(buf, search=5Fstr, &size, &weight)) {= =0A+ ret =3D malloc(sizeof(struct size=5Fweight));=0A+ ret->size =3D size= 64=5Fconvert(size);=0A+ ret->weight =3D weight;=0A+ return ret;=0A+ }=0A+= return NULL;=0A+}=0A+=0A+static uint64=5Ft *get=5Foptsize64(char *buf, cha= r string[])=0A+{=0A+ char search=5Fstr[256];=0A+ char *line =3D strip=5Fspa= ce(buf);=0A+ char temp[256];=0A+ uint64=5Ft size;=0A+ uint64=5Ft *ret =3D N= ULL;=0A+=0A+ sprintf(search=5Fstr, "%s=3D%%s\\n", string);=0A+ if (1 =3D=3D= sscanf(line, search=5Fstr, &temp)) {=0A+ ret =3D malloc(sizeof(uint64=5Ft= ));=0A+ *ret =3D size64=5Fconvert(temp);=0A+ }=0A+ free(line);=0A+ return = ret;=0A+}=0A+=0A+static uint32=5Ft *get=5Foptsize32(char *buf, char string[= ])=0A+{=0A+ uint32=5Ft *ret;=0A+ uint64=5Ft *res;=0A+ res =3D get=5Foptsize= 64(buf, string);=0A+ if (res) {=0A+ ret =3D malloc(sizeof(uint32=5Ft));=0A= + *ret =3D *res;=0A+ free(res);=0A+ return ret;=0A+ }=0A+ return NULL;= =0A+}=0A+=0A+static uint64=5Ft *get=5Fdeprecated(char *buf, char string[])= =0A+{=0A+ char search=5Fstr[256];=0A+ char temp[BUFSIZE];=0A+ int len;=0A+= =0A+ len =3D strnlen(string, BUFSIZE);=0A+ sprintf(search=5Fstr, "%s%%%ds\\= n", string, BUFSIZE - len - 1);=0A+ if (1 =3D=3D sscanf(buf, search=5Fstr, = &temp))=0A+ printf("WARNING: The \"%s\" option is deprecated!!!\n", string= );=0A+=0A+ return NULL;=0A+}=0A+=0A+static container=5Ft *init=5Fcontainer(= void)=0A+{=0A+ container=5Ft *container;=0A+ container =3D malloc(sizeof(co= ntainer=5Ft));=0A+ container->config =3D NULL;=0A+ container->type =3D 0;= =0A+ container->next =3D NULL;=0A+ return container;=0A+}=0A+=0A+static int= set=5Foption(char *buf, config=5Foptions=5Ft * options)=0A+{=0A+ void *val= ue;=0A+=0A+ while (options->name) {=0A+ switch (options->type) {=0A+ case= TYPE=5FWEIGHT:=0A+ case TYPE=5FU32:=0A+ value =3D get=5Fopt32(buf, opti= ons->name);=0A+ if (value)=0A+ goto out;=0A+ break;=0A+ case TYPE= =5FU64:=0A+ value =3D get=5Fopt64(buf, options->name);=0A+ if (value)= =0A+ goto out;=0A+ break;=0A+ case TYPE=5FSTRING:=0A+ value =3D get= =5Foptstr(buf, options->name);=0A+ if (value)=0A+ goto out;=0A+ brea= k;=0A+ case TYPE=5FBOOLEAN:=0A+ value =3D get=5Foptbool(buf, options->na= me);=0A+ if (value)=0A+ goto out;=0A+ break;=0A+ case TYPE=5FDOUBLE= :=0A+ value =3D get=5Foptdouble(buf, options->name);=0A+ if (value)=0A+= goto out;=0A+ break;=0A+ case TYPE=5FRANGE:=0A+ value =3D get=5Fop= trange(buf, options->name);=0A+ if (value)=0A+ goto out;=0A+ break;= =0A+ case TYPE=5FSIZEWEIGHT:=0A+ value =3D get=5Foptsizeweight(buf, opti= ons->name);=0A+ if (value)=0A+ goto out;=0A+ break;=0A+ case TYPE= =5FDEPRECATED:=0A+ value =3D get=5Fdeprecated(buf, options->name);=0A+ = if (value)=0A+ goto out;=0A+ break;=0A+ case TYPE=5FSIZE32:=0A+ val= ue =3D get=5Foptsize32(buf, options->name);=0A+ if (value)=0A+ goto ou= t;=0A+ break;=0A+ case TYPE=5FSIZE64:=0A+ value =3D get=5Foptsize64(bu= f, options->name);=0A+ if (value)=0A+ goto out;=0A+ break;=0A+ defa= ult:=0A+ printf("Unknown type\n");=0A+ break;=0A+ }=0A+ options++;=0A= + }=0A+ return 0;=0A+=0A+out:=0A+ if (options->storage=5Ftype =3D=3D STORE= =5FSINGLE)=0A+ options->value =3D value;=0A+ if (options->storage=5Ftype = =3D=3D STORE=5FLIST) {=0A+ if (!options->value) {=0A+ value=5Flist=5Ft *= lhead;=0A+ lhead =3D malloc(sizeof(struct value=5Flist));=0A+ INIT=5FLI= ST=5FHEAD(&lhead->list);=0A+ options->value =3D lhead;=0A+ }=0A+ value= =5Flist=5Ft *tmp=5Flist, *tmp=5Flist2;=0A+ tmp=5Flist =3D malloc(sizeof(st= ruct value=5Flist));=0A+ INIT=5FLIST=5FHEAD(&tmp=5Flist->list);=0A+ tmp= =5Flist->value =3D value;=0A+ tmp=5Flist2 =3D (struct value=5Flist *)optio= ns->value;=0A+ list=5Fadd(&(tmp=5Flist->list), &(tmp=5Flist2->list));=0A+ = }=0A+=0A+ return 1;=0A+}=0A+=0A+void insert=5Fcontainer(container=5Ft * con= tainer, container=5Ft * new=5Fcontainer)=0A+{=0A+ while (container->next)= =0A+ container =3D container->next;=0A+ container->next =3D new=5Fcontaine= r;=0A+}=0A+=0A+container=5Ft *search=5Fgroup(char *, FILE *);=0A+=0A+contai= ner=5Ft *handle=5Fcontainer(char *buf, FILE * f, uint32=5Ft type,=0A+ = config=5Foptions=5Ft * options)=0A+{=0A+ container=5Fdesc=5Ft *desc =3D = container=5Fdesc;=0A+ container=5Ft *ret=5Fcontainer;=0A+ container=5Ft *tm= p=5Fcontainer, *tmp2=5Fcontainer;=0A+ container=5Ft *child =3D NULL;=0A+ in= t is=5Foption;=0A+=0A+ while (desc->name)=0A+ if (desc->type =3D=3D type)= =0A+ break;=0A+ else=0A+ desc++;=0A+=0A+ if (!desc->name)=0A+ return = NULL;=0A+=0A+ buf =3D get=5Fnext=5Fline(f);=0A+ while (buf) {=0A+ is=5Fopt= ion =3D set=5Foption(buf, options);=0A+ tmp=5Fcontainer =3D search=5Fgroup= (buf, f);=0A+ if (tmp=5Fcontainer) {=0A+ if (tmp=5Fcontainer->type =3D= =3D END) {=0A+ free(tmp=5Fcontainer);=0A+ break;=0A+ } else {=0A+ = if (child =3D=3D NULL)=0A+ child =3D tmp=5Fcontainer;=0A+ else {= =0A+ tmp2=5Fcontainer =3D child;=0A+ while (tmp2=5Fcontainer->next)= =0A+ tmp2=5Fcontainer =3D=0A+ tmp2=5Fcontainer->next;=0A+ = tmp2=5Fcontainer->next =3D tmp=5Fcontainer;=0A+ }=0A+=0A+ }=0A+ }=0A= + if (!is=5Foption && !tmp=5Fcontainer) {=0A+ printf("ERROR!!! Unknow op= tion: %s", buf);=0A+ exit(1);=0A+ }=0A+ buf =3D get=5Fnext=5Fline(f);= =0A+ }=0A+ ret=5Fcontainer =3D init=5Fcontainer();=0A+ ret=5Fcontainer->con= fig =3D options;=0A+ ret=5Fcontainer->type =3D type;=0A+ if (child)=0A+ re= t=5Fcontainer->child =3D child;=0A+=0A+ return ret=5Fcontainer;=0A+}=0A+=0A= +container=5Ft *search=5Fgroup(char *buf, FILE * f)=0A+{=0A+ char temp[BUFS= IZE];=0A+ char *ptr;=0A+ config=5Foptions=5Ft *options;=0A+ container=5Fdes= c=5Ft *desc =3D container=5Fdesc;=0A+ container=5Ft *ret=5Fcontainer;=0A+= =0A+ if (1 =3D=3D sscanf(buf, "[%s]\n", (char *)&temp))=0A+ while (desc->n= ame) {=0A+ ptr =3D strstr(buf, desc->name);=0A+ if (ptr)=0A+ switch = (desc->type) {=0A+ case FILESYSTEM:=0A+ options =3D malloc(sizeof(fs= =5Foptions));=0A+ memcpy(options, fs=5Foptions,=0A+ sizeof(f= s=5Foptions));=0A+ return handle=5Fcontainer(buf, f,=0A+ desc->t= ype,=0A+ options);=0A+ break;=0A+ case THREAD=5FGROUP:=0A+ = options =3D malloc(sizeof(tg=5Foptions));=0A+ memcpy(options, tg=5Fop= tions,=0A+ sizeof(tg=5Foptions));=0A+ return handle=5Fcontai= ner(buf, f,=0A+ desc->type,=0A+ options);=0A+ break;=0A+ = case STATS:=0A+ options =3D malloc(sizeof(stats=5Foptions));=0A+ = memcpy(options, stats=5Foptions,=0A+ sizeof(stats=5Foptions));= =0A+ return handle=5Fcontainer(buf, f,=0A+ desc->type,=0A+ = options);=0A+ break;=0A+ case END:=0A+ ret=5Fcontainer =3D ini= t=5Fcontainer();=0A+ ret=5Fcontainer->type =3D END;=0A+ return ret= =5Fcontainer;=0A+ break;=0A+ }=0A+ desc++;=0A+ }=0A+ return NULL;= =0A+}=0A+=0A+void *get=5Fvalue(config=5Foptions=5Ft * config, char *name)= =0A+{=0A+ while (config->name) {=0A+ if (!strcmp(config->name, name)) {=0A= + if (config->value)=0A+ return config->value;=0A+ else=0A+ retur= n NULL;=0A+ }=0A+ config++;=0A+ }=0A+ return 0;=0A+}=0A+=0A+char *get=5Fc= onfig=5Fstr(config=5Foptions=5Ft * config, char *name)=0A+{=0A+ return get= =5Fvalue(config, name);=0A+}=0A+=0A+uint32=5Ft get=5Fconfig=5Fu32(config=5F= options=5Ft * config, char *name)=0A+{=0A+ void *value =3D get=5Fvalue(conf= ig, name);=0A+ if (value)=0A+ return *(uint32=5Ft *) value;=0A+ return 0;= =0A+}=0A+=0A+uint8=5Ft get=5Fconfig=5Fbool(config=5Foptions=5Ft * config, c= har *name)=0A+{=0A+ void *value =3D get=5Fvalue(config, name);=0A+ if (valu= e)=0A+ return *(uint8=5Ft *) value;=0A+ return 0;=0A+}=0A+=0A+uint64=5Ft g= et=5Fconfig=5Fu64(config=5Foptions=5Ft * config, char *name)=0A+{=0A+ void = *value =3D get=5Fvalue(config, name);=0A+ if (value)=0A+ return *(uint64= =5Ft *) value;=0A+ return 0;=0A+}=0A+=0A+double get=5Fconfig=5Fdouble(confi= g=5Foptions=5Ft * config, char *name)=0A+{=0A+ void *value =3D get=5Fvalue(= config, name);=0A+ if (value)=0A+ return *(double *)value;=0A+ return 0;= =0A+}=0A+=0A+static profile=5Fconfig=5Ft *parse(FILE * f)=0A+{=0A+ char *bu= f;=0A+ profile=5Fconfig=5Ft *profile=5Fconf;=0A+ container=5Ft *tmp=5Fconta= iner;=0A+=0A+ profile=5Fconf =3D malloc(sizeof(profile=5Fconfig=5Ft));=0A+ = profile=5Fconf->global =3D malloc(sizeof(global=5Foptions));=0A+ memcpy(pro= file=5Fconf->global, global=5Foptions, sizeof(global=5Foptions));=0A+ profi= le=5Fconf->fs=5Fcontainer =3D NULL;=0A+ profile=5Fconf->tg=5Fcontainer =3D = NULL;=0A+ int is=5Foption;=0A+ buf =3D get=5Fnext=5Fline(f);=0A+=0A+ while = (buf) {=0A+ is=5Foption =3D set=5Foption(buf, profile=5Fconf->global);=0A+= tmp=5Fcontainer =3D search=5Fgroup(buf, f);=0A+ if (tmp=5Fcontainer)=0A+= switch (tmp=5Fcontainer->type) {=0A+ case FILESYSTEM:=0A+ if (profi= le=5Fconf->fs=5Fcontainer =3D=3D NULL)=0A+ profile=5Fconf->fs=5Fcontain= er =3D=0A+ tmp=5Fcontainer;=0A+ else=0A+ insert=5Fcontainer(= profile=5Fconf->=0A+ fs=5Fcontainer,=0A+ tmp=5Fcontainer);=0A= + break;=0A+ case THREAD=5FGROUP:=0A+ if (profile=5Fconf->tg=5Fcont= ainer =3D=3D NULL)=0A+ profile=5Fconf->tg=5Fcontainer =3D=0A+ t= mp=5Fcontainer;=0A+ else=0A+ insert=5Fcontainer(profile=5Fconf->=0A+= tg=5Fcontainer,=0A+ tmp=5Fcontainer);=0A+ break;=0A+ de= fault:=0A+ break;=0A+ }=0A+ if (!is=5Foption && !tmp=5Fcontainer) {= =0A+ printf("ERROR!!! Unknow option: %s", buf);=0A+ exit(1);=0A+ }=0A+= buf =3D get=5Fnext=5Fline(f);=0A+ }=0A+ return profile=5Fconf;=0A+}=0A+= =0A+void set=5Fweight(ffsb=5Ftg=5Ft * tg, config=5Foptions=5Ft * config)=0A= +{=0A+ char *op;=0A+ int len;=0A+ config=5Foptions=5Ft *tmp=5Fconfig =3D co= nfig;=0A+=0A+ while (tmp=5Fconfig->name) {=0A+ if (tmp=5Fconfig->type =3D= =3D TYPE=5FWEIGHT) {=0A+ len =3D strlen(tmp=5Fconfig->name);=0A+ op =3D= malloc(sizeof(char) * len - 6);=0A+ memset(op, 0, sizeof(char) * len - 6= );=0A+ strncpy(op, tmp=5Fconfig->name, len - 7);=0A+ tg=5Fset=5Fop=5Fwe= ight(tg, op,=0A+ get=5Fconfig=5Fu32(config,=0A+ tmp=5Fconfig->na= me));=0A+ free(op);=0A+ }=0A+ tmp=5Fconfig++;=0A+ }=0A+}=0A+=0A+int get= =5Fweight=5Ftotal(ffsb=5Ftg=5Ft * tg)=0A+{=0A+ char *op;=0A+ int len;=0A+ i= nt total =3D 0;=0A+ config=5Foptions=5Ft *tmp=5Fconfig =3D tg=5Foptions;=0A= +=0A+ while (tmp=5Fconfig->name) {=0A+ if (tmp=5Fconfig->type =3D=3D TYPE= =5FWEIGHT) {=0A+ len =3D strlen(tmp=5Fconfig->name);=0A+ op =3D malloc(= sizeof(char) * len - 6);=0A+ memset(op, 0, sizeof(char) * len - 6);=0A+ = strncpy(op, tmp=5Fconfig->name, len - 7);=0A+ total +=3D tg=5Fget=5Fop= =5Fweight(tg, op);=0A+ free(op);=0A+ }=0A+ tmp=5Fconfig++;=0A+ }=0A+ re= turn total;=0A+}=0A+=0A+/* !!! hackish verification function, we should som= ehow roll this into the */=0A+/* op descriptions/struct themselves at some = point with a callback verify */=0A+/* op requirements: */=0A+/* require tg-= >read=5Fblocksize: read, readall */=0A+/* require tg->write=5Fblocksize: w= rite, create, append, rewritefsync */=0A+/* */=0A+=0A+static int verify=5Ft= g(ffsb=5Ftg=5Ft * tg)=0A+{=0A+ uint32=5Ft read=5Fweight =3D tg=5Fget=5Fop= =5Fweight(tg, "read");=0A+ uint32=5Ft readall=5Fweight =3D tg=5Fget=5Fop=5F= weight(tg, "readall");=0A+ uint32=5Ft write=5Fweight =3D tg=5Fget=5Fop=5Fwe= ight(tg, "write");=0A+ uint32=5Ft create=5Fweight =3D tg=5Fget=5Fop=5Fweigh= t(tg, "create");=0A+ uint32=5Ft append=5Fweight =3D tg=5Fget=5Fop=5Fweight(= tg, "append");=0A+ uint32=5Ft createdir=5Fweight =3D tg=5Fget=5Fop=5Fweight= (tg, "createdir");=0A+ uint32=5Ft delete=5Fweight =3D tg=5Fget=5Fop=5Fweigh= t(tg, "delete");=0A+ uint32=5Ft writeall=5Fweight =3D tg=5Fget=5Fop=5Fweigh= t(tg, "writeall");=0A+ uint32=5Ft writeall=5Ffsync=5Fweight =3D tg=5Fget=5F= op=5Fweight(tg, "writeall=5Ffsync");=0A+=0A+ uint32=5Ft sum=5Fweight =3D ge= t=5Fweight=5Ftotal(tg);=0A+=0A+ uint32=5Ft read=5Fblocksize =3D tg=5Fget=5F= read=5Fblocksize(tg);=0A+ uint32=5Ft write=5Fblocksize =3D tg=5Fget=5Fwrite= =5Fblocksize(tg);=0A+=0A+ int read=5Frandom =3D tg=5Fget=5Fread=5Frandom(tg= );=0A+ int read=5Fskip =3D tg=5Fget=5Fread=5Fskip(tg);=0A+ uint32=5Ft read= =5Fskipsize =3D tg=5Fget=5Fread=5Fskipsize(tg);=0A+=0A+ if (sum=5Fweight = =3D=3D 0) {=0A+ printf("Error: A threadgroup must have at least one weight= ed "=0A+ "operation\n");=0A+ return 1;=0A+ }=0A+=0A+ if ((read=5Fw= eight || readall=5Fweight) && !(read=5Fblocksize)) {=0A+ printf("Error: re= ad and readall operations require a "=0A+ "read=5Fblocksize\n");=0A= + return 1;=0A+ }=0A+=0A+ if ((write=5Fweight || create=5Fweight || append= =5Fweight || writeall=5Fweight=0A+ || writeall=5Ffsync=5Fweight) && !(= write=5Fblocksize)) {=0A+ printf("Error: write, writeall, create, append"= =0A+ "operations require a write=5Fblocksize\n");=0A+ return 1;=0A= + }=0A+=0A+ if (read=5Frandom && read=5Fskip) {=0A+ printf("Error: read=5F= random and read=5Fskip are mutually "=0A+ "exclusive\n");=0A+ retu= rn 1;=0A+ }=0A+=0A+ if (read=5Fskip && !(read=5Fskipsize)) {=0A+ printf("E= rror: read=5Fskip specified but read=5Fskipsize is "=0A+ "zero\n");= =0A+ return 1;=0A+ }=0A+=0A+ return 0;=0A+}=0A+=0A+static unsigned get=5Fn= um=5Fcontainers(container=5Ft * container)=0A+{=0A+ int numtg =3D 0;=0A+ wh= ile (container) {=0A+ numtg++;=0A+ container =3D container->next;=0A+ }= =0A+ return numtg;=0A+}=0A+=0A+static unsigned get=5Fnum=5Fthreadgroups(pro= file=5Fconfig=5Ft * profile=5Fconf)=0A+{=0A+ return get=5Fnum=5Fcontainers(= profile=5Fconf->tg=5Fcontainer);=0A+}=0A+=0A+static unsigned get=5Fnum=5Ffi= lesystems(profile=5Fconfig=5Ft * profile=5Fconf)=0A+{=0A+ return get=5Fnum= =5Fcontainers(profile=5Fconf->fs=5Fcontainer);=0A+}=0A+=0A+static int get= =5Fnum=5Ftotalthreads(profile=5Fconfig=5Ft * profile=5Fconf)=0A+{=0A+ int n= um=5Fthreads =3D 0;=0A+ container=5Ft *tg =3D profile=5Fconf->tg=5Fcontaine= r;=0A+ config=5Foptions=5Ft *tg=5Fconfig;=0A+=0A+ while (tg) {=0A+ tg=5Fco= nfig =3D tg->config;=0A+ while (tg=5Fconfig->name) {=0A+ if (!strcmp(tg= =5Fconfig->name, "num=5Fthreads"))=0A+ num=5Fthreads +=3D *(uint32=5Ft *= ) tg=5Fconfig->value;=0A+ tg=5Fconfig++;=0A+ }=0A+ if (tg->next)=0A+ = tg =3D tg->next;=0A+ else=0A+ break;=0A+ }=0A+=0A+ return num=5Fthreads;= =0A+}=0A+=0A+container=5Ft *get=5Fcontainer(container=5Ft * head=5Fcont, in= t pos)=0A+{=0A+ int count =3D 0;=0A+ while (head=5Fcont) {=0A+ if (count = =3D=3D pos)=0A+ return head=5Fcont;=0A+ head=5Fcont =3D head=5Fcont->nex= t;=0A+ count++;=0A+ }=0A+ return NULL;=0A+}=0A+=0A+config=5Foptions=5Ft *g= et=5Ffs=5Fconfig(ffsb=5Fconfig=5Ft * fc, int pos)=0A+{=0A+ container=5Ft *t= mp=5Fcont;=0A+=0A+ assert(pos < fc->num=5Ffilesys);=0A+ tmp=5Fcont =3D get= =5Fcontainer(fc->profile=5Fconf->fs=5Fcontainer, pos);=0A+ if (tmp=5Fcont)= =0A+ return tmp=5Fcont->config;=0A+ return NULL;=0A+}=0A+=0A+container=5Ft= *get=5Ffs=5Fcontainer(ffsb=5Fconfig=5Ft * fc, int pos)=0A+{=0A+ assert(pos= < fc->num=5Ffilesys);=0A+ return get=5Fcontainer(fc->profile=5Fconf->fs=5F= container, pos);=0A+}=0A+=0A+config=5Foptions=5Ft *get=5Ftg=5Fconfig(ffsb= =5Fconfig=5Ft * fc, int pos)=0A+{=0A+ container=5Ft *tmp=5Fcont;=0A+=0A+ as= sert(pos < fc->num=5Fthreadgroups);=0A+ tmp=5Fcont =3D get=5Fcontainer(fc->= profile=5Fconf->tg=5Fcontainer, pos);=0A+ if (tmp=5Fcont)=0A+ return tmp= =5Fcont->config;=0A+ return NULL;=0A+}=0A+=0A+container=5Ft *get=5Ftg=5Fcon= tainer(ffsb=5Fconfig=5Ft * fc, int pos)=0A+{=0A+ assert(pos < fc->num=5Fthr= eadgroups);=0A+ return get=5Fcontainer(fc->profile=5Fconf->tg=5Fcontainer, = pos);=0A+}=0A+=0A+static void init=5Fthreadgroup(ffsb=5Fconfig=5Ft * fc, co= nfig=5Foptions=5Ft * config,=0A+ ffsb=5Ftg=5Ft * tg, int tg=5Fnum)= =0A+{=0A+ int num=5Fthreads;=0A+ memset(tg, 0, sizeof(ffsb=5Ftg=5Ft));=0A+= =0A+ num=5Fthreads =3D get=5Fconfig=5Fu32(config, "num=5Fthreads");=0A+=0A+= init=5Fffsb=5Ftg(tg, num=5Fthreads, tg=5Fnum);=0A+=0A+ if (get=5Fconfig=5F= str(config, "bindfs")) {=0A+ int i;=0A+ config=5Foptions=5Ft *tmp=5Fconfi= g;=0A+ for (i =3D 0; i < fc->num=5Ffilesys; i++) {=0A+ tmp=5Fconfig =3D = get=5Ffs=5Fconfig(fc, i);=0A+ if (!strcmp(get=5Fconfig=5Fstr(config, "bin= dfs"),=0A+ get=5Fconfig=5Fstr(tmp=5Fconfig, "location")))=0A+ bre= ak;=0A+ }=0A+ if (strcmp(get=5Fconfig=5Fstr(config, "bindfs"),=0A+ g= et=5Fconfig=5Fstr(tmp=5Fconfig, "location"))) {=0A+ printf("Bind fs faile= d: Base fs \"%s\" not found\n",=0A+ get=5Fconfig=5Fstr(config, "b= indfs"));=0A+ exit(1);=0A+ }=0A+ printf("%d\n", i);=0A+ tg->bindfs =3D= i;=0A+ }=0A+=0A+ tg->read=5Frandom =3D get=5Fconfig=5Fbool(config, "read= =5Frandom");=0A+ tg->read=5Fsize =3D get=5Fconfig=5Fu64(config, "read=5Fsiz= e");=0A+ tg->read=5Fskip =3D get=5Fconfig=5Fbool(config, "read=5Fskip");=0A= + tg->read=5Fskipsize =3D get=5Fconfig=5Fu32(config, "read=5Fskipsize");=0A= +=0A+ tg->write=5Frandom =3D get=5Fconfig=5Fbool(config, "write=5Frandom");= =0A+ tg->write=5Fsize =3D get=5Fconfig=5Fu64(config, "write=5Fsize");=0A+ t= g->fsync=5Ffile =3D get=5Fconfig=5Fbool(config, "fsync=5Ffile");=0A+=0A+ tg= ->wait=5Ftime =3D get=5Fconfig=5Fu32(config, "op=5Fdelay");=0A+=0A+ tg=5Fse= t=5Fread=5Fblocksize(tg, get=5Fconfig=5Fu32(config, "read=5Fblocksize"));= =0A+ tg=5Fset=5Fwrite=5Fblocksize(tg, get=5Fconfig=5Fu32(config, "write=5Fb= locksize"));=0A+=0A+ set=5Fweight(tg, config);=0A+=0A+ if (verify=5Ftg(tg))= {=0A+ printf("threadgroup %d verification failed\n", tg=5Fnum);=0A+ exit= (1);=0A+ }=0A+}=0A+=0A+static void init=5Ffilesys(ffsb=5Fconfig=5Ft * fc, i= nt num)=0A+{=0A+ config=5Foptions=5Ft *config =3D get=5Ffs=5Fconfig(fc, num= );=0A+ profile=5Fconfig=5Ft *profile=5Fconf =3D fc->profile=5Fconf;=0A+ ffs= b=5Ffs=5Ft *fs =3D &fc->filesystems[num];=0A+ value=5Flist=5Ft *tmp=5Flist,= *list=5Fhead;=0A+=0A+ memset(fs, 0, sizeof(ffsb=5Ffs=5Ft));=0A+=0A+ fs->ba= sedir =3D get=5Fconfig=5Fstr(config, "location");=0A+=0A+ if (get=5Fconfig= =5Fstr(config, "clone")) {=0A+ int i;=0A+ config=5Foptions=5Ft *tmp=5Fcon= fig;=0A+ for (i =3D 0; i < fc->num=5Ffilesys; i++) {=0A+ tmp=5Fconfig = =3D get=5Ffs=5Fconfig(fc, i);=0A+ if (!strcmp(get=5Fconfig=5Fstr(config, = "clone"),=0A+ get=5Fconfig=5Fstr(tmp=5Fconfig, "location")))=0A+ = break;=0A+ }=0A+ if (strcmp(get=5Fconfig=5Fstr(config, "clone"),=0A+ = get=5Fconfig=5Fstr(tmp=5Fconfig, "location"))) {=0A+ printf("Clone fs fa= iled: Base fs \"%s\" not found\n",=0A+ get=5Fconfig=5Fstr(config,= "clone"));=0A+ exit(1);=0A+ }=0A+ config =3D tmp=5Fconfig;=0A+ }=0A+= =0A+ fs->num=5Fdirs =3D get=5Fconfig=5Fu32(config, "num=5Fdirs");=0A+ fs->n= um=5Fstart=5Ffiles =3D get=5Fconfig=5Fu32(config, "num=5Ffiles");=0A+ fs->m= infilesize =3D get=5Fconfig=5Fu64(config, "min=5Ffilesize");=0A+ fs->maxfil= esize =3D get=5Fconfig=5Fu64(config, "max=5Ffilesize");=0A+ fs->desired=5Ff= sutil =3D get=5Fconfig=5Fdouble(config, "desired=5Futil");=0A+ fs->init=5Ff= sutil =3D get=5Fconfig=5Fdouble(config, "init=5Futil");=0A+ fs->init=5Fsize= =3D get=5Fconfig=5Fu64(config, "init=5Fsize");=0A+=0A+ fs->flags =3D 0;=0A= + if (get=5Fconfig=5Fbool(config, "reuse"))=0A+ fs->flags |=3D FFSB=5FFS= =5FREUSE=5FFS;=0A+=0A+ if (get=5Fconfig=5Fbool(profile=5Fconf->global, "dir= ectio"))=0A+ fs->flags |=3D FFSB=5FFS=5FDIRECTIO | FFSB=5FFS=5FALIGNIO4K;= =0A+=0A+ if (get=5Fconfig=5Fbool(profile=5Fconf->global, "bufferio"))=0A+ = fs->flags |=3D FFSB=5FFS=5FLIBCIO;=0A+=0A+ if (get=5Fconfig=5Fbool(profile= =5Fconf->global, "alignio"))=0A+ fs->flags |=3D FFSB=5FFS=5FALIGNIO4K;=0A= +=0A+ if (get=5Fconfig=5Fbool(config, "agefs")) {=0A+ container=5Ft *age= =5Fcont =3D get=5Ffs=5Fcontainer(fc, num);=0A+ if (!age=5Fcont->child) {= =0A+ printf("No age threaggroup in profile");=0A+ exit(1);=0A+ }=0A+= =0A+ age=5Fcont =3D age=5Fcont->child;=0A+ ffsb=5Ftg=5Ft *age=5Ftg =3D ff= sb=5Fmalloc(sizeof(ffsb=5Ftg=5Ft));=0A+ init=5Fthreadgroup(fc, age=5Fcont-= >config, age=5Ftg, 0);=0A+ fs->aging=5Ftg =3D age=5Ftg;=0A+ fs->age=5Ffs = =3D 1;=0A+ }=0A+=0A+ if (get=5Fconfig=5Fu32(config, "create=5Fblocksize"))= =0A+ fs->create=5Fblocksize =3D get=5Fconfig=5Fu32(config,=0A+ = "create=5Fblocksize");=0A+ else=0A+ fs->create=5Fblocksize =3D FFSB=5FFS= =5FDEFAULT=5FCREATE=5FBLOCKSIZE;=0A+=0A+ if (get=5Fconfig=5Fu32(config, "ag= e=5Fblocksize"))=0A+ fs->age=5Fblocksize =3D get=5Fconfig=5Fu32(config, "a= ge=5Fblocksize");=0A+ else=0A+ fs->age=5Fblocksize =3D FFSB=5FFS=5FDEFAULT= =5FAGE=5FBLOCKSIZE;=0A+=0A+ list=5Fhead =3D (value=5Flist=5Ft *) get=5Fvalu= e(config, "size=5Fweight");=0A+ if (list=5Fhead) {=0A+ int count =3D 0;=0A= + size=5Fweight=5Ft *sizew;=0A+ list=5Ffor=5Feach=5Fentry(tmp=5Flist, &li= st=5Fhead->list, list)=0A+ count++;=0A+=0A+ fs->num=5Fweights =3D cou= nt;=0A+ fs->size=5Fweights =3D=0A+ malloc(sizeof(size=5Fweight=5Ft) *= fs->num=5Fweights);=0A+=0A+ count =3D 0;=0A+ list=5Ffor=5Feach=5Fentry(t= mp=5Flist, &list=5Fhead->list, list) {=0A+ sizew =3D (size=5Fweight=5Ft *= ) tmp=5Flist->value;=0A+ fs->size=5Fweights[count].size =3D sizew->size;= =0A+ fs->size=5Fweights[count].weight =3D sizew->weight;=0A+ fs->sum=5F= weights +=3D sizew->weight;=0A+ count++;=0A+ }=0A+ }=0A+}=0A+=0A+static = void init=5Ftg=5Fstats(ffsb=5Fconfig=5Ft * fc, int num)=0A+{=0A+ config=5Fo= ptions=5Ft *config;=0A+ container=5Ft *tmp=5Fcont;=0A+ value=5Flist=5Ft *tm= p=5Flist, *list=5Fhead;=0A+ syscall=5Ft sys;=0A+ ffsb=5Fstatsc=5Ft fsc =3D = { 0, };=0A+ char *sys=5Fname;=0A+ range=5Ft *bucket=5Frange;=0A+ uint32=5Ft= min, max;=0A+=0A+ tmp=5Fcont =3D get=5Ftg=5Fcontainer(fc, num);=0A+ if (tm= p=5Fcont->child) {=0A+ if (tmp=5Fcont->type =3D=3D STATS) {=0A+ config = =3D tmp=5Fcont->config;=0A+ if (get=5Fconfig=5Fbool(config, "enable=5Fsta= ts")) {=0A+=0A+ list=5Fhead =3D=0A+ (value=5Flist=5Ft *) get=5Fva= lue(config,=0A+ "ignore");=0A+ if (list=5Fhead)=0A+ lis= t=5Ffor=5Feach=5Fentry(tmp=5Flist,=0A+ &list=5Fhead->list,=0A+ = list) {=0A+ sys=5Fname =3D (char *)tmp=5Flist->value;=0A+ f= fsb=5Fstats=5Fstr2syscall(sys=5Fname, &sys);=0A+ ffsb=5Fstatsc=5Fignore= =5Fsys(&fsc, sys);=0A+ }=0A+=0A+ list=5Fhead =3D=0A+ (value= =5Flist=5Ft *) get=5Fvalue(config,=0A+ "msec=5Frange");=0A+ = if (list=5Fhead=0A+ && get=5Fconfig=5Fbool(config, "enable=5Frange"= ))=0A+ list=5Ffor=5Feach=5Fentry(tmp=5Flist,=0A+ &list=5Fhead= ->list,=0A+ list) {=0A+ bucket=5Frange =3D=0A+ (range= =5Ft *) tmp=5Flist->value;=0A+ min =3D=0A+ (uint32=5Ft) (bucket= =5Frange->a *=0A+ 1000.0f);=0A+ max =3D=0A+ (uint32=5Ft) = (bucket=5Frange->b *=0A+ 1000.0f);=0A+ ffsb=5Fstatsc=5Faddbucket(= &fsc, min, max);=0A+ }=0A+=0A+ tg=5Fset=5Fstatsc(&fc->groups[num], &= fsc);=0A+ }=0A+ }=0A+ }=0A+}=0A+=0A+static void init=5Fconfig(ffsb=5Fcon= fig=5Ft * fc, profile=5Fconfig=5Ft * profile=5Fconf)=0A+{=0A+ config=5Fopti= ons=5Ft *config;=0A+ container=5Ft *tmp=5Fcont;=0A+ int i;=0A+=0A+ fc->time= =3D get=5Fconfig=5Fu32(profile=5Fconf->global, "time");=0A+ fc->num=5Ffile= sys =3D get=5Fnum=5Ffilesystems(profile=5Fconf);=0A+ fc->num=5Fthreadgroups= =3D get=5Fnum=5Fthreadgroups(profile=5Fconf);=0A+ fc->num=5Ftotalthreads = =3D get=5Fnum=5Ftotalthreads(profile=5Fconf);=0A+ fc->profile=5Fconf =3D pr= ofile=5Fconf;=0A+ fc->callout =3D get=5Fconfig=5Fstr(profile=5Fconf->global= , "callout");=0A+=0A+ fc->filesystems =3D ffsb=5Fmalloc(sizeof(ffsb=5Ffs=5F= t) * fc->num=5Ffilesys);=0A+ for (i =3D 0; i < fc->num=5Ffilesys; i++)=0A+ = init=5Ffilesys(fc, i);=0A+=0A+ fc->groups =3D ffsb=5Fmalloc(sizeof(ffsb=5F= tg=5Ft) * fc->num=5Fthreadgroups);=0A+ for (i =3D 0; i < fc->num=5Fthreadgr= oups; i++) {=0A+ config =3D get=5Ftg=5Fconfig(fc, i);=0A+ init=5Fthreadgr= oup(fc, config, &fc->groups[i], i);=0A+ init=5Ftg=5Fstats(fc, i);=0A+ }=0A= +}=0A+=0A+void ffsb=5Fparse=5Fnewconfig(ffsb=5Fconfig=5Ft * fc, char *filen= ame)=0A+{=0A+ FILE *f;=0A+=0A+ profile=5Fconfig=5Ft *profile=5Fconf;=0A+=0A= + f =3D fopen(filename, "r");=0A+ if (f =3D=3D NULL) {=0A+ perror(filename= );=0A+ exit(1);=0A+ }=0A+ profile=5Fconf =3D parse(f);=0A+ fclose(f);=0A+= =0A+ init=5Fconfig(fc, profile=5Fconf);=0A+}=0Adiff --git a/utils/ffsb-6.0-= rc2/parser.h b/utils/ffsb-6.0-rc2/parser.h=0Anew file mode 100644=0Aindex 0= 000000..6357ede=0A--- /dev/null=0A+++ b/utils/ffsb-6.0-rc2/parser.h=0A@@ -0= ,0 +1,151 @@=0A+/*=0A+ * Copyright (c) International Business Machines Co= rp., 2001-2004=0A+ *=0A+ * This program is free software; you can redist= ribute it and/or modify=0A+ * it under the terms of the GNU General Publi= c License as published by=0A+ * the Free Software Foundation; either vers= ion 2 of the License, or=0A+ * (at your option) any later version.=0A+ *= =0A+ * This program is distributed in the hope that it will be useful,=0A= + * but WITHOUT ANY WARRANTY; without even the implied warranty of=0A+ *= MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See=0A+ * the GN= U General Public License for more details.=0A+ *=0A+ * You should have re= ceived a copy of the GNU General Public License=0A+ * along with this pro= gram; if not, write to the Free Software=0A+ * Foundation, Inc., 51 Fran= klin Street, Fifth Floor, Boston, MA 02110-1301 USA=0A+ */=0A+#ifndef =5FPA= RSER=5FH=5F=0A+#define =5FPARSER=5FH=5F=0A+=0A+#include "ffsb.h"=0A+#includ= e "list.h"=0A+=0A+#define COMMENT=5FCHAR '#'=0A+=0A+#define STORE=5FSINGLE = 0x0001=0A+#define STORE=5FLIST 0x0002=0A+=0A+#define TYPE=5FU32 0x0001= =0A+#define TYPE=5FU64 0x0002=0A+#define TYPE=5FSTRING 0x0004=0A+#define = TYPE=5FBOOLEAN 0x0008=0A+#define TYPE=5FDOUBLE 0x0010=0A+#define TYPE=5FR= ANGE 0x0020=0A+#define TYPE=5FSIZEWEIGHT 0x0040=0A+#define TYPE=5FDEPRECA= TED 0x0080=0A+#define TYPE=5FWEIGHT 0x0100=0A+#define TYPE=5FSIZE32 0x02= 00=0A+#define TYPE=5FSIZE64 0x0400=0A+=0A+#define ROOT 0x0001=0A+#define= THREAD=5FGROUP 0x0002=0A+#define FILESYSTEM 0x0004=0A+#define END 0x00= 08=0A+#define STATS 0x0010=0A+=0A+#define GLOBAL=5FOPTIONS { \=0A+ {= "num=5Ffilesystems", NULL, TYPE=5FDEPRECATED, STORE=5FSINGLE}, \=0A+ {"num= =5Fthreadgroups", NULL, TYPE=5FDEPRECATED, STORE=5FSINGLE}, \=0A+ {"verbose= ", NULL, TYPE=5FBOOLEAN, STORE=5FSINGLE}, \=0A+ {"time", NULL, TYPE=5FU32= , STORE=5FSINGLE}, \=0A+ {"directio", NULL, TYPE=5FBOOLEAN, STORE=5FSING= LE}, \=0A+ {"bufferio", NULL, TYPE=5FBOOLEAN, STORE=5FSINGLE}, \=0A+ {"= alignio", NULL, TYPE=5FBOOLEAN, STORE=5FSINGLE}, \=0A+ {"callout", NULL, = TYPE=5FSTRING, STORE=5FSINGLE}, \=0A+ {NULL, NULL, 0, 0} }=0A+=0A+#define= THREADGROUP=5FOPTIONS { \=0A+ {"bindfs", NULL, TYPE=5FSTRING, STORE= =5FSINGLE}, \=0A+ {"num=5Fthreads", NULL, TYPE=5FU32, STORE=5FSINGLE}, = \=0A+ {"read=5Fweight", NULL, TYPE=5FWEIGHT, STORE=5FSINGLE}, \=0A+ {"read= all=5Fweight", NULL, TYPE=5FWEIGHT, STORE=5FSINGLE}, \=0A+ {"read=5Frandom= ", NULL, TYPE=5FBOOLEAN, STORE=5FSINGLE}, \=0A+ {"read=5Fskip", NULL, TYPE= =5FU32, STORE=5FSINGLE}, \=0A+ {"read=5Fsize", NULL, TYPE=5FSIZE64, STORE= =5FSINGLE}, \=0A+ {"read=5Fblocksize", NULL, TYPE=5FSIZE32, STORE=5FSINGL= E}, \=0A+ {"read=5Fskipsize", NULL, TYPE=5FSIZE32, STORE=5FSINGLE}, \=0A+= {"write=5Fweight", NULL, TYPE=5FWEIGHT, STORE=5FSINGLE}, \=0A+ {"write=5F= fsync=5Fweight", NULL, TYPE=5FWEIGHT, STORE=5FSINGLE}, \=0A+ {"write=5Frand= om", NULL, TYPE=5FBOOLEAN, STORE=5FSINGLE}, \=0A+ {"fsync=5Ffile", NULL, T= YPE=5FDEPRECATED, STORE=5FSINGLE}, \=0A+ {"write=5Fsize", NULL, TYPE=5FSIZ= E64, STORE=5FSINGLE}, \=0A+ {"write=5Fblocksize", NULL, TYPE=5FSIZE32, STO= RE=5FSINGLE}, \=0A+ {"create=5Fweight", NULL, TYPE=5FWEIGHT, STORE=5FSINGL= E}, \=0A+ {"create=5Ffsync=5Fweight", NULL, TYPE=5FWEIGHT, STORE=5FSINGLE}= , \=0A+ {"delete=5Fweight", NULL, TYPE=5FWEIGHT, STORE=5FSINGLE}, \=0A+ {"= append=5Fweight", NULL, TYPE=5FWEIGHT, STORE=5FSINGLE}, \=0A+ {"append=5Ff= sync=5Fweight", NULL, TYPE=5FWEIGHT, STORE=5FSINGLE}, \=0A+ {"metaop=5Fweig= ht", NULL, TYPE=5FWEIGHT, STORE=5FSINGLE}, \=0A+ {"createdir=5Fweight", NU= LL, TYPE=5FWEIGHT, STORE=5FSINGLE}, \=0A+ {"op=5Fdelay", NULL, TYPE=5FU32,= STORE=5FSINGLE}, \=0A+ {"stat=5Fweight", NULL, TYPE=5FWEIGHT, STORE=5FSI= NGLE}, \=0A+ {"writeall=5Fweight", NULL, TYPE=5FWEIGHT, STORE=5FSINGLE}, = \=0A+ {"writeall=5Ffsync=5Fweight", NULL, TYPE=5FWEIGHT, STORE=5FSINGLE}, \= =0A+ {"open=5Fclose=5Fweight", NULL, TYPE=5FWEIGHT, STORE=5FSINGLE}, \=0A+= {NULL, NULL, 0} }=0A+=0A+#define FILESYSTEM=5FOPTIONS { \=0A+ {"locat= ion", NULL, TYPE=5FSTRING, STORE=5FSINGLE}, \=0A+ {"num=5Ffiles", NULL, T= YPE=5FU32, STORE=5FSINGLE}, \=0A+ {"num=5Fdirs", NULL, TYPE=5FU32, STORE= =5FSINGLE}, \=0A+ {"reuse", NULL, TYPE=5FBOOLEAN, STORE=5FSINGLE}, \=0A= + {"min=5Ffilesize", NULL, TYPE=5FSIZE64, STORE=5FSINGLE}, \=0A+ {"max=5Ff= ilesize", NULL, TYPE=5FSIZE64, STORE=5FSINGLE}, \=0A+ {"create=5Fblocksize= ", NULL, TYPE=5FSIZE32, STORE=5FSINGLE}, \=0A+ {"age=5Fblocksize", NULL, T= YPE=5FSIZE32, STORE=5FSINGLE}, \=0A+ {"desired=5Futil", NULL, TYPE=5FDOUBL= E, STORE=5FSINGLE}, \=0A+ {"agefs", NULL, TYPE=5FBOOLEAN, STORE=5FSINGLE},= \=0A+ {"size=5Fweight", NULL, TYPE=5FSIZEWEIGHT, STORE=5FLIST}, \=0A+ {= "init=5Futil", NULL, TYPE=5FDOUBLE, STORE=5FSINGLE}, \=0A+ {"init=5Fsize"= , NULL, TYPE=5FSIZE64, STORE=5FSINGLE}, \=0A+ {"clone", NULL, TYPE=5FSTRI= NG, STORE=5FSINGLE}, \=0A+ {NULL, NULL, 0} }=0A+=0A+#define STATS=5FOPTIO= NS { \=0A+ {"enable=5Fstats", NULL, TYPE=5FBOOLEAN, STORE=5FSINGLE}, = \=0A+ {"enable=5Frange", NULL, TYPE=5FBOOLEAN, STORE=5FSINGLE}, \=0A+ {"i= gnore", NULL, TYPE=5FSTRING, STORE=5FLIST}, \=0A+ {"msec=5Frange", NULL, = TYPE=5FRANGE, STORE=5FLIST}, \=0A+ {NULL, NULL, 0} }=0A+=0A+#define CONTA= INER=5FDESC { \=0A+ {"filesystem", FILESYSTEM, 10}, \=0A+ {"threadgrou= p", THREAD=5FGROUP, 11}, \=0A+ {"end", END, 3}, \=0A+ {"stats", STATS, = 5}, \=0A+ {NULL, 0, 0} }=0A+=0A+typedef struct container {=0A+ struct co= nfig=5Foptions *config;=0A+ uint32=5Ft type;=0A+ struct container *child;= =0A+ struct container *next;=0A+} container=5Ft;=0A+=0A+typedef struct conf= ig=5Foptions {=0A+ char *name;=0A+ void *value;=0A+ int type;=0A+ int stora= ge=5Ftype;=0A+} config=5Foptions=5Ft;=0A+=0A+typedef struct container=5Fdes= c {=0A+ char *name;=0A+ uint16=5Ft type;=0A+ uint16=5Ft size;=0A+} containe= r=5Fdesc=5Ft;=0A+=0A+typedef struct range {=0A+ double a;=0A+ double b;=0A+= } range=5Ft;=0A+=0A+typedef struct value=5Flist {=0A+ void *value;=0A+ stru= ct list=5Fhead list;=0A+} value=5Flist=5Ft;=0A+=0A+void ffsb=5Fparse=5Fnewc= onfig(ffsb=5Fconfig=5Ft *fc, char *filename);=0A+=0A+#endif=0Adiff --git a/= utils/ffsb-6.0-rc2/public-description b/utils/ffsb-6.0-rc2/public-descripti= on=0Anew file mode 100644=0Aindex 0000000..f770dd0=0A--- /dev/null=0A+++ b/= utils/ffsb-6.0-rc2/public-description=0A@@ -0,0 +1,4 @@=0A+The Flexible Fil= esystem Benchmark (FFSB) is a filesystem performance=0A+measurement tool. = It uses customizable profiles to measure of different=0A+workloads, and it = supports multiple groups of threads across multiple=0A+filesystems.=0Adiff = --git a/utils/ffsb-6.0-rc2/rand.c b/utils/ffsb-6.0-rc2/rand.c=0Anew file mo= de 100644=0Aindex 0000000..d2b349b=0A--- /dev/null=0A+++ b/utils/ffsb-6.0-r= c2/rand.c=0A@@ -0,0 +1,188 @@=0A+/*=0A+ * Copyright (c) International Bus= iness Machines Corp., 2001-2004=0A+ *=0A+ * This program is free software= ; you can redistribute it and/or modify=0A+ * it under the terms of the = GNU General Public License as published by=0A+ * the Free Software Founda= tion; either version 2 of the License, or=0A+ * (at your option) any late= r version.=0A+ *=0A+ * This program is distributed in the hope that it wi= ll be useful,=0A+ * but WITHOUT ANY WARRANTY; without even the implied w= arranty of=0A+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. Se= e=0A+ * the GNU General Public License for more details.=0A+ *=0A+ * Yo= u should have received a copy of the GNU General Public License=0A+ * alo= ng with this program; if not, write to the Free Software=0A+ * Foundatio= n, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA=0A+ */= =0A+#include =0A+#include =0A+#include =0A+= #include =0A+#include =0A+#include =0A+#in= clude =0A+#include =0A+#include =0A+#includ= e =0A+=0A+#include "config.h"=0A+#include "rand.h"=0A+#include "u= til.h"=0A+=0A+#define RANDSRC "/dev/urandom"=0A+=0A+static int randfd =3D -= 1;=0A+=0A+/* close the file after we're done with the benchmark */=0A+void = randcleanup(void)=0A+{=0A+ if (randfd > 0)=0A+ close(randfd);=0A+}=0A+=0A+= /* We fill up the array with random bits from RANDSRC here and set index */= =0A+/* to 0 */=0A+/* pre: state->size must be set and state->mt must be all= ocated! */=0A+static void sgenrand(randdata=5Ft * state)=0A+{=0A+ int got = =3D 0;=0A+ got =3D read(randfd, state->mt, state->size);=0A+ if (got !=3D s= tate->size) {=0A+ int i;=0A+ /* fall back on lrand48 */=0A+ /* printf("f= allback=5Frand\n"); */=0A+=0A+ for (i =3D got; i < state->size; i +=3D 4) = {=0A+ long int rand =3D 0;=0A+#ifdef HAVE=5FLRAND48=0A+ lrand48=5Fr(&(s= tate->data), &rand);=0A+#else=0A+ rand =3D random();=0A+#endif=0A+ asse= rt(rand !=3D 0);=0A+ state->mt[i] =3D (rand >> 24) & (512 - 1);=0A+ sta= te->mt[i + 1] =3D (rand >> 16) & (512 - 1);=0A+ state->mt[i + 2] =3D (ran= d >> 8) & (512 - 1);=0A+ state->mt[i + 3] =3D (rand) & (512 - 1);=0A+ }= =0A+=0A+ }=0A+ state->mti =3D 0;=0A+}=0A+=0A+/* returns 8 random bits */=0A= +static uint8=5Ft genrand8(randdata=5Ft * state)=0A+{=0A+ unsigned long ret= =3D 0;=0A+ if (state->mti >=3D state->size) {=0A+/* sgenrand(state); */= =0A+ state->mti =3D 0;=0A+ }=0A+ ret =3D state->mt[state->mti];=0A+ state-= >mti++;=0A+ return ret;=0A+}=0A+=0A+/* returns 32 random bits */=0A+static = uint32=5Ft genrand32(randdata=5Ft * state)=0A+{=0A+ uint8=5Ft bytes[4];=0A+= uint32=5Ft ret =3D 0;=0A+=0A+ bytes[0] =3D genrand8(state);=0A+ bytes[1] = =3D genrand8(state);=0A+ bytes[2] =3D genrand8(state);=0A+ bytes[3] =3D gen= rand8(state);=0A+=0A+ ret =3D *((uint32=5Ft *) bytes); /* !!! hack */=0A+ r= eturn ret;=0A+}=0A+=0A+void init=5Frandom(randdata=5Ft * state, uint32=5Ft = iter)=0A+{=0A+ struct timeval time;=0A+ if (iter =3D=3D 0)=0A+ state->size= =3D MIN=5FRANDBUF=5FSIZE * AVG=5FITR=5FRNDBTS;=0A+ else if (iter > MAX=5FR= ANDBUF=5FSIZE)=0A+ state->size =3D MAX=5FRANDBUF=5FSIZE * AVG=5FITR=5FRNDB= TS;=0A+ else=0A+ state->size =3D iter * AVG=5FITR=5FRNDBTS;=0A+=0A+ state-= >mt =3D ffsb=5Fmalloc(state->size);=0A+=0A+ /* !!!! racy? add pthread=5Fonc= e stuff later */=0A+ if ((randfd < 0) && (randfd =3D open(RANDSRC, O=5FRDO= NLY)) < 0) {=0A+ perror("open " RANDSRC);=0A+ exit(1);=0A+ }=0A+ sgenrand= (state);=0A+ gettimeofday(&time, NULL);=0A+#ifdef HAVE=5FLRAND48=0A+ srand4= 8=5Fr(time.tv=5Fsec, &state->data);=0A+#endif=0A+}=0A+=0A+void destroy=5Fra= ndom(randdata=5Ft * rd)=0A+{=0A+ free(rd->mt);=0A+}=0A+=0A+/*=0A+ * I've ta= ken the liberty of slightly redesigning this stuff.=0A+ * Instead of simply= getting the full word of random bits=0A+ * and throwing away most of it us= ing the mod operator,=0A+ * we should only get byte-sized chunks of random = bits and=0A+ * construct our random number that way with less wasteage - SR= =0A+ */=0A+uint32=5Ft getrandom(randdata=5Ft * state, uint32=5Ft mod)=0A+{= =0A+=0A+ uint8=5Ft bytes[4] =3D { 0, 0, 0, 0 };=0A+ uint32=5Ft ret;=0A+ int= num=5Fbytes =3D 4;=0A+ int i;=0A+=0A+ if ((mod =3D=3D 0) || (mod =3D=3D 1)= )=0A+ return 0;=0A+=0A+ if (!(mod >> 8))=0A+ num=5Fbytes =3D 1;=0A+ else = if (!(mod >> 16))=0A+ num=5Fbytes =3D 2;=0A+ else if (!(mod >> 24))=0A+ n= um=5Fbytes =3D 3;=0A+=0A+ for (i =3D 0; i < num=5Fbytes; i++)=0A+ bytes[i]= =3D genrand8(state);=0A+=0A+ ret =3D (bytes[3] << 24) + (bytes[2] << 16) += (bytes[1] << 8) + bytes[0];=0A+=0A+ return ret % mod;=0A+}=0A+=0A+uint64= =5Ft getllrandom(randdata=5Ft * state, uint64=5Ft mod)=0A+{=0A+ uint64=5Ft = result =3D 0;=0A+ uint64=5Ft high =3D 0;=0A+ uint32=5Ft low =3D 0;=0A+=0A+ = if (mod =3D=3D 0)=0A+ return 0;=0A+=0A+ /* ULONG=5FMAX comes from limits.h= */=0A+ if (mod < ULONG=5FMAX)=0A+ return (uint64=5Ft) getrandom(state, (u= int32=5Ft) mod);=0A+=0A+ high =3D genrand32(state);=0A+=0A+ low =3D genrand= 32(state);=0A+=0A+ result =3D high << 32;=0A+ result |=3D (uint64=5Ft) low;= =0A+=0A+ assert(result !=3D 0);=0A+ assert(result > 0);=0A+=0A+ return resu= lt % mod;=0A+}=0Adiff --git a/utils/ffsb-6.0-rc2/rand.h b/utils/ffsb-6.0-rc= 2/rand.h=0Anew file mode 100644=0Aindex 0000000..3abfdec=0A--- /dev/null=0A= +++ b/utils/ffsb-6.0-rc2/rand.h=0A@@ -0,0 +1,60 @@=0A+/*=0A+ * Copyright = (c) International Business Machines Corp., 2001-2004=0A+ *=0A+ * This pro= gram is free software; you can redistribute it and/or modify=0A+ * it un= der the terms of the GNU General Public License as published by=0A+ * the= Free Software Foundation; either version 2 of the License, or=0A+ * (at = your option) any later version.=0A+ *=0A+ * This program is distributed i= n the hope that it will be useful,=0A+ * but WITHOUT ANY WARRANTY; witho= ut even the implied warranty of=0A+ * MERCHANTABILITY or FITNESS FOR A PA= RTICULAR PURPOSE. See=0A+ * the GNU General Public License for more deta= ils.=0A+ *=0A+ * You should have received a copy of the GNU General Publi= c License=0A+ * along with this program; if not, write to the Free Softw= are=0A+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 0= 2110-1301 USA=0A+ */=0A+#ifndef =5FMTINT=5FH=5F=0A+#define =5FMTINT=5FH=5F= =0A+=0A+#include "config.h"=0A+=0A+#include =0A+#include =0A+#include =0A+=0A+/* A guess of how many random bytes (= not bits) */=0A+/* will be consumed per iteration */=0A+/* This is multipli= ed by the iteration count */=0A+/* to get the size of the array in init=5Fr= andom() */=0A+#define AVG=5FITR=5FRNDBTS 2=0A+=0A+/* Set a cap on the size = of the array, note this */=0A+/* is multiplied by AVG=5FITR=5FRNDBTS */=0A+= #define MAX=5FRANDBUF=5FSIZE (10 * 1024)=0A+=0A+#define MIN=5FRANDBUF=5FSIZ= E 1024=0A+=0A+=0A+typedef struct randdata {=0A+ int size;=0A+ uint8=5Ft *mt= ; /* the array of random bits */=0A+ int mti; /* mti=3D=3DN+1 means mt[N] = is not initialized */=0A+=0A+ /* fallback random source, lrand48=5Fr() */= =0A+#ifdef HAVE=5FLRAND48=5FR=0A+ struct drand48=5Fdata data;=0A+#endif=0A+= } randdata=5Ft;=0A+=0A+uint32=5Ft getrandom(randdata=5Ft *rd, uint32=5Ft mo= d);=0A+uint64=5Ft getllrandom(randdata=5Ft *rd, uint64=5Ft mod);=0A+=0A+/* = pass in thread-local state, and est. number of "uses" */=0A+/* pass in 0 fo= r size if size is unknown/not important */=0A+void init=5Frandom(randdata= =5Ft *state, uint32=5Ft size);=0A+void destroy=5Frandom(randdata=5Ft *rd);= =0A+void randcleanup(void);=0A+=0A+#endif=0Adiff --git a/utils/ffsb-6.0-rc2= /rbt.c b/utils/ffsb-6.0-rc2/rbt.c=0Anew file mode 100644=0Aindex 0000000..e= 68e991=0A--- /dev/null=0A+++ b/utils/ffsb-6.0-rc2/rbt.c=0A@@ -0,0 +1,1063 @= @=0A+/*=0A+ * Copyright (c) International Business Machines Corp., 2001-2= 004=0A+ *=0A+ * This program is free software; you can redistribute it a= nd/or modify=0A+ * it under the terms of the GNU General Public License a= s published by=0A+ * the Free Software Foundation; either version 2 of th= e License, or=0A+ * (at your option) any later version.=0A+ *=0A+ * Thi= s program is distributed in the hope that it will be useful,=0A+ * but WI= THOUT ANY WARRANTY; without even the implied warranty of=0A+ * MERCHANTA= BILITY or FITNESS FOR A PARTICULAR PURPOSE. See=0A+ * the GNU General Pu= blic License for more details.=0A+ *=0A+ * You should have received a cop= y of the GNU General Public License=0A+ * along with this program; if no= t, write to the Free Software=0A+ * Foundation, Inc., 51 Franklin Street,= Fifth Floor, Boston, MA 02110-1301 USA=0A+ */=0A+#include =0A+#in= clude =0A+#include =0A+#include "rbt.h"=0A+=0A+/*=0A+ *= ***********************************************=0A+ *=0A+ * D.H. IBM, S. R= ao=0A+ *=0A+ * Module: Operations executed on red-black struct=0A+ *=0A+ * = ***********************************************=0A+ */=0A+=0A+/* Construct = a red-black tree node */=0A+=0A+rb=5Fnode *rbnode=5Fconstruct(datatype obje= ct, rb=5Fcolor color)=0A+{=0A+ rb=5Fnode *node =3D (rb=5Fnode *) malloc(siz= eof(rb=5Fnode));=0A+ if (!node) {=0A+ fprintf(stderr, "Memory Shortage - N= o Execution Possible\n");=0A+ return NULL;=0A+ }=0A+ node->object =3D obje= ct;=0A+ node->color =3D color;=0A+ node->parent =3D node->right =3D node->l= eft =3D NULL;=0A+ return node;=0A+}=0A+=0A+/* Destructor of a red-black tre= e node */=0A+=0A+void rbnode=5Fdestruct(rb=5Fnode * node, destructor d)=0A+= {=0A+ if (!node)=0A+ return;=0A+ if (d !=3D NULL)=0A+ d(node->object);=0A= + rbnode=5Fdestruct(node->right, d);=0A+ rbnode=5Fdestruct(node->left, d);= =0A+ free(node);=0A+}=0A+=0A+/* Determine the depth of the subtree spanned = by a given node */=0A+=0A+int rbnode=5Fdepth(rb=5Fnode * node)=0A+{=0A+ /* = Recursively determine the depth of the left and right=0A+ * subtrees=0A+ = */=0A+ int irightdepth =3D (node->right) ? rbnode=5Fdepth(node->right) : 0;= =0A+ int ileftdepth =3D (node->left) ? rbnode=5Fdepth(node->left) : 0;=0A+= =0A+ /* Return the maximal child depth + 1 (the current node) */=0A+ return= ((irightdepth >=0A+ ileftdepth) ? (irightdepth + 1) : (ileftdepth + 1));= =0A+}=0A+=0A+/* Return the leftmost leaf in the tree */=0A+=0A+rb=5Fnode *r= bnode=5Fminimum(rb=5Fnode * node)=0A+{=0A+ while (node->left)=0A+ node =3D= node->left;=0A+ return node;=0A+}=0A+=0A+/* Return the rightmost leaf in t= he tree */=0A+=0A+rb=5Fnode *rbnode=5Fmaximum(rb=5Fnode * node)=0A+{=0A+ wh= ile (node->right)=0A+ node =3D node->right;=0A+ return node;=0A+}=0A+=0A+/= * Replace an object */=0A+=0A+void rbnode=5Freplace(rb=5Fnode * node, datat= ype object)=0A+{=0A+ /* Make sure the replacement does not violate the tree= order=0A+ * Replace the object at the node=0A+ */=0A+ node->object =3D o= bject;=0A+}=0A+=0A+/* Get the next node in the tree (according to the tree = order) */=0A+=0A+rb=5Fnode *rbnode=5Fsuccessor(rb=5Fnode * node)=0A+{=0A+ r= b=5Fnode *succ=5Fnode;=0A+=0A+ if (node->right) {=0A+=0A+ /* If there is a= right child, the successor is the=0A+ * minimal object in the sub-tree s= panned by this=0A+ * child.=0A+ */=0A+=0A+ succ=5Fnode =3D node->right= ;=0A+ while (succ=5Fnode->left)=0A+ succ=5Fnode =3D succ=5Fnode->left;= =0A+ } else {=0A+=0A+ /* Otherwise, go up the tree until reaching the pare= nt=0A+ * from the left direction.=0A+ */=0A+=0A+ rb=5Fnode *prev=5Fnod= e =3D node;=0A+ succ=5Fnode =3D node->parent;=0A+ while (succ=5Fnode && p= rev=5Fnode =3D=3D succ=5Fnode->right) {=0A+ prev=5Fnode =3D succ=5Fnode;= =0A+ succ=5Fnode =3D succ=5Fnode->parent;=0A+ }=0A+ }=0A+=0A+ return (su= cc=5Fnode);=0A+}=0A+=0A+/* Get the previous node in the tree (according to = the tree order) */=0A+=0A+rb=5Fnode *rbnode=5Fpredecessor(rb=5Fnode * node)= =0A+{=0A+ rb=5Fnode *pred=5Fnode;=0A+=0A+ if (node->left) {=0A+=0A+ /* If = there is a left child, the predecessor is the=0A+ * maximal object in the= sub-tree spanned by this=0A+ * child.=0A+ */=0A+=0A+ pred=5Fnode =3D = node->left;=0A+ while (pred=5Fnode->right)=0A+ pred=5Fnode =3D pred=5Fno= de->right;=0A+ } else {=0A+=0A+ /* Otherwise, go up the tree until reachin= g the parent=0A+ * from the right direction.=0A+ */=0A+=0A+ rb=5Fnode = *prev=5Fnode =3D node;=0A+ pred=5Fnode =3D node->parent;=0A+ while (pred= =5Fnode && prev=5Fnode =3D=3D pred=5Fnode->left) {=0A+ prev=5Fnode =3D pr= ed=5Fnode;=0A+ pred=5Fnode =3D pred=5Fnode->parent;=0A+ }=0A+ }=0A+=0A+ = return (pred=5Fnode);=0A+}=0A+=0A+/* Return a pointer to a duplication of t= he given node */=0A+=0A+rb=5Fnode *rbnode=5Fduplicate(rb=5Fnode * node)=0A+= {=0A+ /* Create a node of the same color, containing the same=0A+ * object= =0A+ */=0A+ rb=5Fnode *dup=5Fnode =3D rbnode=5Fconstruct(node->object, nod= e->color);=0A+ if (!dup=5Fnode)=0A+ return NULL;=0A+=0A+ /* Duplicate the = children recursively */=0A+ if (node->right) {=0A+ dup=5Fnode->right =3D r= bnode=5Fduplicate(node->right);=0A+ dup=5Fnode->right->parent =3D dup=5Fno= de;=0A+ } else {=0A+ dup=5Fnode->right =3D NULL;=0A+ }=0A+=0A+ if (node->l= eft) {=0A+ dup=5Fnode->left =3D rbnode=5Fduplicate(node->left);=0A+ dup= =5Fnode->left->parent =3D dup=5Fnode;=0A+ } else {=0A+ dup=5Fnode->left = =3D NULL;=0A+ }=0A+=0A+ return dup=5Fnode; /* Return the duplicated node */= =0A+}=0A+=0A+/* Traverse a red-black subtree */=0A+=0A+void rbnode=5Ftraver= se(rb=5Fnode * node, opr * op)=0A+{=0A+ if (!node)=0A+ return;=0A+ rbnode= =5Ftraverse(node->left, op);=0A+ op(node->object);=0A+ rbnode=5Ftraverse(no= de->right, op);=0A+}=0A+=0A+/*=0A+ * ***********************************=0A= + *=0A+ * Operations on rb=5Ftree struct=0A+ *=0A+ * **********************= *************=0A+ */=0A+=0A+/* Intialize a tree */=0A+void rbtree=5Finit(rb= =5Ftree * tree)=0A+{=0A+/* tree->comp =3D comp; */=0A+ tree->isize =3D 0;= =0A+ tree->root =3D NULL;=0A+}=0A+=0A+/* Construct a tree given a compariso= n function */=0A+=0A+rb=5Ftree *rbtree=5Fconstruct()=0A+{=0A+ rb=5Ftree *tr= ee =3D (rb=5Ftree *) malloc(sizeof(rb=5Ftree));=0A+ if (!tree) {=0A+ fprin= tf(stderr, "Memory Issue - Shortge Exists!\n");=0A+ return NULL;=0A+ }=0A+= rbtree=5Finit(tree);=0A+ return tree;=0A+}=0A+=0A+/* Remove all objects fr= om a black-red tree */=0A+=0A+void rbtree=5Fclean(rb=5Ftree * tree, destruc= tor d)=0A+{=0A+ if (tree->root)=0A+ rbnode=5Fdestruct(tree->root, d);=0A+ = tree->root =3D NULL;=0A+ tree->isize =3D 0;=0A+}=0A+=0A+/* Destruct a red-b= lack tree */=0A+=0A+void rbtree=5Fdestruct(rb=5Ftree * tree, destructor d)= =0A+{=0A+ rbtree=5Fclean(tree, d);=0A+ free(tree);=0A+}=0A+=0A+/* Returns t= he size of the tree */=0A+=0A+int rbtree=5Fsize(rb=5Ftree * tree)=0A+{=0A+ = return tree->isize;=0A+}=0A+=0A+/* Returns the depth of the tree */=0A+=0A+= int rbtree=5Fdepth(rb=5Ftree * tree)=0A+{=0A+ if (!(tree->root))=0A+ retur= n 0;=0A+ return rbnode=5Fdepth(tree->root);=0A+}=0A+=0A+/* Check whether th= e tree contains a certain object */=0A+=0A+int rbtree=5Fcontains(rb=5Ftree = * tree, datatype object)=0A+{=0A+ return (rbtree=5Ffind(tree, object) !=3D = NULL);=0A+}=0A+=0A+/* Insert an object into the rb-tree */=0A+=0A+rb=5Fnode= *rbtree=5Finsert(rb=5Ftree * tree, datatype object)=0A+{=0A+ rb=5Fnode *cu= r=5Fnode;=0A+ rb=5Fnode *new=5Fnode;=0A+ int comp=5Fresult =3D 0;=0A+=0A+ i= f (!(tree->root)) {=0A+ /* Assign a new root node (the root is always=0A+ = * black)=0A+ */=0A+ new=5Fnode =3D rbnode=5Fconstruct(object, black);= =0A+ if (!new=5Fnode)=0A+ return NULL;=0A+ tree->root =3D new=5Fnode;= =0A+ tree->isize =3D 1;=0A+ return new=5Fnode;=0A+ }=0A+=0A+ /* Find a sp= ot for the new object, insert the object as a red=0A+ * leaf=0A+ */=0A+= =0A+ cur=5Fnode =3D tree->root;=0A+ new=5Fnode =3D rbnode=5Fconstruct(objec= t, red);=0A+ if (!new=5Fnode)=0A+ return NULL;=0A+=0A+ while (cur=5Fnode) = {=0A+ /* Compare inserted object with the object stored in=0A+ * the cur= rent node=0A+ */=0A+ comp=5Fresult =3D COMP=5FNODES(object, cur=5Fnode->= object);=0A+ if (comp=5Fresult =3D=3D 0) {=0A+ printf=0A+ ("Attemp= ted to insert duplicate node, aborting\n");=0A+ free(new=5Fnode);=0A+ r= eturn NULL;=0A+ }=0A+ if (comp=5Fresult > 0) {=0A+ if (!(cur=5Fnode->le= ft)) {=0A+ /* Insert the new leaf as the left=0A+ * child of the cur= rent node=0A+ */=0A+ cur=5Fnode->left =3D new=5Fnode;=0A+ new=5Fn= ode->parent =3D cur=5Fnode;=0A+ cur=5Fnode =3D NULL; /* Terminate the wh= ile loop */=0A+ } else {=0A+ /* Go to the left subtree */=0A+ cur= =5Fnode =3D cur=5Fnode->left;=0A+ }=0A+ } else {=0A+ if (!(cur=5Fnode-= >right)) {=0A+ /* Insert the new leaf as the right=0A+ * child of th= e current node=0A+ */=0A+ cur=5Fnode->right =3D new=5Fnode;=0A+ n= ew=5Fnode->parent =3D cur=5Fnode;=0A+ cur=5Fnode =3D NULL; /* Terminate = the while loop */=0A+ } else {=0A+ /* Go to the right subtree */=0A+ = cur=5Fnode =3D cur=5Fnode->right;=0A+ }=0A+ }=0A+ }=0A+=0A+ /* Mark th= e fact that a new node was added */=0A+ tree->isize++;=0A+=0A+ /* Fix the t= ree properties */=0A+ rbtree=5Finsert=5Ffixup(tree, new=5Fnode);=0A+=0A+ re= turn new=5Fnode;=0A+}=0A+=0A+/* Insert a new object to the tree as the a su= ccessor of a given=0A+ * node=0A+ */=0A+=0A+rb=5Fnode *insert=5Fsuccessor= =5Fat(rb=5Ftree * tree, rb=5Fnode * at=5Fnode, datatype object)=0A+{=0A+ rb= =5Fnode *parent;=0A+ rb=5Fnode *new=5Fnode;=0A+=0A+ if (!(tree->root)) {=0A= + /* Assign a new root node (the root is always=0A+ * black)=0A+ */=0A= + new=5Fnode =3D rbnode=5Fconstruct(object, black);=0A+ if (!new=5Fnode)= =0A+ return NULL;=0A+ tree->root =3D new=5Fnode;=0A+ tree->isize =3D 1;= =0A+ return new=5Fnode;=0A+ }=0A+=0A+ /* Insert the new object as a red le= af, being the successor of=0A+ * node=0A+ */=0A+ new=5Fnode =3D rbnode=5F= construct(object, red);=0A+ if (!new=5Fnode)=0A+ return NULL;=0A+=0A+ if (= !at=5Fnode) {=0A+ /* The new node should become the tree's minimum Place= =0A+ * is as the left child of the current minimal leaf=0A+ */=0A+ par= ent =3D rbnode=5Fminimum(tree->root);=0A+ parent->left =3D new=5Fnode;=0A+= } else {=0A+ /* Make sure the insertion does not violate the tree=0A+ *= order In case given node has no right child, place=0A+ * the new node as= its right child. Otherwise, place=0A+ * it at the leftmost position at t= he sub-tree rooted=0A+ * at its right side.=0A+ */=0A+ if (!at=5Fnode-= >right) {=0A+ parent =3D at=5Fnode;=0A+ parent->right =3D new=5Fnode;= =0A+ } else {=0A+ parent =3D rbnode=5Fminimum(at=5Fnode->right);=0A+ p= arent->left =3D new=5Fnode;=0A+ }=0A+ }=0A+=0A+ new=5Fnode->parent =3D par= ent;=0A+=0A+ /* Mark that a new node was added */=0A+ tree->isize++;=0A+=0A= + /* Fix the tree properties */=0A+ rbtree=5Finsert=5Ffixup(tree, new=5Fnod= e);=0A+=0A+ return new=5Fnode;=0A+}=0A+=0A+/* Insert a new object to the tr= ee as the a predecessor of a given node */=0A+=0A+rb=5Fnode *insert=5Fprede= cessor=5Fat(rb=5Ftree * tree, rb=5Fnode * at=5Fnode,=0A+ datatype = object)=0A+{=0A+ rb=5Fnode *parent;=0A+ rb=5Fnode *new=5Fnode;=0A+=0A+ if (= !(tree->root)) {=0A+ /* Assign a new root node (the root is always=0A+ *= black)=0A+ */=0A+ new=5Fnode =3D rbnode=5Fconstruct(object, black);=0A+= if (!new=5Fnode)=0A+ return NULL;=0A+ tree->root =3D new=5Fnode;=0A+ = tree->isize =3D 1;=0A+ return new=5Fnode;=0A+ }=0A+=0A+ /* Insert the new = object as a red leaf, being the predecessor=0A+ * of at=5Fnode=0A+ */=0A+= new=5Fnode =3D rbnode=5Fconstruct(object, red);=0A+ if (!new=5Fnode)=0A+ = return NULL;=0A+=0A+ if (!at=5Fnode) {=0A+ /* The new node should become t= he tree maximum. Place=0A+ * is as the right child of the current maximal= leaf=0A+ */=0A+ parent =3D rbnode=5Fmaximum(tree->root);=0A+ parent->r= ight =3D new=5Fnode;=0A+ } else {=0A+ /* Make sure the insertion does not = violate the tree=0A+ * order In case given node has no left child, place= =0A+ * the new node as its left child. Otherwise, place it=0A+ * at the= rightmost position at the sub-tree rooted at=0A+ * its left side.=0A+ = */=0A+ if (!(at=5Fnode->left)) {=0A+ parent =3D at=5Fnode;=0A+ parent-= >left =3D new=5Fnode;=0A+ } else {=0A+ parent =3D rbnode=5Fmaximum(at=5F= node->left);=0A+ parent->right =3D new=5Fnode;=0A+ }=0A+ }=0A+=0A+ new= =5Fnode->parent =3D parent;=0A+=0A+ /* Mark that a new node was added */=0A= + tree->isize++;=0A+=0A+ /* Fix the tree properties */=0A+ rbtree=5Finsert= =5Ffixup(tree, new=5Fnode);=0A+=0A+ return new=5Fnode;=0A+}=0A+=0A+/* Remov= e an object from the tree */=0A+=0A+void rbtree=5Fremove(rb=5Ftree * tree, = datatype object, destructor d)=0A+{=0A+ rb=5Fnode *node =3D rbtree=5Ffind(t= ree, object); /* Find the node */=0A+ rbtree=5Fremove=5Fat(tree, node, d); = /* Remove the node */=0A+}=0A+=0A+/* Remove the object pointed by the given= node. */=0A+=0A+void rbtree=5Fremove=5Fat(rb=5Ftree * tree, rb=5Fnode * no= de, destructor d)=0A+{=0A+ rb=5Fnode *child =3D NULL;=0A+=0A+ /* In case of= deleting the single object stored in the tree,=0A+ * free the root, thus = emptying the tree=0A+ */=0A+ if (tree->isize =3D=3D 1) {=0A+ rbnode=5Fdes= truct(tree->root, d);=0A+ tree->root =3D NULL;=0A+ tree->isize =3D 0;=0A+= return;=0A+ }=0A+=0A+ /* Remove the given node from the tree */=0A+ if (n= ode->left && node->right) {=0A+ /* If the node we want to remove has two c= hildren,=0A+ * find its successor, which is the leftmost child in=0A+ *= its right sub-tree and has at most one child (it=0A+ * may have a right = child).=0A+ */=0A+ rb=5Fnode *succ=5Fnode =3D rbnode=5Fminimum(node->rig= ht);=0A+=0A+ /* Now physically swap node and its successor. Notice=0A+ *= this may temporarily violate the tree properties,=0A+ * but we are going= to remove node anyway. This way=0A+ * we have moved node to a position = were it is more=0A+ * convinient to delete it.=0A+ */=0A+ int immediat= e=5Fsucc =3D (node->right =3D=3D succ=5Fnode);=0A+ rb=5Fnode *succ=5Fparen= t =3D succ=5Fnode->parent;=0A+ rb=5Fnode *succ=5Fleft =3D succ=5Fnode->lef= t;=0A+ rb=5Fnode *succ=5Fright =3D succ=5Fnode->right;=0A+ rb=5Fcolor suc= c=5Fcolor =3D succ=5Fnode->color;=0A+=0A+ succ=5Fnode->parent =3D node->pa= rent;=0A+ succ=5Fnode->left =3D node->left;=0A+ succ=5Fnode->right =3D im= mediate=5Fsucc ? node : node->right;=0A+ succ=5Fnode->color =3D node->colo= r;=0A+=0A+ node->parent =3D immediate=5Fsucc ? succ=5Fnode : succ=5Fparent= ;=0A+ node->left =3D succ=5Fleft;=0A+ node->right =3D succ=5Fright;=0A+ = node->color =3D succ=5Fcolor;=0A+=0A+ if (!immediate=5Fsucc) {=0A+ if (s= ucc=5Fnode =3D=3D node->parent->left)=0A+ node->parent->left =3D node;= =0A+ else=0A+ node->parent->right =3D node;=0A+ }=0A+=0A+ if (node->= left)=0A+ node->left->parent =3D node;=0A+ if (node->right)=0A+ node->= right->parent =3D node;=0A+=0A+ if (succ=5Fnode->parent) {=0A+ if (node = =3D=3D succ=5Fnode->parent->left)=0A+ succ=5Fnode->parent->left =3D succ= =5Fnode;=0A+ else=0A+ succ=5Fnode->parent->right =3D succ=5Fnode;=0A+ = } else {=0A+ tree->root =3D succ=5Fnode;=0A+ }=0A+=0A+ if (succ=5Fnode= ->left)=0A+ succ=5Fnode->left->parent =3D succ=5Fnode;=0A+ if (succ=5Fno= de->right)=0A+ succ=5Fnode->right->parent =3D succ=5Fnode;=0A+ }=0A+=0A+ = /* At this stage, the node we are going to remove has at most=0A+ * one ch= ild=0A+ */=0A+ child =3D (node->left) ? node->left : node->right;=0A+=0A+ = /* Splice out the node to be removed, by linking its parent=0A+ * straight= to the removed node's single child.=0A+ */=0A+ if (child)=0A+ child->par= ent =3D node->parent;=0A+=0A+ if (!(node->parent)) {=0A+ /* If we are dele= ting the root, make the child the new=0A+ * tree node=0A+ */=0A+ tree-= >root =3D child;=0A+ } else {=0A+ /* Link the removed node parent to its c= hild */=0A+ if (node =3D=3D node->parent->left)=0A+ node->parent->left = =3D child;=0A+ else=0A+ node->parent->right =3D child;=0A+ }=0A+=0A+ /* = Fix-up the red-black properties that may have been damaged:=0A+ * If we ha= ve just removed a black node, the black-depth=0A+ * property is no longer = valid=0A+ */=0A+ if (node->color =3D=3D black && child)=0A+ rbtree=5Fremo= ve=5Ffixup(tree, child);=0A+=0A+ /* Delete the un-necessary node (nullify b= oth its children=0A+ * because the node's destructor is recursive).=0A+ *= /=0A+ node->left =3D NULL;=0A+ node->right =3D NULL;=0A+ free(node);=0A+=0A= + /* Decrease the number of objects in the tree */=0A+ tree->isize--;=0A+}= =0A+=0A+/* Get the tree minimum */=0A+=0A+rb=5Fnode *rbtree=5Fminimum(rb=5F= tree * tree)=0A+{=0A+ if (!(tree->root))=0A+ return NULL;=0A+=0A+ /* Retur= n the leftmost leaf in the tree */=0A+ return rbnode=5Fminimum(tree->root);= =0A+}=0A+=0A+/* Get the tree maximum */=0A+=0A+rb=5Fnode *rbtree=5Fmaximum(= rb=5Ftree * tree)=0A+{=0A+ if (!(tree->root))=0A+ return NULL;=0A+=0A+ /* = Return the rightmost leaf in the tree */=0A+ return rbnode=5Fmaximum(tree->= root);=0A+}=0A+=0A+/* Return a pointer to the node containing the given obj= ect */=0A+=0A+rb=5Fnode *rbtree=5Ffind(rb=5Ftree * tree, datatype object)= =0A+{=0A+ rb=5Fnode *cur=5Fnode =3D tree->root;=0A+ int comp=5Fresult;=0A+= =0A+ while (cur=5Fnode) {=0A+ comp=5Fresult =3D COMP=5FNODES(object, cur= =5Fnode->object);=0A+ /* In case of equality, we can return the current=0A= + * node.=0A+ */=0A+ if (comp=5Fresult =3D=3D 0)=0A+ return cur=5Fno= de;=0A+ /* Go down to the left or right child. */=0A+ cur=5Fnode =3D (com= p=5Fresult > 0) ? cur=5Fnode->left : cur=5Fnode->right;=0A+ }=0A+=0A+ /* If= we get here, the object is not in the tree */=0A+ return NULL;=0A+}=0A+=0A= +void rbtree=5Frotate=5Fleft(rb=5Ftree * tree, rb=5Fnode * x=5Fnode)=0A+{= =0A+ /* Get the right child of the node */=0A+ rb=5Fnode *y=5Fnode =3D x=5F= node->right;=0A+=0A+ /* Change its left subtree (T2) to x's right subtree *= /=0A+ x=5Fnode->right =3D y=5Fnode->left;=0A+=0A+ /* Link T2 to its new par= ent x */=0A+ if (y=5Fnode->left !=3D NULL)=0A+ y=5Fnode->left->parent =3D = x=5Fnode;=0A+=0A+ /* Assign x's parent to be y's parent */=0A+ y=5Fnode->pa= rent =3D x=5Fnode->parent;=0A+=0A+ if (!(x=5Fnode->parent)) {=0A+ /* Make = y the new tree root */=0A+ tree->root =3D y=5Fnode;=0A+ } else {=0A+ /* A= ssign a pointer to y from x's parent */=0A+ if (x=5Fnode =3D=3D x=5Fnode->= parent->left)=0A+ x=5Fnode->parent->left =3D y=5Fnode;=0A+ else=0A+ x= =5Fnode->parent->right =3D y=5Fnode;=0A+ }=0A+=0A+ /* Assign x to be y's le= ft child */=0A+ y=5Fnode->left =3D x=5Fnode;=0A+ x=5Fnode->parent =3D y=5Fn= ode;=0A+}=0A+=0A+/* Right-rotate the sub-tree spanned by the given node */= =0A+=0A+void rbtree=5Frotate=5Fright(rb=5Ftree * tree, rb=5Fnode * y=5Fnode= )=0A+{=0A+ /* Get the left child of the node */=0A+ rb=5Fnode *x=5Fnode =3D= y=5Fnode->left;=0A+=0A+ /* Change its right subtree (T2) to y's left subtr= ee */=0A+ y=5Fnode->left =3D x=5Fnode->right;=0A+=0A+ /* Link T2 to its new= parent y */=0A+ if (x=5Fnode->right !=3D NULL)=0A+ x=5Fnode->right->paren= t =3D y=5Fnode;=0A+=0A+ /* Assign y's parent to be x's parent */=0A+ x=5Fno= de->parent =3D y=5Fnode->parent;=0A+=0A+ if (!(y=5Fnode->parent)) {=0A+ /*= Make x the new tree root */=0A+ tree->root =3D x=5Fnode;=0A+ } else {=0A+= /* Assign a pointer to x from y's parent */=0A+ if (y=5Fnode =3D=3D y=5F= node->parent->left)=0A+ y=5Fnode->parent->left =3D x=5Fnode;=0A+ else=0A= + y=5Fnode->parent->right =3D x=5Fnode;=0A+ }=0A+=0A+ /* Assign y to be x= 's right child */=0A+ x=5Fnode->right =3D y=5Fnode;=0A+ y=5Fnode->parent = =3D x=5Fnode;=0A+}=0A+=0A+/* Fix the tree so it maintains the red-black pro= perties after an insert */=0A+=0A+void rbtree=5Finsert=5Ffixup(rb=5Ftree * = tree, rb=5Fnode * node)=0A+{=0A+ /* Fix the red-black propreties. We may ha= ve inserted a red=0A+ * leaf as the child of a red parent - so we have to = fix the=0A+ * coloring of the parent recursively.=0A+ */=0A+ rb=5Fnode *c= urr=5Fnode =3D node;=0A+ rb=5Fnode *grandparent;=0A+ rb=5Fnode *uncle;=0A+= =0A+ assert(node && node->color =3D=3D red);=0A+=0A+ while (curr=5Fnode != =3D tree->root && curr=5Fnode->parent->color =3D=3D red) {=0A+ /* Get a po= inter to the current node's grandparent=0A+ * (the root is always black, = so the red parent must=0A+ * have a parent).=0A+ */=0A+=0A+ grandparen= t =3D curr=5Fnode->parent->parent;=0A+=0A+ if (curr=5Fnode->parent =3D=3D = grandparent->left) {=0A+ /* If the red parent is a left child, the=0A+ = * uncle is the right child of the grandparent.=0A+ */=0A+ uncle =3D g= randparent->right;=0A+=0A+ if (uncle && uncle->color =3D=3D red) {=0A+=0A= + /* If both parent and uncle are red,=0A+ * color them black and co= lor the=0A+ * grandparent red. In case of a NULL=0A+ * uncle, treat= it as a black node=0A+ */=0A+ curr=5Fnode->parent->color =3D black;= =0A+ uncle->color =3D black;=0A+ grandparent->color =3D red;=0A+=0A+ = /* Move to the grandparent */=0A+ curr=5Fnode =3D grandparent;=0A+ = } else {=0A+ /* Make sure the current node is a=0A+ * right child. I= f not, left-rotate the=0A+ * parent's sub-tree so the parent=0A+ * = becomes the right child of the=0A+ * current node (see =5Frotate=5Fleft= ).=0A+ */=0A+ if (curr=5Fnode =3D=3D curr=5Fnode->parent->right) {= =0A+ curr=5Fnode =3D curr=5Fnode->parent;=0A+ rbtree=5Frotate=5Flef= t(tree, curr=5Fnode);=0A+ }=0A+=0A+ /* Color the parent black and the= =0A+ * grandparent red=0A+ */=0A+ curr=5Fnode->parent->color =3D= black;=0A+ grandparent->color =3D red;=0A+=0A+ /* Right-rotate the g= randparent's=0A+ * sub-tree=0A+ */=0A+ rbtree=5Frotate=5Fright(t= ree, grandparent);=0A+ }=0A+ } else {=0A+ /* If the red parent is a ri= ght child, the=0A+ * uncle is the left child of the grandparent.=0A+ = */=0A+ uncle =3D grandparent->left;=0A+=0A+ if (uncle && uncle->color = =3D=3D red) {=0A+ /* If both parent and uncle are red,=0A+ * color t= hem black and color the=0A+ * grandparent red. In case of a NULL=0A+ = * uncle, treat it as a black node=0A+ */=0A+ curr=5Fnode->parent->= color =3D black;=0A+ uncle->color =3D black;=0A+ grandparent->color = =3D red;=0A+=0A+ /* Move to the grandparent */=0A+ curr=5Fnode =3D gr= andparent;=0A+ } else {=0A+ /* Make sure the current node is a=0A+ = * left child. If not, right-rotate=0A+ * the parent's sub-tree so the = parent=0A+ * becomes the left child of the=0A+ * current node.=0A+ = */=0A+ if (curr=5Fnode =3D=3D curr=5Fnode->parent->left) {=0A+ c= urr=5Fnode =3D curr=5Fnode->parent;=0A+ rbtree=5Frotate=5Fright(tree, c= urr=5Fnode);=0A+ }=0A+=0A+ /* Color the parent black and the=0A+ = * grandparent red=0A+ */=0A+ curr=5Fnode->parent->color =3D black;= =0A+ grandparent->color =3D red;=0A+=0A+ /* Left-rotate the grandpare= nt's=0A+ * sub-tree=0A+ */=0A+ rbtree=5Frotate=5Fleft(tree, gran= dparent);=0A+ }=0A+ }=0A+ }=0A+=0A+ /* Make sure that the root is black = */=0A+ tree->root->color =3D black;=0A+}=0A+=0A+void rbtree=5Fremove=5Ffixu= p(rb=5Ftree * tree, rb=5Fnode * node)=0A+{=0A+ rb=5Fnode *curr=5Fnode =3D n= ode;=0A+ rb=5Fnode *sibling;=0A+=0A+ while (curr=5Fnode !=3D tree->root && = curr=5Fnode->color =3D=3D black) {=0A+ /* Get a pointer to the current nod= e's sibling (notice=0A+ * that the node's parent must exist, since the no= de=0A+ * is not the root).=0A+ */=0A+ if (curr=5Fnode =3D=3D curr=5Fno= de->parent->left) {=0A+ /* If the current node is a left child, its=0A+ = * sibling is the right child of the parent.=0A+ */=0A+ sibling =3D c= urr=5Fnode->parent->right;=0A+=0A+ /* Check the sibling's color. Notice t= hat NULL=0A+ * nodes are treated as if they are colored=0A+ * black.= =0A+ */=0A+ if (sibling && sibling->color =3D=3D red) {=0A+ /* In c= ase the sibling is red, color=0A+ * it black and rotate. Then color=0A= + * the parent red (the grandparent is=0A+ * now black)=0A+ */= =0A+ sibling->color =3D black;=0A+ curr=5Fnode->parent->color =3D red= ;=0A+ rbtree=5Frotate=5Fleft(tree, curr=5Fnode->parent);=0A+ sibling = =3D curr=5Fnode->parent->right;=0A+ }=0A+=0A+ if (sibling &&=0A+ = (!(sibling->left) || sibling->left->color =3D=3D black)=0A+ && (!(sib= ling->right)=0A+ || sibling->right->color =3D=3D black)) {=0A+ /* If = the sibling has two black=0A+ * children, color it red=0A+ */=0A+ = sibling->color =3D red;=0A+ if (curr=5Fnode->parent->color =3D=3D red)= {=0A+ /* If the parent is red, we=0A+ * can safely color it black= =0A+ * and terminate the fix=0A+ * process.=0A+ */=0A+ c= urr=5Fnode->parent->color =3D black;=0A+ /* In order to stop the while = loop */=0A+ curr=5Fnode =3D tree->root;=0A+ } else {=0A+ /* The = black depth of the=0A+ * entire sub-tree rooted at=0A+ * the pare= nt is now too small=0A+ * - fix it up recursively.=0A+ */=0A+ = curr=5Fnode =3D curr=5Fnode->parent;=0A+ }=0A+ } else {=0A+ if (!s= ibling) {=0A+ /* Take special care of the=0A+ * case of a NULL sib= ling=0A+ */=0A+ if (curr=5Fnode->parent->color =3D=3D red) {=0A+ = curr=5Fnode->parent->color =3D=0A+ black;=0A+ /* In order= to stop=0A+ * the while loop */=0A+ curr=5Fnode =3D tree->root;= =0A+ } else {=0A+ curr=5Fnode =3D curr=5Fnode->parent;=0A+ }= =0A+ } else {=0A+ /* In this case, at least one=0A+ * of the si= bling's children=0A+ * is red. It is therfore=0A+ * obvious that= the sibling=0A+ * itself is black.=0A+ */=0A+ if (sibling->r= ight=0A+ && sibling->right->color =3D=3D red) {=0A+ /* If the = right child=0A+ * of the sibling is=0A+ * red, color it black= =0A+ * and rotate around=0A+ * the current parent.=0A+ */= =0A+ sibling->right->color =3D black;=0A+ rbtree=5Frotate=5Fleft(= tree,=0A+ curr=5Fnode->=0A+ parent);=0A+ } else {= =0A+ /* If the left child=0A+ * of the sibling is=0A+ * re= d, rotate around=0A+ * the sibling, then=0A+ * rotate around th= e=0A+ * new sibling of our=0A+ * current node.=0A+ */=0A+= rbtree=5Frotate=5Fright(tree,=0A+ sibling);=0A+ sibli= ng =3D=0A+ curr=5Fnode->parent->right;=0A+ rbtree=5Frotate=5F= left(tree,=0A+ sibling);=0A+ }=0A+=0A+ /* It is now safe = to color the=0A+ * parent black and to=0A+ * terminate the fix pr= ocess.=0A+ */=0A+ if (curr=5Fnode->parent->parent)=0A+ curr= =5Fnode->parent->parent->=0A+ color =3D=0A+ curr=5Fnode->= parent->color;=0A+ curr=5Fnode->parent->color =3D black;=0A+ /* In = order to stop the while loop */=0A+ curr=5Fnode =3D tree->root;=0A+ = }=0A+ }=0A+ } else {=0A+ /* If the current node is a right child, its= =0A+ * sibling is the left child of the parent.=0A+ */=0A+ sibling = =3D curr=5Fnode->parent->left;=0A+=0A+ /* Check the sibling's color. Noti= ce that NULL=0A+ * nodes are treated as if they are colored=0A+ * bla= ck.=0A+ */=0A+ if (sibling && sibling->color =3D=3D red) {=0A+ /* I= n case the sibling is red, color=0A+ * it black and rotate. Then color= =0A+ * the parent red (the grandparent is=0A+ * now black).=0A+ = */=0A+ sibling->color =3D black;=0A+ curr=5Fnode->parent->color =3D = red;=0A+ rbtree=5Frotate=5Fright(tree, curr=5Fnode->parent);=0A+=0A+ = sibling =3D curr=5Fnode->parent->left;=0A+ }=0A+=0A+ if (sibling &&=0A+= (!(sibling->left) || sibling->left->color =3D=3D black)=0A+ &&= (!(sibling->right)=0A+ || sibling->right->color =3D=3D black)) {=0A+ = /* If the sibling has two black children, color it red */=0A+ sibling->= color =3D red;=0A+ if (curr=5Fnode->parent->color =3D=3D red) {=0A+ = /* If the parent is red, we=0A+ * can safely color it black=0A+ *= and terminate the fix-up=0A+ * process.=0A+ */=0A+ curr=5Fno= de->parent->color =3D black;=0A+ /* In order to stop the while=0A+ = * loop=0A+ */=0A+ curr=5Fnode =3D tree->root;=0A+ } else {=0A+= /* The black depth of the=0A+ * entire sub-tree rooted at=0A+ = * the parent is now too small=0A+ * - fix it up recursively.=0A+ = */=0A+ curr=5Fnode =3D curr=5Fnode->parent;=0A+ }=0A+ } else {= =0A+ if (!sibling) {=0A+ /* Take special care of the=0A+ * case= of a NULL sibling */=0A+ if (curr=5Fnode->parent->color =3D=3D red) {= =0A+ curr=5Fnode->parent->color =3D=0A+ black;=0A+ /* In= order to stop=0A+ * the while loop */=0A+ curr=5Fnode =3D tree-= >root;=0A+ } else {=0A+ curr=5Fnode =3D curr=5Fnode->parent;=0A+ = }=0A+ } else {=0A+ /* In this case, at least one=0A+ * of th= e sibling's children is=0A+ * red. It is therfore obvious=0A+ * = that the sibling itself is=0A+ * black.=0A+ */=0A+ if (siblin= g->left=0A+ && sibling->left->color =3D=3D red) {=0A+ /* If th= e left child=0A+ * of the sibling is=0A+ * red, color it black= =0A+ * and rotate around=0A+ * the current parent=0A+ */= =0A+ sibling->left->color =3D black;=0A+ rbtree=5Frotate=5Fright(= tree,=0A+ curr=5Fnode->=0A+ parent);=0A+ } else {= =0A+ /* If the right child=0A+ * of the sibling is=0A+ * r= ed, rotate around=0A+ * the sibling, then=0A+ * rotate around t= he=0A+ * new sibling of our=0A+ * current node=0A+ */=0A+= rbtree=5Frotate=5Fleft(tree,=0A+ sibling);=0A+ sibling= =3D=0A+ curr=5Fnode->parent->left;=0A+ rbtree=5Frotate=5Frig= ht(tree,=0A+ sibling);=0A+ }=0A+=0A+ /* It is now safe t= o color the=0A+ * parent black and to=0A+ * terminate the fix pro= cess.=0A+ */=0A+ if (curr=5Fnode->parent->parent)=0A+ curr=5F= node->parent->parent->=0A+ color =3D=0A+ curr=5Fnode->par= ent->color;=0A+ curr=5Fnode->parent->color =3D black;=0A+ /* In ord= er to stop the while loop */=0A+ curr=5Fnode =3D tree->root;=0A+ }= =0A+ }=0A+ }=0A+ }=0A+=0A+ /* The root can always be colored black */=0A= + curr=5Fnode->color =3D black;=0A+}=0A+=0A+/* Traverse a red-black tree */= =0A+=0A+void rbtree=5Ftraverse(rb=5Ftree * tree, opr * op)=0A+{=0A+ rbnode= =5Ftraverse(tree->root, op);=0A+}=0Adiff --git a/utils/ffsb-6.0-rc2/rbt.h b= /utils/ffsb-6.0-rc2/rbt.h=0Anew file mode 100644=0Aindex 0000000..9495a7a= =0A--- /dev/null=0A+++ b/utils/ffsb-6.0-rc2/rbt.h=0A@@ -0,0 +1,316 @@=0A+/*= =0A+ * Copyright (c) International Business Machines Corp., 2001-2004=0A+= *=0A+ * This program is free software; you can redistribute it and/or m= odify=0A+ * it under the terms of the GNU General Public License as publi= shed by=0A+ * the Free Software Foundation; either version 2 of the Licen= se, or=0A+ * (at your option) any later version.=0A+ *=0A+ * This progr= am is distributed in the hope that it will be useful,=0A+ * but WITHOUT A= NY WARRANTY; without even the implied warranty of=0A+ * MERCHANTABILITY = or FITNESS FOR A PARTICULAR PURPOSE. See=0A+ * the GNU General Public Li= cense for more details.=0A+ *=0A+ * You should have received a copy of th= e GNU General Public License=0A+ * along with this program; if not, writ= e to the Free Software=0A+ * Foundation, Inc., 51 Franklin Street, Fifth = Floor, Boston, MA 02110-1301 USA=0A+ */=0A+#ifndef RED=5FBLACK=5FTREE=5FH= =0A+#define RED=5FBLACK=5FTREE=5FH=0A+=0A+/*=0A+ * ************************= ***************************************************=0A+ *=0A+ * Container c= lass for a red-black tree ......=0A+ *=0A+ * A binary tree that satisfies t= he following properties:=0A+ *=0A+ * 1. Every node is either red or black= =0A+ * 2. The root node is black=0A+ * 3. Every leaf (NIL) is black=0A+ * 4= . If a node is red, both its children are black=0A+ * 5. For each node, all= paths from the node to descendant leaf nodes=0A+ * contain the same num= ber of black nodes=0A+ *=0A+ * Due to points 4 & 5, the depth of a red-blac= k tree containing n nodes=0A+ * is bounded by 2*log2(n+1) (WC).=0A+ *=0A+ *= =0A+ * The rb=5Ftree template requires two additional parmeters:=0A+ *=0A+ = * - The contained TYPE class represents the objects stored in the tree.=0A+= * It has to support the copy constructor and the assignment operator (op= r)=0A+ * - cmp is a functor used to define the order of objects of class TY= PE:=0A+ * This class has to support an operator() that recieves two objec= ts from=0A+ * the TYPE class and returns a negative, 0, or a positive int= eger,=0A+ * depending on the comparison result.=0A+ *=0A+ * Dominique Heg= er, S. Rao=0A+ *=0A+ * ****************************************************= ***********************=0A+ */=0A+=0A+/* Color enumeration for nodes of red= -black tree */=0A+/* ********************************************* */=0A+= =0A+#include "filelist.h"=0A+=0A+typedef struct ffsb=5Ffile *datatype;=0A+= =0A+#define COMP=5FNODES(a, b) ((a)->num - (b)->num)=0A+=0A+typedef enum re= d=5Fblack=5Fcolor {red, black} rb=5Fcolor;=0A+=0A+/*! Representation of a n= ode in a red-black tree */=0A+typedef struct red=5Fblack=5Fnode {=0A+ datat= ype object; /* the stored object */=0A+ rb=5Fcolor col= or; /* the color of the node */=0A+ struct red=5Fblac= k=5Fnode *parent; /* points to the parent node */=0A+ struct red=5Fbl= ack=5Fnode *right; /* points to the right child */=0A+ struct red=5F= black=5Fnode *left; /* points to the left child */=0A+} rb=5Fnode;= =0A+=0A+typedef int(cmp)(datatype, datatype);=0A+typedef void(opr)(void *);= =0A+typedef void(destructor)(datatype);=0A+=0A+/* Construct of a red-black = tree node=0A+ * - The object stored in the node=0A+ * - The color of the no= de=0A+ */=0A+=0A+extern rb=5Fnode *rbnode=5Fconstruct(datatype object, rb= =5Fcolor color);=0A+=0A+/* Recursive destructor for the entire sub-tree */= =0A+/* ******************************************** */=0A+=0A+extern void r= bnode=5Fdestruct(rb=5Fnode *node, destructor d);=0A+=0A+/* Calculate the de= pth of the sub-tree spanned by the given node=0A+ * - The sub-tree root=0A+= * - The sub-tree depth=0A+ */=0A+=0A+extern int rbnode=5Fdepth(rb=5Fnode *= node);=0A+=0A+/* Get the leftmost node in the sub-tree spanned by the given= node=0A+ * - The sub-tree root=0A+ * - The sub-tree minimum=0A+ */=0A+=0A+= extern rb=5Fnode *rbnode=5Fminimum(rb=5Fnode *node);=0A+=0A+/* Get the righ= tmost node in the sub-tree spanned by the given node=0A+ * - The sub-tree r= oot=0A+ * - The sub-tree maximum=0A+ */=0A+=0A+extern rb=5Fnode *rbnode=5Fm= aximum(rb=5Fnode *node);=0A+=0A+/* Replace the object */=0A+/* ************= ****** */=0A+=0A+extern void rbnode=5Freplace(rb=5Fnode *node, datatype obj= ect);=0A+=0A+/* Get the next node in the tree (according to the tree order)= =0A+ * - The current node=0A+ * - The successor node, or NULL if node is th= e tree maximum=0A+ */=0A+=0A+extern rb=5Fnode *rbnode=5Fsuccessor(rb=5Fnode= *node);=0A+=0A+/* Get the previous node in the tree (according to the tree= order)=0A+ * - The current node=0A+ * - The predecessor node, or NULL if n= ode is the tree minimum=0A+ */=0A+=0A+extern rb=5Fnode *rbnode=5Fpredecesso= r(rb=5Fnode *node);=0A+=0A+/* Duplicate the entire sub-tree rooted at the g= iven node=0A+ * - The sub-tree root=0A+ * - A pointer to the duplicated sub= -tree root=0A+ */=0A+=0A+extern rb=5Fnode *rbnode=5Fduplicate(rb=5Fnode *no= de);=0A+=0A+/* Traverse a red-black sub-tree=0A+ * - The sub-tree root=0A+ = * - The operation to perform on each object in the sub-tree=0A+ */=0A+exter= n void rbnode=5Ftraverse(rb=5Fnode *node, opr *op);=0A+=0A+/* Representatio= n of a red-black tree */=0A+/* ********************************** */=0A+=0A= +typedef struct red=5Fblack=5Ftree {=0A+ rb=5Fnode *root; /*= pointer to the tree root */=0A+ int isize; /* number o= f objects stored */=0A+ /* cmp * comp; */ /* compare fu= nction */=0A+} rb=5Ftree;=0A+=0A+/* Initialize a red-black tree with a comp= arision function=0A+ * - The tree=0A+ * - The comparision function=0A+ */= =0A+=0A+void rbtree=5Finit(rb=5Ftree *tree);=0A+=0A+/* Construct a red-blac= k tree with a comparison object=0A+ * - A pointer to the comparison object = to be used by the tree=0A+ * - The newly constructed tree=0A+ */=0A+=0A+rb= =5Ftree *rbtree=5Fconstruct(void);=0A+=0A+/* Clean a red-black tree [takes = O(n) operations]=0A+ * - The tree=0A+ */=0A+=0A+extern void rbtree=5Fclean(= rb=5Ftree *tree, destructor d);=0A+=0A+/* Destruct a red-black tree=0A+ * -= The tree=0A+ */=0A+=0A+extern void rbtree=5Fdestruct(rb=5Ftree *tree, dest= ructor d);=0A+=0A+/* Get the size of the tree [takes O(1) operations]=0A+ *= - The tree=0A+ * - The number of objects stored in the tree=0A+ */=0A+=0A+= extern int rbtree=5Fsize(rb=5Ftree *tree);=0A+=0A+/* Get the depth of the t= ree [takes O(n) operations]=0A+ * - The tree=0A+ * - The length of the long= est path from the root to a leaf node=0A+ */=0A+=0A+extern int rbtree=5Fdep= th(rb=5Ftree *tree);=0A+=0A+/* Check whether the tree contains an object [t= akes O(log n) operations]=0A+ * - The tree=0A+ * - The query object=0A+ * -= (true) if an equal object is found in the tree, otherwise (false)=0A+ */= =0A+=0A+extern int rbtree=5Fcontains(rb=5Ftree *tree, datatype object);=0A+= =0A+/* Insert an object to the tree [takes O(log n) operations]=0A+ * - The= tree=0A+ * - The object to be inserted=0A+ * - Return the inserted object = node=0A+ */=0A+=0A+extern rb=5Fnode *rbtree=5Finsert(rb=5Ftree *tree, datat= ype object);=0A+=0A+/* Insert a new object to the tree as the a successor o= f a given node=0A+ * - The tree=0A+ * - The new node=0A+ */=0A+=0A+extern r= b=5Fnode *insert=5Fsuccessor=5Fat(rb=5Ftree *tree, rb=5Fnode *at=5Fnode,=0A= + datatype object);=0A+=0A+/* Insert a new object to the tree as the= a predecessor of a given node=0A+ * - The tree=0A+ * - The new node=0A+ */= =0A+=0A+extern rb=5Fnode *insert=5Fpredecessor=5Fat(rb=5Ftree *tree, rb=5Fn= ode *at=5Fnode,=0A+ datatype object);=0A+=0A+/* Remove an object f= rom the tree [takes O(log n) operations]=0A+ * - The tree=0A+ * - The objec= t to be removed=0A+ * - The object should be contained in the tree=0A+ */= =0A+=0A+extern void rbtree=5Fremove(rb=5Ftree *tree, datatype object, destr= uctor d);=0A+=0A+/* Get a handle to the tree minimum [takes O(log n) operat= ions]=0A+ * - The tree=0A+ * - Return the minimal object in the tree, or a = NULL if the tree is empty=0A+ */=0A+=0A+extern rb=5Fnode *rbtree=5Fminimum(= rb=5Ftree *tree);=0A+=0A+/* Get a handle to the tree maximum [takes O(log n= ) operations]=0A+ * - The tree=0A+ * - Return the maximal object in the tre= e, or a NULL if the tree is empty=0A+ */=0A+=0A+extern rb=5Fnode *rbtree=5F= maximum(rb=5Ftree *tree);=0A+=0A+/* Get the next node in the tree (accordin= g to the tree order)=0A+ * - [takes O(log n) operations at worst-case, but = only O(1) amortized]=0A+ * - The tree=0A+ * - The current object=0A+ * - Th= e successor node, or a NULL, if we are at the tree maximum=0A+ */=0A+extern= rb=5Fnode *rbtree=5Fsuccessor(rb=5Ftree *tree, rb=5Fnode *node);=0A+=0A+/*= Get the previous node in the tree (according to the tree order)=0A+ * - [t= akes O(log n) operations at worst-case, but only O(1) amortized]=0A+ * - Th= e tree=0A+ * - The current object=0A+ * - The predecessor node, or a NULL, = if we are at the tree minimum=0A+ */=0A+=0A+extern rb=5Fnode *rbtree=5Fpred= ecessor(rb=5Ftree *tree, rb=5Fnode *node);=0A+=0A+/* Find a node that conta= ins the given object=0A+ * - The tree=0A+ * - The desired object=0A+ * - Re= turn a node that contains the given object, or NULL if no such object=0A+ *= is found in the tree=0A+ */=0A+=0A+extern rb=5Fnode *rbtree=5Ffind(rb=5F= tree *tree, datatype object);=0A+=0A+/* Remove the object stored in the giv= en tree node=0A+ * - The tree=0A+ * - The node storing the object to be rem= oved from the tree=0A+ */=0A+=0A+extern void rbtree=5Fremove=5Fat(rb=5Ftree= *tree, rb=5Fnode *node, destructor d);=0A+=0A+/* Left-rotate the sub-tree = spanned by the given node=0A+ * - The tree=0A+ * - The sub-tree root=0A+ */= =0A+=0A+extern void rbtree=5Frotate=5Fleft(rb=5Ftree *tree, rb=5Fnode *node= );=0A+=0A+/* Right-rotate the sub-tree spanned by the given node=0A+ * - Th= e tree=0A+ * - The sub-tree root=0A+ */=0A+=0A+extern void rbtree=5Frotate= =5Fright(rb=5Ftree *tree, rb=5Fnode *node);=0A+=0A+/*=0A+ * Fix the red-bla= ck tree properties after an insertion operation=0A+ * - The tree=0A+ * - Th= e node that has just been inserted to the tree=0A+ * - The color of node mu= st be red=0A+ */=0A+=0A+extern void rbtree=5Finsert=5Ffixup(rb=5Ftree *tree= , rb=5Fnode *node);=0A+=0A+/* Fix the red-black tree properties after a rem= oval operation=0A+ * - The tree=0A+ * - The child of the node that has just= been removed from the tree=0A+ */=0A+=0A+extern void rbtree=5Fremove=5Ffix= up(rb=5Ftree *tree, rb=5Fnode *node);=0A+=0A+/* Traverse a red-black tree= =0A+ * - The tree=0A+ * - The operation to perform on every object of the t= ree (according to=0A+ * the tree order)=0A+ */=0A+=0A+extern void rbtree= =5Ftraverse(rb=5Ftree *tree, opr *op);=0A+=0A+#endif=0Adiff --git a/utils/f= fsb-6.0-rc2/registration-description b/utils/ffsb-6.0-rc2/registration-desc= ription=0Anew file mode 100644=0Aindex 0000000..9faaea2=0A--- /dev/null=0A+= ++ b/utils/ffsb-6.0-rc2/registration-description=0A@@ -0,0 +1,7 @@=0A+The F= lexible Filesystem Benchmark (FFSB) is a filesystem performance measurement= tool. It is a multi-threaded application (using pthreads), written entire= ly in C with cross-platform portability in mind. It differs from other fil= esystem benchmarks in that the user may supply a profile to create custom w= orkloads, while most other filesystem benchmarks use a fixed set of workloa= ds.=0A+=0A+It is currently known to support Linux, AIX, and Solaris, althou= gh almost all development and testing has occurred on Linux. We intend to = add support for HP-UX, IRIX, and possibly others in the near future.=0A+=0A= +FFSB is currently at version 5.0, and has been an internal tool at IBM for= about four years. I has already been used to conduct a study of Linux Ker= nel 2.6 IO-schedulers, and a great deal of future filesystem performance wo= rk is planned with FFSB as the primary tool.=0A+=0A+In version 5.0, it supp= orts six different basic operations, support for multiple groups of threads= with different operation mixtures, support for operation across multiple f= ilesystems, and support for filesystem aging prior to benchmarking.=0Adiff = --git a/utils/ffsb-6.0-rc2/rwlock.c b/utils/ffsb-6.0-rc2/rwlock.c=0Anew fil= e mode 100644=0Aindex 0000000..01806e5=0A--- /dev/null=0A+++ b/utils/ffsb-6= .0-rc2/rwlock.c=0A@@ -0,0 +1,108 @@=0A+/*=0A+ * Copyright (c) Internation= al Business Machines Corp., 2001-2004=0A+ *=0A+ * This program is free so= ftware; you can redistribute it and/or modify=0A+ * it under the terms o= f the GNU General Public License as published by=0A+ * the Free Software = Foundation; either version 2 of the License, or=0A+ * (at your option) an= y later version.=0A+ *=0A+ * This program is distributed in the hope that= it will be useful,=0A+ * but WITHOUT ANY WARRANTY; without even the imp= lied warranty of=0A+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOS= E. See=0A+ * the GNU General Public License for more details.=0A+ *=0A+ = * You should have received a copy of the GNU General Public License=0A+ *= along with this program; if not, write to the Free Software=0A+ * Fou= ndation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA= =0A+ */=0A+#include =0A+#include =0A+#include =0A+=0A+/* #define RWDEBUG 1 */=0A+#include "config.h"=0A+#include "rwlock= .h"=0A+=0A+void init=5Frwlock(struct rwlock *rw)=0A+{=0A+ rw->n=5Freaders = =3D 0;=0A+ pthread=5Fmutex=5Finit(&rw->plock, NULL);=0A+ pthread=5Fcond=5Fi= nit(&rw->pcond, NULL);=0A+#ifdef RWDEBUG=0A+ rw->n=5Fwrite=5Fwaiting =3D 0;= =0A+ rw->n=5Fread=5Fwaiting =3D 0;=0A+ rw->writer=5Ftid =3D -1;=0A+#endif= =0A+}=0A+=0A+void rw=5Flock=5Fread(struct rwlock *rw)=0A+{=0A+ pthread=5Fmu= tex=5Flock(&rw->plock);=0A+#ifdef RWDEBUG=0A+ rw->n=5Fread=5Fwaiting++;=0A+= #endif=0A+ while (rw->n=5Freaders < 0)=0A+ pthread=5Fcond=5Fwait(&rw->pcon= d, &rw->plock);=0A+ rw->n=5Freaders++;=0A+#ifdef RWDEBUG=0A+ rw->n=5Fread= =5Fwaiting--;=0A+#endif=0A+ pthread=5Fmutex=5Funlock(&rw->plock);=0A+}=0A+= =0A+void rw=5Flock=5Fwrite(struct rwlock *rw)=0A+{=0A+ pthread=5Fmutex=5Flo= ck(&rw->plock);=0A+#ifdef RWDEBUG=0A+ rw->n=5Fwrite=5Fwaiting++;=0A+#endif= =0A+ while (rw->n=5Freaders !=3D 0)=0A+ pthread=5Fcond=5Fwait(&rw->pcond, = &rw->plock);=0A+ rw->n=5Freaders =3D -1;=0A+#ifdef RWDEBUG=0A+ rw->n=5Fwrit= e=5Fwaiting--;=0A+ rw->writer=5Ftid =3D (int)pthread=5Fself();=0A+#endif=0A= + pthread=5Fmutex=5Funlock(&rw->plock);=0A+=0A+}=0A+=0A+void rw=5Funlock=5F= read(struct rwlock *rw)=0A+{=0A+ pthread=5Fmutex=5Flock(&rw->plock);=0A+ rw= ->n=5Freaders -=3D 1;=0A+ pthread=5Fcond=5Fsignal(&rw->pcond);=0A+ pthread= =5Fmutex=5Funlock(&rw->plock);=0A+}=0A+=0A+void rw=5Funlock=5Fwrite(struct = rwlock *rw)=0A+{=0A+ pthread=5Fmutex=5Flock(&rw->plock);=0A+ rw->n=5Freader= s =3D 0;=0A+ pthread=5Fcond=5Fbroadcast(&rw->pcond);=0A+ pthread=5Fmutex=5F= unlock(&rw->plock);=0A+}=0A+=0A+int rw=5Ftrylock=5Fread(struct rwlock *rw)= =0A+{=0A+ int ret =3D 1;=0A+ pthread=5Fmutex=5Flock(&rw->plock);=0A+ if (rw= ->n=5Freaders >=3D 0) {=0A+ rw->n=5Freaders++;=0A+ ret =3D 0;=0A+ }=0A+ p= thread=5Fmutex=5Funlock(&rw->plock);=0A+ return ret;=0A+}=0A+=0A+int rw=5Ft= rylock=5Fwrite(struct rwlock *rw)=0A+{=0A+ int ret =3D 1;=0A+ pthread=5Fmut= ex=5Flock(&rw->plock);=0A+ if (rw->n=5Freaders =3D=3D 0) {=0A+ ret =3D 0;= =0A+ rw->n=5Freaders =3D -1;=0A+ }=0A+ pthread=5Fmutex=5Funlock(&rw->plock= );=0A+ return ret;=0A+}=0Adiff --git a/utils/ffsb-6.0-rc2/rwlock.h b/utils/= ffsb-6.0-rc2/rwlock.h=0Anew file mode 100644=0Aindex 0000000..aa33d84=0A---= /dev/null=0A+++ b/utils/ffsb-6.0-rc2/rwlock.h=0A@@ -0,0 +1,51 @@=0A+/*=0A+= * Copyright (c) International Business Machines Corp., 2001-2004=0A+ *= =0A+ * This program is free software; you can redistribute it and/or mod= ify=0A+ * it under the terms of the GNU General Public License as publish= ed by=0A+ * the Free Software Foundation; either version 2 of the License= , or=0A+ * (at your option) any later version.=0A+ *=0A+ * This program= is distributed in the hope that it will be useful,=0A+ * but WITHOUT ANY= WARRANTY; without even the implied warranty of=0A+ * MERCHANTABILITY or= FITNESS FOR A PARTICULAR PURPOSE. See=0A+ * the GNU General Public Lice= nse for more details.=0A+ *=0A+ * You should have received a copy of the = GNU General Public License=0A+ * along with this program; if not, write = to the Free Software=0A+ * Foundation, Inc., 51 Franklin Street, Fifth Fl= oor, Boston, MA 02110-1301 USA=0A+ */=0A+#ifndef =5FRWLOCK=5FH=0A+#define = =5FRWLOCK=5FH=0A+=0A+#include =0A+=0A+/* #define RWDEBUG 1 */=0A= +=0A+/* n=5Freaders >=3D 0 means 0 or more readers */=0A+/* n=5Freaders < 0= means a writer */=0A+struct rwlock {=0A+ pthread=5Fmutex=5Ft plock;=0A+ in= t n=5Freaders;=0A+ pthread=5Fcond=5Ft pcond;=0A+#ifdef RWDEBUG=0A+ int wri= ter=5Ftid;=0A+ int n=5Fread=5Fwaiting;=0A+ int n=5Fwrite=5Fwaiting;=0A+#e= ndif=0A+};=0A+=0A+void init=5Frwlock(struct rwlock *rw);=0A+=0A+void rw=5Fl= ock=5Fread(struct rwlock *rw);=0A+void rw=5Flock=5Fwrite(struct rwlock *rw)= ;=0A+=0A+void rw=5Funlock=5Fread(struct rwlock *rw);=0A+void rw=5Funlock=5F= write(struct rwlock *rw);=0A+=0A+int rw=5Ftrylock=5Fread(struct rwlock *rw)= ;=0A+int rw=5Ftrylock=5Fwrite(struct rwlock *rw);=0A+=0A+=0A+=0A+#endif=0Ad= iff --git a/utils/ffsb-6.0-rc2/stamp-h.in b/utils/ffsb-6.0-rc2/stamp-h.in= =0Anew file mode 100644=0Aindex 0000000..9788f70=0A--- /dev/null=0A+++ b/ut= ils/ffsb-6.0-rc2/stamp-h.in=0A@@ -0,0 +1 @@=0A+timestamp=0Adiff --git a/uti= ls/ffsb-6.0-rc2/util.c b/utils/ffsb-6.0-rc2/util.c=0Anew file mode 100644= =0Aindex 0000000..77e1b3b=0A--- /dev/null=0A+++ b/utils/ffsb-6.0-rc2/util.c= =0A@@ -0,0 +1,345 @@=0A+/*=0A+ * Copyright (c) International Business Mac= hines Corp., 2001-2004=0A+ *=0A+ * This program is free software; you ca= n redistribute it and/or modify=0A+ * it under the terms of the GNU Gener= al Public License as published by=0A+ * the Free Software Foundation; eit= her version 2 of the License, or=0A+ * (at your option) any later version= .=0A+ *=0A+ * This program is distributed in the hope that it will be use= ful,=0A+ * but WITHOUT ANY WARRANTY; without even the implied warranty o= f=0A+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See=0A+ * = the GNU General Public License for more details.=0A+ *=0A+ * You should = have received a copy of the GNU General Public License=0A+ * along with t= his program; if not, write to the Free Software=0A+ * Foundation, Inc., = 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA=0A+ */=0A+#inclu= de =0A+#include =0A+#include =0A+#= include =0A+#include =0A+#include =0A= +#include =0A+#include =0A+#include =0A+#inclu= de =0A+#include =0A+#include =0A+#include =0A+#include =0A+=0A+#include "config.h"=0A+#include "fh.h= "=0A+#include "util.h"=0A+=0A+uint64=5Ft ffsb=5Fget=5Ffilesize(char *name)= =0A+{=0A+#ifndef HAVE=5FSTAT64=0A+#define STAT(a, b) do { stat((a), (b)); }= while (0)=0A+ struct stat filestat;=0A+#else=0A+#define STAT(a, b) do { st= at64((a), (b)); } while (0)=0A+ struct stat64 filestat;=0A+#endif=0A+=0A+ S= TAT(name, &filestat);=0A+ return (uint64=5Ft) filestat.st=5Fsize;=0A+#undef= STAT=0A+}=0A+=0A+void *ffsb=5Fmalloc(size=5Ft size)=0A+{=0A+ void *ptr =3D= malloc((size));=0A+ assert(ptr !=3D NULL);=0A+ memset(ptr, 0, size);=0A+ r= eturn ptr;=0A+}=0A+=0A+void *ffsb=5Frealloc(void *ptr, size=5Ft size)=0A+{= =0A+ void *tmp;=0A+ /* printf("ffsb=5Frealloc: ptr =3D %p size =3D %ld\n",= ptr,size); */=0A+=0A+ if (ptr =3D=3D NULL)=0A+ return ffsb=5Fmalloc(size);= =0A+=0A+ tmp =3D realloc(ptr, size);=0A+ assert(ptr !=3D NULL);=0A+ ptr =3D= tmp;=0A+ return ptr;=0A+}=0A+=0A+void *ffsb=5Falign=5F4k(void *ptr)=0A+{= =0A+ unsigned long mask =3D ~(0xfff); /* 12 zeros at the end */=0A+ void *r= et =3D (void *)((unsigned long)ptr & mask);=0A+ /* printf("align=5F4k got %= p returning %p\n",ptr,ret); */=0A+ return ret;=0A+}=0A+=0A+char *ffsb=5Fstr= dup(const char *str)=0A+{=0A+ int len =3D strlen(str);=0A+ char *dup =3D ff= sb=5Fmalloc(len + 1);=0A+ /* !!! am I off by one here ?? */=0A+ strncpy(dup= , str, len + 1);=0A+ return dup;=0A+}=0A+=0A+size=5Ft ffsb=5Fstrnlen(const = char *str, size=5Ft maxlen)=0A+{=0A+ size=5Ft index =3D 0;=0A+=0A+ while (i= ndex < maxlen) {=0A+ if (str[index] =3D=3D '\0')=0A+ break;=0A+ index++= ;=0A+ }=0A+ return index;=0A+}=0A+=0A+/* not perfect, in case we are someho= w interrupted it's borked */=0A+void ffsb=5Fsleep(unsigned secs)=0A+{=0A+ s= truct timeval tv =3D { 0, 0 };=0A+ tv.tv=5Fsec =3D secs;=0A+ select(0, NULL= , NULL, NULL, &tv);=0A+}=0A+=0A+char *ffsb=5Fprintsize(char *buf, double si= ze, int bufsize)=0A+{=0A+ if (size >=3D 1024 * 1024 * 1024)=0A+ snprintf(b= uf, bufsize, "%.3gGB", size / (1024 * 1024 * 1024));=0A+ else if (size >=3D= 1024 * 1024)=0A+ snprintf(buf, bufsize, "%.3gMB", size / (1024 * 1024));= =0A+ else if (size >=3D 1024)=0A+ snprintf(buf, bufsize, "%.3gKB", size / = 1024);=0A+ else=0A+ snprintf(buf, bufsize, "%.3gB", size);=0A+=0A+ return = buf;=0A+}=0A+=0A+void ffsb=5Fmkdir(char *dirname)=0A+{=0A+ if (mkdir(dirnam= e, S=5FIRWXU) < 0) {=0A+ fprintf(stderr, "Error creating %s\n", dirname);= =0A+ perror("mkdir");=0A+ exit(1);=0A+ }=0A+}=0A+=0A+struct timeval tvsub= (struct timeval t1, struct timeval t0)=0A+{=0A+ struct timeval tdiff;=0A+ t= diff.tv=5Fsec =3D t1.tv=5Fsec - t0.tv=5Fsec;=0A+ tdiff.tv=5Fusec =3D t1.tv= =5Fusec - t0.tv=5Fusec;=0A+ if (tdiff.tv=5Fusec < 0)=0A+ tdiff.tv=5Fsec--,= tdiff.tv=5Fusec +=3D 1000000;=0A+ return tdiff;=0A+}=0A+=0A+struct timeval= tvadd(struct timeval t1, struct timeval t0)=0A+{=0A+ struct timeval tdiff;= =0A+ tdiff.tv=5Fsec =3D t1.tv=5Fsec + t0.tv=5Fsec;=0A+ tdiff.tv=5Fusec =3D = t1.tv=5Fusec + t0.tv=5Fusec;=0A+ if (tdiff.tv=5Fusec > 1000000)=0A+ tdiff.= tv=5Fsec++, tdiff.tv=5Fusec -=3D 1000000;=0A+ return tdiff;=0A+}=0A+=0A+dou= ble tvtodouble(struct timeval *t)=0A+{=0A+ return ((double)t->tv=5Fsec * (1= 000000.0f) + (double)t->tv=5Fusec) /=0A+ 1000000.0f;=0A+}=0A+=0A+double= cpu=5Fso=5Ffar(void)=0A+{=0A+ struct rusage rusage;=0A+=0A+ getrusage(RUSA= GE=5FSELF, &rusage);=0A+=0A+ return=0A+ ((double)rusage.ru=5Futime.tv= =5Fsec) +=0A+ (((double)rusage.ru=5Futime.tv=5Fusec) / 1000000.0) +=0A+= ((double)rusage.ru=5Fstime.tv=5Fsec) +=0A+ (((double)rusage.ru=5Fs= time.tv=5Fusec) / 1000000.0);=0A+}=0A+=0A+double cpu=5Fso=5Ffar=5Fchildren(= void)=0A+{=0A+ struct rusage rusage;=0A+=0A+ getrusage(RUSAGE=5FCHILDREN, &= rusage);=0A+=0A+ return=0A+ ((double)rusage.ru=5Futime.tv=5Fsec) +=0A+ = (((double)rusage.ru=5Futime.tv=5Fusec) / 1000000.0) +=0A+ ((double)= rusage.ru=5Fstime.tv=5Fsec) +=0A+ (((double)rusage.ru=5Fstime.tv=5Fusec= ) / 1000000.0);=0A+}=0A+=0A+/* !!!! check portability */=0A+float getfsutil= (char *dirname)=0A+{=0A+ struct statvfs64 fsdata;=0A+=0A+ statvfs64(dirname= , &fsdata);=0A+=0A+/* return (float)(fsdata.f=5Fblocks-fsdata.f=5Fbfree)/ = */=0A+/* (float)(fsdata.f=5Fblocks-fsdata.f=5Fbfree+fsdata.f=5Fbavail); *= /=0A+ return (float)(((float)(fsdata.f=5Fblocks - fsdata.f=5Fbfree)) /=0A+ = ((float)fsdata.f=5Fblocks));=0A+}=0A+=0A+uint64=5Ft getfsutil=5Fsiz= e(char *dirname)=0A+{=0A+ struct statvfs64 fsdata;=0A+ statvfs64(dirname, &= fsdata);=0A+=0A+ return (fsdata.f=5Fblocks - fsdata.f=5Fbfree) * fsdata.f= =5Fbsize;=0A+}=0A+=0A+int ffsb=5Fsystem(char *command)=0A+{=0A+ int pid =3D= 0, status;=0A+ extern char **environ;=0A+=0A+ if (command =3D=3D NULL)=0A+= return 1;=0A+ pid =3D fork();=0A+ if (pid =3D=3D -1)=0A+ return -1;=0A+ = if (pid =3D=3D 0) {=0A+ char *argv[4];=0A+ argv[0] =3D "sh";=0A+ argv[1]= =3D "-c";=0A+ argv[2] =3D command;=0A+ argv[3] =3D 0;=0A+ execve("/bin/= sh", argv, environ);=0A+ exit(127);=0A+ }=0A+ do {=0A+ if (waitpid(pid, &= status, 0) =3D=3D -1) {=0A+ if (errno !=3D EINTR)=0A+ return -1;=0A+ = } else=0A+ return status;=0A+ } while (1);=0A+}=0A+=0A+void ffsb=5Fsync()= =0A+{=0A+ struct timeval starttime, endtime, difftime;=0A+ printf("Syncing(= )...");=0A+ fflush(stdout);=0A+ gettimeofday(&starttime, NULL);=0A+ sync();= =0A+ gettimeofday(&endtime, NULL);=0A+ timersub(&endtime, &starttime, &diff= time);=0A+ printf("%ld sec\n", difftime.tv=5Fsec);=0A+}=0A+=0A+void ffsb=5F= getrusage(struct rusage *ru=5Fself, struct rusage *ru=5Fchildren)=0A+{=0A+ = int ret =3D 0;=0A+/* printf("cpu=5Fso=5Ffar is %lf\n",cpu=5Fso=5Ffar()); *= /=0A+/* printf("cpu=5Fso=5Ffar=5Fchildren is %lf\n",cpu=5Fso=5Ffar=5Fchild= ren()); */=0A+ ret =3D getrusage(RUSAGE=5FSELF, ru=5Fself);=0A+ if (ret < 0= )=0A+ perror("getrusage self");=0A+=0A+/* printf("self returned %d\n",ret= ); */=0A+ ret =3D getrusage(RUSAGE=5FCHILDREN, ru=5Fchildren);=0A+ if (ret = < 0)=0A+ perror("getrusage children");=0A+/* printf("children returned %d= \n",ret); */=0A+}=0A+=0A+void ffsb=5Fmilli=5Fsleep(unsigned time)=0A+{=0A+ = struct timeval tv =3D { 0, 0 };=0A+ if (!time)=0A+ return;=0A+ tv.tv=5Fuse= c =3D time * 1000;=0A+ select(0, NULL, NULL, NULL, &tv);=0A+}=0A+=0A+void f= fsb=5Fmicro=5Fsleep(unsigned time)=0A+{=0A+ struct timeval tv =3D { 0, 0 };= =0A+ if (!time)=0A+ return;=0A+ tv.tv=5Fusec =3D time;=0A+ select(0, NULL,= NULL, NULL, &tv);=0A+}=0A+=0A+void ffsb=5Fbarrier=5Finit(ffsb=5Fbarrier=5F= t * fb, unsigned count)=0A+{=0A+ memset(fb, 0, sizeof(*fb));=0A+ pthread=5F= mutex=5Finit(&fb->plock, NULL);=0A+ pthread=5Fcond=5Finit(&fb->pcond, NULL)= ;=0A+ fb->required=5Fcount =3D count;=0A+}=0A+=0A+void ffsb=5Fbarrier=5Fwai= t(ffsb=5Fbarrier=5Ft * fb)=0A+{=0A+ pthread=5Fmutex=5Flock(&fb->plock);=0A+= =0A+ fb->current=5Fcount++;=0A+=0A+ if (fb->current=5Fcount =3D=3D fb->requ= ired=5Fcount)=0A+ pthread=5Fcond=5Fbroadcast(&fb->pcond);=0A+ else=0A+ wh= ile (fb->current=5Fcount !=3D fb->required=5Fcount)=0A+ pthread=5Fcond=5F= wait(&fb->pcond, &fb->plock);=0A+=0A+ pthread=5Fmutex=5Funlock(&fb->plock);= =0A+}=0A+=0A+void ffsb=5Funbuffer=5Fstdout(void)=0A+{=0A+#ifndef SETVBUF=5F= REVERSED=0A+ setvbuf(stdout, NULL, =5FIONBF, 0);=0A+#else=0A+ setvbuf(stdou= t, =5FIONBF, NULL, 0);=0A+#endif=0A+}=0A+=0A+void ffsb=5Fbench=5Fgettimeofd= ay(void)=0A+{=0A+ unsigned long i =3D 0;=0A+ uint64=5Ft total=5Fusec;=0A+ u= int64=5Ft average =3D 0;=0A+ struct timeval starttime, endtime, junk, difft= ime;=0A+ gettimeofday(&starttime, NULL);=0A+ for (i =3D 0; i < 1000000; i++= )=0A+ gettimeofday(&junk, NULL);=0A+ gettimeofday(&endtime, NULL);=0A+ tim= ersub(&endtime, &starttime, &difftime);=0A+ total=5Fusec =3D difftime.tv=5F= sec * 1000000;=0A+ total=5Fusec +=3D difftime.tv=5Fusec;=0A+ average =3D to= tal=5Fusec / 1000ull;=0A+ printf("average time for gettimeofday(): %llu nse= c\n", average);=0A+}=0A+=0A+void ffsb=5Fbench=5Fgetpid(void)=0A+{=0A+ unsig= ned long i =3D 0;=0A+ uint64=5Ft total=5Fusec;=0A+ uint64=5Ft average =3D 0= ;=0A+ struct timeval starttime, endtime, difftime;=0A+ gettimeofday(&startt= ime, NULL);=0A+ for (i =3D 0; i < 1000000; i++)=0A+ getpid();=0A+ gettimeo= fday(&endtime, NULL);=0A+ timersub(&endtime, &starttime, &difftime);=0A+ to= tal=5Fusec =3D difftime.tv=5Fsec * 1000000;=0A+ total=5Fusec +=3D difftime.= tv=5Fusec;=0A+ average =3D total=5Fusec / 1000ull;=0A+ printf("average time= for getpid(): %llu nsec\n", average);=0A+}=0Adiff --git a/utils/ffsb-6.0-r= c2/util.h b/utils/ffsb-6.0-rc2/util.h=0Anew file mode 100644=0Aindex 000000= 0..0de0364=0A--- /dev/null=0A+++ b/utils/ffsb-6.0-rc2/util.h=0A@@ -0,0 +1,9= 4 @@=0A+/*=0A+ * Copyright (c) International Business Machines Corp., 200= 1-2006=0A+ *=0A+ * This program is free software; you can redistribute i= t and/or modify=0A+ * it under the terms of the GNU General Public Licens= e as published by=0A+ * the Free Software Foundation; either version 2 of= the License, or=0A+ * (at your option) any later version.=0A+ *=0A+ * = This program is distributed in the hope that it will be useful,=0A+ * but= WITHOUT ANY WARRANTY; without even the implied warranty of=0A+ * MERCHA= NTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See=0A+ * the GNU General= Public License for more details.=0A+ *=0A+ * You should have received a = copy of the GNU General Public License=0A+ * along with this program; if= not, write to the Free Software=0A+ * Foundation, Inc., 51 Franklin Stre= et, Fifth Floor, Boston, MA 02110-1301 USA=0A+ */=0A+#ifndef =5FUTIL=5FH=5F= =0A+#define =5FUTIL=5FH=5F=0A+=0A+#include "config.h"=0A+=0A+#include =0A+#include =0A+=0A+#ifdef HAVE=5FSYS=5FVFS=5FH=0A+= #include =0A+#endif=0A+#include =0A+#include =0A+#include =0A+#include =0A+#include = =0A+#include =0A+=0A+=0A+void ffsb=5Fsleep(unsigned secs);=0A+vo= id *ffsb=5Fmalloc(size=5Ft size);=0A+void *ffsb=5Frealloc(void *ptr, size= =5Ft size);=0A+char *ffsb=5Fstrdup(const char *str);=0A+size=5Ft ffsb=5Fstr= nlen(const char *str, size=5Ft maxlen);=0A+=0A+void ffsb=5Fmkdir(char *dirn= ame);=0A+void ffsb=5Fgetrusage(struct rusage *ru=5Fself, struct rusage *ru= =5Fchildren);=0A+void ffsb=5Fsync(void);=0A+void *ffsb=5Falign=5F4k(void *p= tr);=0A+char *ffsb=5Fprintsize(char *buf, double size, int bufsize);=0A+=0A= +int ffsb=5Fsystem(char *command);=0A+void ffsb=5Fmilli=5Fsleep(unsigned ti= me);=0A+void ffsb=5Fmicro=5Fsleep(unsigned time);=0A+void ffsb=5Funbuffer= =5Fstdout(void);=0A+void ffsb=5Fbench=5Fgettimeofday(void);=0A+void ffsb=5F= bench=5Fgetpid(void);=0A+=0A+uint64=5Ft ffsb=5Fget=5Ffilesize(char *name);= =0A+=0A+typedef struct {=0A+ unsigned required=5Fcount;=0A+ unsigned curren= t=5Fcount;=0A+ pthread=5Fmutex=5Ft plock;=0A+ pthread=5Fcond=5Ft pcond;=0A+= } ffsb=5Fbarrier=5Ft ;=0A+=0A+void ffsb=5Fbarrier=5Finit(ffsb=5Fbarrier=5Ft= *fb, unsigned count);=0A+void ffsb=5Fbarrier=5Fwait(ffsb=5Fbarrier=5Ft *fb= );=0A+=0A+double cpu=5Fso=5Ffar(void);=0A+double time=5Fso=5Ffar(void);=0A+= double cpu=5Fso=5Ffar=5Fchildren(void);=0A+float getfsutil(char *dirname);= =0A+uint64=5Ft getfsutil=5Fsize(char *dirname);=0A+=0A+struct timeval tvsub= (struct timeval t1, struct timeval t0);=0A+struct timeval tvadd(struct time= val t1, struct timeval t0);=0A+double tvtodouble(struct timeval *t);=0A+=0A= +=0A+#define max(a, b) (((a) > (b)) ? (a) : (b))=0A+=0A+#ifndef timersub=0A= +#define timersub(a, b, result) \= =0A+ do { \=0A+ = (result)->tv=5Fsec =3D (a)->tv=5Fsec - (b)->tv=5Fsec; \=0A+ (result)->tv= =5Fusec =3D (a)->tv=5Fusec - (b)->tv=5Fusec; \=0A+ \=0A+ if ((resu= lt)->tv=5Fusec < 0) { \=0A+ (result)->tv=5Fsec--; \=0A+ (result)-= >tv=5Fusec +=3D 1000000; \=0A+ } \=0A+ } while (0)=0A+#endif /* ti= mersub */=0A+=0A+#endif /* =5FUTIL=5FH=5F */=0A-- =0A1.8.2.1=0A=0A= = --------------030703060901050707090107 Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Disposition: inline ------------------------------------------------------------------------------ Shape the Mobile Experience: Free Subscription Software experts and developers: Be at the forefront of tech innovation. Intel(R) Software Adrenaline delivers strategic insight and game-changing conversations that shape the rapidly evolving mobile landscape. Sign up now. http://pubads.g.doubleclick.net/gampad/clk?id=63431311&iu=/4140/ostg.clktrk --------------030703060901050707090107 Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Disposition: inline _______________________________________________ Ltp-list mailing list Ltp-list@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/ltp-list --------------030703060901050707090107--