diff --git a/.fmf/version b/.fmf/version
new file mode 100644
index 0000000..d00491f
--- /dev/null
+++ b/.fmf/version
@@ -0,0 +1 @@
+1
diff --git a/.gitignore b/.gitignore
index 23a3bb0..99a12dc 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1 +1,17 @@
-/fribidi-0.19.4.tar.bz2
+/fribidi-0.19.7.tar.bz2
+/fribidi-1.0.1.tar.bz2
+/fribidi-1.0.2.tar.bz2
+/fribidi-1.0.3.tar.bz2
+/fribidi-1.0.4.tar.bz2
+/fribidi-1.0.5.tar.bz2
+/fribidi-1.0.6.tar.gz
+/fribidi-1.0.7.tar.bz2
+/fribidi-1.0.8.tar.bz2
+/fribidi-1.0.9.tar.xz
+/fribidi-1.0.10.tar.xz
+/fribidi-1.0.11.tar.xz
+/fribidi-1.0.12.tar.xz
+/fribidi-1.0.13.tar.xz
+/fribidi-1.0.14.tar.xz
+/fribidi-1.0.15.tar.xz
+/fribidi-1.0.16.tar.xz
diff --git a/fribidi-aarch64.patch b/fribidi-aarch64.patch
deleted file mode 100644
index c91047e..0000000
--- a/fribidi-aarch64.patch
+++ /dev/null
@@ -1,1348 +0,0 @@
-diff -urN fribidi-0.19.4/config.guess fribidi-0.19.4-aarch64/config.guess
---- fribidi-0.19.4/config.guess 2012-08-25 16:40:38.000000000 -0500
-+++ fribidi-0.19.4-aarch64/config.guess 2013-03-03 04:48:11.611623841 -0600
-@@ -1,10 +1,10 @@
- #! /bin/sh
- # Attempt to guess a canonical system name.
- # Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
--# 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009
--# Free Software Foundation, Inc.
-+# 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010,
-+# 2011, 2012 Free Software Foundation, Inc.
-
--timestamp='2009-06-10'
-+timestamp='2012-09-25'
-
- # This file is free software; you can redistribute it and/or modify it
- # under the terms of the GNU General Public License as published by
-@@ -17,9 +17,7 @@
- # General Public License for more details.
- #
- # You should have received a copy of the GNU General Public License
--# along with this program; if not, write to the Free Software
--# Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA
--# 02110-1301, USA.
-+# along with this program; if not, see .
- #
- # As a special exception to the GNU General Public License, if you
- # distribute this file as part of a program that contains a
-@@ -27,16 +25,16 @@
- # the same distribution terms that you use for the rest of that program.
-
-
--# Originally written by Per Bothner .
--# Please send patches to . Submit a context
--# diff and a properly formatted ChangeLog entry.
-+# Originally written by Per Bothner. Please send patches (context
-+# diff format) to and include a ChangeLog
-+# entry.
- #
- # This script attempts to guess a canonical system name similar to
- # config.sub. If it succeeds, it prints the system name on stdout, and
- # exits with 0. Otherwise, it exits with 1.
- #
--# The plan is that this can be called by configure scripts if you
--# don't specify an explicit build system type.
-+# You can get the latest version of this script from:
-+# http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess;hb=HEAD
-
- me=`echo "$0" | sed -e 's,.*/,,'`
-
-@@ -56,8 +54,9 @@
- GNU config.guess ($timestamp)
-
- Originally written by Per Bothner.
--Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001,
--2002, 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
-+Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000,
-+2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012
-+Free Software Foundation, Inc.
-
- This is free software; see the source for copying conditions. There is NO
- warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
-@@ -144,7 +143,7 @@
- case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
- *:NetBSD:*:*)
- # NetBSD (nbsd) targets should (where applicable) match one or
-- # more of the tupples: *-*-netbsdelf*, *-*-netbsdaout*,
-+ # more of the tuples: *-*-netbsdelf*, *-*-netbsdaout*,
- # *-*-netbsdecoff* and *-*-netbsd*. For targets that recently
- # switched to ELF, *-*-netbsd* would select the old
- # object file format. This provides both forward
-@@ -180,7 +179,7 @@
- fi
- ;;
- *)
-- os=netbsd
-+ os=netbsd
- ;;
- esac
- # The OS release
-@@ -201,6 +200,10 @@
- # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used.
- echo "${machine}-${os}${release}"
- exit ;;
-+ *:Bitrig:*:*)
-+ UNAME_MACHINE_ARCH=`arch | sed 's/Bitrig.//'`
-+ echo ${UNAME_MACHINE_ARCH}-unknown-bitrig${UNAME_RELEASE}
-+ exit ;;
- *:OpenBSD:*:*)
- UNAME_MACHINE_ARCH=`arch | sed 's/OpenBSD.//'`
- echo ${UNAME_MACHINE_ARCH}-unknown-openbsd${UNAME_RELEASE}
-@@ -223,7 +226,7 @@
- UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'`
- ;;
- *5.*)
-- UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $4}'`
-+ UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $4}'`
- ;;
- esac
- # According to Compaq, /usr/sbin/psrinfo has been available on
-@@ -269,7 +272,10 @@
- # A Xn.n version is an unreleased experimental baselevel.
- # 1.2 uses "1.2" for uname -r.
- echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[PVTX]//' | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
-- exit ;;
-+ # Reset EXIT trap before exiting to avoid spurious non-zero exit code.
-+ exitcode=$?
-+ trap '' 0
-+ exit $exitcode ;;
- Alpha\ *:Windows_NT*:*)
- # How do we know it's Interix rather than the generic POSIX subsystem?
- # Should we change UNAME_MACHINE based on the output of uname instead
-@@ -295,12 +301,12 @@
- echo s390-ibm-zvmoe
- exit ;;
- *:OS400:*:*)
-- echo powerpc-ibm-os400
-+ echo powerpc-ibm-os400
- exit ;;
- arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*)
- echo arm-acorn-riscix${UNAME_RELEASE}
- exit ;;
-- arm:riscos:*:*|arm:RISCOS:*:*)
-+ arm*:riscos:*:*|arm*:RISCOS:*:*)
- echo arm-unknown-riscos
- exit ;;
- SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*)
-@@ -333,6 +339,9 @@
- sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*)
- echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
- exit ;;
-+ i86pc:AuroraUX:5.*:* | i86xen:AuroraUX:5.*:*)
-+ echo i386-pc-auroraux${UNAME_RELEASE}
-+ exit ;;
- i86pc:SunOS:5.*:* | i86xen:SunOS:5.*:*)
- eval $set_cc_for_build
- SUN_ARCH="i386"
-@@ -391,23 +400,23 @@
- # MiNT. But MiNT is downward compatible to TOS, so this should
- # be no problem.
- atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*)
-- echo m68k-atari-mint${UNAME_RELEASE}
-+ echo m68k-atari-mint${UNAME_RELEASE}
- exit ;;
- atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*)
- echo m68k-atari-mint${UNAME_RELEASE}
-- exit ;;
-+ exit ;;
- *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*)
-- echo m68k-atari-mint${UNAME_RELEASE}
-+ echo m68k-atari-mint${UNAME_RELEASE}
- exit ;;
- milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*)
-- echo m68k-milan-mint${UNAME_RELEASE}
-- exit ;;
-+ echo m68k-milan-mint${UNAME_RELEASE}
-+ exit ;;
- hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*)
-- echo m68k-hades-mint${UNAME_RELEASE}
-- exit ;;
-+ echo m68k-hades-mint${UNAME_RELEASE}
-+ exit ;;
- *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*)
-- echo m68k-unknown-mint${UNAME_RELEASE}
-- exit ;;
-+ echo m68k-unknown-mint${UNAME_RELEASE}
-+ exit ;;
- m68k:machten:*:*)
- echo m68k-apple-machten${UNAME_RELEASE}
- exit ;;
-@@ -477,8 +486,8 @@
- echo m88k-motorola-sysv3
- exit ;;
- AViiON:dgux:*:*)
-- # DG/UX returns AViiON for all architectures
-- UNAME_PROCESSOR=`/usr/bin/uname -p`
-+ # DG/UX returns AViiON for all architectures
-+ UNAME_PROCESSOR=`/usr/bin/uname -p`
- if [ $UNAME_PROCESSOR = mc88100 ] || [ $UNAME_PROCESSOR = mc88110 ]
- then
- if [ ${TARGET_BINARY_INTERFACE}x = m88kdguxelfx ] || \
-@@ -491,7 +500,7 @@
- else
- echo i586-dg-dgux${UNAME_RELEASE}
- fi
-- exit ;;
-+ exit ;;
- M88*:DolphinOS:*:*) # DolphinOS (SVR3)
- echo m88k-dolphin-sysv3
- exit ;;
-@@ -548,7 +557,7 @@
- echo rs6000-ibm-aix3.2
- fi
- exit ;;
-- *:AIX:*:[456])
-+ *:AIX:*:[4567])
- IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }'`
- if /usr/sbin/lsattr -El ${IBM_CPU_ID} | grep ' POWER' >/dev/null 2>&1; then
- IBM_ARCH=rs6000
-@@ -591,52 +600,52 @@
- 9000/[678][0-9][0-9])
- if [ -x /usr/bin/getconf ]; then
- sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null`
-- sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null`
-- case "${sc_cpu_version}" in
-- 523) HP_ARCH="hppa1.0" ;; # CPU_PA_RISC1_0
-- 528) HP_ARCH="hppa1.1" ;; # CPU_PA_RISC1_1
-- 532) # CPU_PA_RISC2_0
-- case "${sc_kernel_bits}" in
-- 32) HP_ARCH="hppa2.0n" ;;
-- 64) HP_ARCH="hppa2.0w" ;;
-+ sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null`
-+ case "${sc_cpu_version}" in
-+ 523) HP_ARCH="hppa1.0" ;; # CPU_PA_RISC1_0
-+ 528) HP_ARCH="hppa1.1" ;; # CPU_PA_RISC1_1
-+ 532) # CPU_PA_RISC2_0
-+ case "${sc_kernel_bits}" in
-+ 32) HP_ARCH="hppa2.0n" ;;
-+ 64) HP_ARCH="hppa2.0w" ;;
- '') HP_ARCH="hppa2.0" ;; # HP-UX 10.20
-- esac ;;
-- esac
-+ esac ;;
-+ esac
- fi
- if [ "${HP_ARCH}" = "" ]; then
- eval $set_cc_for_build
-- sed 's/^ //' << EOF >$dummy.c
-+ sed 's/^ //' << EOF >$dummy.c
-+
-+ #define _HPUX_SOURCE
-+ #include
-+ #include
-+
-+ int main ()
-+ {
-+ #if defined(_SC_KERNEL_BITS)
-+ long bits = sysconf(_SC_KERNEL_BITS);
-+ #endif
-+ long cpu = sysconf (_SC_CPU_VERSION);
-
-- #define _HPUX_SOURCE
-- #include
-- #include
--
-- int main ()
-- {
-- #if defined(_SC_KERNEL_BITS)
-- long bits = sysconf(_SC_KERNEL_BITS);
-- #endif
-- long cpu = sysconf (_SC_CPU_VERSION);
--
-- switch (cpu)
-- {
-- case CPU_PA_RISC1_0: puts ("hppa1.0"); break;
-- case CPU_PA_RISC1_1: puts ("hppa1.1"); break;
-- case CPU_PA_RISC2_0:
-- #if defined(_SC_KERNEL_BITS)
-- switch (bits)
-- {
-- case 64: puts ("hppa2.0w"); break;
-- case 32: puts ("hppa2.0n"); break;
-- default: puts ("hppa2.0"); break;
-- } break;
-- #else /* !defined(_SC_KERNEL_BITS) */
-- puts ("hppa2.0"); break;
-- #endif
-- default: puts ("hppa1.0"); break;
-- }
-- exit (0);
-- }
-+ switch (cpu)
-+ {
-+ case CPU_PA_RISC1_0: puts ("hppa1.0"); break;
-+ case CPU_PA_RISC1_1: puts ("hppa1.1"); break;
-+ case CPU_PA_RISC2_0:
-+ #if defined(_SC_KERNEL_BITS)
-+ switch (bits)
-+ {
-+ case 64: puts ("hppa2.0w"); break;
-+ case 32: puts ("hppa2.0n"); break;
-+ default: puts ("hppa2.0"); break;
-+ } break;
-+ #else /* !defined(_SC_KERNEL_BITS) */
-+ puts ("hppa2.0"); break;
-+ #endif
-+ default: puts ("hppa1.0"); break;
-+ }
-+ exit (0);
-+ }
- EOF
- (CCOPTS= $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null) && HP_ARCH=`$dummy`
- test -z "$HP_ARCH" && HP_ARCH=hppa
-@@ -727,22 +736,22 @@
- exit ;;
- C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*)
- echo c1-convex-bsd
-- exit ;;
-+ exit ;;
- C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*)
- if getsysinfo -f scalar_acc
- then echo c32-convex-bsd
- else echo c2-convex-bsd
- fi
-- exit ;;
-+ exit ;;
- C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*)
- echo c34-convex-bsd
-- exit ;;
-+ exit ;;
- C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*)
- echo c38-convex-bsd
-- exit ;;
-+ exit ;;
- C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*)
- echo c4-convex-bsd
-- exit ;;
-+ exit ;;
- CRAY*Y-MP:*:*:*)
- echo ymp-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
- exit ;;
-@@ -766,14 +775,14 @@
- exit ;;
- F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*)
- FUJITSU_PROC=`uname -m | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
-- FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'`
-- FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'`
-- echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
-- exit ;;
-+ FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'`
-+ FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'`
-+ echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
-+ exit ;;
- 5000:UNIX_System_V:4.*:*)
-- FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'`
-- FUJITSU_REL=`echo ${UNAME_RELEASE} | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/ /_/'`
-- echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
-+ FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'`
-+ FUJITSU_REL=`echo ${UNAME_RELEASE} | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/ /_/'`
-+ echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
- exit ;;
- i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*)
- echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE}
-@@ -785,34 +794,39 @@
- echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE}
- exit ;;
- *:FreeBSD:*:*)
-- case ${UNAME_MACHINE} in
-- pc98)
-- echo i386-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;;
-+ UNAME_PROCESSOR=`/usr/bin/uname -p`
-+ case ${UNAME_PROCESSOR} in
- amd64)
- echo x86_64-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;;
- *)
-- echo ${UNAME_MACHINE}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;;
-+ echo ${UNAME_PROCESSOR}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;;
- esac
- exit ;;
- i*:CYGWIN*:*)
- echo ${UNAME_MACHINE}-pc-cygwin
- exit ;;
-+ *:MINGW64*:*)
-+ echo ${UNAME_MACHINE}-pc-mingw64
-+ exit ;;
- *:MINGW*:*)
- echo ${UNAME_MACHINE}-pc-mingw32
- exit ;;
-+ i*:MSYS*:*)
-+ echo ${UNAME_MACHINE}-pc-msys
-+ exit ;;
- i*:windows32*:*)
-- # uname -m includes "-pc" on this system.
-- echo ${UNAME_MACHINE}-mingw32
-+ # uname -m includes "-pc" on this system.
-+ echo ${UNAME_MACHINE}-mingw32
- exit ;;
- i*:PW*:*)
- echo ${UNAME_MACHINE}-pc-pw32
- exit ;;
-- *:Interix*:[3456]*)
-- case ${UNAME_MACHINE} in
-+ *:Interix*:*)
-+ case ${UNAME_MACHINE} in
- x86)
- echo i586-pc-interix${UNAME_RELEASE}
- exit ;;
-- EM64T | authenticamd | genuineintel)
-+ authenticamd | genuineintel | EM64T)
- echo x86_64-unknown-interix${UNAME_RELEASE}
- exit ;;
- IA64)
-@@ -854,6 +868,27 @@
- i*86:Minix:*:*)
- echo ${UNAME_MACHINE}-pc-minix
- exit ;;
-+ aarch64:Linux:*:*)
-+ echo ${UNAME_MACHINE}-unknown-linux-gnu
-+ exit ;;
-+ aarch64_be:Linux:*:*)
-+ UNAME_MACHINE=aarch64_be
-+ echo ${UNAME_MACHINE}-unknown-linux-gnu
-+ exit ;;
-+ alpha:Linux:*:*)
-+ case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in
-+ EV5) UNAME_MACHINE=alphaev5 ;;
-+ EV56) UNAME_MACHINE=alphaev56 ;;
-+ PCA56) UNAME_MACHINE=alphapca56 ;;
-+ PCA57) UNAME_MACHINE=alphapca56 ;;
-+ EV6) UNAME_MACHINE=alphaev6 ;;
-+ EV67) UNAME_MACHINE=alphaev67 ;;
-+ EV68*) UNAME_MACHINE=alphaev68 ;;
-+ esac
-+ objdump --private-headers /bin/sh | grep -q ld.so.1
-+ if test "$?" = 0 ; then LIBC="libc1" ; else LIBC="" ; fi
-+ echo ${UNAME_MACHINE}-unknown-linux-gnu${LIBC}
-+ exit ;;
- arm*:Linux:*:*)
- eval $set_cc_for_build
- if echo __ARM_EABI__ | $CC_FOR_BUILD -E - 2>/dev/null \
-@@ -861,20 +896,40 @@
- then
- echo ${UNAME_MACHINE}-unknown-linux-gnu
- else
-- echo ${UNAME_MACHINE}-unknown-linux-gnueabi
-+ if echo __ARM_PCS_VFP | $CC_FOR_BUILD -E - 2>/dev/null \
-+ | grep -q __ARM_PCS_VFP
-+ then
-+ echo ${UNAME_MACHINE}-unknown-linux-gnueabi
-+ else
-+ echo ${UNAME_MACHINE}-unknown-linux-gnueabihf
-+ fi
- fi
- exit ;;
- avr32*:Linux:*:*)
- echo ${UNAME_MACHINE}-unknown-linux-gnu
- exit ;;
- cris:Linux:*:*)
-- echo cris-axis-linux-gnu
-+ echo ${UNAME_MACHINE}-axis-linux-gnu
- exit ;;
- crisv32:Linux:*:*)
-- echo crisv32-axis-linux-gnu
-+ echo ${UNAME_MACHINE}-axis-linux-gnu
- exit ;;
- frv:Linux:*:*)
-- echo frv-unknown-linux-gnu
-+ echo ${UNAME_MACHINE}-unknown-linux-gnu
-+ exit ;;
-+ hexagon:Linux:*:*)
-+ echo ${UNAME_MACHINE}-unknown-linux-gnu
-+ exit ;;
-+ i*86:Linux:*:*)
-+ LIBC=gnu
-+ eval $set_cc_for_build
-+ sed 's/^ //' << EOF >$dummy.c
-+ #ifdef __dietlibc__
-+ LIBC=dietlibc
-+ #endif
-+EOF
-+ eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^LIBC'`
-+ echo "${UNAME_MACHINE}-pc-linux-${LIBC}"
- exit ;;
- ia64:Linux:*:*)
- echo ${UNAME_MACHINE}-unknown-linux-gnu
-@@ -901,39 +956,18 @@
- #endif
- #endif
- EOF
-- eval "`$CC_FOR_BUILD -E $dummy.c 2>/dev/null | sed -n '
-- /^CPU/{
-- s: ::g
-- p
-- }'`"
-+ eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^CPU'`
- test x"${CPU}" != x && { echo "${CPU}-unknown-linux-gnu"; exit; }
- ;;
- or32:Linux:*:*)
-- echo or32-unknown-linux-gnu
-- exit ;;
-- ppc:Linux:*:*)
-- echo powerpc-unknown-linux-gnu
-- exit ;;
-- ppc64:Linux:*:*)
-- echo powerpc64-unknown-linux-gnu
-- exit ;;
-- alpha:Linux:*:*)
-- case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in
-- EV5) UNAME_MACHINE=alphaev5 ;;
-- EV56) UNAME_MACHINE=alphaev56 ;;
-- PCA56) UNAME_MACHINE=alphapca56 ;;
-- PCA57) UNAME_MACHINE=alphapca56 ;;
-- EV6) UNAME_MACHINE=alphaev6 ;;
-- EV67) UNAME_MACHINE=alphaev67 ;;
-- EV68*) UNAME_MACHINE=alphaev68 ;;
-- esac
-- objdump --private-headers /bin/sh | grep -q ld.so.1
-- if test "$?" = 0 ; then LIBC="libc1" ; else LIBC="" ; fi
-- echo ${UNAME_MACHINE}-unknown-linux-gnu${LIBC}
-+ echo ${UNAME_MACHINE}-unknown-linux-gnu
- exit ;;
- padre:Linux:*:*)
- echo sparc-unknown-linux-gnu
- exit ;;
-+ parisc64:Linux:*:* | hppa64:Linux:*:*)
-+ echo hppa64-unknown-linux-gnu
-+ exit ;;
- parisc:Linux:*:* | hppa:Linux:*:*)
- # Look for CPU level
- case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in
-@@ -942,14 +976,17 @@
- *) echo hppa-unknown-linux-gnu ;;
- esac
- exit ;;
-- parisc64:Linux:*:* | hppa64:Linux:*:*)
-- echo hppa64-unknown-linux-gnu
-+ ppc64:Linux:*:*)
-+ echo powerpc64-unknown-linux-gnu
-+ exit ;;
-+ ppc:Linux:*:*)
-+ echo powerpc-unknown-linux-gnu
- exit ;;
- s390:Linux:*:* | s390x:Linux:*:*)
- echo ${UNAME_MACHINE}-ibm-linux
- exit ;;
- sh64*:Linux:*:*)
-- echo ${UNAME_MACHINE}-unknown-linux-gnu
-+ echo ${UNAME_MACHINE}-unknown-linux-gnu
- exit ;;
- sh*:Linux:*:*)
- echo ${UNAME_MACHINE}-unknown-linux-gnu
-@@ -957,67 +994,18 @@
- sparc:Linux:*:* | sparc64:Linux:*:*)
- echo ${UNAME_MACHINE}-unknown-linux-gnu
- exit ;;
-+ tile*:Linux:*:*)
-+ echo ${UNAME_MACHINE}-unknown-linux-gnu
-+ exit ;;
- vax:Linux:*:*)
- echo ${UNAME_MACHINE}-dec-linux-gnu
- exit ;;
- x86_64:Linux:*:*)
-- echo x86_64-unknown-linux-gnu
-+ echo ${UNAME_MACHINE}-unknown-linux-gnu
- exit ;;
- xtensa*:Linux:*:*)
-- echo ${UNAME_MACHINE}-unknown-linux-gnu
-+ echo ${UNAME_MACHINE}-unknown-linux-gnu
- exit ;;
-- i*86:Linux:*:*)
-- # The BFD linker knows what the default object file format is, so
-- # first see if it will tell us. cd to the root directory to prevent
-- # problems with other programs or directories called `ld' in the path.
-- # Set LC_ALL=C to ensure ld outputs messages in English.
-- ld_supported_targets=`cd /; LC_ALL=C ld --help 2>&1 \
-- | sed -ne '/supported targets:/!d
-- s/[ ][ ]*/ /g
-- s/.*supported targets: *//
-- s/ .*//
-- p'`
-- case "$ld_supported_targets" in
-- elf32-i386)
-- TENTATIVE="${UNAME_MACHINE}-pc-linux-gnu"
-- ;;
-- esac
-- # Determine whether the default compiler is a.out or elf
-- eval $set_cc_for_build
-- sed 's/^ //' << EOF >$dummy.c
-- #include
-- #ifdef __ELF__
-- # ifdef __GLIBC__
-- # if __GLIBC__ >= 2
-- LIBC=gnu
-- # else
-- LIBC=gnulibc1
-- # endif
-- # else
-- LIBC=gnulibc1
-- # endif
-- #else
-- #if defined(__INTEL_COMPILER) || defined(__PGI) || defined(__SUNPRO_C) || defined(__SUNPRO_CC)
-- LIBC=gnu
-- #else
-- LIBC=gnuaout
-- #endif
-- #endif
-- #ifdef __dietlibc__
-- LIBC=dietlibc
-- #endif
--EOF
-- eval "`$CC_FOR_BUILD -E $dummy.c 2>/dev/null | sed -n '
-- /^LIBC/{
-- s: ::g
-- p
-- }'`"
-- test x"${LIBC}" != x && {
-- echo "${UNAME_MACHINE}-pc-linux-${LIBC}"
-- exit
-- }
-- test x"${TENTATIVE}" != x && { echo "${TENTATIVE}"; exit; }
-- ;;
- i*86:DYNIX/ptx:4*:*)
- # ptx 4.0 does uname -s correctly, with DYNIX/ptx in there.
- # earlier versions are messed up and put the nodename in both
-@@ -1025,11 +1013,11 @@
- echo i386-sequent-sysv4
- exit ;;
- i*86:UNIX_SV:4.2MP:2.*)
-- # Unixware is an offshoot of SVR4, but it has its own version
-- # number series starting with 2...
-- # I am not positive that other SVR4 systems won't match this,
-+ # Unixware is an offshoot of SVR4, but it has its own version
-+ # number series starting with 2...
-+ # I am not positive that other SVR4 systems won't match this,
- # I just have to hope. -- rms.
-- # Use sysv4.2uw... so that sysv4* matches it.
-+ # Use sysv4.2uw... so that sysv4* matches it.
- echo ${UNAME_MACHINE}-pc-sysv4.2uw${UNAME_VERSION}
- exit ;;
- i*86:OS/2:*:*)
-@@ -1061,7 +1049,7 @@
- fi
- exit ;;
- i*86:*:5:[678]*)
-- # UnixWare 7.x, OpenUNIX and OpenServer 6.
-+ # UnixWare 7.x, OpenUNIX and OpenServer 6.
- case `/bin/uname -X | grep "^Machine"` in
- *486*) UNAME_MACHINE=i486 ;;
- *Pentium) UNAME_MACHINE=i586 ;;
-@@ -1089,13 +1077,13 @@
- exit ;;
- pc:*:*:*)
- # Left here for compatibility:
-- # uname -m prints for DJGPP always 'pc', but it prints nothing about
-- # the processor, so we play safe by assuming i586.
-+ # uname -m prints for DJGPP always 'pc', but it prints nothing about
-+ # the processor, so we play safe by assuming i586.
- # Note: whatever this is, it MUST be the same as what config.sub
- # prints for the "djgpp" host, or else GDB configury will decide that
- # this is a cross-build.
- echo i586-pc-msdosdjgpp
-- exit ;;
-+ exit ;;
- Intel:Mach:3*:*)
- echo i386-pc-mach3
- exit ;;
-@@ -1130,8 +1118,8 @@
- /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \
- && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;;
- 3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*)
-- /bin/uname -p 2>/dev/null | grep 86 >/dev/null \
-- && { echo i486-ncr-sysv4; exit; } ;;
-+ /bin/uname -p 2>/dev/null | grep 86 >/dev/null \
-+ && { echo i486-ncr-sysv4; exit; } ;;
- NCR*:*:4.2:* | MPRAS*:*:4.2:*)
- OS_REL='.3'
- test -r /etc/.relid \
-@@ -1174,10 +1162,10 @@
- echo ns32k-sni-sysv
- fi
- exit ;;
-- PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort
-- # says
-- echo i586-unisys-sysv4
-- exit ;;
-+ PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort
-+ # says
-+ echo i586-unisys-sysv4
-+ exit ;;
- *:UNIX_System_V:4*:FTX*)
- # From Gerald Hewes .
- # How about differentiating between stratus architectures? -djm
-@@ -1203,11 +1191,11 @@
- exit ;;
- R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*)
- if [ -d /usr/nec ]; then
-- echo mips-nec-sysv${UNAME_RELEASE}
-+ echo mips-nec-sysv${UNAME_RELEASE}
- else
-- echo mips-unknown-sysv${UNAME_RELEASE}
-+ echo mips-unknown-sysv${UNAME_RELEASE}
- fi
-- exit ;;
-+ exit ;;
- BeBox:BeOS:*:*) # BeOS running on hardware made by Be, PPC only.
- echo powerpc-be-beos
- exit ;;
-@@ -1220,6 +1208,9 @@
- BePC:Haiku:*:*) # Haiku running on Intel PC compatible.
- echo i586-pc-haiku
- exit ;;
-+ x86_64:Haiku:*:*)
-+ echo x86_64-unknown-haiku
-+ exit ;;
- SX-4:SUPER-UX:*:*)
- echo sx4-nec-superux${UNAME_RELEASE}
- exit ;;
-@@ -1247,6 +1238,16 @@
- *:Darwin:*:*)
- UNAME_PROCESSOR=`uname -p` || UNAME_PROCESSOR=unknown
- case $UNAME_PROCESSOR in
-+ i386)
-+ eval $set_cc_for_build
-+ if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then
-+ if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') | \
-+ (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \
-+ grep IS_64BIT_ARCH >/dev/null
-+ then
-+ UNAME_PROCESSOR="x86_64"
-+ fi
-+ fi ;;
- unknown) UNAME_PROCESSOR=powerpc ;;
- esac
- echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE}
-@@ -1262,7 +1263,10 @@
- *:QNX:*:4*)
- echo i386-pc-qnx
- exit ;;
-- NSE-?:NONSTOP_KERNEL:*:*)
-+ NEO-?:NONSTOP_KERNEL:*:*)
-+ echo neo-tandem-nsk${UNAME_RELEASE}
-+ exit ;;
-+ NSE-*:NONSTOP_KERNEL:*:*)
- echo nse-tandem-nsk${UNAME_RELEASE}
- exit ;;
- NSR-?:NONSTOP_KERNEL:*:*)
-@@ -1307,13 +1311,13 @@
- echo pdp10-unknown-its
- exit ;;
- SEI:*:*:SEIUX)
-- echo mips-sei-seiux${UNAME_RELEASE}
-+ echo mips-sei-seiux${UNAME_RELEASE}
- exit ;;
- *:DragonFly:*:*)
- echo ${UNAME_MACHINE}-unknown-dragonfly`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`
- exit ;;
- *:*VMS:*:*)
-- UNAME_MACHINE=`(uname -p) 2>/dev/null`
-+ UNAME_MACHINE=`(uname -p) 2>/dev/null`
- case "${UNAME_MACHINE}" in
- A*) echo alpha-dec-vms ; exit ;;
- I*) echo ia64-dec-vms ; exit ;;
-@@ -1331,11 +1335,11 @@
- i*86:AROS:*:*)
- echo ${UNAME_MACHINE}-pc-aros
- exit ;;
-+ x86_64:VMkernel:*:*)
-+ echo ${UNAME_MACHINE}-unknown-esx
-+ exit ;;
- esac
-
--#echo '(No uname command or uname output not recognized.)' 1>&2
--#echo "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" 1>&2
--
- eval $set_cc_for_build
- cat >$dummy.c <
- printf ("m68k-sony-newsos%s\n",
- #ifdef NEWSOS4
-- "4"
-+ "4"
- #else
-- ""
-+ ""
- #endif
-- ); exit (0);
-+ ); exit (0);
- #endif
- #endif
-
-diff -urN fribidi-0.19.4/config.sub fribidi-0.19.4-aarch64/config.sub
---- fribidi-0.19.4/config.sub 2012-08-25 16:40:38.000000000 -0500
-+++ fribidi-0.19.4-aarch64/config.sub 2013-03-03 04:48:11.659618287 -0600
-@@ -1,10 +1,10 @@
- #! /bin/sh
- # Configuration validation subroutine script.
- # Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
--# 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009
--# Free Software Foundation, Inc.
-+# 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010,
-+# 2011, 2012 Free Software Foundation, Inc.
-
--timestamp='2009-06-11'
-+timestamp='2012-10-10'
-
- # This file is (in principle) common to ALL GNU software.
- # The presence of a machine in this file suggests that SOME GNU software
-@@ -21,9 +21,7 @@
- # GNU General Public License for more details.
- #
- # You should have received a copy of the GNU General Public License
--# along with this program; if not, write to the Free Software
--# Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA
--# 02110-1301, USA.
-+# along with this program; if not, see .
- #
- # As a special exception to the GNU General Public License, if you
- # distribute this file as part of a program that contains a
-@@ -32,13 +30,16 @@
-
-
- # Please send patches to . Submit a context
--# diff and a properly formatted ChangeLog entry.
-+# diff and a properly formatted GNU ChangeLog entry.
- #
- # Configuration subroutine to validate and canonicalize a configuration type.
- # Supply the specified configuration type as an argument.
- # If it is invalid, we print an error message on stderr and exit with code 1.
- # Otherwise, we print the canonical config type on stdout and succeed.
-
-+# You can get the latest version of this script from:
-+# http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub;hb=HEAD
-+
- # This file is supposed to be the same for all GNU packages
- # and recognize all the CPU types, system types and aliases
- # that are meaningful with *any* GNU software.
-@@ -72,8 +73,9 @@
- version="\
- GNU config.sub ($timestamp)
-
--Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001,
--2002, 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
-+Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000,
-+2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012
-+Free Software Foundation, Inc.
-
- This is free software; see the source for copying conditions. There is NO
- warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
-@@ -120,13 +122,18 @@
- # Here we must recognize all the valid KERNEL-OS combinations.
- maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'`
- case $maybe_os in
-- nto-qnx* | linux-gnu* | linux-dietlibc | linux-newlib* | linux-uclibc* | \
-- uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* | \
-+ nto-qnx* | linux-gnu* | linux-android* | linux-dietlibc | linux-newlib* | \
-+ linux-musl* | linux-uclibc* | uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | \
-+ knetbsd*-gnu* | netbsd*-gnu* | \
- kopensolaris*-gnu* | \
- storm-chaos* | os2-emx* | rtmk-nova*)
- os=-$maybe_os
- basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`
- ;;
-+ android-linux)
-+ os=-linux-android
-+ basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`-unknown
-+ ;;
- *)
- basic_machine=`echo $1 | sed 's/-[^-]*$//'`
- if [ $basic_machine != $1 ]
-@@ -149,12 +156,12 @@
- -convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\
- -c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \
- -harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \
-- -apple | -axis | -knuth | -cray)
-+ -apple | -axis | -knuth | -cray | -microblaze*)
- os=
- basic_machine=$1
- ;;
-- -bluegene*)
-- os=-cnk
-+ -bluegene*)
-+ os=-cnk
- ;;
- -sim | -cisco | -oki | -wec | -winbond)
- os=
-@@ -170,10 +177,10 @@
- os=-chorusos
- basic_machine=$1
- ;;
-- -chorusrdb)
-- os=-chorusrdb
-+ -chorusrdb)
-+ os=-chorusrdb
- basic_machine=$1
-- ;;
-+ ;;
- -hiux*)
- os=-hiuxwe2
- ;;
-@@ -218,6 +225,12 @@
- -isc*)
- basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
- ;;
-+ -lynx*178)
-+ os=-lynxos178
-+ ;;
-+ -lynx*5)
-+ os=-lynxos5
-+ ;;
- -lynx*)
- os=-lynxos
- ;;
-@@ -242,20 +255,25 @@
- # Some are omitted here because they have special meanings below.
- 1750a | 580 \
- | a29k \
-+ | aarch64 | aarch64_be \
- | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \
- | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \
- | am33_2.0 \
- | arc | arm | arm[bl]e | arme[lb] | armv[2345] | armv[345][lb] | avr | avr32 \
-+ | be32 | be64 \
- | bfin \
- | c4x | clipper \
- | d10v | d30v | dlx | dsp16xx \
-+ | epiphany \
- | fido | fr30 | frv \
- | h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \
-+ | hexagon \
- | i370 | i860 | i960 | ia64 \
- | ip2k | iq2000 \
-+ | le32 | le64 \
- | lm32 \
- | m32c | m32r | m32rle | m68000 | m68k | m88k \
-- | maxq | mb | microblaze | mcore | mep | metag \
-+ | maxq | mb | microblaze | microblazeel | mcore | mep | metag \
- | mips | mipsbe | mipseb | mipsel | mipsle \
- | mips16 \
- | mips64 | mips64el \
-@@ -278,27 +296,39 @@
- | moxie \
- | mt \
- | msp430 \
-+ | nds32 | nds32le | nds32be \
- | nios | nios2 \
- | ns16k | ns32k \
-+ | open8 \
- | or32 \
- | pdp10 | pdp11 | pj | pjl \
-- | powerpc | powerpc64 | powerpc64le | powerpcle | ppcbe \
-+ | powerpc | powerpc64 | powerpc64le | powerpcle \
- | pyramid \
-+ | rl78 | rx \
- | score \
- | sh | sh[1234] | sh[24]a | sh[24]aeb | sh[23]e | sh[34]eb | sheb | shbe | shle | sh[1234]le | sh3ele \
- | sh64 | sh64le \
- | sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet | sparclite \
- | sparcv8 | sparcv9 | sparcv9b | sparcv9v \
-- | spu | strongarm \
-- | tahoe | thumb | tic4x | tic80 | tron \
-- | v850 | v850e \
-+ | spu \
-+ | tahoe | tic4x | tic54x | tic55x | tic6x | tic80 | tron \
-+ | ubicom32 \
-+ | v850 | v850e | v850e1 | v850e2 | v850es | v850e2v3 \
- | we32k \
-- | x86 | xc16x | xscale | xscalee[bl] | xstormy16 | xtensa \
-+ | x86 | xc16x | xstormy16 | xtensa \
- | z8k | z80)
- basic_machine=$basic_machine-unknown
- ;;
-- m6811 | m68hc11 | m6812 | m68hc12)
-- # Motorola 68HC11/12.
-+ c54x)
-+ basic_machine=tic54x-unknown
-+ ;;
-+ c55x)
-+ basic_machine=tic55x-unknown
-+ ;;
-+ c6x)
-+ basic_machine=tic6x-unknown
-+ ;;
-+ m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x | picochip)
- basic_machine=$basic_machine-unknown
- os=-none
- ;;
-@@ -308,6 +338,21 @@
- basic_machine=mt-unknown
- ;;
-
-+ strongarm | thumb | xscale)
-+ basic_machine=arm-unknown
-+ ;;
-+ xgate)
-+ basic_machine=$basic_machine-unknown
-+ os=-none
-+ ;;
-+ xscaleeb)
-+ basic_machine=armeb-unknown
-+ ;;
-+
-+ xscaleel)
-+ basic_machine=armel-unknown
-+ ;;
-+
- # We use `pc' rather than `unknown'
- # because (1) that's what they normally are, and
- # (2) the word "unknown" tends to confuse beginning users.
-@@ -322,25 +367,30 @@
- # Recognize the basic CPU types with company name.
- 580-* \
- | a29k-* \
-+ | aarch64-* | aarch64_be-* \
- | alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \
- | alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \
- | alphapca5[67]-* | alpha64pca5[67]-* | arc-* \
- | arm-* | armbe-* | armle-* | armeb-* | armv*-* \
- | avr-* | avr32-* \
-+ | be32-* | be64-* \
- | bfin-* | bs2000-* \
-- | c[123]* | c30-* | [cjt]90-* | c4x-* | c54x-* | c55x-* | c6x-* \
-+ | c[123]* | c30-* | [cjt]90-* | c4x-* \
- | clipper-* | craynv-* | cydra-* \
- | d10v-* | d30v-* | dlx-* \
- | elxsi-* \
- | f30[01]-* | f700-* | fido-* | fr30-* | frv-* | fx80-* \
- | h8300-* | h8500-* \
- | hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \
-+ | hexagon-* \
- | i*86-* | i860-* | i960-* | ia64-* \
- | ip2k-* | iq2000-* \
-+ | le32-* | le64-* \
- | lm32-* \
- | m32c-* | m32r-* | m32rle-* \
- | m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \
- | m88110-* | m88k-* | maxq-* | mcore-* | metag-* \
-+ | microblaze-* | microblazeel-* \
- | mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \
- | mips16-* \
- | mips64-* | mips64el-* \
-@@ -362,24 +412,29 @@
- | mmix-* \
- | mt-* \
- | msp430-* \
-+ | nds32-* | nds32le-* | nds32be-* \
- | nios-* | nios2-* \
- | none-* | np1-* | ns16k-* | ns32k-* \
-+ | open8-* \
- | orion-* \
- | pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \
-- | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* | ppcbe-* \
-+ | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* \
- | pyramid-* \
-- | romp-* | rs6000-* \
-+ | rl78-* | romp-* | rs6000-* | rx-* \
- | sh-* | sh[1234]-* | sh[24]a-* | sh[24]aeb-* | sh[23]e-* | sh[34]eb-* | sheb-* | shbe-* \
- | shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \
- | sparc-* | sparc64-* | sparc64b-* | sparc64v-* | sparc86x-* | sparclet-* \
- | sparclite-* \
-- | sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | strongarm-* | sv1-* | sx?-* \
-- | tahoe-* | thumb-* \
-- | tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* | tile-* \
-+ | sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | sv1-* | sx?-* \
-+ | tahoe-* \
-+ | tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \
-+ | tile*-* \
- | tron-* \
-- | v850-* | v850e-* | vax-* \
-+ | ubicom32-* \
-+ | v850-* | v850e-* | v850e1-* | v850es-* | v850e2-* | v850e2v3-* \
-+ | vax-* \
- | we32k-* \
-- | x86-* | x86_64-* | xc16x-* | xps100-* | xscale-* | xscalee[bl]-* \
-+ | x86-* | x86_64-* | xc16x-* | xps100-* \
- | xstormy16-* | xtensa*-* \
- | ymp-* \
- | z8k-* | z80-*)
-@@ -404,7 +459,7 @@
- basic_machine=a29k-amd
- os=-udi
- ;;
-- abacus)
-+ abacus)
- basic_machine=abacus-unknown
- ;;
- adobe68k)
-@@ -474,11 +529,20 @@
- basic_machine=powerpc-ibm
- os=-cnk
- ;;
-+ c54x-*)
-+ basic_machine=tic54x-`echo $basic_machine | sed 's/^[^-]*-//'`
-+ ;;
-+ c55x-*)
-+ basic_machine=tic55x-`echo $basic_machine | sed 's/^[^-]*-//'`
-+ ;;
-+ c6x-*)
-+ basic_machine=tic6x-`echo $basic_machine | sed 's/^[^-]*-//'`
-+ ;;
- c90)
- basic_machine=c90-cray
- os=-unicos
- ;;
-- cegcc)
-+ cegcc)
- basic_machine=arm-unknown
- os=-cegcc
- ;;
-@@ -510,7 +574,7 @@
- basic_machine=craynv-cray
- os=-unicosmp
- ;;
-- cr16)
-+ cr16 | cr16-*)
- basic_machine=cr16-unknown
- os=-elf
- ;;
-@@ -668,7 +732,6 @@
- i370-ibm* | ibm*)
- basic_machine=i370-ibm
- ;;
--# I'm not sure what "Sysv32" means. Should this be sysv3.2?
- i*86v32)
- basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
- os=-sysv32
-@@ -726,6 +789,13 @@
- basic_machine=ns32k-utek
- os=-sysv
- ;;
-+ microblaze*)
-+ basic_machine=microblaze-xilinx
-+ ;;
-+ mingw64)
-+ basic_machine=x86_64-pc
-+ os=-mingw64
-+ ;;
- mingw32)
- basic_machine=i386-pc
- os=-mingw32
-@@ -762,10 +832,18 @@
- ms1-*)
- basic_machine=`echo $basic_machine | sed -e 's/ms1-/mt-/'`
- ;;
-+ msys)
-+ basic_machine=i386-pc
-+ os=-msys
-+ ;;
- mvs)
- basic_machine=i370-ibm
- os=-mvs
- ;;
-+ nacl)
-+ basic_machine=le32-unknown
-+ os=-nacl
-+ ;;
- ncr3000)
- basic_machine=i486-ncr
- os=-sysv4
-@@ -830,6 +908,12 @@
- np1)
- basic_machine=np1-gould
- ;;
-+ neo-tandem)
-+ basic_machine=neo-tandem
-+ ;;
-+ nse-tandem)
-+ basic_machine=nse-tandem
-+ ;;
- nsr-tandem)
- basic_machine=nsr-tandem
- ;;
-@@ -912,9 +996,10 @@
- ;;
- power) basic_machine=power-ibm
- ;;
-- ppc) basic_machine=powerpc-unknown
-+ ppc | ppcbe) basic_machine=powerpc-unknown
- ;;
-- ppc-*) basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'`
-+ ppc-* | ppcbe-*)
-+ basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'`
- ;;
- ppcle | powerpclittle | ppc-le | powerpc-little)
- basic_machine=powerpcle-unknown
-@@ -1008,6 +1093,9 @@
- basic_machine=i860-stratus
- os=-sysv4
- ;;
-+ strongarm-* | thumb-*)
-+ basic_machine=arm-`echo $basic_machine | sed 's/^[^-]*-//'`
-+ ;;
- sun2)
- basic_machine=m68000-sun
- ;;
-@@ -1064,20 +1152,8 @@
- basic_machine=t90-cray
- os=-unicos
- ;;
-- tic54x | c54x*)
-- basic_machine=tic54x-unknown
-- os=-coff
-- ;;
-- tic55x | c55x*)
-- basic_machine=tic55x-unknown
-- os=-coff
-- ;;
-- tic6x | c6x*)
-- basic_machine=tic6x-unknown
-- os=-coff
-- ;;
- tile*)
-- basic_machine=tile-unknown
-+ basic_machine=$basic_machine-unknown
- os=-linux-gnu
- ;;
- tx39)
-@@ -1147,6 +1223,9 @@
- xps | xps100)
- basic_machine=xps100-honeywell
- ;;
-+ xscale-* | xscalee[bl]-*)
-+ basic_machine=`echo $basic_machine | sed 's/^xscale/arm/'`
-+ ;;
- ymp)
- basic_machine=ymp-cray
- os=-unicos
-@@ -1244,9 +1323,12 @@
- if [ x"$os" != x"" ]
- then
- case $os in
-- # First match some system type aliases
-- # that might get confused with valid system types.
-+ # First match some system type aliases
-+ # that might get confused with valid system types.
- # -solaris* is a basic system type, with this one exception.
-+ -auroraux)
-+ os=-auroraux
-+ ;;
- -solaris1 | -solaris1.*)
- os=`echo $os | sed -e 's|solaris1|sunos4|'`
- ;;
-@@ -1268,21 +1350,22 @@
- # -sysv* is not here because it comes later, after sysvr4.
- -gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \
- | -*vms* | -sco* | -esix* | -isc* | -aix* | -cnk* | -sunos | -sunos[34]*\
-- | -hpux* | -unos* | -osf* | -luna* | -dgux* | -solaris* | -sym* \
-- | -kopensolaris* \
-+ | -hpux* | -unos* | -osf* | -luna* | -dgux* | -auroraux* | -solaris* \
-+ | -sym* | -kopensolaris* \
- | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \
- | -aos* | -aros* \
- | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \
- | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \
- | -hiux* | -386bsd* | -knetbsd* | -mirbsd* | -netbsd* \
-- | -openbsd* | -solidbsd* \
-+ | -bitrig* | -openbsd* | -solidbsd* \
- | -ekkobsd* | -kfreebsd* | -freebsd* | -riscix* | -lynxos* \
- | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \
- | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \
- | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \
- | -chorusos* | -chorusrdb* | -cegcc* \
-- | -cygwin* | -pe* | -psos* | -moss* | -proelf* | -rtems* \
-- | -mingw32* | -linux-gnu* | -linux-newlib* | -linux-uclibc* \
-+ | -cygwin* | -msys* | -pe* | -psos* | -moss* | -proelf* | -rtems* \
-+ | -mingw32* | -mingw64* | -linux-gnu* | -linux-android* \
-+ | -linux-newlib* | -linux-musl* | -linux-uclibc* \
- | -uxpv* | -beos* | -mpeix* | -udk* \
- | -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \
- | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \
-@@ -1290,7 +1373,7 @@
- | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \
- | -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \
- | -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \
-- | -skyos* | -haiku* | -rdos* | -toppers* | -drops*)
-+ | -skyos* | -haiku* | -rdos* | -toppers* | -drops* | -es*)
- # Remember, each alternative MUST END IN *, to match a version number.
- ;;
- -qnx*)
-@@ -1329,7 +1412,7 @@
- -opened*)
- os=-openedition
- ;;
-- -os400*)
-+ -os400*)
- os=-os400
- ;;
- -wince*)
-@@ -1378,7 +1461,7 @@
- -sinix*)
- os=-sysv4
- ;;
-- -tpf*)
-+ -tpf*)
- os=-tpf
- ;;
- -triton*)
-@@ -1423,6 +1506,8 @@
- -dicos*)
- os=-dicos
- ;;
-+ -nacl*)
-+ ;;
- -none)
- ;;
- *)
-@@ -1445,10 +1530,10 @@
- # system, and we'll never get to this point.
-
- case $basic_machine in
-- score-*)
-+ score-*)
- os=-elf
- ;;
-- spu-*)
-+ spu-*)
- os=-elf
- ;;
- *-acorn)
-@@ -1460,8 +1545,20 @@
- arm*-semi)
- os=-aout
- ;;
-- c4x-* | tic4x-*)
-- os=-coff
-+ c4x-* | tic4x-*)
-+ os=-coff
-+ ;;
-+ hexagon-*)
-+ os=-elf
-+ ;;
-+ tic54x-*)
-+ os=-coff
-+ ;;
-+ tic55x-*)
-+ os=-coff
-+ ;;
-+ tic6x-*)
-+ os=-coff
- ;;
- # This must come before the *-dec entry.
- pdp10-*)
-@@ -1481,14 +1578,11 @@
- ;;
- m68000-sun)
- os=-sunos3
-- # This also exists in the configure program, but was not the
-- # default.
-- # os=-sunos4
- ;;
- m68*-cisco)
- os=-aout
- ;;
-- mep-*)
-+ mep-*)
- os=-elf
- ;;
- mips*-cisco)
-@@ -1515,7 +1609,7 @@
- *-ibm)
- os=-aix
- ;;
-- *-knuth)
-+ *-knuth)
- os=-mmixware
- ;;
- *-wec)
diff --git a/fribidi-drop-bundled-gnulib.patch b/fribidi-drop-bundled-gnulib.patch
new file mode 100644
index 0000000..1315922
--- /dev/null
+++ b/fribidi-drop-bundled-gnulib.patch
@@ -0,0 +1,1873 @@
+diff -pruN fribidi-1.0.14.orig/bin/Makefile.am fribidi-1.0.14/bin/Makefile.am
+--- fribidi-1.0.14.orig/bin/Makefile.am 2020-07-06 04:17:23.000000000 +0900
++++ fribidi-1.0.14/bin/Makefile.am 2024-05-07 21:40:04.500166714 +0900
+@@ -2,11 +2,9 @@ bin_PROGRAMS = fribidi
+
+ noinst_PROGRAMS = fribidi-benchmark fribidi-bidi-types fribidi-caprtl2utf8
+
+-getopt_SOURCES = getopt.c getopt1.c getopt_int.h getopt.h gettext.h
++fribidi_SOURCES = fribidi-main.c
+
+-fribidi_SOURCES = fribidi-main.c $(getopt_SOURCES)
+-
+-fribidi_benchmark_SOURCES = fribidi-benchmark.c $(getopt_SOURCES)
++fribidi_benchmark_SOURCES = fribidi-benchmark.c
+
+ AM_CPPFLAGS = \
+ @FRIBIDI_CPPFLAGS@ \
+diff -pruN fribidi-1.0.14.orig/bin/getopt.c fribidi-1.0.14/bin/getopt.c
+--- fribidi-1.0.14.orig/bin/getopt.c 2015-08-05 03:49:07.000000000 +0900
++++ fribidi-1.0.14/bin/getopt.c 1970-01-01 09:00:00.000000000 +0900
+@@ -1,1268 +0,0 @@
+-/* Getopt for GNU.
+- NOTE: getopt is now part of the C library, so if you don't know what
+- "Keep this file name-space clean" means, talk to drepper@gnu.org
+- before changing it!
+- Copyright (C) 1987,88,89,90,91,92,93,94,95,96,98,99,2000,2001,2002,2003,2004
+- Free Software Foundation, Inc.
+- This file is part of the GNU C Library.
+-
+- This program is free software; you can redistribute it and/or modify
+- it under the terms of the GNU General Public License as published by
+- the Free Software Foundation; either version 2, or (at your option)
+- any later version.
+-
+- This program is distributed in the hope that it will be useful,
+- but WITHOUT ANY WARRANTY; without even the implied warranty of
+- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+- GNU General Public License for more details.
+-
+- You should have received a copy of the GNU General Public License along
+- with this program; if not, write to the Free Software Foundation,
+- Inc., 59 Temple Place - Suite 330, Boston, MA 02110-1301, USA. */
+-
+-/* This tells Alpha OSF/1 not to define a getopt prototype in .
+- Ditto for AIX 3.2 and . */
+-#ifndef _NO_PROTO
+-# define _NO_PROTO
+-#endif
+-
+-#ifdef HAVE_CONFIG_H
+-# include
+-#endif
+-
+-#include
+-
+-/* Comment out all this code if we are using the GNU C Library, and are not
+- actually compiling the library itself. This code is part of the GNU C
+- Library, but also included in many other GNU distributions. Compiling
+- and linking in this code is a waste when using the GNU C library
+- (especially if it is a shared library). Rather than having every GNU
+- program understand `configure --with-gnu-libc' and omit the object files,
+- it is simpler to just do this in the source for each such file. */
+-
+-#define GETOPT_INTERFACE_VERSION 2
+-#if !defined _LIBC && defined __GLIBC__ && __GLIBC__ >= 2
+-# include
+-# if _GNU_GETOPT_INTERFACE_VERSION == GETOPT_INTERFACE_VERSION
+-# define ELIDE_CODE
+-# endif
+-#endif
+-
+-#ifndef ELIDE_CODE
+-
+-
+-/* This needs to come after some library #include
+- to get __GNU_LIBRARY__ defined. */
+-#ifdef __GNU_LIBRARY__
+-/* Don't include stdlib.h for non-GNU C libraries because some of them
+- contain conflicting prototypes for getopt. */
+-# include
+-# include
+-#endif /* GNU C library. */
+-
+-#include
+-
+-#ifdef VMS
+-# include
+-#endif
+-
+-#ifdef _LIBC
+-# include
+-#else
+-# include "gettext.h"
+-# define _(msgid) gettext (msgid)
+-#endif
+-
+-#if defined _LIBC && defined USE_IN_LIBIO
+-# include
+-#endif
+-
+-#ifndef attribute_hidden
+-# define attribute_hidden
+-#endif
+-
+-/* This version of `getopt' appears to the caller like standard Unix `getopt'
+- but it behaves differently for the user, since it allows the user
+- to intersperse the options with the other arguments.
+-
+- As `getopt' works, it permutes the elements of ARGV so that,
+- when it is done, all the options precede everything else. Thus
+- all application programs are extended to handle flexible argument order.
+-
+- Setting the environment variable POSIXLY_CORRECT disables permutation.
+- Then the behavior is completely standard.
+-
+- GNU application programs can use a third alternative mode in which
+- they can distinguish the relative order of options and other arguments. */
+-
+-#include "getopt.h"
+-#include "getopt_int.h"
+-
+-/* For communication from `getopt' to the caller.
+- When `getopt' finds an option that takes an argument,
+- the argument value is returned here.
+- Also, when `ordering' is RETURN_IN_ORDER,
+- each non-option ARGV-element is returned here. */
+-
+-char *optarg;
+-
+-/* Index in ARGV of the next element to be scanned.
+- This is used for communication to and from the caller
+- and for communication between successive calls to `getopt'.
+-
+- On entry to `getopt', zero means this is the first call; initialize.
+-
+- When `getopt' returns -1, this is the index of the first of the
+- non-option elements that the caller should itself scan.
+-
+- Otherwise, `optind' communicates from one call to the next
+- how much of ARGV has been scanned so far. */
+-
+-/* 1003.2 says this must be 1 before any call. */
+-int optind = 1;
+-
+-/* Callers store zero here to inhibit the error message
+- for unrecognized options. */
+-
+-int opterr = 1;
+-
+-/* Set to an option character which was unrecognized.
+- This must be initialized on some systems to avoid linking in the
+- system's own getopt implementation. */
+-
+-int optopt = '?';
+-
+-/* Keep a global copy of all internal members of getopt_data. */
+-
+-static struct _getopt_data getopt_data;
+-
+-
+-#ifndef __GNU_LIBRARY__
+-
+-/* Avoid depending on library functions or files
+- whose names are inconsistent. */
+-
+-#ifndef getenv
+-extern char *getenv (
+-);
+-#endif
+-
+-#endif /* not __GNU_LIBRARY__ */
+-
+-#ifdef _LIBC
+-/* Stored original parameters.
+- XXX This is no good solution. We should rather copy the args so
+- that we can compare them later. But we must not use malloc(3). */
+-extern int __libc_argc;
+-extern char **__libc_argv;
+-
+-/* Bash 2.0 gives us an environment variable containing flags
+- indicating ARGV elements that should not be considered arguments. */
+-
+-# ifdef USE_NONOPTION_FLAGS
+-/* Defined in getopt_init.c */
+-extern char *__getopt_nonoption_flags;
+-# endif
+-
+-# ifdef USE_NONOPTION_FLAGS
+-# define SWAP_FLAGS(ch1, ch2) \
+- if (d->__nonoption_flags_len > 0) \
+- { \
+- char __tmp = __getopt_nonoption_flags[ch1]; \
+- __getopt_nonoption_flags[ch1] = __getopt_nonoption_flags[ch2]; \
+- __getopt_nonoption_flags[ch2] = __tmp; \
+- }
+-# else
+-# define SWAP_FLAGS(ch1, ch2)
+-# endif
+-#else /* !_LIBC */
+-# define SWAP_FLAGS(ch1, ch2)
+-#endif /* _LIBC */
+-
+-/* Exchange two adjacent subsequences of ARGV.
+- One subsequence is elements [first_nonopt,last_nonopt)
+- which contains all the non-options that have been skipped so far.
+- The other is elements [last_nonopt,optind), which contains all
+- the options processed since those non-options were skipped.
+-
+- `first_nonopt' and `last_nonopt' are relocated so that they describe
+- the new indices of the non-options in ARGV after they are moved. */
+-
+-static void
+-exchange (
+- char **argv,
+- struct _getopt_data *d
+-)
+-{
+- int bottom = d->__first_nonopt;
+- int middle = d->__last_nonopt;
+- int top = d->optind;
+- char *tem;
+-
+- /* Exchange the shorter segment with the far end of the longer segment.
+- That puts the shorter segment into the right place.
+- It leaves the longer segment in the right place overall,
+- but it consists of two parts that need to be swapped next. */
+-
+-#if defined _LIBC && defined USE_NONOPTION_FLAGS
+- /* First make sure the handling of the `__getopt_nonoption_flags'
+- string can work normally. Our top argument must be in the range
+- of the string. */
+- if (d->__nonoption_flags_len > 0 && top >= d->__nonoption_flags_max_len)
+- {
+- /* We must extend the array. The user plays games with us and
+- presents new arguments. */
+- char *new_str = malloc (top + 1);
+- if (new_str == NULL)
+- d->__nonoption_flags_len = d->__nonoption_flags_max_len = 0;
+- else
+- {
+- memset (__mempcpy (new_str, __getopt_nonoption_flags,
+- d->__nonoption_flags_max_len),
+- '\0', top + 1 - d->__nonoption_flags_max_len);
+- d->__nonoption_flags_max_len = top + 1;
+- __getopt_nonoption_flags = new_str;
+- }
+- }
+-#endif
+-
+- while (top > middle && middle > bottom)
+- {
+- if (top - middle > middle - bottom)
+- {
+- /* Bottom segment is the short one. */
+- int len = middle - bottom;
+- register int i;
+-
+- /* Swap it with the top part of the top segment. */
+- for (i = 0; i < len; i++)
+- {
+- tem = argv[bottom + i];
+- argv[bottom + i] = argv[top - (middle - bottom) + i];
+- argv[top - (middle - bottom) + i] = tem;
+- SWAP_FLAGS (bottom + i, top - (middle - bottom) + i);
+- }
+- /* Exclude the moved bottom segment from further swapping. */
+- top -= len;
+- }
+- else
+- {
+- /* Top segment is the short one. */
+- int len = top - middle;
+- register int i;
+-
+- /* Swap it with the bottom part of the bottom segment. */
+- for (i = 0; i < len; i++)
+- {
+- tem = argv[bottom + i];
+- argv[bottom + i] = argv[middle + i];
+- argv[middle + i] = tem;
+- SWAP_FLAGS (bottom + i, middle + i);
+- }
+- /* Exclude the moved top segment from further swapping. */
+- bottom += len;
+- }
+- }
+-
+- /* Update records for the slots the non-options now occupy. */
+-
+- d->__first_nonopt += (d->optind - d->__last_nonopt);
+- d->__last_nonopt = d->optind;
+-}
+-
+-/* Initialize the internal data when the first call is made. */
+-
+-static const char *
+-_getopt_initialize (
+- int argc,
+- char *const *argv,
+- const char *optstring,
+- struct _getopt_data *d
+-)
+-{
+- /* Start processing options with ARGV-element 1 (since ARGV-element 0
+- is the program name); the sequence of previously skipped
+- non-option ARGV-elements is empty. */
+-
+- d->__first_nonopt = d->__last_nonopt = d->optind;
+-
+- d->__nextchar = NULL;
+-
+- d->__posixly_correct = !!getenv ("POSIXLY_CORRECT");
+-
+- /* Determine how to handle the ordering of options and nonoptions. */
+-
+- if (optstring[0] == '-')
+- {
+- d->__ordering = RETURN_IN_ORDER;
+- ++optstring;
+- }
+- else if (optstring[0] == '+')
+- {
+- d->__ordering = REQUIRE_ORDER;
+- ++optstring;
+- }
+- else if (d->__posixly_correct)
+- d->__ordering = REQUIRE_ORDER;
+- else
+- d->__ordering = PERMUTE;
+-
+-#if defined _LIBC && defined USE_NONOPTION_FLAGS
+- if (!d->__posixly_correct && argc == __libc_argc && argv == __libc_argv)
+- {
+- if (d->__nonoption_flags_max_len == 0)
+- {
+- if (__getopt_nonoption_flags == NULL
+- || __getopt_nonoption_flags[0] == '\0')
+- d->__nonoption_flags_max_len = -1;
+- else
+- {
+- const char *orig_str = __getopt_nonoption_flags;
+- int len = d->__nonoption_flags_max_len = strlen (orig_str);
+- if (d->__nonoption_flags_max_len < argc)
+- d->__nonoption_flags_max_len = argc;
+- __getopt_nonoption_flags =
+- (char *) malloc (d->__nonoption_flags_max_len);
+- if (__getopt_nonoption_flags == NULL)
+- d->__nonoption_flags_max_len = -1;
+- else
+- memset (__mempcpy (__getopt_nonoption_flags, orig_str, len),
+- '\0', d->__nonoption_flags_max_len - len);
+- }
+- }
+- d->__nonoption_flags_len = d->__nonoption_flags_max_len;
+- }
+- else
+- d->__nonoption_flags_len = 0;
+-#endif
+-
+- return optstring;
+-}
+-
+-/* Scan elements of ARGV (whose length is ARGC) for option characters
+- given in OPTSTRING.
+-
+- If an element of ARGV starts with '-', and is not exactly "-" or "--",
+- then it is an option element. The characters of this element
+- (aside from the initial '-') are option characters. If `getopt'
+- is called repeatedly, it returns successively each of the option characters
+- from each of the option elements.
+-
+- If `getopt' finds another option character, it returns that character,
+- updating `optind' and `nextchar' so that the next call to `getopt' can
+- resume the scan with the following option character or ARGV-element.
+-
+- If there are no more option characters, `getopt' returns -1.
+- Then `optind' is the index in ARGV of the first ARGV-element
+- that is not an option. (The ARGV-elements have been permuted
+- so that those that are not options now come last.)
+-
+- OPTSTRING is a string containing the legitimate option characters.
+- If an option character is seen that is not listed in OPTSTRING,
+- return '?' after printing an error message. If you set `opterr' to
+- zero, the error message is suppressed but we still return '?'.
+-
+- If a char in OPTSTRING is followed by a colon, that means it wants an arg,
+- so the following text in the same ARGV-element, or the text of the following
+- ARGV-element, is returned in `optarg'. Two colons mean an option that
+- wants an optional arg; if there is text in the current ARGV-element,
+- it is returned in `optarg', otherwise `optarg' is set to zero.
+-
+- If OPTSTRING starts with `-' or `+', it requests different methods of
+- handling the non-option ARGV-elements.
+- See the comments about RETURN_IN_ORDER and REQUIRE_ORDER, above.
+-
+- Long-named options begin with `--' instead of `-'.
+- Their names may be abbreviated as long as the abbreviation is unique
+- or is an exact match for some defined option. If they have an
+- argument, it follows the option name in the same ARGV-element, separated
+- from the option name by a `=', or else the in next ARGV-element.
+- When `getopt' finds a long-named option, it returns 0 if that option's
+- `flag' field is nonzero, the value of the option's `val' field
+- if the `flag' field is zero.
+-
+- The elements of ARGV aren't really const, because we permute them.
+- But we pretend they're const in the prototype to be compatible
+- with other systems.
+-
+- LONGOPTS is a vector of `struct option' terminated by an
+- element containing a name which is zero.
+-
+- LONGIND returns the index in LONGOPT of the long-named option found.
+- It is only valid when a long-named option has been found by the most
+- recent call.
+-
+- If LONG_ONLY is nonzero, '-' as well as '--' can introduce
+- long-named options. */
+-
+-int
+-_getopt_internal_r (
+- int argc,
+- char *const *argv,
+- const char *optstring,
+- const struct option *longopts,
+- int *longind,
+- int long_only,
+- struct _getopt_data *d
+-)
+-{
+- int print_errors = d->opterr;
+- if (optstring[0] == ':')
+- print_errors = 0;
+-
+- if (argc < 1)
+- return -1;
+-
+- d->optarg = NULL;
+-
+- if (d->optind == 0 || !d->__initialized)
+- {
+- if (d->optind == 0)
+- d->optind = 1; /* Don't scan ARGV[0], the program name. */
+- optstring = _getopt_initialize (argc, argv, optstring, d);
+- d->__initialized = 1;
+- }
+-
+- /* Test whether ARGV[optind] points to a non-option argument.
+- Either it does not have option syntax, or there is an environment flag
+- from the shell indicating it is not an option. The later information
+- is only used when the used in the GNU libc. */
+-#if defined _LIBC && defined USE_NONOPTION_FLAGS
+-# define NONOPTION_P (argv[d->optind][0] != '-' || argv[d->optind][1] == '\0' \
+- || (d->optind < d->__nonoption_flags_len \
+- && __getopt_nonoption_flags[d->optind] == '1'))
+-#else
+-# define NONOPTION_P (argv[d->optind][0] != '-' || argv[d->optind][1] == '\0')
+-#endif
+-
+- if (d->__nextchar == NULL || *d->__nextchar == '\0')
+- {
+- /* Advance to the next ARGV-element. */
+-
+- /* Give FIRST_NONOPT & LAST_NONOPT rational values if OPTIND has been
+- moved back by the user (who may also have changed the arguments). */
+- if (d->__last_nonopt > d->optind)
+- d->__last_nonopt = d->optind;
+- if (d->__first_nonopt > d->optind)
+- d->__first_nonopt = d->optind;
+-
+- if (d->__ordering == PERMUTE)
+- {
+- /* If we have just processed some options following some non-options,
+- exchange them so that the options come first. */
+-
+- if (d->__first_nonopt != d->__last_nonopt
+- && d->__last_nonopt != d->optind)
+- exchange ((char **) argv, d);
+- else if (d->__last_nonopt != d->optind)
+- d->__first_nonopt = d->optind;
+-
+- /* Skip any additional non-options
+- and extend the range of non-options previously skipped. */
+-
+- while (d->optind < argc && NONOPTION_P)
+- d->optind++;
+- d->__last_nonopt = d->optind;
+- }
+-
+- /* The special ARGV-element `--' means premature end of options.
+- Skip it like a null option,
+- then exchange with previous non-options as if it were an option,
+- then skip everything else like a non-option. */
+-
+- if (d->optind != argc && !strcmp (argv[d->optind], "--"))
+- {
+- d->optind++;
+-
+- if (d->__first_nonopt != d->__last_nonopt
+- && d->__last_nonopt != d->optind)
+- exchange ((char **) argv, d);
+- else if (d->__first_nonopt == d->__last_nonopt)
+- d->__first_nonopt = d->optind;
+- d->__last_nonopt = argc;
+-
+- d->optind = argc;
+- }
+-
+- /* If we have done all the ARGV-elements, stop the scan
+- and back over any non-options that we skipped and permuted. */
+-
+- if (d->optind == argc)
+- {
+- /* Set the next-arg-index to point at the non-options
+- that we previously skipped, so the caller will digest them. */
+- if (d->__first_nonopt != d->__last_nonopt)
+- d->optind = d->__first_nonopt;
+- return -1;
+- }
+-
+- /* If we have come to a non-option and did not permute it,
+- either stop the scan or describe it to the caller and pass it by. */
+-
+- if (NONOPTION_P)
+- {
+- if (d->__ordering == REQUIRE_ORDER)
+- return -1;
+- d->optarg = argv[d->optind++];
+- return 1;
+- }
+-
+- /* We have found another option-ARGV-element.
+- Skip the initial punctuation. */
+-
+- d->__nextchar = (argv[d->optind] + 1
+- + (longopts != NULL && argv[d->optind][1] == '-'));
+- }
+-
+- /* Decode the current option-ARGV-element. */
+-
+- /* Check whether the ARGV-element is a long option.
+-
+- If long_only and the ARGV-element has the form "-f", where f is
+- a valid short option, don't consider it an abbreviated form of
+- a long option that starts with f. Otherwise there would be no
+- way to give the -f short option.
+-
+- On the other hand, if there's a long option "fubar" and
+- the ARGV-element is "-fu", do consider that an abbreviation of
+- the long option, just like "--fu", and not "-f" with arg "u".
+-
+- This distinction seems to be the most useful approach. */
+-
+- if (longopts != NULL
+- && (argv[d->optind][1] == '-'
+- || (long_only && (argv[d->optind][2]
+- || !strchr (optstring, argv[d->optind][1])))))
+- {
+- char *nameend;
+- const struct option *p;
+- const struct option *pfound = NULL;
+- int exact = 0;
+- int ambig = 0;
+- int indfound = -1;
+- int option_index;
+-
+- for (nameend = d->__nextchar; *nameend && *nameend != '='; nameend++)
+- /* Do nothing. */ ;
+-
+- /* Test all long options for either exact match
+- or abbreviated matches. */
+- for (p = longopts, option_index = 0; p->name; p++, option_index++)
+- if (!strncmp (p->name, d->__nextchar, nameend - d->__nextchar))
+- {
+- if ((unsigned int) (nameend - d->__nextchar)
+- == (unsigned int) strlen (p->name))
+- {
+- /* Exact match found. */
+- pfound = p;
+- indfound = option_index;
+- exact = 1;
+- break;
+- }
+- else if (pfound == NULL)
+- {
+- /* First nonexact match found. */
+- pfound = p;
+- indfound = option_index;
+- }
+- else if (long_only
+- || pfound->has_arg != p->has_arg
+- || pfound->flag != p->flag || pfound->val != p->val)
+- /* Second or later nonexact match found. */
+- ambig = 1;
+- }
+-
+- if (ambig && !exact)
+- {
+- if (print_errors)
+- {
+-#if defined _LIBC && defined USE_IN_LIBIO
+- char *buf;
+-
+- if (__asprintf (&buf, _("%s: option `%s' is ambiguous\n"),
+- argv[0], argv[d->optind]) >= 0)
+- {
+- _IO_flockfile (stderr);
+-
+- int old_flags2 = ((_IO_FILE *) stderr)->_flags2;
+- ((_IO_FILE *) stderr)->_flags2 |= _IO_FLAGS2_NOTCANCEL;
+-
+- if (_IO_fwide (stderr, 0) > 0)
+- __fwprintf (stderr, L"%s", buf);
+- else
+- fputs (buf, stderr);
+-
+- ((_IO_FILE *) stderr)->_flags2 = old_flags2;
+- _IO_funlockfile (stderr);
+-
+- free (buf);
+- }
+-#else
+- fprintf (stderr, _("%s: option `%s' is ambiguous\n"),
+- argv[0], argv[d->optind]);
+-#endif
+- }
+- d->__nextchar += strlen (d->__nextchar);
+- d->optind++;
+- d->optopt = 0;
+- return '?';
+- }
+-
+- if (pfound != NULL)
+- {
+- option_index = indfound;
+- d->optind++;
+- if (*nameend)
+- {
+- /* Don't test has_arg with >, because some C compilers don't
+- allow it to be used on enums. */
+- if (pfound->has_arg)
+- d->optarg = nameend + 1;
+- else
+- {
+- if (print_errors)
+- {
+-#if defined _LIBC && defined USE_IN_LIBIO
+- char *buf;
+- int n;
+-#endif
+-
+- if (argv[d->optind - 1][1] == '-')
+- {
+- /* --option */
+-#if defined _LIBC && defined USE_IN_LIBIO
+- n = __asprintf (&buf, _("\
+-%s: option `--%s' doesn't allow an argument\n"), argv[0], pfound->name);
+-#else
+- fprintf (stderr, _("\
+-%s: option `--%s' doesn't allow an argument\n"), argv[0], pfound->name);
+-#endif
+- }
+- else
+- {
+- /* +option or -option */
+-#if defined _LIBC && defined USE_IN_LIBIO
+- n = __asprintf (&buf, _("\
+-%s: option `%c%s' doesn't allow an argument\n"), argv[0], argv[d->optind - 1][0], pfound->name);
+-#else
+- fprintf (stderr, _("\
+-%s: option `%c%s' doesn't allow an argument\n"), argv[0], argv[d->optind - 1][0], pfound->name);
+-#endif
+- }
+-
+-#if defined _LIBC && defined USE_IN_LIBIO
+- if (n >= 0)
+- {
+- _IO_flockfile (stderr);
+-
+- int old_flags2 = ((_IO_FILE *) stderr)->_flags2;
+- ((_IO_FILE *) stderr)->_flags2
+- |= _IO_FLAGS2_NOTCANCEL;
+-
+- if (_IO_fwide (stderr, 0) > 0)
+- __fwprintf (stderr, L"%s", buf);
+- else
+- fputs (buf, stderr);
+-
+- ((_IO_FILE *) stderr)->_flags2 = old_flags2;
+- _IO_funlockfile (stderr);
+-
+- free (buf);
+- }
+-#endif
+- }
+-
+- d->__nextchar += strlen (d->__nextchar);
+-
+- d->optopt = pfound->val;
+- return '?';
+- }
+- }
+- else if (pfound->has_arg == 1)
+- {
+- if (d->optind < argc)
+- d->optarg = argv[d->optind++];
+- else
+- {
+- if (print_errors)
+- {
+-#if defined _LIBC && defined USE_IN_LIBIO
+- char *buf;
+-
+- if (__asprintf (&buf, _("\
+-%s: option `%s' requires an argument\n"), argv[0], argv[d->optind - 1]) >= 0)
+- {
+- _IO_flockfile (stderr);
+-
+- int old_flags2 = ((_IO_FILE *) stderr)->_flags2;
+- ((_IO_FILE *) stderr)->_flags2
+- |= _IO_FLAGS2_NOTCANCEL;
+-
+- if (_IO_fwide (stderr, 0) > 0)
+- __fwprintf (stderr, L"%s", buf);
+- else
+- fputs (buf, stderr);
+-
+- ((_IO_FILE *) stderr)->_flags2 = old_flags2;
+- _IO_funlockfile (stderr);
+-
+- free (buf);
+- }
+-#else
+- fprintf (stderr,
+- _("%s: option `%s' requires an argument\n"),
+- argv[0], argv[d->optind - 1]);
+-#endif
+- }
+- d->__nextchar += strlen (d->__nextchar);
+- d->optopt = pfound->val;
+- return optstring[0] == ':' ? ':' : '?';
+- }
+- }
+- d->__nextchar += strlen (d->__nextchar);
+- if (longind != NULL)
+- *longind = option_index;
+- if (pfound->flag)
+- {
+- *(pfound->flag) = pfound->val;
+- return 0;
+- }
+- return pfound->val;
+- }
+-
+- /* Can't find it as a long option. If this is not getopt_long_only,
+- or the option starts with '--' or is not a valid short
+- option, then it's an error.
+- Otherwise interpret it as a short option. */
+- if (!long_only || argv[d->optind][1] == '-'
+- || strchr (optstring, *d->__nextchar) == NULL)
+- {
+- if (print_errors)
+- {
+-#if defined _LIBC && defined USE_IN_LIBIO
+- char *buf;
+- int n;
+-#endif
+-
+- if (argv[d->optind][1] == '-')
+- {
+- /* --option */
+-#if defined _LIBC && defined USE_IN_LIBIO
+- n = __asprintf (&buf, _("%s: unrecognized option `--%s'\n"),
+- argv[0], d->__nextchar);
+-#else
+- fprintf (stderr, _("%s: unrecognized option `--%s'\n"),
+- argv[0], d->__nextchar);
+-#endif
+- }
+- else
+- {
+- /* +option or -option */
+-#if defined _LIBC && defined USE_IN_LIBIO
+- n = __asprintf (&buf, _("%s: unrecognized option `%c%s'\n"),
+- argv[0], argv[d->optind][0], d->__nextchar);
+-#else
+- fprintf (stderr, _("%s: unrecognized option `%c%s'\n"),
+- argv[0], argv[d->optind][0], d->__nextchar);
+-#endif
+- }
+-
+-#if defined _LIBC && defined USE_IN_LIBIO
+- if (n >= 0)
+- {
+- _IO_flockfile (stderr);
+-
+- int old_flags2 = ((_IO_FILE *) stderr)->_flags2;
+- ((_IO_FILE *) stderr)->_flags2 |= _IO_FLAGS2_NOTCANCEL;
+-
+- if (_IO_fwide (stderr, 0) > 0)
+- __fwprintf (stderr, L"%s", buf);
+- else
+- fputs (buf, stderr);
+-
+- ((_IO_FILE *) stderr)->_flags2 = old_flags2;
+- _IO_funlockfile (stderr);
+-
+- free (buf);
+- }
+-#endif
+- }
+- d->__nextchar = (char *) "";
+- d->optind++;
+- d->optopt = 0;
+- return '?';
+- }
+- }
+-
+- /* Look at and handle the next short option-character. */
+-
+- {
+- char c = *d->__nextchar++;
+- char *temp = strchr (optstring, c);
+-
+- /* Increment `optind' when we start to process its last character. */
+- if (*d->__nextchar == '\0')
+- ++d->optind;
+-
+- if (temp == NULL || c == ':')
+- {
+- if (print_errors)
+- {
+-#if defined _LIBC && defined USE_IN_LIBIO
+- char *buf;
+- int n;
+-#endif
+-
+- if (d->__posixly_correct)
+- {
+- /* 1003.2 specifies the format of this message. */
+-#if defined _LIBC && defined USE_IN_LIBIO
+- n = __asprintf (&buf, _("%s: illegal option -- %c\n"),
+- argv[0], c);
+-#else
+- fprintf (stderr, _("%s: illegal option -- %c\n"), argv[0], c);
+-#endif
+- }
+- else
+- {
+-#if defined _LIBC && defined USE_IN_LIBIO
+- n = __asprintf (&buf, _("%s: invalid option -- %c\n"),
+- argv[0], c);
+-#else
+- fprintf (stderr, _("%s: invalid option -- %c\n"), argv[0], c);
+-#endif
+- }
+-
+-#if defined _LIBC && defined USE_IN_LIBIO
+- if (n >= 0)
+- {
+- _IO_flockfile (stderr);
+-
+- int old_flags2 = ((_IO_FILE *) stderr)->_flags2;
+- ((_IO_FILE *) stderr)->_flags2 |= _IO_FLAGS2_NOTCANCEL;
+-
+- if (_IO_fwide (stderr, 0) > 0)
+- __fwprintf (stderr, L"%s", buf);
+- else
+- fputs (buf, stderr);
+-
+- ((_IO_FILE *) stderr)->_flags2 = old_flags2;
+- _IO_funlockfile (stderr);
+-
+- free (buf);
+- }
+-#endif
+- }
+- d->optopt = c;
+- return '?';
+- }
+- /* Convenience. Treat POSIX -W foo same as long option --foo */
+- if (temp[0] == 'W' && temp[1] == ';')
+- {
+- char *nameend;
+- const struct option *p;
+- const struct option *pfound = NULL;
+- int exact = 0;
+- int ambig = 0;
+- int indfound = 0;
+- int option_index;
+-
+- /* This is an option that requires an argument. */
+- if (*d->__nextchar != '\0')
+- {
+- d->optarg = d->__nextchar;
+- /* If we end this ARGV-element by taking the rest as an arg,
+- we must advance to the next element now. */
+- d->optind++;
+- }
+- else if (d->optind == argc)
+- {
+- if (print_errors)
+- {
+- /* 1003.2 specifies the format of this message. */
+-#if defined _LIBC && defined USE_IN_LIBIO
+- char *buf;
+-
+- if (__asprintf (&buf,
+- _("%s: option requires an argument -- %c\n"),
+- argv[0], c) >= 0)
+- {
+- _IO_flockfile (stderr);
+-
+- int old_flags2 = ((_IO_FILE *) stderr)->_flags2;
+- ((_IO_FILE *) stderr)->_flags2 |= _IO_FLAGS2_NOTCANCEL;
+-
+- if (_IO_fwide (stderr, 0) > 0)
+- __fwprintf (stderr, L"%s", buf);
+- else
+- fputs (buf, stderr);
+-
+- ((_IO_FILE *) stderr)->_flags2 = old_flags2;
+- _IO_funlockfile (stderr);
+-
+- free (buf);
+- }
+-#else
+- fprintf (stderr, _("%s: option requires an argument -- %c\n"),
+- argv[0], c);
+-#endif
+- }
+- d->optopt = c;
+- if (optstring[0] == ':')
+- c = ':';
+- else
+- c = '?';
+- return c;
+- }
+- else
+- /* We already incremented `d->optind' once;
+- increment it again when taking next ARGV-elt as argument. */
+- d->optarg = argv[d->optind++];
+-
+- /* optarg is now the argument, see if it's in the
+- table of longopts. */
+-
+- for (d->__nextchar = nameend = d->optarg; *nameend && *nameend != '=';
+- nameend++)
+- /* Do nothing. */ ;
+-
+- /* Test all long options for either exact match
+- or abbreviated matches. */
+- for (p = longopts, option_index = 0; p->name; p++, option_index++)
+- if (!strncmp (p->name, d->__nextchar, nameend - d->__nextchar))
+- {
+- if ((unsigned int) (nameend - d->__nextchar) ==
+- strlen (p->name))
+- {
+- /* Exact match found. */
+- pfound = p;
+- indfound = option_index;
+- exact = 1;
+- break;
+- }
+- else if (pfound == NULL)
+- {
+- /* First nonexact match found. */
+- pfound = p;
+- indfound = option_index;
+- }
+- else
+- /* Second or later nonexact match found. */
+- ambig = 1;
+- }
+- if (ambig && !exact)
+- {
+- if (print_errors)
+- {
+-#if defined _LIBC && defined USE_IN_LIBIO
+- char *buf;
+-
+- if (__asprintf (&buf, _("%s: option `-W %s' is ambiguous\n"),
+- argv[0], argv[d->optind]) >= 0)
+- {
+- _IO_flockfile (stderr);
+-
+- int old_flags2 = ((_IO_FILE *) stderr)->_flags2;
+- ((_IO_FILE *) stderr)->_flags2 |= _IO_FLAGS2_NOTCANCEL;
+-
+- if (_IO_fwide (stderr, 0) > 0)
+- __fwprintf (stderr, L"%s", buf);
+- else
+- fputs (buf, stderr);
+-
+- ((_IO_FILE *) stderr)->_flags2 = old_flags2;
+- _IO_funlockfile (stderr);
+-
+- free (buf);
+- }
+-#else
+- fprintf (stderr, _("%s: option `-W %s' is ambiguous\n"),
+- argv[0], argv[d->optind]);
+-#endif
+- }
+- d->__nextchar += strlen (d->__nextchar);
+- d->optind++;
+- return '?';
+- }
+- if (pfound != NULL)
+- {
+- option_index = indfound;
+- if (*nameend)
+- {
+- /* Don't test has_arg with >, because some C compilers don't
+- allow it to be used on enums. */
+- if (pfound->has_arg)
+- d->optarg = nameend + 1;
+- else
+- {
+- if (print_errors)
+- {
+-#if defined _LIBC && defined USE_IN_LIBIO
+- char *buf;
+-
+- if (__asprintf (&buf, _("\
+-%s: option `-W %s' doesn't allow an argument\n"), argv[0], pfound->name) >= 0)
+- {
+- _IO_flockfile (stderr);
+-
+- int old_flags2 = ((_IO_FILE *) stderr)->_flags2;
+- ((_IO_FILE *) stderr)->_flags2
+- |= _IO_FLAGS2_NOTCANCEL;
+-
+- if (_IO_fwide (stderr, 0) > 0)
+- __fwprintf (stderr, L"%s", buf);
+- else
+- fputs (buf, stderr);
+-
+- ((_IO_FILE *) stderr)->_flags2 = old_flags2;
+- _IO_funlockfile (stderr);
+-
+- free (buf);
+- }
+-#else
+- fprintf (stderr, _("\
+-%s: option `-W %s' doesn't allow an argument\n"), argv[0], pfound->name);
+-#endif
+- }
+-
+- d->__nextchar += strlen (d->__nextchar);
+- return '?';
+- }
+- }
+- else if (pfound->has_arg == 1)
+- {
+- if (d->optind < argc)
+- d->optarg = argv[d->optind++];
+- else
+- {
+- if (print_errors)
+- {
+-#if defined _LIBC && defined USE_IN_LIBIO
+- char *buf;
+-
+- if (__asprintf (&buf, _("\
+-%s: option `%s' requires an argument\n"), argv[0], argv[d->optind - 1]) >= 0)
+- {
+- _IO_flockfile (stderr);
+-
+- int old_flags2 = ((_IO_FILE *) stderr)->_flags2;
+- ((_IO_FILE *) stderr)->_flags2
+- |= _IO_FLAGS2_NOTCANCEL;
+-
+- if (_IO_fwide (stderr, 0) > 0)
+- __fwprintf (stderr, L"%s", buf);
+- else
+- fputs (buf, stderr);
+-
+- ((_IO_FILE *) stderr)->_flags2 = old_flags2;
+- _IO_funlockfile (stderr);
+-
+- free (buf);
+- }
+-#else
+- fprintf (stderr,
+- _("%s: option `%s' requires an argument\n"),
+- argv[0], argv[d->optind - 1]);
+-#endif
+- }
+- d->__nextchar += strlen (d->__nextchar);
+- return optstring[0] == ':' ? ':' : '?';
+- }
+- }
+- d->__nextchar += strlen (d->__nextchar);
+- if (longind != NULL)
+- *longind = option_index;
+- if (pfound->flag)
+- {
+- *(pfound->flag) = pfound->val;
+- return 0;
+- }
+- return pfound->val;
+- }
+- d->__nextchar = NULL;
+- return 'W'; /* Let the application handle it. */
+- }
+- if (temp[1] == ':')
+- {
+- if (temp[2] == ':')
+- {
+- /* This is an option that accepts an argument optionally. */
+- if (*d->__nextchar != '\0')
+- {
+- d->optarg = d->__nextchar;
+- d->optind++;
+- }
+- else
+- d->optarg = NULL;
+- d->__nextchar = NULL;
+- }
+- else
+- {
+- /* This is an option that requires an argument. */
+- if (*d->__nextchar != '\0')
+- {
+- d->optarg = d->__nextchar;
+- /* If we end this ARGV-element by taking the rest as an arg,
+- we must advance to the next element now. */
+- d->optind++;
+- }
+- else if (d->optind == argc)
+- {
+- if (print_errors)
+- {
+- /* 1003.2 specifies the format of this message. */
+-#if defined _LIBC && defined USE_IN_LIBIO
+- char *buf;
+-
+- if (__asprintf (&buf, _("\
+-%s: option requires an argument -- %c\n"), argv[0], c) >= 0)
+- {
+- _IO_flockfile (stderr);
+-
+- int old_flags2 = ((_IO_FILE *) stderr)->_flags2;
+- ((_IO_FILE *) stderr)->_flags2 |=
+- _IO_FLAGS2_NOTCANCEL;
+-
+- if (_IO_fwide (stderr, 0) > 0)
+- __fwprintf (stderr, L"%s", buf);
+- else
+- fputs (buf, stderr);
+-
+- ((_IO_FILE *) stderr)->_flags2 = old_flags2;
+- _IO_funlockfile (stderr);
+-
+- free (buf);
+- }
+-#else
+- fprintf (stderr,
+- _("%s: option requires an argument -- %c\n"),
+- argv[0], c);
+-#endif
+- }
+- d->optopt = c;
+- if (optstring[0] == ':')
+- c = ':';
+- else
+- c = '?';
+- }
+- else
+- /* We already incremented `optind' once;
+- increment it again when taking next ARGV-elt as argument. */
+- d->optarg = argv[d->optind++];
+- d->__nextchar = NULL;
+- }
+- }
+- return c;
+- }
+-}
+-
+-int
+-_getopt_internal (
+- int argc,
+- char *const *argv,
+- const char *optstring,
+- const struct option *longopts,
+- int *longind,
+- int long_only
+-)
+-{
+- int result;
+-
+- getopt_data.optind = optind;
+- getopt_data.opterr = opterr;
+-
+- result = _getopt_internal_r (argc, argv, optstring, longopts,
+- longind, long_only, &getopt_data);
+-
+- optind = getopt_data.optind;
+- optarg = getopt_data.optarg;
+- optopt = getopt_data.optopt;
+-
+- return result;
+-}
+-
+-int
+-getopt (
+- int argc,
+- char *const *argv,
+- const char *optstring
+-)
+-{
+- return _getopt_internal (argc, argv, optstring,
+- (const struct option *) 0, (int *) 0, 0);
+-}
+-
+-#endif /* Not ELIDE_CODE. */
+-
+-#ifdef TEST
+-
+-/* Compile with -DTEST to make an executable for use in testing
+- the above definition of `getopt'. */
+-
+-int
+-main (
+- int argc,
+- char **argv
+-)
+-{
+- int c;
+- int digit_optind = 0;
+-
+- while (1)
+- {
+- int this_option_optind = optind ? optind : 1;
+-
+- c = getopt (argc, argv, "abc:d:0123456789");
+- if (c == -1)
+- break;
+-
+- switch (c)
+- {
+- case '0':
+- case '1':
+- case '2':
+- case '3':
+- case '4':
+- case '5':
+- case '6':
+- case '7':
+- case '8':
+- case '9':
+- if (digit_optind != 0 && digit_optind != this_option_optind)
+- printf ("digits occur in two different argv-elements.\n");
+- digit_optind = this_option_optind;
+- printf ("option %c\n", c);
+- break;
+-
+- case 'a':
+- printf ("option a\n");
+- break;
+-
+- case 'b':
+- printf ("option b\n");
+- break;
+-
+- case 'c':
+- printf ("option c with value `%s'\n", optarg);
+- break;
+-
+- case '?':
+- break;
+-
+- default:
+- printf ("?? getopt returned character code 0%o ??\n", c);
+- }
+- }
+-
+- if (optind < argc)
+- {
+- printf ("non-option ARGV-elements: ");
+- while (optind < argc)
+- printf ("%s ", argv[optind++]);
+- printf ("\n");
+- }
+-
+- exit (0);
+-}
+-
+-#endif /* TEST */
+diff -pruN fribidi-1.0.14.orig/bin/getopt.h fribidi-1.0.14/bin/getopt.h
+--- fribidi-1.0.14.orig/bin/getopt.h 2015-08-05 03:49:07.000000000 +0900
++++ fribidi-1.0.14/bin/getopt.h 1970-01-01 09:00:00.000000000 +0900
+@@ -1,187 +0,0 @@
+-/* Declarations for getopt.
+- Copyright (C) 1989-1994,1996-1999,2001,2003,2004
+- Free Software Foundation, Inc.
+- This file is part of the GNU C Library.
+-
+- This program is free software; you can redistribute it and/or modify
+- it under the terms of the GNU General Public License as published by
+- the Free Software Foundation; either version 2, or (at your option)
+- any later version.
+-
+- This program is distributed in the hope that it will be useful,
+- but WITHOUT ANY WARRANTY; without even the implied warranty of
+- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+- GNU General Public License for more details.
+-
+- You should have received a copy of the GNU General Public License along
+- with this program; if not, write to the Free Software Foundation,
+- Inc., 59 Temple Place - Suite 330, Boston, MA 02110-1301, USA. */
+-
+-#ifndef _GETOPT_H
+-
+-#ifndef __need_getopt
+-# define _GETOPT_H 1
+-#endif
+-
+-/* If __GNU_LIBRARY__ is not already defined, either we are being used
+- standalone, or this is the first header included in the source file.
+- If we are being used with glibc, we need to include , but
+- that does not exist if we are standalone. So: if __GNU_LIBRARY__ is
+- not defined, include , which will pull in for us
+- if it's from glibc. (Why ctype.h? It's guaranteed to exist and it
+- doesn't flood the namespace with stuff the way some other headers do.) */
+-#if !defined __GNU_LIBRARY__
+-# include
+-#endif
+-
+-#ifndef __THROW
+-# ifndef __GNUC_PREREQ
+-# define __GNUC_PREREQ(maj, min) (0)
+-# endif
+-# if defined __cplusplus && __GNUC_PREREQ (2,8)
+-# define __THROW throw ()
+-# else
+-# define __THROW
+-# endif
+-#endif
+-
+-#ifdef __cplusplus
+-extern "C"
+-{
+-#endif
+-
+-/* For communication from `getopt' to the caller.
+- When `getopt' finds an option that takes an argument,
+- the argument value is returned here.
+- Also, when `ordering' is RETURN_IN_ORDER,
+- each non-option ARGV-element is returned here. */
+-
+- extern char *optarg;
+-
+-/* Index in ARGV of the next element to be scanned.
+- This is used for communication to and from the caller
+- and for communication between successive calls to `getopt'.
+-
+- On entry to `getopt', zero means this is the first call; initialize.
+-
+- When `getopt' returns -1, this is the index of the first of the
+- non-option elements that the caller should itself scan.
+-
+- Otherwise, `optind' communicates from one call to the next
+- how much of ARGV has been scanned so far. */
+-
+- extern int optind;
+-
+-/* Callers store zero here to inhibit the error message `getopt' prints
+- for unrecognized options. */
+-
+- extern int opterr;
+-
+-/* Set to an option character which was unrecognized. */
+-
+- extern int optopt;
+-
+-#ifndef __need_getopt
+-/* Describe the long-named options requested by the application.
+- The LONG_OPTIONS argument to getopt_long or getopt_long_only is a vector
+- of `struct option' terminated by an element containing a name which is
+- zero.
+-
+- The field `has_arg' is:
+- no_argument (or 0) if the option does not take an argument,
+- required_argument (or 1) if the option requires an argument,
+- optional_argument (or 2) if the option takes an optional argument.
+-
+- If the field `flag' is not NULL, it points to a variable that is set
+- to the value given in the field `val' when the option is found, but
+- left unchanged if the option is not found.
+-
+- To have a long-named option do something other than set an `int' to
+- a compiled-in constant, such as set a value from `optarg', set the
+- option's `flag' field to zero and its `val' field to a nonzero
+- value (the equivalent single-letter option character, if there is
+- one). For long options that have a zero `flag' field, `getopt'
+- returns the contents of the `val' field. */
+-
+- struct option
+- {
+- const char *name;
+- /* has_arg can't be an enum because some compilers complain about
+- type mismatches in all the code that assumes it is an int. */
+- int has_arg;
+- int *flag;
+- int val;
+- };
+-
+-/* Names for the values of the `has_arg' field of `struct option'. */
+-
+-# define no_argument 0
+-# define required_argument 1
+-# define optional_argument 2
+-#endif /* need getopt */
+-
+-
+-/* Get definitions and prototypes for functions to process the
+- arguments in ARGV (ARGC of them, minus the program name) for
+- options given in OPTS.
+-
+- Return the option character from OPTS just read. Return -1 when
+- there are no more options. For unrecognized options, or options
+- missing arguments, `optopt' is set to the option letter, and '?' is
+- returned.
+-
+- The OPTS string is a list of characters which are recognized option
+- letters, optionally followed by colons, specifying that that letter
+- takes an argument, to be placed in `optarg'.
+-
+- If a letter in OPTS is followed by two colons, its argument is
+- optional. This behavior is specific to the GNU `getopt'.
+-
+- The argument `--' causes premature termination of argument
+- scanning, explicitly telling `getopt' that there are no more
+- options.
+-
+- If OPTS begins with `--', then non-option arguments are treated as
+- arguments to the option '\0'. This behavior is specific to the GNU
+- `getopt'. */
+-
+-#ifdef __GNU_LIBRARY__
+-/* Many other libraries have conflicting prototypes for getopt, with
+- differences in the consts, in stdlib.h. To avoid compilation
+- errors, only prototype getopt for the GNU C library. */
+- extern int getopt (
+- int ___argc,
+- char *const *___argv,
+- const char *__shortopts
+- ) __THROW;
+-#else /* not __GNU_LIBRARY__ */
+- extern int getopt (
+- );
+-#endif /* __GNU_LIBRARY__ */
+-
+-#ifndef __need_getopt
+- extern int getopt_long (
+- int ___argc,
+- char *const *___argv,
+- const char *__shortopts,
+- const struct option *__longopts,
+- int *__longind
+- ) __THROW;
+- extern int getopt_long_only (
+- int ___argc,
+- char *const *___argv,
+- const char *__shortopts,
+- const struct option *__longopts,
+- int *__longind
+- ) __THROW;
+-
+-#endif
+-
+-#ifdef __cplusplus
+-}
+-#endif
+-
+-/* Make sure we later can get all the definitions and declarations. */
+-#undef __need_getopt
+-
+-#endif /* getopt.h */
+diff -pruN fribidi-1.0.14.orig/bin/getopt1.c fribidi-1.0.14/bin/getopt1.c
+--- fribidi-1.0.14.orig/bin/getopt1.c 2015-08-05 03:49:07.000000000 +0900
++++ fribidi-1.0.14/bin/getopt1.c 1970-01-01 09:00:00.000000000 +0900
+@@ -1,213 +0,0 @@
+-/* getopt_long and getopt_long_only entry points for GNU getopt.
+- Copyright (C) 1987,88,89,90,91,92,93,94,96,97,98,2004
+- Free Software Foundation, Inc.
+- This file is part of the GNU C Library.
+-
+- This program is free software; you can redistribute it and/or modify
+- it under the terms of the GNU General Public License as published by
+- the Free Software Foundation; either version 2, or (at your option)
+- any later version.
+-
+- This program is distributed in the hope that it will be useful,
+- but WITHOUT ANY WARRANTY; without even the implied warranty of
+- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+- GNU General Public License for more details.
+-
+- You should have received a copy of the GNU General Public License along
+- with this program; if not, write to the Free Software Foundation,
+- Inc., 59 Temple Place - Suite 330, Boston, MA 02110-1301, USA. */
+-
+-#ifdef HAVE_CONFIG_H
+-#include
+-#endif
+-
+-#ifdef _LIBC
+-# include
+-#else
+-# include "getopt.h"
+-#endif
+-#include "getopt_int.h"
+-
+-#include
+-
+-/* Comment out all this code if we are using the GNU C Library, and are not
+- actually compiling the library itself. This code is part of the GNU C
+- Library, but also included in many other GNU distributions. Compiling
+- and linking in this code is a waste when using the GNU C library
+- (especially if it is a shared library). Rather than having every GNU
+- program understand `configure --with-gnu-libc' and omit the object files,
+- it is simpler to just do this in the source for each such file. */
+-
+-#define GETOPT_INTERFACE_VERSION 2
+-#if !defined _LIBC && defined __GLIBC__ && __GLIBC__ >= 2
+-#include
+-#if _GNU_GETOPT_INTERFACE_VERSION == GETOPT_INTERFACE_VERSION
+-#define ELIDE_CODE
+-#endif
+-#endif
+-
+-#ifndef ELIDE_CODE
+-
+-
+-/* This needs to come after some library #include
+- to get __GNU_LIBRARY__ defined. */
+-#ifdef __GNU_LIBRARY__
+-#include
+-#endif
+-
+-#ifndef NULL
+-#define NULL 0
+-#endif
+-
+-int
+-getopt_long (
+- int argc,
+- char *const *argv,
+- const char *options,
+- const struct option *long_options,
+- int *opt_index
+-)
+-{
+- return _getopt_internal (argc, argv, options, long_options, opt_index, 0);
+-}
+-
+-int
+-_getopt_long_r (
+- int argc,
+- char *const *argv,
+- const char *options,
+- const struct option *long_options,
+- int *opt_index,
+- struct _getopt_data *d
+-)
+-{
+- return _getopt_internal_r (argc, argv, options, long_options, opt_index,
+- 0, d);
+-}
+-
+-/* Like getopt_long, but '-' as well as '--' can indicate a long option.
+- If an option that starts with '-' (not '--') doesn't match a long option,
+- but does match a short option, it is parsed as a short option
+- instead. */
+-
+-int
+-getopt_long_only (
+- int argc,
+- char *const *argv,
+- const char *options,
+- const struct option *long_options,
+- int *opt_index
+-)
+-{
+- return _getopt_internal (argc, argv, options, long_options, opt_index, 1);
+-}
+-
+-int
+-_getopt_long_only_r (
+- int argc,
+- char *const *argv,
+- const char *options,
+- const struct option *long_options,
+- int *opt_index,
+- struct _getopt_data *d
+-)
+-{
+- return _getopt_internal_r (argc, argv, options, long_options, opt_index,
+- 1, d);
+-}
+-
+-#endif /* Not ELIDE_CODE. */
+-
+-#ifdef TEST
+-
+-#include
+-
+-int
+-main (
+- int argc,
+- char **argv
+-)
+-{
+- int c;
+- int digit_optind = 0;
+-
+- while (1)
+- {
+- int this_option_optind = optind ? optind : 1;
+- int option_index = 0;
+- static struct option long_options[] = {
+- {"add", 1, 0, 0},
+- {"append", 0, 0, 0},
+- {"delete", 1, 0, 0},
+- {"verbose", 0, 0, 0},
+- {"create", 0, 0, 0},
+- {"file", 1, 0, 0},
+- {0, 0, 0, 0}
+- };
+-
+- c = getopt_long (argc, argv, "abc:d:0123456789",
+- long_options, &option_index);
+- if (c == -1)
+- break;
+-
+- switch (c)
+- {
+- case 0:
+- printf ("option %s", long_options[option_index].name);
+- if (optarg)
+- printf (" with arg %s", optarg);
+- printf ("\n");
+- break;
+-
+- case '0':
+- case '1':
+- case '2':
+- case '3':
+- case '4':
+- case '5':
+- case '6':
+- case '7':
+- case '8':
+- case '9':
+- if (digit_optind != 0 && digit_optind != this_option_optind)
+- printf ("digits occur in two different argv-elements.\n");
+- digit_optind = this_option_optind;
+- printf ("option %c\n", c);
+- break;
+-
+- case 'a':
+- printf ("option a\n");
+- break;
+-
+- case 'b':
+- printf ("option b\n");
+- break;
+-
+- case 'c':
+- printf ("option c with value `%s'\n", optarg);
+- break;
+-
+- case 'd':
+- printf ("option d with value `%s'\n", optarg);
+- break;
+-
+- case '?':
+- break;
+-
+- default:
+- printf ("?? getopt returned character code 0%o ??\n", c);
+- }
+- }
+-
+- if (optind < argc)
+- {
+- printf ("non-option ARGV-elements: ");
+- while (optind < argc)
+- printf ("%s ", argv[optind++]);
+- printf ("\n");
+- }
+-
+- exit (0);
+-}
+-
+-#endif /* TEST */
+diff -pruN fribidi-1.0.14.orig/bin/getopt_int.h fribidi-1.0.14/bin/getopt_int.h
+--- fribidi-1.0.14.orig/bin/getopt_int.h 2015-08-05 03:49:07.000000000 +0900
++++ fribidi-1.0.14/bin/getopt_int.h 1970-01-01 09:00:00.000000000 +0900
+@@ -1,145 +0,0 @@
+-/* Internal declarations for getopt.
+- Copyright (C) 1989-1994,1996-1999,2001,2003,2004
+- Free Software Foundation, Inc.
+- This file is part of the GNU C Library.
+-
+- This program is free software; you can redistribute it and/or modify
+- it under the terms of the GNU General Public License as published by
+- the Free Software Foundation; either version 2, or (at your option)
+- any later version.
+-
+- This program is distributed in the hope that it will be useful,
+- but WITHOUT ANY WARRANTY; without even the implied warranty of
+- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+- GNU General Public License for more details.
+-
+- You should have received a copy of the GNU General Public License along
+- with this program; if not, write to the Free Software Foundation,
+- Inc., 59 Temple Place - Suite 330, Boston, MA 02110-1301, USA. */
+-
+-#ifndef _GETOPT_INT_H
+-#define _GETOPT_INT_H 1
+-
+-extern int _getopt_internal (
+- int ___argc,
+- char *const *___argv,
+- const char *__shortopts,
+- const struct option *__longopts,
+- int *__longind,
+- int __long_only
+-);
+-
+-
+-/* Reentrant versions which can handle parsing multiple argument
+- vectors at the same time. */
+-
+-/* Data type for reentrant functions. */
+-struct _getopt_data
+-{
+- /* These have exactly the same meaning as the corresponding global
+- variables, except that they are used for the reentrant
+- versions of getopt. */
+- int optind;
+- int opterr;
+- int optopt;
+- char *optarg;
+-
+- /* Internal members. */
+-
+- /* True if the internal members have been initialized. */
+- int __initialized;
+-
+- /* The next char to be scanned in the option-element
+- in which the last option character we returned was found.
+- This allows us to pick up the scan where we left off.
+-
+- If this is zero, or a null string, it means resume the scan
+- by advancing to the next ARGV-element. */
+- char *__nextchar;
+-
+- /* Describe how to deal with options that follow non-option ARGV-elements.
+-
+- If the caller did not specify anything,
+- the default is REQUIRE_ORDER if the environment variable
+- POSIXLY_CORRECT is defined, PERMUTE otherwise.
+-
+- REQUIRE_ORDER means don't recognize them as options;
+- stop option processing when the first non-option is seen.
+- This is what Unix does.
+- This mode of operation is selected by either setting the environment
+- variable POSIXLY_CORRECT, or using `+' as the first character
+- of the list of option characters.
+-
+- PERMUTE is the default. We permute the contents of ARGV as we
+- scan, so that eventually all the non-options are at the end.
+- This allows options to be given in any order, even with programs
+- that were not written to expect this.
+-
+- RETURN_IN_ORDER is an option available to programs that were
+- written to expect options and other ARGV-elements in any order
+- and that care about the ordering of the two. We describe each
+- non-option ARGV-element as if it were the argument of an option
+- with character code 1. Using `-' as the first character of the
+- list of option characters selects this mode of operation.
+-
+- The special argument `--' forces an end of option-scanning regardless
+- of the value of `ordering'. In the case of RETURN_IN_ORDER, only
+- `--' can cause `getopt' to return -1 with `optind' != ARGC. */
+-
+- enum
+- {
+- REQUIRE_ORDER, PERMUTE, RETURN_IN_ORDER
+- } __ordering;
+-
+- /* If the POSIXLY_CORRECT environment variable is set. */
+- int __posixly_correct;
+-
+-
+- /* Handle permutation of arguments. */
+-
+- /* Describe the part of ARGV that contains non-options that have
+- been skipped. `first_nonopt' is the index in ARGV of the first
+- of them; `last_nonopt' is the index after the last of them. */
+-
+- int __first_nonopt;
+- int __last_nonopt;
+-
+-#if defined _LIBC && defined USE_NONOPTION_FLAGS
+- int __nonoption_flags_max_len;
+- int __nonoption_flags_len;
+-# endif
+-};
+-
+-/* The initializer is necessary to set OPTIND and OPTERR to their
+- default values and to clear the initialization flag. */
+-#define _GETOPT_DATA_INITIALIZER { 1, 1 }
+-
+-extern int _getopt_internal_r (
+- int ___argc,
+- char *const *___argv,
+- const char *__shortopts,
+- const struct option *__longopts,
+- int *__longind,
+- int __long_only,
+- struct _getopt_data *__data
+-);
+-
+-extern int _getopt_long_r (
+- int ___argc,
+- char *const *___argv,
+- const char *__shortopts,
+- const struct option *__longopts,
+- int *__longind,
+- struct _getopt_data *__data
+-);
+-
+-extern int _getopt_long_only_r (
+- int ___argc,
+- char *const *___argv,
+- const char *__shortopts,
+- const struct option *__longopts,
+- int *__longind,
+- struct _getopt_data *__data
+-);
+-
+-#endif /* getopt_int.h */
+diff -pruN fribidi-1.0.14.orig/bin/gettext.h fribidi-1.0.14/bin/gettext.h
+--- fribidi-1.0.14.orig/bin/gettext.h 2015-08-05 03:49:07.000000000 +0900
++++ fribidi-1.0.14/bin/gettext.h 1970-01-01 09:00:00.000000000 +0900
+@@ -1,2 +0,0 @@
+-#undef gettext
+-#define gettext
+diff -pruN fribidi-1.0.14.orig/bin/meson.build fribidi-1.0.14/bin/meson.build
+--- fribidi-1.0.14.orig/bin/meson.build 2024-03-18 03:10:09.000000000 +0900
++++ fribidi-1.0.14/bin/meson.build 2024-05-07 21:40:55.573086578 +0900
+@@ -1,7 +1,7 @@
+ # The fribidi binary is used by the test setup, so if bin=false we still
+ # need to build it for internal usage, we just won't install it.
+ fribidi = executable('fribidi',
+- 'fribidi-main.c', 'getopt.c', 'getopt1.c', fribidi_unicode_version_h,
++ 'fribidi-main.c', fribidi_unicode_version_h,
+ c_args: ['-DHAVE_CONFIG_H'] + fribidi_static_cargs,
+ include_directories: incs,
+ link_with: libfribidi,
+@@ -12,7 +12,7 @@ if not get_option('bin')
+ endif
+
+ executable('fribidi-benchmark',
+- 'fribidi-benchmark.c', 'getopt.c', 'getopt1.c', fribidi_unicode_version_h,
++ 'fribidi-benchmark.c', fribidi_unicode_version_h,
+ c_args: ['-DHAVE_CONFIG_H'] + fribidi_static_cargs,
+ include_directories: incs,
+ link_with: libfribidi,
diff --git a/fribidi.spec b/fribidi.spec
index 92fe739..91570fa 100644
--- a/fribidi.spec
+++ b/fribidi.spec
@@ -1,13 +1,18 @@
Summary: Library implementing the Unicode Bidirectional Algorithm
Name: fribidi
-Version: 0.19.4
-Release: 4%{?dist}
-URL: http://fribidi.org
-Source: http://fribidi.org/download/%{name}-%{version}.tar.bz2
-License: LGPLv2+ and UCD
-Group: System Environment/Libraries
-Patch0: signedwarning.patch
-Patch1: fribidi-aarch64.patch
+Version: 1.0.16
+Release: 3%{?dist}
+URL: https://github.com/fribidi/fribidi/
+Source: https://github.com/%{name}/%{name}/releases/download/v%{version}/%{name}-%{version}.tar.xz
+License: LGPL-2.1-or-later AND Unicode-DFS-2016
+BuildRequires: gcc
+%if 0%{?rhel} && 0%{?rhel} <= 8
+BuildRequires: automake autoconf libtool
+%else
+BuildRequires: meson
+%endif
+BuildRequires: make
+Patch0: fribidi-drop-bundled-gnulib.patch
%description
A library to handle bidirectional scripts (for example Hebrew, Arabic),
@@ -16,7 +21,6 @@ is always written in logical order.
%package devel
Summary: Libraries and include files for FriBidi
-Group: System Environment/Libraries
Requires: %{name}%{?_isa} = %{version}-%{release}
%description devel
@@ -24,11 +28,17 @@ Include files and libraries needed for developing applications which use
FriBidi.
%prep
-%setup -q
-%patch0 -p1 -b .signedwarnings
-%patch1 -p1 -b .aarch64
+%autosetup -p1
+%if 0%{?rhel} && 0%{?rhel} <= 8
+autoreconf -i
+%endif
+# Clean up older file in archive
+(cd lib;
+ rm arabic-shaping.tab.i bidi-type.tab.i brackets*.tab.i joining-type.tab.i mirroring.tab.i fribidi-unicode-version.h
+)
%build
+%if 0%{?rhel} && 0%{?rhel} <= 8
%if 0%{?el5}
# FORTIFY_SOURCE=2 breaks EL-5 build
export CFLAGS=`echo $RPM_OPT_FLAGS | sed -e 's|FORTIFY_SOURCE=2|FORTIFY_SOURCE=1|'`
@@ -41,35 +51,234 @@ export CFLAGS="$CFLAGS -DPAGE_SIZE=4096"
export CFLAGS="$RPM_OPT_FLAGS -DPAGE_SIZE=4096"
%endif
%endif
-%configure --disable-static
-make %{?_smp_mflags}
+%configure --disable-static --disable-docs
+make %{?_smp_mflags} V=1
+%else
+%meson -Ddocs=false
+%meson_build
+%endif
+
+%check
+%if 0%{?rhel} && 0%{?rhel} <= 8
+make check
+%else
+%meson_test
+%endif
%install
+%if 0%{?rhel} && 0%{?rhel} <= 8
make DESTDIR=$RPM_BUILD_ROOT install INSTALL="install -p"
+%else
+%meson_install
+%endif
rm -f $RPM_BUILD_ROOT%{_libdir}/*.la
-# remove empty (compressed) man pages
-find $RPM_BUILD_ROOT%{_mandir}/man3 -type f -empty -exec rm {} \;
-%post -p /sbin/ldconfig
-
-%postun -p /sbin/ldconfig
+%ldconfig_scriptlets
%files
-%doc README AUTHORS COPYING ChangeLog THANKS NEWS TODO
+%doc README AUTHORS ChangeLog THANKS NEWS TODO
+%license COPYING
%{_bindir}/fribidi
-%{_libdir}/libfribidi.so.*
+%{_libdir}/libfribidi.so.0*
%files devel
%{_includedir}/fribidi
%{_libdir}/libfribidi.so
%{_libdir}/pkgconfig/*.pc
-%{_mandir}/man3/%{name}_*.gz
+#%%{_mandir}/man3/*.gz
%changelog
+* Wed Jul 23 2025 Fedora Release Engineering - 1.0.16-3
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_43_Mass_Rebuild
+
+* Thu Jan 16 2025 Fedora Release Engineering - 1.0.16-2
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild
+
+* Fri Sep 27 2024 Akira TAGOH - 1.0.16-1
+- New upstream release.
+ Resolves: rhbz#2314907
+
+* Wed Jul 17 2024 Fedora Release Engineering - 1.0.15-2
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild
+
+* Mon Jun 10 2024 Akira TAGOH - 1.0.15-1
+- New upstream release.
+ Resolves: rhbz#2291030
+
+* Wed Jun 5 2024 Akira TAGOH - 1.0.14-2
+- Fix broken data in fribidi.
+ Resolves: rhbz#2279842
+
+* Tue May 7 2024 Akira TAGOH - 1.0.14-1
+- New upstream release.
+ Resolves: rhbz#2277227
+
+* Wed Jan 24 2024 Fedora Release Engineering - 1.0.13-4
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild
+
+* Fri Jan 19 2024 Fedora Release Engineering - 1.0.13-3
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild
+
+* Wed Jul 19 2023 Fedora Release Engineering - 1.0.13-2
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_39_Mass_Rebuild
+
+* Wed May 17 2023 Akira TAGOH - 1.0.13-1
+- New upstream release.
+ Resolves: rhbz#2207796
+
+* Fri Feb 24 2023 Caolán McNamara - 1.0.12-4
+- migrated to SPDX license
+
+* Thu Jan 19 2023 Fedora Release Engineering - 1.0.12-3
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_38_Mass_Rebuild
+
+* Thu Jul 21 2022 Fedora Release Engineering - 1.0.12-2
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_37_Mass_Rebuild
+
+* Thu Apr 21 2022 Akira TAGOH - 1.0.12-1
+- New upstream release.
+ Resolves: rhbz#2077311
+
+* Fri Apr 1 2022 Akira TAGOH - 1.0.11-3
+- Fix security issues, CVE-2022-25308, CVE-2022-25309, CVE-2022-25310.
+ Resolves: rhbz#2067039, rhbz#2067043, rhbz#2067045
+
+* Thu Jan 20 2022 Fedora Release Engineering - 1.0.11-2
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_36_Mass_Rebuild
+
+* Fri Sep 24 2021 Fedora Release Monitoring - 1.0.11-1
+- Update to 1.0.11 (#2007504)
+
+* Wed Jul 21 2021 Fedora Release Engineering - 1.0.10-5
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_35_Mass_Rebuild
+
+* Tue Jan 26 2021 Fedora Release Engineering - 1.0.10-4
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild
+
+* Mon Jul 27 2020 Fedora Release Engineering - 1.0.10-3
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild
+
+* Tue Jul 7 2020 Akira TAGOH - 1.0.10-2
+- Update the patch to drop bundled gnulib.
+
+* Mon Jul 6 2020 Akira TAGOH - 1.0.10-1
+- New upstream release.
+ Resolves: rhbz#1853939
+
+* Thu Mar 05 2020 Akira TAGOH - 1.0.9-1
+- New upstream release.
+ Resolves: rhbz#1809478
+
+* Tue Jan 28 2020 Fedora Release Engineering - 1.0.8-3
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild
+
+* Wed Jan 15 2020 Akira TAGOH - 1.0.8-2
+- Restore the deprecated API that was accidentally removed in the previous release.
+ Resolves: rhbz#1787293
+
+* Fri Dec 13 2019 Akira TAGOH - 1.0.8-1
+- New upstream release.
+ Resolves: rhbz#1783205
+
+* Wed Dec 11 2019 Akira TAGOH - 1.0.7-2
+- Fix CVE-2019-18397
+ Resolves: rhbz#1781218
+
+* Mon Sep 30 2019 Akira TAGOH - 1.0.7-1
+- New upstream release.
+ Resolves: rhbz#1756434
+
+* Fri Sep 27 2019 Akira TAGOH - 1.0.6-1
+- New upstream release.
+ Resolves: rhbz#1756212
+- Use meson to build.
+
+* Thu Jul 25 2019 Fedora Release Engineering - 1.0.5-4
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild
+
+* Tue Jul 23 2019 Akira TAGOH - 1.0.5-3
+- Backport upstream patch to remove HAVE_CONFIG_H from public API.
+ Fixes rhbz#1730516
+
+* Thu Jan 31 2019 Fedora Release Engineering - 1.0.5-2
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_30_Mass_Rebuild
+
+* Mon Aug 06 2018 Akira TAGOH - 1.0.5-1
+- New upstream release. (#1609080)
+
+* Thu Jul 26 2018 Akira TAGOH - 1.0.4-6
+- Drop bundled gnulib code.
+
+* Tue Jul 17 2018 Akira TAGOH - 1.0.4-5
+- Add BR: gcc.
+
+* Fri Jul 13 2018 Fedora Release Engineering - 1.0.4-4
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_29_Mass_Rebuild
+
+* Thu Jul 12 2018 Akira TAGOH - 1.0.4-3
+- Modernize spec file.
+
+* Fri Jun 29 2018 Akira TAGOH - 1.0.4-2
+- Use ldconfig rpm macro.
+
+* Fri Jun 08 2018 Akira TAGOH - 1.0.4-1
+- New upstream release. (#1587985)
+
+* Thu May 31 2018 Akira TAGOH - 1.0.3-1
+- New upstream release. (#1584541)
+
+* Fri May 04 2018 Caolán McNamara - 1.0.2-1
+- Resolves: rhbz#1574858 latest version, --disable-docs because there's no c2man
+
+* Wed Feb 28 2018 Caolán McNamara - 1.0.1-1
+- Resolves: rhbz#1549934 latest version
+
+* Wed Feb 07 2018 Fedora Release Engineering - 0.19.7-7
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_28_Mass_Rebuild
+
+* Mon Oct 16 2017 Caolán McNamara - 0.19.7-6
+- Resolves: rhbz#1502675 enable make check
+
+* Wed Aug 02 2017 Fedora Release Engineering - 0.19.7-5
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Binutils_Mass_Rebuild
+
+* Wed Jul 26 2017 Fedora Release Engineering - 0.19.7-4
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Mass_Rebuild
+
+* Fri Feb 10 2017 Fedora Release Engineering - 0.19.7-3
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_26_Mass_Rebuild
+
+* Wed Feb 03 2016 Fedora Release Engineering - 0.19.7-2
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_24_Mass_Rebuild
+
+* Tue Aug 11 2015 Caolán McNamara - 0.19.7-1
+- Resolves: rhbz#1250755 latest fribidi
+
+* Wed Jun 17 2015 Fedora Release Engineering - 0.19.6-5
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_23_Mass_Rebuild
+
+* Sat Feb 21 2015 Till Maas - 0.19.6-4
+- Rebuilt for Fedora 23 Change
+ https://fedoraproject.org/wiki/Changes/Harden_all_packages_with_position-independent_code
+
+* Sat Aug 16 2014 Fedora Release Engineering - 0.19.6-3
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_22_Mass_Rebuild
+
+* Sat Jun 07 2014 Fedora Release Engineering - 0.19.6-2
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_Mass_Rebuild
+
+* Mon Jan 13 2014 Caolán McNamara - 0.19.6-1
+- Resolves: rhbz#1052148 latest fribidi
+- drop integrated signedwarning.patch
+- drop integrated fribidi-aarch64.patch
+
+* Sat Aug 03 2013 Fedora Release Engineering - 0.19.4-5
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_20_Mass_Rebuild
+
* Wed Apr 03 2013 Caolán McNamara - 0.19.4-4
- Resolves: rhbz#925368 support aarch64
-* Wed Feb 18 2013 Caolán McNamara - 0.19.4-3
+* Mon Feb 18 2013 Caolán McNamara - 0.19.4-3
- Resolves: rhbz#884000 remove empty man pages
* Mon Dec 10 2012 Caolán McNamara - 0.19.4-2
@@ -180,4 +389,3 @@ find $RPM_BUILD_ROOT%{_mandir}/man3 -type f -empty -exec rm {} \;
* Fri May 16 2003 Jeremy Katz 0.10.4-2
- Initial build in Red Hat Linux
-
diff --git a/plans/basic.fmf b/plans/basic.fmf
new file mode 100644
index 0000000..4d7984e
--- /dev/null
+++ b/plans/basic.fmf
@@ -0,0 +1,11 @@
+summary: Basic smoke test
+discover:
+ how: fmf
+ dist-git-source: true
+prepare:
+ name: tmt
+ how: install
+ package:
+ - fribidi
+execute:
+ how: tmt
diff --git a/signedwarning.patch b/signedwarning.patch
deleted file mode 100644
index 06ae0ef..0000000
--- a/signedwarning.patch
+++ /dev/null
@@ -1,11 +0,0 @@
---- fribidi-0.19.4/bin/fribidi-main.c 2012-08-25 20:56:20.000000000 +0200
-+++ fribidi-0.19.4/bin/fribidi-main.c 2012-12-06 16:10:38.936894816 +0100
-@@ -519,7 +519,7 @@
- idx++;
- }
- #endif /* !FRIBIDI_MAIN_USE_ICONV_H */
-- if (wid < 0 && idx > st + 1)
-+ if (wid < 0 && idx - st > 1)
- idx--;
- inlen = idx - st;
-
diff --git a/sources b/sources
index 0e272be..173f0f4 100644
--- a/sources
+++ b/sources
@@ -1 +1 @@
-0173f98ff929782d45819fc4a813c175 fribidi-0.19.4.tar.bz2
+SHA512 (fribidi-1.0.16.tar.xz) = e3a56f36155f6813e3609473639fc533de742309f561c463012dc90b412a1ac7694b765d92669b2cbfaee973ca0e92fa5e926e68a1a078921f26ef17d82ab651
diff --git a/tests/basic/main.fmf b/tests/basic/main.fmf
new file mode 100644
index 0000000..4b2193c
--- /dev/null
+++ b/tests/basic/main.fmf
@@ -0,0 +1,3 @@
+summary: Basic test
+test: ./test.sh
+framework: beakerlib
diff --git a/tests/basic/test.sh b/tests/basic/test.sh
new file mode 100755
index 0000000..3156eac
--- /dev/null
+++ b/tests/basic/test.sh
@@ -0,0 +1,31 @@
+#!/bin/bash
+# vim: dict+=/usr/share/beakerlib/dictionary.vim cpt=.,w,b,u,t,i,k
+. /usr/share/beakerlib/beakerlib.sh || exit 1
+
+rlJournalStart
+ rlPhaseStartSetup
+ rlRun "tmp=\$(mktemp -d)" 0 "Create tmp directory"
+ rlRun "pushd $tmp"
+ rlRun "set -o pipefail"
+ rlPhaseEnd
+
+ rlPhaseStartTest
+ rlRun "BUILD_PATH=$(rpm -q --qf '%{NAME}-%{VERSION}' fribidi)" 0 "Get the build path"
+ if test -d $TMT_SOURCE_DIR/$BUILD_PATH; then
+ for f in $TMT_SOURCE_DIR/$BUILD_PATH/test/*.input; do
+ ref=${f/.input/.reference}
+ cs=$(echo $f|cut -d_ -f2)
+ name=$(basename $f)
+ rlRun "fribidi -t -c $cs $f | tee output" 0 "Check $name for $cs"
+ rlRun "diff -U 0 output $ref" 0 "Check diff for $name"
+ done
+ else
+ rlDie "No build directory"
+ fi
+ rlPhaseEnd
+
+ rlPhaseStartCleanup
+ rlRun "popd"
+ rlRun "rm -r $tmp" 0 "Remove tmp directory"
+ rlPhaseEnd
+rlJournalEnd