ffi 1.9.3-x64-mingw32
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of ffi might be problematic. Click here for more details.
- data/COPYING +49 -0
- data/LICENSE +24 -0
- data/README.md +109 -0
- data/Rakefile +220 -0
- data/ext/ffi_c/AbstractMemory.c +1032 -0
- data/ext/ffi_c/AbstractMemory.h +175 -0
- data/ext/ffi_c/ArrayType.c +162 -0
- data/ext/ffi_c/ArrayType.h +59 -0
- data/ext/ffi_c/Buffer.c +365 -0
- data/ext/ffi_c/Call.c +465 -0
- data/ext/ffi_c/Call.h +93 -0
- data/ext/ffi_c/ClosurePool.c +283 -0
- data/ext/ffi_c/ClosurePool.h +57 -0
- data/ext/ffi_c/DataConverter.c +91 -0
- data/ext/ffi_c/DynamicLibrary.c +333 -0
- data/ext/ffi_c/DynamicLibrary.h +49 -0
- data/ext/ffi_c/Function.c +999 -0
- data/ext/ffi_c/Function.h +87 -0
- data/ext/ffi_c/FunctionInfo.c +271 -0
- data/ext/ffi_c/LastError.c +184 -0
- data/ext/ffi_c/LastError.h +47 -0
- data/ext/ffi_c/LongDouble.c +63 -0
- data/ext/ffi_c/LongDouble.h +51 -0
- data/ext/ffi_c/MappedType.c +168 -0
- data/ext/ffi_c/MappedType.h +59 -0
- data/ext/ffi_c/MemoryPointer.c +197 -0
- data/ext/ffi_c/MemoryPointer.h +53 -0
- data/ext/ffi_c/MethodHandle.c +360 -0
- data/ext/ffi_c/MethodHandle.h +55 -0
- data/ext/ffi_c/Platform.c +121 -0
- data/ext/ffi_c/Platform.h +45 -0
- data/ext/ffi_c/Pointer.c +508 -0
- data/ext/ffi_c/Pointer.h +63 -0
- data/ext/ffi_c/Struct.c +828 -0
- data/ext/ffi_c/Struct.h +106 -0
- data/ext/ffi_c/StructByReference.c +190 -0
- data/ext/ffi_c/StructByReference.h +50 -0
- data/ext/ffi_c/StructByValue.c +150 -0
- data/ext/ffi_c/StructByValue.h +55 -0
- data/ext/ffi_c/StructLayout.c +698 -0
- data/ext/ffi_c/Thread.c +352 -0
- data/ext/ffi_c/Thread.h +95 -0
- data/ext/ffi_c/Type.c +397 -0
- data/ext/ffi_c/Type.h +62 -0
- data/ext/ffi_c/Types.c +139 -0
- data/ext/ffi_c/Types.h +89 -0
- data/ext/ffi_c/Variadic.c +276 -0
- data/ext/ffi_c/compat.h +83 -0
- data/ext/ffi_c/extconf.rb +64 -0
- data/ext/ffi_c/ffi.c +98 -0
- data/ext/ffi_c/libffi.bsd.mk +34 -0
- data/ext/ffi_c/libffi.darwin.mk +95 -0
- data/ext/ffi_c/libffi.gnu.mk +31 -0
- data/ext/ffi_c/libffi.mk +13 -0
- data/ext/ffi_c/libffi.vc.mk +26 -0
- data/ext/ffi_c/libffi.vc64.mk +26 -0
- data/ext/ffi_c/libffi/ChangeLog +4600 -0
- data/ext/ffi_c/libffi/ChangeLog.libffi +584 -0
- data/ext/ffi_c/libffi/ChangeLog.libgcj +40 -0
- data/ext/ffi_c/libffi/ChangeLog.v1 +764 -0
- data/ext/ffi_c/libffi/LICENSE +21 -0
- data/ext/ffi_c/libffi/Makefile.am +196 -0
- data/ext/ffi_c/libffi/Makefile.in +1820 -0
- data/ext/ffi_c/libffi/Makefile.vc +141 -0
- data/ext/ffi_c/libffi/Makefile.vc64 +141 -0
- data/ext/ffi_c/libffi/README +342 -0
- data/ext/ffi_c/libffi/acinclude.m4 +92 -0
- data/ext/ffi_c/libffi/aclocal.m4 +1873 -0
- data/ext/ffi_c/libffi/build-ios.sh +67 -0
- data/ext/ffi_c/libffi/compile +143 -0
- data/ext/ffi_c/libffi/config.guess +1501 -0
- data/ext/ffi_c/libffi/config.sub +1705 -0
- data/ext/ffi_c/libffi/configure +17191 -0
- data/ext/ffi_c/libffi/configure.ac +496 -0
- data/ext/ffi_c/libffi/configure.host +11 -0
- data/ext/ffi_c/libffi/depcomp +630 -0
- data/ext/ffi_c/libffi/doc/libffi.info +593 -0
- data/ext/ffi_c/libffi/doc/libffi.texi +600 -0
- data/ext/ffi_c/libffi/doc/stamp-vti +4 -0
- data/ext/ffi_c/libffi/doc/version.texi +4 -0
- data/ext/ffi_c/libffi/fficonfig.h.in +199 -0
- data/ext/ffi_c/libffi/fficonfig.hw +57 -0
- data/ext/ffi_c/libffi/include/Makefile.am +9 -0
- data/ext/ffi_c/libffi/include/Makefile.in +487 -0
- data/ext/ffi_c/libffi/include/ffi.h.in +427 -0
- data/ext/ffi_c/libffi/include/ffi.h.vc +427 -0
- data/ext/ffi_c/libffi/include/ffi.h.vc64 +427 -0
- data/ext/ffi_c/libffi/include/ffi_common.h +126 -0
- data/ext/ffi_c/libffi/install-sh +520 -0
- data/ext/ffi_c/libffi/libffi.pc.in +10 -0
- data/ext/ffi_c/libffi/libtool-version +29 -0
- data/ext/ffi_c/libffi/ltmain.sh +9636 -0
- data/ext/ffi_c/libffi/m4/ax_cc_maxopt.m4 +176 -0
- data/ext/ffi_c/libffi/m4/ax_cflags_warn_all.m4 +195 -0
- data/ext/ffi_c/libffi/m4/ax_check_compiler_flags.m4 +76 -0
- data/ext/ffi_c/libffi/m4/ax_compiler_vendor.m4 +63 -0
- data/ext/ffi_c/libffi/m4/ax_configure_args.m4 +70 -0
- data/ext/ffi_c/libffi/m4/ax_enable_builddir.m4 +300 -0
- data/ext/ffi_c/libffi/m4/ax_gcc_archflag.m4 +215 -0
- data/ext/ffi_c/libffi/m4/ax_gcc_x86_cpuid.m4 +79 -0
- data/ext/ffi_c/libffi/m4/libtool.m4 +7831 -0
- data/ext/ffi_c/libffi/m4/ltoptions.m4 +369 -0
- data/ext/ffi_c/libffi/m4/ltsugar.m4 +123 -0
- data/ext/ffi_c/libffi/m4/ltversion.m4 +23 -0
- data/ext/ffi_c/libffi/m4/lt~obsolete.m4 +98 -0
- data/ext/ffi_c/libffi/man/Makefile.am +8 -0
- data/ext/ffi_c/libffi/man/Makefile.in +466 -0
- data/ext/ffi_c/libffi/man/ffi.3 +31 -0
- data/ext/ffi_c/libffi/man/ffi_call.3 +103 -0
- data/ext/ffi_c/libffi/man/ffi_prep_cif.3 +66 -0
- data/ext/ffi_c/libffi/mdate-sh +201 -0
- data/ext/ffi_c/libffi/missing +376 -0
- data/ext/ffi_c/libffi/msvcc.sh +197 -0
- data/ext/ffi_c/libffi/src/alpha/ffi.c +284 -0
- data/ext/ffi_c/libffi/src/alpha/ffitarget.h +48 -0
- data/ext/ffi_c/libffi/src/alpha/osf.S +387 -0
- data/ext/ffi_c/libffi/src/arm/ffi.c +728 -0
- data/ext/ffi_c/libffi/src/arm/ffitarget.h +65 -0
- data/ext/ffi_c/libffi/src/arm/gentramp.sh +118 -0
- data/ext/ffi_c/libffi/src/arm/sysv.S +497 -0
- data/ext/ffi_c/libffi/src/arm/trampoline.S +4450 -0
- data/ext/ffi_c/libffi/src/avr32/ffi.c +423 -0
- data/ext/ffi_c/libffi/src/avr32/ffitarget.h +50 -0
- data/ext/ffi_c/libffi/src/avr32/sysv.S +208 -0
- data/ext/ffi_c/libffi/src/closures.c +615 -0
- data/ext/ffi_c/libffi/src/cris/ffi.c +383 -0
- data/ext/ffi_c/libffi/src/cris/ffitarget.h +51 -0
- data/ext/ffi_c/libffi/src/cris/sysv.S +215 -0
- data/ext/ffi_c/libffi/src/debug.c +59 -0
- data/ext/ffi_c/libffi/src/dlmalloc.c +5161 -0
- data/ext/ffi_c/libffi/src/frv/eabi.S +128 -0
- data/ext/ffi_c/libffi/src/frv/ffi.c +292 -0
- data/ext/ffi_c/libffi/src/frv/ffitarget.h +57 -0
- data/ext/ffi_c/libffi/src/ia64/ffi.c +582 -0
- data/ext/ffi_c/libffi/src/ia64/ffitarget.h +50 -0
- data/ext/ffi_c/libffi/src/ia64/ia64_flags.h +40 -0
- data/ext/ffi_c/libffi/src/ia64/unix.S +560 -0
- data/ext/ffi_c/libffi/src/java_raw_api.c +356 -0
- data/ext/ffi_c/libffi/src/m32r/ffi.c +232 -0
- data/ext/ffi_c/libffi/src/m32r/ffitarget.h +48 -0
- data/ext/ffi_c/libffi/src/m32r/sysv.S +121 -0
- data/ext/ffi_c/libffi/src/m68k/ffi.c +288 -0
- data/ext/ffi_c/libffi/src/m68k/ffitarget.h +49 -0
- data/ext/ffi_c/libffi/src/m68k/sysv.S +270 -0
- data/ext/ffi_c/libffi/src/mips/ffi.c +1036 -0
- data/ext/ffi_c/libffi/src/mips/ffitarget.h +242 -0
- data/ext/ffi_c/libffi/src/mips/n32.S +591 -0
- data/ext/ffi_c/libffi/src/mips/o32.S +381 -0
- data/ext/ffi_c/libffi/src/moxie/eabi.S +128 -0
- data/ext/ffi_c/libffi/src/moxie/ffi.c +276 -0
- data/ext/ffi_c/libffi/src/pa/ffi.c +719 -0
- data/ext/ffi_c/libffi/src/pa/ffitarget.h +78 -0
- data/ext/ffi_c/libffi/src/pa/hpux32.S +368 -0
- data/ext/ffi_c/libffi/src/pa/linux.S +357 -0
- data/ext/ffi_c/libffi/src/powerpc/aix.S +328 -0
- data/ext/ffi_c/libffi/src/powerpc/aix_closure.S +445 -0
- data/ext/ffi_c/libffi/src/powerpc/asm.h +125 -0
- data/ext/ffi_c/libffi/src/powerpc/darwin.S +383 -0
- data/ext/ffi_c/libffi/src/powerpc/darwin_closure.S +575 -0
- data/ext/ffi_c/libffi/src/powerpc/ffi.c +1448 -0
- data/ext/ffi_c/libffi/src/powerpc/ffi_darwin.c +1359 -0
- data/ext/ffi_c/libffi/src/powerpc/ffitarget.h +139 -0
- data/ext/ffi_c/libffi/src/powerpc/linux64.S +187 -0
- data/ext/ffi_c/libffi/src/powerpc/linux64_closure.S +236 -0
- data/ext/ffi_c/libffi/src/powerpc/ppc_closure.S +327 -0
- data/ext/ffi_c/libffi/src/powerpc/sysv.S +219 -0
- data/ext/ffi_c/libffi/src/prep_cif.c +177 -0
- data/ext/ffi_c/libffi/src/raw_api.c +254 -0
- data/ext/ffi_c/libffi/src/s390/ffi.c +780 -0
- data/ext/ffi_c/libffi/src/s390/ffitarget.h +62 -0
- data/ext/ffi_c/libffi/src/s390/sysv.S +434 -0
- data/ext/ffi_c/libffi/src/sh/ffi.c +716 -0
- data/ext/ffi_c/libffi/src/sh/ffitarget.h +49 -0
- data/ext/ffi_c/libffi/src/sh/sysv.S +850 -0
- data/ext/ffi_c/libffi/src/sh64/ffi.c +468 -0
- data/ext/ffi_c/libffi/src/sh64/ffitarget.h +53 -0
- data/ext/ffi_c/libffi/src/sh64/sysv.S +539 -0
- data/ext/ffi_c/libffi/src/sparc/ffi.c +669 -0
- data/ext/ffi_c/libffi/src/sparc/ffitarget.h +68 -0
- data/ext/ffi_c/libffi/src/sparc/v8.S +313 -0
- data/ext/ffi_c/libffi/src/sparc/v9.S +307 -0
- data/ext/ffi_c/libffi/src/types.c +77 -0
- data/ext/ffi_c/libffi/src/x86/darwin.S +444 -0
- data/ext/ffi_c/libffi/src/x86/darwin64.S +416 -0
- data/ext/ffi_c/libffi/src/x86/ffi.c +644 -0
- data/ext/ffi_c/libffi/src/x86/ffi64.c +635 -0
- data/ext/ffi_c/libffi/src/x86/ffitarget.h +121 -0
- data/ext/ffi_c/libffi/src/x86/freebsd.S +458 -0
- data/ext/ffi_c/libffi/src/x86/sysv.S +468 -0
- data/ext/ffi_c/libffi/src/x86/unix64.S +426 -0
- data/ext/ffi_c/libffi/src/x86/win32.S +1065 -0
- data/ext/ffi_c/libffi/src/x86/win64.S +468 -0
- data/ext/ffi_c/libffi/testsuite/Makefile.am +80 -0
- data/ext/ffi_c/libffi/testsuite/Makefile.in +500 -0
- data/ext/ffi_c/libffi/testsuite/config/default.exp +1 -0
- data/ext/ffi_c/libffi/testsuite/lib/libffi-dg.exp +300 -0
- data/ext/ffi_c/libffi/testsuite/lib/libffi.exp +350 -0
- data/ext/ffi_c/libffi/testsuite/lib/target-libpath.exp +263 -0
- data/ext/ffi_c/libffi/testsuite/lib/wrapper.exp +45 -0
- data/ext/ffi_c/libffi/testsuite/libffi.call/call.exp +32 -0
- data/ext/ffi_c/libffi/testsuite/libffi.call/closure_fn0.c +89 -0
- data/ext/ffi_c/libffi/testsuite/libffi.call/closure_fn1.c +81 -0
- data/ext/ffi_c/libffi/testsuite/libffi.call/closure_fn2.c +81 -0
- data/ext/ffi_c/libffi/testsuite/libffi.call/closure_fn3.c +82 -0
- data/ext/ffi_c/libffi/testsuite/libffi.call/closure_fn4.c +89 -0
- data/ext/ffi_c/libffi/testsuite/libffi.call/closure_fn5.c +92 -0
- data/ext/ffi_c/libffi/testsuite/libffi.call/closure_fn6.c +90 -0
- data/ext/ffi_c/libffi/testsuite/libffi.call/closure_loc_fn0.c +95 -0
- data/ext/ffi_c/libffi/testsuite/libffi.call/closure_stdcall.c +64 -0
- data/ext/ffi_c/libffi/testsuite/libffi.call/cls_12byte.c +94 -0
- data/ext/ffi_c/libffi/testsuite/libffi.call/cls_16byte.c +95 -0
- data/ext/ffi_c/libffi/testsuite/libffi.call/cls_18byte.c +96 -0
- data/ext/ffi_c/libffi/testsuite/libffi.call/cls_19byte.c +102 -0
- data/ext/ffi_c/libffi/testsuite/libffi.call/cls_1_1byte.c +89 -0
- data/ext/ffi_c/libffi/testsuite/libffi.call/cls_20byte.c +91 -0
- data/ext/ffi_c/libffi/testsuite/libffi.call/cls_20byte1.c +93 -0
- data/ext/ffi_c/libffi/testsuite/libffi.call/cls_24byte.c +113 -0
- data/ext/ffi_c/libffi/testsuite/libffi.call/cls_2byte.c +90 -0
- data/ext/ffi_c/libffi/testsuite/libffi.call/cls_3_1byte.c +95 -0
- data/ext/ffi_c/libffi/testsuite/libffi.call/cls_3byte1.c +90 -0
- data/ext/ffi_c/libffi/testsuite/libffi.call/cls_3byte2.c +90 -0
- data/ext/ffi_c/libffi/testsuite/libffi.call/cls_4_1byte.c +98 -0
- data/ext/ffi_c/libffi/testsuite/libffi.call/cls_4byte.c +90 -0
- data/ext/ffi_c/libffi/testsuite/libffi.call/cls_5_1_byte.c +109 -0
- data/ext/ffi_c/libffi/testsuite/libffi.call/cls_5byte.c +98 -0
- data/ext/ffi_c/libffi/testsuite/libffi.call/cls_64byte.c +124 -0
- data/ext/ffi_c/libffi/testsuite/libffi.call/cls_6_1_byte.c +113 -0
- data/ext/ffi_c/libffi/testsuite/libffi.call/cls_6byte.c +99 -0
- data/ext/ffi_c/libffi/testsuite/libffi.call/cls_7_1_byte.c +117 -0
- data/ext/ffi_c/libffi/testsuite/libffi.call/cls_7byte.c +97 -0
- data/ext/ffi_c/libffi/testsuite/libffi.call/cls_8byte.c +88 -0
- data/ext/ffi_c/libffi/testsuite/libffi.call/cls_9byte1.c +90 -0
- data/ext/ffi_c/libffi/testsuite/libffi.call/cls_9byte2.c +91 -0
- data/ext/ffi_c/libffi/testsuite/libffi.call/cls_align_double.c +93 -0
- data/ext/ffi_c/libffi/testsuite/libffi.call/cls_align_float.c +91 -0
- data/ext/ffi_c/libffi/testsuite/libffi.call/cls_align_longdouble.c +92 -0
- data/ext/ffi_c/libffi/testsuite/libffi.call/cls_align_longdouble_split.c +134 -0
- data/ext/ffi_c/libffi/testsuite/libffi.call/cls_align_longdouble_split2.c +117 -0
- data/ext/ffi_c/libffi/testsuite/libffi.call/cls_align_pointer.c +95 -0
- data/ext/ffi_c/libffi/testsuite/libffi.call/cls_align_sint16.c +91 -0
- data/ext/ffi_c/libffi/testsuite/libffi.call/cls_align_sint32.c +91 -0
- data/ext/ffi_c/libffi/testsuite/libffi.call/cls_align_sint64.c +92 -0
- data/ext/ffi_c/libffi/testsuite/libffi.call/cls_align_uint16.c +91 -0
- data/ext/ffi_c/libffi/testsuite/libffi.call/cls_align_uint32.c +91 -0
- data/ext/ffi_c/libffi/testsuite/libffi.call/cls_align_uint64.c +93 -0
- data/ext/ffi_c/libffi/testsuite/libffi.call/cls_dbls_struct.c +66 -0
- data/ext/ffi_c/libffi/testsuite/libffi.call/cls_double.c +43 -0
- data/ext/ffi_c/libffi/testsuite/libffi.call/cls_double_va.c +60 -0
- data/ext/ffi_c/libffi/testsuite/libffi.call/cls_float.c +42 -0
- data/ext/ffi_c/libffi/testsuite/libffi.call/cls_longdouble.c +105 -0
- data/ext/ffi_c/libffi/testsuite/libffi.call/cls_longdouble_va.c +60 -0
- data/ext/ffi_c/libffi/testsuite/libffi.call/cls_multi_schar.c +74 -0
- data/ext/ffi_c/libffi/testsuite/libffi.call/cls_multi_sshort.c +74 -0
- data/ext/ffi_c/libffi/testsuite/libffi.call/cls_multi_sshortchar.c +86 -0
- data/ext/ffi_c/libffi/testsuite/libffi.call/cls_multi_uchar.c +91 -0
- data/ext/ffi_c/libffi/testsuite/libffi.call/cls_multi_ushort.c +74 -0
- data/ext/ffi_c/libffi/testsuite/libffi.call/cls_multi_ushortchar.c +86 -0
- data/ext/ffi_c/libffi/testsuite/libffi.call/cls_pointer.c +74 -0
- data/ext/ffi_c/libffi/testsuite/libffi.call/cls_pointer_stack.c +140 -0
- data/ext/ffi_c/libffi/testsuite/libffi.call/cls_schar.c +44 -0
- data/ext/ffi_c/libffi/testsuite/libffi.call/cls_sint.c +42 -0
- data/ext/ffi_c/libffi/testsuite/libffi.call/cls_sshort.c +42 -0
- data/ext/ffi_c/libffi/testsuite/libffi.call/cls_uchar.c +42 -0
- data/ext/ffi_c/libffi/testsuite/libffi.call/cls_uint.c +43 -0
- data/ext/ffi_c/libffi/testsuite/libffi.call/cls_ulonglong.c +47 -0
- data/ext/ffi_c/libffi/testsuite/libffi.call/cls_ushort.c +43 -0
- data/ext/ffi_c/libffi/testsuite/libffi.call/err_bad_abi.c +36 -0
- data/ext/ffi_c/libffi/testsuite/libffi.call/err_bad_typedef.c +26 -0
- data/ext/ffi_c/libffi/testsuite/libffi.call/ffitest.h +153 -0
- data/ext/ffi_c/libffi/testsuite/libffi.call/float.c +59 -0
- data/ext/ffi_c/libffi/testsuite/libffi.call/float1.c +58 -0
- data/ext/ffi_c/libffi/testsuite/libffi.call/float2.c +58 -0
- data/ext/ffi_c/libffi/testsuite/libffi.call/float3.c +72 -0
- data/ext/ffi_c/libffi/testsuite/libffi.call/float4.c +62 -0
- data/ext/ffi_c/libffi/testsuite/libffi.call/huge_struct.c +342 -0
- data/ext/ffi_c/libffi/testsuite/libffi.call/many.c +69 -0
- data/ext/ffi_c/libffi/testsuite/libffi.call/many_win32.c +63 -0
- data/ext/ffi_c/libffi/testsuite/libffi.call/negint.c +53 -0
- data/ext/ffi_c/libffi/testsuite/libffi.call/nested_struct.c +152 -0
- data/ext/ffi_c/libffi/testsuite/libffi.call/nested_struct1.c +161 -0
- data/ext/ffi_c/libffi/testsuite/libffi.call/nested_struct10.c +133 -0
- data/ext/ffi_c/libffi/testsuite/libffi.call/nested_struct2.c +110 -0
- data/ext/ffi_c/libffi/testsuite/libffi.call/nested_struct3.c +111 -0
- data/ext/ffi_c/libffi/testsuite/libffi.call/nested_struct4.c +111 -0
- data/ext/ffi_c/libffi/testsuite/libffi.call/nested_struct5.c +112 -0
- data/ext/ffi_c/libffi/testsuite/libffi.call/nested_struct6.c +131 -0
- data/ext/ffi_c/libffi/testsuite/libffi.call/nested_struct7.c +111 -0
- data/ext/ffi_c/libffi/testsuite/libffi.call/nested_struct8.c +131 -0
- data/ext/ffi_c/libffi/testsuite/libffi.call/nested_struct9.c +131 -0
- data/ext/ffi_c/libffi/testsuite/libffi.call/problem1.c +90 -0
- data/ext/ffi_c/libffi/testsuite/libffi.call/promotion.c +59 -0
- data/ext/ffi_c/libffi/testsuite/libffi.call/pyobjc-tc.c +114 -0
- data/ext/ffi_c/libffi/testsuite/libffi.call/return_dbl.c +35 -0
- data/ext/ffi_c/libffi/testsuite/libffi.call/return_dbl1.c +43 -0
- data/ext/ffi_c/libffi/testsuite/libffi.call/return_dbl2.c +42 -0
- data/ext/ffi_c/libffi/testsuite/libffi.call/return_fl.c +35 -0
- data/ext/ffi_c/libffi/testsuite/libffi.call/return_fl1.c +36 -0
- data/ext/ffi_c/libffi/testsuite/libffi.call/return_fl2.c +49 -0
- data/ext/ffi_c/libffi/testsuite/libffi.call/return_fl3.c +42 -0
- data/ext/ffi_c/libffi/testsuite/libffi.call/return_ldl.c +34 -0
- data/ext/ffi_c/libffi/testsuite/libffi.call/return_ll.c +41 -0
- data/ext/ffi_c/libffi/testsuite/libffi.call/return_ll1.c +43 -0
- data/ext/ffi_c/libffi/testsuite/libffi.call/return_sc.c +36 -0
- data/ext/ffi_c/libffi/testsuite/libffi.call/return_sl.c +38 -0
- data/ext/ffi_c/libffi/testsuite/libffi.call/return_uc.c +38 -0
- data/ext/ffi_c/libffi/testsuite/libffi.call/return_ul.c +38 -0
- data/ext/ffi_c/libffi/testsuite/libffi.call/stret_large.c +145 -0
- data/ext/ffi_c/libffi/testsuite/libffi.call/stret_large2.c +148 -0
- data/ext/ffi_c/libffi/testsuite/libffi.call/stret_medium.c +124 -0
- data/ext/ffi_c/libffi/testsuite/libffi.call/stret_medium2.c +125 -0
- data/ext/ffi_c/libffi/testsuite/libffi.call/strlen.c +44 -0
- data/ext/ffi_c/libffi/testsuite/libffi.call/strlen_win32.c +44 -0
- data/ext/ffi_c/libffi/testsuite/libffi.call/struct1.c +65 -0
- data/ext/ffi_c/libffi/testsuite/libffi.call/struct2.c +67 -0
- data/ext/ffi_c/libffi/testsuite/libffi.call/struct3.c +59 -0
- data/ext/ffi_c/libffi/testsuite/libffi.call/struct4.c +63 -0
- data/ext/ffi_c/libffi/testsuite/libffi.call/struct5.c +65 -0
- data/ext/ffi_c/libffi/testsuite/libffi.call/struct6.c +64 -0
- data/ext/ffi_c/libffi/testsuite/libffi.call/struct7.c +74 -0
- data/ext/ffi_c/libffi/testsuite/libffi.call/struct8.c +80 -0
- data/ext/ffi_c/libffi/testsuite/libffi.call/struct9.c +67 -0
- data/ext/ffi_c/libffi/testsuite/libffi.call/testclosure.c +70 -0
- data/ext/ffi_c/libffi/testsuite/libffi.special/ffitestcxx.h +96 -0
- data/ext/ffi_c/libffi/testsuite/libffi.special/special.exp +35 -0
- data/ext/ffi_c/libffi/testsuite/libffi.special/unwindtest.cc +124 -0
- data/ext/ffi_c/libffi/testsuite/libffi.special/unwindtest_ffi_call.cc +53 -0
- data/ext/ffi_c/libffi/texinfo.tex +7210 -0
- data/ext/ffi_c/rbffi.h +57 -0
- data/ext/ffi_c/rbffi_endian.h +59 -0
- data/ext/ffi_c/win32/stdbool.h +8 -0
- data/ext/ffi_c/win32/stdint.h +201 -0
- data/ffi.gemspec +22 -0
- data/gen/Rakefile +30 -0
- data/lib/ffi.rb +28 -0
- data/lib/ffi/autopointer.rb +194 -0
- data/lib/ffi/buffer.rb +4 -0
- data/lib/ffi/callback.rb +4 -0
- data/lib/ffi/enum.rb +173 -0
- data/lib/ffi/errno.rb +43 -0
- data/lib/ffi/ffi.rb +44 -0
- data/lib/ffi/io.rb +62 -0
- data/lib/ffi/library.rb +499 -0
- data/lib/ffi/managedstruct.rb +84 -0
- data/lib/ffi/memorypointer.rb +1 -0
- data/lib/ffi/platform.rb +148 -0
- data/lib/ffi/platform/arm-linux/types.conf +104 -0
- data/lib/ffi/platform/i386-cygwin/types.conf +3 -0
- data/lib/ffi/platform/i386-darwin/types.conf +100 -0
- data/lib/ffi/platform/i386-freebsd/types.conf +152 -0
- data/lib/ffi/platform/i386-gnu/types.conf +107 -0
- data/lib/ffi/platform/i386-linux/types.conf +103 -0
- data/lib/ffi/platform/i386-netbsd/types.conf +126 -0
- data/lib/ffi/platform/i386-openbsd/types.conf +128 -0
- data/lib/ffi/platform/i386-solaris/types.conf +122 -0
- data/lib/ffi/platform/i386-windows/types.conf +105 -0
- data/lib/ffi/platform/ia64-linux/types.conf +104 -0
- data/lib/ffi/platform/mips-linux/types.conf +102 -0
- data/lib/ffi/platform/mipsel-linux/types.conf +102 -0
- data/lib/ffi/platform/powerpc-aix/types.conf +180 -0
- data/lib/ffi/platform/powerpc-darwin/types.conf +100 -0
- data/lib/ffi/platform/powerpc-linux/types.conf +100 -0
- data/lib/ffi/platform/s390-linux/types.conf +102 -0
- data/lib/ffi/platform/s390x-linux/types.conf +102 -0
- data/lib/ffi/platform/sparc-linux/types.conf +102 -0
- data/lib/ffi/platform/sparc-solaris/types.conf +128 -0
- data/lib/ffi/platform/sparcv9-solaris/types.conf +128 -0
- data/lib/ffi/platform/x86_64-cygwin/types.conf +3 -0
- data/lib/ffi/platform/x86_64-darwin/types.conf +100 -0
- data/lib/ffi/platform/x86_64-freebsd/types.conf +128 -0
- data/lib/ffi/platform/x86_64-linux/types.conf +102 -0
- data/lib/ffi/platform/x86_64-netbsd/types.conf +126 -0
- data/lib/ffi/platform/x86_64-openbsd/types.conf +128 -0
- data/lib/ffi/platform/x86_64-solaris/types.conf +122 -0
- data/lib/ffi/platform/x86_64-windows/types.conf +27 -0
- data/lib/ffi/pointer.rb +134 -0
- data/lib/ffi/struct.rb +367 -0
- data/lib/ffi/struct_layout_builder.rb +222 -0
- data/lib/ffi/tools/const_generator.rb +229 -0
- data/lib/ffi/tools/generator.rb +60 -0
- data/lib/ffi/tools/generator_task.rb +36 -0
- data/lib/ffi/tools/struct_generator.rb +194 -0
- data/lib/ffi/tools/types_generator.rb +135 -0
- data/lib/ffi/types.rb +190 -0
- data/lib/ffi/union.rb +43 -0
- data/lib/ffi/variadic.rb +78 -0
- data/lib/ffi/version.rb +4 -0
- data/lib/ffi_c.so +0 -0
- data/libtest/Benchmark.c +52 -0
- data/libtest/BoolTest.c +34 -0
- data/libtest/BufferTest.c +31 -0
- data/libtest/ClosureTest.c +190 -0
- data/libtest/EnumTest.c +34 -0
- data/libtest/FunctionTest.c +58 -0
- data/libtest/GNUmakefile +149 -0
- data/libtest/GlobalVariable.c +62 -0
- data/libtest/LastErrorTest.c +21 -0
- data/libtest/NumberTest.c +132 -0
- data/libtest/PointerTest.c +63 -0
- data/libtest/ReferenceTest.c +23 -0
- data/libtest/StringTest.c +34 -0
- data/libtest/StructTest.c +243 -0
- data/libtest/UnionTest.c +43 -0
- data/libtest/VariadicTest.c +62 -0
- data/spec/ffi/async_callback_spec.rb +35 -0
- data/spec/ffi/bool_spec.rb +29 -0
- data/spec/ffi/buffer_spec.rb +251 -0
- data/spec/ffi/callback_spec.rb +667 -0
- data/spec/ffi/custom_param_type.rb +36 -0
- data/spec/ffi/custom_type_spec.rb +74 -0
- data/spec/ffi/dup_spec.rb +54 -0
- data/spec/ffi/enum_spec.rb +220 -0
- data/spec/ffi/errno_spec.rb +18 -0
- data/spec/ffi/ffi_spec.rb +29 -0
- data/spec/ffi/function_spec.rb +76 -0
- data/spec/ffi/library_spec.rb +216 -0
- data/spec/ffi/long_double.rb +30 -0
- data/spec/ffi/managed_struct_spec.rb +57 -0
- data/spec/ffi/number_spec.rb +236 -0
- data/spec/ffi/pointer_spec.rb +265 -0
- data/spec/ffi/rbx/attach_function_spec.rb +28 -0
- data/spec/ffi/rbx/memory_pointer_spec.rb +123 -0
- data/spec/ffi/rbx/spec_helper.rb +1 -0
- data/spec/ffi/rbx/struct_spec.rb +13 -0
- data/spec/ffi/spec_helper.rb +33 -0
- data/spec/ffi/string_spec.rb +108 -0
- data/spec/ffi/strptr_spec.rb +50 -0
- data/spec/ffi/struct_by_ref_spec.rb +43 -0
- data/spec/ffi/struct_callback_spec.rb +69 -0
- data/spec/ffi/struct_initialize_spec.rb +35 -0
- data/spec/ffi/struct_packed_spec.rb +51 -0
- data/spec/ffi/struct_spec.rb +748 -0
- data/spec/ffi/typedef_spec.rb +78 -0
- data/spec/ffi/union_spec.rb +65 -0
- data/spec/ffi/variadic_spec.rb +92 -0
- data/spec/spec.opts +4 -0
- metadata +562 -0
@@ -0,0 +1,31 @@
|
|
1
|
+
.Dd February 15, 2008
|
2
|
+
.Dt FFI 3
|
3
|
+
.Sh NAME
|
4
|
+
.Nm FFI
|
5
|
+
.Nd Foreign Function Interface
|
6
|
+
.Sh LIBRARY
|
7
|
+
libffi, -lffi
|
8
|
+
.Sh SYNOPSIS
|
9
|
+
.In ffi.h
|
10
|
+
.Ft ffi_status
|
11
|
+
.Fo ffi_prep_cif
|
12
|
+
.Fa "ffi_cif *cif"
|
13
|
+
.Fa "ffi_abi abi"
|
14
|
+
.Fa "unsigned int nargs"
|
15
|
+
.Fa "ffi_type *rtype"
|
16
|
+
.Fa "ffi_type **atypes"
|
17
|
+
.Fc
|
18
|
+
.Ft void
|
19
|
+
.Fo ffi_call
|
20
|
+
.Fa "ffi_cif *cif"
|
21
|
+
.Fa "void (*fn)(void)"
|
22
|
+
.Fa "void *rvalue"
|
23
|
+
.Fa "void **avalue"
|
24
|
+
.Fc
|
25
|
+
.Sh DESCRIPTION
|
26
|
+
The foreign function interface provides a mechanism by which a function can
|
27
|
+
generate a call to another function at runtime without requiring knowledge of
|
28
|
+
the called function's interface at compile time.
|
29
|
+
.Sh SEE ALSO
|
30
|
+
.Xr ffi_prep_cif 3 ,
|
31
|
+
.Xr ffi_call 3
|
@@ -0,0 +1,103 @@
|
|
1
|
+
.Dd February 15, 2008
|
2
|
+
.Dt ffi_call 3
|
3
|
+
.Sh NAME
|
4
|
+
.Nm ffi_call
|
5
|
+
.Nd Invoke a foreign function.
|
6
|
+
.Sh SYNOPSIS
|
7
|
+
.In ffi.h
|
8
|
+
.Ft void
|
9
|
+
.Fo ffi_call
|
10
|
+
.Fa "ffi_cif *cif"
|
11
|
+
.Fa "void (*fn)(void)"
|
12
|
+
.Fa "void *rvalue"
|
13
|
+
.Fa "void **avalue"
|
14
|
+
.Fc
|
15
|
+
.Sh DESCRIPTION
|
16
|
+
The
|
17
|
+
.Nm ffi_call
|
18
|
+
function provides a simple mechanism for invoking a function without
|
19
|
+
requiring knowledge of the function's interface at compile time.
|
20
|
+
.Fa fn
|
21
|
+
is called with the values retrieved from the pointers in the
|
22
|
+
.Fa avalue
|
23
|
+
array. The return value from
|
24
|
+
.Fa fn
|
25
|
+
is placed in storage pointed to by
|
26
|
+
.Fa rvalue .
|
27
|
+
.Fa cif
|
28
|
+
contains information describing the data types, sizes and alignments of the
|
29
|
+
arguments to and return value from
|
30
|
+
.Fa fn ,
|
31
|
+
and must be initialized with
|
32
|
+
.Nm ffi_prep_cif
|
33
|
+
before it is used with
|
34
|
+
.Nm ffi_call .
|
35
|
+
.Pp
|
36
|
+
.Fa rvalue
|
37
|
+
must point to storage that is sizeof(ffi_arg) or larger for non-floating point
|
38
|
+
types. For smaller-sized return value types, the
|
39
|
+
.Nm ffi_arg
|
40
|
+
or
|
41
|
+
.Nm ffi_sarg
|
42
|
+
integral type must be used to hold
|
43
|
+
the return value.
|
44
|
+
.Sh EXAMPLES
|
45
|
+
.Bd -literal
|
46
|
+
#include <ffi.h>
|
47
|
+
#include <stdio.h>
|
48
|
+
|
49
|
+
unsigned char
|
50
|
+
foo(unsigned int, float);
|
51
|
+
|
52
|
+
int
|
53
|
+
main(int argc, const char **argv)
|
54
|
+
{
|
55
|
+
ffi_cif cif;
|
56
|
+
ffi_type *arg_types[2];
|
57
|
+
void *arg_values[2];
|
58
|
+
ffi_status status;
|
59
|
+
|
60
|
+
// Because the return value from foo() is smaller than sizeof(long), it
|
61
|
+
// must be passed as ffi_arg or ffi_sarg.
|
62
|
+
ffi_arg result;
|
63
|
+
|
64
|
+
// Specify the data type of each argument. Available types are defined
|
65
|
+
// in <ffi/ffi.h>.
|
66
|
+
arg_types[0] = &ffi_type_uint;
|
67
|
+
arg_types[1] = &ffi_type_float;
|
68
|
+
|
69
|
+
// Prepare the ffi_cif structure.
|
70
|
+
if ((status = ffi_prep_cif(&cif, FFI_DEFAULT_ABI,
|
71
|
+
2, &ffi_type_uint8, arg_types)) != FFI_OK)
|
72
|
+
{
|
73
|
+
// Handle the ffi_status error.
|
74
|
+
}
|
75
|
+
|
76
|
+
// Specify the values of each argument.
|
77
|
+
unsigned int arg1 = 42;
|
78
|
+
float arg2 = 5.1;
|
79
|
+
|
80
|
+
arg_values[0] = &arg1;
|
81
|
+
arg_values[1] = &arg2;
|
82
|
+
|
83
|
+
// Invoke the function.
|
84
|
+
ffi_call(&cif, FFI_FN(foo), &result, arg_values);
|
85
|
+
|
86
|
+
// The ffi_arg 'result' now contains the unsigned char returned from foo(),
|
87
|
+
// which can be accessed by a typecast.
|
88
|
+
printf("result is %hhu", (unsigned char)result);
|
89
|
+
|
90
|
+
return 0;
|
91
|
+
}
|
92
|
+
|
93
|
+
// The target function.
|
94
|
+
unsigned char
|
95
|
+
foo(unsigned int x, float y)
|
96
|
+
{
|
97
|
+
unsigned char result = x - y;
|
98
|
+
return result;
|
99
|
+
}
|
100
|
+
.Ed
|
101
|
+
.Sh SEE ALSO
|
102
|
+
.Xr ffi 3 ,
|
103
|
+
.Xr ffi_prep_cif 3
|
@@ -0,0 +1,66 @@
|
|
1
|
+
.Dd February 15, 2008
|
2
|
+
.Dt ffi_prep_cif 3
|
3
|
+
.Sh NAME
|
4
|
+
.Nm ffi_prep_cif
|
5
|
+
.Nd Prepare a
|
6
|
+
.Nm ffi_cif
|
7
|
+
structure for use with
|
8
|
+
.Nm ffi_call
|
9
|
+
.
|
10
|
+
.Sh SYNOPSIS
|
11
|
+
.In ffi.h
|
12
|
+
.Ft ffi_status
|
13
|
+
.Fo ffi_prep_cif
|
14
|
+
.Fa "ffi_cif *cif"
|
15
|
+
.Fa "ffi_abi abi"
|
16
|
+
.Fa "unsigned int nargs"
|
17
|
+
.Fa "ffi_type *rtype"
|
18
|
+
.Fa "ffi_type **atypes"
|
19
|
+
.Fc
|
20
|
+
.Sh DESCRIPTION
|
21
|
+
The
|
22
|
+
.Nm ffi_prep_cif
|
23
|
+
function prepares a
|
24
|
+
.Nm ffi_cif
|
25
|
+
structure for use with
|
26
|
+
.Nm ffi_call
|
27
|
+
.
|
28
|
+
.Fa abi
|
29
|
+
specifies a set of calling conventions to use.
|
30
|
+
.Fa atypes
|
31
|
+
is an array of
|
32
|
+
.Fa nargs
|
33
|
+
pointers to
|
34
|
+
.Nm ffi_type
|
35
|
+
structs that describe the data type, size and alignment of each argument.
|
36
|
+
.Fa rtype
|
37
|
+
points to an
|
38
|
+
.Nm ffi_type
|
39
|
+
that describes the data type, size and alignment of the
|
40
|
+
return value.
|
41
|
+
.Sh RETURN VALUES
|
42
|
+
Upon successful completion,
|
43
|
+
.Nm ffi_prep_cif
|
44
|
+
returns
|
45
|
+
.Nm FFI_OK .
|
46
|
+
It will return
|
47
|
+
.Nm FFI_BAD_TYPEDEF
|
48
|
+
if
|
49
|
+
.Fa cif
|
50
|
+
is
|
51
|
+
.Nm NULL
|
52
|
+
or
|
53
|
+
.Fa atypes
|
54
|
+
or
|
55
|
+
.Fa rtype
|
56
|
+
is malformed. If
|
57
|
+
.Fa abi
|
58
|
+
does not refer to a valid ABI,
|
59
|
+
.Nm FFI_BAD_ABI
|
60
|
+
will be returned. Available ABIs are
|
61
|
+
defined in
|
62
|
+
.Nm <ffitarget.h>
|
63
|
+
.
|
64
|
+
.Sh SEE ALSO
|
65
|
+
.Xr ffi 3 ,
|
66
|
+
.Xr ffi_call 3
|
@@ -0,0 +1,201 @@
|
|
1
|
+
#!/bin/sh
|
2
|
+
# Get modification time of a file or directory and pretty-print it.
|
3
|
+
|
4
|
+
scriptversion=2005-06-29.22
|
5
|
+
|
6
|
+
# Copyright (C) 1995, 1996, 1997, 2003, 2004, 2005 Free Software
|
7
|
+
# Foundation, Inc.
|
8
|
+
# written by Ulrich Drepper <drepper@gnu.ai.mit.edu>, June 1995
|
9
|
+
#
|
10
|
+
# This program is free software; you can redistribute it and/or modify
|
11
|
+
# it under the terms of the GNU General Public License as published by
|
12
|
+
# the Free Software Foundation; either version 2, or (at your option)
|
13
|
+
# any later version.
|
14
|
+
#
|
15
|
+
# This program is distributed in the hope that it will be useful,
|
16
|
+
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
17
|
+
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
18
|
+
# GNU General Public License for more details.
|
19
|
+
#
|
20
|
+
# You should have received a copy of the GNU General Public License
|
21
|
+
# along with this program; if not, write to the Free Software Foundation,
|
22
|
+
# Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
23
|
+
|
24
|
+
# As a special exception to the GNU General Public License, if you
|
25
|
+
# distribute this file as part of a program that contains a
|
26
|
+
# configuration script generated by Autoconf, you may include it under
|
27
|
+
# the same distribution terms that you use for the rest of that program.
|
28
|
+
|
29
|
+
# This file is maintained in Automake, please report
|
30
|
+
# bugs to <bug-automake@gnu.org> or send patches to
|
31
|
+
# <automake-patches@gnu.org>.
|
32
|
+
|
33
|
+
case $1 in
|
34
|
+
'')
|
35
|
+
echo "$0: No file. Try \`$0 --help' for more information." 1>&2
|
36
|
+
exit 1;
|
37
|
+
;;
|
38
|
+
-h | --h*)
|
39
|
+
cat <<\EOF
|
40
|
+
Usage: mdate-sh [--help] [--version] FILE
|
41
|
+
|
42
|
+
Pretty-print the modification time of FILE.
|
43
|
+
|
44
|
+
Report bugs to <bug-automake@gnu.org>.
|
45
|
+
EOF
|
46
|
+
exit $?
|
47
|
+
;;
|
48
|
+
-v | --v*)
|
49
|
+
echo "mdate-sh $scriptversion"
|
50
|
+
exit $?
|
51
|
+
;;
|
52
|
+
esac
|
53
|
+
|
54
|
+
# Prevent date giving response in another language.
|
55
|
+
LANG=C
|
56
|
+
export LANG
|
57
|
+
LC_ALL=C
|
58
|
+
export LC_ALL
|
59
|
+
LC_TIME=C
|
60
|
+
export LC_TIME
|
61
|
+
|
62
|
+
# GNU ls changes its time format in response to the TIME_STYLE
|
63
|
+
# variable. Since we cannot assume `unset' works, revert this
|
64
|
+
# variable to its documented default.
|
65
|
+
if test "${TIME_STYLE+set}" = set; then
|
66
|
+
TIME_STYLE=posix-long-iso
|
67
|
+
export TIME_STYLE
|
68
|
+
fi
|
69
|
+
|
70
|
+
save_arg1=$1
|
71
|
+
|
72
|
+
# Find out how to get the extended ls output of a file or directory.
|
73
|
+
if ls -L /dev/null 1>/dev/null 2>&1; then
|
74
|
+
ls_command='ls -L -l -d'
|
75
|
+
else
|
76
|
+
ls_command='ls -l -d'
|
77
|
+
fi
|
78
|
+
|
79
|
+
# A `ls -l' line looks as follows on OS/2.
|
80
|
+
# drwxrwx--- 0 Aug 11 2001 foo
|
81
|
+
# This differs from Unix, which adds ownership information.
|
82
|
+
# drwxrwx--- 2 root root 4096 Aug 11 2001 foo
|
83
|
+
#
|
84
|
+
# To find the date, we split the line on spaces and iterate on words
|
85
|
+
# until we find a month. This cannot work with files whose owner is a
|
86
|
+
# user named `Jan', or `Feb', etc. However, it's unlikely that `/'
|
87
|
+
# will be owned by a user whose name is a month. So we first look at
|
88
|
+
# the extended ls output of the root directory to decide how many
|
89
|
+
# words should be skipped to get the date.
|
90
|
+
|
91
|
+
# On HPUX /bin/sh, "set" interprets "-rw-r--r--" as options, so the "x" below.
|
92
|
+
set x`ls -l -d /`
|
93
|
+
|
94
|
+
# Find which argument is the month.
|
95
|
+
month=
|
96
|
+
command=
|
97
|
+
until test $month
|
98
|
+
do
|
99
|
+
shift
|
100
|
+
# Add another shift to the command.
|
101
|
+
command="$command shift;"
|
102
|
+
case $1 in
|
103
|
+
Jan) month=January; nummonth=1;;
|
104
|
+
Feb) month=February; nummonth=2;;
|
105
|
+
Mar) month=March; nummonth=3;;
|
106
|
+
Apr) month=April; nummonth=4;;
|
107
|
+
May) month=May; nummonth=5;;
|
108
|
+
Jun) month=June; nummonth=6;;
|
109
|
+
Jul) month=July; nummonth=7;;
|
110
|
+
Aug) month=August; nummonth=8;;
|
111
|
+
Sep) month=September; nummonth=9;;
|
112
|
+
Oct) month=October; nummonth=10;;
|
113
|
+
Nov) month=November; nummonth=11;;
|
114
|
+
Dec) month=December; nummonth=12;;
|
115
|
+
esac
|
116
|
+
done
|
117
|
+
|
118
|
+
# Get the extended ls output of the file or directory.
|
119
|
+
set dummy x`eval "$ls_command \"\$save_arg1\""`
|
120
|
+
|
121
|
+
# Remove all preceding arguments
|
122
|
+
eval $command
|
123
|
+
|
124
|
+
# Because of the dummy argument above, month is in $2.
|
125
|
+
#
|
126
|
+
# On a POSIX system, we should have
|
127
|
+
#
|
128
|
+
# $# = 5
|
129
|
+
# $1 = file size
|
130
|
+
# $2 = month
|
131
|
+
# $3 = day
|
132
|
+
# $4 = year or time
|
133
|
+
# $5 = filename
|
134
|
+
#
|
135
|
+
# On Darwin 7.7.0 and 7.6.0, we have
|
136
|
+
#
|
137
|
+
# $# = 4
|
138
|
+
# $1 = day
|
139
|
+
# $2 = month
|
140
|
+
# $3 = year or time
|
141
|
+
# $4 = filename
|
142
|
+
|
143
|
+
# Get the month.
|
144
|
+
case $2 in
|
145
|
+
Jan) month=January; nummonth=1;;
|
146
|
+
Feb) month=February; nummonth=2;;
|
147
|
+
Mar) month=March; nummonth=3;;
|
148
|
+
Apr) month=April; nummonth=4;;
|
149
|
+
May) month=May; nummonth=5;;
|
150
|
+
Jun) month=June; nummonth=6;;
|
151
|
+
Jul) month=July; nummonth=7;;
|
152
|
+
Aug) month=August; nummonth=8;;
|
153
|
+
Sep) month=September; nummonth=9;;
|
154
|
+
Oct) month=October; nummonth=10;;
|
155
|
+
Nov) month=November; nummonth=11;;
|
156
|
+
Dec) month=December; nummonth=12;;
|
157
|
+
esac
|
158
|
+
|
159
|
+
case $3 in
|
160
|
+
???*) day=$1;;
|
161
|
+
*) day=$3; shift;;
|
162
|
+
esac
|
163
|
+
|
164
|
+
# Here we have to deal with the problem that the ls output gives either
|
165
|
+
# the time of day or the year.
|
166
|
+
case $3 in
|
167
|
+
*:*) set `date`; eval year=\$$#
|
168
|
+
case $2 in
|
169
|
+
Jan) nummonthtod=1;;
|
170
|
+
Feb) nummonthtod=2;;
|
171
|
+
Mar) nummonthtod=3;;
|
172
|
+
Apr) nummonthtod=4;;
|
173
|
+
May) nummonthtod=5;;
|
174
|
+
Jun) nummonthtod=6;;
|
175
|
+
Jul) nummonthtod=7;;
|
176
|
+
Aug) nummonthtod=8;;
|
177
|
+
Sep) nummonthtod=9;;
|
178
|
+
Oct) nummonthtod=10;;
|
179
|
+
Nov) nummonthtod=11;;
|
180
|
+
Dec) nummonthtod=12;;
|
181
|
+
esac
|
182
|
+
# For the first six month of the year the time notation can also
|
183
|
+
# be used for files modified in the last year.
|
184
|
+
if (expr $nummonth \> $nummonthtod) > /dev/null;
|
185
|
+
then
|
186
|
+
year=`expr $year - 1`
|
187
|
+
fi;;
|
188
|
+
*) year=$3;;
|
189
|
+
esac
|
190
|
+
|
191
|
+
# The result.
|
192
|
+
echo $day $month $year
|
193
|
+
|
194
|
+
# Local Variables:
|
195
|
+
# mode: shell-script
|
196
|
+
# sh-indentation: 2
|
197
|
+
# eval: (add-hook 'write-file-hooks 'time-stamp)
|
198
|
+
# time-stamp-start: "scriptversion="
|
199
|
+
# time-stamp-format: "%:y-%02m-%02d.%02H"
|
200
|
+
# time-stamp-end: "$"
|
201
|
+
# End:
|
@@ -0,0 +1,376 @@
|
|
1
|
+
#! /bin/sh
|
2
|
+
# Common stub for a few missing GNU programs while installing.
|
3
|
+
|
4
|
+
scriptversion=2009-04-28.21; # UTC
|
5
|
+
|
6
|
+
# Copyright (C) 1996, 1997, 1999, 2000, 2002, 2003, 2004, 2005, 2006,
|
7
|
+
# 2008, 2009 Free Software Foundation, Inc.
|
8
|
+
# Originally by Fran,cois Pinard <pinard@iro.umontreal.ca>, 1996.
|
9
|
+
|
10
|
+
# This program is free software; you can redistribute it and/or modify
|
11
|
+
# it under the terms of the GNU General Public License as published by
|
12
|
+
# the Free Software Foundation; either version 2, or (at your option)
|
13
|
+
# any later version.
|
14
|
+
|
15
|
+
# This program is distributed in the hope that it will be useful,
|
16
|
+
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
17
|
+
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
18
|
+
# GNU General Public License for more details.
|
19
|
+
|
20
|
+
# You should have received a copy of the GNU General Public License
|
21
|
+
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
22
|
+
|
23
|
+
# As a special exception to the GNU General Public License, if you
|
24
|
+
# distribute this file as part of a program that contains a
|
25
|
+
# configuration script generated by Autoconf, you may include it under
|
26
|
+
# the same distribution terms that you use for the rest of that program.
|
27
|
+
|
28
|
+
if test $# -eq 0; then
|
29
|
+
echo 1>&2 "Try \`$0 --help' for more information"
|
30
|
+
exit 1
|
31
|
+
fi
|
32
|
+
|
33
|
+
run=:
|
34
|
+
sed_output='s/.* --output[ =]\([^ ]*\).*/\1/p'
|
35
|
+
sed_minuso='s/.* -o \([^ ]*\).*/\1/p'
|
36
|
+
|
37
|
+
# In the cases where this matters, `missing' is being run in the
|
38
|
+
# srcdir already.
|
39
|
+
if test -f configure.ac; then
|
40
|
+
configure_ac=configure.ac
|
41
|
+
else
|
42
|
+
configure_ac=configure.in
|
43
|
+
fi
|
44
|
+
|
45
|
+
msg="missing on your system"
|
46
|
+
|
47
|
+
case $1 in
|
48
|
+
--run)
|
49
|
+
# Try to run requested program, and just exit if it succeeds.
|
50
|
+
run=
|
51
|
+
shift
|
52
|
+
"$@" && exit 0
|
53
|
+
# Exit code 63 means version mismatch. This often happens
|
54
|
+
# when the user try to use an ancient version of a tool on
|
55
|
+
# a file that requires a minimum version. In this case we
|
56
|
+
# we should proceed has if the program had been absent, or
|
57
|
+
# if --run hadn't been passed.
|
58
|
+
if test $? = 63; then
|
59
|
+
run=:
|
60
|
+
msg="probably too old"
|
61
|
+
fi
|
62
|
+
;;
|
63
|
+
|
64
|
+
-h|--h|--he|--hel|--help)
|
65
|
+
echo "\
|
66
|
+
$0 [OPTION]... PROGRAM [ARGUMENT]...
|
67
|
+
|
68
|
+
Handle \`PROGRAM [ARGUMENT]...' for when PROGRAM is missing, or return an
|
69
|
+
error status if there is no known handling for PROGRAM.
|
70
|
+
|
71
|
+
Options:
|
72
|
+
-h, --help display this help and exit
|
73
|
+
-v, --version output version information and exit
|
74
|
+
--run try to run the given command, and emulate it if it fails
|
75
|
+
|
76
|
+
Supported PROGRAM values:
|
77
|
+
aclocal touch file \`aclocal.m4'
|
78
|
+
autoconf touch file \`configure'
|
79
|
+
autoheader touch file \`config.h.in'
|
80
|
+
autom4te touch the output file, or create a stub one
|
81
|
+
automake touch all \`Makefile.in' files
|
82
|
+
bison create \`y.tab.[ch]', if possible, from existing .[ch]
|
83
|
+
flex create \`lex.yy.c', if possible, from existing .c
|
84
|
+
help2man touch the output file
|
85
|
+
lex create \`lex.yy.c', if possible, from existing .c
|
86
|
+
makeinfo touch the output file
|
87
|
+
tar try tar, gnutar, gtar, then tar without non-portable flags
|
88
|
+
yacc create \`y.tab.[ch]', if possible, from existing .[ch]
|
89
|
+
|
90
|
+
Version suffixes to PROGRAM as well as the prefixes \`gnu-', \`gnu', and
|
91
|
+
\`g' are ignored when checking the name.
|
92
|
+
|
93
|
+
Send bug reports to <bug-automake@gnu.org>."
|
94
|
+
exit $?
|
95
|
+
;;
|
96
|
+
|
97
|
+
-v|--v|--ve|--ver|--vers|--versi|--versio|--version)
|
98
|
+
echo "missing $scriptversion (GNU Automake)"
|
99
|
+
exit $?
|
100
|
+
;;
|
101
|
+
|
102
|
+
-*)
|
103
|
+
echo 1>&2 "$0: Unknown \`$1' option"
|
104
|
+
echo 1>&2 "Try \`$0 --help' for more information"
|
105
|
+
exit 1
|
106
|
+
;;
|
107
|
+
|
108
|
+
esac
|
109
|
+
|
110
|
+
# normalize program name to check for.
|
111
|
+
program=`echo "$1" | sed '
|
112
|
+
s/^gnu-//; t
|
113
|
+
s/^gnu//; t
|
114
|
+
s/^g//; t'`
|
115
|
+
|
116
|
+
# Now exit if we have it, but it failed. Also exit now if we
|
117
|
+
# don't have it and --version was passed (most likely to detect
|
118
|
+
# the program). This is about non-GNU programs, so use $1 not
|
119
|
+
# $program.
|
120
|
+
case $1 in
|
121
|
+
lex*|yacc*)
|
122
|
+
# Not GNU programs, they don't have --version.
|
123
|
+
;;
|
124
|
+
|
125
|
+
tar*)
|
126
|
+
if test -n "$run"; then
|
127
|
+
echo 1>&2 "ERROR: \`tar' requires --run"
|
128
|
+
exit 1
|
129
|
+
elif test "x$2" = "x--version" || test "x$2" = "x--help"; then
|
130
|
+
exit 1
|
131
|
+
fi
|
132
|
+
;;
|
133
|
+
|
134
|
+
*)
|
135
|
+
if test -z "$run" && ($1 --version) > /dev/null 2>&1; then
|
136
|
+
# We have it, but it failed.
|
137
|
+
exit 1
|
138
|
+
elif test "x$2" = "x--version" || test "x$2" = "x--help"; then
|
139
|
+
# Could not run --version or --help. This is probably someone
|
140
|
+
# running `$TOOL --version' or `$TOOL --help' to check whether
|
141
|
+
# $TOOL exists and not knowing $TOOL uses missing.
|
142
|
+
exit 1
|
143
|
+
fi
|
144
|
+
;;
|
145
|
+
esac
|
146
|
+
|
147
|
+
# If it does not exist, or fails to run (possibly an outdated version),
|
148
|
+
# try to emulate it.
|
149
|
+
case $program in
|
150
|
+
aclocal*)
|
151
|
+
echo 1>&2 "\
|
152
|
+
WARNING: \`$1' is $msg. You should only need it if
|
153
|
+
you modified \`acinclude.m4' or \`${configure_ac}'. You might want
|
154
|
+
to install the \`Automake' and \`Perl' packages. Grab them from
|
155
|
+
any GNU archive site."
|
156
|
+
touch aclocal.m4
|
157
|
+
;;
|
158
|
+
|
159
|
+
autoconf*)
|
160
|
+
echo 1>&2 "\
|
161
|
+
WARNING: \`$1' is $msg. You should only need it if
|
162
|
+
you modified \`${configure_ac}'. You might want to install the
|
163
|
+
\`Autoconf' and \`GNU m4' packages. Grab them from any GNU
|
164
|
+
archive site."
|
165
|
+
touch configure
|
166
|
+
;;
|
167
|
+
|
168
|
+
autoheader*)
|
169
|
+
echo 1>&2 "\
|
170
|
+
WARNING: \`$1' is $msg. You should only need it if
|
171
|
+
you modified \`acconfig.h' or \`${configure_ac}'. You might want
|
172
|
+
to install the \`Autoconf' and \`GNU m4' packages. Grab them
|
173
|
+
from any GNU archive site."
|
174
|
+
files=`sed -n 's/^[ ]*A[CM]_CONFIG_HEADER(\([^)]*\)).*/\1/p' ${configure_ac}`
|
175
|
+
test -z "$files" && files="config.h"
|
176
|
+
touch_files=
|
177
|
+
for f in $files; do
|
178
|
+
case $f in
|
179
|
+
*:*) touch_files="$touch_files "`echo "$f" |
|
180
|
+
sed -e 's/^[^:]*://' -e 's/:.*//'`;;
|
181
|
+
*) touch_files="$touch_files $f.in";;
|
182
|
+
esac
|
183
|
+
done
|
184
|
+
touch $touch_files
|
185
|
+
;;
|
186
|
+
|
187
|
+
automake*)
|
188
|
+
echo 1>&2 "\
|
189
|
+
WARNING: \`$1' is $msg. You should only need it if
|
190
|
+
you modified \`Makefile.am', \`acinclude.m4' or \`${configure_ac}'.
|
191
|
+
You might want to install the \`Automake' and \`Perl' packages.
|
192
|
+
Grab them from any GNU archive site."
|
193
|
+
find . -type f -name Makefile.am -print |
|
194
|
+
sed 's/\.am$/.in/' |
|
195
|
+
while read f; do touch "$f"; done
|
196
|
+
;;
|
197
|
+
|
198
|
+
autom4te*)
|
199
|
+
echo 1>&2 "\
|
200
|
+
WARNING: \`$1' is needed, but is $msg.
|
201
|
+
You might have modified some files without having the
|
202
|
+
proper tools for further handling them.
|
203
|
+
You can get \`$1' as part of \`Autoconf' from any GNU
|
204
|
+
archive site."
|
205
|
+
|
206
|
+
file=`echo "$*" | sed -n "$sed_output"`
|
207
|
+
test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"`
|
208
|
+
if test -f "$file"; then
|
209
|
+
touch $file
|
210
|
+
else
|
211
|
+
test -z "$file" || exec >$file
|
212
|
+
echo "#! /bin/sh"
|
213
|
+
echo "# Created by GNU Automake missing as a replacement of"
|
214
|
+
echo "# $ $@"
|
215
|
+
echo "exit 0"
|
216
|
+
chmod +x $file
|
217
|
+
exit 1
|
218
|
+
fi
|
219
|
+
;;
|
220
|
+
|
221
|
+
bison*|yacc*)
|
222
|
+
echo 1>&2 "\
|
223
|
+
WARNING: \`$1' $msg. You should only need it if
|
224
|
+
you modified a \`.y' file. You may need the \`Bison' package
|
225
|
+
in order for those modifications to take effect. You can get
|
226
|
+
\`Bison' from any GNU archive site."
|
227
|
+
rm -f y.tab.c y.tab.h
|
228
|
+
if test $# -ne 1; then
|
229
|
+
eval LASTARG="\${$#}"
|
230
|
+
case $LASTARG in
|
231
|
+
*.y)
|
232
|
+
SRCFILE=`echo "$LASTARG" | sed 's/y$/c/'`
|
233
|
+
if test -f "$SRCFILE"; then
|
234
|
+
cp "$SRCFILE" y.tab.c
|
235
|
+
fi
|
236
|
+
SRCFILE=`echo "$LASTARG" | sed 's/y$/h/'`
|
237
|
+
if test -f "$SRCFILE"; then
|
238
|
+
cp "$SRCFILE" y.tab.h
|
239
|
+
fi
|
240
|
+
;;
|
241
|
+
esac
|
242
|
+
fi
|
243
|
+
if test ! -f y.tab.h; then
|
244
|
+
echo >y.tab.h
|
245
|
+
fi
|
246
|
+
if test ! -f y.tab.c; then
|
247
|
+
echo 'main() { return 0; }' >y.tab.c
|
248
|
+
fi
|
249
|
+
;;
|
250
|
+
|
251
|
+
lex*|flex*)
|
252
|
+
echo 1>&2 "\
|
253
|
+
WARNING: \`$1' is $msg. You should only need it if
|
254
|
+
you modified a \`.l' file. You may need the \`Flex' package
|
255
|
+
in order for those modifications to take effect. You can get
|
256
|
+
\`Flex' from any GNU archive site."
|
257
|
+
rm -f lex.yy.c
|
258
|
+
if test $# -ne 1; then
|
259
|
+
eval LASTARG="\${$#}"
|
260
|
+
case $LASTARG in
|
261
|
+
*.l)
|
262
|
+
SRCFILE=`echo "$LASTARG" | sed 's/l$/c/'`
|
263
|
+
if test -f "$SRCFILE"; then
|
264
|
+
cp "$SRCFILE" lex.yy.c
|
265
|
+
fi
|
266
|
+
;;
|
267
|
+
esac
|
268
|
+
fi
|
269
|
+
if test ! -f lex.yy.c; then
|
270
|
+
echo 'main() { return 0; }' >lex.yy.c
|
271
|
+
fi
|
272
|
+
;;
|
273
|
+
|
274
|
+
help2man*)
|
275
|
+
echo 1>&2 "\
|
276
|
+
WARNING: \`$1' is $msg. You should only need it if
|
277
|
+
you modified a dependency of a manual page. You may need the
|
278
|
+
\`Help2man' package in order for those modifications to take
|
279
|
+
effect. You can get \`Help2man' from any GNU archive site."
|
280
|
+
|
281
|
+
file=`echo "$*" | sed -n "$sed_output"`
|
282
|
+
test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"`
|
283
|
+
if test -f "$file"; then
|
284
|
+
touch $file
|
285
|
+
else
|
286
|
+
test -z "$file" || exec >$file
|
287
|
+
echo ".ab help2man is required to generate this page"
|
288
|
+
exit $?
|
289
|
+
fi
|
290
|
+
;;
|
291
|
+
|
292
|
+
makeinfo*)
|
293
|
+
echo 1>&2 "\
|
294
|
+
WARNING: \`$1' is $msg. You should only need it if
|
295
|
+
you modified a \`.texi' or \`.texinfo' file, or any other file
|
296
|
+
indirectly affecting the aspect of the manual. The spurious
|
297
|
+
call might also be the consequence of using a buggy \`make' (AIX,
|
298
|
+
DU, IRIX). You might want to install the \`Texinfo' package or
|
299
|
+
the \`GNU make' package. Grab either from any GNU archive site."
|
300
|
+
# The file to touch is that specified with -o ...
|
301
|
+
file=`echo "$*" | sed -n "$sed_output"`
|
302
|
+
test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"`
|
303
|
+
if test -z "$file"; then
|
304
|
+
# ... or it is the one specified with @setfilename ...
|
305
|
+
infile=`echo "$*" | sed 's/.* \([^ ]*\) *$/\1/'`
|
306
|
+
file=`sed -n '
|
307
|
+
/^@setfilename/{
|
308
|
+
s/.* \([^ ]*\) *$/\1/
|
309
|
+
p
|
310
|
+
q
|
311
|
+
}' $infile`
|
312
|
+
# ... or it is derived from the source name (dir/f.texi becomes f.info)
|
313
|
+
test -z "$file" && file=`echo "$infile" | sed 's,.*/,,;s,.[^.]*$,,'`.info
|
314
|
+
fi
|
315
|
+
# If the file does not exist, the user really needs makeinfo;
|
316
|
+
# let's fail without touching anything.
|
317
|
+
test -f $file || exit 1
|
318
|
+
touch $file
|
319
|
+
;;
|
320
|
+
|
321
|
+
tar*)
|
322
|
+
shift
|
323
|
+
|
324
|
+
# We have already tried tar in the generic part.
|
325
|
+
# Look for gnutar/gtar before invocation to avoid ugly error
|
326
|
+
# messages.
|
327
|
+
if (gnutar --version > /dev/null 2>&1); then
|
328
|
+
gnutar "$@" && exit 0
|
329
|
+
fi
|
330
|
+
if (gtar --version > /dev/null 2>&1); then
|
331
|
+
gtar "$@" && exit 0
|
332
|
+
fi
|
333
|
+
firstarg="$1"
|
334
|
+
if shift; then
|
335
|
+
case $firstarg in
|
336
|
+
*o*)
|
337
|
+
firstarg=`echo "$firstarg" | sed s/o//`
|
338
|
+
tar "$firstarg" "$@" && exit 0
|
339
|
+
;;
|
340
|
+
esac
|
341
|
+
case $firstarg in
|
342
|
+
*h*)
|
343
|
+
firstarg=`echo "$firstarg" | sed s/h//`
|
344
|
+
tar "$firstarg" "$@" && exit 0
|
345
|
+
;;
|
346
|
+
esac
|
347
|
+
fi
|
348
|
+
|
349
|
+
echo 1>&2 "\
|
350
|
+
WARNING: I can't seem to be able to run \`tar' with the given arguments.
|
351
|
+
You may want to install GNU tar or Free paxutils, or check the
|
352
|
+
command line arguments."
|
353
|
+
exit 1
|
354
|
+
;;
|
355
|
+
|
356
|
+
*)
|
357
|
+
echo 1>&2 "\
|
358
|
+
WARNING: \`$1' is needed, and is $msg.
|
359
|
+
You might have modified some files without having the
|
360
|
+
proper tools for further handling them. Check the \`README' file,
|
361
|
+
it often tells you about the needed prerequisites for installing
|
362
|
+
this package. You may also peek at any GNU archive site, in case
|
363
|
+
some other package would contain this missing \`$1' program."
|
364
|
+
exit 1
|
365
|
+
;;
|
366
|
+
esac
|
367
|
+
|
368
|
+
exit 0
|
369
|
+
|
370
|
+
# Local variables:
|
371
|
+
# eval: (add-hook 'write-file-hooks 'time-stamp)
|
372
|
+
# time-stamp-start: "scriptversion="
|
373
|
+
# time-stamp-format: "%:y-%02m-%02d.%02H"
|
374
|
+
# time-stamp-time-zone: "UTC"
|
375
|
+
# time-stamp-end: "; # UTC"
|
376
|
+
# End:
|